sofa/0000775000113000011300000000000012507252056010760 5ustar bellsbellssofa/20150209/0000775000113000011300000000000012507252056011662 5ustar bellsbellssofa/20150209/c/0000775000113000011300000000000012507252057012105 5ustar bellsbellssofa/20150209/c/src/0000775000113000011300000000000012507252057012674 5ustar bellsbellssofa/20150209/c/src/a2af.c0000644000113000011300000001450312507252056013651 0ustar bellsbells#include "sofa.h" void iauA2af(int ndp, double angle, char *sign, int idmsf[4]) /* ** - - - - - - - - ** i a u A 2 a f ** - - - - - - - - ** ** Decompose radians into degrees, arcminutes, arcseconds, fraction. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** ndp int resolution (Note 1) ** angle double angle in radians ** ** Returned: ** sign char '+' or '-' ** idmsf int[4] degrees, arcminutes, arcseconds, fraction ** ** Called: ** iauD2tf decompose days to hms ** ** Notes: ** ** 1) The argument ndp is interpreted as follows: ** ** ndp resolution ** : ...0000 00 00 ** -7 1000 00 00 ** -6 100 00 00 ** -5 10 00 00 ** -4 1 00 00 ** -3 0 10 00 ** -2 0 01 00 ** -1 0 00 10 ** 0 0 00 01 ** 1 0 00 00.1 ** 2 0 00 00.01 ** 3 0 00 00.001 ** : 0 00 00.000... ** ** 2) The largest positive useful value for ndp is determined by the ** size of angle, the format of doubles on the target platform, and ** the risk of overflowing idmsf[3]. On a typical platform, for ** angle up to 2pi, the available floating-point precision might ** correspond to ndp=12. However, the practical limit is typically ** ndp=9, set by the capacity of a 32-bit int, or ndp=4 if int is ** only 16 bits. ** ** 3) The absolute value of angle may exceed 2pi. In cases where it ** does not, it is up to the caller to test for and handle the ** case where angle is very nearly 2pi and rounds up to 360 degrees, ** by testing for idmsf[0]=360 and setting idmsf[0-3] to zero. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Hours to degrees * radians to turns */ const double F = 15.0 / D2PI; /* Scale then use days to h,m,s function. */ iauD2tf(ndp, angle*F, sign, idmsf); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/a2tf.c0000644000113000011300000001434612507252056013701 0ustar bellsbells#include "sofa.h" void iauA2tf(int ndp, double angle, char *sign, int ihmsf[4]) /* ** - - - - - - - - ** i a u A 2 t f ** - - - - - - - - ** ** Decompose radians into hours, minutes, seconds, fraction. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** ndp int resolution (Note 1) ** angle double angle in radians ** ** Returned: ** sign char '+' or '-' ** ihmsf int[4] hours, minutes, seconds, fraction ** ** Called: ** iauD2tf decompose days to hms ** ** Notes: ** ** 1) The argument ndp is interpreted as follows: ** ** ndp resolution ** : ...0000 00 00 ** -7 1000 00 00 ** -6 100 00 00 ** -5 10 00 00 ** -4 1 00 00 ** -3 0 10 00 ** -2 0 01 00 ** -1 0 00 10 ** 0 0 00 01 ** 1 0 00 00.1 ** 2 0 00 00.01 ** 3 0 00 00.001 ** : 0 00 00.000... ** ** 2) The largest positive useful value for ndp is determined by the ** size of angle, the format of doubles on the target platform, and ** the risk of overflowing ihmsf[3]. On a typical platform, for ** angle up to 2pi, the available floating-point precision might ** correspond to ndp=12. However, the practical limit is typically ** ndp=9, set by the capacity of a 32-bit int, or ndp=4 if int is ** only 16 bits. ** ** 3) The absolute value of angle may exceed 2pi. In cases where it ** does not, it is up to the caller to test for and handle the ** case where angle is very nearly 2pi and rounds up to 24 hours, ** by testing for ihmsf[0]=24 and setting ihmsf[0-3] to zero. ** ** This revision: 2013 July 31 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Scale then use days to h,m,s function. */ iauD2tf(ndp, angle/D2PI, sign, ihmsf); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/ab.c0000644000113000011300000001472312507252056013426 0ustar bellsbells#include "sofa.h" void iauAb(double pnat[3], double v[3], double s, double bm1, double ppr[3]) /* ** - - - - - - ** i a u A b ** - - - - - - ** ** Apply aberration to transform natural direction into proper ** direction. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** pnat double[3] natural direction to the source (unit vector) ** v double[3] observer barycentric velocity in units of c ** s double distance between the Sun and the observer (au) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** ** Returned: ** ppr double[3] proper direction to source (unit vector) ** ** Notes: ** ** 1) The algorithm is based on Expr. (7.40) in the Explanatory ** Supplement (Urban & Seidelmann 2013), but with the following ** changes: ** ** o Rigorous rather than approximate normalization is applied. ** ** o The gravitational potential term from Expr. (7) in ** Klioner (2003) is added, taking into account only the Sun's ** contribution. This has a maximum effect of about ** 0.4 microarcsecond. ** ** 2) In almost all cases, the maximum accuracy will be limited by the ** supplied velocity. For example, if the SOFA iauEpv00 function is ** used, errors of up to 5 microarcseconds could occur. ** ** References: ** ** Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to ** the Astronomical Almanac, 3rd ed., University Science Books ** (2013). ** ** Klioner, Sergei A., "A practical relativistic model for micro- ** arcsecond astrometry in space", Astr. J. 125, 1580-1597 (2003). ** ** Called: ** iauPdp scalar product of two p-vectors ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int i; double pdv, w1, w2, r2, w, p[3], r; pdv = iauPdp(pnat, v); w1 = 1.0 + pdv/(1.0 + bm1); w2 = SRS/s; r2 = 0.0; for (i = 0; i < 3; i++) { w = pnat[i]*bm1 + w1*v[i] + w2*(v[i] - pdv*pnat[i]); p[i] = w; r2 = r2 + w*w; } r = sqrt(r2); for (i = 0; i < 3; i++) { ppr[i] = p[i]/r; } /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/af2a.c0000644000113000011300000001370712507252056013656 0ustar bellsbells#include "sofa.h" #include int iauAf2a(char s, int ideg, int iamin, double asec, double *rad) /* ** - - - - - - - - ** i a u A f 2 a ** - - - - - - - - ** ** Convert degrees, arcminutes, arcseconds to radians. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** s char sign: '-' = negative, otherwise positive ** ideg int degrees ** iamin int arcminutes ** asec double arcseconds ** ** Returned: ** rad double angle in radians ** ** Returned (function value): ** int status: 0 = OK ** 1 = ideg outside range 0-359 ** 2 = iamin outside range 0-59 ** 3 = asec outside range 0-59.999... ** ** Notes: ** ** 1) The result is computed even if any of the range checks fail. ** ** 2) Negative ideg, iamin and/or asec produce a warning status, but ** the absolute value is used in the conversion. ** ** 3) If there are multiple errors, the status value reflects only the ** first, the smallest taking precedence. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Compute the interval. */ *rad = ( s == '-' ? -1.0 : 1.0 ) * ( 60.0 * ( 60.0 * ( (double) abs(ideg) ) + ( (double) abs(iamin) ) ) + fabs(asec) ) * DAS2R; /* Validate arguments and return status. */ if ( ideg < 0 || ideg > 359 ) return 1; if ( iamin < 0 || iamin > 59 ) return 2; if ( asec < 0.0 || asec >= 60.0 ) return 3; return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/anp.c0000644000113000011300000001153212507252056013615 0ustar bellsbells#include "sofa.h" double iauAnp(double a) /* ** - - - - - - - ** i a u A n p ** - - - - - - - ** ** Normalize angle into the range 0 <= a < 2pi. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double angle (radians) ** ** Returned (function value): ** double angle in range 0-2pi ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double w; w = fmod(a, D2PI); if (w < 0) w += D2PI; return w; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/anpm.c0000644000113000011300000001156612507252056014001 0ustar bellsbells#include "sofa.h" double iauAnpm(double a) /* ** - - - - - - - - ** i a u A n p m ** - - - - - - - - ** ** Normalize angle into the range -pi <= a < +pi. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double angle (radians) ** ** Returned (function value): ** double angle in range +/-pi ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double w; w = fmod(a, D2PI); if (fabs(w) >= DPI) w -= dsign(D2PI, a); return w; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/apcg13.c0000644000113000011300000002207612507252056014122 0ustar bellsbells#include "sofa.h" void iauApcg13(double date1, double date2, iauASTROM *astrom) /* ** - - - - - - - - - - ** i a u A p c g 1 3 ** - - - - - - - - - - ** ** For a geocentric observer, prepare star-independent astrometry ** parameters for transformations between ICRS and GCRS coordinates. ** The caller supplies the date, and SOFA models are used to predict ** the Earth ephemeris. ** ** The parameters produced by this function are required in the ** parallax, light deflection and aberration parts of the astrometric ** transformation chain. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1 double TDB as a 2-part... ** date2 double ...Julian Date (Note 1) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double unchanged ** xpl double unchanged ** ypl double unchanged ** sphi double unchanged ** cphi double unchanged ** diurab double unchanged ** eral double unchanged ** refa double unchanged ** refb double unchanged ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. For most ** applications of this function the choice will not be at all ** critical. ** ** TT can be used instead of TDB without any significant impact on ** accuracy. ** ** 2) All the vectors are with respect to BCRS axes. ** ** 3) In cases where the caller wishes to supply his own Earth ** ephemeris, the function iauApcg can be used instead of the present ** function. ** ** 4) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 5) The context structure astrom produced by this function is used by ** iauAtciq* and iauAticq*. ** ** Called: ** iauEpv00 Earth position and velocity ** iauApcg astrometry parameters, ICRS-GCRS, geocenter ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double ehpv[2][3], ebpv[2][3]; /* Earth barycentric & heliocentric position/velocity (au, au/d). */ (void) iauEpv00(date1, date2, ehpv, ebpv); /* Compute the star-independent astrometry parameters. */ iauApcg(date1, date2, ebpv, ehpv[0], astrom); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/apcg.c0000644000113000011300000002172512507252056013756 0ustar bellsbells#include "sofa.h" void iauApcg(double date1, double date2, double ebpv[2][3], double ehp[3], iauASTROM *astrom) /* ** - - - - - - - - ** i a u A p c g ** - - - - - - - - ** ** For a geocentric observer, prepare star-independent astrometry ** parameters for transformations between ICRS and GCRS coordinates. ** The Earth ephemeris is supplied by the caller. ** ** The parameters produced by this function are required in the ** parallax, light deflection and aberration parts of the astrometric ** transformation chain. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1 double TDB as a 2-part... ** date2 double ...Julian Date (Note 1) ** ebpv double[2][3] Earth barycentric pos/vel (au, au/day) ** ehp double[3] Earth heliocentric position (au) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double unchanged ** xpl double unchanged ** ypl double unchanged ** sphi double unchanged ** cphi double unchanged ** diurab double unchanged ** eral double unchanged ** refa double unchanged ** refb double unchanged ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. For most ** applications of this function the choice will not be at all ** critical. ** ** TT can be used instead of TDB without any significant impact on ** accuracy. ** ** 2) All the vectors are with respect to BCRS axes. ** ** 3) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 4) The context structure astrom produced by this function is used by ** iauAtciq* and iauAticq*. ** ** Called: ** iauApcs astrometry parameters, ICRS-GCRS, space observer ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Geocentric observer */ double pv[2][3] = { { 0.0, 0.0, 0.0 }, { 0.0, 0.0, 0.0 } }; /* Compute the star-independent astrometry parameters. */ iauApcs(date1, date2, pv, ebpv, ehp, astrom); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/apci13.c0000644000113000011300000002334212507252056014121 0ustar bellsbells#include "sofa.h" void iauApci13(double date1, double date2, iauASTROM *astrom, double *eo) /* ** - - - - - - - - - - ** i a u A p c i 1 3 ** - - - - - - - - - - ** ** For a terrestrial observer, prepare star-independent astrometry ** parameters for transformations between ICRS and geocentric CIRS ** coordinates. The caller supplies the date, and SOFA models are used ** to predict the Earth ephemeris and CIP/CIO. ** ** The parameters produced by this function are required in the ** parallax, light deflection, aberration, and bias-precession-nutation ** parts of the astrometric transformation chain. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1 double TDB as a 2-part... ** date2 double ...Julian Date (Note 1) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double unchanged ** xpl double unchanged ** ypl double unchanged ** sphi double unchanged ** cphi double unchanged ** diurab double unchanged ** eral double unchanged ** refa double unchanged ** refb double unchanged ** eo double* equation of the origins (ERA-GST) ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. For most ** applications of this function the choice will not be at all ** critical. ** ** TT can be used instead of TDB without any significant impact on ** accuracy. ** ** 2) All the vectors are with respect to BCRS axes. ** ** 3) In cases where the caller wishes to supply his own Earth ** ephemeris and CIP/CIO, the function iauApci can be used instead ** of the present function. ** ** 4) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 5) The context structure astrom produced by this function is used by ** iauAtciq* and iauAticq*. ** ** Called: ** iauEpv00 Earth position and velocity ** iauPnm06a classical NPB matrix, IAU 2006/2000A ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauS06 the CIO locator s, given X,Y, IAU 2006 ** iauApci astrometry parameters, ICRS-CIRS ** iauEors equation of the origins, given NPB matrix and s ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double ehpv[2][3], ebpv[2][3], r[3][3], x, y, s; /* Earth barycentric & heliocentric position/velocity (au, au/d). */ (void) iauEpv00(date1, date2, ehpv, ebpv); /* Form the equinox based BPN matrix, IAU 2006/2000A. */ iauPnm06a(date1, date2, r); /* Extract CIP X,Y. */ iauBpn2xy(r, &x, &y); /* Obtain CIO locator s. */ s = iauS06(date1, date2, x, y); /* Compute the star-independent astrometry parameters. */ iauApci(date1, date2, ebpv, ehpv[0], x, y, s, astrom); /* Equation of the origins. */ *eo = iauEors(r, s); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/apci.c0000644000113000011300000002270612507252056013760 0ustar bellsbells#include "sofa.h" void iauApci(double date1, double date2, double ebpv[2][3], double ehp[3], double x, double y, double s, iauASTROM *astrom) /* ** - - - - - - - - ** i a u A p c i ** - - - - - - - - ** ** For a terrestrial observer, prepare star-independent astrometry ** parameters for transformations between ICRS and geocentric CIRS ** coordinates. The Earth ephemeris and CIP/CIO are supplied by the ** caller. ** ** The parameters produced by this function are required in the ** parallax, light deflection, aberration, and bias-precession-nutation ** parts of the astrometric transformation chain. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1 double TDB as a 2-part... ** date2 double ...Julian Date (Note 1) ** ebpv double[2][3] Earth barycentric position/velocity (au, au/day) ** ehp double[3] Earth heliocentric position (au) ** x,y double CIP X,Y (components of unit vector) ** s double the CIO locator s (radians) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double unchanged ** xpl double unchanged ** ypl double unchanged ** sphi double unchanged ** cphi double unchanged ** diurab double unchanged ** eral double unchanged ** refa double unchanged ** refb double unchanged ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. For most ** applications of this function the choice will not be at all ** critical. ** ** TT can be used instead of TDB without any significant impact on ** accuracy. ** ** 2) All the vectors are with respect to BCRS axes. ** ** 3) In cases where the caller does not wish to provide the Earth ** ephemeris and CIP/CIO, the function iauApci13 can be used instead ** of the present function. This computes the required quantities ** using other SOFA functions. ** ** 4) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 5) The context structure astrom produced by this function is used by ** iauAtciq* and iauAticq*. ** ** Called: ** iauApcg astrometry parameters, ICRS-GCRS, geocenter ** iauC2ixys celestial-to-intermediate matrix, given X,Y and s ** ** This revision: 2013 September 25 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Star-independent astrometry parameters for geocenter. */ iauApcg(date1, date2, ebpv, ehp, astrom); /* CIO based BPN matrix. */ iauC2ixys(x, y, s, astrom->bpn); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/apco13.c0000644000113000011300000003353412507252056014133 0ustar bellsbells#include "sofa.h" int iauApco13(double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, iauASTROM *astrom, double *eo) /* ** - - - - - - - - - - ** i a u A p c o 1 3 ** - - - - - - - - - - ** ** For a terrestrial observer, prepare star-independent astrometry ** parameters for transformations between ICRS and observed ** coordinates. The caller supplies UTC, site coordinates, ambient air ** conditions and observing wavelength, and SOFA models are used to ** obtain the Earth ephemeris, CIP/CIO and refraction constants. ** ** The parameters produced by this function are required in the ** parallax, light deflection, aberration, and bias-precession-nutation ** parts of the ICRS/CIRS transformations. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** utc1 double UTC as a 2-part... ** utc2 double ...quasi Julian Date (Notes 1,2) ** dut1 double UT1-UTC (seconds, Note 3) ** elong double longitude (radians, east +ve, Note 4) ** phi double latitude (geodetic, radians, Note 4) ** hm double height above ellipsoid (m, geodetic, Notes 4,6) ** xp,yp double polar motion coordinates (radians, Note 5) ** phpa double pressure at the observer (hPa = mB, Note 6) ** tc double ambient temperature at the observer (deg C) ** rh double relative humidity at the observer (range 0-1) ** wl double wavelength (micrometers, Note 7) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** eo double* equation of the origins (ERA-GST) ** ** Returned (function value): ** int status: +1 = dubious year (Note 2) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any ** convenient way between the two arguments, for example where utc1 ** is the Julian Day Number and utc2 is the fraction of a day. ** ** However, JD cannot unambiguously represent UTC during a leap ** second unless special measures are taken. The convention in the ** present function is that the JD day represents UTC days whether ** the length is 86399, 86400 or 86401 SI seconds. ** ** Applications should use the function iauDtf2d to convert from ** calendar date and time of day into 2-part quasi Julian Date, as ** it implements the leap-second-ambiguity convention just ** described. ** ** 2) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the ** future to be trusted. See iauDat for further details. ** ** 3) UT1-UTC is tabulated in IERS bulletins. It increases by exactly ** one second at the end of each positive UTC leap second, ** introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This ** practice is under review, and in the future UT1-UTC may grow ** essentially without limit. ** ** 4) The geographical coordinates are with respect to the WGS84 ** reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the ** longitude required by the present function is east-positive ** (i.e. right-handed), in accordance with geographical convention. ** ** 5) The polar motion xp,yp can be obtained from IERS bulletins. The ** values are the coordinates (in radians) of the Celestial ** Intermediate Pole with respect to the International Terrestrial ** Reference System (see IERS Conventions 2003), measured along the ** meridians 0 and 90 deg west respectively. For many ** applications, xp and yp can be set to zero. ** ** Internally, the polar motion is stored in a form rotated onto ** the local meridian. ** ** 6) If hm, the height above the ellipsoid of the observing station ** in meters, is not known but phpa, the pressure in hPa (=mB), is ** available, an adequate estimate of hm can be obtained from the ** expression ** ** hm = -29.3 * tsl * log ( phpa / 1013.25 ); ** ** where tsl is the approximate sea-level air temperature in K ** (See Astrophysical Quantities, C.W.Allen, 3rd edition, section ** 52). Similarly, if the pressure phpa is not known, it can be ** estimated from the height of the observing station, hm, as ** follows: ** ** phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) ); ** ** Note, however, that the refraction is nearly proportional to ** the pressure and that an accurate phpa value is important for ** precise work. ** ** 7) The argument wl specifies the observing wavelength in ** micrometers. The transition from optical to radio is assumed to ** occur at 100 micrometers (about 3000 GHz). ** ** 8) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** 9) In cases where the caller wishes to supply his own Earth ** ephemeris, Earth rotation information and refraction constants, ** the function iauApco can be used instead of the present function. ** ** 10) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 11) The context structure astrom produced by this function is used ** by iauAtioq, iauAtoiq, iauAtciq* and iauAticq*. ** ** Called: ** iauUtctai UTC to TAI ** iauTaitt TAI to TT ** iauUtcut1 UTC to UT1 ** iauEpv00 Earth position and velocity ** iauPnm06a classical NPB matrix, IAU 2006/2000A ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauS06 the CIO locator s, given X,Y, IAU 2006 ** iauEra00 Earth rotation angle, IAU 2000 ** iauSp00 the TIO locator s', IERS 2000 ** iauRefco refraction constants for given ambient conditions ** iauApco astrometry parameters, ICRS-observed ** iauEors equation of the origins, given NPB matrix and s ** ** This revision: 2013 December 5 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int j; double tai1, tai2, tt1, tt2, ut11, ut12, ehpv[2][3], ebpv[2][3], r[3][3], x, y, s, theta, sp, refa, refb; /* UTC to other time scales. */ j = iauUtctai(utc1, utc2, &tai1, &tai2); if ( j < 0 ) return -1; j = iauTaitt(tai1, tai2, &tt1, &tt2); j = iauUtcut1(utc1, utc2, dut1, &ut11, &ut12); if ( j < 0 ) return -1; /* Earth barycentric & heliocentric position/velocity (au, au/d). */ (void) iauEpv00(tt1, tt2, ehpv, ebpv); /* Form the equinox based BPN matrix, IAU 2006/2000A. */ iauPnm06a(tt1, tt2, r); /* Extract CIP X,Y. */ iauBpn2xy(r, &x, &y); /* Obtain CIO locator s. */ s = iauS06(tt1, tt2, x, y); /* Earth rotation angle. */ theta = iauEra00(ut11, ut12); /* TIO locator s'. */ sp = iauSp00(tt1, tt2); /* Refraction constants A and B. */ iauRefco(phpa, tc, rh, wl, &refa, &refb); /* Compute the star-independent astrometry parameters. */ iauApco(tt1, tt2, ebpv, ehpv[0], x, y, s, theta, elong, phi, hm, xp, yp, sp, refa, refb, astrom); /* Equation of the origins. */ *eo = iauEors(r, s); /* Return any warning status. */ return j; /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/apco.c0000644000113000011300000003110012507252056013752 0ustar bellsbells#include "sofa.h" void iauApco(double date1, double date2, double ebpv[2][3], double ehp[3], double x, double y, double s, double theta, double elong, double phi, double hm, double xp, double yp, double sp, double refa, double refb, iauASTROM *astrom) /* ** - - - - - - - - ** i a u A p c o ** - - - - - - - - ** ** For a terrestrial observer, prepare star-independent astrometry ** parameters for transformations between ICRS and observed ** coordinates. The caller supplies the Earth ephemeris, the Earth ** rotation information and the refraction constants as well as the ** site coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1 double TDB as a 2-part... ** date2 double ...Julian Date (Note 1) ** ebpv double[2][3] Earth barycentric PV (au, au/day, Note 2) ** ehp double[3] Earth heliocentric P (au, Note 2) ** x,y double CIP X,Y (components of unit vector) ** s double the CIO locator s (radians) ** theta double Earth rotation angle (radians) ** elong double longitude (radians, east +ve, Note 3) ** phi double latitude (geodetic, radians, Note 3) ** hm double height above ellipsoid (m, geodetic, Note 3) ** xp,yp double polar motion coordinates (radians, Note 4) ** sp double the TIO locator s' (radians, Note 4) ** refa double refraction constant A (radians, Note 5) ** refb double refraction constant B (radians, Note 5) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. For most ** applications of this function the choice will not be at all ** critical. ** ** TT can be used instead of TDB without any significant impact on ** accuracy. ** ** 2) The vectors eb, eh, and all the astrom vectors, are with respect ** to BCRS axes. ** ** 3) The geographical coordinates are with respect to the WGS84 ** reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN ** CONVENTION: the longitude required by the present function is ** right-handed, i.e. east-positive, in accordance with geographical ** convention. ** ** 4) xp and yp are the coordinates (in radians) of the Celestial ** Intermediate Pole with respect to the International Terrestrial ** Reference System (see IERS Conventions), measured along the ** meridians 0 and 90 deg west respectively. sp is the TIO locator ** s', in radians, which positions the Terrestrial Intermediate ** Origin on the equator. For many applications, xp, yp and ** (especially) sp can be set to zero. ** ** Internally, the polar motion is stored in a form rotated onto the ** local meridian. ** ** 5) The refraction constants refa and refb are for use in a ** dZ = A*tan(Z)+B*tan^3(Z) model, where Z is the observed ** (i.e. refracted) zenith distance and dZ is the amount of ** refraction. ** ** 6) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** 7) In cases where the caller does not wish to provide the Earth ** Ephemeris, the Earth rotation information and refraction ** constants, the function iauApco13 can be used instead of the ** present function. This starts from UTC and weather readings etc. ** and computes suitable values using other SOFA functions. ** ** 8) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 9) The context structure astrom produced by this function is used by ** iauAtioq, iauAtoiq, iauAtciq* and iauAticq*. ** ** Called: ** iauAper astrometry parameters: update ERA ** iauC2ixys celestial-to-intermediate matrix, given X,Y and s ** iauPvtob position/velocity of terrestrial station ** iauTrxpv product of transpose of r-matrix and pv-vector ** iauApcs astrometry parameters, ICRS-GCRS, space observer ** iauCr copy r-matrix ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double sl, cl, r[3][3], pvc[2][3], pv[2][3]; /* Longitude with adjustment for TIO locator s'. */ astrom->along = elong + sp; /* Polar motion, rotated onto the local meridian. */ sl = sin(astrom->along); cl = cos(astrom->along); astrom->xpl = xp*cl - yp*sl; astrom->ypl = xp*sl + yp*cl; /* Functions of latitude. */ astrom->sphi = sin(phi); astrom->cphi = cos(phi); /* Refraction constants. */ astrom->refa = refa; astrom->refb = refb; /* Local Earth rotation angle. */ iauAper(theta, astrom); /* Disable the (redundant) diurnal aberration step. */ astrom->diurab = 0.0; /* CIO based BPN matrix. */ iauC2ixys(x, y, s, r); /* Observer's geocentric position and velocity (m, m/s, CIRS). */ iauPvtob(elong, phi, hm, xp, yp, sp, theta, pvc); /* Rotate into GCRS. */ iauTrxpv(r, pvc, pv); /* ICRS <-> GCRS parameters. */ iauApcs(date1, date2, pv, ebpv, ehp, astrom); /* Store the CIO based BPN matrix. */ iauCr(r, astrom->bpn ); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/apcs13.c0000644000113000011300000002272612507252056014140 0ustar bellsbells#include "sofa.h" void iauApcs13(double date1, double date2, double pv[2][3], iauASTROM *astrom) /* ** - - - - - - - - - - ** i a u A p c s 1 3 ** - - - - - - - - - - ** ** For an observer whose geocentric position and velocity are known, ** prepare star-independent astrometry parameters for transformations ** between ICRS and GCRS. The Earth ephemeris is from SOFA models. ** ** The parameters produced by this function are required in the space ** motion, parallax, light deflection and aberration parts of the ** astrometric transformation chain. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1 double TDB as a 2-part... ** date2 double ...Julian Date (Note 1) ** pv double[2][3] observer's geocentric pos/vel (Note 3) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double unchanged ** xpl double unchanged ** ypl double unchanged ** sphi double unchanged ** cphi double unchanged ** diurab double unchanged ** eral double unchanged ** refa double unchanged ** refb double unchanged ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. For most ** applications of this function the choice will not be at all ** critical. ** ** TT can be used instead of TDB without any significant impact on ** accuracy. ** ** 2) All the vectors are with respect to BCRS axes. ** ** 3) The observer's position and velocity pv are geocentric but with ** respect to BCRS axes, and in units of m and m/s. No assumptions ** are made about proximity to the Earth, and the function can be ** used for deep space applications as well as Earth orbit and ** terrestrial. ** ** 4) In cases where the caller wishes to supply his own Earth ** ephemeris, the function iauApcs can be used instead of the present ** function. ** ** 5) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 6) The context structure astrom produced by this function is used by ** iauAtciq* and iauAticq*. ** ** Called: ** iauEpv00 Earth position and velocity ** iauApcs astrometry parameters, ICRS-GCRS, space observer ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double ehpv[2][3], ebpv[2][3]; /* Earth barycentric & heliocentric position/velocity (au, au/d). */ (void) iauEpv00(date1, date2, ehpv, ebpv); /* Compute the star-independent astrometry parameters. */ iauApcs(date1, date2, pv, ebpv, ehpv[0], astrom); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/apcs.c0000644000113000011300000002537512507252056013777 0ustar bellsbells#include "sofa.h" void iauApcs(double date1, double date2, double pv[2][3], double ebpv[2][3], double ehp[3], iauASTROM *astrom) /* ** - - - - - - - - ** i a u A p c s ** - - - - - - - - ** ** For an observer whose geocentric position and velocity are known, ** prepare star-independent astrometry parameters for transformations ** between ICRS and GCRS. The Earth ephemeris is supplied by the ** caller. ** ** The parameters produced by this function are required in the space ** motion, parallax, light deflection and aberration parts of the ** astrometric transformation chain. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1 double TDB as a 2-part... ** date2 double ...Julian Date (Note 1) ** pv double[2][3] observer's geocentric pos/vel (m, m/s) ** ebpv double[2][3] Earth barycentric PV (au, au/day) ** ehp double[3] Earth heliocentric P (au) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double unchanged ** xpl double unchanged ** ypl double unchanged ** sphi double unchanged ** cphi double unchanged ** diurab double unchanged ** eral double unchanged ** refa double unchanged ** refb double unchanged ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. For most ** applications of this function the choice will not be at all ** critical. ** ** TT can be used instead of TDB without any significant impact on ** accuracy. ** ** 2) All the vectors are with respect to BCRS axes. ** ** 3) Providing separate arguments for (i) the observer's geocentric ** position and velocity and (ii) the Earth ephemeris is done for ** convenience in the geocentric, terrestrial and Earth orbit cases. ** For deep space applications it maybe more convenient to specify ** zero geocentric position and velocity and to supply the ** observer's position and velocity information directly instead of ** with respect to the Earth. However, note the different units: ** m and m/s for the geocentric vectors, au and au/day for the ** heliocentric and barycentric vectors. ** ** 4) In cases where the caller does not wish to provide the Earth ** ephemeris, the function iauApcs13 can be used instead of the ** present function. This computes the Earth ephemeris using the ** SOFA function iauEpv00. ** ** 5) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 6) The context structure astrom produced by this function is used by ** iauAtciq* and iauAticq*. ** ** Called: ** iauCp copy p-vector ** iauPm modulus of p-vector ** iauPn decompose p-vector into modulus and direction ** iauIr initialize r-matrix to identity ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* au/d to m/s */ const double AUDMS = DAU/DAYSEC; /* Light time for 1 AU (day) */ const double CR = AULT/DAYSEC; int i; double dp, dv, pb[3], vb[3], ph[3], v2, w; /* Time since reference epoch, years (for proper motion calculation). */ astrom->pmt = ( (date1 - DJ00) + date2 ) / DJY; /* Adjust Earth ephemeris to observer. */ for (i = 0; i < 3; i++) { dp = pv[0][i] / DAU; dv = pv[1][i] / AUDMS; pb[i] = ebpv[0][i] + dp; vb[i] = ebpv[1][i] + dv; ph[i] = ehp[i] + dp; } /* Barycentric position of observer (au). */ iauCp(pb, astrom->eb); /* Heliocentric direction and distance (unit vector and au). */ iauPn(ph, &astrom->em, astrom->eh); /* Barycentric vel. in units of c, and reciprocal of Lorenz factor. */ v2 = 0.0; for (i = 0; i < 3; i++) { w = vb[i] * CR; astrom->v[i] = w; v2 += w*w; } astrom->bm1 = sqrt(1.0 - v2); /* Reset the NPB matrix. */ iauIr(astrom->bpn); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/aper13.c0000644000113000011300000002177012507252056014137 0ustar bellsbells#include "sofa.h" void iauAper13(double ut11, double ut12, iauASTROM *astrom) /* ** - - - - - - - - - - ** i a u A p e r 1 3 ** - - - - - - - - - - ** ** In the star-independent astrometry parameters, update only the ** Earth rotation angle. The caller provides UT1, (n.b. not UTC). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** ut11 double UT1 as a 2-part... ** ut12 double ...Julian Date (Note 1) ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double not used ** eb double[3] not used ** eh double[3] not used ** em double not used ** v double[3] not used ** bm1 double not used ** bpn double[3][3] not used ** along double longitude + s' (radians) ** xpl double not used ** ypl double not used ** sphi double not used ** cphi double not used ** diurab double not used ** eral double not used ** refa double not used ** refb double not used ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double unchanged ** eb double[3] unchanged ** eh double[3] unchanged ** em double unchanged ** v double[3] unchanged ** bm1 double unchanged ** bpn double[3][3] unchanged ** along double unchanged ** xpl double unchanged ** ypl double unchanged ** sphi double unchanged ** cphi double unchanged ** diurab double unchanged ** eral double "local" Earth rotation angle (radians) ** refa double unchanged ** refb double unchanged ** ** Notes: ** ** 1) The UT1 date (n.b. not UTC) ut11+ut12 is a Julian Date, ** apportioned in any convenient way between the arguments ut11 and ** ut12. For example, JD(UT1)=2450123.7 could be expressed in any ** of these ways, among others: ** ** ut11 ut12 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. The date & time method is ** best matched to the algorithm used: maximum precision is ** delivered when the ut11 argument is for 0hrs UT1 on the day in ** question and the ut12 argument lies in the range 0 to 1, or vice ** versa. ** ** 2) If the caller wishes to provide the Earth rotation angle itself, ** the function iauAper can be used instead. One use of this ** technique is to substitute Greenwich apparent sidereal time and ** thereby to support equinox based transformations directly. ** ** 3) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** Called: ** iauAper astrometry parameters: update ERA ** iauEra00 Earth rotation angle, IAU 2000 ** ** This revision: 2013 September 25 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { iauAper(iauEra00(ut11,ut12), astrom); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/aper.c0000644000113000011300000002013612507252056013766 0ustar bellsbells#include "sofa.h" void iauAper(double theta, iauASTROM *astrom) /* ** - - - - - - - - ** i a u A p e r ** - - - - - - - - ** ** In the star-independent astrometry parameters, update only the ** Earth rotation angle, supplied by the caller explicitly. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** theta double Earth rotation angle (radians, Note 2) ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double not used ** eb double[3] not used ** eh double[3] not used ** em double not used ** v double[3] not used ** bm1 double not used ** bpn double[3][3] not used ** along double longitude + s' (radians) ** xpl double not used ** ypl double not used ** sphi double not used ** cphi double not used ** diurab double not used ** eral double not used ** refa double not used ** refb double not used ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double unchanged ** eb double[3] unchanged ** eh double[3] unchanged ** em double unchanged ** v double[3] unchanged ** bm1 double unchanged ** bpn double[3][3] unchanged ** along double unchanged ** xpl double unchanged ** ypl double unchanged ** sphi double unchanged ** cphi double unchanged ** diurab double unchanged ** eral double "local" Earth rotation angle (radians) ** refa double unchanged ** refb double unchanged ** ** Notes: ** ** 1) This function exists to enable sidereal-tracking applications to ** avoid wasteful recomputation of the bulk of the astrometry ** parameters: only the Earth rotation is updated. ** ** 2) For targets expressed as equinox based positions, such as ** classical geocentric apparent (RA,Dec), the supplied theta can be ** Greenwich apparent sidereal time rather than Earth rotation ** angle. ** ** 3) The function iauAper13 can be used instead of the present ** function, and starts from UT1 rather than ERA itself. ** ** 4) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** This revision: 2013 September 25 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { astrom->eral = theta + astrom->along; /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/apio13.c0000644000113000011300000003105212507252056014132 0ustar bellsbells#include "sofa.h" int iauApio13(double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, iauASTROM *astrom) /* ** - - - - - - - - - - ** i a u A p i o 1 3 ** - - - - - - - - - - ** ** For a terrestrial observer, prepare star-independent astrometry ** parameters for transformations between CIRS and observed ** coordinates. The caller supplies UTC, site coordinates, ambient air ** conditions and observing wavelength. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** utc1 double UTC as a 2-part... ** utc2 double ...quasi Julian Date (Notes 1,2) ** dut1 double UT1-UTC (seconds) ** elong double longitude (radians, east +ve, Note 3) ** phi double geodetic latitude (radians, Note 3) ** hm double height above ellipsoid (m, geodetic Notes 4,6) ** xp,yp double polar motion coordinates (radians, Note 5) ** phpa double pressure at the observer (hPa = mB, Note 6) ** tc double ambient temperature at the observer (deg C) ** rh double relative humidity at the observer (range 0-1) ** wl double wavelength (micrometers, Note 7) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double unchanged ** eb double[3] unchanged ** eh double[3] unchanged ** em double unchanged ** v double[3] unchanged ** bm1 double unchanged ** bpn double[3][3] unchanged ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** ** Returned (function value): ** int status: +1 = dubious year (Note 2) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any ** convenient way between the two arguments, for example where utc1 ** is the Julian Day Number and utc2 is the fraction of a day. ** ** However, JD cannot unambiguously represent UTC during a leap ** second unless special measures are taken. The convention in the ** present function is that the JD day represents UTC days whether ** the length is 86399, 86400 or 86401 SI seconds. ** ** Applications should use the function iauDtf2d to convert from ** calendar date and time of day into 2-part quasi Julian Date, as ** it implements the leap-second-ambiguity convention just ** described. ** ** 2) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the future ** to be trusted. See iauDat for further details. ** ** 3) UT1-UTC is tabulated in IERS bulletins. It increases by exactly ** one second at the end of each positive UTC leap second, ** introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This ** practice is under review, and in the future UT1-UTC may grow ** essentially without limit. ** ** 4) The geographical coordinates are with respect to the WGS84 ** reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the ** longitude required by the present function is east-positive ** (i.e. right-handed), in accordance with geographical convention. ** ** 5) The polar motion xp,yp can be obtained from IERS bulletins. The ** values are the coordinates (in radians) of the Celestial ** Intermediate Pole with respect to the International Terrestrial ** Reference System (see IERS Conventions 2003), measured along the ** meridians 0 and 90 deg west respectively. For many applications, ** xp and yp can be set to zero. ** ** Internally, the polar motion is stored in a form rotated onto ** the local meridian. ** ** 6) If hm, the height above the ellipsoid of the observing station ** in meters, is not known but phpa, the pressure in hPa (=mB), is ** available, an adequate estimate of hm can be obtained from the ** expression ** ** hm = -29.3 * tsl * log ( phpa / 1013.25 ); ** ** where tsl is the approximate sea-level air temperature in K ** (See Astrophysical Quantities, C.W.Allen, 3rd edition, section ** 52). Similarly, if the pressure phpa is not known, it can be ** estimated from the height of the observing station, hm, as ** follows: ** ** phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) ); ** ** Note, however, that the refraction is nearly proportional to the ** pressure and that an accurate phpa value is important for ** precise work. ** ** 7) The argument wl specifies the observing wavelength in ** micrometers. The transition from optical to radio is assumed to ** occur at 100 micrometers (about 3000 GHz). ** ** 8) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** 9) In cases where the caller wishes to supply his own Earth ** rotation information and refraction constants, the function ** iauApc can be used instead of the present function. ** ** 10) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 11) The context structure astrom produced by this function is used ** by iauAtioq and iauAtoiq. ** ** Called: ** iauUtctai UTC to TAI ** iauTaitt TAI to TT ** iauUtcut1 UTC to UT1 ** iauSp00 the TIO locator s', IERS 2000 ** iauEra00 Earth rotation angle, IAU 2000 ** iauRefco refraction constants for given ambient conditions ** iauApio astrometry parameters, CIRS-observed ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int j; double tai1, tai2, tt1, tt2, ut11, ut12, sp, theta, refa, refb; /* UTC to other time scales. */ j = iauUtctai(utc1, utc2, &tai1, &tai2); if ( j < 0 ) return -1; j = iauTaitt(tai1, tai2, &tt1, &tt2); j = iauUtcut1(utc1, utc2, dut1, &ut11, &ut12); if ( j < 0 ) return -1; /* TIO locator s'. */ sp = iauSp00(tt1, tt2); /* Earth rotation angle. */ theta = iauEra00(ut11, ut12); /* Refraction constants A and B. */ iauRefco(phpa, tc, rh, wl, &refa, &refb); /* CIRS <-> observed astrometry parameters. */ iauApio(sp, theta, elong, phi, hm, xp, yp, refa, refb, astrom); /* Return any warning status. */ return j; /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/apio.c0000644000113000011300000002453412507252056013775 0ustar bellsbells#include "sofa.h" void iauApio(double sp, double theta, double elong, double phi, double hm, double xp, double yp, double refa, double refb, iauASTROM *astrom) /* ** - - - - - - - - ** i a u A p i o ** - - - - - - - - ** ** For a terrestrial observer, prepare star-independent astrometry ** parameters for transformations between CIRS and observed ** coordinates. The caller supplies the Earth orientation information ** and the refraction constants as well as the site coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** sp double the TIO locator s' (radians, Note 1) ** theta double Earth rotation angle (radians) ** elong double longitude (radians, east +ve, Note 2) ** phi double geodetic latitude (radians, Note 2) ** hm double height above ellipsoid (m, geodetic Note 2) ** xp,yp double polar motion coordinates (radians, Note 3) ** refa double refraction constant A (radians, Note 4) ** refb double refraction constant B (radians, Note 4) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double unchanged ** eb double[3] unchanged ** eh double[3] unchanged ** em double unchanged ** v double[3] unchanged ** bm1 double unchanged ** bpn double[3][3] unchanged ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** ** Notes: ** ** 1) sp, the TIO locator s', is a tiny quantity needed only by the ** most precise applications. It can either be set to zero or ** predicted using the SOFA function iauSp00. ** ** 2) The geographical coordinates are with respect to the WGS84 ** reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the ** longitude required by the present function is east-positive ** (i.e. right-handed), in accordance with geographical convention. ** ** 3) The polar motion xp,yp can be obtained from IERS bulletins. The ** values are the coordinates (in radians) of the Celestial ** Intermediate Pole with respect to the International Terrestrial ** Reference System (see IERS Conventions 2003), measured along the ** meridians 0 and 90 deg west respectively. For many applications, ** xp and yp can be set to zero. ** ** Internally, the polar motion is stored in a form rotated onto the ** local meridian. ** ** 4) The refraction constants refa and refb are for use in a ** dZ = A*tan(Z)+B*tan^3(Z) model, where Z is the observed ** (i.e. refracted) zenith distance and dZ is the amount of ** refraction. ** ** 5) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** 6) In cases where the caller does not wish to provide the Earth ** rotation information and refraction constants, the function ** iauApio13 can be used instead of the present function. This ** starts from UTC and weather readings etc. and computes suitable ** values using other SOFA functions. ** ** 7) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 8) The context structure astrom produced by this function is used by ** iauAtioq and iauAtoiq. ** ** Called: ** iauPvtob position/velocity of terrestrial station ** iauAper astrometry parameters: update ERA ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double sl, cl, pv[2][3]; /* Longitude with adjustment for TIO locator s'. */ astrom->along = elong + sp; /* Polar motion, rotated onto the local meridian. */ sl = sin(astrom->along); cl = cos(astrom->along); astrom->xpl = xp*cl - yp*sl; astrom->ypl = xp*sl + yp*cl; /* Functions of latitude. */ astrom->sphi = sin(phi); astrom->cphi = cos(phi); /* Observer's geocentric position and velocity (m, m/s, CIRS). */ iauPvtob(elong, phi, hm, xp, yp, sp, theta, pv); /* Magnitude of diurnal aberration vector. */ astrom->diurab = sqrt(pv[1][0]*pv[1][0]+pv[1][1]*pv[1][1]) / CMPS; /* Refraction constants. */ astrom->refa = refa; astrom->refb = refb; /* Local Earth rotation angle. */ iauAper(theta, astrom); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/atci13.c0000644000113000011300000002010412507252056014116 0ustar bellsbells#include "sofa.h" void iauAtci13(double rc, double dc, double pr, double pd, double px, double rv, double date1, double date2, double *ri, double *di, double *eo) /* ** - - - - - - - - - - ** i a u A t c i 1 3 ** - - - - - - - - - - ** ** Transform ICRS star data, epoch J2000.0, to CIRS. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rc double ICRS right ascension at J2000.0 (radians, Note 1) ** dc double ICRS declination at J2000.0 (radians, Note 1) ** pr double RA proper motion (radians/year; Note 2) ** pd double Dec proper motion (radians/year) ** px double parallax (arcsec) ** rv double radial velocity (km/s, +ve if receding) ** date1 double TDB as a 2-part... ** date2 double ...Julian Date (Note 3) ** ** Returned: ** ri,di double* CIRS geocentric RA,Dec (radians) ** eo double* equation of the origins (ERA-GST, Note 5) ** ** Notes: ** ** 1) Star data for an epoch other than J2000.0 (for example from the ** Hipparcos catalog, which has an epoch of J1991.25) will require a ** preliminary call to iauPmsafe before use. ** ** 2) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt. ** ** 3) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.8g could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.8g 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. For most ** applications of this function the choice will not be at all ** critical. ** ** TT can be used instead of TDB without any significant impact on ** accuracy. ** ** 4) The available accuracy is better than 1 milliarcsecond, limited ** mainly by the precession-nutation model that is used, namely ** IAU 2000A/2006. Very close to solar system bodies, additional ** errors of up to several milliarcseconds can occur because of ** unmodeled light deflection; however, the Sun's contribution is ** taken into account, to first order. The accuracy limitations of ** the SOFA function iauEpv00 (used to compute Earth position and ** velocity) can contribute aberration errors of up to ** 5 microarcseconds. Light deflection at the Sun's limb is ** uncertain at the 0.4 mas level. ** ** 5) Should the transformation to (equinox based) apparent place be ** required rather than (CIO based) intermediate place, subtract the ** equation of the origins from the returned right ascension: ** RA = RI - EO. (The iauAnp function can then be applied, as ** required, to keep the result in the conventional 0-2pi range.) ** ** Called: ** iauApci13 astrometry parameters, ICRS-CIRS, 2013 ** iauAtciq quick ICRS to CIRS ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Star-independent astrometry parameters */ iauASTROM astrom; /* The transformation parameters. */ iauApci13(date1, date2, &astrom, eo); /* ICRS (epoch J2000.0) to CIRS. */ iauAtciq(rc, dc, pr, pd, px, rv, &astrom, ri, di); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/atciq.c0000644000113000011300000001745212507252056014147 0ustar bellsbells#include "sofa.h" void iauAtciq(double rc, double dc, double pr, double pd, double px, double rv, iauASTROM *astrom, double *ri, double *di) /* ** - - - - - - - - - ** i a u A t c i q ** - - - - - - - - - ** ** Quick ICRS, epoch J2000.0, to CIRS transformation, given precomputed ** star-independent astrometry parameters. ** ** Use of this function is appropriate when efficiency is important and ** where many star positions are to be transformed for one date. The ** star-independent parameters can be obtained by calling one of the ** functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13]. ** ** If the parallax and proper motions are zero the iauAtciqz function ** can be used instead. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rc,dc double ICRS RA,Dec at J2000.0 (radians) ** pr double RA proper motion (radians/year; Note 3) ** pd double Dec proper motion (radians/year) ** px double parallax (arcsec) ** rv double radial velocity (km/s, +ve if receding) ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** ** Returned: ** ri,di double CIRS RA,Dec (radians) ** ** Notes: ** ** 1) All the vectors are with respect to BCRS axes. ** ** 2) Star data for an epoch other than J2000.0 (for example from the ** Hipparcos catalog, which has an epoch of J1991.25) will require a ** preliminary call to iauPmsafe before use. ** ** 3) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt. ** ** Called: ** iauPmpx proper motion and parallax ** iauLdsun light deflection by the Sun ** iauAb stellar aberration ** iauRxp product of r-matrix and pv-vector ** iauC2s p-vector to spherical ** iauAnp normalize angle into range 0 to 2pi ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double pco[3], pnat[3], ppr[3], pi[3], w; /* Proper motion and parallax, giving BCRS coordinate direction. */ iauPmpx(rc, dc, pr, pd, px, rv, astrom->pmt, astrom->eb, pco); /* Light deflection by the Sun, giving BCRS natural direction. */ iauLdsun(pco, astrom->eh, astrom->em, pnat); /* Aberration, giving GCRS proper direction. */ iauAb(pnat, astrom->v, astrom->em, astrom->bm1, ppr); /* Bias-precession-nutation, giving CIRS proper direction. */ iauRxp(astrom->bpn, ppr, pi); /* CIRS RA,Dec. */ iauC2s(pi, &w, di); *ri = iauAnp(w); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/atciqn.c0000644000113000011300000002313712507252056014322 0ustar bellsbells#include "sofa.h" void iauAtciqn(double rc, double dc, double pr, double pd, double px, double rv, iauASTROM *astrom, int n, iauLDBODY b[], double *ri, double *di) /* ** - - - - - - - - - - ** i a u A t c i q n ** - - - - - - - - - - ** ** Quick ICRS, epoch J2000.0, to CIRS transformation, given precomputed ** star-independent astrometry parameters plus a list of light- ** deflecting bodies. ** ** Use of this function is appropriate when efficiency is important and ** where many star positions are to be transformed for one date. The ** star-independent parameters can be obtained by calling one of the ** functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13]. ** ** If the only light-deflecting body to be taken into account is the ** Sun, the iauAtciq function can be used instead. If in addition the ** parallax and proper motions are zero, the iauAtciqz function can be ** used. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rc,dc double ICRS RA,Dec at J2000.0 (radians) ** pr double RA proper motion (radians/year; Note 3) ** pd double Dec proper motion (radians/year) ** px double parallax (arcsec) ** rv double radial velocity (km/s, +ve if receding) ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** n int number of bodies (Note 3) ** b iauLDBODY[n] data for each of the n bodies (Notes 3,4): ** bm double mass of the body (solar masses, Note 5) ** dl double deflection limiter (Note 6) ** pv [2][3] barycentric PV of the body (au, au/day) ** ** Returned: ** ri,di double CIRS RA,Dec (radians) ** ** Notes: ** ** 1) Star data for an epoch other than J2000.0 (for example from the ** Hipparcos catalog, which has an epoch of J1991.25) will require a ** preliminary call to iauPmsafe before use. ** ** 2) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt. ** ** 3) The struct b contains n entries, one for each body to be ** considered. If n = 0, no gravitational light deflection will be ** applied, not even for the Sun. ** ** 4) The struct b should include an entry for the Sun as well as for ** any planet or other body to be taken into account. The entries ** should be in the order in which the light passes the body. ** ** 5) In the entry in the b struct for body i, the mass parameter ** b[i].bm can, as required, be adjusted in order to allow for such ** effects as quadrupole field. ** ** 6) The deflection limiter parameter b[i].dl is phi^2/2, where phi is ** the angular separation (in radians) between star and body at ** which limiting is applied. As phi shrinks below the chosen ** threshold, the deflection is artificially reduced, reaching zero ** for phi = 0. Example values suitable for a terrestrial ** observer, together with masses, are as follows: ** ** body i b[i].bm b[i].dl ** ** Sun 1.0 6e-6 ** Jupiter 0.00095435 3e-9 ** Saturn 0.00028574 3e-10 ** ** 7) For efficiency, validation of the contents of the b array is ** omitted. The supplied masses must be greater than zero, the ** position and velocity vectors must be right, and the deflection ** limiter greater than zero. ** ** Called: ** iauPmpx proper motion and parallax ** iauLdn light deflection by n bodies ** iauAb stellar aberration ** iauRxp product of r-matrix and pv-vector ** iauC2s p-vector to spherical ** iauAnp normalize angle into range 0 to 2pi ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double pco[3], pnat[3], ppr[3], pi[3], w; /* Proper motion and parallax, giving BCRS coordinate direction. */ iauPmpx(rc, dc, pr, pd, px, rv, astrom->pmt, astrom->eb, pco); /* Light deflection, giving BCRS natural direction. */ iauLdn(n, b, astrom->eb, pco, pnat); /* Aberration, giving GCRS proper direction. */ iauAb(pnat, astrom->v, astrom->em, astrom->bm1, ppr); /* Bias-precession-nutation, giving CIRS proper direction. */ iauRxp(astrom->bpn, ppr, pi); /* CIRS RA,Dec. */ iauC2s(pi, &w, di); *ri = iauAnp(w); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/atciqz.c0000644000113000011300000001706112507252056014335 0ustar bellsbells#include "sofa.h" void iauAtciqz(double rc, double dc, iauASTROM *astrom, double *ri, double *di) /* ** - - - - - - - - - - ** i a u A t c i q z ** - - - - - - - - - - ** ** Quick ICRS to CIRS transformation, given precomputed star- ** independent astrometry parameters, and assuming zero parallax and ** proper motion. ** ** Use of this function is appropriate when efficiency is important and ** where many star positions are to be transformed for one date. The ** star-independent parameters can be obtained by calling one of the ** functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13]. ** ** The corresponding function for the case of non-zero parallax and ** proper motion is iauAtciq. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rc,dc double ICRS astrometric RA,Dec (radians) ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** ** Returned: ** ri,di double CIRS RA,Dec (radians) ** ** Note: ** ** All the vectors are with respect to BCRS axes. ** ** References: ** ** Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to ** the Astronomical Almanac, 3rd ed., University Science Books ** (2013). ** ** Klioner, Sergei A., "A practical relativistic model for micro- ** arcsecond astrometry in space", Astr. J. 125, 1580-1597 (2003). ** ** Called: ** iauS2c spherical coordinates to unit vector ** iauLdsun light deflection due to Sun ** iauAb stellar aberration ** iauRxp product of r-matrix and p-vector ** iauC2s p-vector to spherical ** iauAnp normalize angle into range +/- pi ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double pco[3], pnat[3], ppr[3], pi[3], w; /* BCRS coordinate direction (unit vector). */ iauS2c(rc, dc, pco); /* Light deflection by the Sun, giving BCRS natural direction. */ iauLdsun(pco, astrom->eh, astrom->em, pnat); /* Aberration, giving GCRS proper direction. */ iauAb(pnat, astrom->v, astrom->em, astrom->bm1, ppr); /* Bias-precession-nutation, giving CIRS proper direction. */ iauRxp(astrom->bpn, ppr, pi); /* CIRS RA,Dec. */ iauC2s(pi, &w, di); *ri = iauAnp(w); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/atco13.c0000644000113000011300000003027112507252056014132 0ustar bellsbells#include "sofa.h" int iauAtco13(double rc, double dc, double pr, double pd, double px, double rv, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *aob, double *zob, double *hob, double *dob, double *rob, double *eo) /* ** - - - - - - - - - - ** i a u A t c o 1 3 ** - - - - - - - - - - ** ** ICRS RA,Dec to observed place. The caller supplies UTC, site ** coordinates, ambient air conditions and observing wavelength. ** ** SOFA models are used for the Earth ephemeris, bias-precession- ** nutation, Earth orientation and refraction. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rc,dc double ICRS right ascension at J2000.0 (radians, Note 1) ** pr double RA proper motion (radians/year; Note 2) ** pd double Dec proper motion (radians/year) ** px double parallax (arcsec) ** rv double radial velocity (km/s, +ve if receding) ** utc1 double UTC as a 2-part... ** utc2 double ...quasi Julian Date (Notes 3-4) ** dut1 double UT1-UTC (seconds, Note 5) ** elong double longitude (radians, east +ve, Note 6) ** phi double latitude (geodetic, radians, Note 6) ** hm double height above ellipsoid (m, geodetic, Notes 6,8) ** xp,yp double polar motion coordinates (radians, Note 7) ** phpa double pressure at the observer (hPa = mB, Note 8) ** tc double ambient temperature at the observer (deg C) ** rh double relative humidity at the observer (range 0-1) ** wl double wavelength (micrometers, Note 9) ** ** Returned: ** aob double* observed azimuth (radians: N=0,E=90) ** zob double* observed zenith distance (radians) ** hob double* observed hour angle (radians) ** dob double* observed declination (radians) ** rob double* observed right ascension (CIO-based, radians) ** eo double* equation of the origins (ERA-GST) ** ** Returned (function value): ** int status: +1 = dubious year (Note 4) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) Star data for an epoch other than J2000.0 (for example from the ** Hipparcos catalog, which has an epoch of J1991.25) will require ** a preliminary call to iauPmsafe before use. ** ** 2) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt. ** ** 3) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any ** convenient way between the two arguments, for example where utc1 ** is the Julian Day Number and utc2 is the fraction of a day. ** ** However, JD cannot unambiguously represent UTC during a leap ** second unless special measures are taken. The convention in the ** present function is that the JD day represents UTC days whether ** the length is 86399, 86400 or 86401 SI seconds. ** ** Applications should use the function iauDtf2d to convert from ** calendar date and time of day into 2-part quasi Julian Date, as ** it implements the leap-second-ambiguity convention just ** described. ** ** 4) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the ** future to be trusted. See iauDat for further details. ** ** 5) UT1-UTC is tabulated in IERS bulletins. It increases by exactly ** one second at the end of each positive UTC leap second, ** introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This ** practice is under review, and in the future UT1-UTC may grow ** essentially without limit. ** ** 6) The geographical coordinates are with respect to the WGS84 ** reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the ** longitude required by the present function is east-positive ** (i.e. right-handed), in accordance with geographical convention. ** ** 7) The polar motion xp,yp can be obtained from IERS bulletins. The ** values are the coordinates (in radians) of the Celestial ** Intermediate Pole with respect to the International Terrestrial ** Reference System (see IERS Conventions 2003), measured along the ** meridians 0 and 90 deg west respectively. For many ** applications, xp and yp can be set to zero. ** ** 8) If hm, the height above the ellipsoid of the observing station ** in meters, is not known but phpa, the pressure in hPa (=mB), ** is available, an adequate estimate of hm can be obtained from ** the expression ** ** hm = -29.3 * tsl * log ( phpa / 1013.25 ); ** ** where tsl is the approximate sea-level air temperature in K ** (See Astrophysical Quantities, C.W.Allen, 3rd edition, section ** 52). Similarly, if the pressure phpa is not known, it can be ** estimated from the height of the observing station, hm, as ** follows: ** ** phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) ); ** ** Note, however, that the refraction is nearly proportional to ** the pressure and that an accurate phpa value is important for ** precise work. ** ** 9) The argument wl specifies the observing wavelength in ** micrometers. The transition from optical to radio is assumed to ** occur at 100 micrometers (about 3000 GHz). ** ** 10) The accuracy of the result is limited by the corrections for ** refraction, which use a simple A*tan(z) + B*tan^3(z) model. ** Providing the meteorological parameters are known accurately and ** there are no gross local effects, the predicted observed ** coordinates should be within 0.05 arcsec (optical) or 1 arcsec ** (radio) for a zenith distance of less than 70 degrees, better ** than 30 arcsec (optical or radio) at 85 degrees and better ** than 20 arcmin (optical) or 30 arcmin (radio) at the horizon. ** ** Without refraction, the complementary functions iauAtco13 and ** iauAtoc13 are self-consistent to better than 1 microarcsecond ** all over the celestial sphere. With refraction included, ** consistency falls off at high zenith distances, but is still ** better than 0.05 arcsec at 85 degrees. ** ** 11) "Observed" Az,ZD means the position that would be seen by a ** perfect geodetically aligned theodolite. (Zenith distance is ** used rather than altitude in order to reflect the fact that no ** allowance is made for depression of the horizon.) This is ** related to the observed HA,Dec via the standard rotation, using ** the geodetic latitude (corrected for polar motion), while the ** observed HA and RA are related simply through the Earth rotation ** angle and the site longitude. "Observed" RA,Dec or HA,Dec thus ** means the position that would be seen by a perfect equatorial ** with its polar axis aligned to the Earth's axis of rotation. ** ** 12) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** Called: ** iauApco13 astrometry parameters, ICRS-observed, 2013 ** iauAtciq quick ICRS to CIRS ** iauAtioq quick ICRS to observed ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int j; iauASTROM astrom; double ri, di; /* Star-independent astrometry parameters. */ j = iauApco13(utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &astrom, eo); /* Abort if bad UTC. */ if ( j < 0 ) return j; /* Transform ICRS to CIRS. */ iauAtciq(rc, dc, pr, pd, px, rv, &astrom, &ri, &di); /* Transform CIRS to observed. */ iauAtioq(ri, di, &astrom, aob, zob, hob, dob, rob); /* Return OK/warning status. */ return j; /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/atic13.c0000644000113000011300000001735712507252056014136 0ustar bellsbells#include "sofa.h" void iauAtic13(double ri, double di, double date1, double date2, double *rc, double *dc, double *eo) /* ** - - - - - - - - - - ** i a u A t i c 1 3 ** - - - - - - - - - - ** ** Transform star RA,Dec from geocentric CIRS to ICRS astrometric. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** ri,di double CIRS geocentric RA,Dec (radians) ** date1 double TDB as a 2-part... ** date2 double ...Julian Date (Note 1) ** ** Returned: ** rc,dc double ICRS astrometric RA,Dec (radians) ** eo double equation of the origins (ERA-GST, Note 4) ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. For most ** applications of this function the choice will not be at all ** critical. ** ** TT can be used instead of TDB without any significant impact on ** accuracy. ** ** 2) Iterative techniques are used for the aberration and light ** deflection corrections so that the functions iauAtic13 (or ** iauAticq) and iauAtci13 (or iauAtciq) are accurate inverses; ** even at the edge of the Sun's disk the discrepancy is only about ** 1 nanoarcsecond. ** ** 3) The available accuracy is better than 1 milliarcsecond, limited ** mainly by the precession-nutation model that is used, namely ** IAU 2000A/2006. Very close to solar system bodies, additional ** errors of up to several milliarcseconds can occur because of ** unmodeled light deflection; however, the Sun's contribution is ** taken into account, to first order. The accuracy limitations of ** the SOFA function iauEpv00 (used to compute Earth position and ** velocity) can contribute aberration errors of up to ** 5 microarcseconds. Light deflection at the Sun's limb is ** uncertain at the 0.4 mas level. ** ** 4) Should the transformation to (equinox based) J2000.0 mean place ** be required rather than (CIO based) ICRS coordinates, subtract the ** equation of the origins from the returned right ascension: ** RA = RI - EO. (The iauAnp function can then be applied, as ** required, to keep the result in the conventional 0-2pi range.) ** ** Called: ** iauApci13 astrometry parameters, ICRS-CIRS, 2013 ** iauAticq quick CIRS to ICRS astrometric ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Star-independent astrometry parameters */ iauASTROM astrom; /* Star-independent astrometry parameters. */ iauApci13(date1, date2, &astrom, eo); /* CIRS to ICRS astrometric. */ iauAticq(ri, di, &astrom, rc, dc); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/aticq.c0000644000113000011300000002103712507252056014141 0ustar bellsbells#include "sofa.h" void iauAticq(double ri, double di, iauASTROM *astrom, double *rc, double *dc) /* ** - - - - - - - - - ** i a u A t i c q ** - - - - - - - - - ** ** Quick CIRS RA,Dec to ICRS astrometric place, given the star- ** independent astrometry parameters. ** ** Use of this function is appropriate when efficiency is important and ** where many star positions are all to be transformed for one date. ** The star-independent astrometry parameters can be obtained by ** calling one of the functions iauApci[13], iauApcg[13], iauApco[13] ** or iauApcs[13]. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** ri,di double CIRS RA,Dec (radians) ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** ** Returned: ** rc,dc double ICRS astrometric RA,Dec (radians) ** ** Notes: ** ** 1) Only the Sun is taken into account in the light deflection ** correction. ** ** 2) Iterative techniques are used for the aberration and light ** deflection corrections so that the functions iauAtic13 (or ** iauAticq) and iauAtci13 (or iauAtciq) are accurate inverses; ** even at the edge of the Sun's disk the discrepancy is only about ** 1 nanoarcsecond. ** ** Called: ** iauS2c spherical coordinates to unit vector ** iauTrxp product of transpose of r-matrix and p-vector ** iauZp zero p-vector ** iauAb stellar aberration ** iauLdsun light deflection by the Sun ** iauC2s p-vector to spherical ** iauAnp normalize angle into range +/- pi ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int j, i; double pi[3], ppr[3], pnat[3], pco[3], w, d[3], before[3], r2, r, after[3]; /* CIRS RA,Dec to Cartesian. */ iauS2c(ri, di, pi); /* Bias-precession-nutation, giving GCRS proper direction. */ iauTrxp(astrom->bpn, pi, ppr); /* Aberration, giving GCRS natural direction. */ iauZp(d); for (j = 0; j < 2; j++) { r2 = 0.0; for (i = 0; i < 3; i++) { w = ppr[i] - d[i]; before[i] = w; r2 += w*w; } r = sqrt(r2); for (i = 0; i < 3; i++) { before[i] /= r; } iauAb(before, astrom->v, astrom->em, astrom->bm1, after); r2 = 0.0; for (i = 0; i < 3; i++) { d[i] = after[i] - before[i]; w = ppr[i] - d[i]; pnat[i] = w; r2 += w*w; } r = sqrt(r2); for (i = 0; i < 3; i++) { pnat[i] /= r; } } /* Light deflection by the Sun, giving BCRS coordinate direction. */ iauZp(d); for (j = 0; j < 5; j++) { r2 = 0.0; for (i = 0; i < 3; i++) { w = pnat[i] - d[i]; before[i] = w; r2 += w*w; } r = sqrt(r2); for (i = 0; i < 3; i++) { before[i] /= r; } iauLdsun(before, astrom->eh, astrom->em, after); r2 = 0.0; for (i = 0; i < 3; i++) { d[i] = after[i] - before[i]; w = pnat[i] - d[i]; pco[i] = w; r2 += w*w; } r = sqrt(r2); for (i = 0; i < 3; i++) { pco[i] /= r; } } /* ICRS astrometric RA,Dec. */ iauC2s(pco, &w, dc); *rc = iauAnp(w); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/aticqn.c0000644000113000011300000002460412507252056014322 0ustar bellsbells#include "sofa.h" void iauAticqn(double ri, double di, iauASTROM *astrom, int n, iauLDBODY b[], double *rc, double *dc) /* ** - - - - - - - - - ** i a u A t i c q n ** - - - - - - - - - ** ** Quick CIRS to ICRS astrometric place transformation, given the star- ** independent astrometry parameters plus a list of light-deflecting ** bodies. ** ** Use of this function is appropriate when efficiency is important and ** where many star positions are all to be transformed for one date. ** The star-independent astrometry parameters can be obtained by ** calling one of the functions iauApci[13], iauApcg[13], iauApco[13] ** or iauApcs[13]. * * If the only light-deflecting body to be taken into account is the * Sun, the iauAticq function can be used instead. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** ri,di double CIRS RA,Dec (radians) ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** n int number of bodies (Note 3) ** b iauLDBODY[n] data for each of the n bodies (Notes 3,4): ** bm double mass of the body (solar masses, Note 5) ** dl double deflection limiter (Note 6) ** pv [2][3] barycentric PV of the body (au, au/day) ** ** Returned: ** rc,dc double ICRS astrometric RA,Dec (radians) ** ** Notes: ** ** 1) Iterative techniques are used for the aberration and light ** deflection corrections so that the functions iauAticqn and ** iauAtciqn are accurate inverses; even at the edge of the Sun's ** disk the discrepancy is only about 1 nanoarcsecond. ** ** 2) If the only light-deflecting body to be taken into account is the ** Sun, the iauAticq function can be used instead. ** ** 3) The struct b contains n entries, one for each body to be ** considered. If n = 0, no gravitational light deflection will be ** applied, not even for the Sun. ** ** 4) The struct b should include an entry for the Sun as well as for ** any planet or other body to be taken into account. The entries ** should be in the order in which the light passes the body. ** ** 5) In the entry in the b struct for body i, the mass parameter ** b[i].bm can, as required, be adjusted in order to allow for such ** effects as quadrupole field. ** ** 6) The deflection limiter parameter b[i].dl is phi^2/2, where phi is ** the angular separation (in radians) between star and body at ** which limiting is applied. As phi shrinks below the chosen ** threshold, the deflection is artificially reduced, reaching zero ** for phi = 0. Example values suitable for a terrestrial ** observer, together with masses, are as follows: ** ** body i b[i].bm b[i].dl ** ** Sun 1.0 6e-6 ** Jupiter 0.00095435 3e-9 ** Saturn 0.00028574 3e-10 ** ** 7) For efficiency, validation of the contents of the b array is ** omitted. The supplied masses must be greater than zero, the ** position and velocity vectors must be right, and the deflection ** limiter greater than zero. ** ** Called: ** iauS2c spherical coordinates to unit vector ** iauTrxp product of transpose of r-matrix and p-vector ** iauZp zero p-vector ** iauAb stellar aberration ** iauLdn light deflection by n bodies ** iauC2s p-vector to spherical ** iauAnp normalize angle into range +/- pi ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int j, i; double pi[3], ppr[3], pnat[3], pco[3], w, d[3], before[3], r2, r, after[3]; /* CIRS RA,Dec to Cartesian. */ iauS2c(ri, di, pi); /* Bias-precession-nutation, giving GCRS proper direction. */ iauTrxp(astrom->bpn, pi, ppr); /* Aberration, giving GCRS natural direction. */ iauZp(d); for (j = 0; j < 2; j++) { r2 = 0.0; for (i = 0; i < 3; i++) { w = ppr[i] - d[i]; before[i] = w; r2 += w*w; } r = sqrt(r2); for (i = 0; i < 3; i++) { before[i] /= r; } iauAb(before, astrom->v, astrom->em, astrom->bm1, after); r2 = 0.0; for (i = 0; i < 3; i++) { d[i] = after[i] - before[i]; w = ppr[i] - d[i]; pnat[i] = w; r2 += w*w; } r = sqrt(r2); for (i = 0; i < 3; i++) { pnat[i] /= r; } } /* Light deflection, giving BCRS coordinate direction. */ iauZp(d); for (j = 0; j < 5; j++) { r2 = 0.0; for (i = 0; i < 3; i++) { w = pnat[i] - d[i]; before[i] = w; r2 += w*w; } r = sqrt(r2); for (i = 0; i < 3; i++) { before[i] /= r; } iauLdn(n, b, astrom->eb, before, after); r2 = 0.0; for (i = 0; i < 3; i++) { d[i] = after[i] - before[i]; w = pnat[i] - d[i]; pco[i] = w; r2 += w*w; } r = sqrt(r2); for (i = 0; i < 3; i++) { pco[i] /= r; } } /* ICRS astrometric RA,Dec. */ iauC2s(pco, &w, dc); *rc = iauAnp(w); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/atio13.c0000644000113000011300000002633412507252056014145 0ustar bellsbells#include "sofa.h" int iauAtio13(double ri, double di, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *aob, double *zob, double *hob, double *dob, double *rob) /* ** - - - - - - - - - - ** i a u A t i o 1 3 ** - - - - - - - - - - ** ** CIRS RA,Dec to observed place. The caller supplies UTC, site ** coordinates, ambient air conditions and observing wavelength. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** ri double CIRS right ascension (CIO-based, radians) ** di double CIRS declination (radians) ** utc1 double UTC as a 2-part... ** utc2 double ...quasi Julian Date (Notes 1,2) ** dut1 double UT1-UTC (seconds, Note 3) ** elong double longitude (radians, east +ve, Note 4) ** phi double geodetic latitude (radians, Note 4) ** hm double height above ellipsoid (m, geodetic Notes 4,6) ** xp,yp double polar motion coordinates (radians, Note 5) ** phpa double pressure at the observer (hPa = mB, Note 6) ** tc double ambient temperature at the observer (deg C) ** rh double relative humidity at the observer (range 0-1) ** wl double wavelength (micrometers, Note 7) ** ** Returned: ** aob double* observed azimuth (radians: N=0,E=90) ** zob double* observed zenith distance (radians) ** hob double* observed hour angle (radians) ** dob double* observed declination (radians) ** rob double* observed right ascension (CIO-based, radians) ** ** Returned (function value): ** int status: +1 = dubious year (Note 2) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any ** convenient way between the two arguments, for example where utc1 ** is the Julian Day Number and utc2 is the fraction of a day. ** ** However, JD cannot unambiguously represent UTC during a leap ** second unless special measures are taken. The convention in the ** present function is that the JD day represents UTC days whether ** the length is 86399, 86400 or 86401 SI seconds. ** ** Applications should use the function iauDtf2d to convert from ** calendar date and time of day into 2-part quasi Julian Date, as ** it implements the leap-second-ambiguity convention just ** described. ** ** 2) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the ** future to be trusted. See iauDat for further details. ** ** 3) UT1-UTC is tabulated in IERS bulletins. It increases by exactly ** one second at the end of each positive UTC leap second, ** introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This ** practice is under review, and in the future UT1-UTC may grow ** essentially without limit. ** ** 4) The geographical coordinates are with respect to the WGS84 ** reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the ** longitude required by the present function is east-positive ** (i.e. right-handed), in accordance with geographical convention. ** ** 5) The polar motion xp,yp can be obtained from IERS bulletins. The ** values are the coordinates (in radians) of the Celestial ** Intermediate Pole with respect to the International Terrestrial ** Reference System (see IERS Conventions 2003), measured along the ** meridians 0 and 90 deg west respectively. For many ** applications, xp and yp can be set to zero. ** ** 6) If hm, the height above the ellipsoid of the observing station ** in meters, is not known but phpa, the pressure in hPa (=mB), is ** available, an adequate estimate of hm can be obtained from the ** expression ** ** hm = -29.3 * tsl * log ( phpa / 1013.25 ); ** ** where tsl is the approximate sea-level air temperature in K ** (See Astrophysical Quantities, C.W.Allen, 3rd edition, section ** 52). Similarly, if the pressure phpa is not known, it can be ** estimated from the height of the observing station, hm, as ** follows: ** ** phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) ); ** ** Note, however, that the refraction is nearly proportional to ** the pressure and that an accurate phpa value is important for ** precise work. ** ** 7) The argument wl specifies the observing wavelength in ** micrometers. The transition from optical to radio is assumed to ** occur at 100 micrometers (about 3000 GHz). ** ** 8) "Observed" Az,ZD means the position that would be seen by a ** perfect geodetically aligned theodolite. (Zenith distance is ** used rather than altitude in order to reflect the fact that no ** allowance is made for depression of the horizon.) This is ** related to the observed HA,Dec via the standard rotation, using ** the geodetic latitude (corrected for polar motion), while the ** observed HA and RA are related simply through the Earth rotation ** angle and the site longitude. "Observed" RA,Dec or HA,Dec thus ** means the position that would be seen by a perfect equatorial ** with its polar axis aligned to the Earth's axis of rotation. ** ** 9) The accuracy of the result is limited by the corrections for ** refraction, which use a simple A*tan(z) + B*tan^3(z) model. ** Providing the meteorological parameters are known accurately and ** there are no gross local effects, the predicted astrometric ** coordinates should be within 0.05 arcsec (optical) or 1 arcsec ** (radio) for a zenith distance of less than 70 degrees, better ** than 30 arcsec (optical or radio) at 85 degrees and better ** than 20 arcmin (optical) or 30 arcmin (radio) at the horizon. ** ** 10) The complementary functions iauAtio13 and iauAtoi13 are self- ** consistent to better than 1 microarcsecond all over the ** celestial sphere. ** ** 11) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** Called: ** iauApio13 astrometry parameters, CIRS-observed, 2013 ** iauAtioq quick ICRS to observed ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int j; iauASTROM astrom; /* Star-independent astrometry parameters for CIRS->observed. */ j = iauApio13(utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &astrom); /* Abort if bad UTC. */ if ( j < 0 ) return j; /* Transform CIRS to observed. */ iauAtioq(ri, di, &astrom, aob, zob, hob, dob, rob); /* Return OK/warning status. */ return j; /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/atioq.c0000644000113000011300000002631212507252056014156 0ustar bellsbells#include "sofa.h" void iauAtioq(double ri, double di, iauASTROM *astrom, double *aob, double *zob, double *hob, double *dob, double *rob) /* ** - - - - - - - - - ** i a u A t i o q ** - - - - - - - - - ** ** Quick CIRS to observed place transformation. ** ** Use of this function is appropriate when efficiency is important and ** where many star positions are all to be transformed for one date. ** The star-independent astrometry parameters can be obtained by ** calling iauApio[13] or iauApco[13]. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** ri double CIRS right ascension ** di double CIRS declination ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** ** Returned: ** aob double* observed azimuth (radians: N=0,E=90) ** zob double* observed zenith distance (radians) ** hob double* observed hour angle (radians) ** dob double* observed declination (radians) ** rob double* observed right ascension (CIO-based, radians) ** ** Notes: ** ** 1) This function returns zenith distance rather than altitude in ** order to reflect the fact that no allowance is made for ** depression of the horizon. ** ** 2) The accuracy of the result is limited by the corrections for ** refraction, which use a simple A*tan(z) + B*tan^3(z) model. ** Providing the meteorological parameters are known accurately and ** there are no gross local effects, the predicted observed ** coordinates should be within 0.05 arcsec (optical) or 1 arcsec ** (radio) for a zenith distance of less than 70 degrees, better ** than 30 arcsec (optical or radio) at 85 degrees and better ** than 20 arcmin (optical) or 30 arcmin (radio) at the horizon. ** ** Without refraction, the complementary functions iauAtioq and ** iauAtoiq are self-consistent to better than 1 microarcsecond all ** over the celestial sphere. With refraction included, consistency ** falls off at high zenith distances, but is still better than ** 0.05 arcsec at 85 degrees. ** ** 3) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** 4) The CIRS RA,Dec is obtained from a star catalog mean place by ** allowing for space motion, parallax, the Sun's gravitational lens ** effect, annual aberration and precession-nutation. For star ** positions in the ICRS, these effects can be applied by means of ** the iauAtci13 (etc.) functions. Starting from classical "mean ** place" systems, additional transformations will be needed first. ** ** 5) "Observed" Az,El means the position that would be seen by a ** perfect geodetically aligned theodolite. This is obtained from ** the CIRS RA,Dec by allowing for Earth orientation and diurnal ** aberration, rotating from equator to horizon coordinates, and ** then adjusting for refraction. The HA,Dec is obtained by ** rotating back into equatorial coordinates, and is the position ** that would be seen by a perfect equatorial with its polar axis ** aligned to the Earth's axis of rotation. Finally, the RA is ** obtained by subtracting the HA from the local ERA. ** ** 6) The star-independent CIRS-to-observed-place parameters in ASTROM ** may be computed with iauApio[13] or iauApco[13]. If nothing has ** changed significantly except the time, iauAper[13] may be used to ** perform the requisite adjustment to the astrom structure. ** ** Called: ** iauS2c spherical coordinates to unit vector ** iauC2s p-vector to spherical ** iauAnp normalize angle into range 0 to 2pi ** ** This revision: 2013 December 5 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Minimum cos(alt) and sin(alt) for refraction purposes */ const double CELMIN = 1e-6; const double SELMIN = 0.05; double v[3], x, y, z, xhd, yhd, zhd, f, xhdt, yhdt, zhdt, xaet, yaet, zaet, azobs, r, tz, w, del, cosdel, xaeo, yaeo, zaeo, zdobs, hmobs, dcobs, raobs; /*--------------------------------------------------------------------*/ /* CIRS RA,Dec to Cartesian -HA,Dec. */ iauS2c(ri-astrom->eral, di, v); x = v[0]; y = v[1]; z = v[2]; /* Polar motion. */ xhd = x + astrom->xpl*z; yhd = y - astrom->ypl*z; zhd = z - astrom->xpl*x + astrom->ypl*y; /* Diurnal aberration. */ f = ( 1.0 - astrom->diurab*yhd ); xhdt = f * xhd; yhdt = f * ( yhd + astrom->diurab ); zhdt = f * zhd; /* Cartesian -HA,Dec to Cartesian Az,El (S=0,E=90). */ xaet = astrom->sphi*xhdt - astrom->cphi*zhdt; yaet = yhdt; zaet = astrom->cphi*xhdt + astrom->sphi*zhdt; /* Azimuth (N=0,E=90). */ azobs = ( xaet != 0.0 || yaet != 0.0 ) ? atan2(yaet,-xaet) : 0.0; /* ---------- */ /* Refraction */ /* ---------- */ /* Cosine and sine of altitude, with precautions. */ r = sqrt(xaet*xaet + yaet*yaet); r = r > CELMIN ? r : CELMIN; z = zaet > SELMIN ? zaet : SELMIN; /* A*tan(z)+B*tan^3(z) model, with Newton-Raphson correction. */ tz = r/z; w = astrom->refb*tz*tz; del = ( astrom->refa + w ) * tz / ( 1.0 + ( astrom->refa + 3.0*w ) / ( z*z ) ); /* Apply the change, giving observed vector. */ cosdel = 1.0 - del*del/2.0; f = cosdel - del*z/r; xaeo = xaet*f; yaeo = yaet*f; zaeo = cosdel*zaet + del*r; /* Observed ZD. */ zdobs = atan2(sqrt(xaeo*xaeo+yaeo*yaeo), zaeo); /* Az/El vector to HA,Dec vector (both right-handed). */ v[0] = astrom->sphi*xaeo + astrom->cphi*zaeo; v[1] = yaeo; v[2] = - astrom->cphi*xaeo + astrom->sphi*zaeo; /* To spherical -HA,Dec. */ iauC2s ( v, &hmobs, &dcobs ); /* Right ascension (with respect to CIO). */ raobs = astrom->eral + hmobs; /* Return the results. */ *aob = iauAnp(azobs); *zob = zdobs; *hob = -hmobs; *dob = dcobs; *rob = iauAnp(raobs); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/atoc13.c0000644000113000011300000002734312507252056014140 0ustar bellsbells#include "sofa.h" int iauAtoc13(const char *type, double ob1, double ob2, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *rc, double *dc) /* ** - - - - - - - - - - ** i a u A t o c 1 3 ** - - - - - - - - - - ** ** Observed place at a groundbased site to to ICRS astrometric RA,Dec. ** The caller supplies UTC, site coordinates, ambient air conditions ** and observing wavelength. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** type char[] type of coordinates - "R", "H" or "A" (Notes 1,2) ** ob1 double observed Az, HA or RA (radians; Az is N=0,E=90) ** ob2 double observed ZD or Dec (radians) ** utc1 double UTC as a 2-part... ** utc2 double ...quasi Julian Date (Notes 3,4) ** dut1 double UT1-UTC (seconds, Note 5) ** elong double longitude (radians, east +ve, Note 6) ** phi double geodetic latitude (radians, Note 6) ** hm double height above ellipsoid (m, geodetic Notes 6,8) ** xp,yp double polar motion coordinates (radians, Note 7) ** phpa double pressure at the observer (hPa = mB, Note 8) ** tc double ambient temperature at the observer (deg C) ** rh double relative humidity at the observer (range 0-1) ** wl double wavelength (micrometers, Note 9) ** ** Returned: ** rc,dc double ICRS astrometric RA,Dec (radians) ** ** Returned (function value): ** int status: +1 = dubious year (Note 4) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) "Observed" Az,ZD means the position that would be seen by a ** perfect geodetically aligned theodolite. (Zenith distance is ** used rather than altitude in order to reflect the fact that no ** allowance is made for depression of the horizon.) This is ** related to the observed HA,Dec via the standard rotation, using ** the geodetic latitude (corrected for polar motion), while the ** observed HA and RA are related simply through the Earth rotation ** angle and the site longitude. "Observed" RA,Dec or HA,Dec thus ** means the position that would be seen by a perfect equatorial ** with its polar axis aligned to the Earth's axis of rotation. ** ** 2) Only the first character of the type argument is significant. ** "R" or "r" indicates that ob1 and ob2 are the observed right ** ascension and declination; "H" or "h" indicates that they are ** hour angle (west +ve) and declination; anything else ("A" or ** "a" is recommended) indicates that ob1 and ob2 are azimuth ** (north zero, east 90 deg) and zenith distance. ** ** 3) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any ** convenient way between the two arguments, for example where utc1 ** is the Julian Day Number and utc2 is the fraction of a day. ** ** However, JD cannot unambiguously represent UTC during a leap ** second unless special measures are taken. The convention in the ** present function is that the JD day represents UTC days whether ** the length is 86399, 86400 or 86401 SI seconds. ** ** Applications should use the function iauDtf2d to convert from ** calendar date and time of day into 2-part quasi Julian Date, as ** it implements the leap-second-ambiguity convention just ** described. ** ** 4) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the ** future to be trusted. See iauDat for further details. ** ** 5) UT1-UTC is tabulated in IERS bulletins. It increases by exactly ** one second at the end of each positive UTC leap second, ** introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This ** practice is under review, and in the future UT1-UTC may grow ** essentially without limit. ** ** 6) The geographical coordinates are with respect to the WGS84 ** reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the ** longitude required by the present function is east-positive ** (i.e. right-handed), in accordance with geographical convention. ** ** 7) The polar motion xp,yp can be obtained from IERS bulletins. The ** values are the coordinates (in radians) of the Celestial ** Intermediate Pole with respect to the International Terrestrial ** Reference System (see IERS Conventions 2003), measured along the ** meridians 0 and 90 deg west respectively. For many ** applications, xp and yp can be set to zero. ** ** 8) If hm, the height above the ellipsoid of the observing station ** in meters, is not known but phpa, the pressure in hPa (=mB), is ** available, an adequate estimate of hm can be obtained from the ** expression ** ** hm = -29.3 * tsl * log ( phpa / 1013.25 ); ** ** where tsl is the approximate sea-level air temperature in K ** (See Astrophysical Quantities, C.W.Allen, 3rd edition, section ** 52). Similarly, if the pressure phpa is not known, it can be ** estimated from the height of the observing station, hm, as ** follows: ** ** phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) ); ** ** Note, however, that the refraction is nearly proportional to ** the pressure and that an accurate phpa value is important for ** precise work. ** ** 9) The argument wl specifies the observing wavelength in ** micrometers. The transition from optical to radio is assumed to ** occur at 100 micrometers (about 3000 GHz). ** ** 10) The accuracy of the result is limited by the corrections for ** refraction, which use a simple A*tan(z) + B*tan^3(z) model. ** Providing the meteorological parameters are known accurately and ** there are no gross local effects, the predicted astrometric ** coordinates should be within 0.05 arcsec (optical) or 1 arcsec ** (radio) for a zenith distance of less than 70 degrees, better ** than 30 arcsec (optical or radio) at 85 degrees and better ** than 20 arcmin (optical) or 30 arcmin (radio) at the horizon. ** ** Without refraction, the complementary functions iauAtco13 and ** iauAtoc13 are self-consistent to better than 1 microarcsecond ** all over the celestial sphere. With refraction included, ** consistency falls off at high zenith distances, but is still ** better than 0.05 arcsec at 85 degrees. ** ** 11) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** Called: ** iauApco13 astrometry parameters, ICRS-observed ** iauAtoiq quick observed to CIRS ** iauAticq quick CIRS to ICRS ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int j; iauASTROM astrom; double eo, ri, di; /* Star-independent astrometry parameters. */ j = iauApco13(utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &astrom, &eo); /* Abort if bad UTC. */ if ( j < 0 ) return j; /* Transform observed to CIRS. */ iauAtoiq(type, ob1, ob2, &astrom, &ri, &di); /* Transform CIRS to ICRS. */ iauAticq(ri, di, &astrom, rc, dc); /* Return OK/warning status. */ return j; /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/atoi13.c0000644000113000011300000002717612507252056014152 0ustar bellsbells#include "sofa.h" int iauAtoi13(const char *type, double ob1, double ob2, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *ri, double *di) /* ** - - - - - - - - - - ** i a u A t o i 1 3 ** - - - - - - - - - - ** ** Observed place to CIRS. The caller supplies UTC, site coordinates, ** ambient air conditions and observing wavelength. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** type char[] type of coordinates - "R", "H" or "A" (Notes 1,2) ** ob1 double observed Az, HA or RA (radians; Az is N=0,E=90) ** ob2 double observed ZD or Dec (radians) ** utc1 double UTC as a 2-part... ** utc2 double ...quasi Julian Date (Notes 3,4) ** dut1 double UT1-UTC (seconds, Note 5) ** elong double longitude (radians, east +ve, Note 6) ** phi double geodetic latitude (radians, Note 6) ** hm double height above the ellipsoid (meters, Notes 6,8) ** xp,yp double polar motion coordinates (radians, Note 7) ** phpa double pressure at the observer (hPa = mB, Note 8) ** tc double ambient temperature at the observer (deg C) ** rh double relative humidity at the observer (range 0-1) ** wl double wavelength (micrometers, Note 9) ** ** Returned: ** ri double* CIRS right ascension (CIO-based, radians) ** di double* CIRS declination (radians) ** ** Returned (function value): ** int status: +1 = dubious year (Note 2) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) "Observed" Az,ZD means the position that would be seen by a ** perfect geodetically aligned theodolite. (Zenith distance is ** used rather than altitude in order to reflect the fact that no ** allowance is made for depression of the horizon.) This is ** related to the observed HA,Dec via the standard rotation, using ** the geodetic latitude (corrected for polar motion), while the ** observed HA and RA are related simply through the Earth rotation ** angle and the site longitude. "Observed" RA,Dec or HA,Dec thus ** means the position that would be seen by a perfect equatorial ** with its polar axis aligned to the Earth's axis of rotation. ** ** 2) Only the first character of the type argument is significant. ** "R" or "r" indicates that ob1 and ob2 are the observed right ** ascension and declination; "H" or "h" indicates that they are ** hour angle (west +ve) and declination; anything else ("A" or ** "a" is recommended) indicates that ob1 and ob2 are azimuth ** (north zero, east 90 deg) and zenith distance. ** ** 3) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any ** convenient way between the two arguments, for example where utc1 ** is the Julian Day Number and utc2 is the fraction of a day. ** ** However, JD cannot unambiguously represent UTC during a leap ** second unless special measures are taken. The convention in the ** present function is that the JD day represents UTC days whether ** the length is 86399, 86400 or 86401 SI seconds. ** ** Applications should use the function iauDtf2d to convert from ** calendar date and time of day into 2-part quasi Julian Date, as ** it implements the leap-second-ambiguity convention just ** described. ** ** 4) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the ** future to be trusted. See iauDat for further details. ** ** 5) UT1-UTC is tabulated in IERS bulletins. It increases by exactly ** one second at the end of each positive UTC leap second, ** introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This ** practice is under review, and in the future UT1-UTC may grow ** essentially without limit. ** ** 6) The geographical coordinates are with respect to the WGS84 ** reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the ** longitude required by the present function is east-positive ** (i.e. right-handed), in accordance with geographical convention. ** ** 7) The polar motion xp,yp can be obtained from IERS bulletins. The ** values are the coordinates (in radians) of the Celestial ** Intermediate Pole with respect to the International Terrestrial ** Reference System (see IERS Conventions 2003), measured along the ** meridians 0 and 90 deg west respectively. For many ** applications, xp and yp can be set to zero. ** ** 8) If hm, the height above the ellipsoid of the observing station ** in meters, is not known but phpa, the pressure in hPa (=mB), is ** available, an adequate estimate of hm can be obtained from the ** expression ** ** hm = -29.3 * tsl * log ( phpa / 1013.25 ); ** ** where tsl is the approximate sea-level air temperature in K ** (See Astrophysical Quantities, C.W.Allen, 3rd edition, section ** 52). Similarly, if the pressure phpa is not known, it can be ** estimated from the height of the observing station, hm, as ** follows: ** ** phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) ); ** ** Note, however, that the refraction is nearly proportional to ** the pressure and that an accurate phpa value is important for ** precise work. ** ** 9) The argument wl specifies the observing wavelength in ** micrometers. The transition from optical to radio is assumed to ** occur at 100 micrometers (about 3000 GHz). ** ** 10) The accuracy of the result is limited by the corrections for ** refraction, which use a simple A*tan(z) + B*tan^3(z) model. ** Providing the meteorological parameters are known accurately and ** there are no gross local effects, the predicted astrometric ** coordinates should be within 0.05 arcsec (optical) or 1 arcsec ** (radio) for a zenith distance of less than 70 degrees, better ** than 30 arcsec (optical or radio) at 85 degrees and better ** than 20 arcmin (optical) or 30 arcmin (radio) at the horizon. ** ** Without refraction, the complementary functions iauAtio13 and ** iauAtoi13 are self-consistent to better than 1 microarcsecond ** all over the celestial sphere. With refraction included, ** consistency falls off at high zenith distances, but is still ** better than 0.05 arcsec at 85 degrees. ** ** 12) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** Called: ** iauApio13 astrometry parameters, CIRS-observed, 2013 ** iauAtoiq quick observed to CIRS ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int j; iauASTROM astrom; /* Star-independent astrometry parameters for CIRS->observed. */ j = iauApio13(utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &astrom); /* Abort if bad UTC. */ if ( j < 0 ) return j; /* Transform observed to CIRS. */ iauAtoiq(type, ob1, ob2, &astrom, ri, di); /* Return OK/warning status. */ return j; /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/atoiq.c0000644000113000011300000002555312507252056014164 0ustar bellsbells#include "sofa.h" void iauAtoiq(const char *type, double ob1, double ob2, iauASTROM *astrom, double *ri, double *di) /* ** - - - - - - - - - ** i a u A t o i q ** - - - - - - - - - ** ** Quick observed place to CIRS, given the star-independent astrometry ** parameters. ** ** Use of this function is appropriate when efficiency is important and ** where many star positions are all to be transformed for one date. ** The star-independent astrometry parameters can be obtained by ** calling iauApio[13] or iauApco[13]. ** ** Status: support function. ** ** Given: ** type char[] type of coordinates: "R", "H" or "A" (Note 1) ** ob1 double observed Az, HA or RA (radians; Az is N=0,E=90) ** ob2 double observed ZD or Dec (radians) ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** ** Returned: ** ri double* CIRS right ascension (CIO-based, radians) ** di double* CIRS declination (radians) ** ** Notes: ** ** 1) "Observed" Az,El means the position that would be seen by a ** perfect geodetically aligned theodolite. This is related to ** the observed HA,Dec via the standard rotation, using the geodetic ** latitude (corrected for polar motion), while the observed HA and ** RA are related simply through the Earth rotation angle and the ** site longitude. "Observed" RA,Dec or HA,Dec thus means the ** position that would be seen by a perfect equatorial with its ** polar axis aligned to the Earth's axis of rotation. By removing ** from the observed place the effects of atmospheric refraction and ** diurnal aberration, the CIRS RA,Dec is obtained. ** ** 2) Only the first character of the type argument is significant. ** "R" or "r" indicates that ob1 and ob2 are the observed right ** ascension and declination; "H" or "h" indicates that they are ** hour angle (west +ve) and declination; anything else ("A" or ** "a" is recommended) indicates that ob1 and ob2 are azimuth (north ** zero, east 90 deg) and zenith distance. (Zenith distance is used ** rather than altitude in order to reflect the fact that no ** allowance is made for depression of the horizon.) ** ** 3) The accuracy of the result is limited by the corrections for ** refraction, which use a simple A*tan(z) + B*tan^3(z) model. ** Providing the meteorological parameters are known accurately and ** there are no gross local effects, the predicted observed ** coordinates should be within 0.05 arcsec (optical) or 1 arcsec ** (radio) for a zenith distance of less than 70 degrees, better ** than 30 arcsec (optical or radio) at 85 degrees and better than ** 20 arcmin (optical) or 30 arcmin (radio) at the horizon. ** ** Without refraction, the complementary functions iauAtioq and ** iauAtoiq are self-consistent to better than 1 microarcsecond all ** over the celestial sphere. With refraction included, consistency ** falls off at high zenith distances, but is still better than ** 0.05 arcsec at 85 degrees. ** ** 4) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** Called: ** iauS2c spherical coordinates to unit vector ** iauC2s p-vector to spherical ** iauAnp normalize angle into range 0 to 2pi ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int c; double c1, c2, sphi, cphi, ce, xaeo, yaeo, zaeo, v[3], xmhdo, ymhdo, zmhdo, az, sz, zdo, refa, refb, tz, dref, zdt, xaet, yaet, zaet, xmhda, ymhda, zmhda, f, xhd, yhd, zhd, xpl, ypl, w, hma; /* Coordinate type. */ c = (int) type[0]; /* Coordinates. */ c1 = ob1; c2 = ob2; /* Sin, cos of latitude. */ sphi = astrom->sphi; cphi = astrom->cphi; /* Standardize coordinate type. */ if ( c == 'r' || c == 'R' ) { c = 'R'; } else if ( c == 'h' || c == 'H' ) { c = 'H'; } else { c = 'A'; } /* If Az,ZD, convert to Cartesian (S=0,E=90). */ if ( c == 'A' ) { ce = sin(c2); xaeo = - cos(c1) * ce; yaeo = sin(c1) * ce; zaeo = cos(c2); } else { /* If RA,Dec, convert to HA,Dec. */ if ( c == 'R' ) c1 = astrom->eral - c1; /* To Cartesian -HA,Dec. */ iauS2c ( -c1, c2, v ); xmhdo = v[0]; ymhdo = v[1]; zmhdo = v[2]; /* To Cartesian Az,El (S=0,E=90). */ xaeo = sphi*xmhdo - cphi*zmhdo; yaeo = ymhdo; zaeo = cphi*xmhdo + sphi*zmhdo; } /* Azimuth (S=0,E=90). */ az = ( xaeo != 0.0 || yaeo != 0.0 ) ? atan2(yaeo,xaeo) : 0.0; /* Sine of observed ZD, and observed ZD. */ sz = sqrt ( xaeo*xaeo + yaeo*yaeo ); zdo = atan2 ( sz, zaeo ); /* ** Refraction ** ---------- */ /* Fast algorithm using two constant model. */ refa = astrom->refa; refb = astrom->refb; tz = sz / zaeo; dref = ( refa + refb*tz*tz ) * tz; zdt = zdo + dref; /* To Cartesian Az,ZD. */ ce = sin(zdt); xaet = cos(az) * ce; yaet = sin(az) * ce; zaet = cos(zdt); /* Cartesian Az,ZD to Cartesian -HA,Dec. */ xmhda = sphi*xaet + cphi*zaet; ymhda = yaet; zmhda = - cphi*xaet + sphi*zaet; /* Diurnal aberration. */ f = ( 1.0 + astrom->diurab*ymhda ); xhd = f * xmhda; yhd = f * ( ymhda - astrom->diurab ); zhd = f * zmhda; /* Polar motion. */ xpl = astrom->xpl; ypl = astrom->ypl; w = xpl*xhd - ypl*yhd + zhd; v[0] = xhd - xpl*w; v[1] = yhd + ypl*w; v[2] = w - ( xpl*xpl + ypl*ypl ) * zhd; /* To spherical -HA,Dec. */ iauC2s(v, &hma, di); /* Right ascension. */ *ri = iauAnp(astrom->eral + hma); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/bi00.c0000644000113000011300000001475712507252056013605 0ustar bellsbells#include "sofa.h" void iauBi00(double *dpsibi, double *depsbi, double *dra) /* ** - - - - - - - - ** i a u B i 0 0 ** - - - - - - - - ** ** Frame bias components of IAU 2000 precession-nutation models (part ** of MHB2000 with additions). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Returned: ** dpsibi,depsbi double longitude and obliquity corrections ** dra double the ICRS RA of the J2000.0 mean equinox ** ** Notes: ** ** 1) The frame bias corrections in longitude and obliquity (radians) ** are required in order to correct for the offset between the GCRS ** pole and the mean J2000.0 pole. They define, with respect to the ** GCRS frame, a J2000.0 mean pole that is consistent with the rest ** of the IAU 2000A precession-nutation model. ** ** 2) In addition to the displacement of the pole, the complete ** description of the frame bias requires also an offset in right ** ascension. This is not part of the IAU 2000A model, and is from ** Chapront et al. (2002). It is returned in radians. ** ** 3) This is a supplemented implementation of one aspect of the IAU ** 2000A nutation model, formally adopted by the IAU General ** Assembly in 2000, namely MHB2000 (Mathews et al. 2002). ** ** References: ** ** Chapront, J., Chapront-Touze, M. & Francou, G., Astron. ** Astrophys., 387, 700, 2002. ** ** Mathews, P.M., Herring, T.A., Buffet, B.A., "Modeling of nutation ** and precession New nutation series for nonrigid Earth and ** insights into the Earth's interior", J.Geophys.Res., 107, B4, ** 2002. The MHB2000 code itself was obtained on 9th September 2002 ** from ftp://maia.usno.navy.mil/conv2000/chapter5/IAU2000A. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* The frame bias corrections in longitude and obliquity */ const double DPBIAS = -0.041775 * DAS2R, DEBIAS = -0.0068192 * DAS2R; /* The ICRS RA of the J2000.0 equinox (Chapront et al., 2002) */ const double DRA0 = -0.0146 * DAS2R; /* Return the results (which are fixed). */ *dpsibi = DPBIAS; *depsbi = DEBIAS; *dra = DRA0; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/bp00.c0000644000113000011300000002040512507252056013577 0ustar bellsbells#include "sofa.h" void iauBp00(double date1, double date2, double rb[3][3], double rp[3][3], double rbp[3][3]) /* ** - - - - - - - - ** i a u B p 0 0 ** - - - - - - - - ** ** Frame bias and precession, IAU 2000. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rb double[3][3] frame bias matrix (Note 2) ** rp double[3][3] precession matrix (Note 3) ** rbp double[3][3] bias-precession matrix (Note 4) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix rb transforms vectors from GCRS to mean J2000.0 by ** applying frame bias. ** ** 3) The matrix rp transforms vectors from J2000.0 mean equator and ** equinox to mean equator and equinox of date by applying ** precession. ** ** 4) The matrix rbp transforms vectors from GCRS to mean equator and ** equinox of date by applying frame bias then precession. It is ** the product rp x rb. ** ** 5) It is permissible to re-use the same array in the returned ** arguments. The arrays are filled in the order given. ** ** Called: ** iauBi00 frame bias components, IAU 2000 ** iauPr00 IAU 2000 precession adjustments ** iauIr initialize r-matrix to identity ** iauRx rotate around X-axis ** iauRy rotate around Y-axis ** iauRz rotate around Z-axis ** iauCr copy r-matrix ** iauRxr product of two r-matrices ** ** Reference: ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** This revision: 2013 August 21 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* J2000.0 obliquity (Lieske et al. 1977) */ const double EPS0 = 84381.448 * DAS2R; double t, dpsibi, depsbi, dra0, psia77, oma77, chia, dpsipr, depspr, psia, oma, rbw[3][3]; /* Interval between fundamental epoch J2000.0 and current date (JC). */ t = ((date1 - DJ00) + date2) / DJC; /* Frame bias. */ iauBi00(&dpsibi, &depsbi, &dra0); /* Precession angles (Lieske et al. 1977) */ psia77 = (5038.7784 + (-1.07259 + (-0.001147) * t) * t) * t * DAS2R; oma77 = EPS0 + ((0.05127 + (-0.007726) * t) * t) * t * DAS2R; chia = ( 10.5526 + (-2.38064 + (-0.001125) * t) * t) * t * DAS2R; /* Apply IAU 2000 precession corrections. */ iauPr00(date1, date2, &dpsipr, &depspr); psia = psia77 + dpsipr; oma = oma77 + depspr; /* Frame bias matrix: GCRS to J2000.0. */ iauIr(rbw); iauRz(dra0, rbw); iauRy(dpsibi*sin(EPS0), rbw); iauRx(-depsbi, rbw); iauCr(rbw, rb); /* Precession matrix: J2000.0 to mean of date. */ iauIr(rp); iauRx(EPS0, rp); iauRz(-psia, rp); iauRx(-oma, rp); iauRz(chia, rp); /* Bias-precession matrix: GCRS to mean of date. */ iauRxr(rp, rbw, rbp); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/bp06.c0000644000113000011300000001615712507252056013616 0ustar bellsbells#include "sofa.h" void iauBp06(double date1, double date2, double rb[3][3], double rp[3][3], double rbp[3][3]) /* ** - - - - - - - - ** i a u B p 0 6 ** - - - - - - - - ** ** Frame bias and precession, IAU 2006. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rb double[3][3] frame bias matrix (Note 2) ** rp double[3][3] precession matrix (Note 3) ** rbp double[3][3] bias-precession matrix (Note 4) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix rb transforms vectors from GCRS to mean J2000.0 by ** applying frame bias. ** ** 3) The matrix rp transforms vectors from mean J2000.0 to mean of ** date by applying precession. ** ** 4) The matrix rbp transforms vectors from GCRS to mean of date by ** applying frame bias then precession. It is the product rp x rb. ** ** 5) It is permissible to re-use the same array in the returned ** arguments. The arrays are filled in the order given. ** ** Called: ** iauPfw06 bias-precession F-W angles, IAU 2006 ** iauFw2m F-W angles to r-matrix ** iauPmat06 PB matrix, IAU 2006 ** iauTr transpose r-matrix ** iauRxr product of two r-matrices ** iauCr copy r-matrix ** ** References: ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 ** ** Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** ** This revision: 2013 August 21 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double gamb, phib, psib, epsa, rbpw[3][3], rbt[3][3]; /* B matrix. */ iauPfw06(DJM0, DJM00, &gamb, &phib, &psib, &epsa); iauFw2m(gamb, phib, psib, epsa, rb); /* PxB matrix (temporary). */ iauPmat06(date1, date2, rbpw); /* P matrix. */ iauTr(rb, rbt); iauRxr(rbpw, rbt, rp); /* PxB matrix. */ iauCr(rbpw, rbp); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/bpn2xy.c0000644000113000011300000001327612507252056014270 0ustar bellsbells#include "sofa.h" void iauBpn2xy(double rbpn[3][3], double *x, double *y) /* ** - - - - - - - - - - ** i a u B p n 2 x y ** - - - - - - - - - - ** ** Extract from the bias-precession-nutation matrix the X,Y coordinates ** of the Celestial Intermediate Pole. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rbpn double[3][3] celestial-to-true matrix (Note 1) ** ** Returned: ** x,y double Celestial Intermediate Pole (Note 2) ** ** Notes: ** ** 1) The matrix rbpn transforms vectors from GCRS to true equator (and ** CIO or equinox) of date, and therefore the Celestial Intermediate ** Pole unit vector is the bottom row of the matrix. ** ** 2) The arguments x,y are components of the Celestial Intermediate ** Pole unit vector in the Geocentric Celestial Reference System. ** ** Reference: ** ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 ** (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Extract the X,Y coordinates. */ *x = rbpn[2][0]; *y = rbpn[2][1]; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/c2i00a.c0000644000113000011300000001631612507252056014022 0ustar bellsbells#include "sofa.h" void iauC2i00a(double date1, double date2, double rc2i[3][3]) /* ** - - - - - - - - - - ** i a u C 2 i 0 0 a ** - - - - - - - - - - ** ** Form the celestial-to-intermediate matrix for a given date using the ** IAU 2000A precession-nutation model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rc2i double[3][3] celestial-to-intermediate matrix (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix rc2i is the first stage in the transformation from ** celestial to terrestrial coordinates: ** ** [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] ** ** = rc2t * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), ERA is the Earth ** Rotation Angle and RPOM is the polar motion matrix. ** ** 3) A faster, but slightly less accurate result (about 1 mas), can be ** obtained by using instead the iauC2i00b function. ** ** Called: ** iauPnm00a classical NPB matrix, IAU 2000A ** iauC2ibpn celestial-to-intermediate matrix, given NPB matrix ** ** References: ** ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 ** (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double rbpn[3][3]; /* Obtain the celestial-to-true matrix (IAU 2000A). */ iauPnm00a(date1, date2, rbpn); /* Form the celestial-to-intermediate matrix. */ iauC2ibpn(date1, date2, rbpn, rc2i); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/c2i00b.c0000644000113000011300000001630112507252056014015 0ustar bellsbells#include "sofa.h" void iauC2i00b(double date1, double date2, double rc2i[3][3]) /* ** - - - - - - - - - - ** i a u C 2 i 0 0 b ** - - - - - - - - - - ** ** Form the celestial-to-intermediate matrix for a given date using the ** IAU 2000B precession-nutation model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rc2i double[3][3] celestial-to-intermediate matrix (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix rc2i is the first stage in the transformation from ** celestial to terrestrial coordinates: ** ** [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] ** ** = rc2t * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), ERA is the Earth ** Rotation Angle and RPOM is the polar motion matrix. ** ** 3) The present function is faster, but slightly less accurate (about ** 1 mas), than the iauC2i00a function. ** ** Called: ** iauPnm00b classical NPB matrix, IAU 2000B ** iauC2ibpn celestial-to-intermediate matrix, given NPB matrix ** ** References: ** ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 ** (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double rbpn[3][3]; /* Obtain the celestial-to-true matrix (IAU 2000B). */ iauPnm00b(date1, date2, rbpn); /* Form the celestial-to-intermediate matrix. */ iauC2ibpn(date1, date2, rbpn, rc2i); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/c2i06a.c0000644000113000011300000001577412507252056014037 0ustar bellsbells#include "sofa.h" void iauC2i06a(double date1, double date2, double rc2i[3][3]) /* ** - - - - - - - - - - ** i a u C 2 i 0 6 a ** - - - - - - - - - - ** ** Form the celestial-to-intermediate matrix for a given date using the ** IAU 2006 precession and IAU 2000A nutation models. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rc2i double[3][3] celestial-to-intermediate matrix (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix rc2i is the first stage in the transformation from ** celestial to terrestrial coordinates: ** ** [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] ** ** = RC2T * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), ERA is the Earth ** Rotation Angle and RPOM is the polar motion matrix. ** ** Called: ** iauPnm06a classical NPB matrix, IAU 2006/2000A ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauS06 the CIO locator s, given X,Y, IAU 2006 ** iauC2ixys celestial-to-intermediate matrix, given X,Y and s ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), ** IERS Technical Note No. 32, BKG ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double rbpn[3][3], x, y, s; /* Obtain the celestial-to-true matrix (IAU 2006/2000A). */ iauPnm06a(date1, date2, rbpn); /* Extract the X,Y coordinates. */ iauBpn2xy(rbpn, &x, &y); /* Obtain the CIO locator. */ s = iauS06(date1, date2, x, y); /* Form the celestial-to-intermediate matrix. */ iauC2ixys(x, y, s, rc2i); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/c2ibpn.c0000644000113000011300000001664712507252056014230 0ustar bellsbells#include "sofa.h" void iauC2ibpn(double date1, double date2, double rbpn[3][3], double rc2i[3][3]) /* ** - - - - - - - - - - ** i a u C 2 i b p n ** - - - - - - - - - - ** ** Form the celestial-to-intermediate matrix for a given date given ** the bias-precession-nutation matrix. IAU 2000. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** rbpn double[3][3] celestial-to-true matrix (Note 2) ** ** Returned: ** rc2i double[3][3] celestial-to-intermediate matrix (Note 3) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix rbpn transforms vectors from GCRS to true equator (and ** CIO or equinox) of date. Only the CIP (bottom row) is used. ** ** 3) The matrix rc2i is the first stage in the transformation from ** celestial to terrestrial coordinates: ** ** [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] ** ** = RC2T * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), ERA is the Earth ** Rotation Angle and RPOM is the polar motion matrix. ** ** 4) Although its name does not include "00", This function is in fact ** specific to the IAU 2000 models. ** ** Called: ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauC2ixy celestial-to-intermediate matrix, given X,Y ** ** References: ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double x, y; /* Extract the X,Y coordinates. */ iauBpn2xy(rbpn, &x, &y); /* Form the celestial-to-intermediate matrix (n.b. IAU 2000 specific). */ iauC2ixy(date1, date2, x, y, rc2i); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/c2ixy.c0000644000113000011300000001577212507252056014107 0ustar bellsbells#include "sofa.h" void iauC2ixy(double date1, double date2, double x, double y, double rc2i[3][3]) /* ** - - - - - - - - - ** i a u C 2 i x y ** - - - - - - - - - ** ** Form the celestial to intermediate-frame-of-date matrix for a given ** date when the CIP X,Y coordinates are known. IAU 2000. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** x,y double Celestial Intermediate Pole (Note 2) ** ** Returned: ** rc2i double[3][3] celestial-to-intermediate matrix (Note 3) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The Celestial Intermediate Pole coordinates are the x,y components ** of the unit vector in the Geocentric Celestial Reference System. ** ** 3) The matrix rc2i is the first stage in the transformation from ** celestial to terrestrial coordinates: ** ** [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] ** ** = RC2T * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), ERA is the Earth ** Rotation Angle and RPOM is the polar motion matrix. ** ** 4) Although its name does not include "00", This function is in fact ** specific to the IAU 2000 models. ** ** Called: ** iauC2ixys celestial-to-intermediate matrix, given X,Y and s ** iauS00 the CIO locator s, given X,Y, IAU 2000A ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Compute s and then the matrix. */ iauC2ixys(x, y, iauS00(date1, date2, x, y), rc2i); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/c2ixys.c0000644000113000011300000001436712507252056014271 0ustar bellsbells#include "sofa.h" void iauC2ixys(double x, double y, double s, double rc2i[3][3]) /* ** - - - - - - - - - - ** i a u C 2 i x y s ** - - - - - - - - - - ** ** Form the celestial to intermediate-frame-of-date matrix given the CIP ** X,Y and the CIO locator s. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** x,y double Celestial Intermediate Pole (Note 1) ** s double the CIO locator s (Note 2) ** ** Returned: ** rc2i double[3][3] celestial-to-intermediate matrix (Note 3) ** ** Notes: ** ** 1) The Celestial Intermediate Pole coordinates are the x,y ** components of the unit vector in the Geocentric Celestial ** Reference System. ** ** 2) The CIO locator s (in radians) positions the Celestial ** Intermediate Origin on the equator of the CIP. ** ** 3) The matrix rc2i is the first stage in the transformation from ** celestial to terrestrial coordinates: ** ** [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] ** ** = RC2T * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), ERA is the Earth ** Rotation Angle and RPOM is the polar motion matrix. ** ** Called: ** iauIr initialize r-matrix to identity ** iauRz rotate around Z-axis ** iauRy rotate around Y-axis ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2014 November 7 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double r2, e, d; /* Obtain the spherical angles E and d. */ r2 = x*x + y*y; e = (r2 > 0.0) ? atan2(y, x) : 0.0; d = atan(sqrt(r2 / (1.0 - r2))); /* Form the matrix. */ iauIr(rc2i); iauRz(e, rc2i); iauRy(d, rc2i); iauRz(-(e+s), rc2i); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/c2s.c0000644000113000011300000001230712507252056013527 0ustar bellsbells#include "sofa.h" void iauC2s(double p[3], double *theta, double *phi) /* ** - - - - - - - ** i a u C 2 s ** - - - - - - - ** ** P-vector to spherical coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** p double[3] p-vector ** ** Returned: ** theta double longitude angle (radians) ** phi double latitude angle (radians) ** ** Notes: ** ** 1) The vector p can have any magnitude; only its direction is used. ** ** 2) If p is null, zero theta and phi are returned. ** ** 3) At either pole, zero theta is returned. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double x, y, z, d2; x = p[0]; y = p[1]; z = p[2]; d2 = x*x + y*y; *theta = (d2 == 0.0) ? 0.0 : atan2(y, x); *phi = (z == 0.0) ? 0.0 : atan2(z, sqrt(d2)); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/c2t00a.c0000644000113000011300000001762212507252056014036 0ustar bellsbells#include "sofa.h" void iauC2t00a(double tta, double ttb, double uta, double utb, double xp, double yp, double rc2t[3][3]) /* ** - - - - - - - - - - ** i a u C 2 t 0 0 a ** - - - - - - - - - - ** ** Form the celestial to terrestrial matrix given the date, the UT1 and ** the polar motion, using the IAU 2000A nutation model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** tta,ttb double TT as a 2-part Julian Date (Note 1) ** uta,utb double UT1 as a 2-part Julian Date (Note 1) ** xp,yp double coordinates of the pole (radians, Note 2) ** ** Returned: ** rc2t double[3][3] celestial-to-terrestrial matrix (Note 3) ** ** Notes: ** ** 1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, ** apportioned in any convenient way between the arguments uta and ** utb. For example, JD(UT1)=2450123.7 could be expressed in any of ** these ways, among others: ** ** uta utb ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution is ** acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. In the case of uta,utb, the ** date & time method is best matched to the Earth rotation angle ** algorithm used: maximum precision is delivered when the uta ** argument is for 0hrs UT1 on the day in question and the utb ** argument lies in the range 0 to 1, or vice versa. ** ** 2) The arguments xp and yp are the coordinates (in radians) of the ** Celestial Intermediate Pole with respect to the International ** Terrestrial Reference System (see IERS Conventions 2003), ** measured along the meridians to 0 and 90 deg west respectively. ** ** 3) The matrix rc2t transforms from celestial to terrestrial ** coordinates: ** ** [TRS] = RPOM * R_3(ERA) * RC2I * [CRS] ** ** = rc2t * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), RC2I is the ** celestial-to-intermediate matrix, ERA is the Earth rotation ** angle and RPOM is the polar motion matrix. ** ** 4) A faster, but slightly less accurate result (about 1 mas), can ** be obtained by using instead the iauC2t00b function. ** ** Called: ** iauC2i00a celestial-to-intermediate matrix, IAU 2000A ** iauEra00 Earth rotation angle, IAU 2000 ** iauSp00 the TIO locator s', IERS 2000 ** iauPom00 polar motion matrix ** iauC2tcio form CIO-based celestial-to-terrestrial matrix ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double rc2i[3][3], era, sp, rpom[3][3]; /* Form the celestial-to-intermediate matrix for this TT (IAU 2000A). */ iauC2i00a(tta, ttb, rc2i ); /* Predict the Earth rotation angle for this UT1. */ era = iauEra00(uta, utb); /* Estimate s'. */ sp = iauSp00(tta, ttb); /* Form the polar motion matrix. */ iauPom00(xp, yp, sp, rpom); /* Combine to form the celestial-to-terrestrial matrix. */ iauC2tcio(rc2i, era, rpom, rc2t); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/c2t00b.c0000644000113000011300000001746012507252056014037 0ustar bellsbells#include "sofa.h" void iauC2t00b(double tta, double ttb, double uta, double utb, double xp, double yp, double rc2t[3][3]) /* ** - - - - - - - - - - ** i a u C 2 t 0 0 b ** - - - - - - - - - - ** ** Form the celestial to terrestrial matrix given the date, the UT1 and ** the polar motion, using the IAU 2000B nutation model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** tta,ttb double TT as a 2-part Julian Date (Note 1) ** uta,utb double UT1 as a 2-part Julian Date (Note 1) ** xp,yp double coordinates of the pole (radians, Note 2) ** ** Returned: ** rc2t double[3][3] celestial-to-terrestrial matrix (Note 3) ** ** Notes: ** ** 1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, ** apportioned in any convenient way between the arguments uta and ** utb. For example, JD(UT1)=2450123.7 could be expressed in any of ** these ways, among others: ** ** uta utb ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution is ** acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. In the case of uta,utb, the ** date & time method is best matched to the Earth rotation angle ** algorithm used: maximum precision is delivered when the uta ** argument is for 0hrs UT1 on the day in question and the utb ** argument lies in the range 0 to 1, or vice versa. ** ** 2) The arguments xp and yp are the coordinates (in radians) of the ** Celestial Intermediate Pole with respect to the International ** Terrestrial Reference System (see IERS Conventions 2003), ** measured along the meridians to 0 and 90 deg west respectively. ** ** 3) The matrix rc2t transforms from celestial to terrestrial ** coordinates: ** ** [TRS] = RPOM * R_3(ERA) * RC2I * [CRS] ** ** = rc2t * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), RC2I is the ** celestial-to-intermediate matrix, ERA is the Earth rotation ** angle and RPOM is the polar motion matrix. ** ** 4) The present function is faster, but slightly less accurate (about ** 1 mas), than the iauC2t00a function. ** ** Called: ** iauC2i00b celestial-to-intermediate matrix, IAU 2000B ** iauEra00 Earth rotation angle, IAU 2000 ** iauPom00 polar motion matrix ** iauC2tcio form CIO-based celestial-to-terrestrial matrix ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double rc2i[3][3], era, rpom[3][3]; /* Form the celestial-to-intermediate matrix for this TT (IAU 2000B). */ iauC2i00b(tta, ttb, rc2i); /* Predict the Earth rotation angle for this UT1. */ era = iauEra00(uta, utb); /* Form the polar motion matrix (neglecting s'). */ iauPom00(xp, yp, 0.0, rpom); /* Combine to form the celestial-to-terrestrial matrix. */ iauC2tcio(rc2i, era, rpom, rc2t); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/c2t06a.c0000644000113000011300000001744112507252056014043 0ustar bellsbells#include "sofa.h" void iauC2t06a(double tta, double ttb, double uta, double utb, double xp, double yp, double rc2t[3][3]) /* ** - - - - - - - - - - ** i a u C 2 t 0 6 a ** - - - - - - - - - - ** ** Form the celestial to terrestrial matrix given the date, the UT1 and ** the polar motion, using the IAU 2006 precession and IAU 2000A ** nutation models. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** tta,ttb double TT as a 2-part Julian Date (Note 1) ** uta,utb double UT1 as a 2-part Julian Date (Note 1) ** xp,yp double coordinates of the pole (radians, Note 2) ** ** Returned: ** rc2t double[3][3] celestial-to-terrestrial matrix (Note 3) ** ** Notes: ** ** 1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, ** apportioned in any convenient way between the arguments uta and ** utb. For example, JD(UT1)=2450123.7 could be expressed in any of ** these ways, among others: ** ** uta utb ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution is ** acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. In the case of uta,utb, the ** date & time method is best matched to the Earth rotation angle ** algorithm used: maximum precision is delivered when the uta ** argument is for 0hrs UT1 on the day in question and the utb ** argument lies in the range 0 to 1, or vice versa. ** ** 2) The arguments xp and yp are the coordinates (in radians) of the ** Celestial Intermediate Pole with respect to the International ** Terrestrial Reference System (see IERS Conventions 2003), ** measured along the meridians to 0 and 90 deg west respectively. ** ** 3) The matrix rc2t transforms from celestial to terrestrial ** coordinates: ** ** [TRS] = RPOM * R_3(ERA) * RC2I * [CRS] ** ** = rc2t * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), RC2I is the ** celestial-to-intermediate matrix, ERA is the Earth rotation ** angle and RPOM is the polar motion matrix. ** ** Called: ** iauC2i06a celestial-to-intermediate matrix, IAU 2006/2000A ** iauEra00 Earth rotation angle, IAU 2000 ** iauSp00 the TIO locator s', IERS 2000 ** iauPom00 polar motion matrix ** iauC2tcio form CIO-based celestial-to-terrestrial matrix ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), ** IERS Technical Note No. 32, BKG ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double rc2i[3][3], era, sp, rpom[3][3]; /* Form the celestial-to-intermediate matrix for this TT. */ iauC2i06a(tta, ttb, rc2i); /* Predict the Earth rotation angle for this UT1. */ era = iauEra00(uta, utb); /* Estimate s'. */ sp = iauSp00(tta, ttb); /* Form the polar motion matrix. */ iauPom00(xp, yp, sp, rpom); /* Combine to form the celestial-to-terrestrial matrix. */ iauC2tcio(rc2i, era, rpom, rc2t); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/c2tcio.c0000644000113000011300000001477312507252056014234 0ustar bellsbells#include "sofa.h" void iauC2tcio(double rc2i[3][3], double era, double rpom[3][3], double rc2t[3][3]) /* ** - - - - - - - - - - ** i a u C 2 t c i o ** - - - - - - - - - - ** ** Assemble the celestial to terrestrial matrix from CIO-based ** components (the celestial-to-intermediate matrix, the Earth Rotation ** Angle and the polar motion matrix). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rc2i double[3][3] celestial-to-intermediate matrix ** era double Earth rotation angle (radians) ** rpom double[3][3] polar-motion matrix ** ** Returned: ** rc2t double[3][3] celestial-to-terrestrial matrix ** ** Notes: ** ** 1) This function constructs the rotation matrix that transforms ** vectors in the celestial system into vectors in the terrestrial ** system. It does so starting from precomputed components, namely ** the matrix which rotates from celestial coordinates to the ** intermediate frame, the Earth rotation angle and the polar motion ** matrix. One use of the present function is when generating a ** series of celestial-to-terrestrial matrices where only the Earth ** Rotation Angle changes, avoiding the considerable overhead of ** recomputing the precession-nutation more often than necessary to ** achieve given accuracy objectives. ** ** 2) The relationship between the arguments is as follows: ** ** [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] ** ** = rc2t * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003). ** ** Called: ** iauCr copy r-matrix ** iauRz rotate around Z-axis ** iauRxr product of two r-matrices ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), ** IERS Technical Note No. 32, BKG ** ** This revision: 2013 August 24 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double r[3][3]; /* Construct the matrix. */ iauCr(rc2i, r); iauRz(era, r); iauRxr(rpom, r, rc2t); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/c2teqx.c0000644000113000011300000001502612507252056014247 0ustar bellsbells#include "sofa.h" void iauC2teqx(double rbpn[3][3], double gst, double rpom[3][3], double rc2t[3][3]) /* ** - - - - - - - - - - ** i a u C 2 t e q x ** - - - - - - - - - - ** ** Assemble the celestial to terrestrial matrix from equinox-based ** components (the celestial-to-true matrix, the Greenwich Apparent ** Sidereal Time and the polar motion matrix). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rbpn double[3][3] celestial-to-true matrix ** gst double Greenwich (apparent) Sidereal Time (radians) ** rpom double[3][3] polar-motion matrix ** ** Returned: ** rc2t double[3][3] celestial-to-terrestrial matrix (Note 2) ** ** Notes: ** ** 1) This function constructs the rotation matrix that transforms ** vectors in the celestial system into vectors in the terrestrial ** system. It does so starting from precomputed components, namely ** the matrix which rotates from celestial coordinates to the ** true equator and equinox of date, the Greenwich Apparent Sidereal ** Time and the polar motion matrix. One use of the present function ** is when generating a series of celestial-to-terrestrial matrices ** where only the Sidereal Time changes, avoiding the considerable ** overhead of recomputing the precession-nutation more often than ** necessary to achieve given accuracy objectives. ** ** 2) The relationship between the arguments is as follows: ** ** [TRS] = rpom * R_3(gst) * rbpn * [CRS] ** ** = rc2t * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003). ** ** Called: ** iauCr copy r-matrix ** iauRz rotate around Z-axis ** iauRxr product of two r-matrices ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 August 24 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double r[3][3]; /* Construct the matrix. */ iauCr(rbpn, r); iauRz(gst, r); iauRxr(rpom, r, rc2t); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/c2tpe.c0000644000113000011300000002112112507252056014047 0ustar bellsbells#include "sofa.h" void iauC2tpe(double tta, double ttb, double uta, double utb, double dpsi, double deps, double xp, double yp, double rc2t[3][3]) /* ** - - - - - - - - - ** i a u C 2 t p e ** - - - - - - - - - ** ** Form the celestial to terrestrial matrix given the date, the UT1, ** the nutation and the polar motion. IAU 2000. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** tta,ttb double TT as a 2-part Julian Date (Note 1) ** uta,utb double UT1 as a 2-part Julian Date (Note 1) ** dpsi,deps double nutation (Note 2) ** xp,yp double coordinates of the pole (radians, Note 3) ** ** Returned: ** rc2t double[3][3] celestial-to-terrestrial matrix (Note 4) ** ** Notes: ** ** 1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, ** apportioned in any convenient way between the arguments uta and ** utb. For example, JD(UT1)=2450123.7 could be expressed in any of ** these ways, among others: ** ** uta utb ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution is ** acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. In the case of uta,utb, the ** date & time method is best matched to the Earth rotation angle ** algorithm used: maximum precision is delivered when the uta ** argument is for 0hrs UT1 on the day in question and the utb ** argument lies in the range 0 to 1, or vice versa. ** ** 2) The caller is responsible for providing the nutation components; ** they are in longitude and obliquity, in radians and are with ** respect to the equinox and ecliptic of date. For high-accuracy ** applications, free core nutation should be included as well as ** any other relevant corrections to the position of the CIP. ** ** 3) The arguments xp and yp are the coordinates (in radians) of the ** Celestial Intermediate Pole with respect to the International ** Terrestrial Reference System (see IERS Conventions 2003), ** measured along the meridians to 0 and 90 deg west respectively. ** ** 4) The matrix rc2t transforms from celestial to terrestrial ** coordinates: ** ** [TRS] = RPOM * R_3(GST) * RBPN * [CRS] ** ** = rc2t * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), RBPN is the ** bias-precession-nutation matrix, GST is the Greenwich (apparent) ** Sidereal Time and RPOM is the polar motion matrix. ** ** 5) Although its name does not include "00", This function is in fact ** specific to the IAU 2000 models. ** ** Called: ** iauPn00 bias/precession/nutation results, IAU 2000 ** iauGmst00 Greenwich mean sidereal time, IAU 2000 ** iauSp00 the TIO locator s', IERS 2000 ** iauEe00 equation of the equinoxes, IAU 2000 ** iauPom00 polar motion matrix ** iauC2teqx form equinox-based celestial-to-terrestrial matrix ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double epsa, rb[3][3], rp[3][3], rbp[3][3], rn[3][3], rbpn[3][3], gmst, ee, sp, rpom[3][3]; /* Form the celestial-to-true matrix for this TT. */ iauPn00(tta, ttb, dpsi, deps, &epsa, rb, rp, rbp, rn, rbpn); /* Predict the Greenwich Mean Sidereal Time for this UT1 and TT. */ gmst = iauGmst00(uta, utb, tta, ttb); /* Predict the equation of the equinoxes given TT and nutation. */ ee = iauEe00(tta, ttb, epsa, dpsi); /* Estimate s'. */ sp = iauSp00(tta, ttb); /* Form the polar motion matrix. */ iauPom00(xp, yp, sp, rpom); /* Combine to form the celestial-to-terrestrial matrix. */ iauC2teqx(rbpn, gmst + ee, rpom, rc2t); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/c2txy.c0000644000113000011300000002007012507252056014105 0ustar bellsbells#include "sofa.h" void iauC2txy(double tta, double ttb, double uta, double utb, double x, double y, double xp, double yp, double rc2t[3][3]) /* ** - - - - - - - - - ** i a u C 2 t x y ** - - - - - - - - - ** ** Form the celestial to terrestrial matrix given the date, the UT1, ** the CIP coordinates and the polar motion. IAU 2000. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** tta,ttb double TT as a 2-part Julian Date (Note 1) ** uta,utb double UT1 as a 2-part Julian Date (Note 1) ** x,y double Celestial Intermediate Pole (Note 2) ** xp,yp double coordinates of the pole (radians, Note 3) ** ** Returned: ** rc2t double[3][3] celestial-to-terrestrial matrix (Note 4) ** ** Notes: ** ** 1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, ** apportioned in any convenient way between the arguments uta and ** utb. For example, JD(UT1)=2450123.7 could be expressed in any o ** these ways, among others: ** ** uta utb ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution is ** acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. In the case of uta,utb, the ** date & time method is best matched to the Earth rotation angle ** algorithm used: maximum precision is delivered when the uta ** argument is for 0hrs UT1 on the day in question and the utb ** argument lies in the range 0 to 1, or vice versa. ** ** 2) The Celestial Intermediate Pole coordinates are the x,y ** components of the unit vector in the Geocentric Celestial ** Reference System. ** ** 3) The arguments xp and yp are the coordinates (in radians) of the ** Celestial Intermediate Pole with respect to the International ** Terrestrial Reference System (see IERS Conventions 2003), ** measured along the meridians to 0 and 90 deg west respectively. ** ** 4) The matrix rc2t transforms from celestial to terrestrial ** coordinates: ** ** [TRS] = RPOM * R_3(ERA) * RC2I * [CRS] ** ** = rc2t * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), ERA is the Earth ** Rotation Angle and RPOM is the polar motion matrix. ** ** 5) Although its name does not include "00", This function is in fact ** specific to the IAU 2000 models. ** ** Called: ** iauC2ixy celestial-to-intermediate matrix, given X,Y ** iauEra00 Earth rotation angle, IAU 2000 ** iauSp00 the TIO locator s', IERS 2000 ** iauPom00 polar motion matrix ** iauC2tcio form CIO-based celestial-to-terrestrial matrix ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double rc2i[3][3], era, sp, rpom[3][3]; /* Form the celestial-to-intermediate matrix for this TT. */ iauC2ixy(tta, ttb, x, y, rc2i); /* Predict the Earth rotation angle for this UT1. */ era = iauEra00(uta, utb); /* Estimate s'. */ sp = iauSp00(tta, ttb); /* Form the polar motion matrix. */ iauPom00(xp, yp, sp, rpom); /* Combine to form the celestial-to-terrestrial matrix. */ iauC2tcio(rc2i, era, rpom, rc2t); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/cal2jd.c0000644000113000011300000001546112507252056014203 0ustar bellsbells#include "sofa.h" int iauCal2jd(int iy, int im, int id, double *djm0, double *djm) /* ** - - - - - - - - - - ** i a u C a l 2 j d ** - - - - - - - - - - ** ** Gregorian Calendar to Julian Date. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** iy,im,id int year, month, day in Gregorian calendar (Note 1) ** ** Returned: ** djm0 double MJD zero-point: always 2400000.5 ** djm double Modified Julian Date for 0 hrs ** ** Returned (function value): ** int status: ** 0 = OK ** -1 = bad year (Note 3: JD not computed) ** -2 = bad month (JD not computed) ** -3 = bad day (JD computed) ** ** Notes: ** ** 1) The algorithm used is valid from -4800 March 1, but this ** implementation rejects dates before -4799 January 1. ** ** 2) The Julian Date is returned in two pieces, in the usual SOFA ** manner, which is designed to preserve time resolution. The ** Julian Date is available as a single number by adding djm0 and ** djm. ** ** 3) In early eras the conversion is from the "Proleptic Gregorian ** Calendar"; no account is taken of the date(s) of adoption of ** the Gregorian Calendar, nor is the AD/BC numbering convention ** observed. ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 12.92 (p604). ** ** This revision: 2013 August 7 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int j, ly, my; long iypmy; /* Earliest year allowed (4800BC) */ const int IYMIN = -4799; /* Month lengths in days */ static const int mtab[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; /* Preset status. */ j = 0; /* Validate year and month. */ if (iy < IYMIN) return -1; if (im < 1 || im > 12) return -2; /* If February in a leap year, 1, otherwise 0. */ ly = ((im == 2) && !(iy%4) && (iy%100 || !(iy%400))); /* Validate day, taking into account leap years. */ if ( (id < 1) || (id > (mtab[im-1] + ly))) j = -3; /* Return result. */ my = (im - 14) / 12; iypmy = (long) (iy + my); *djm0 = DJM0; *djm = (double)((1461L * (iypmy + 4800L)) / 4L + (367L * (long) (im - 2 - 12 * my)) / 12L - (3L * ((iypmy + 4900L) / 100L)) / 4L + (long) id - 2432076L); /* Return status. */ return j; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/cp.c0000644000113000011300000001144112507252056013440 0ustar bellsbells#include "sofa.h" void iauCp(double p[3], double c[3]) /* ** - - - - - - ** i a u C p ** - - - - - - ** ** Copy a p-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** p double[3] p-vector to be copied ** ** Returned: ** c double[3] copy ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { c[0] = p[0]; c[1] = p[1]; c[2] = p[2]; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/cpv.c0000644000113000011300000001157612507252056013637 0ustar bellsbells#include "sofa.h" void iauCpv(double pv[2][3], double c[2][3]) /* ** - - - - - - - ** i a u C p v ** - - - - - - - ** ** Copy a position/velocity vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** pv double[2][3] position/velocity vector to be copied ** ** Returned: ** c double[2][3] copy ** ** Called: ** iauCp copy p-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { iauCp(pv[0], c[0]); iauCp(pv[1], c[1]); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/cr.c0000644000113000011300000001155712507252056013452 0ustar bellsbells#include "sofa.h" void iauCr(double r[3][3], double c[3][3]) /* ** - - - - - - ** i a u C r ** - - - - - - ** ** Copy an r-matrix. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** r double[3][3] r-matrix to be copied ** ** Returned: ** char[] double[3][3] copy ** ** Called: ** iauCp copy p-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { iauCp(r[0], c[0]); iauCp(r[1], c[1]); iauCp(r[2], c[2]); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/d2dtf.c0000644000113000011300000002310112507252056014035 0ustar bellsbells#include "sofa.h" #include int iauD2dtf(const char *scale, int ndp, double d1, double d2, int *iy, int *im, int *id, int ihmsf[4]) /* ** - - - - - - - - - ** i a u D 2 d t f ** - - - - - - - - - ** ** Format for output a 2-part Julian Date (or in the case of UTC a ** quasi-JD form that includes special provision for leap seconds). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** scale char[] time scale ID (Note 1) ** ndp int resolution (Note 2) ** d1,d2 double time as a 2-part Julian Date (Notes 3,4) ** ** Returned: ** iy,im,id int year, month, day in Gregorian calendar (Note 5) ** ihmsf int[4] hours, minutes, seconds, fraction (Note 1) ** ** Returned (function value): ** int status: +1 = dubious year (Note 5) ** 0 = OK ** -1 = unacceptable date (Note 6) ** ** Notes: ** ** 1) scale identifies the time scale. Only the value "UTC" (in upper ** case) is significant, and enables handling of leap seconds (see ** Note 4). ** ** 2) ndp is the number of decimal places in the seconds field, and can ** have negative as well as positive values, such as: ** ** ndp resolution ** -4 1 00 00 ** -3 0 10 00 ** -2 0 01 00 ** -1 0 00 10 ** 0 0 00 01 ** 1 0 00 00.1 ** 2 0 00 00.01 ** 3 0 00 00.001 ** ** The limits are platform dependent, but a safe range is -5 to +9. ** ** 3) d1+d2 is Julian Date, apportioned in any convenient way between ** the two arguments, for example where d1 is the Julian Day Number ** and d2 is the fraction of a day. In the case of UTC, where the ** use of JD is problematical, special conventions apply: see the ** next note. ** ** 4) JD cannot unambiguously represent UTC during a leap second unless ** special measures are taken. The SOFA internal convention is that ** the quasi-JD day represents UTC days whether the length is 86399, ** 86400 or 86401 SI seconds. In the 1960-1972 era there were ** smaller jumps (in either direction) each time the linear UTC(TAI) ** expression was changed, and these "mini-leaps" are also included ** in the SOFA convention. ** ** 5) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the future ** to be trusted. See iauDat for further details. ** ** 6) For calendar conventions and limitations, see iauCal2jd. ** ** Called: ** iauJd2cal JD to Gregorian calendar ** iauD2tf decompose days to hms ** iauDat delta(AT) = TAI-UTC ** ** This revision: 2014 February 15 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int leap; char s; int iy1, im1, id1, js, iy2, im2, id2, ihmsf1[4], i; double a1, b1, fd, dat0, dat12, w, dat24, dleap; /* The two-part JD. */ a1 = d1; b1 = d2; /* Provisional calendar date. */ js = iauJd2cal(a1, b1, &iy1, &im1, &id1, &fd); if ( js ) return -1; /* Is this a leap second day? */ leap = 0; if ( ! strcmp(scale,"UTC") ) { /* TAI-UTC at 0h today. */ js = iauDat(iy1, im1, id1, 0.0, &dat0); if ( js < 0 ) return -1; /* TAI-UTC at 12h today (to detect drift). */ js = iauDat(iy1, im1, id1, 0.5, &dat12); if ( js < 0 ) return -1; /* TAI-UTC at 0h tomorrow (to detect jumps). */ js = iauJd2cal(a1+1.5, b1-fd, &iy2, &im2, &id2, &w); if ( js ) return -1; js = iauDat(iy2, im2, id2, 0.0, &dat24); if ( js < 0 ) return -1; /* Any sudden change in TAI-UTC (seconds). */ dleap = dat24 - (2.0*dat12 - dat0); /* If leap second day, scale the fraction of a day into SI. */ leap = (dleap != 0.0); if (leap) fd += fd * dleap/DAYSEC; } /* Provisional time of day. */ iauD2tf ( ndp, fd, &s, ihmsf1 ); /* Has the (rounded) time gone past 24h? */ if ( ihmsf1[0] > 23 ) { /* Yes. We probably need tomorrow's calendar date. */ js = iauJd2cal(a1+1.5, b1-fd, &iy2, &im2, &id2, &w); if ( js ) return -1; /* Is today a leap second day? */ if ( ! leap ) { /* No. Use 0h tomorrow. */ iy1 = iy2; im1 = im2; id1 = id2; ihmsf1[0] = 0; ihmsf1[1] = 0; ihmsf1[2] = 0; } else { /* Yes. Are we past the leap second itself? */ if ( ihmsf1[2] > 0 ) { /* Yes. Use tomorrow but allow for the leap second. */ iy1 = iy2; im1 = im2; id1 = id2; ihmsf1[0] = 0; ihmsf1[1] = 0; ihmsf1[2] = 0; } else { /* No. Use 23 59 60... today. */ ihmsf1[0] = 23; ihmsf1[1] = 59; ihmsf1[2] = 60; } /* If rounding to 10s or coarser always go up to new day. */ if ( ndp < 0 && ihmsf1[2] == 60 ) { iy1 = iy2; im1 = im2; id1 = id2; ihmsf1[0] = 0; ihmsf1[1] = 0; ihmsf1[2] = 0; } } } /* Results. */ *iy = iy1; *im = im1; *id = id1; for ( i = 0; i < 4; i++ ) { ihmsf[i] = ihmsf1[i]; } /* Status. */ return js; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/d2tf.c0000644000113000011300000001610612507252056013700 0ustar bellsbells#include "sofa.h" void iauD2tf(int ndp, double days, char *sign, int ihmsf[4]) /* ** - - - - - - - - ** i a u D 2 t f ** - - - - - - - - ** ** Decompose days to hours, minutes, seconds, fraction. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** ndp int resolution (Note 1) ** days double interval in days ** ** Returned: ** sign char '+' or '-' ** ihmsf int[4] hours, minutes, seconds, fraction ** ** Notes: ** ** 1) The argument ndp is interpreted as follows: ** ** ndp resolution ** : ...0000 00 00 ** -7 1000 00 00 ** -6 100 00 00 ** -5 10 00 00 ** -4 1 00 00 ** -3 0 10 00 ** -2 0 01 00 ** -1 0 00 10 ** 0 0 00 01 ** 1 0 00 00.1 ** 2 0 00 00.01 ** 3 0 00 00.001 ** : 0 00 00.000... ** ** 2) The largest positive useful value for ndp is determined by the ** size of days, the format of double on the target platform, and ** the risk of overflowing ihmsf[3]. On a typical platform, for ** days up to 1.0, the available floating-point precision might ** correspond to ndp=12. However, the practical limit is typically ** ndp=9, set by the capacity of a 32-bit int, or ndp=4 if int is ** only 16 bits. ** ** 3) The absolute value of days may exceed 1.0. In cases where it ** does not, it is up to the caller to test for and handle the ** case where days is very nearly 1.0 and rounds up to 24 hours, ** by testing for ihmsf[0]=24 and setting ihmsf[0-3] to zero. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int nrs, n; double rs, rm, rh, a, w, ah, am, as, af; /* Handle sign. */ *sign = (char) ( ( days >= 0.0 ) ? '+' : '-' ); /* Interval in seconds. */ a = DAYSEC * fabs(days); /* Pre-round if resolution coarser than 1s (then pretend ndp=1). */ if (ndp < 0) { nrs = 1; for (n = 1; n <= -ndp; n++) { nrs *= (n == 2 || n == 4) ? 6 : 10; } rs = (double) nrs; w = a / rs; a = rs * dnint(w); } /* Express the unit of each field in resolution units. */ nrs = 1; for (n = 1; n <= ndp; n++) { nrs *= 10; } rs = (double) nrs; rm = rs * 60.0; rh = rm * 60.0; /* Round the interval and express in resolution units. */ a = dnint(rs * a); /* Break into fields. */ ah = a / rh; ah = dint(ah); a -= ah * rh; am = a / rm; am = dint(am); a -= am * rm; as = a / rs; as = dint(as); af = a - as * rs; /* Return results. */ ihmsf[0] = (int) ah; ihmsf[1] = (int) am; ihmsf[2] = (int) as; ihmsf[3] = (int) af; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/dat.c0000644000113000011300000003144012507252056013607 0ustar bellsbells#include "sofa.h" int iauDat(int iy, int im, int id, double fd, double *deltat ) /* ** - - - - - - - ** i a u D a t ** - - - - - - - ** ** For a given UTC date, calculate delta(AT) = TAI-UTC. ** ** :------------------------------------------: ** : : ** : IMPORTANT : ** : : ** : A new version of this function must be : ** : produced whenever a new leap second is : ** : announced. There are four items to : ** : change on each such occasion: : ** : : ** : 1) A new line must be added to the set : ** : of statements that initialize the : ** : array "changes". : ** : : ** : 2) The constant IYV must be set to the : ** : current year. : ** : : ** : 3) The "Latest leap second" comment : ** : below must be set to the new leap : ** : second date. : ** : : ** : 4) The "This revision" comment, later, : ** : must be set to the current date. : ** : : ** : Change (2) must also be carried out : ** : whenever the function is re-issued, : ** : even if no leap seconds have been : ** : added. : ** : : ** : Latest leap second: 2015 June 30 : ** : : ** :__________________________________________: ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** iy int UTC: year (Notes 1 and 2) ** im int month (Note 2) ** id int day (Notes 2 and 3) ** fd double fraction of day (Note 4) ** ** Returned: ** deltat double TAI minus UTC, seconds ** ** Returned (function value): ** int status (Note 5): ** 1 = dubious year (Note 1) ** 0 = OK ** -1 = bad year ** -2 = bad month ** -3 = bad day (Note 3) ** -4 = bad fraction (Note 4) ** -5 = internal error (Note 5) ** ** Notes: ** ** 1) UTC began at 1960 January 1.0 (JD 2436934.5) and it is improper ** to call the function with an earlier date. If this is attempted, ** zero is returned together with a warning status. ** ** Because leap seconds cannot, in principle, be predicted in ** advance, a reliable check for dates beyond the valid range is ** impossible. To guard against gross errors, a year five or more ** after the release year of the present function (see the constant ** IYV) is considered dubious. In this case a warning status is ** returned but the result is computed in the normal way. ** ** For both too-early and too-late years, the warning status is +1. ** This is distinct from the error status -1, which signifies a year ** so early that JD could not be computed. ** ** 2) If the specified date is for a day which ends with a leap second, ** the UTC-TAI value returned is for the period leading up to the ** leap second. If the date is for a day which begins as a leap ** second ends, the UTC-TAI returned is for the period following the ** leap second. ** ** 3) The day number must be in the normal calendar range, for example ** 1 through 30 for April. The "almanac" convention of allowing ** such dates as January 0 and December 32 is not supported in this ** function, in order to avoid confusion near leap seconds. ** ** 4) The fraction of day is used only for dates before the ** introduction of leap seconds, the first of which occurred at the ** end of 1971. It is tested for validity (0 to 1 is the valid ** range) even if not used; if invalid, zero is used and status -4 ** is returned. For many applications, setting fd to zero is ** acceptable; the resulting error is always less than 3 ms (and ** occurs only pre-1972). ** ** 5) The status value returned in the case where there are multiple ** errors refers to the first error detected. For example, if the ** month and day are 13 and 32 respectively, status -2 (bad month) ** will be returned. The "internal error" status refers to a ** case that is impossible but causes some compilers to issue a ** warning. ** ** 6) In cases where a valid result is not available, zero is returned. ** ** References: ** ** 1) For dates from 1961 January 1 onwards, the expressions from the ** file ftp://maia.usno.navy.mil/ser7/tai-utc.dat are used. ** ** 2) The 5ms timestep at 1961 January 1 is taken from 2.58.1 (p87) of ** the 1992 Explanatory Supplement. ** ** Called: ** iauCal2jd Gregorian calendar to JD ** ** This revision: 2015 February 27 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Release year for this version of iauDat */ enum { IYV = 2015}; /* Reference dates (MJD) and drift rates (s/day), pre leap seconds */ static const double drift[][2] = { { 37300.0, 0.0012960 }, { 37300.0, 0.0012960 }, { 37300.0, 0.0012960 }, { 37665.0, 0.0011232 }, { 37665.0, 0.0011232 }, { 38761.0, 0.0012960 }, { 38761.0, 0.0012960 }, { 38761.0, 0.0012960 }, { 38761.0, 0.0012960 }, { 38761.0, 0.0012960 }, { 38761.0, 0.0012960 }, { 38761.0, 0.0012960 }, { 39126.0, 0.0025920 }, { 39126.0, 0.0025920 } }; /* Number of Delta(AT) expressions before leap seconds were introduced */ enum { NERA1 = (int) (sizeof drift / sizeof (double) / 2) }; /* Dates and Delta(AT)s */ static const struct { int iyear, month; double delat; } changes[] = { { 1960, 1, 1.4178180 }, { 1961, 1, 1.4228180 }, { 1961, 8, 1.3728180 }, { 1962, 1, 1.8458580 }, { 1963, 11, 1.9458580 }, { 1964, 1, 3.2401300 }, { 1964, 4, 3.3401300 }, { 1964, 9, 3.4401300 }, { 1965, 1, 3.5401300 }, { 1965, 3, 3.6401300 }, { 1965, 7, 3.7401300 }, { 1965, 9, 3.8401300 }, { 1966, 1, 4.3131700 }, { 1968, 2, 4.2131700 }, { 1972, 1, 10.0 }, { 1972, 7, 11.0 }, { 1973, 1, 12.0 }, { 1974, 1, 13.0 }, { 1975, 1, 14.0 }, { 1976, 1, 15.0 }, { 1977, 1, 16.0 }, { 1978, 1, 17.0 }, { 1979, 1, 18.0 }, { 1980, 1, 19.0 }, { 1981, 7, 20.0 }, { 1982, 7, 21.0 }, { 1983, 7, 22.0 }, { 1985, 7, 23.0 }, { 1988, 1, 24.0 }, { 1990, 1, 25.0 }, { 1991, 1, 26.0 }, { 1992, 7, 27.0 }, { 1993, 7, 28.0 }, { 1994, 7, 29.0 }, { 1996, 1, 30.0 }, { 1997, 7, 31.0 }, { 1999, 1, 32.0 }, { 2006, 1, 33.0 }, { 2009, 1, 34.0 }, { 2012, 7, 35.0 }, { 2015, 7, 36.0 } }; /* Number of Delta(AT) changes */ enum { NDAT = (int) (sizeof changes / sizeof changes[0]) }; /* Miscellaneous local variables */ int j, i, m; double da, djm0, djm; /* Initialize the result to zero. */ *deltat = da = 0.0; /* If invalid fraction of a day, set error status and give up. */ if (fd < 0.0 || fd > 1.0) return -4; /* Convert the date into an MJD. */ j = iauCal2jd(iy, im, id, &djm0, &djm); /* If invalid year, month, or day, give up. */ if (j < 0) return j; /* If pre-UTC year, set warning status and give up. */ if (iy < changes[0].iyear) return 1; /* If suspiciously late year, set warning status but proceed. */ if (iy > IYV + 5) j = 1; /* Combine year and month to form a date-ordered integer... */ m = 12*iy + im; /* ...and use it to find the preceding table entry. */ for (i = NDAT-1; i >=0; i--) { if (m >= (12 * changes[i].iyear + changes[i].month)) break; } /* Prevent underflow warnings. */ if (i < 0) return -5; /* Get the Delta(AT). */ da = changes[i].delat; /* If pre-1972, adjust for drift. */ if (i < NERA1) da += (djm + fd - drift[i][0]) * drift[i][1]; /* Return the Delta(AT) value. */ *deltat = da; /* Return the status. */ return j; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/dtdb.c0000644000113000011300000017407012507252056013763 0ustar bellsbells#include "sofa.h" double iauDtdb(double date1, double date2, double ut, double elong, double u, double v) /* ** - - - - - - - - ** i a u D t d b ** - - - - - - - - ** ** An approximation to TDB-TT, the difference between barycentric ** dynamical time and terrestrial time, for an observer on the Earth. ** ** The different time scales - proper, coordinate and realized - are ** related to each other: ** ** TAI <- physically realized ** : ** offset <- observed (nominally +32.184s) ** : ** TT <- terrestrial time ** : ** rate adjustment (L_G) <- definition of TT ** : ** TCG <- time scale for GCRS ** : ** "periodic" terms <- iauDtdb is an implementation ** : ** rate adjustment (L_C) <- function of solar-system ephemeris ** : ** TCB <- time scale for BCRS ** : ** rate adjustment (-L_B) <- definition of TDB ** : ** TDB <- TCB scaled to track TT ** : ** "periodic" terms <- -iauDtdb is an approximation ** : ** TT <- terrestrial time ** ** Adopted values for the various constants can be found in the IERS ** Conventions (McCarthy & Petit 2003). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support routine. ** ** Given: ** date1,date2 double date, TDB (Notes 1-3) ** ut double universal time (UT1, fraction of one day) ** elong double longitude (east positive, radians) ** u double distance from Earth spin axis (km) ** v double distance north of equatorial plane (km) ** ** Returned (function value): ** double TDB-TT (seconds) ** ** Notes: ** ** 1) The date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** Although the date is, formally, barycentric dynamical time (TDB), ** the terrestrial dynamical time (TT) can be used with no practical ** effect on the accuracy of the prediction. ** ** 2) TT can be regarded as a coordinate time that is realized as an ** offset of 32.184s from International Atomic Time, TAI. TT is a ** specific linear transformation of geocentric coordinate time TCG, ** which is the time scale for the Geocentric Celestial Reference ** System, GCRS. ** ** 3) TDB is a coordinate time, and is a specific linear transformation ** of barycentric coordinate time TCB, which is the time scale for ** the Barycentric Celestial Reference System, BCRS. ** ** 4) The difference TCG-TCB depends on the masses and positions of the ** bodies of the solar system and the velocity of the Earth. It is ** dominated by a rate difference, the residual being of a periodic ** character. The latter, which is modeled by the present function, ** comprises a main (annual) sinusoidal term of amplitude ** approximately 0.00166 seconds, plus planetary terms up to about ** 20 microseconds, and lunar and diurnal terms up to 2 microseconds. ** These effects come from the changing transverse Doppler effect ** and gravitational red-shift as the observer (on the Earth's ** surface) experiences variations in speed (with respect to the ** BCRS) and gravitational potential. ** ** 5) TDB can be regarded as the same as TCB but with a rate adjustment ** to keep it close to TT, which is convenient for many applications. ** The history of successive attempts to define TDB is set out in ** Resolution 3 adopted by the IAU General Assembly in 2006, which ** defines a fixed TDB(TCB) transformation that is consistent with ** contemporary solar-system ephemerides. Future ephemerides will ** imply slightly changed transformations between TCG and TCB, which ** could introduce a linear drift between TDB and TT; however, any ** such drift is unlikely to exceed 1 nanosecond per century. ** ** 6) The geocentric TDB-TT model used in the present function is that of ** Fairhead & Bretagnon (1990), in its full form. It was originally ** supplied by Fairhead (private communications with P.T.Wallace, ** 1990) as a Fortran subroutine. The present C function contains an ** adaptation of the Fairhead code. The numerical results are ** essentially unaffected by the changes, the differences with ** respect to the Fairhead & Bretagnon original being at the 1e-20 s ** level. ** ** The topocentric part of the model is from Moyer (1981) and ** Murray (1983), with fundamental arguments adapted from ** Simon et al. 1994. It is an approximation to the expression ** ( v / c ) . ( r / c ), where v is the barycentric velocity of ** the Earth, r is the geocentric position of the observer and ** c is the speed of light. ** ** By supplying zeroes for u and v, the topocentric part of the ** model can be nullified, and the function will return the Fairhead ** & Bretagnon result alone. ** ** 7) During the interval 1950-2050, the absolute accuracy is better ** than +/- 3 nanoseconds relative to time ephemerides obtained by ** direct numerical integrations based on the JPL DE405 solar system ** ephemeris. ** ** 8) It must be stressed that the present function is merely a model, ** and that numerical integration of solar-system ephemerides is the ** definitive method for predicting the relationship between TCG and ** TCB and hence between TT and TDB. ** ** References: ** ** Fairhead, L., & Bretagnon, P., Astron.Astrophys., 229, 240-247 ** (1990). ** ** IAU 2006 Resolution 3. ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Moyer, T.D., Cel.Mech., 23, 33 (1981). ** ** Murray, C.A., Vectorial Astrometry, Adam Hilger (1983). ** ** Seidelmann, P.K. et al., Explanatory Supplement to the ** Astronomical Almanac, Chapter 2, University Science Books (1992). ** ** Simon, J.L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G. & Laskar, J., Astron.Astrophys., 282, 663-683 (1994). ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double t, tsol, w, elsun, emsun, d, elj, els, wt, w0, w1, w2, w3, w4, wf, wj; int j; /* ** ===================== ** Fairhead et al. model ** ===================== ** ** 787 sets of three coefficients. ** ** Each set is ** amplitude (microseconds) ** frequency (radians per Julian millennium since J2000.0) ** phase (radians) ** ** Sets 1-474 are the T**0 terms ** " 475-679 " " T**1 ** " 680-764 " " T**2 ** " 765-784 " " T**3 ** " 785-787 " " T**4 */ static const double fairhd[787][3] = { /* 1, 10 */ { 1656.674564e-6, 6283.075849991, 6.240054195 }, { 22.417471e-6, 5753.384884897, 4.296977442 }, { 13.839792e-6, 12566.151699983, 6.196904410 }, { 4.770086e-6, 529.690965095, 0.444401603 }, { 4.676740e-6, 6069.776754553, 4.021195093 }, { 2.256707e-6, 213.299095438, 5.543113262 }, { 1.694205e-6, -3.523118349, 5.025132748 }, { 1.554905e-6, 77713.771467920, 5.198467090 }, { 1.276839e-6, 7860.419392439, 5.988822341 }, { 1.193379e-6, 5223.693919802, 3.649823730 }, /* 11, 20 */ { 1.115322e-6, 3930.209696220, 1.422745069 }, { 0.794185e-6, 11506.769769794, 2.322313077 }, { 0.447061e-6, 26.298319800, 3.615796498 }, { 0.435206e-6, -398.149003408, 4.349338347 }, { 0.600309e-6, 1577.343542448, 2.678271909 }, { 0.496817e-6, 6208.294251424, 5.696701824 }, { 0.486306e-6, 5884.926846583, 0.520007179 }, { 0.432392e-6, 74.781598567, 2.435898309 }, { 0.468597e-6, 6244.942814354, 5.866398759 }, { 0.375510e-6, 5507.553238667, 4.103476804 }, /* 21, 30 */ { 0.243085e-6, -775.522611324, 3.651837925 }, { 0.173435e-6, 18849.227549974, 6.153743485 }, { 0.230685e-6, 5856.477659115, 4.773852582 }, { 0.203747e-6, 12036.460734888, 4.333987818 }, { 0.143935e-6, -796.298006816, 5.957517795 }, { 0.159080e-6, 10977.078804699, 1.890075226 }, { 0.119979e-6, 38.133035638, 4.551585768 }, { 0.118971e-6, 5486.777843175, 1.914547226 }, { 0.116120e-6, 1059.381930189, 0.873504123 }, { 0.137927e-6, 11790.629088659, 1.135934669 }, /* 31, 40 */ { 0.098358e-6, 2544.314419883, 0.092793886 }, { 0.101868e-6, -5573.142801634, 5.984503847 }, { 0.080164e-6, 206.185548437, 2.095377709 }, { 0.079645e-6, 4694.002954708, 2.949233637 }, { 0.062617e-6, 20.775395492, 2.654394814 }, { 0.075019e-6, 2942.463423292, 4.980931759 }, { 0.064397e-6, 5746.271337896, 1.280308748 }, { 0.063814e-6, 5760.498431898, 4.167901731 }, { 0.048042e-6, 2146.165416475, 1.495846011 }, { 0.048373e-6, 155.420399434, 2.251573730 }, /* 41, 50 */ { 0.058844e-6, 426.598190876, 4.839650148 }, { 0.046551e-6, -0.980321068, 0.921573539 }, { 0.054139e-6, 17260.154654690, 3.411091093 }, { 0.042411e-6, 6275.962302991, 2.869567043 }, { 0.040184e-6, -7.113547001, 3.565975565 }, { 0.036564e-6, 5088.628839767, 3.324679049 }, { 0.040759e-6, 12352.852604545, 3.981496998 }, { 0.036507e-6, 801.820931124, 6.248866009 }, { 0.036955e-6, 3154.687084896, 5.071801441 }, { 0.042732e-6, 632.783739313, 5.720622217 }, /* 51, 60 */ { 0.042560e-6, 161000.685737473, 1.270837679 }, { 0.040480e-6, 15720.838784878, 2.546610123 }, { 0.028244e-6, -6286.598968340, 5.069663519 }, { 0.033477e-6, 6062.663207553, 4.144987272 }, { 0.034867e-6, 522.577418094, 5.210064075 }, { 0.032438e-6, 6076.890301554, 0.749317412 }, { 0.030215e-6, 7084.896781115, 3.389610345 }, { 0.029247e-6, -71430.695617928, 4.183178762 }, { 0.033529e-6, 9437.762934887, 2.404714239 }, { 0.032423e-6, 8827.390269875, 5.541473556 }, /* 61, 70 */ { 0.027567e-6, 6279.552731642, 5.040846034 }, { 0.029862e-6, 12139.553509107, 1.770181024 }, { 0.022509e-6, 10447.387839604, 1.460726241 }, { 0.020937e-6, 8429.241266467, 0.652303414 }, { 0.020322e-6, 419.484643875, 3.735430632 }, { 0.024816e-6, -1194.447010225, 1.087136918 }, { 0.025196e-6, 1748.016413067, 2.901883301 }, { 0.021691e-6, 14143.495242431, 5.952658009 }, { 0.017673e-6, 6812.766815086, 3.186129845 }, { 0.022567e-6, 6133.512652857, 3.307984806 }, /* 71, 80 */ { 0.016155e-6, 10213.285546211, 1.331103168 }, { 0.014751e-6, 1349.867409659, 4.308933301 }, { 0.015949e-6, -220.412642439, 4.005298270 }, { 0.015974e-6, -2352.866153772, 6.145309371 }, { 0.014223e-6, 17789.845619785, 2.104551349 }, { 0.017806e-6, 73.297125859, 3.475975097 }, { 0.013671e-6, -536.804512095, 5.971672571 }, { 0.011942e-6, 8031.092263058, 2.053414715 }, { 0.014318e-6, 16730.463689596, 3.016058075 }, { 0.012462e-6, 103.092774219, 1.737438797 }, /* 81, 90 */ { 0.010962e-6, 3.590428652, 2.196567739 }, { 0.015078e-6, 19651.048481098, 3.969480770 }, { 0.010396e-6, 951.718406251, 5.717799605 }, { 0.011707e-6, -4705.732307544, 2.654125618 }, { 0.010453e-6, 5863.591206116, 1.913704550 }, { 0.012420e-6, 4690.479836359, 4.734090399 }, { 0.011847e-6, 5643.178563677, 5.489005403 }, { 0.008610e-6, 3340.612426700, 3.661698944 }, { 0.011622e-6, 5120.601145584, 4.863931876 }, { 0.010825e-6, 553.569402842, 0.842715011 }, /* 91, 100 */ { 0.008666e-6, -135.065080035, 3.293406547 }, { 0.009963e-6, 149.563197135, 4.870690598 }, { 0.009858e-6, 6309.374169791, 1.061816410 }, { 0.007959e-6, 316.391869657, 2.465042647 }, { 0.010099e-6, 283.859318865, 1.942176992 }, { 0.007147e-6, -242.728603974, 3.661486981 }, { 0.007505e-6, 5230.807466803, 4.920937029 }, { 0.008323e-6, 11769.853693166, 1.229392026 }, { 0.007490e-6, -6256.777530192, 3.658444681 }, { 0.009370e-6, 149854.400134205, 0.673880395 }, /* 101, 110 */ { 0.007117e-6, 38.027672636, 5.294249518 }, { 0.007857e-6, 12168.002696575, 0.525733528 }, { 0.007019e-6, 6206.809778716, 0.837688810 }, { 0.006056e-6, 955.599741609, 4.194535082 }, { 0.008107e-6, 13367.972631107, 3.793235253 }, { 0.006731e-6, 5650.292110678, 5.639906583 }, { 0.007332e-6, 36.648562930, 0.114858677 }, { 0.006366e-6, 4164.311989613, 2.262081818 }, { 0.006858e-6, 5216.580372801, 0.642063318 }, { 0.006919e-6, 6681.224853400, 6.018501522 }, /* 111, 120 */ { 0.006826e-6, 7632.943259650, 3.458654112 }, { 0.005308e-6, -1592.596013633, 2.500382359 }, { 0.005096e-6, 11371.704689758, 2.547107806 }, { 0.004841e-6, 5333.900241022, 0.437078094 }, { 0.005582e-6, 5966.683980335, 2.246174308 }, { 0.006304e-6, 11926.254413669, 2.512929171 }, { 0.006603e-6, 23581.258177318, 5.393136889 }, { 0.005123e-6, -1.484472708, 2.999641028 }, { 0.004648e-6, 1589.072895284, 1.275847090 }, { 0.005119e-6, 6438.496249426, 1.486539246 }, /* 121, 130 */ { 0.004521e-6, 4292.330832950, 6.140635794 }, { 0.005680e-6, 23013.539539587, 4.557814849 }, { 0.005488e-6, -3.455808046, 0.090675389 }, { 0.004193e-6, 7234.794256242, 4.869091389 }, { 0.003742e-6, 7238.675591600, 4.691976180 }, { 0.004148e-6, -110.206321219, 3.016173439 }, { 0.004553e-6, 11499.656222793, 5.554998314 }, { 0.004892e-6, 5436.993015240, 1.475415597 }, { 0.004044e-6, 4732.030627343, 1.398784824 }, { 0.004164e-6, 12491.370101415, 5.650931916 }, /* 131, 140 */ { 0.004349e-6, 11513.883316794, 2.181745369 }, { 0.003919e-6, 12528.018664345, 5.823319737 }, { 0.003129e-6, 6836.645252834, 0.003844094 }, { 0.004080e-6, -7058.598461315, 3.690360123 }, { 0.003270e-6, 76.266071276, 1.517189902 }, { 0.002954e-6, 6283.143160294, 4.447203799 }, { 0.002872e-6, 28.449187468, 1.158692983 }, { 0.002881e-6, 735.876513532, 0.349250250 }, { 0.003279e-6, 5849.364112115, 4.893384368 }, { 0.003625e-6, 6209.778724132, 1.473760578 }, /* 141, 150 */ { 0.003074e-6, 949.175608970, 5.185878737 }, { 0.002775e-6, 9917.696874510, 1.030026325 }, { 0.002646e-6, 10973.555686350, 3.918259169 }, { 0.002575e-6, 25132.303399966, 6.109659023 }, { 0.003500e-6, 263.083923373, 1.892100742 }, { 0.002740e-6, 18319.536584880, 4.320519510 }, { 0.002464e-6, 202.253395174, 4.698203059 }, { 0.002409e-6, 2.542797281, 5.325009315 }, { 0.003354e-6, -90955.551694697, 1.942656623 }, { 0.002296e-6, 6496.374945429, 5.061810696 }, /* 151, 160 */ { 0.003002e-6, 6172.869528772, 2.797822767 }, { 0.003202e-6, 27511.467873537, 0.531673101 }, { 0.002954e-6, -6283.008539689, 4.533471191 }, { 0.002353e-6, 639.897286314, 3.734548088 }, { 0.002401e-6, 16200.772724501, 2.605547070 }, { 0.003053e-6, 233141.314403759, 3.029030662 }, { 0.003024e-6, 83286.914269554, 2.355556099 }, { 0.002863e-6, 17298.182327326, 5.240963796 }, { 0.002103e-6, -7079.373856808, 5.756641637 }, { 0.002303e-6, 83996.847317911, 2.013686814 }, /* 161, 170 */ { 0.002303e-6, 18073.704938650, 1.089100410 }, { 0.002381e-6, 63.735898303, 0.759188178 }, { 0.002493e-6, 6386.168624210, 0.645026535 }, { 0.002366e-6, 3.932153263, 6.215885448 }, { 0.002169e-6, 11015.106477335, 4.845297676 }, { 0.002397e-6, 6243.458341645, 3.809290043 }, { 0.002183e-6, 1162.474704408, 6.179611691 }, { 0.002353e-6, 6246.427287062, 4.781719760 }, { 0.002199e-6, -245.831646229, 5.956152284 }, { 0.001729e-6, 3894.181829542, 1.264976635 }, /* 171, 180 */ { 0.001896e-6, -3128.388765096, 4.914231596 }, { 0.002085e-6, 35.164090221, 1.405158503 }, { 0.002024e-6, 14712.317116458, 2.752035928 }, { 0.001737e-6, 6290.189396992, 5.280820144 }, { 0.002229e-6, 491.557929457, 1.571007057 }, { 0.001602e-6, 14314.168113050, 4.203664806 }, { 0.002186e-6, 454.909366527, 1.402101526 }, { 0.001897e-6, 22483.848574493, 4.167932508 }, { 0.001825e-6, -3738.761430108, 0.545828785 }, { 0.001894e-6, 1052.268383188, 5.817167450 }, /* 181, 190 */ { 0.001421e-6, 20.355319399, 2.419886601 }, { 0.001408e-6, 10984.192351700, 2.732084787 }, { 0.001847e-6, 10873.986030480, 2.903477885 }, { 0.001391e-6, -8635.942003763, 0.593891500 }, { 0.001388e-6, -7.046236698, 1.166145902 }, { 0.001810e-6, -88860.057071188, 0.487355242 }, { 0.001288e-6, -1990.745017041, 3.913022880 }, { 0.001297e-6, 23543.230504682, 3.063805171 }, { 0.001335e-6, -266.607041722, 3.995764039 }, { 0.001376e-6, 10969.965257698, 5.152914309 }, /* 191, 200 */ { 0.001745e-6, 244287.600007027, 3.626395673 }, { 0.001649e-6, 31441.677569757, 1.952049260 }, { 0.001416e-6, 9225.539273283, 4.996408389 }, { 0.001238e-6, 4804.209275927, 5.503379738 }, { 0.001472e-6, 4590.910180489, 4.164913291 }, { 0.001169e-6, 6040.347246017, 5.841719038 }, { 0.001039e-6, 5540.085789459, 2.769753519 }, { 0.001004e-6, -170.672870619, 0.755008103 }, { 0.001284e-6, 10575.406682942, 5.306538209 }, { 0.001278e-6, 71.812653151, 4.713486491 }, /* 201, 210 */ { 0.001321e-6, 18209.330263660, 2.624866359 }, { 0.001297e-6, 21228.392023546, 0.382603541 }, { 0.000954e-6, 6282.095528923, 0.882213514 }, { 0.001145e-6, 6058.731054289, 1.169483931 }, { 0.000979e-6, 5547.199336460, 5.448375984 }, { 0.000987e-6, -6262.300454499, 2.656486959 }, { 0.001070e-6, -154717.609887482, 1.827624012 }, { 0.000991e-6, 4701.116501708, 4.387001801 }, { 0.001155e-6, -14.227094002, 3.042700750 }, { 0.001176e-6, 277.034993741, 3.335519004 }, /* 211, 220 */ { 0.000890e-6, 13916.019109642, 5.601498297 }, { 0.000884e-6, -1551.045222648, 1.088831705 }, { 0.000876e-6, 5017.508371365, 3.969902609 }, { 0.000806e-6, 15110.466119866, 5.142876744 }, { 0.000773e-6, -4136.910433516, 0.022067765 }, { 0.001077e-6, 175.166059800, 1.844913056 }, { 0.000954e-6, -6284.056171060, 0.968480906 }, { 0.000737e-6, 5326.786694021, 4.923831588 }, { 0.000845e-6, -433.711737877, 4.749245231 }, { 0.000819e-6, 8662.240323563, 5.991247817 }, /* 221, 230 */ { 0.000852e-6, 199.072001436, 2.189604979 }, { 0.000723e-6, 17256.631536341, 6.068719637 }, { 0.000940e-6, 6037.244203762, 6.197428148 }, { 0.000885e-6, 11712.955318231, 3.280414875 }, { 0.000706e-6, 12559.038152982, 2.824848947 }, { 0.000732e-6, 2379.164473572, 2.501813417 }, { 0.000764e-6, -6127.655450557, 2.236346329 }, { 0.000908e-6, 131.541961686, 2.521257490 }, { 0.000907e-6, 35371.887265976, 3.370195967 }, { 0.000673e-6, 1066.495477190, 3.876512374 }, /* 231, 240 */ { 0.000814e-6, 17654.780539750, 4.627122566 }, { 0.000630e-6, 36.027866677, 0.156368499 }, { 0.000798e-6, 515.463871093, 5.151962502 }, { 0.000798e-6, 148.078724426, 5.909225055 }, { 0.000806e-6, 309.278322656, 6.054064447 }, { 0.000607e-6, -39.617508346, 2.839021623 }, { 0.000601e-6, 412.371096874, 3.984225404 }, { 0.000646e-6, 11403.676995575, 3.852959484 }, { 0.000704e-6, 13521.751441591, 2.300991267 }, { 0.000603e-6, -65147.619767937, 4.140083146 }, /* 241, 250 */ { 0.000609e-6, 10177.257679534, 0.437122327 }, { 0.000631e-6, 5767.611978898, 4.026532329 }, { 0.000576e-6, 11087.285125918, 4.760293101 }, { 0.000674e-6, 14945.316173554, 6.270510511 }, { 0.000726e-6, 5429.879468239, 6.039606892 }, { 0.000710e-6, 28766.924424484, 5.672617711 }, { 0.000647e-6, 11856.218651625, 3.397132627 }, { 0.000678e-6, -5481.254918868, 6.249666675 }, { 0.000618e-6, 22003.914634870, 2.466427018 }, { 0.000738e-6, 6134.997125565, 2.242668890 }, /* 251, 260 */ { 0.000660e-6, 625.670192312, 5.864091907 }, { 0.000694e-6, 3496.032826134, 2.668309141 }, { 0.000531e-6, 6489.261398429, 1.681888780 }, { 0.000611e-6, -143571.324284214, 2.424978312 }, { 0.000575e-6, 12043.574281889, 4.216492400 }, { 0.000553e-6, 12416.588502848, 4.772158039 }, { 0.000689e-6, 4686.889407707, 6.224271088 }, { 0.000495e-6, 7342.457780181, 3.817285811 }, { 0.000567e-6, 3634.621024518, 1.649264690 }, { 0.000515e-6, 18635.928454536, 3.945345892 }, /* 261, 270 */ { 0.000486e-6, -323.505416657, 4.061673868 }, { 0.000662e-6, 25158.601719765, 1.794058369 }, { 0.000509e-6, 846.082834751, 3.053874588 }, { 0.000472e-6, -12569.674818332, 5.112133338 }, { 0.000461e-6, 6179.983075773, 0.513669325 }, { 0.000641e-6, 83467.156352816, 3.210727723 }, { 0.000520e-6, 10344.295065386, 2.445597761 }, { 0.000493e-6, 18422.629359098, 1.676939306 }, { 0.000478e-6, 1265.567478626, 5.487314569 }, { 0.000472e-6, -18.159247265, 1.999707589 }, /* 271, 280 */ { 0.000559e-6, 11190.377900137, 5.783236356 }, { 0.000494e-6, 9623.688276691, 3.022645053 }, { 0.000463e-6, 5739.157790895, 1.411223013 }, { 0.000432e-6, 16858.482532933, 1.179256434 }, { 0.000574e-6, 72140.628666286, 1.758191830 }, { 0.000484e-6, 17267.268201691, 3.290589143 }, { 0.000550e-6, 4907.302050146, 0.864024298 }, { 0.000399e-6, 14.977853527, 2.094441910 }, { 0.000491e-6, 224.344795702, 0.878372791 }, { 0.000432e-6, 20426.571092422, 6.003829241 }, /* 281, 290 */ { 0.000481e-6, 5749.452731634, 4.309591964 }, { 0.000480e-6, 5757.317038160, 1.142348571 }, { 0.000485e-6, 6702.560493867, 0.210580917 }, { 0.000426e-6, 6055.549660552, 4.274476529 }, { 0.000480e-6, 5959.570433334, 5.031351030 }, { 0.000466e-6, 12562.628581634, 4.959581597 }, { 0.000520e-6, 39302.096962196, 4.788002889 }, { 0.000458e-6, 12132.439962106, 1.880103788 }, { 0.000470e-6, 12029.347187887, 1.405611197 }, { 0.000416e-6, -7477.522860216, 1.082356330 }, /* 291, 300 */ { 0.000449e-6, 11609.862544012, 4.179989585 }, { 0.000465e-6, 17253.041107690, 0.353496295 }, { 0.000362e-6, -4535.059436924, 1.583849576 }, { 0.000383e-6, 21954.157609398, 3.747376371 }, { 0.000389e-6, 17.252277143, 1.395753179 }, { 0.000331e-6, 18052.929543158, 0.566790582 }, { 0.000430e-6, 13517.870106233, 0.685827538 }, { 0.000368e-6, -5756.908003246, 0.731374317 }, { 0.000330e-6, 10557.594160824, 3.710043680 }, { 0.000332e-6, 20199.094959633, 1.652901407 }, /* 301, 310 */ { 0.000384e-6, 11933.367960670, 5.827781531 }, { 0.000387e-6, 10454.501386605, 2.541182564 }, { 0.000325e-6, 15671.081759407, 2.178850542 }, { 0.000318e-6, 138.517496871, 2.253253037 }, { 0.000305e-6, 9388.005909415, 0.578340206 }, { 0.000352e-6, 5749.861766548, 3.000297967 }, { 0.000311e-6, 6915.859589305, 1.693574249 }, { 0.000297e-6, 24072.921469776, 1.997249392 }, { 0.000363e-6, -640.877607382, 5.071820966 }, { 0.000323e-6, 12592.450019783, 1.072262823 }, /* 311, 320 */ { 0.000341e-6, 12146.667056108, 4.700657997 }, { 0.000290e-6, 9779.108676125, 1.812320441 }, { 0.000342e-6, 6132.028180148, 4.322238614 }, { 0.000329e-6, 6268.848755990, 3.033827743 }, { 0.000374e-6, 17996.031168222, 3.388716544 }, { 0.000285e-6, -533.214083444, 4.687313233 }, { 0.000338e-6, 6065.844601290, 0.877776108 }, { 0.000276e-6, 24.298513841, 0.770299429 }, { 0.000336e-6, -2388.894020449, 5.353796034 }, { 0.000290e-6, 3097.883822726, 4.075291557 }, /* 321, 330 */ { 0.000318e-6, 709.933048357, 5.941207518 }, { 0.000271e-6, 13095.842665077, 3.208912203 }, { 0.000331e-6, 6073.708907816, 4.007881169 }, { 0.000292e-6, 742.990060533, 2.714333592 }, { 0.000362e-6, 29088.811415985, 3.215977013 }, { 0.000280e-6, 12359.966151546, 0.710872502 }, { 0.000267e-6, 10440.274292604, 4.730108488 }, { 0.000262e-6, 838.969287750, 1.327720272 }, { 0.000250e-6, 16496.361396202, 0.898769761 }, { 0.000325e-6, 20597.243963041, 0.180044365 }, /* 331, 340 */ { 0.000268e-6, 6148.010769956, 5.152666276 }, { 0.000284e-6, 5636.065016677, 5.655385808 }, { 0.000301e-6, 6080.822454817, 2.135396205 }, { 0.000294e-6, -377.373607916, 3.708784168 }, { 0.000236e-6, 2118.763860378, 1.733578756 }, { 0.000234e-6, 5867.523359379, 5.575209112 }, { 0.000268e-6, -226858.238553767, 0.069432392 }, { 0.000265e-6, 167283.761587465, 4.369302826 }, { 0.000280e-6, 28237.233459389, 5.304829118 }, { 0.000292e-6, 12345.739057544, 4.096094132 }, /* 341, 350 */ { 0.000223e-6, 19800.945956225, 3.069327406 }, { 0.000301e-6, 43232.306658416, 6.205311188 }, { 0.000264e-6, 18875.525869774, 1.417263408 }, { 0.000304e-6, -1823.175188677, 3.409035232 }, { 0.000301e-6, 109.945688789, 0.510922054 }, { 0.000260e-6, 813.550283960, 2.389438934 }, { 0.000299e-6, 316428.228673312, 5.384595078 }, { 0.000211e-6, 5756.566278634, 3.789392838 }, { 0.000209e-6, 5750.203491159, 1.661943545 }, { 0.000240e-6, 12489.885628707, 5.684549045 }, /* 351, 360 */ { 0.000216e-6, 6303.851245484, 3.862942261 }, { 0.000203e-6, 1581.959348283, 5.549853589 }, { 0.000200e-6, 5642.198242609, 1.016115785 }, { 0.000197e-6, -70.849445304, 4.690702525 }, { 0.000227e-6, 6287.008003254, 2.911891613 }, { 0.000197e-6, 533.623118358, 1.048982898 }, { 0.000205e-6, -6279.485421340, 1.829362730 }, { 0.000209e-6, -10988.808157535, 2.636140084 }, { 0.000208e-6, -227.526189440, 4.127883842 }, { 0.000191e-6, 415.552490612, 4.401165650 }, /* 361, 370 */ { 0.000190e-6, 29296.615389579, 4.175658539 }, { 0.000264e-6, 66567.485864652, 4.601102551 }, { 0.000256e-6, -3646.350377354, 0.506364778 }, { 0.000188e-6, 13119.721102825, 2.032195842 }, { 0.000185e-6, -209.366942175, 4.694756586 }, { 0.000198e-6, 25934.124331089, 3.832703118 }, { 0.000195e-6, 4061.219215394, 3.308463427 }, { 0.000234e-6, 5113.487598583, 1.716090661 }, { 0.000188e-6, 1478.866574064, 5.686865780 }, { 0.000222e-6, 11823.161639450, 1.942386641 }, /* 371, 380 */ { 0.000181e-6, 10770.893256262, 1.999482059 }, { 0.000171e-6, 6546.159773364, 1.182807992 }, { 0.000206e-6, 70.328180442, 5.934076062 }, { 0.000169e-6, 20995.392966449, 2.169080622 }, { 0.000191e-6, 10660.686935042, 5.405515999 }, { 0.000228e-6, 33019.021112205, 4.656985514 }, { 0.000184e-6, -4933.208440333, 3.327476868 }, { 0.000220e-6, -135.625325010, 1.765430262 }, { 0.000166e-6, 23141.558382925, 3.454132746 }, { 0.000191e-6, 6144.558353121, 5.020393445 }, /* 381, 390 */ { 0.000180e-6, 6084.003848555, 0.602182191 }, { 0.000163e-6, 17782.732072784, 4.960593133 }, { 0.000225e-6, 16460.333529525, 2.596451817 }, { 0.000222e-6, 5905.702242076, 3.731990323 }, { 0.000204e-6, 227.476132789, 5.636192701 }, { 0.000159e-6, 16737.577236597, 3.600691544 }, { 0.000200e-6, 6805.653268085, 0.868220961 }, { 0.000187e-6, 11919.140866668, 2.629456641 }, { 0.000161e-6, 127.471796607, 2.862574720 }, { 0.000205e-6, 6286.666278643, 1.742882331 }, /* 391, 400 */ { 0.000189e-6, 153.778810485, 4.812372643 }, { 0.000168e-6, 16723.350142595, 0.027860588 }, { 0.000149e-6, 11720.068865232, 0.659721876 }, { 0.000189e-6, 5237.921013804, 5.245313000 }, { 0.000143e-6, 6709.674040867, 4.317625647 }, { 0.000146e-6, 4487.817406270, 4.815297007 }, { 0.000144e-6, -664.756045130, 5.381366880 }, { 0.000175e-6, 5127.714692584, 4.728443327 }, { 0.000162e-6, 6254.626662524, 1.435132069 }, { 0.000187e-6, 47162.516354635, 1.354371923 }, /* 401, 410 */ { 0.000146e-6, 11080.171578918, 3.369695406 }, { 0.000180e-6, -348.924420448, 2.490902145 }, { 0.000148e-6, 151.047669843, 3.799109588 }, { 0.000157e-6, 6197.248551160, 1.284375887 }, { 0.000167e-6, 146.594251718, 0.759969109 }, { 0.000133e-6, -5331.357443741, 5.409701889 }, { 0.000154e-6, 95.979227218, 3.366890614 }, { 0.000148e-6, -6418.140930027, 3.384104996 }, { 0.000128e-6, -6525.804453965, 3.803419985 }, { 0.000130e-6, 11293.470674356, 0.939039445 }, /* 411, 420 */ { 0.000152e-6, -5729.506447149, 0.734117523 }, { 0.000138e-6, 210.117701700, 2.564216078 }, { 0.000123e-6, 6066.595360816, 4.517099537 }, { 0.000140e-6, 18451.078546566, 0.642049130 }, { 0.000126e-6, 11300.584221356, 3.485280663 }, { 0.000119e-6, 10027.903195729, 3.217431161 }, { 0.000151e-6, 4274.518310832, 4.404359108 }, { 0.000117e-6, 6072.958148291, 0.366324650 }, { 0.000165e-6, -7668.637425143, 4.298212528 }, { 0.000117e-6, -6245.048177356, 5.379518958 }, /* 421, 430 */ { 0.000130e-6, -5888.449964932, 4.527681115 }, { 0.000121e-6, -543.918059096, 6.109429504 }, { 0.000162e-6, 9683.594581116, 5.720092446 }, { 0.000141e-6, 6219.339951688, 0.679068671 }, { 0.000118e-6, 22743.409379516, 4.881123092 }, { 0.000129e-6, 1692.165669502, 0.351407289 }, { 0.000126e-6, 5657.405657679, 5.146592349 }, { 0.000114e-6, 728.762966531, 0.520791814 }, { 0.000120e-6, 52.596639600, 0.948516300 }, { 0.000115e-6, 65.220371012, 3.504914846 }, /* 431, 440 */ { 0.000126e-6, 5881.403728234, 5.577502482 }, { 0.000158e-6, 163096.180360983, 2.957128968 }, { 0.000134e-6, 12341.806904281, 2.598576764 }, { 0.000151e-6, 16627.370915377, 3.985702050 }, { 0.000109e-6, 1368.660252845, 0.014730471 }, { 0.000131e-6, 6211.263196841, 0.085077024 }, { 0.000146e-6, 5792.741760812, 0.708426604 }, { 0.000146e-6, -77.750543984, 3.121576600 }, { 0.000107e-6, 5341.013788022, 0.288231904 }, { 0.000138e-6, 6281.591377283, 2.797450317 }, /* 441, 450 */ { 0.000113e-6, -6277.552925684, 2.788904128 }, { 0.000115e-6, -525.758811831, 5.895222200 }, { 0.000138e-6, 6016.468808270, 6.096188999 }, { 0.000139e-6, 23539.707386333, 2.028195445 }, { 0.000146e-6, -4176.041342449, 4.660008502 }, { 0.000107e-6, 16062.184526117, 4.066520001 }, { 0.000142e-6, 83783.548222473, 2.936315115 }, { 0.000128e-6, 9380.959672717, 3.223844306 }, { 0.000135e-6, 6205.325306007, 1.638054048 }, { 0.000101e-6, 2699.734819318, 5.481603249 }, /* 451, 460 */ { 0.000104e-6, -568.821874027, 2.205734493 }, { 0.000103e-6, 6321.103522627, 2.440421099 }, { 0.000119e-6, 6321.208885629, 2.547496264 }, { 0.000138e-6, 1975.492545856, 2.314608466 }, { 0.000121e-6, 137.033024162, 4.539108237 }, { 0.000123e-6, 19402.796952817, 4.538074405 }, { 0.000119e-6, 22805.735565994, 2.869040566 }, { 0.000133e-6, 64471.991241142, 6.056405489 }, { 0.000129e-6, -85.827298831, 2.540635083 }, { 0.000131e-6, 13613.804277336, 4.005732868 }, /* 461, 470 */ { 0.000104e-6, 9814.604100291, 1.959967212 }, { 0.000112e-6, 16097.679950283, 3.589026260 }, { 0.000123e-6, 2107.034507542, 1.728627253 }, { 0.000121e-6, 36949.230808424, 6.072332087 }, { 0.000108e-6, -12539.853380183, 3.716133846 }, { 0.000113e-6, -7875.671863624, 2.725771122 }, { 0.000109e-6, 4171.425536614, 4.033338079 }, { 0.000101e-6, 6247.911759770, 3.441347021 }, { 0.000113e-6, 7330.728427345, 0.656372122 }, { 0.000113e-6, 51092.726050855, 2.791483066 }, /* 471, 480 */ { 0.000106e-6, 5621.842923210, 1.815323326 }, { 0.000101e-6, 111.430161497, 5.711033677 }, { 0.000103e-6, 909.818733055, 2.812745443 }, { 0.000101e-6, 1790.642637886, 1.965746028 }, /* T */ { 102.156724e-6, 6283.075849991, 4.249032005 }, { 1.706807e-6, 12566.151699983, 4.205904248 }, { 0.269668e-6, 213.299095438, 3.400290479 }, { 0.265919e-6, 529.690965095, 5.836047367 }, { 0.210568e-6, -3.523118349, 6.262738348 }, { 0.077996e-6, 5223.693919802, 4.670344204 }, /* 481, 490 */ { 0.054764e-6, 1577.343542448, 4.534800170 }, { 0.059146e-6, 26.298319800, 1.083044735 }, { 0.034420e-6, -398.149003408, 5.980077351 }, { 0.032088e-6, 18849.227549974, 4.162913471 }, { 0.033595e-6, 5507.553238667, 5.980162321 }, { 0.029198e-6, 5856.477659115, 0.623811863 }, { 0.027764e-6, 155.420399434, 3.745318113 }, { 0.025190e-6, 5746.271337896, 2.980330535 }, { 0.022997e-6, -796.298006816, 1.174411803 }, { 0.024976e-6, 5760.498431898, 2.467913690 }, /* 491, 500 */ { 0.021774e-6, 206.185548437, 3.854787540 }, { 0.017925e-6, -775.522611324, 1.092065955 }, { 0.013794e-6, 426.598190876, 2.699831988 }, { 0.013276e-6, 6062.663207553, 5.845801920 }, { 0.011774e-6, 12036.460734888, 2.292832062 }, { 0.012869e-6, 6076.890301554, 5.333425680 }, { 0.012152e-6, 1059.381930189, 6.222874454 }, { 0.011081e-6, -7.113547001, 5.154724984 }, { 0.010143e-6, 4694.002954708, 4.044013795 }, { 0.009357e-6, 5486.777843175, 3.416081409 }, /* 501, 510 */ { 0.010084e-6, 522.577418094, 0.749320262 }, { 0.008587e-6, 10977.078804699, 2.777152598 }, { 0.008628e-6, 6275.962302991, 4.562060226 }, { 0.008158e-6, -220.412642439, 5.806891533 }, { 0.007746e-6, 2544.314419883, 1.603197066 }, { 0.007670e-6, 2146.165416475, 3.000200440 }, { 0.007098e-6, 74.781598567, 0.443725817 }, { 0.006180e-6, -536.804512095, 1.302642751 }, { 0.005818e-6, 5088.628839767, 4.827723531 }, { 0.004945e-6, -6286.598968340, 0.268305170 }, /* 511, 520 */ { 0.004774e-6, 1349.867409659, 5.808636673 }, { 0.004687e-6, -242.728603974, 5.154890570 }, { 0.006089e-6, 1748.016413067, 4.403765209 }, { 0.005975e-6, -1194.447010225, 2.583472591 }, { 0.004229e-6, 951.718406251, 0.931172179 }, { 0.005264e-6, 553.569402842, 2.336107252 }, { 0.003049e-6, 5643.178563677, 1.362634430 }, { 0.002974e-6, 6812.766815086, 1.583012668 }, { 0.003403e-6, -2352.866153772, 2.552189886 }, { 0.003030e-6, 419.484643875, 5.286473844 }, /* 521, 530 */ { 0.003210e-6, -7.046236698, 1.863796539 }, { 0.003058e-6, 9437.762934887, 4.226420633 }, { 0.002589e-6, 12352.852604545, 1.991935820 }, { 0.002927e-6, 5216.580372801, 2.319951253 }, { 0.002425e-6, 5230.807466803, 3.084752833 }, { 0.002656e-6, 3154.687084896, 2.487447866 }, { 0.002445e-6, 10447.387839604, 2.347139160 }, { 0.002990e-6, 4690.479836359, 6.235872050 }, { 0.002890e-6, 5863.591206116, 0.095197563 }, { 0.002498e-6, 6438.496249426, 2.994779800 }, /* 531, 540 */ { 0.001889e-6, 8031.092263058, 3.569003717 }, { 0.002567e-6, 801.820931124, 3.425611498 }, { 0.001803e-6, -71430.695617928, 2.192295512 }, { 0.001782e-6, 3.932153263, 5.180433689 }, { 0.001694e-6, -4705.732307544, 4.641779174 }, { 0.001704e-6, -1592.596013633, 3.997097652 }, { 0.001735e-6, 5849.364112115, 0.417558428 }, { 0.001643e-6, 8429.241266467, 2.180619584 }, { 0.001680e-6, 38.133035638, 4.164529426 }, { 0.002045e-6, 7084.896781115, 0.526323854 }, /* 541, 550 */ { 0.001458e-6, 4292.330832950, 1.356098141 }, { 0.001437e-6, 20.355319399, 3.895439360 }, { 0.001738e-6, 6279.552731642, 0.087484036 }, { 0.001367e-6, 14143.495242431, 3.987576591 }, { 0.001344e-6, 7234.794256242, 0.090454338 }, { 0.001438e-6, 11499.656222793, 0.974387904 }, { 0.001257e-6, 6836.645252834, 1.509069366 }, { 0.001358e-6, 11513.883316794, 0.495572260 }, { 0.001628e-6, 7632.943259650, 4.968445721 }, { 0.001169e-6, 103.092774219, 2.838496795 }, /* 551, 560 */ { 0.001162e-6, 4164.311989613, 3.408387778 }, { 0.001092e-6, 6069.776754553, 3.617942651 }, { 0.001008e-6, 17789.845619785, 0.286350174 }, { 0.001008e-6, 639.897286314, 1.610762073 }, { 0.000918e-6, 10213.285546211, 5.532798067 }, { 0.001011e-6, -6256.777530192, 0.661826484 }, { 0.000753e-6, 16730.463689596, 3.905030235 }, { 0.000737e-6, 11926.254413669, 4.641956361 }, { 0.000694e-6, 3340.612426700, 2.111120332 }, { 0.000701e-6, 3894.181829542, 2.760823491 }, /* 561, 570 */ { 0.000689e-6, -135.065080035, 4.768800780 }, { 0.000700e-6, 13367.972631107, 5.760439898 }, { 0.000664e-6, 6040.347246017, 1.051215840 }, { 0.000654e-6, 5650.292110678, 4.911332503 }, { 0.000788e-6, 6681.224853400, 4.699648011 }, { 0.000628e-6, 5333.900241022, 5.024608847 }, { 0.000755e-6, -110.206321219, 4.370971253 }, { 0.000628e-6, 6290.189396992, 3.660478857 }, { 0.000635e-6, 25132.303399966, 4.121051532 }, { 0.000534e-6, 5966.683980335, 1.173284524 }, /* 571, 580 */ { 0.000543e-6, -433.711737877, 0.345585464 }, { 0.000517e-6, -1990.745017041, 5.414571768 }, { 0.000504e-6, 5767.611978898, 2.328281115 }, { 0.000485e-6, 5753.384884897, 1.685874771 }, { 0.000463e-6, 7860.419392439, 5.297703006 }, { 0.000604e-6, 515.463871093, 0.591998446 }, { 0.000443e-6, 12168.002696575, 4.830881244 }, { 0.000570e-6, 199.072001436, 3.899190272 }, { 0.000465e-6, 10969.965257698, 0.476681802 }, { 0.000424e-6, -7079.373856808, 1.112242763 }, /* 581, 590 */ { 0.000427e-6, 735.876513532, 1.994214480 }, { 0.000478e-6, -6127.655450557, 3.778025483 }, { 0.000414e-6, 10973.555686350, 5.441088327 }, { 0.000512e-6, 1589.072895284, 0.107123853 }, { 0.000378e-6, 10984.192351700, 0.915087231 }, { 0.000402e-6, 11371.704689758, 4.107281715 }, { 0.000453e-6, 9917.696874510, 1.917490952 }, { 0.000395e-6, 149.563197135, 2.763124165 }, { 0.000371e-6, 5739.157790895, 3.112111866 }, { 0.000350e-6, 11790.629088659, 0.440639857 }, /* 591, 600 */ { 0.000356e-6, 6133.512652857, 5.444568842 }, { 0.000344e-6, 412.371096874, 5.676832684 }, { 0.000383e-6, 955.599741609, 5.559734846 }, { 0.000333e-6, 6496.374945429, 0.261537984 }, { 0.000340e-6, 6055.549660552, 5.975534987 }, { 0.000334e-6, 1066.495477190, 2.335063907 }, { 0.000399e-6, 11506.769769794, 5.321230910 }, { 0.000314e-6, 18319.536584880, 2.313312404 }, { 0.000424e-6, 1052.268383188, 1.211961766 }, { 0.000307e-6, 63.735898303, 3.169551388 }, /* 601, 610 */ { 0.000329e-6, 29.821438149, 6.106912080 }, { 0.000357e-6, 6309.374169791, 4.223760346 }, { 0.000312e-6, -3738.761430108, 2.180556645 }, { 0.000301e-6, 309.278322656, 1.499984572 }, { 0.000268e-6, 12043.574281889, 2.447520648 }, { 0.000257e-6, 12491.370101415, 3.662331761 }, { 0.000290e-6, 625.670192312, 1.272834584 }, { 0.000256e-6, 5429.879468239, 1.913426912 }, { 0.000339e-6, 3496.032826134, 4.165930011 }, { 0.000283e-6, 3930.209696220, 4.325565754 }, /* 611, 620 */ { 0.000241e-6, 12528.018664345, 3.832324536 }, { 0.000304e-6, 4686.889407707, 1.612348468 }, { 0.000259e-6, 16200.772724501, 3.470173146 }, { 0.000238e-6, 12139.553509107, 1.147977842 }, { 0.000236e-6, 6172.869528772, 3.776271728 }, { 0.000296e-6, -7058.598461315, 0.460368852 }, { 0.000306e-6, 10575.406682942, 0.554749016 }, { 0.000251e-6, 17298.182327326, 0.834332510 }, { 0.000290e-6, 4732.030627343, 4.759564091 }, { 0.000261e-6, 5884.926846583, 0.298259862 }, /* 621, 630 */ { 0.000249e-6, 5547.199336460, 3.749366406 }, { 0.000213e-6, 11712.955318231, 5.415666119 }, { 0.000223e-6, 4701.116501708, 2.703203558 }, { 0.000268e-6, -640.877607382, 0.283670793 }, { 0.000209e-6, 5636.065016677, 1.238477199 }, { 0.000193e-6, 10177.257679534, 1.943251340 }, { 0.000182e-6, 6283.143160294, 2.456157599 }, { 0.000184e-6, -227.526189440, 5.888038582 }, { 0.000182e-6, -6283.008539689, 0.241332086 }, { 0.000228e-6, -6284.056171060, 2.657323816 }, /* 631, 640 */ { 0.000166e-6, 7238.675591600, 5.930629110 }, { 0.000167e-6, 3097.883822726, 5.570955333 }, { 0.000159e-6, -323.505416657, 5.786670700 }, { 0.000154e-6, -4136.910433516, 1.517805532 }, { 0.000176e-6, 12029.347187887, 3.139266834 }, { 0.000167e-6, 12132.439962106, 3.556352289 }, { 0.000153e-6, 202.253395174, 1.463313961 }, { 0.000157e-6, 17267.268201691, 1.586837396 }, { 0.000142e-6, 83996.847317911, 0.022670115 }, { 0.000152e-6, 17260.154654690, 0.708528947 }, /* 641, 650 */ { 0.000144e-6, 6084.003848555, 5.187075177 }, { 0.000135e-6, 5756.566278634, 1.993229262 }, { 0.000134e-6, 5750.203491159, 3.457197134 }, { 0.000144e-6, 5326.786694021, 6.066193291 }, { 0.000160e-6, 11015.106477335, 1.710431974 }, { 0.000133e-6, 3634.621024518, 2.836451652 }, { 0.000134e-6, 18073.704938650, 5.453106665 }, { 0.000134e-6, 1162.474704408, 5.326898811 }, { 0.000128e-6, 5642.198242609, 2.511652591 }, { 0.000160e-6, 632.783739313, 5.628785365 }, /* 651, 660 */ { 0.000132e-6, 13916.019109642, 0.819294053 }, { 0.000122e-6, 14314.168113050, 5.677408071 }, { 0.000125e-6, 12359.966151546, 5.251984735 }, { 0.000121e-6, 5749.452731634, 2.210924603 }, { 0.000136e-6, -245.831646229, 1.646502367 }, { 0.000120e-6, 5757.317038160, 3.240883049 }, { 0.000134e-6, 12146.667056108, 3.059480037 }, { 0.000137e-6, 6206.809778716, 1.867105418 }, { 0.000141e-6, 17253.041107690, 2.069217456 }, { 0.000129e-6, -7477.522860216, 2.781469314 }, /* 661, 670 */ { 0.000116e-6, 5540.085789459, 4.281176991 }, { 0.000116e-6, 9779.108676125, 3.320925381 }, { 0.000129e-6, 5237.921013804, 3.497704076 }, { 0.000113e-6, 5959.570433334, 0.983210840 }, { 0.000122e-6, 6282.095528923, 2.674938860 }, { 0.000140e-6, -11.045700264, 4.957936982 }, { 0.000108e-6, 23543.230504682, 1.390113589 }, { 0.000106e-6, -12569.674818332, 0.429631317 }, { 0.000110e-6, -266.607041722, 5.501340197 }, { 0.000115e-6, 12559.038152982, 4.691456618 }, /* 671, 680 */ { 0.000134e-6, -2388.894020449, 0.577313584 }, { 0.000109e-6, 10440.274292604, 6.218148717 }, { 0.000102e-6, -543.918059096, 1.477842615 }, { 0.000108e-6, 21228.392023546, 2.237753948 }, { 0.000101e-6, -4535.059436924, 3.100492232 }, { 0.000103e-6, 76.266071276, 5.594294322 }, { 0.000104e-6, 949.175608970, 5.674287810 }, { 0.000101e-6, 13517.870106233, 2.196632348 }, { 0.000100e-6, 11933.367960670, 4.056084160 }, /* T^2 */ { 4.322990e-6, 6283.075849991, 2.642893748 }, /* 681, 690 */ { 0.406495e-6, 0.000000000, 4.712388980 }, { 0.122605e-6, 12566.151699983, 2.438140634 }, { 0.019476e-6, 213.299095438, 1.642186981 }, { 0.016916e-6, 529.690965095, 4.510959344 }, { 0.013374e-6, -3.523118349, 1.502210314 }, { 0.008042e-6, 26.298319800, 0.478549024 }, { 0.007824e-6, 155.420399434, 5.254710405 }, { 0.004894e-6, 5746.271337896, 4.683210850 }, { 0.004875e-6, 5760.498431898, 0.759507698 }, { 0.004416e-6, 5223.693919802, 6.028853166 }, /* 691, 700 */ { 0.004088e-6, -7.113547001, 0.060926389 }, { 0.004433e-6, 77713.771467920, 3.627734103 }, { 0.003277e-6, 18849.227549974, 2.327912542 }, { 0.002703e-6, 6062.663207553, 1.271941729 }, { 0.003435e-6, -775.522611324, 0.747446224 }, { 0.002618e-6, 6076.890301554, 3.633715689 }, { 0.003146e-6, 206.185548437, 5.647874613 }, { 0.002544e-6, 1577.343542448, 6.232904270 }, { 0.002218e-6, -220.412642439, 1.309509946 }, { 0.002197e-6, 5856.477659115, 2.407212349 }, /* 701, 710 */ { 0.002897e-6, 5753.384884897, 5.863842246 }, { 0.001766e-6, 426.598190876, 0.754113147 }, { 0.001738e-6, -796.298006816, 2.714942671 }, { 0.001695e-6, 522.577418094, 2.629369842 }, { 0.001584e-6, 5507.553238667, 1.341138229 }, { 0.001503e-6, -242.728603974, 0.377699736 }, { 0.001552e-6, -536.804512095, 2.904684667 }, { 0.001370e-6, -398.149003408, 1.265599125 }, { 0.001889e-6, -5573.142801634, 4.413514859 }, { 0.001722e-6, 6069.776754553, 2.445966339 }, /* 711, 720 */ { 0.001124e-6, 1059.381930189, 5.041799657 }, { 0.001258e-6, 553.569402842, 3.849557278 }, { 0.000831e-6, 951.718406251, 2.471094709 }, { 0.000767e-6, 4694.002954708, 5.363125422 }, { 0.000756e-6, 1349.867409659, 1.046195744 }, { 0.000775e-6, -11.045700264, 0.245548001 }, { 0.000597e-6, 2146.165416475, 4.543268798 }, { 0.000568e-6, 5216.580372801, 4.178853144 }, { 0.000711e-6, 1748.016413067, 5.934271972 }, { 0.000499e-6, 12036.460734888, 0.624434410 }, /* 721, 730 */ { 0.000671e-6, -1194.447010225, 4.136047594 }, { 0.000488e-6, 5849.364112115, 2.209679987 }, { 0.000621e-6, 6438.496249426, 4.518860804 }, { 0.000495e-6, -6286.598968340, 1.868201275 }, { 0.000456e-6, 5230.807466803, 1.271231591 }, { 0.000451e-6, 5088.628839767, 0.084060889 }, { 0.000435e-6, 5643.178563677, 3.324456609 }, { 0.000387e-6, 10977.078804699, 4.052488477 }, { 0.000547e-6, 161000.685737473, 2.841633844 }, { 0.000522e-6, 3154.687084896, 2.171979966 }, /* 731, 740 */ { 0.000375e-6, 5486.777843175, 4.983027306 }, { 0.000421e-6, 5863.591206116, 4.546432249 }, { 0.000439e-6, 7084.896781115, 0.522967921 }, { 0.000309e-6, 2544.314419883, 3.172606705 }, { 0.000347e-6, 4690.479836359, 1.479586566 }, { 0.000317e-6, 801.820931124, 3.553088096 }, { 0.000262e-6, 419.484643875, 0.606635550 }, { 0.000248e-6, 6836.645252834, 3.014082064 }, { 0.000245e-6, -1592.596013633, 5.519526220 }, { 0.000225e-6, 4292.330832950, 2.877956536 }, /* 741, 750 */ { 0.000214e-6, 7234.794256242, 1.605227587 }, { 0.000205e-6, 5767.611978898, 0.625804796 }, { 0.000180e-6, 10447.387839604, 3.499954526 }, { 0.000229e-6, 199.072001436, 5.632304604 }, { 0.000214e-6, 639.897286314, 5.960227667 }, { 0.000175e-6, -433.711737877, 2.162417992 }, { 0.000209e-6, 515.463871093, 2.322150893 }, { 0.000173e-6, 6040.347246017, 2.556183691 }, { 0.000184e-6, 6309.374169791, 4.732296790 }, { 0.000227e-6, 149854.400134205, 5.385812217 }, /* 751, 760 */ { 0.000154e-6, 8031.092263058, 5.120720920 }, { 0.000151e-6, 5739.157790895, 4.815000443 }, { 0.000197e-6, 7632.943259650, 0.222827271 }, { 0.000197e-6, 74.781598567, 3.910456770 }, { 0.000138e-6, 6055.549660552, 1.397484253 }, { 0.000149e-6, -6127.655450557, 5.333727496 }, { 0.000137e-6, 3894.181829542, 4.281749907 }, { 0.000135e-6, 9437.762934887, 5.979971885 }, { 0.000139e-6, -2352.866153772, 4.715630782 }, { 0.000142e-6, 6812.766815086, 0.513330157 }, /* 761, 770 */ { 0.000120e-6, -4705.732307544, 0.194160689 }, { 0.000131e-6, -71430.695617928, 0.000379226 }, { 0.000124e-6, 6279.552731642, 2.122264908 }, { 0.000108e-6, -6256.777530192, 0.883445696 }, /* T^3 */ { 0.143388e-6, 6283.075849991, 1.131453581 }, { 0.006671e-6, 12566.151699983, 0.775148887 }, { 0.001480e-6, 155.420399434, 0.480016880 }, { 0.000934e-6, 213.299095438, 6.144453084 }, { 0.000795e-6, 529.690965095, 2.941595619 }, { 0.000673e-6, 5746.271337896, 0.120415406 }, /* 771, 780 */ { 0.000672e-6, 5760.498431898, 5.317009738 }, { 0.000389e-6, -220.412642439, 3.090323467 }, { 0.000373e-6, 6062.663207553, 3.003551964 }, { 0.000360e-6, 6076.890301554, 1.918913041 }, { 0.000316e-6, -21.340641002, 5.545798121 }, { 0.000315e-6, -242.728603974, 1.884932563 }, { 0.000278e-6, 206.185548437, 1.266254859 }, { 0.000238e-6, -536.804512095, 4.532664830 }, { 0.000185e-6, 522.577418094, 4.578313856 }, { 0.000245e-6, 18849.227549974, 0.587467082 }, /* 781, 787 */ { 0.000180e-6, 426.598190876, 5.151178553 }, { 0.000200e-6, 553.569402842, 5.355983739 }, { 0.000141e-6, 5223.693919802, 1.336556009 }, { 0.000104e-6, 5856.477659115, 4.239842759 }, /* T^4 */ { 0.003826e-6, 6283.075849991, 5.705257275 }, { 0.000303e-6, 12566.151699983, 5.407132842 }, { 0.000209e-6, 155.420399434, 1.989815753 } }; /* Time since J2000.0 in Julian millennia. */ t = ((date1 - DJ00) + date2) / DJM; /* ================= */ /* Topocentric terms */ /* ================= */ /* Convert UT to local solar time in radians. */ tsol = fmod(ut, 1.0) * D2PI + elong; /* FUNDAMENTAL ARGUMENTS: Simon et al. 1994. */ /* Combine time argument (millennia) with deg/arcsec factor. */ w = t / 3600.0; /* Sun Mean Longitude. */ elsun = fmod(280.46645683 + 1296027711.03429 * w, 360.0) * DD2R; /* Sun Mean Anomaly. */ emsun = fmod(357.52910918 + 1295965810.481 * w, 360.0) * DD2R; /* Mean Elongation of Moon from Sun. */ d = fmod(297.85019547 + 16029616012.090 * w, 360.0) * DD2R; /* Mean Longitude of Jupiter. */ elj = fmod(34.35151874 + 109306899.89453 * w, 360.0) * DD2R; /* Mean Longitude of Saturn. */ els = fmod(50.07744430 + 44046398.47038 * w, 360.0) * DD2R; /* TOPOCENTRIC TERMS: Moyer 1981 and Murray 1983. */ wt = + 0.00029e-10 * u * sin(tsol + elsun - els) + 0.00100e-10 * u * sin(tsol - 2.0 * emsun) + 0.00133e-10 * u * sin(tsol - d) + 0.00133e-10 * u * sin(tsol + elsun - elj) - 0.00229e-10 * u * sin(tsol + 2.0 * elsun + emsun) - 0.02200e-10 * v * cos(elsun + emsun) + 0.05312e-10 * u * sin(tsol - emsun) - 0.13677e-10 * u * sin(tsol + 2.0 * elsun) - 1.31840e-10 * v * cos(elsun) + 3.17679e-10 * u * sin(tsol); /* ===================== */ /* Fairhead et al. model */ /* ===================== */ /* T**0 */ w0 = 0; for (j = 473; j >= 0; j--) { w0 += fairhd[j][0] * sin(fairhd[j][1] * t + fairhd[j][2]); } /* T**1 */ w1 = 0; for (j = 678; j >= 474; j--) { w1 += fairhd[j][0] * sin(fairhd[j][1] * t + fairhd[j][2]); } /* T**2 */ w2 = 0; for (j = 763; j >= 679; j--) { w2 += fairhd[j][0] * sin(fairhd[j][1] * t + fairhd[j][2]); } /* T**3 */ w3 = 0; for (j = 783; j >= 764; j--) { w3 += fairhd[j][0] * sin(fairhd[j][1] * t + fairhd[j][2]); } /* T**4 */ w4 = 0; for (j = 786; j >= 784; j--) { w4 += fairhd[j][0] * sin(fairhd[j][1] * t + fairhd[j][2]); } /* Multiply by powers of T and combine. */ wf = t * (t * (t * (t * w4 + w3) + w2) + w1) + w0; /* Adjustments to use JPL planetary masses instead of IAU. */ wj = 0.00065e-6 * sin(6069.776754 * t + 4.021194) + 0.00033e-6 * sin( 213.299095 * t + 5.543132) + (-0.00196e-6 * sin(6208.294251 * t + 5.696701)) + (-0.00173e-6 * sin( 74.781599 * t + 2.435900)) + 0.03638e-6 * t * t; /* ============ */ /* Final result */ /* ============ */ /* TDB-TT in seconds. */ w = wt + wf + wj; return w; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/dtf2d.c0000644000113000011300000002223612507252056014045 0ustar bellsbells#include "sofa.h" #include int iauDtf2d(const char *scale, int iy, int im, int id, int ihr, int imn, double sec, double *d1, double *d2) /* ** - - - - - - - - - ** i a u D t f 2 d ** - - - - - - - - - ** ** Encode date and time fields into 2-part Julian Date (or in the case ** of UTC a quasi-JD form that includes special provision for leap ** seconds). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** scale char[] time scale ID (Note 1) ** iy,im,id int year, month, day in Gregorian calendar (Note 2) ** ihr,imn int hour, minute ** sec double seconds ** ** Returned: ** d1,d2 double 2-part Julian Date (Notes 3,4) ** ** Returned (function value): ** int status: +3 = both of next two ** +2 = time is after end of day (Note 5) ** +1 = dubious year (Note 6) ** 0 = OK ** -1 = bad year ** -2 = bad month ** -3 = bad day ** -4 = bad hour ** -5 = bad minute ** -6 = bad second (<0) ** ** Notes: ** ** 1) scale identifies the time scale. Only the value "UTC" (in upper ** case) is significant, and enables handling of leap seconds (see ** Note 4). ** ** 2) For calendar conventions and limitations, see iauCal2jd. ** ** 3) The sum of the results, d1+d2, is Julian Date, where normally d1 ** is the Julian Day Number and d2 is the fraction of a day. In the ** case of UTC, where the use of JD is problematical, special ** conventions apply: see the next note. ** ** 4) JD cannot unambiguously represent UTC during a leap second unless ** special measures are taken. The SOFA internal convention is that ** the quasi-JD day represents UTC days whether the length is 86399, ** 86400 or 86401 SI seconds. In the 1960-1972 era there were ** smaller jumps (in either direction) each time the linear UTC(TAI) ** expression was changed, and these "mini-leaps" are also included ** in the SOFA convention. ** ** 5) The warning status "time is after end of day" usually means that ** the sec argument is greater than 60.0. However, in a day ending ** in a leap second the limit changes to 61.0 (or 59.0 in the case ** of a negative leap second). ** ** 6) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the future ** to be trusted. See iauDat for further details. ** ** 7) Only in the case of continuous and regular time scales (TAI, TT, ** TCG, TCB and TDB) is the result d1+d2 a Julian Date, strictly ** speaking. In the other cases (UT1 and UTC) the result must be ** used with circumspection; in particular the difference between ** two such results cannot be interpreted as a precise time ** interval. ** ** Called: ** iauCal2jd Gregorian calendar to JD ** iauDat delta(AT) = TAI-UTC ** iauJd2cal JD to Gregorian calendar ** ** This revision: 2013 July 26 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int js, iy2, im2, id2; double dj, w, day, seclim, dat0, dat12, dat24, dleap, time; /* Today's Julian Day Number. */ js = iauCal2jd(iy, im, id, &dj, &w); if ( js ) return js; dj += w; /* Day length and final minute length in seconds (provisional). */ day = DAYSEC; seclim = 60.0; /* Deal with the UTC leap second case. */ if ( ! strcmp(scale,"UTC") ) { /* TAI-UTC at 0h today. */ js = iauDat(iy, im, id, 0.0, &dat0); if ( js < 0 ) return js; /* TAI-UTC at 12h today (to detect drift). */ js = iauDat(iy, im, id, 0.5, &dat12); if ( js < 0 ) return js; /* TAI-UTC at 0h tomorrow (to detect jumps). */ js = iauJd2cal ( dj, 1.5, &iy2, &im2, &id2, &w); if ( js ) return js; js = iauDat(iy2, im2, id2, 0.0, &dat24); if ( js < 0 ) return js; /* Any sudden change in TAI-UTC between today and tomorrow. */ dleap = dat24 - (2.0*dat12 - dat0); /* If leap second day, correct the day and final minute lengths. */ day += dleap; if ( ihr == 23 && imn == 59 ) seclim += dleap; /* End of UTC-specific actions. */ } /* Validate the time. */ if ( ihr >= 0 && ihr <= 23 ) { if ( imn >= 0 && imn <= 59 ) { if ( sec >= 0 ) { if ( sec >= seclim ) { js += 2; } } else { js = -6; } } else { js = -5; } } else { js = -4; } if ( js < 0 ) return js; /* The time in days. */ time = ( 60.0 * ( (double) ( 60 * ihr + imn ) ) + sec ) / day; /* Return the date and time. */ *d1 = dj; *d2 = time; /* Status. */ return js; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/ee00a.c0000644000113000011300000001570012507252056013732 0ustar bellsbells#include "sofa.h" double iauEe00a(double date1, double date2) /* ** - - - - - - - - - ** i a u E e 0 0 a ** - - - - - - - - - ** ** Equation of the equinoxes, compatible with IAU 2000 resolutions. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double equation of the equinoxes (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The result, which is in radians, operates in the following sense: ** ** Greenwich apparent ST = GMST + equation of the equinoxes ** ** 3) The result is compatible with the IAU 2000 resolutions. For ** further details, see IERS Conventions 2003 and Capitaine et al. ** (2002). ** ** Called: ** iauPr00 IAU 2000 precession adjustments ** iauObl80 mean obliquity, IAU 1980 ** iauNut00a nutation, IAU 2000A ** iauEe00 equation of the equinoxes, IAU 2000 ** ** References: ** ** Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to ** implement the IAU 2000 definition of UT1", Astronomy & ** Astrophysics, 406, 1135-1149 (2003). ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004). ** ** This revision: 2008 May 16 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double dpsipr, depspr, epsa, dpsi, deps, ee; /* IAU 2000 precession-rate adjustments. */ iauPr00(date1, date2, &dpsipr, &depspr); /* Mean obliquity, consistent with IAU 2000 precession-nutation. */ epsa = iauObl80(date1, date2) + depspr; /* Nutation in longitude. */ iauNut00a(date1, date2, &dpsi, &deps); /* Equation of the equinoxes. */ ee = iauEe00(date1, date2, epsa, dpsi); return ee; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/ee00b.c0000644000113000011300000001641312507252056013735 0ustar bellsbells#include "sofa.h" double iauEe00b(double date1, double date2) /* ** - - - - - - - - - ** i a u E e 0 0 b ** - - - - - - - - - ** ** Equation of the equinoxes, compatible with IAU 2000 resolutions but ** using the truncated nutation model IAU 2000B. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double equation of the equinoxes (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The result, which is in radians, operates in the following sense: ** ** Greenwich apparent ST = GMST + equation of the equinoxes ** ** 3) The result is compatible with the IAU 2000 resolutions except ** that accuracy has been compromised for the sake of speed. For ** further details, see McCarthy & Luzum (2001), IERS Conventions ** 2003 and Capitaine et al. (2003). ** ** Called: ** iauPr00 IAU 2000 precession adjustments ** iauObl80 mean obliquity, IAU 1980 ** iauNut00b nutation, IAU 2000B ** iauEe00 equation of the equinoxes, IAU 2000 ** ** References: ** ** Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to ** implement the IAU 2000 definition of UT1", Astronomy & ** Astrophysics, 406, 1135-1149 (2003) ** ** McCarthy, D.D. & Luzum, B.J., "An abridged model of the ** precession-nutation of the celestial pole", Celestial Mechanics & ** Dynamical Astronomy, 85, 37-49 (2003) ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2008 May 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double dpsipr, depspr, epsa, dpsi, deps, ee; /* IAU 2000 precession-rate adjustments. */ iauPr00(date1, date2, &dpsipr, &depspr); /* Mean obliquity, consistent with IAU 2000 precession-nutation. */ epsa = iauObl80(date1, date2) + depspr; /* Nutation in longitude. */ iauNut00b(date1, date2, &dpsi, &deps); /* Equation of the equinoxes. */ ee = iauEe00(date1, date2, epsa, dpsi); return ee; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/ee00.c0000644000113000011300000001542012507252056013570 0ustar bellsbells#include "sofa.h" double iauEe00(double date1, double date2, double epsa, double dpsi) /* ** - - - - - - - - ** i a u E e 0 0 ** - - - - - - - - ** ** The equation of the equinoxes, compatible with IAU 2000 resolutions, ** given the nutation in longitude and the mean obliquity. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** epsa double mean obliquity (Note 2) ** dpsi double nutation in longitude (Note 3) ** ** Returned (function value): ** double equation of the equinoxes (Note 4) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The obliquity, in radians, is mean of date. ** ** 3) The result, which is in radians, operates in the following sense: ** ** Greenwich apparent ST = GMST + equation of the equinoxes ** ** 4) The result is compatible with the IAU 2000 resolutions. For ** further details, see IERS Conventions 2003 and Capitaine et al. ** (2002). ** ** Called: ** iauEect00 equation of the equinoxes complementary terms ** ** References: ** ** Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to ** implement the IAU 2000 definition of UT1", Astronomy & ** Astrophysics, 406, 1135-1149 (2003) ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2008 May 16 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double ee; /* Equation of the equinoxes. */ ee = dpsi * cos(epsa) + iauEect00(date1, date2); return ee; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/ee06a.c0000644000113000011300000001474712507252056013752 0ustar bellsbells#include "sofa.h" double iauEe06a(double date1, double date2) /* ** - - - - - - - - - ** i a u E e 0 6 a ** - - - - - - - - - ** ** Equation of the equinoxes, compatible with IAU 2000 resolutions and ** IAU 2006/2000A precession-nutation. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double equation of the equinoxes (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The result, which is in radians, operates in the following sense: ** ** Greenwich apparent ST = GMST + equation of the equinoxes ** ** Called: ** iauAnpm normalize angle into range +/- pi ** iauGst06a Greenwich apparent sidereal time, IAU 2006/2000A ** iauGmst06 Greenwich mean sidereal time, IAU 2006 ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), ** IERS Technical Note No. 32, BKG ** ** This revision: 2008 May 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double gst06a, gmst06, ee; /* Apparent and mean sidereal times. */ gst06a = iauGst06a(0.0, 0.0, date1, date2); gmst06 = iauGmst06(0.0, 0.0, date1, date2); /* Equation of the equinoxes. */ ee = iauAnpm(gst06a - gmst06); return ee; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/eect00.c0000644000113000011300000003011612507252056014116 0ustar bellsbells#include "sofa.h" double iauEect00(double date1, double date2) /* ** - - - - - - - - - - ** i a u E e c t 0 0 ** - - - - - - - - - - ** ** Equation of the equinoxes complementary terms, consistent with ** IAU 2000 resolutions. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double complementary terms (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The "complementary terms" are part of the equation of the ** equinoxes (EE), classically the difference between apparent and ** mean Sidereal Time: ** ** GAST = GMST + EE ** ** with: ** ** EE = dpsi * cos(eps) ** ** where dpsi is the nutation in longitude and eps is the obliquity ** of date. However, if the rotation of the Earth were constant in ** an inertial frame the classical formulation would lead to ** apparent irregularities in the UT1 timescale traceable to side- ** effects of precession-nutation. In order to eliminate these ** effects from UT1, "complementary terms" were introduced in 1994 ** (IAU, 1994) and took effect from 1997 (Capitaine and Gontier, ** 1993): ** ** GAST = GMST + CT + EE ** ** By convention, the complementary terms are included as part of ** the equation of the equinoxes rather than as part of the mean ** Sidereal Time. This slightly compromises the "geometrical" ** interpretation of mean sidereal time but is otherwise ** inconsequential. ** ** The present function computes CT in the above expression, ** compatible with IAU 2000 resolutions (Capitaine et al., 2002, and ** IERS Conventions 2003). ** ** Called: ** iauFal03 mean anomaly of the Moon ** iauFalp03 mean anomaly of the Sun ** iauFaf03 mean argument of the latitude of the Moon ** iauFad03 mean elongation of the Moon from the Sun ** iauFaom03 mean longitude of the Moon's ascending node ** iauFave03 mean longitude of Venus ** iauFae03 mean longitude of Earth ** iauFapa03 general accumulated precession in longitude ** ** References: ** ** Capitaine, N. & Gontier, A.-M., Astron. Astrophys., 275, ** 645-650 (1993) ** ** Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to ** implement the IAU 2000 definition of UT1", Astronomy & ** Astrophysics, 406, 1135-1149 (2003) ** ** IAU Resolution C7, Recommendation 3 (1994) ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Time since J2000.0, in Julian centuries */ double t; /* Miscellaneous */ int i, j; double a, s0, s1; /* Fundamental arguments */ double fa[14]; /* Returned value. */ double eect; /* ----------------------------------------- */ /* The series for the EE complementary terms */ /* ----------------------------------------- */ typedef struct { int nfa[8]; /* coefficients of l,l',F,D,Om,LVe,LE,pA */ double s, c; /* sine and cosine coefficients */ } TERM; /* Terms of order t^0 */ static const TERM e0[] = { /* 1-10 */ {{ 0, 0, 0, 0, 1, 0, 0, 0}, 2640.96e-6, -0.39e-6 }, {{ 0, 0, 0, 0, 2, 0, 0, 0}, 63.52e-6, -0.02e-6 }, {{ 0, 0, 2, -2, 3, 0, 0, 0}, 11.75e-6, 0.01e-6 }, {{ 0, 0, 2, -2, 1, 0, 0, 0}, 11.21e-6, 0.01e-6 }, {{ 0, 0, 2, -2, 2, 0, 0, 0}, -4.55e-6, 0.00e-6 }, {{ 0, 0, 2, 0, 3, 0, 0, 0}, 2.02e-6, 0.00e-6 }, {{ 0, 0, 2, 0, 1, 0, 0, 0}, 1.98e-6, 0.00e-6 }, {{ 0, 0, 0, 0, 3, 0, 0, 0}, -1.72e-6, 0.00e-6 }, {{ 0, 1, 0, 0, 1, 0, 0, 0}, -1.41e-6, -0.01e-6 }, {{ 0, 1, 0, 0, -1, 0, 0, 0}, -1.26e-6, -0.01e-6 }, /* 11-20 */ {{ 1, 0, 0, 0, -1, 0, 0, 0}, -0.63e-6, 0.00e-6 }, {{ 1, 0, 0, 0, 1, 0, 0, 0}, -0.63e-6, 0.00e-6 }, {{ 0, 1, 2, -2, 3, 0, 0, 0}, 0.46e-6, 0.00e-6 }, {{ 0, 1, 2, -2, 1, 0, 0, 0}, 0.45e-6, 0.00e-6 }, {{ 0, 0, 4, -4, 4, 0, 0, 0}, 0.36e-6, 0.00e-6 }, {{ 0, 0, 1, -1, 1, -8, 12, 0}, -0.24e-6, -0.12e-6 }, {{ 0, 0, 2, 0, 0, 0, 0, 0}, 0.32e-6, 0.00e-6 }, {{ 0, 0, 2, 0, 2, 0, 0, 0}, 0.28e-6, 0.00e-6 }, {{ 1, 0, 2, 0, 3, 0, 0, 0}, 0.27e-6, 0.00e-6 }, {{ 1, 0, 2, 0, 1, 0, 0, 0}, 0.26e-6, 0.00e-6 }, /* 21-30 */ {{ 0, 0, 2, -2, 0, 0, 0, 0}, -0.21e-6, 0.00e-6 }, {{ 0, 1, -2, 2, -3, 0, 0, 0}, 0.19e-6, 0.00e-6 }, {{ 0, 1, -2, 2, -1, 0, 0, 0}, 0.18e-6, 0.00e-6 }, {{ 0, 0, 0, 0, 0, 8,-13, -1}, -0.10e-6, 0.05e-6 }, {{ 0, 0, 0, 2, 0, 0, 0, 0}, 0.15e-6, 0.00e-6 }, {{ 2, 0, -2, 0, -1, 0, 0, 0}, -0.14e-6, 0.00e-6 }, {{ 1, 0, 0, -2, 1, 0, 0, 0}, 0.14e-6, 0.00e-6 }, {{ 0, 1, 2, -2, 2, 0, 0, 0}, -0.14e-6, 0.00e-6 }, {{ 1, 0, 0, -2, -1, 0, 0, 0}, 0.14e-6, 0.00e-6 }, {{ 0, 0, 4, -2, 4, 0, 0, 0}, 0.13e-6, 0.00e-6 }, /* 31-33 */ {{ 0, 0, 2, -2, 4, 0, 0, 0}, -0.11e-6, 0.00e-6 }, {{ 1, 0, -2, 0, -3, 0, 0, 0}, 0.11e-6, 0.00e-6 }, {{ 1, 0, -2, 0, -1, 0, 0, 0}, 0.11e-6, 0.00e-6 } }; /* Terms of order t^1 */ static const TERM e1[] = { {{ 0, 0, 0, 0, 1, 0, 0, 0}, -0.87e-6, 0.00e-6 } }; /* Number of terms in the series */ const int NE0 = (int) (sizeof e0 / sizeof (TERM)); const int NE1 = (int) (sizeof e1 / sizeof (TERM)); /*--------------------------------------------------------------------*/ /* Interval between fundamental epoch J2000.0 and current date (JC). */ t = ((date1 - DJ00) + date2) / DJC; /* Fundamental Arguments (from IERS Conventions 2003) */ /* Mean anomaly of the Moon. */ fa[0] = iauFal03(t); /* Mean anomaly of the Sun. */ fa[1] = iauFalp03(t); /* Mean longitude of the Moon minus that of the ascending node. */ fa[2] = iauFaf03(t); /* Mean elongation of the Moon from the Sun. */ fa[3] = iauFad03(t); /* Mean longitude of the ascending node of the Moon. */ fa[4] = iauFaom03(t); /* Mean longitude of Venus. */ fa[5] = iauFave03(t); /* Mean longitude of Earth. */ fa[6] = iauFae03(t); /* General precession in longitude. */ fa[7] = iauFapa03(t); /* Evaluate the EE complementary terms. */ s0 = 0.0; s1 = 0.0; for (i = NE0-1; i >= 0; i--) { a = 0.0; for (j = 0; j < 8; j++) { a += (double)(e0[i].nfa[j]) * fa[j]; } s0 += e0[i].s * sin(a) + e0[i].c * cos(a); } for (i = NE1-1; i >= 0; i--) { a = 0.0; for (j = 0; j < 8; j++) { a += (double)(e1[i].nfa[j]) * fa[j]; } s1 += e1[i].s * sin(a) + e1[i].c * cos(a); } eect = (s0 + s1 * t ) * DAS2R; return eect; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/eform.c0000644000113000011300000001504112507252056014146 0ustar bellsbells#include "sofa.h" int iauEform ( int n, double *a, double *f ) /* ** - - - - - - - - - ** i a u E f o r m ** - - - - - - - - - ** ** Earth reference ellipsoids. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** n int ellipsoid identifier (Note 1) ** ** Returned: ** a double equatorial radius (meters, Note 2) ** f double flattening (Note 2) ** ** Returned (function value): ** int status: 0 = OK ** -1 = illegal identifier (Note 3) ** ** Notes: ** ** 1) The identifier n is a number that specifies the choice of ** reference ellipsoid. The following are supported: ** ** n ellipsoid ** ** 1 WGS84 ** 2 GRS80 ** 3 WGS72 ** ** The n value has no significance outside the SOFA software. For ** convenience, symbols WGS84 etc. are defined in sofam.h. ** ** 2) The ellipsoid parameters are returned in the form of equatorial ** radius in meters (a) and flattening (f). The latter is a number ** around 0.00335, i.e. around 1/298. ** ** 3) For the case where an unsupported n value is supplied, zero a and ** f are returned, as well as error status. ** ** References: ** ** Department of Defense World Geodetic System 1984, National ** Imagery and Mapping Agency Technical Report 8350.2, Third ** Edition, p3-2. ** ** Moritz, H., Bull. Geodesique 66-2, 187 (1992). ** ** The Department of Defense World Geodetic System 1972, World ** Geodetic System Committee, May 1974. ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** p220. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Look up a and f for the specified reference ellipsoid. */ switch ( n ) { case WGS84: *a = 6378137.0; *f = 1.0 / 298.257223563; break; case GRS80: *a = 6378137.0; *f = 1.0 / 298.257222101; break; case WGS72: *a = 6378135.0; *f = 1.0 / 298.26; break; default: /* Invalid identifier. */ *a = 0.0; *f = 0.0; return -1; } /* OK status. */ return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/eo06a.c0000644000113000011300000001552712507252056013761 0ustar bellsbells#include "sofa.h" double iauEo06a(double date1, double date2) /* ** - - - - - - - - - ** i a u E o 0 6 a ** - - - - - - - - - ** ** Equation of the origins, IAU 2006 precession and IAU 2000A nutation. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double equation of the origins in radians ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The equation of the origins is the distance between the true ** equinox and the celestial intermediate origin and, equivalently, ** the difference between Earth rotation angle and Greenwich ** apparent sidereal time (ERA-GST). It comprises the precession ** (since J2000.0) in right ascension plus the equation of the ** equinoxes (including the small correction terms). ** ** Called: ** iauPnm06a classical NPB matrix, IAU 2006/2000A ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauS06 the CIO locator s, given X,Y, IAU 2006 ** iauEors equation of the origins, given NPB matrix and s ** ** References: ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 ** ** Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double r[3][3], x, y, s, eo; /* Classical nutation x precession x bias matrix. */ iauPnm06a(date1, date2, r); /* Extract CIP coordinates. */ iauBpn2xy(r, &x, &y); /* The CIO locator, s. */ s = iauS06(date1, date2, x, y); /* Solve for the EO. */ eo = iauEors(r, s); return eo; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/eors.c0000644000113000011300000001370112507252056014007 0ustar bellsbells#include "sofa.h" double iauEors(double rnpb[3][3], double s) /* ** - - - - - - - - ** i a u E o r s ** - - - - - - - - ** ** Equation of the origins, given the classical NPB matrix and the ** quantity s. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rnpb double[3][3] classical nutation x precession x bias matrix ** s double the quantity s (the CIO locator) ** ** Returned (function value): ** double the equation of the origins in radians. ** ** Notes: ** ** 1) The equation of the origins is the distance between the true ** equinox and the celestial intermediate origin and, equivalently, ** the difference between Earth rotation angle and Greenwich ** apparent sidereal time (ERA-GST). It comprises the precession ** (since J2000.0) in right ascension plus the equation of the ** equinoxes (including the small correction terms). ** ** 2) The algorithm is from Wallace & Capitaine (2006). ** ** References: ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 ** ** Wallace, P. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double x, ax, xs, ys, zs, p, q, eo; /* Evaluate Wallace & Capitaine (2006) expression (16). */ x = rnpb[2][0]; ax = x / (1.0 + rnpb[2][2]); xs = 1.0 - ax * x; ys = -ax * rnpb[2][1]; zs = -x; p = rnpb[0][0] * xs + rnpb[0][1] * ys + rnpb[0][2] * zs; q = rnpb[1][0] * xs + rnpb[1][1] * ys + rnpb[1][2] * zs; eo = ((p != 0) || (q != 0)) ? s - atan2(q, p) : s; return eo; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/epb2jd.c0000644000113000011300000001233612507252056014210 0ustar bellsbells#include "sofa.h" void iauEpb2jd(double epb, double *djm0, double *djm) /* ** - - - - - - - - - - ** i a u E p b 2 j d ** - - - - - - - - - - ** ** Besselian Epoch to Julian Date. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** epb double Besselian Epoch (e.g. 1957.3) ** ** Returned: ** djm0 double MJD zero-point: always 2400000.5 ** djm double Modified Julian Date ** ** Note: ** ** The Julian Date is returned in two pieces, in the usual SOFA ** manner, which is designed to preserve time resolution. The ** Julian Date is available as a single number by adding djm0 and ** djm. ** ** Reference: ** ** Lieske, J.H., 1979, Astron.Astrophys. 73, 282. ** ** This revision: 2013 August 13 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { *djm0 = DJM0; *djm = 15019.81352 + (epb - 1900.0) * DTY; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/epb.c0000644000113000011300000001242612507252056013610 0ustar bellsbells#include "sofa.h" double iauEpb(double dj1, double dj2) /* ** - - - - - - - ** i a u E p b ** - - - - - - - ** ** Julian Date to Besselian Epoch. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** dj1,dj2 double Julian Date (see note) ** ** Returned (function value): ** double Besselian Epoch. ** ** Note: ** ** The Julian Date is supplied in two pieces, in the usual SOFA ** manner, which is designed to preserve time resolution. The ** Julian Date is available as a single number by adding dj1 and ** dj2. The maximum resolution is achieved if dj1 is 2451545.0 ** (J2000.0). ** ** Reference: ** ** Lieske, J.H., 1979. Astron.Astrophys., 73, 282. ** ** This revision: 2013 August 21 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* J2000.0-B1900.0 (2415019.81352) in days */ const double D1900 = 36524.68648; return 1900.0 + ((dj1 - DJ00) + (dj2 + D1900)) / DTY; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/epj2jd.c0000644000113000011300000001232212507252056014213 0ustar bellsbells#include "sofa.h" void iauEpj2jd(double epj, double *djm0, double *djm) /* ** - - - - - - - - - - ** i a u E p j 2 j d ** - - - - - - - - - - ** ** Julian Epoch to Julian Date. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** epj double Julian Epoch (e.g. 1996.8) ** ** Returned: ** djm0 double MJD zero-point: always 2400000.5 ** djm double Modified Julian Date ** ** Note: ** ** The Julian Date is returned in two pieces, in the usual SOFA ** manner, which is designed to preserve time resolution. The ** Julian Date is available as a single number by adding djm0 and ** djm. ** ** Reference: ** ** Lieske, J.H., 1979, Astron.Astrophys. 73, 282. ** ** This revision: 2013 August 7 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { *djm0 = DJM0; *djm = DJM00 + (epj - 2000.0) * 365.25; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/epj.c0000644000113000011300000001231612507252056013616 0ustar bellsbells#include "sofa.h" double iauEpj(double dj1, double dj2) /* ** - - - - - - - ** i a u E p j ** - - - - - - - ** ** Julian Date to Julian Epoch. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** dj1,dj2 double Julian Date (see note) ** ** Returned (function value): ** double Julian Epoch ** ** Note: ** ** The Julian Date is supplied in two pieces, in the usual SOFA ** manner, which is designed to preserve time resolution. The ** Julian Date is available as a single number by adding dj1 and ** dj2. The maximum resolution is achieved if dj1 is 2451545.0 ** (J2000.0). ** ** Reference: ** ** Lieske, J.H., 1979, Astron.Astrophys. 73, 282. ** ** This revision: 2013 August 7 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double epj; epj = 2000.0 + ((dj1 - DJ00) + dj2) / DJY; return epj; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/epv00.c0000644000113000011300000045073012507252056014000 0ustar bellsbells#include "sofa.h" int iauEpv00(double date1, double date2, double pvh[2][3], double pvb[2][3]) /* ** - - - - - - - - - ** i a u E p v 0 0 ** - - - - - - - - - ** ** Earth position and velocity, heliocentric and barycentric, with ** respect to the Barycentric Celestial Reference System. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TDB date (Note 1) ** ** Returned: ** pvh double[2][3] heliocentric Earth position/velocity ** pvb double[2][3] barycentric Earth position/velocity ** ** Returned (function value): ** int status: 0 = OK ** +1 = warning: date outside ** the range 1900-2100 AD ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. However, ** the accuracy of the result is more likely to be limited by the ** algorithm itself than the way the date has been expressed. ** ** n.b. TT can be used instead of TDB in most applications. ** ** 2) On return, the arrays pvh and pvb contain the following: ** ** pvh[0][0] x } ** pvh[0][1] y } heliocentric position, AU ** pvh[0][2] z } ** ** pvh[1][0] xdot } ** pvh[1][1] ydot } heliocentric velocity, AU/d ** pvh[1][2] zdot } ** ** pvb[0][0] x } ** pvb[0][1] y } barycentric position, AU ** pvb[0][2] z } ** ** pvb[1][0] xdot } ** pvb[1][1] ydot } barycentric velocity, AU/d ** pvb[1][2] zdot } ** ** The vectors are with respect to the Barycentric Celestial ** Reference System. The time unit is one day in TDB. ** ** 3) The function is a SIMPLIFIED SOLUTION from the planetary theory ** VSOP2000 (X. Moisson, P. Bretagnon, 2001, Celes. Mechanics & ** Dyn. Astron., 80, 3/4, 205-213) and is an adaptation of original ** Fortran code supplied by P. Bretagnon (private comm., 2000). ** ** 4) Comparisons over the time span 1900-2100 with this simplified ** solution and the JPL DE405 ephemeris give the following results: ** ** RMS max ** Heliocentric: ** position error 3.7 11.2 km ** velocity error 1.4 5.0 mm/s ** ** Barycentric: ** position error 4.6 13.4 km ** velocity error 1.4 4.9 mm/s ** ** Comparisons with the JPL DE406 ephemeris show that by 1800 and ** 2200 the position errors are approximately double their 1900-2100 ** size. By 1500 and 2500 the deterioration is a factor of 10 and ** by 1000 and 3000 a factor of 60. The velocity accuracy falls off ** at about half that rate. ** ** 5) It is permissible to use the same array for pvh and pvb, which ** will receive the barycentric values. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* ** Matrix elements for orienting the analytical model to DE405. ** ** The corresponding Euler angles are: ** ** d ' " ** 1st rotation - 23 26 21.4091 about the x-axis (obliquity) ** 2nd rotation + 0.0475 about the z-axis (RA offset) ** ** These were obtained empirically, by comparisons with DE405 over ** 1900-2100. */ static const double am12 = 0.000000211284, am13 = -0.000000091603, am21 = -0.000000230286, am22 = 0.917482137087, am23 = -0.397776982902, am32 = 0.397776982902, am33 = 0.917482137087; /* ** ---------------------- ** Ephemeris Coefficients ** ---------------------- ** ** The ephemeris consists of harmonic terms for predicting (i) the Sun ** to Earth vector and (ii) the Solar-System-barycenter to Sun vector ** respectively. The coefficients are stored in arrays which, although ** 1-demensional, contain groups of three. Each triplet of ** coefficients is the amplitude, phase and frequency for one term in ** the model, and each array contains the number of terms called for by ** the model. ** ** There are eighteen such arrays, named as follows: ** ** array model power of T component ** ** e0x Sun-to-Earth 0 x ** e0y Sun-to-Earth 0 y ** e0z Sun-to-Earth 0 z ** ** e1x Sun-to-Earth 1 x ** e1y Sun-to-Earth 1 y ** e1z Sun-to-Earth 1 z ** ** e2x Sun-to-Earth 2 x ** e2y Sun-to-Earth 2 y ** e2z Sun-to-Earth 2 z ** ** s0x SSB-to-Sun 0 x ** s0y SSB-to-Sun 0 y ** s0z SSB-to-Sun 0 z ** ** s1x SSB-to-Sun 1 x ** s1y SSB-to-Sun 1 y ** s1z SSB-to-Sun 1 z ** ** s2x SSB-to-Sun 2 x ** s2y SSB-to-Sun 2 y ** s2z SSB-to-Sun 2 z */ /* Sun-to-Earth, T^0, X */ static const double e0x[] = { 0.9998292878132e+00, 0.1753485171504e+01, 0.6283075850446e+01, 0.8352579567414e-02, 0.1710344404582e+01, 0.1256615170089e+02, 0.5611445335148e-02, 0.0000000000000e+00, 0.0000000000000e+00, 0.1046664295572e-03, 0.1667225416770e+01, 0.1884922755134e+02, 0.3110842534677e-04, 0.6687513390251e+00, 0.8399684731857e+02, 0.2552413503550e-04, 0.5830637358413e+00, 0.5296909721118e+00, 0.2137207845781e-04, 0.1092330954011e+01, 0.1577343543434e+01, 0.1680240182951e-04, 0.4955366134987e+00, 0.6279552690824e+01, 0.1679012370795e-04, 0.6153014091901e+01, 0.6286599010068e+01, 0.1445526946777e-04, 0.3472744100492e+01, 0.2352866153506e+01, 0.1091038246184e-04, 0.3689845786119e+01, 0.5223693906222e+01, 0.9344399733932e-05, 0.6073934645672e+01, 0.1203646072878e+02, 0.8993182910652e-05, 0.3175705249069e+01, 0.1021328554739e+02, 0.5665546034116e-05, 0.2152484672246e+01, 0.1059381944224e+01, 0.6844146703035e-05, 0.1306964099750e+01, 0.5753384878334e+01, 0.7346610905565e-05, 0.4354980070466e+01, 0.3981490189893e+00, 0.6815396474414e-05, 0.2218229211267e+01, 0.4705732307012e+01, 0.6112787253053e-05, 0.5384788425458e+01, 0.6812766822558e+01, 0.4518120711239e-05, 0.6087604012291e+01, 0.5884926831456e+01, 0.4521963430706e-05, 0.1279424524906e+01, 0.6256777527156e+01, 0.4497426764085e-05, 0.5369129144266e+01, 0.6309374173736e+01, 0.4062190566959e-05, 0.5436473303367e+00, 0.6681224869435e+01, 0.5412193480192e-05, 0.7867838528395e+00, 0.7755226100720e+00, 0.5469839049386e-05, 0.1461440311134e+01, 0.1414349524433e+02, 0.5205264083477e-05, 0.4432944696116e+01, 0.7860419393880e+01, 0.2149759935455e-05, 0.4502237496846e+01, 0.1150676975667e+02, 0.2279109618501e-05, 0.1239441308815e+01, 0.7058598460518e+01, 0.2259282939683e-05, 0.3272430985331e+01, 0.4694002934110e+01, 0.2558950271319e-05, 0.2265471086404e+01, 0.1216800268190e+02, 0.2561581447555e-05, 0.1454740653245e+01, 0.7099330490126e+00, 0.1781441115440e-05, 0.2962068630206e+01, 0.7962980379786e+00, 0.1612005874644e-05, 0.1473255041006e+01, 0.5486777812467e+01, 0.1818630667105e-05, 0.3743903293447e+00, 0.6283008715021e+01, 0.1818601377529e-05, 0.6274174354554e+01, 0.6283142985870e+01, 0.1554475925257e-05, 0.1624110906816e+01, 0.2513230340178e+02, 0.2090948029241e-05, 0.5852052276256e+01, 0.1179062909082e+02, 0.2000176345460e-05, 0.4072093298513e+01, 0.1778984560711e+02, 0.1289535917759e-05, 0.5217019331069e+01, 0.7079373888424e+01, 0.1281135307881e-05, 0.4802054538934e+01, 0.3738761453707e+01, 0.1518229005692e-05, 0.8691914742502e+00, 0.2132990797783e+00, 0.9450128579027e-06, 0.4601859529950e+01, 0.1097707878456e+02, 0.7781119494996e-06, 0.1844352816694e+01, 0.8827390247185e+01, 0.7733407759912e-06, 0.3582790154750e+01, 0.5507553240374e+01, 0.7350644318120e-06, 0.2695277788230e+01, 0.1589072916335e+01, 0.6535928827023e-06, 0.3651327986142e+01, 0.1176985366291e+02, 0.6324624183656e-06, 0.2241302375862e+01, 0.6262300422539e+01, 0.6298565300557e-06, 0.4407122406081e+01, 0.6303851278352e+01, 0.8587037089179e-06, 0.3024307223119e+01, 0.1672837615881e+03, 0.8299954491035e-06, 0.6192539428237e+01, 0.3340612434717e+01, 0.6311263503401e-06, 0.2014758795416e+01, 0.7113454667900e-02, 0.6005646745452e-06, 0.3399500503397e+01, 0.4136910472696e+01, 0.7917715109929e-06, 0.2493386877837e+01, 0.6069776770667e+01, 0.7556958099685e-06, 0.4159491740143e+01, 0.6496374930224e+01, 0.6773228244949e-06, 0.4034162934230e+01, 0.9437762937313e+01, 0.5370708577847e-06, 0.1562219163734e+01, 0.1194447056968e+01, 0.5710804266203e-06, 0.2662730803386e+01, 0.6282095334605e+01, 0.5709824583726e-06, 0.3985828430833e+01, 0.6284056366286e+01, 0.5143950896447e-06, 0.1308144688689e+01, 0.6290189305114e+01, 0.5088010604546e-06, 0.5352817214804e+01, 0.6275962395778e+01, 0.4960369085172e-06, 0.2644267922349e+01, 0.6127655567643e+01, 0.4803137891183e-06, 0.4008844192080e+01, 0.6438496133249e+01, 0.5731747768225e-06, 0.3794550174597e+01, 0.3154687086868e+01, 0.4735947960579e-06, 0.6107118308982e+01, 0.3128388763578e+01, 0.4808348796625e-06, 0.4771458618163e+01, 0.8018209333619e+00, 0.4115073743137e-06, 0.3327111335159e+01, 0.8429241228195e+01, 0.5230575889287e-06, 0.5305708551694e+01, 0.1336797263425e+02, 0.5133977889215e-06, 0.5784230738814e+01, 0.1235285262111e+02, 0.5065815825327e-06, 0.2052064793679e+01, 0.1185621865188e+02, 0.4339831593868e-06, 0.3644994195830e+01, 0.1726015463500e+02, 0.3952928638953e-06, 0.4930376436758e+01, 0.5481254917084e+01, 0.4898498111942e-06, 0.4542084219731e+00, 0.9225539266174e+01, 0.4757490209328e-06, 0.3161126388878e+01, 0.5856477690889e+01, 0.4727701669749e-06, 0.6214993845446e+00, 0.2544314396739e+01, 0.3800966681863e-06, 0.3040132339297e+01, 0.4265981595566e+00, 0.3257301077939e-06, 0.8064977360087e+00, 0.3930209696940e+01, 0.3255810528674e-06, 0.1974147981034e+01, 0.2146165377750e+01, 0.3252029748187e-06, 0.2845924913135e+01, 0.4164311961999e+01, 0.3255505635308e-06, 0.3017900824120e+01, 0.5088628793478e+01, 0.2801345211990e-06, 0.6109717793179e+01, 0.1256967486051e+02, 0.3688987740970e-06, 0.2911550235289e+01, 0.1807370494127e+02, 0.2475153429458e-06, 0.2179146025856e+01, 0.2629832328990e-01, 0.3033457749150e-06, 0.1994161050744e+01, 0.4535059491685e+01, 0.2186743763110e-06, 0.5125687237936e+01, 0.1137170464392e+02, 0.2764777032774e-06, 0.4822646860252e+00, 0.1256262854127e+02, 0.2199028768592e-06, 0.4637633293831e+01, 0.1255903824622e+02, 0.2046482824760e-06, 0.1467038733093e+01, 0.7084896783808e+01, 0.2611209147507e-06, 0.3044718783485e+00, 0.7143069561767e+02, 0.2286079656818e-06, 0.4764220356805e+01, 0.8031092209206e+01, 0.1855071202587e-06, 0.3383637774428e+01, 0.1748016358760e+01, 0.2324669506784e-06, 0.6189088449251e+01, 0.1831953657923e+02, 0.1709528015688e-06, 0.5874966729774e+00, 0.4933208510675e+01, 0.2168156875828e-06, 0.4302994009132e+01, 0.1044738781244e+02, 0.2106675556535e-06, 0.3800475419891e+01, 0.7477522907414e+01, 0.1430213830465e-06, 0.1294660846502e+01, 0.2942463415728e+01, 0.1388396901944e-06, 0.4594797202114e+01, 0.8635942003952e+01, 0.1922258844190e-06, 0.4943044543591e+00, 0.1729818233119e+02, 0.1888460058292e-06, 0.2426943912028e+01, 0.1561374759853e+03, 0.1789449386107e-06, 0.1582973303499e+00, 0.1592596075957e+01, 0.1360803685374e-06, 0.5197240440504e+01, 0.1309584267300e+02, 0.1504038014709e-06, 0.3120360916217e+01, 0.1649636139783e+02, 0.1382769533389e-06, 0.6164702888205e+01, 0.7632943190217e+01, 0.1438059769079e-06, 0.1437423770979e+01, 0.2042657109477e+02, 0.1326303260037e-06, 0.3609688799679e+01, 0.1213955354133e+02, 0.1159244950540e-06, 0.5463018167225e+01, 0.5331357529664e+01, 0.1433118149136e-06, 0.6028909912097e+01, 0.7342457794669e+01, 0.1234623148594e-06, 0.3109645574997e+01, 0.6279485555400e+01, 0.1233949875344e-06, 0.3539359332866e+01, 0.6286666145492e+01, 0.9927196061299e-07, 0.1259321569772e+01, 0.7234794171227e+01, 0.1242302191316e-06, 0.1065949392609e+01, 0.1511046609763e+02, 0.1098402195201e-06, 0.2192508743837e+01, 0.1098880815746e+02, 0.1158191395315e-06, 0.4054411278650e+01, 0.5729506548653e+01, 0.9048475596241e-07, 0.5429764748518e+01, 0.9623688285163e+01, 0.8889853269023e-07, 0.5046586206575e+01, 0.6148010737701e+01, 0.1048694242164e-06, 0.2628858030806e+01, 0.6836645152238e+01, 0.1112308378646e-06, 0.4177292719907e+01, 0.1572083878776e+02, 0.8631729709901e-07, 0.1601345232557e+01, 0.6418140963190e+01, 0.8527816951664e-07, 0.2463888997513e+01, 0.1471231707864e+02, 0.7892139456991e-07, 0.3154022088718e+01, 0.2118763888447e+01, 0.1051782905236e-06, 0.4795035816088e+01, 0.1349867339771e+01, 0.1048219943164e-06, 0.2952983395230e+01, 0.5999216516294e+01, 0.7435760775143e-07, 0.5420547991464e+01, 0.6040347114260e+01, 0.9869574106949e-07, 0.3695646753667e+01, 0.6566935184597e+01, 0.9156886364226e-07, 0.3922675306609e+01, 0.5643178611111e+01, 0.7006834356188e-07, 0.1233968624861e+01, 0.6525804586632e+01, 0.9806170182601e-07, 0.1919542280684e+01, 0.2122839202813e+02, 0.9052289673607e-07, 0.4615902724369e+01, 0.4690479774488e+01, 0.7554200867893e-07, 0.1236863719072e+01, 0.1253985337760e+02, 0.8215741286498e-07, 0.3286800101559e+00, 0.1097355562493e+02, 0.7185178575397e-07, 0.5880942158367e+01, 0.6245048154254e+01, 0.7130726476180e-07, 0.7674871987661e+00, 0.6321103546637e+01, 0.6650894461162e-07, 0.6987129150116e+00, 0.5327476111629e+01, 0.7396888823688e-07, 0.3576824794443e+01, 0.5368044267797e+00, 0.7420588884775e-07, 0.5033615245369e+01, 0.2354323048545e+02, 0.6141181642908e-07, 0.9449927045673e+00, 0.1296430071988e+02, 0.6373557924058e-07, 0.6206342280341e+01, 0.9517183207817e+00, 0.6359474329261e-07, 0.5036079095757e+01, 0.1990745094947e+01, 0.5740173582646e-07, 0.6105106371350e+01, 0.9555997388169e+00, 0.7019864084602e-07, 0.7237747359018e+00, 0.5225775174439e+00, 0.6398054487042e-07, 0.3976367969666e+01, 0.2407292145756e+02, 0.7797092650498e-07, 0.4305423910623e+01, 0.2200391463820e+02, 0.6466760000900e-07, 0.3500136825200e+01, 0.5230807360890e+01, 0.7529417043890e-07, 0.3514779246100e+01, 0.1842262939178e+02, 0.6924571140892e-07, 0.2743457928679e+01, 0.1554202828031e+00, 0.6220798650222e-07, 0.2242598118209e+01, 0.1845107853235e+02, 0.5870209391853e-07, 0.2332832707527e+01, 0.6398972393349e+00, 0.6263953473888e-07, 0.2191105358956e+01, 0.6277552955062e+01, 0.6257781390012e-07, 0.4457559396698e+01, 0.6288598745829e+01, 0.5697304945123e-07, 0.3499234761404e+01, 0.1551045220144e+01, 0.6335438746791e-07, 0.6441691079251e+00, 0.5216580451554e+01, 0.6377258441152e-07, 0.2252599151092e+01, 0.5650292065779e+01, 0.6484841818165e-07, 0.1992812417646e+01, 0.1030928125552e+00, 0.4735551485250e-07, 0.3744672082942e+01, 0.1431416805965e+02, 0.4628595996170e-07, 0.1334226211745e+01, 0.5535693017924e+00, 0.6258152336933e-07, 0.4395836159154e+01, 0.2608790314060e+02, 0.6196171366594e-07, 0.2587043007997e+01, 0.8467247584405e+02, 0.6159556952126e-07, 0.4782499769128e+01, 0.2394243902548e+03, 0.4987741172394e-07, 0.7312257619924e+00, 0.7771377146812e+02, 0.5459280703142e-07, 0.3001376372532e+01, 0.6179983037890e+01, 0.4863461189999e-07, 0.3767222128541e+01, 0.9027992316901e+02, 0.5349912093158e-07, 0.3663594450273e+01, 0.6386168663001e+01, 0.5673725607806e-07, 0.4331187919049e+01, 0.6915859635113e+01, 0.4745485060512e-07, 0.5816195745518e+01, 0.6282970628506e+01, 0.4745379005326e-07, 0.8323672435672e+00, 0.6283181072386e+01, 0.4049002796321e-07, 0.3785023976293e+01, 0.6254626709878e+01, 0.4247084014515e-07, 0.2378220728783e+01, 0.7875671926403e+01, 0.4026912363055e-07, 0.2864103423269e+01, 0.6311524991013e+01, 0.4062935011774e-07, 0.2415408595975e+01, 0.3634620989887e+01, 0.5347771048509e-07, 0.3343479309801e+01, 0.2515860172507e+02, 0.4829494136505e-07, 0.2821742398262e+01, 0.5760498333002e+01, 0.4342554404599e-07, 0.5624662458712e+01, 0.7238675589263e+01, 0.4021599184361e-07, 0.5557250275009e+00, 0.1101510648075e+02, 0.4104900474558e-07, 0.3296691780005e+01, 0.6709674010002e+01, 0.4376532905131e-07, 0.3814443999443e+01, 0.6805653367890e+01, 0.3314590480650e-07, 0.3560229189250e+01, 0.1259245002418e+02, 0.3232421839643e-07, 0.5185389180568e+01, 0.1066495398892e+01, 0.3541176318876e-07, 0.3921381909679e+01, 0.9917696840332e+01, 0.3689831242681e-07, 0.4190658955386e+01, 0.1192625446156e+02, 0.3890605376774e-07, 0.5546023371097e+01, 0.7478166569050e-01, 0.3038559339780e-07, 0.6231032794494e+01, 0.1256621883632e+02, 0.3137083969782e-07, 0.6207063419190e+01, 0.4292330755499e+01, 0.4024004081854e-07, 0.1195257375713e+01, 0.1334167431096e+02, 0.3300234879283e-07, 0.1804694240998e+01, 0.1057540660594e+02, 0.3635399155575e-07, 0.5597811343500e+01, 0.6208294184755e+01, 0.3032668691356e-07, 0.3191059366530e+01, 0.1805292951336e+02, 0.2809652069058e-07, 0.4094348032570e+01, 0.3523159621801e-02, 0.3696955383823e-07, 0.5219282738794e+01, 0.5966683958112e+01, 0.3562894142503e-07, 0.1037247544554e+01, 0.6357857516136e+01, 0.3510598524148e-07, 0.1430020816116e+01, 0.6599467742779e+01, 0.3617736142953e-07, 0.3002911403677e+01, 0.6019991944201e+01, 0.2624524910730e-07, 0.2437046757292e+01, 0.6702560555334e+01, 0.2535824204490e-07, 0.1581594689647e+01, 0.3141537925223e+02, 0.3519787226257e-07, 0.5379863121521e+01, 0.2505706758577e+03, 0.2578406709982e-07, 0.4904222639329e+01, 0.1673046366289e+02, 0.3423887981473e-07, 0.3646448997315e+01, 0.6546159756691e+01, 0.2776083886467e-07, 0.3307829300144e+01, 0.1272157198369e+02, 0.3379592818379e-07, 0.1747541251125e+01, 0.1494531617769e+02, 0.3050255426284e-07, 0.1784689432607e-01, 0.4732030630302e+01, 0.2652378350236e-07, 0.4420055276260e+01, 0.5863591145557e+01, 0.2374498173768e-07, 0.3629773929208e+01, 0.2388894113936e+01, 0.2716451255140e-07, 0.3079623706780e+01, 0.1202934727411e+02, 0.3038583699229e-07, 0.3312487903507e+00, 0.1256608456547e+02, 0.2220681228760e-07, 0.5265520401774e+01, 0.1336244973887e+02, 0.3044156540912e-07, 0.4766664081250e+01, 0.2908881142201e+02, 0.2731859923561e-07, 0.5069146530691e+01, 0.1391601904066e+02, 0.2285603018171e-07, 0.5954935112271e+01, 0.6076890225335e+01, 0.2025006454555e-07, 0.4061789589267e+01, 0.4701116388778e+01, 0.2012597519804e-07, 0.2485047705241e+01, 0.6262720680387e+01, 0.2003406962258e-07, 0.4163779209320e+01, 0.6303431020504e+01, 0.2207863441371e-07, 0.6923839133828e+00, 0.6489261475556e+01, 0.2481374305624e-07, 0.5944173595676e+01, 0.1204357418345e+02, 0.2130923288870e-07, 0.4641013671967e+01, 0.5746271423666e+01, 0.2446370543391e-07, 0.6125796518757e+01, 0.1495633313810e+00, 0.1932492759052e-07, 0.2234572324504e+00, 0.1352175143971e+02, 0.2600122568049e-07, 0.4281012405440e+01, 0.4590910121555e+01, 0.2431754047488e-07, 0.1429943874870e+00, 0.1162474756779e+01, 0.1875902869209e-07, 0.9781803816948e+00, 0.6279194432410e+01, 0.1874381139426e-07, 0.5670368130173e+01, 0.6286957268481e+01, 0.2156696047173e-07, 0.2008985006833e+01, 0.1813929450232e+02, 0.1965076182484e-07, 0.2566186202453e+00, 0.4686889479442e+01, 0.2334816372359e-07, 0.4408121891493e+01, 0.1002183730415e+02, 0.1869937408802e-07, 0.5272745038656e+01, 0.2427287361862e+00, 0.2436236460883e-07, 0.4407720479029e+01, 0.9514313292143e+02, 0.1761365216611e-07, 0.1943892315074e+00, 0.1351787002167e+02, 0.2156289480503e-07, 0.1418570924545e+01, 0.6037244212485e+01, 0.2164748979255e-07, 0.4724603439430e+01, 0.2301353951334e+02, 0.2222286670853e-07, 0.2400266874598e+01, 0.1266924451345e+02, 0.2070901414929e-07, 0.5230348028732e+01, 0.6528907488406e+01, 0.1792745177020e-07, 0.2099190328945e+01, 0.6819880277225e+01, 0.1841802068445e-07, 0.3467527844848e+00, 0.6514761976723e+02, 0.1578401631718e-07, 0.7098642356340e+00, 0.2077542790660e-01, 0.1561690152531e-07, 0.5943349620372e+01, 0.6272439236156e+01, 0.1558591045463e-07, 0.7040653478980e+00, 0.6293712464735e+01, 0.1737356469576e-07, 0.4487064760345e+01, 0.1765478049437e+02, 0.1434755619991e-07, 0.2993391570995e+01, 0.1102062672231e+00, 0.1482187806654e-07, 0.2278049198251e+01, 0.1052268489556e+01, 0.1424812827089e-07, 0.1682114725827e+01, 0.1311972100268e+02, 0.1380282448623e-07, 0.3262668602579e+01, 0.1017725758696e+02, 0.1811481244566e-07, 0.3187771221777e+01, 0.1887552587463e+02, 0.1504446185696e-07, 0.5650162308647e+01, 0.7626583626240e-01, 0.1740776154137e-07, 0.5487068607507e+01, 0.1965104848470e+02, 0.1374339536251e-07, 0.5745688172201e+01, 0.6016468784579e+01, 0.1761377477704e-07, 0.5748060203659e+01, 0.2593412433514e+02, 0.1535138225795e-07, 0.6226848505790e+01, 0.9411464614024e+01, 0.1788140543676e-07, 0.6189318878563e+01, 0.3301902111895e+02, 0.1375002807996e-07, 0.5371812884394e+01, 0.6327837846670e+00, 0.1242115758632e-07, 0.1471687569712e+01, 0.3894181736510e+01, 0.1450977333938e-07, 0.4143836662127e+01, 0.1277945078067e+02, 0.1297579575023e-07, 0.9003477661957e+00, 0.6549682916313e+01, 0.1462667934821e-07, 0.5760505536428e+01, 0.1863592847156e+02, 0.1381774374799e-07, 0.1085471729463e+01, 0.2379164476796e+01, 0.1682333169307e-07, 0.5409870870133e+01, 0.1620077269078e+02, 0.1190812918837e-07, 0.1397205174601e+01, 0.1149965630200e+02, 0.1221434762106e-07, 0.9001804809095e+00, 0.1257326515556e+02, 0.1549934644860e-07, 0.4262528275544e+01, 0.1820933031200e+02, 0.1252138953050e-07, 0.1411642012027e+01, 0.6993008899458e+01, 0.1237078905387e-07, 0.2844472403615e+01, 0.2435678079171e+02, 0.1446953389615e-07, 0.5295835522223e+01, 0.3813291813120e-01, 0.1388446457170e-07, 0.4969428135497e+01, 0.2458316379602e+00, 0.1019339179228e-07, 0.2491369561806e+01, 0.6112403035119e+01, 0.1258880815343e-07, 0.4679426248976e+01, 0.5429879531333e+01, 0.1297768238261e-07, 0.1074509953328e+01, 0.1249137003520e+02, 0.9913505718094e-08, 0.4735097918224e+01, 0.6247047890016e+01, 0.9830453155969e-08, 0.4158649187338e+01, 0.6453748665772e+01, 0.1192615865309e-07, 0.3438208613699e+01, 0.6290122169689e+01, 0.9835874798277e-08, 0.1913300781229e+01, 0.6319103810876e+01, 0.9639087569277e-08, 0.9487683644125e+00, 0.8273820945392e+01, 0.1175716107001e-07, 0.3228141664287e+01, 0.6276029531202e+01, 0.1018926508678e-07, 0.2216607854300e+01, 0.1254537627298e+02, 0.9500087869225e-08, 0.2625116459733e+01, 0.1256517118505e+02, 0.9664192916575e-08, 0.5860562449214e+01, 0.6259197520765e+01, 0.9612858712203e-08, 0.7885682917381e+00, 0.6306954180126e+01, 0.1117645675413e-07, 0.3932148831189e+01, 0.1779695906178e+02, 0.1158864052160e-07, 0.9995605521691e+00, 0.1778273215245e+02, 0.9021043467028e-08, 0.5263769742673e+01, 0.6172869583223e+01, 0.8836134773563e-08, 0.1496843220365e+01, 0.1692165728891e+01, 0.1045872200691e-07, 0.7009039517214e+00, 0.2204125344462e+00, 0.1211463487798e-07, 0.4041544938511e+01, 0.8257698122054e+02, 0.8541990804094e-08, 0.1447586692316e+01, 0.6393282117669e+01, 0.1038720703636e-07, 0.4594249718112e+00, 0.1550861511662e+02, 0.1126722351445e-07, 0.3925550579036e+01, 0.2061856251104e+00, 0.8697373859631e-08, 0.4411341856037e+01, 0.9491756770005e+00, 0.8869380028441e-08, 0.2402659724813e+01, 0.3903911373650e+01, 0.9247014693258e-08, 0.1401579743423e+01, 0.6267823317922e+01, 0.9205062930950e-08, 0.5245978000814e+01, 0.6298328382969e+01, 0.8000745038049e-08, 0.3590803356945e+01, 0.2648454860559e+01, 0.9168973650819e-08, 0.2470150501679e+01, 0.1498544001348e+03, 0.1075444949238e-07, 0.1328606161230e+01, 0.3694923081589e+02, 0.7817298525817e-08, 0.6162256225998e+01, 0.4804209201333e+01, 0.9541469226356e-08, 0.3942568967039e+01, 0.1256713221673e+02, 0.9821910122027e-08, 0.2360246287233e+00, 0.1140367694411e+02, 0.9897822023777e-08, 0.4619805634280e+01, 0.2280573557157e+02, 0.7737289283765e-08, 0.3784727847451e+01, 0.7834121070590e+01, 0.9260204034710e-08, 0.2223352487601e+01, 0.2787043132925e+01, 0.7320252888486e-08, 0.1288694636874e+01, 0.6282655592598e+01, 0.7319785780946e-08, 0.5359869567774e+01, 0.6283496108294e+01, 0.7147219933778e-08, 0.5516616675856e+01, 0.1725663147538e+02, 0.7946502829878e-08, 0.2630459984567e+01, 0.1241073141809e+02, 0.9001711808932e-08, 0.2849815827227e+01, 0.6281591679874e+01, 0.8994041507257e-08, 0.3795244450750e+01, 0.6284560021018e+01, 0.8298582787358e-08, 0.5236413127363e+00, 0.1241658836951e+02, 0.8526596520710e-08, 0.4794605424426e+01, 0.1098419223922e+02, 0.8209822103197e-08, 0.1578752370328e+01, 0.1096996532989e+02, 0.6357049861094e-08, 0.5708926113761e+01, 0.1596186371003e+01, 0.7370473179049e-08, 0.3842402530241e+01, 0.4061219149443e+01, 0.7232154664726e-08, 0.3067548981535e+01, 0.1610006857377e+03, 0.6328765494903e-08, 0.1313930030069e+01, 0.1193336791622e+02, 0.8030064908595e-08, 0.3488500408886e+01, 0.8460828644453e+00, 0.6275464259232e-08, 0.1532061626198e+01, 0.8531963191132e+00, 0.7051897446325e-08, 0.3285859929993e+01, 0.5849364236221e+01, 0.6161593705428e-08, 0.1477341999464e+01, 0.5573142801433e+01, 0.7754683957278e-08, 0.1586118663096e+01, 0.8662240327241e+01, 0.5889928990701e-08, 0.1304887868803e+01, 0.1232342296471e+02, 0.5705756047075e-08, 0.4555333589350e+01, 0.1258692712880e+02, 0.5964178808332e-08, 0.3001762842062e+01, 0.5333900173445e+01, 0.6712446027467e-08, 0.4886780007595e+01, 0.1171295538178e+02, 0.5941809275464e-08, 0.4701509603824e+01, 0.9779108567966e+01, 0.5466993627395e-08, 0.4588357817278e+01, 0.1884211409667e+02, 0.6340512090980e-08, 0.1164543038893e+01, 0.5217580628120e+02, 0.6325505710045e-08, 0.3919171259645e+01, 0.1041998632314e+02, 0.6164789509685e-08, 0.2143828253542e+01, 0.6151533897323e+01, 0.5263330812430e-08, 0.6066564434241e+01, 0.1885275071096e+02, 0.5597087780221e-08, 0.2926316429472e+01, 0.4337116142245e+00, 0.5396556236817e-08, 0.3244303591505e+01, 0.6286362197481e+01, 0.5396615148223e-08, 0.3404304703662e+01, 0.6279789503410e+01, 0.7091832443341e-08, 0.8532377803192e+00, 0.4907302013889e+01, 0.6572352589782e-08, 0.4901966774419e+01, 0.1176433076753e+02, 0.5960236060795e-08, 0.1874672315797e+01, 0.1422690933580e-01, 0.5125480043511e-08, 0.3735726064334e+01, 0.1245594543367e+02, 0.5928241866410e-08, 0.4502033899935e+01, 0.6414617803568e+01, 0.5249600357424e-08, 0.4372334799878e+01, 0.1151388321134e+02, 0.6059171276087e-08, 0.2581617302908e+01, 0.6062663316000e+01, 0.5295235081662e-08, 0.2974811513158e+01, 0.3496032717521e+01, 0.5820561875933e-08, 0.1796073748244e+00, 0.2838593341516e+00, 0.4754696606440e-08, 0.1981998136973e+01, 0.3104930017775e+01, 0.6385053548955e-08, 0.2559174171605e+00, 0.6133512519065e+01, 0.6589828273941e-08, 0.2750967106776e+01, 0.4087944051283e+02, 0.5383376567189e-08, 0.6325947523578e+00, 0.2248384854122e+02, 0.5928941683538e-08, 0.1672304519067e+01, 0.1581959461667e+01, 0.4816060709794e-08, 0.3512566172575e+01, 0.9388005868221e+01, 0.6003381586512e-08, 0.5610932219189e+01, 0.5326786718777e+01, 0.5504225393105e-08, 0.4037501131256e+01, 0.6503488384892e+01, 0.5353772620129e-08, 0.6122774968240e+01, 0.1735668374386e+03, 0.5786253768544e-08, 0.5527984999515e+01, 0.1350651127443e+00, 0.5065706702002e-08, 0.9980765573624e+00, 0.1248988586463e+02, 0.5972838885276e-08, 0.6044489493203e+01, 0.2673594526851e+02, 0.5323585877961e-08, 0.3924265998147e+01, 0.4171425416666e+01, 0.5210772682858e-08, 0.6220111376901e+01, 0.2460261242967e+02, 0.4726549040535e-08, 0.3716043206862e+01, 0.7232251527446e+01, 0.6029425105059e-08, 0.8548704071116e+00, 0.3227113045244e+03, 0.4481542826513e-08, 0.1426925072829e+01, 0.5547199253223e+01, 0.5836024505068e-08, 0.7135651752625e-01, 0.7285056171570e+02, 0.4137046613272e-08, 0.5330767643283e+01, 0.1087398597200e+02, 0.5171977473924e-08, 0.4494262335353e+00, 0.1884570439172e+02, 0.5694429833732e-08, 0.2952369582215e+01, 0.9723862754494e+02, 0.4009158925298e-08, 0.3500003416535e+01, 0.6244942932314e+01, 0.4784939596873e-08, 0.6196709413181e+01, 0.2929661536378e+02, 0.3983725022610e-08, 0.5103690031897e+01, 0.4274518229222e+01, 0.3870535232462e-08, 0.3187569587401e+01, 0.6321208768577e+01, 0.5140501213951e-08, 0.1668924357457e+01, 0.1232032006293e+02, 0.3849034819355e-08, 0.4445722510309e+01, 0.1726726808967e+02, 0.4002383075060e-08, 0.5226224152423e+01, 0.7018952447668e+01, 0.3890719543549e-08, 0.4371166550274e+01, 0.1491901785440e+02, 0.4887084607881e-08, 0.5973556689693e+01, 0.1478866649112e+01, 0.3739939287592e-08, 0.2089084714600e+01, 0.6922973089781e+01, 0.5031925918209e-08, 0.4658371936827e+01, 0.1715706182245e+02, 0.4387748764954e-08, 0.4825580552819e+01, 0.2331413144044e+03, 0.4147398098865e-08, 0.3739003524998e+01, 0.1376059875786e+02, 0.3719089993586e-08, 0.1148941386536e+01, 0.6297302759782e+01, 0.3934238461056e-08, 0.1559893008343e+01, 0.7872148766781e+01, 0.3672471375622e-08, 0.5516145383612e+01, 0.6268848941110e+01, 0.3768911277583e-08, 0.6116053700563e+01, 0.4157198507331e+01, 0.4033388417295e-08, 0.5076821746017e+01, 0.1567108171867e+02, 0.3764194617832e-08, 0.8164676232075e+00, 0.3185192151914e+01, 0.4840628226284e-08, 0.1360479453671e+01, 0.1252801878276e+02, 0.4949443923785e-08, 0.2725622229926e+01, 0.1617106187867e+03, 0.4117393089971e-08, 0.6054459628492e+00, 0.5642198095270e+01, 0.3925754020428e-08, 0.8570462135210e+00, 0.2139354194808e+02, 0.3630551757923e-08, 0.3552067338279e+01, 0.6294805223347e+01, 0.3627274802357e-08, 0.3096565085313e+01, 0.6271346477544e+01, 0.3806143885093e-08, 0.6367751709777e+00, 0.1725304118033e+02, 0.4433254641565e-08, 0.4848461503937e+01, 0.7445550607224e+01, 0.3712319846576e-08, 0.1331950643655e+01, 0.4194847048887e+00, 0.3849847534783e-08, 0.4958368297746e+00, 0.9562891316684e+00, 0.3483955430165e-08, 0.2237215515707e+01, 0.1161697602389e+02, 0.3961912730982e-08, 0.3332402188575e+01, 0.2277943724828e+02, 0.3419978244481e-08, 0.5785600576016e+01, 0.1362553364512e+02, 0.3329417758177e-08, 0.9812676559709e-01, 0.1685848245639e+02, 0.4207206893193e-08, 0.9494780468236e+00, 0.2986433403208e+02, 0.3268548976410e-08, 0.1739332095686e+00, 0.5749861718712e+01, 0.3321880082685e-08, 0.1423354800666e+01, 0.6279143387820e+01, 0.4503173010852e-08, 0.2314972675293e+00, 0.1385561574497e+01, 0.4316599090954e-08, 0.1012646782616e+00, 0.4176041334900e+01, 0.3283493323850e-08, 0.5233306881265e+01, 0.6287008313071e+01, 0.3164033542343e-08, 0.4005597257511e+01, 0.2099539292909e+02, 0.4159720956725e-08, 0.5365676242020e+01, 0.5905702259363e+01, 0.3565176892217e-08, 0.4284440620612e+01, 0.3932462625300e-02, 0.3514440950221e-08, 0.4270562636575e+01, 0.7335344340001e+01, 0.3540596871909e-08, 0.5953553201060e+01, 0.1234573916645e+02, 0.2960769905118e-08, 0.1115180417718e+01, 0.2670964694522e+02, 0.2962213739684e-08, 0.3863811918186e+01, 0.6408777551755e+00, 0.3883556700251e-08, 0.1268617928302e+01, 0.6660449441528e+01, 0.2919225516346e-08, 0.4908605223265e+01, 0.1375773836557e+01, 0.3115158863370e-08, 0.3744519976885e+01, 0.3802769619140e-01, 0.4099438144212e-08, 0.4173244670532e+01, 0.4480965020977e+02, 0.2899531858964e-08, 0.5910601428850e+01, 0.2059724391010e+02, 0.3289733429855e-08, 0.2488050078239e+01, 0.1081813534213e+02, 0.3933075612875e-08, 0.1122363652883e+01, 0.3773735910827e+00, 0.3021403764467e-08, 0.4951973724904e+01, 0.2982630633589e+02, 0.2798598949757e-08, 0.5117057845513e+01, 0.1937891852345e+02, 0.3397421302707e-08, 0.6104159180476e+01, 0.6923953605621e+01, 0.3720398002179e-08, 0.1184933429829e+01, 0.3066615496545e+02, 0.3598484186267e-08, 0.3505282086105e+01, 0.6147450479709e+01, 0.3694594027310e-08, 0.2286651088141e+01, 0.2636725487657e+01, 0.2680444152969e-08, 0.1871816775482e+00, 0.6816289982179e+01, 0.3497574865641e-08, 0.3143251755431e+01, 0.6418701221183e+01, 0.3130274129494e-08, 0.2462167316018e+01, 0.1235996607578e+02, 0.3241119069551e-08, 0.4256374004686e+01, 0.1652265972112e+02, 0.2601960842061e-08, 0.4970362941425e+01, 0.1045450126711e+02, 0.2690601527504e-08, 0.2372657824898e+01, 0.3163918923335e+00, 0.2908688152664e-08, 0.4232652627721e+01, 0.2828699048865e+02, 0.3120456131875e-08, 0.3925747001137e+00, 0.2195415756911e+02, 0.3148855423384e-08, 0.3093478330445e+01, 0.1172006883645e+02, 0.3051044261017e-08, 0.5560948248212e+01, 0.6055599646783e+01, 0.2826006876660e-08, 0.5072790310072e+01, 0.5120601093667e+01, 0.3100034191711e-08, 0.4998530231096e+01, 0.1799603123222e+02, 0.2398771640101e-08, 0.2561739802176e+01, 0.6255674361143e+01, 0.2384002842728e-08, 0.4087420284111e+01, 0.6310477339748e+01, 0.2842146517568e-08, 0.2515048217955e+01, 0.5469525544182e+01, 0.2847674371340e-08, 0.5235326497443e+01, 0.1034429499989e+02, 0.2903722140764e-08, 0.1088200795797e+01, 0.6510552054109e+01, 0.3187610710605e-08, 0.4710624424816e+01, 0.1693792562116e+03, 0.3048869992813e-08, 0.2857975896445e+00, 0.8390110365991e+01, 0.2860216950984e-08, 0.2241619020815e+01, 0.2243449970715e+00, 0.2701117683113e-08, 0.6651573305272e-01, 0.6129297044991e+01, 0.2509891590152e-08, 0.1285135324585e+01, 0.1044027435778e+02, 0.2623200252223e-08, 0.2981229834530e+00, 0.6436854655901e+01, 0.2622541669202e-08, 0.6122470726189e+01, 0.9380959548977e+01, 0.2818435667099e-08, 0.4251087148947e+01, 0.5934151399930e+01, 0.2365196797465e-08, 0.3465070460790e+01, 0.2470570524223e+02, 0.2358704646143e-08, 0.5791603815350e+01, 0.8671969964381e+01, 0.2388299481390e-08, 0.4142483772941e+01, 0.7096626156709e+01, 0.1996041217224e-08, 0.2101901889496e+01, 0.1727188400790e+02, 0.2687593060336e-08, 0.1526689456959e+01, 0.7075506709219e+02, 0.2618913670810e-08, 0.2397684236095e+01, 0.6632000300961e+01, 0.2571523050364e-08, 0.5751929456787e+00, 0.6206810014183e+01, 0.2582135006946e-08, 0.5595464352926e+01, 0.4873985990671e+02, 0.2372530190361e-08, 0.5092689490655e+01, 0.1590676413561e+02, 0.2357178484712e-08, 0.4444363527851e+01, 0.3097883698531e+01, 0.2451590394723e-08, 0.3108251687661e+01, 0.6612329252343e+00, 0.2370045949608e-08, 0.2608133861079e+01, 0.3459636466239e+02, 0.2268997267358e-08, 0.3639717753384e+01, 0.2844914056730e-01, 0.1731432137906e-08, 0.1741898445707e+00, 0.2019909489111e+02, 0.1629869741622e-08, 0.3902225646724e+01, 0.3035599730800e+02, 0.2206215801974e-08, 0.4971131250731e+01, 0.6281667977667e+01, 0.2205469554680e-08, 0.1677462357110e+01, 0.6284483723224e+01, 0.2148792362509e-08, 0.4236259604006e+01, 0.1980482729015e+02, 0.1873733657847e-08, 0.5926814998687e+01, 0.2876692439167e+02, 0.2026573758959e-08, 0.4349643351962e+01, 0.2449240616245e+02, 0.1807770325110e-08, 0.5700940482701e+01, 0.2045286941806e+02, 0.1881174408581e-08, 0.6601286363430e+00, 0.2358125818164e+02, 0.1368023671690e-08, 0.2211098592752e+01, 0.2473415438279e+02, 0.1720017916280e-08, 0.4942488551129e+01, 0.1679593901136e+03, 0.1702427665131e-08, 0.1452233856386e+01, 0.3338575901272e+03, 0.1414032510054e-08, 0.5525357721439e+01, 0.1624205518357e+03, 0.1652626045364e-08, 0.4108794283624e+01, 0.8956999012000e+02, 0.1642957769686e-08, 0.7344335209984e+00, 0.5267006960365e+02, 0.1614952403624e-08, 0.3541213951363e+01, 0.3332657872986e+02, 0.1535988291188e-08, 0.4031094072151e+01, 0.3852657435933e+02, 0.1593193738177e-08, 0.4185136203609e+01, 0.2282781046519e+03, 0.1074569126382e-08, 0.1720485636868e+01, 0.8397383534231e+02, 0.1074408214509e-08, 0.2758613420318e+01, 0.8401985929482e+02, 0.9700199670465e-09, 0.4216686842097e+01, 0.7826370942180e+02, 0.1258433517061e-08, 0.2575068876639e+00, 0.3115650189215e+03, 0.1240303229539e-08, 0.4800844956756e+00, 0.1784300471910e+03, 0.9018345948127e-09, 0.3896756361552e+00, 0.5886454391678e+02, 0.1135301432805e-08, 0.3700805023550e+00, 0.7842370451713e+02, 0.9215887951370e-09, 0.4364579276638e+01, 0.1014262087719e+03, 0.1055401054147e-08, 0.2156564222111e+01, 0.5660027930059e+02, 0.1008725979831e-08, 0.5454015785234e+01, 0.4245678405627e+02, 0.7217398104321e-09, 0.1597772562175e+01, 0.2457074661053e+03, 0.6912033134447e-09, 0.5824090621461e+01, 0.1679936946371e+03, 0.6833881523549e-09, 0.3578778482835e+01, 0.6053048899753e+02, 0.4887304205142e-09, 0.3724362812423e+01, 0.9656299901946e+02, 0.5173709754788e-09, 0.5422427507933e+01, 0.2442876000072e+03, 0.4671353097145e-09, 0.2396106924439e+01, 0.1435713242844e+03, 0.5652608439480e-09, 0.2804028838685e+01, 0.8365903305582e+02, 0.5604061331253e-09, 0.1638816006247e+01, 0.8433466158131e+02, 0.4712723365400e-09, 0.8979003224474e+00, 0.3164282286739e+03, 0.4909967465112e-09, 0.3210426725516e+01, 0.4059982187939e+03, 0.4771358267658e-09, 0.5308027211629e+01, 0.1805255418145e+03, 0.3943451445989e-09, 0.2195145341074e+01, 0.2568537517081e+03, 0.3952109120244e-09, 0.5081189491586e+01, 0.2449975330562e+03, 0.3788134594789e-09, 0.4345171264441e+01, 0.1568131045107e+03, 0.3738330190479e-09, 0.2613062847997e+01, 0.3948519331910e+03, 0.3099866678136e-09, 0.2846760817689e+01, 0.1547176098872e+03, 0.2002962716768e-09, 0.4921360989412e+01, 0.2268582385539e+03, 0.2198291338754e-09, 0.1130360117454e+00, 0.1658638954901e+03, 0.1491958330784e-09, 0.4228195232278e+01, 0.2219950288015e+03, 0.1475384076173e-09, 0.3005721811604e+00, 0.3052819430710e+03, 0.1661626624624e-09, 0.7830125621203e+00, 0.2526661704812e+03, 0.9015823460025e-10, 0.3807792942715e+01, 0.4171445043968e+03 }; /* Sun-to-Earth, T^0, Y */ static const double e0y[] = { 0.9998921098898e+00, 0.1826583913846e+00, 0.6283075850446e+01, -0.2442700893735e-01, 0.0000000000000e+00, 0.0000000000000e+00, 0.8352929742915e-02, 0.1395277998680e+00, 0.1256615170089e+02, 0.1046697300177e-03, 0.9641423109763e-01, 0.1884922755134e+02, 0.3110841876663e-04, 0.5381140401712e+01, 0.8399684731857e+02, 0.2570269094593e-04, 0.5301016407128e+01, 0.5296909721118e+00, 0.2147389623610e-04, 0.2662510869850e+01, 0.1577343543434e+01, 0.1680344384050e-04, 0.5207904119704e+01, 0.6279552690824e+01, 0.1679117312193e-04, 0.4582187486968e+01, 0.6286599010068e+01, 0.1440512068440e-04, 0.1900688517726e+01, 0.2352866153506e+01, 0.1135139664999e-04, 0.5273108538556e+01, 0.5223693906222e+01, 0.9345482571018e-05, 0.4503047687738e+01, 0.1203646072878e+02, 0.9007418719568e-05, 0.1605621059637e+01, 0.1021328554739e+02, 0.5671536712314e-05, 0.5812849070861e+00, 0.1059381944224e+01, 0.7451401861666e-05, 0.2807346794836e+01, 0.3981490189893e+00, 0.6393470057114e-05, 0.6029224133855e+01, 0.5753384878334e+01, 0.6814275881697e-05, 0.6472990145974e+00, 0.4705732307012e+01, 0.6113705628887e-05, 0.3813843419700e+01, 0.6812766822558e+01, 0.4503851367273e-05, 0.4527804370996e+01, 0.5884926831456e+01, 0.4522249141926e-05, 0.5991783029224e+01, 0.6256777527156e+01, 0.4501794307018e-05, 0.3798703844397e+01, 0.6309374173736e+01, 0.5514927480180e-05, 0.3961257833388e+01, 0.5507553240374e+01, 0.4062862799995e-05, 0.5256247296369e+01, 0.6681224869435e+01, 0.5414900429712e-05, 0.5499032014097e+01, 0.7755226100720e+00, 0.5463153987424e-05, 0.6173092454097e+01, 0.1414349524433e+02, 0.5071611859329e-05, 0.2870244247651e+01, 0.7860419393880e+01, 0.2195112094455e-05, 0.2952338617201e+01, 0.1150676975667e+02, 0.2279139233919e-05, 0.5951775132933e+01, 0.7058598460518e+01, 0.2278386100876e-05, 0.4845456398785e+01, 0.4694002934110e+01, 0.2559088003308e-05, 0.6945321117311e+00, 0.1216800268190e+02, 0.2561079286856e-05, 0.6167224608301e+01, 0.7099330490126e+00, 0.1792755796387e-05, 0.1400122509632e+01, 0.7962980379786e+00, 0.1818715656502e-05, 0.4703347611830e+01, 0.6283142985870e+01, 0.1818744924791e-05, 0.5086748900237e+01, 0.6283008715021e+01, 0.1554518791390e-05, 0.5331008042713e-01, 0.2513230340178e+02, 0.2063265737239e-05, 0.4283680484178e+01, 0.1179062909082e+02, 0.1497613520041e-05, 0.6074207826073e+01, 0.5486777812467e+01, 0.2000617940427e-05, 0.2501426281450e+01, 0.1778984560711e+02, 0.1289731195580e-05, 0.3646340599536e+01, 0.7079373888424e+01, 0.1282657998934e-05, 0.3232864804902e+01, 0.3738761453707e+01, 0.1528915968658e-05, 0.5581433416669e+01, 0.2132990797783e+00, 0.1187304098432e-05, 0.5453576453694e+01, 0.9437762937313e+01, 0.7842782928118e-06, 0.2823953922273e+00, 0.8827390247185e+01, 0.7352892280868e-06, 0.1124369580175e+01, 0.1589072916335e+01, 0.6570189360797e-06, 0.2089154042840e+01, 0.1176985366291e+02, 0.6324967590410e-06, 0.6704855581230e+00, 0.6262300422539e+01, 0.6298289872283e-06, 0.2836414855840e+01, 0.6303851278352e+01, 0.6476686465855e-06, 0.4852433866467e+00, 0.7113454667900e-02, 0.8587034651234e-06, 0.1453511005668e+01, 0.1672837615881e+03, 0.8068948788113e-06, 0.9224087798609e+00, 0.6069776770667e+01, 0.8353786011661e-06, 0.4631707184895e+01, 0.3340612434717e+01, 0.6009324532132e-06, 0.1829498827726e+01, 0.4136910472696e+01, 0.7558158559566e-06, 0.2588596800317e+01, 0.6496374930224e+01, 0.5809279504503e-06, 0.5516818853476e+00, 0.1097707878456e+02, 0.5374131950254e-06, 0.6275674734960e+01, 0.1194447056968e+01, 0.5711160507326e-06, 0.1091905956872e+01, 0.6282095334605e+01, 0.5710183170746e-06, 0.2415001635090e+01, 0.6284056366286e+01, 0.5144373590610e-06, 0.6020336443438e+01, 0.6290189305114e+01, 0.5103108927267e-06, 0.3775634564605e+01, 0.6275962395778e+01, 0.4960654697891e-06, 0.1073450946756e+01, 0.6127655567643e+01, 0.4786385689280e-06, 0.2431178012310e+01, 0.6438496133249e+01, 0.6109911263665e-06, 0.5343356157914e+01, 0.3154687086868e+01, 0.4839898944024e-06, 0.5830833594047e-01, 0.8018209333619e+00, 0.4734822623919e-06, 0.4536080134821e+01, 0.3128388763578e+01, 0.4834741473290e-06, 0.2585090489754e+00, 0.7084896783808e+01, 0.5134858581156e-06, 0.4213317172603e+01, 0.1235285262111e+02, 0.5064004264978e-06, 0.4814418806478e+00, 0.1185621865188e+02, 0.3753476772761e-06, 0.1599953399788e+01, 0.8429241228195e+01, 0.4935264014283e-06, 0.2157417556873e+01, 0.2544314396739e+01, 0.3950929600897e-06, 0.3359394184254e+01, 0.5481254917084e+01, 0.4895849789777e-06, 0.5165704376558e+01, 0.9225539266174e+01, 0.4215241688886e-06, 0.2065368800993e+01, 0.1726015463500e+02, 0.3796773731132e-06, 0.1468606346612e+01, 0.4265981595566e+00, 0.3114178142515e-06, 0.3615638079474e+01, 0.2146165377750e+01, 0.3260664220838e-06, 0.4417134922435e+01, 0.4164311961999e+01, 0.3976996123008e-06, 0.4700866883004e+01, 0.5856477690889e+01, 0.2801459672924e-06, 0.4538902060922e+01, 0.1256967486051e+02, 0.3638931868861e-06, 0.1334197991475e+01, 0.1807370494127e+02, 0.2487013269476e-06, 0.3749275558275e+01, 0.2629832328990e-01, 0.3034165481994e-06, 0.4236622030873e+00, 0.4535059491685e+01, 0.2676278825586e-06, 0.5970848007811e+01, 0.3930209696940e+01, 0.2764903818918e-06, 0.5194636754501e+01, 0.1256262854127e+02, 0.2485149930507e-06, 0.1002434207846e+01, 0.5088628793478e+01, 0.2199305540941e-06, 0.3066773098403e+01, 0.1255903824622e+02, 0.2571106500435e-06, 0.7588312459063e+00, 0.1336797263425e+02, 0.2049751817158e-06, 0.3444977434856e+01, 0.1137170464392e+02, 0.2599707296297e-06, 0.1873128542205e+01, 0.7143069561767e+02, 0.1785018072217e-06, 0.5015891306615e+01, 0.1748016358760e+01, 0.2324833891115e-06, 0.4618271239730e+01, 0.1831953657923e+02, 0.1709711119545e-06, 0.5300003455669e+01, 0.4933208510675e+01, 0.2107159351716e-06, 0.2229819815115e+01, 0.7477522907414e+01, 0.1750333080295e-06, 0.6161485880008e+01, 0.1044738781244e+02, 0.2000598210339e-06, 0.2967357299999e+01, 0.8031092209206e+01, 0.1380920248681e-06, 0.3027007923917e+01, 0.8635942003952e+01, 0.1412460470299e-06, 0.6037597163798e+01, 0.2942463415728e+01, 0.1888459803001e-06, 0.8561476243374e+00, 0.1561374759853e+03, 0.1788370542585e-06, 0.4869736290209e+01, 0.1592596075957e+01, 0.1360893296167e-06, 0.3626411886436e+01, 0.1309584267300e+02, 0.1506846530160e-06, 0.1550975377427e+01, 0.1649636139783e+02, 0.1800913376176e-06, 0.2075826033190e+01, 0.1729818233119e+02, 0.1436261390649e-06, 0.6148876420255e+01, 0.2042657109477e+02, 0.1220227114151e-06, 0.4382583879906e+01, 0.7632943190217e+01, 0.1337883603592e-06, 0.2036644327361e+01, 0.1213955354133e+02, 0.1159326650738e-06, 0.3892276994687e+01, 0.5331357529664e+01, 0.1352853128569e-06, 0.1447950649744e+01, 0.1673046366289e+02, 0.1433408296083e-06, 0.4457854692961e+01, 0.7342457794669e+01, 0.1234701666518e-06, 0.1538818147151e+01, 0.6279485555400e+01, 0.1234027192007e-06, 0.1968523220760e+01, 0.6286666145492e+01, 0.1244024091797e-06, 0.5779803499985e+01, 0.1511046609763e+02, 0.1097934945516e-06, 0.6210975221388e+00, 0.1098880815746e+02, 0.1254611329856e-06, 0.2591963807998e+01, 0.1572083878776e+02, 0.1158247286784e-06, 0.2483612812670e+01, 0.5729506548653e+01, 0.9039078252960e-07, 0.3857554579796e+01, 0.9623688285163e+01, 0.9108024978836e-07, 0.5826368512984e+01, 0.7234794171227e+01, 0.8887068108436e-07, 0.3475694573987e+01, 0.6148010737701e+01, 0.8632374035438e-07, 0.3059070488983e-01, 0.6418140963190e+01, 0.7893186992967e-07, 0.1583194837728e+01, 0.2118763888447e+01, 0.8297650201172e-07, 0.8519770534637e+00, 0.1471231707864e+02, 0.1019759578988e-06, 0.1319598738732e+00, 0.1349867339771e+01, 0.1010037696236e-06, 0.9937860115618e+00, 0.6836645152238e+01, 0.1047727548266e-06, 0.1382138405399e+01, 0.5999216516294e+01, 0.7351993881086e-07, 0.3833397851735e+01, 0.6040347114260e+01, 0.9868771092341e-07, 0.2124913814390e+01, 0.6566935184597e+01, 0.7007321959390e-07, 0.5946305343763e+01, 0.6525804586632e+01, 0.6861411679709e-07, 0.4574654977089e+01, 0.7238675589263e+01, 0.7554519809614e-07, 0.5949232686844e+01, 0.1253985337760e+02, 0.9541880448335e-07, 0.3495242990564e+01, 0.2122839202813e+02, 0.7185606722155e-07, 0.4310113471661e+01, 0.6245048154254e+01, 0.7131360871710e-07, 0.5480309323650e+01, 0.6321103546637e+01, 0.6651142021039e-07, 0.5411097713654e+01, 0.5327476111629e+01, 0.8538618213667e-07, 0.1827849973951e+01, 0.1101510648075e+02, 0.8634954288044e-07, 0.5443584943349e+01, 0.5643178611111e+01, 0.7449415051484e-07, 0.2011535459060e+01, 0.5368044267797e+00, 0.7421047599169e-07, 0.3464562529249e+01, 0.2354323048545e+02, 0.6140694354424e-07, 0.5657556228815e+01, 0.1296430071988e+02, 0.6353525143033e-07, 0.3463816593821e+01, 0.1990745094947e+01, 0.6221964013447e-07, 0.1532259498697e+01, 0.9517183207817e+00, 0.5852480257244e-07, 0.1375396598875e+01, 0.9555997388169e+00, 0.6398637498911e-07, 0.2405645801972e+01, 0.2407292145756e+02, 0.7039744069878e-07, 0.5397541799027e+01, 0.5225775174439e+00, 0.6977997694382e-07, 0.4762347105419e+01, 0.1097355562493e+02, 0.7460629558396e-07, 0.2711944692164e+01, 0.2200391463820e+02, 0.5376577536101e-07, 0.2352980430239e+01, 0.1431416805965e+02, 0.7530607893556e-07, 0.1943940180699e+01, 0.1842262939178e+02, 0.6822928971605e-07, 0.4337651846959e+01, 0.1554202828031e+00, 0.6220772380094e-07, 0.6716871369278e+00, 0.1845107853235e+02, 0.6586950799043e-07, 0.2229714460505e+01, 0.5216580451554e+01, 0.5873800565771e-07, 0.7627013920580e+00, 0.6398972393349e+00, 0.6264346929745e-07, 0.6202785478961e+00, 0.6277552955062e+01, 0.6257929115669e-07, 0.2886775596668e+01, 0.6288598745829e+01, 0.5343536033409e-07, 0.1977241012051e+01, 0.4690479774488e+01, 0.5587849781714e-07, 0.1922923484825e+01, 0.1551045220144e+01, 0.6905100845603e-07, 0.3570757164631e+01, 0.1030928125552e+00, 0.6178957066649e-07, 0.5197558947765e+01, 0.5230807360890e+01, 0.6187270224331e-07, 0.8193497368922e+00, 0.5650292065779e+01, 0.5385664291426e-07, 0.5406336665586e+01, 0.7771377146812e+02, 0.6329363917926e-07, 0.2837760654536e+01, 0.2608790314060e+02, 0.4546018761604e-07, 0.2933580297050e+01, 0.5535693017924e+00, 0.6196091049375e-07, 0.4157871494377e+01, 0.8467247584405e+02, 0.6159555108218e-07, 0.3211703561703e+01, 0.2394243902548e+03, 0.4995340539317e-07, 0.1459098102922e+01, 0.4732030630302e+01, 0.5457031243572e-07, 0.1430457676136e+01, 0.6179983037890e+01, 0.4863461418397e-07, 0.2196425916730e+01, 0.9027992316901e+02, 0.5342947626870e-07, 0.2086612890268e+01, 0.6386168663001e+01, 0.5674296648439e-07, 0.2760204966535e+01, 0.6915859635113e+01, 0.4745783120161e-07, 0.4245368971862e+01, 0.6282970628506e+01, 0.4745676961198e-07, 0.5544725787016e+01, 0.6283181072386e+01, 0.4049796869973e-07, 0.2213984363586e+01, 0.6254626709878e+01, 0.4248333596940e-07, 0.8075781952896e+00, 0.7875671926403e+01, 0.4027178070205e-07, 0.1293268540378e+01, 0.6311524991013e+01, 0.4066543943476e-07, 0.3986141175804e+01, 0.3634620989887e+01, 0.4858863787880e-07, 0.1276112738231e+01, 0.5760498333002e+01, 0.5277398263530e-07, 0.4916111741527e+01, 0.2515860172507e+02, 0.4105635656559e-07, 0.1725805864426e+01, 0.6709674010002e+01, 0.4376781925772e-07, 0.2243642442106e+01, 0.6805653367890e+01, 0.3235827894693e-07, 0.3614135118271e+01, 0.1066495398892e+01, 0.3073244740308e-07, 0.2460873393460e+01, 0.5863591145557e+01, 0.3088609271373e-07, 0.5678431771790e+01, 0.9917696840332e+01, 0.3393022279836e-07, 0.3814017477291e+01, 0.1391601904066e+02, 0.3038686508802e-07, 0.4660216229171e+01, 0.1256621883632e+02, 0.4019677752497e-07, 0.5906906243735e+01, 0.1334167431096e+02, 0.3288834998232e-07, 0.9536146445882e+00, 0.1620077269078e+02, 0.3889973794631e-07, 0.3942205097644e+01, 0.7478166569050e-01, 0.3050438987141e-07, 0.1624810271286e+01, 0.1805292951336e+02, 0.3601142564638e-07, 0.4030467142575e+01, 0.6208294184755e+01, 0.3689015557141e-07, 0.3648878818694e+01, 0.5966683958112e+01, 0.3563471893565e-07, 0.5749584017096e+01, 0.6357857516136e+01, 0.2776183170667e-07, 0.2630124187070e+01, 0.3523159621801e-02, 0.2922350530341e-07, 0.1790346403629e+01, 0.1272157198369e+02, 0.3511076917302e-07, 0.6142198301611e+01, 0.6599467742779e+01, 0.3619351007632e-07, 0.1432421386492e+01, 0.6019991944201e+01, 0.2561254711098e-07, 0.2302822475792e+01, 0.1259245002418e+02, 0.2626903942920e-07, 0.8660470994571e+00, 0.6702560555334e+01, 0.2550187397083e-07, 0.6069721995383e+01, 0.1057540660594e+02, 0.2535873526138e-07, 0.1079020331795e-01, 0.3141537925223e+02, 0.3519786153847e-07, 0.3809066902283e+01, 0.2505706758577e+03, 0.3424651492873e-07, 0.2075435114417e+01, 0.6546159756691e+01, 0.2372676630861e-07, 0.2057803120154e+01, 0.2388894113936e+01, 0.2710980779541e-07, 0.1510068488010e+01, 0.1202934727411e+02, 0.3038710889704e-07, 0.5043617528901e+01, 0.1256608456547e+02, 0.2220364130585e-07, 0.3694793218205e+01, 0.1336244973887e+02, 0.3025880825460e-07, 0.5450618999049e-01, 0.2908881142201e+02, 0.2784493486864e-07, 0.3381164084502e+01, 0.1494531617769e+02, 0.2294414142438e-07, 0.4382309025210e+01, 0.6076890225335e+01, 0.2012723294724e-07, 0.9142212256518e+00, 0.6262720680387e+01, 0.2036357831958e-07, 0.5676172293154e+01, 0.4701116388778e+01, 0.2003474823288e-07, 0.2592767977625e+01, 0.6303431020504e+01, 0.2207144900109e-07, 0.5404976271180e+01, 0.6489261475556e+01, 0.2481664905135e-07, 0.4373284587027e+01, 0.1204357418345e+02, 0.2674949182295e-07, 0.5859182188482e+01, 0.4590910121555e+01, 0.2450554720322e-07, 0.4555381557451e+01, 0.1495633313810e+00, 0.2601975986457e-07, 0.3933165584959e+01, 0.1965104848470e+02, 0.2199860022848e-07, 0.5227977189087e+01, 0.1351787002167e+02, 0.2448121172316e-07, 0.4858060353949e+01, 0.1162474756779e+01, 0.1876014864049e-07, 0.5690546553605e+01, 0.6279194432410e+01, 0.1874513219396e-07, 0.4099539297446e+01, 0.6286957268481e+01, 0.2156380842559e-07, 0.4382594769913e+00, 0.1813929450232e+02, 0.1981691240061e-07, 0.1829784152444e+01, 0.4686889479442e+01, 0.2329992648539e-07, 0.2836254278973e+01, 0.1002183730415e+02, 0.1765184135302e-07, 0.2803494925833e+01, 0.4292330755499e+01, 0.2436368366085e-07, 0.2836897959677e+01, 0.9514313292143e+02, 0.2164089203889e-07, 0.6127522446024e+01, 0.6037244212485e+01, 0.1847755034221e-07, 0.3683163635008e+01, 0.2427287361862e+00, 0.1674798769966e-07, 0.3316993867246e+00, 0.1311972100268e+02, 0.2222542124356e-07, 0.8294097805480e+00, 0.1266924451345e+02, 0.2071074505925e-07, 0.3659492220261e+01, 0.6528907488406e+01, 0.1608224471835e-07, 0.4774492067182e+01, 0.1352175143971e+02, 0.1857583439071e-07, 0.2873120597682e+01, 0.8662240327241e+01, 0.1793018836159e-07, 0.5282441177929e+00, 0.6819880277225e+01, 0.1575391221692e-07, 0.1320789654258e+01, 0.1102062672231e+00, 0.1840132009557e-07, 0.1917110916256e+01, 0.6514761976723e+02, 0.1760917288281e-07, 0.2972635937132e+01, 0.5746271423666e+01, 0.1561779518516e-07, 0.4372569261981e+01, 0.6272439236156e+01, 0.1558687885205e-07, 0.5416424926425e+01, 0.6293712464735e+01, 0.1951359382579e-07, 0.3094448898752e+01, 0.2301353951334e+02, 0.1569144275614e-07, 0.2802103689808e+01, 0.1765478049437e+02, 0.1479130389462e-07, 0.2136435020467e+01, 0.2077542790660e-01, 0.1467828510764e-07, 0.7072627435674e+00, 0.1052268489556e+01, 0.1627627337440e-07, 0.3947607143237e+01, 0.6327837846670e+00, 0.1503498479758e-07, 0.4079248909190e+01, 0.7626583626240e-01, 0.1297967708237e-07, 0.6269637122840e+01, 0.1149965630200e+02, 0.1374416896634e-07, 0.4175657970702e+01, 0.6016468784579e+01, 0.1783812325219e-07, 0.1476540547560e+01, 0.3301902111895e+02, 0.1525884228756e-07, 0.4653477715241e+01, 0.9411464614024e+01, 0.1451067396763e-07, 0.2573001128225e+01, 0.1277945078067e+02, 0.1297713111950e-07, 0.5612799618771e+01, 0.6549682916313e+01, 0.1462784012820e-07, 0.4189661623870e+01, 0.1863592847156e+02, 0.1384185980007e-07, 0.2656915472196e+01, 0.2379164476796e+01, 0.1221497599801e-07, 0.5612515760138e+01, 0.1257326515556e+02, 0.1560574525896e-07, 0.4783414317919e+01, 0.1887552587463e+02, 0.1544598372036e-07, 0.2694431138063e+01, 0.1820933031200e+02, 0.1531678928696e-07, 0.4105103489666e+01, 0.2593412433514e+02, 0.1349321503795e-07, 0.3082437194015e+00, 0.5120601093667e+01, 0.1252030290917e-07, 0.6124072334087e+01, 0.6993008899458e+01, 0.1459243816687e-07, 0.3733103981697e+01, 0.3813291813120e-01, 0.1226103625262e-07, 0.1267127706817e+01, 0.2435678079171e+02, 0.1019449641504e-07, 0.4367790112269e+01, 0.1725663147538e+02, 0.1380789433607e-07, 0.3387201768700e+01, 0.2458316379602e+00, 0.1019453421658e-07, 0.9204143073737e+00, 0.6112403035119e+01, 0.1297929434405e-07, 0.5786874896426e+01, 0.1249137003520e+02, 0.9912677786097e-08, 0.3164232870746e+01, 0.6247047890016e+01, 0.9829386098599e-08, 0.2586762413351e+01, 0.6453748665772e+01, 0.1226807746104e-07, 0.6239068436607e+01, 0.5429879531333e+01, 0.1192691755997e-07, 0.1867380051424e+01, 0.6290122169689e+01, 0.9836499227081e-08, 0.3424716293727e+00, 0.6319103810876e+01, 0.9642862564285e-08, 0.5661372990657e+01, 0.8273820945392e+01, 0.1165184404862e-07, 0.5768367239093e+01, 0.1778273215245e+02, 0.1175794418818e-07, 0.1657351222943e+01, 0.6276029531202e+01, 0.1018948635601e-07, 0.6458292350865e+00, 0.1254537627298e+02, 0.9500383606676e-08, 0.1054306140741e+01, 0.1256517118505e+02, 0.1227512202906e-07, 0.2505278379114e+01, 0.2248384854122e+02, 0.9664792009993e-08, 0.4289737277000e+01, 0.6259197520765e+01, 0.9613285666331e-08, 0.5500597673141e+01, 0.6306954180126e+01, 0.1117906736211e-07, 0.2361405953468e+01, 0.1779695906178e+02, 0.9611378640782e-08, 0.2851310576269e+01, 0.2061856251104e+00, 0.8845354852370e-08, 0.6208777705343e+01, 0.1692165728891e+01, 0.1054046966600e-07, 0.5413091423934e+01, 0.2204125344462e+00, 0.1215539124483e-07, 0.5613969479755e+01, 0.8257698122054e+02, 0.9932460955209e-08, 0.1106124877015e+01, 0.1017725758696e+02, 0.8785804715043e-08, 0.2869224476477e+01, 0.9491756770005e+00, 0.8538084097562e-08, 0.6159640899344e+01, 0.6393282117669e+01, 0.8648994369529e-08, 0.1374901198784e+01, 0.4804209201333e+01, 0.1039063219067e-07, 0.5171080641327e+01, 0.1550861511662e+02, 0.8867983926439e-08, 0.8317320304902e+00, 0.3903911373650e+01, 0.8327495955244e-08, 0.3605591969180e+01, 0.6172869583223e+01, 0.9243088356133e-08, 0.6114299196843e+01, 0.6267823317922e+01, 0.9205657357835e-08, 0.3675153683737e+01, 0.6298328382969e+01, 0.1033269714606e-07, 0.3313328813024e+01, 0.5573142801433e+01, 0.8001706275552e-08, 0.2019980960053e+01, 0.2648454860559e+01, 0.9171858254191e-08, 0.8992015524177e+00, 0.1498544001348e+03, 0.1075327150242e-07, 0.2898669963648e+01, 0.3694923081589e+02, 0.9884866689828e-08, 0.4946715904478e+01, 0.1140367694411e+02, 0.9541835576677e-08, 0.2371787888469e+01, 0.1256713221673e+02, 0.7739903376237e-08, 0.2213775190612e+01, 0.7834121070590e+01, 0.7311962684106e-08, 0.3429378787739e+01, 0.1192625446156e+02, 0.9724904869624e-08, 0.6195878564404e+01, 0.2280573557157e+02, 0.9251628983612e-08, 0.6511509527390e+00, 0.2787043132925e+01, 0.7320763787842e-08, 0.6001083639421e+01, 0.6282655592598e+01, 0.7320296650962e-08, 0.3789073265087e+01, 0.6283496108294e+01, 0.7947032271039e-08, 0.1059659582204e+01, 0.1241073141809e+02, 0.9005277053115e-08, 0.1280315624361e+01, 0.6281591679874e+01, 0.8995601652048e-08, 0.2224439106766e+01, 0.6284560021018e+01, 0.8288040568796e-08, 0.5234914433867e+01, 0.1241658836951e+02, 0.6359381347255e-08, 0.4137989441490e+01, 0.1596186371003e+01, 0.8699572228626e-08, 0.1758411009497e+01, 0.6133512519065e+01, 0.6456797542736e-08, 0.5919285089994e+01, 0.1685848245639e+02, 0.7424573475452e-08, 0.5414616938827e+01, 0.4061219149443e+01, 0.7235671196168e-08, 0.1496516557134e+01, 0.1610006857377e+03, 0.8104015182733e-08, 0.1919918242764e+01, 0.8460828644453e+00, 0.8098576535937e-08, 0.3819615855458e+01, 0.3894181736510e+01, 0.6275292346625e-08, 0.6244264115141e+01, 0.8531963191132e+00, 0.6052432989112e-08, 0.5037731872610e+00, 0.1567108171867e+02, 0.5705651535817e-08, 0.2984557271995e+01, 0.1258692712880e+02, 0.5789650115138e-08, 0.6087038140697e+01, 0.1193336791622e+02, 0.5512132153377e-08, 0.5855668994076e+01, 0.1232342296471e+02, 0.7388890819102e-08, 0.2443128574740e+01, 0.4907302013889e+01, 0.5467593991798e-08, 0.3017561234194e+01, 0.1884211409667e+02, 0.6388519802999e-08, 0.5887386712935e+01, 0.5217580628120e+02, 0.6106777149944e-08, 0.3483461059895e+00, 0.1422690933580e-01, 0.7383420275489e-08, 0.5417387056707e+01, 0.2358125818164e+02, 0.5505208141738e-08, 0.2848193644783e+01, 0.1151388321134e+02, 0.6310757462877e-08, 0.2349882520828e+01, 0.1041998632314e+02, 0.6166904929691e-08, 0.5728575944077e+00, 0.6151533897323e+01, 0.5263442042754e-08, 0.4495796125937e+01, 0.1885275071096e+02, 0.5591828082629e-08, 0.1355441967677e+01, 0.4337116142245e+00, 0.5397051680497e-08, 0.1673422864307e+01, 0.6286362197481e+01, 0.5396992745159e-08, 0.1833502206373e+01, 0.6279789503410e+01, 0.6572913000726e-08, 0.3331122065824e+01, 0.1176433076753e+02, 0.5123421866413e-08, 0.2165327142679e+01, 0.1245594543367e+02, 0.5930495725999e-08, 0.2931146089284e+01, 0.6414617803568e+01, 0.6431797403933e-08, 0.4134407994088e+01, 0.1350651127443e+00, 0.5003182207604e-08, 0.3805420303749e+01, 0.1096996532989e+02, 0.5587731032504e-08, 0.1082469260599e+01, 0.6062663316000e+01, 0.5935263407816e-08, 0.8384333678401e+00, 0.5326786718777e+01, 0.4756019827760e-08, 0.3552588749309e+01, 0.3104930017775e+01, 0.6599951172637e-08, 0.4320826409528e+01, 0.4087944051283e+02, 0.5902606868464e-08, 0.4811879454445e+01, 0.5849364236221e+01, 0.5921147809031e-08, 0.9942628922396e-01, 0.1581959461667e+01, 0.5505382581266e-08, 0.2466557607764e+01, 0.6503488384892e+01, 0.5353771071862e-08, 0.4551978748683e+01, 0.1735668374386e+03, 0.5063282210946e-08, 0.5710812312425e+01, 0.1248988586463e+02, 0.5926120403383e-08, 0.1333998428358e+01, 0.2673594526851e+02, 0.5211016176149e-08, 0.4649315360760e+01, 0.2460261242967e+02, 0.5347075084894e-08, 0.5512754081205e+01, 0.4171425416666e+01, 0.4872609773574e-08, 0.1308025299938e+01, 0.5333900173445e+01, 0.4727711321420e-08, 0.2144908368062e+01, 0.7232251527446e+01, 0.6029426018652e-08, 0.5567259412084e+01, 0.3227113045244e+03, 0.4321485284369e-08, 0.5230667156451e+01, 0.9388005868221e+01, 0.4476406760553e-08, 0.6134081115303e+01, 0.5547199253223e+01, 0.5835268277420e-08, 0.4783808492071e+01, 0.7285056171570e+02, 0.5172183602748e-08, 0.5161817911099e+01, 0.1884570439172e+02, 0.5693571465184e-08, 0.1381646203111e+01, 0.9723862754494e+02, 0.4060634965349e-08, 0.3876705259495e+00, 0.4274518229222e+01, 0.3967398770473e-08, 0.5029491776223e+01, 0.3496032717521e+01, 0.3943754005255e-08, 0.1923162955490e+01, 0.6244942932314e+01, 0.4781323427824e-08, 0.4633332586423e+01, 0.2929661536378e+02, 0.3871483781204e-08, 0.1616650009743e+01, 0.6321208768577e+01, 0.5141741733997e-08, 0.9817316704659e-01, 0.1232032006293e+02, 0.4002385978497e-08, 0.3656161212139e+01, 0.7018952447668e+01, 0.4901092604097e-08, 0.4404098713092e+01, 0.1478866649112e+01, 0.3740932630345e-08, 0.5181188732639e+00, 0.6922973089781e+01, 0.4387283718538e-08, 0.3254859566869e+01, 0.2331413144044e+03, 0.5019197802033e-08, 0.3086773224677e+01, 0.1715706182245e+02, 0.3834931695175e-08, 0.2797882673542e+01, 0.1491901785440e+02, 0.3760413942497e-08, 0.2892676280217e+01, 0.1726726808967e+02, 0.3719717204628e-08, 0.5861046025739e+01, 0.6297302759782e+01, 0.4145623530149e-08, 0.2168239627033e+01, 0.1376059875786e+02, 0.3932788425380e-08, 0.6271811124181e+01, 0.7872148766781e+01, 0.3686377476857e-08, 0.3936853151404e+01, 0.6268848941110e+01, 0.3779077950339e-08, 0.1404148734043e+01, 0.4157198507331e+01, 0.4091334550598e-08, 0.2452436180854e+01, 0.9779108567966e+01, 0.3926694536146e-08, 0.6102292739040e+01, 0.1098419223922e+02, 0.4841000253289e-08, 0.6072760457276e+01, 0.1252801878276e+02, 0.4949340130240e-08, 0.1154832815171e+01, 0.1617106187867e+03, 0.3761557737360e-08, 0.5527545321897e+01, 0.3185192151914e+01, 0.3647396268188e-08, 0.1525035688629e+01, 0.6271346477544e+01, 0.3932405074189e-08, 0.5570681040569e+01, 0.2139354194808e+02, 0.3631322501141e-08, 0.1981240601160e+01, 0.6294805223347e+01, 0.4130007425139e-08, 0.2050060880201e+01, 0.2195415756911e+02, 0.4433905965176e-08, 0.3277477970321e+01, 0.7445550607224e+01, 0.3851814176947e-08, 0.5210690074886e+01, 0.9562891316684e+00, 0.3485807052785e-08, 0.6653274904611e+00, 0.1161697602389e+02, 0.3979772816991e-08, 0.1767941436148e+01, 0.2277943724828e+02, 0.3402607460500e-08, 0.3421746306465e+01, 0.1087398597200e+02, 0.4049993000926e-08, 0.1127144787547e+01, 0.3163918923335e+00, 0.3420511182382e-08, 0.4214794779161e+01, 0.1362553364512e+02, 0.3640772365012e-08, 0.5324905497687e+01, 0.1725304118033e+02, 0.3323037987501e-08, 0.6135761838271e+01, 0.6279143387820e+01, 0.4503141663637e-08, 0.1802305450666e+01, 0.1385561574497e+01, 0.4314560055588e-08, 0.4812299731574e+01, 0.4176041334900e+01, 0.3294226949110e-08, 0.3657547059723e+01, 0.6287008313071e+01, 0.3215657197281e-08, 0.4866676894425e+01, 0.5749861718712e+01, 0.4129362656266e-08, 0.3809342558906e+01, 0.5905702259363e+01, 0.3137762976388e-08, 0.2494635174443e+01, 0.2099539292909e+02, 0.3514010952384e-08, 0.2699961831678e+01, 0.7335344340001e+01, 0.3327607571530e-08, 0.3318457714816e+01, 0.5436992986000e+01, 0.3541066946675e-08, 0.4382703582466e+01, 0.1234573916645e+02, 0.3216179847052e-08, 0.5271066317054e+01, 0.3802769619140e-01, 0.2959045059570e-08, 0.5819591585302e+01, 0.2670964694522e+02, 0.3884040326665e-08, 0.5980934960428e+01, 0.6660449441528e+01, 0.2922027539886e-08, 0.3337290282483e+01, 0.1375773836557e+01, 0.4110846382042e-08, 0.5742978187327e+01, 0.4480965020977e+02, 0.2934508411032e-08, 0.2278075804200e+01, 0.6408777551755e+00, 0.3966896193000e-08, 0.5835747858477e+01, 0.3773735910827e+00, 0.3286695827610e-08, 0.5838898193902e+01, 0.3932462625300e-02, 0.3720643094196e-08, 0.1122212337858e+01, 0.1646033343740e+02, 0.3285508906174e-08, 0.9182250996416e+00, 0.1081813534213e+02, 0.3753880575973e-08, 0.5174761973266e+01, 0.5642198095270e+01, 0.3022129385587e-08, 0.3381611020639e+01, 0.2982630633589e+02, 0.2798569205621e-08, 0.3546193723922e+01, 0.1937891852345e+02, 0.3397872070505e-08, 0.4533203197934e+01, 0.6923953605621e+01, 0.3708099772977e-08, 0.2756168198616e+01, 0.3066615496545e+02, 0.3599283541510e-08, 0.1934395469918e+01, 0.6147450479709e+01, 0.3688702753059e-08, 0.7149920971109e+00, 0.2636725487657e+01, 0.2681084724003e-08, 0.4899819493154e+01, 0.6816289982179e+01, 0.3495993460759e-08, 0.1572418915115e+01, 0.6418701221183e+01, 0.3130770324995e-08, 0.8912190180489e+00, 0.1235996607578e+02, 0.2744353821941e-08, 0.3800821940055e+01, 0.2059724391010e+02, 0.2842732906341e-08, 0.2644717440029e+01, 0.2828699048865e+02, 0.3046882682154e-08, 0.3987793020179e+01, 0.6055599646783e+01, 0.2399072455143e-08, 0.9908826440764e+00, 0.6255674361143e+01, 0.2384306274204e-08, 0.2516149752220e+01, 0.6310477339748e+01, 0.2977324500559e-08, 0.5849195642118e+01, 0.1652265972112e+02, 0.3062835258972e-08, 0.1681660100162e+01, 0.1172006883645e+02, 0.3109682589231e-08, 0.5804143987737e+00, 0.2751146787858e+02, 0.2903920355299e-08, 0.5800768280123e+01, 0.6510552054109e+01, 0.2823221989212e-08, 0.9241118370216e+00, 0.5469525544182e+01, 0.3187949696649e-08, 0.3139776445735e+01, 0.1693792562116e+03, 0.2922559771655e-08, 0.3549440782984e+01, 0.2630839062450e+00, 0.2436302066603e-08, 0.4735540696319e+01, 0.3946258593675e+00, 0.3049473043606e-08, 0.4998289124561e+01, 0.8390110365991e+01, 0.2863682575784e-08, 0.6709515671102e+00, 0.2243449970715e+00, 0.2641750517966e-08, 0.5410978257284e+01, 0.2986433403208e+02, 0.2704093466243e-08, 0.4778317207821e+01, 0.6129297044991e+01, 0.2445522177011e-08, 0.6009020662222e+01, 0.1171295538178e+02, 0.2623608810230e-08, 0.5010449777147e+01, 0.6436854655901e+01, 0.2079259704053e-08, 0.5980943768809e+01, 0.2019909489111e+02, 0.2820225596771e-08, 0.2679965110468e+01, 0.5934151399930e+01, 0.2365221950927e-08, 0.1894231148810e+01, 0.2470570524223e+02, 0.2359682077149e-08, 0.4220752950780e+01, 0.8671969964381e+01, 0.2387577137206e-08, 0.2571783940617e+01, 0.7096626156709e+01, 0.1982102089816e-08, 0.5169765997119e+00, 0.1727188400790e+02, 0.2687502389925e-08, 0.6239078264579e+01, 0.7075506709219e+02, 0.2207751669135e-08, 0.2031184412677e+01, 0.4377611041777e+01, 0.2618370214274e-08, 0.8266079985979e+00, 0.6632000300961e+01, 0.2591951887361e-08, 0.8819350522008e+00, 0.4873985990671e+02, 0.2375055656248e-08, 0.3520944177789e+01, 0.1590676413561e+02, 0.2472019978911e-08, 0.1551431908671e+01, 0.6612329252343e+00, 0.2368157127199e-08, 0.4178610147412e+01, 0.3459636466239e+02, 0.1764846605693e-08, 0.1506764000157e+01, 0.1980094587212e+02, 0.2291769608798e-08, 0.2118250611782e+01, 0.2844914056730e-01, 0.2209997316943e-08, 0.3363255261678e+01, 0.2666070658668e+00, 0.2292699097923e-08, 0.4200423956460e+00, 0.1484170571900e-02, 0.1629683015329e-08, 0.2331362582487e+01, 0.3035599730800e+02, 0.2206492862426e-08, 0.3400274026992e+01, 0.6281667977667e+01, 0.2205746568257e-08, 0.1066051230724e+00, 0.6284483723224e+01, 0.2026310767991e-08, 0.2779066487979e+01, 0.2449240616245e+02, 0.1762977622163e-08, 0.9951450691840e+00, 0.2045286941806e+02, 0.1368535049606e-08, 0.6402447365817e+00, 0.2473415438279e+02, 0.1720598775450e-08, 0.2303524214705e+00, 0.1679593901136e+03, 0.1702429015449e-08, 0.6164622655048e+01, 0.3338575901272e+03, 0.1414033197685e-08, 0.3954561185580e+01, 0.1624205518357e+03, 0.1573768958043e-08, 0.2028286308984e+01, 0.3144167757552e+02, 0.1650705184447e-08, 0.2304040666128e+01, 0.5267006960365e+02, 0.1651087618855e-08, 0.2538461057280e+01, 0.8956999012000e+02, 0.1616409518983e-08, 0.5111054348152e+01, 0.3332657872986e+02, 0.1537175173581e-08, 0.5601130666603e+01, 0.3852657435933e+02, 0.1593191980553e-08, 0.2614340453411e+01, 0.2282781046519e+03, 0.1499480170643e-08, 0.3624721577264e+01, 0.2823723341956e+02, 0.1493807843235e-08, 0.4214569879008e+01, 0.2876692439167e+02, 0.1074571199328e-08, 0.1496911744704e+00, 0.8397383534231e+02, 0.1074406983417e-08, 0.1187817671922e+01, 0.8401985929482e+02, 0.9757576855851e-09, 0.2655703035858e+01, 0.7826370942180e+02, 0.1258432887565e-08, 0.4969896184844e+01, 0.3115650189215e+03, 0.1240336343282e-08, 0.5192460776926e+01, 0.1784300471910e+03, 0.9016107005164e-09, 0.1960356923057e+01, 0.5886454391678e+02, 0.1135392360918e-08, 0.5082427809068e+01, 0.7842370451713e+02, 0.9216046089565e-09, 0.2793775037273e+01, 0.1014262087719e+03, 0.1061276615030e-08, 0.3726144311409e+01, 0.5660027930059e+02, 0.1010110596263e-08, 0.7404080708937e+00, 0.4245678405627e+02, 0.7217424756199e-09, 0.2697449980577e-01, 0.2457074661053e+03, 0.6912003846756e-09, 0.4253296276335e+01, 0.1679936946371e+03, 0.6871814664847e-09, 0.5148072412354e+01, 0.6053048899753e+02, 0.4887158016343e-09, 0.2153581148294e+01, 0.9656299901946e+02, 0.5161802866314e-09, 0.3852750634351e+01, 0.2442876000072e+03, 0.5652599559057e-09, 0.1233233356270e+01, 0.8365903305582e+02, 0.4710812608586e-09, 0.5610486976767e+01, 0.3164282286739e+03, 0.4909977500324e-09, 0.1639629524123e+01, 0.4059982187939e+03, 0.4772641839378e-09, 0.3737100368583e+01, 0.1805255418145e+03, 0.4487562567153e-09, 0.1158417054478e+00, 0.8433466158131e+02, 0.3943441230497e-09, 0.6243502862796e+00, 0.2568537517081e+03, 0.3952236913598e-09, 0.3510377382385e+01, 0.2449975330562e+03, 0.3788898363417e-09, 0.5916128302299e+01, 0.1568131045107e+03, 0.3738329328831e-09, 0.1042266763456e+01, 0.3948519331910e+03, 0.2451199165151e-09, 0.1166788435700e+01, 0.1435713242844e+03, 0.2436734402904e-09, 0.3254726114901e+01, 0.2268582385539e+03, 0.2213605274325e-09, 0.1687210598530e+01, 0.1658638954901e+03, 0.1491521204829e-09, 0.2657541786794e+01, 0.2219950288015e+03, 0.1474995329744e-09, 0.5013089805819e+01, 0.3052819430710e+03, 0.1661939475656e-09, 0.5495315428418e+01, 0.2526661704812e+03, 0.9015946748003e-10, 0.2236989966505e+01, 0.4171445043968e+03 }; /* Sun-to-Earth, T^0, Z */ static const double e0z[] = { 0.2796207639075e-05, 0.3198701560209e+01, 0.8433466158131e+02, 0.1016042198142e-05, 0.5422360395913e+01, 0.5507553240374e+01, 0.8044305033647e-06, 0.3880222866652e+01, 0.5223693906222e+01, 0.4385347909274e-06, 0.3704369937468e+01, 0.2352866153506e+01, 0.3186156414906e-06, 0.3999639363235e+01, 0.1577343543434e+01, 0.2272412285792e-06, 0.3984738315952e+01, 0.1047747311755e+01, 0.1645620103007e-06, 0.3565412516841e+01, 0.5856477690889e+01, 0.1815836921166e-06, 0.4984507059020e+01, 0.6283075850446e+01, 0.1447461676364e-06, 0.3702753570108e+01, 0.9437762937313e+01, 0.1430760876382e-06, 0.3409658712357e+01, 0.1021328554739e+02, 0.1120445753226e-06, 0.4829561570246e+01, 0.1414349524433e+02, 0.1090232840797e-06, 0.2080729178066e+01, 0.6812766822558e+01, 0.9715727346551e-07, 0.3476295881948e+01, 0.4694002934110e+01, 0.1036267136217e-06, 0.4056639536648e+01, 0.7109288135493e+02, 0.8752665271340e-07, 0.4448159519911e+01, 0.5753384878334e+01, 0.8331864956004e-07, 0.4991704044208e+01, 0.7084896783808e+01, 0.6901658670245e-07, 0.4325358994219e+01, 0.6275962395778e+01, 0.9144536848998e-07, 0.1141826375363e+01, 0.6620890113188e+01, 0.7205085037435e-07, 0.3624344170143e+01, 0.5296909721118e+00, 0.7697874654176e-07, 0.5554257458998e+01, 0.1676215758509e+03, 0.5197545738384e-07, 0.6251760961735e+01, 0.1807370494127e+02, 0.5031345378608e-07, 0.2497341091913e+01, 0.4705732307012e+01, 0.4527110205840e-07, 0.2335079920992e+01, 0.6309374173736e+01, 0.4753355798089e-07, 0.7094148987474e+00, 0.5884926831456e+01, 0.4296951977516e-07, 0.1101916352091e+01, 0.6681224869435e+01, 0.3855341568387e-07, 0.1825495405486e+01, 0.5486777812467e+01, 0.5253930970990e-07, 0.4424740687208e+01, 0.7860419393880e+01, 0.4024630496471e-07, 0.5120498157053e+01, 0.1336797263425e+02, 0.4061069791453e-07, 0.6029771435451e+01, 0.3930209696940e+01, 0.3797883804205e-07, 0.4435193600836e+00, 0.3154687086868e+01, 0.2933033225587e-07, 0.5124157356507e+01, 0.1059381944224e+01, 0.3503000930426e-07, 0.5421830162065e+01, 0.6069776770667e+01, 0.3670096214050e-07, 0.4582101667297e+01, 0.1219403291462e+02, 0.2905609437008e-07, 0.1926566420072e+01, 0.1097707878456e+02, 0.2466827821713e-07, 0.6090174539834e+00, 0.6496374930224e+01, 0.2691647295332e-07, 0.1393432595077e+01, 0.2200391463820e+02, 0.2150554667946e-07, 0.4308671715951e+01, 0.5643178611111e+01, 0.2237481922680e-07, 0.8133968269414e+00, 0.8635942003952e+01, 0.1817741038157e-07, 0.3755205127454e+01, 0.3340612434717e+01, 0.2227820762132e-07, 0.2759558596664e+01, 0.1203646072878e+02, 0.1944713772307e-07, 0.5699645869121e+01, 0.1179062909082e+02, 0.1527340520662e-07, 0.1986749091746e+01, 0.3981490189893e+00, 0.1577282574914e-07, 0.3205017217983e+01, 0.5088628793478e+01, 0.1424738825424e-07, 0.6256747903666e+01, 0.2544314396739e+01, 0.1616563121701e-07, 0.2601671259394e+00, 0.1729818233119e+02, 0.1401210391692e-07, 0.4686939173506e+01, 0.7058598460518e+01, 0.1488726974214e-07, 0.2815862451372e+01, 0.2593412433514e+02, 0.1692626442388e-07, 0.4956894109797e+01, 0.1564752902480e+03, 0.1123571582910e-07, 0.2381192697696e+01, 0.3738761453707e+01, 0.9903308606317e-08, 0.4294851657684e+01, 0.9225539266174e+01, 0.9174533187191e-08, 0.3075171510642e+01, 0.4164311961999e+01, 0.8645985631457e-08, 0.5477534821633e+00, 0.8429241228195e+01, -0.1085876492688e-07, 0.0000000000000e+00, 0.0000000000000e+00, 0.9264309077815e-08, 0.5968571670097e+01, 0.7079373888424e+01, 0.8243116984954e-08, 0.1489098777643e+01, 0.1044738781244e+02, 0.8268102113708e-08, 0.3512977691983e+01, 0.1150676975667e+02, 0.9043613988227e-08, 0.1290704408221e+00, 0.1101510648075e+02, 0.7432912038789e-08, 0.1991086893337e+01, 0.2608790314060e+02, 0.8586233727285e-08, 0.4238357924414e+01, 0.2986433403208e+02, 0.7612230060131e-08, 0.2911090150166e+01, 0.4732030630302e+01, 0.7097787751408e-08, 0.1908938392390e+01, 0.8031092209206e+01, 0.7640237040175e-08, 0.6129219000168e+00, 0.7962980379786e+00, 0.7070445688081e-08, 0.1380417036651e+01, 0.2146165377750e+01, 0.7690770957702e-08, 0.1680504249084e+01, 0.2122839202813e+02, 0.8051292542594e-08, 0.5127423484511e+01, 0.2942463415728e+01, 0.5902709104515e-08, 0.2020274190917e+01, 0.7755226100720e+00, 0.5134567496462e-08, 0.2606778676418e+01, 0.1256615170089e+02, 0.5525802046102e-08, 0.1613011769663e+01, 0.8018209333619e+00, 0.5880724784221e-08, 0.4604483417236e+01, 0.4690479774488e+01, 0.5211699081370e-08, 0.5718964114193e+01, 0.8827390247185e+01, 0.4891849573562e-08, 0.3689658932196e+01, 0.2132990797783e+00, 0.5150246069997e-08, 0.4099769855122e+01, 0.6480980550449e+02, 0.5102434319633e-08, 0.5660834602509e+01, 0.3379454372902e+02, 0.5083405254252e-08, 0.9842221218974e+00, 0.4136910472696e+01, 0.4206562585682e-08, 0.1341363634163e+00, 0.3128388763578e+01, 0.4663249683579e-08, 0.8130132735866e+00, 0.5216580451554e+01, 0.4099474416530e-08, 0.5791497770644e+01, 0.4265981595566e+00, 0.4628251220767e-08, 0.1249802769331e+01, 0.1572083878776e+02, 0.5024068728142e-08, 0.4795684802743e+01, 0.6290189305114e+01, 0.5120234327758e-08, 0.3810420387208e+01, 0.5230807360890e+01, 0.5524029815280e-08, 0.1029264714351e+01, 0.2397622045175e+03, 0.4757415718860e-08, 0.3528044781779e+01, 0.1649636139783e+02, 0.3915786131127e-08, 0.5593889282646e+01, 0.1589072916335e+01, 0.4869053149991e-08, 0.3299636454433e+01, 0.7632943190217e+01, 0.3649365703729e-08, 0.1286049002584e+01, 0.6206810014183e+01, 0.3992493949002e-08, 0.3100307589464e+01, 0.2515860172507e+02, 0.3320247477418e-08, 0.6212683940807e+01, 0.1216800268190e+02, 0.3287123739696e-08, 0.4699118445928e+01, 0.7234794171227e+01, 0.3472776811103e-08, 0.2630507142004e+01, 0.7342457794669e+01, 0.3423253294767e-08, 0.2946432844305e+01, 0.9623688285163e+01, 0.3896173898244e-08, 0.1224834179264e+01, 0.6438496133249e+01, 0.3388455337924e-08, 0.1543807616351e+01, 0.1494531617769e+02, 0.3062704716523e-08, 0.1191777572310e+01, 0.8662240327241e+01, 0.3270075600400e-08, 0.5483498767737e+01, 0.1194447056968e+01, 0.3101209215259e-08, 0.8000833804348e+00, 0.3772475342596e+02, 0.2780883347311e-08, 0.4077980721888e+00, 0.5863591145557e+01, 0.2903605931824e-08, 0.2617490302147e+01, 0.1965104848470e+02, 0.2682014743119e-08, 0.2634703158290e+01, 0.7238675589263e+01, 0.2534360108492e-08, 0.6102446114873e+01, 0.6836645152238e+01, 0.2392564882509e-08, 0.3681820208691e+01, 0.5849364236221e+01, 0.2656667254856e-08, 0.6216045388886e+01, 0.6133512519065e+01, 0.2331242096773e-08, 0.5864949777744e+01, 0.4535059491685e+01, 0.2287898363668e-08, 0.4566628532802e+01, 0.7477522907414e+01, 0.2336944521306e-08, 0.2442722126930e+01, 0.1137170464392e+02, 0.3156632236269e-08, 0.1626628050682e+01, 0.2509084901204e+03, 0.2982612402766e-08, 0.2803604512609e+01, 0.1748016358760e+01, 0.2774031674807e-08, 0.4654002897158e+01, 0.8223916695780e+02, 0.2295236548638e-08, 0.4326518333253e+01, 0.3378142627421e+00, 0.2190714699873e-08, 0.4519614578328e+01, 0.2908881142201e+02, 0.2191495845045e-08, 0.3012626912549e+01, 0.1673046366289e+02, 0.2492901628386e-08, 0.1290101424052e+00, 0.1543797956245e+03, 0.1993778064319e-08, 0.3864046799414e+01, 0.1778984560711e+02, 0.1898146479022e-08, 0.5053777235891e+01, 0.2042657109477e+02, 0.1918280127634e-08, 0.2222470192548e+01, 0.4165496312290e+02, 0.1916351061607e-08, 0.8719067257774e+00, 0.7737595720538e+02, 0.1834720181466e-08, 0.4031491098040e+01, 0.2358125818164e+02, 0.1249201523806e-08, 0.5938379466835e+01, 0.3301902111895e+02, 0.1477304050539e-08, 0.6544722606797e+00, 0.9548094718417e+02, 0.1264316431249e-08, 0.2059072853236e+01, 0.8399684731857e+02, 0.1203526495039e-08, 0.3644813532605e+01, 0.4558517281984e+02, 0.9221681059831e-09, 0.3241815055602e+01, 0.7805158573086e+02, 0.7849278367646e-09, 0.5043812342457e+01, 0.5217580628120e+02, 0.7983392077387e-09, 0.5000024502753e+01, 0.1501922143975e+03, 0.7925395431654e-09, 0.1398734871821e-01, 0.9061773743175e+02, 0.7640473285886e-09, 0.5067111723130e+01, 0.4951538251678e+02, 0.5398937754482e-09, 0.5597382200075e+01, 0.1613385000004e+03, 0.5626247550193e-09, 0.2601338209422e+01, 0.7318837597844e+02, 0.5525197197855e-09, 0.5814832109256e+01, 0.1432335100216e+03, 0.5407629837898e-09, 0.3384820609076e+01, 0.3230491187871e+03, 0.3856739119801e-09, 0.1072391840473e+01, 0.2334791286671e+03, 0.3856425239987e-09, 0.2369540393327e+01, 0.1739046517013e+03, 0.4350867755983e-09, 0.5255575751082e+01, 0.1620484330494e+03, 0.3844113924996e-09, 0.5482356246182e+01, 0.9757644180768e+02, 0.2854869155431e-09, 0.9573634763143e+00, 0.1697170704744e+03, 0.1719227671416e-09, 0.1887203025202e+01, 0.2265204242912e+03, 0.1527846879755e-09, 0.3982183931157e+01, 0.3341954043900e+03, 0.1128229264847e-09, 0.2787457156298e+01, 0.3119028331842e+03 }; /* Sun-to-Earth, T^1, X */ static const double e1x[] = { 0.1234046326004e-05, 0.0000000000000e+00, 0.0000000000000e+00, 0.5150068824701e-06, 0.6002664557501e+01, 0.1256615170089e+02, 0.1290743923245e-07, 0.5959437664199e+01, 0.1884922755134e+02, 0.1068615564952e-07, 0.2015529654209e+01, 0.6283075850446e+01, 0.2079619142538e-08, 0.1732960531432e+01, 0.6279552690824e+01, 0.2078009243969e-08, 0.4915604476996e+01, 0.6286599010068e+01, 0.6206330058856e-09, 0.3616457953824e+00, 0.4705732307012e+01, 0.5989335313746e-09, 0.3802607304474e+01, 0.6256777527156e+01, 0.5958495663840e-09, 0.2845866560031e+01, 0.6309374173736e+01, 0.4866923261539e-09, 0.5213203771824e+01, 0.7755226100720e+00, 0.4267785823142e-09, 0.4368189727818e+00, 0.1059381944224e+01, 0.4610675141648e-09, 0.1837249181372e-01, 0.7860419393880e+01, 0.3626989993973e-09, 0.2161590545326e+01, 0.5753384878334e+01, 0.3563071194389e-09, 0.1452631954746e+01, 0.5884926831456e+01, 0.3557015642807e-09, 0.4470593393054e+01, 0.6812766822558e+01, 0.3210412089122e-09, 0.5195926078314e+01, 0.6681224869435e+01, 0.2875473577986e-09, 0.5916256610193e+01, 0.2513230340178e+02, 0.2842913681629e-09, 0.1149902426047e+01, 0.6127655567643e+01, 0.2751248215916e-09, 0.5502088574662e+01, 0.6438496133249e+01, 0.2481432881127e-09, 0.2921989846637e+01, 0.5486777812467e+01, 0.2059885976560e-09, 0.3718070376585e+01, 0.7079373888424e+01, 0.2015522342591e-09, 0.5979395259740e+01, 0.6290189305114e+01, 0.1995364084253e-09, 0.6772087985494e+00, 0.6275962395778e+01, 0.1957436436943e-09, 0.2899210654665e+01, 0.5507553240374e+01, 0.1651609818948e-09, 0.6228206482192e+01, 0.1150676975667e+02, 0.1822980550699e-09, 0.1469348746179e+01, 0.1179062909082e+02, 0.1675223159760e-09, 0.3813910555688e+01, 0.7058598460518e+01, 0.1706491764745e-09, 0.3004380506684e+00, 0.7113454667900e-02, 0.1392952362615e-09, 0.1440393973406e+01, 0.7962980379786e+00, 0.1209868266342e-09, 0.4150425791727e+01, 0.4694002934110e+01, 0.1009827202611e-09, 0.3290040429843e+01, 0.3738761453707e+01, 0.1047261388602e-09, 0.4229590090227e+01, 0.6282095334605e+01, 0.1047006652004e-09, 0.2418967680575e+01, 0.6284056366286e+01, 0.9609993143095e-10, 0.4627943659201e+01, 0.6069776770667e+01, 0.9590900593873e-10, 0.1894393939924e+01, 0.4136910472696e+01, 0.9146249188071e-10, 0.2010647519562e+01, 0.6496374930224e+01, 0.8545274480290e-10, 0.5529846956226e-01, 0.1194447056968e+01, 0.8224377881194e-10, 0.1254304102174e+01, 0.1589072916335e+01, 0.6183529510410e-10, 0.3360862168815e+01, 0.8827390247185e+01, 0.6259255147141e-10, 0.4755628243179e+01, 0.8429241228195e+01, 0.5539291694151e-10, 0.5371746955142e+01, 0.4933208510675e+01, 0.7328259466314e-10, 0.4927699613906e+00, 0.4535059491685e+01, 0.6017835843560e-10, 0.5776682001734e-01, 0.1255903824622e+02, 0.7079827775243e-10, 0.4395059432251e+01, 0.5088628793478e+01, 0.5170358878213e-10, 0.5154062619954e+01, 0.1176985366291e+02, 0.4872301838682e-10, 0.6289611648973e+00, 0.6040347114260e+01, 0.5249869411058e-10, 0.5617272046949e+01, 0.3154687086868e+01, 0.4716172354411e-10, 0.3965901800877e+01, 0.5331357529664e+01, 0.4871214940964e-10, 0.4627507050093e+01, 0.1256967486051e+02, 0.4598076850751e-10, 0.6023631226459e+01, 0.6525804586632e+01, 0.4562196089485e-10, 0.4138562084068e+01, 0.3930209696940e+01, 0.4325493872224e-10, 0.1330845906564e+01, 0.7632943190217e+01, 0.5673781176748e-10, 0.2558752615657e+01, 0.5729506548653e+01, 0.3961436642503e-10, 0.2728071734630e+01, 0.7234794171227e+01, 0.5101868209058e-10, 0.4113444965144e+01, 0.6836645152238e+01, 0.5257043167676e-10, 0.6195089830590e+01, 0.8031092209206e+01, 0.5076613989393e-10, 0.2305124132918e+01, 0.7477522907414e+01, 0.3342169352778e-10, 0.5415998155071e+01, 0.1097707878456e+02, 0.3545881983591e-10, 0.3727160564574e+01, 0.4164311961999e+01, 0.3364063738599e-10, 0.2901121049204e+00, 0.1137170464392e+02, 0.3357039670776e-10, 0.1652229354331e+01, 0.5223693906222e+01, 0.4307412268687e-10, 0.4938909587445e+01, 0.1592596075957e+01, 0.3405769115435e-10, 0.2408890766511e+01, 0.3128388763578e+01, 0.3001926198480e-10, 0.4862239006386e+01, 0.1748016358760e+01, 0.2778264787325e-10, 0.5241168661353e+01, 0.7342457794669e+01, 0.2676159480666e-10, 0.3423593942199e+01, 0.2146165377750e+01, 0.2954273399939e-10, 0.1881721265406e+01, 0.5368044267797e+00, 0.3309362888795e-10, 0.1931525677349e+01, 0.8018209333619e+00, 0.2810283608438e-10, 0.2414659495050e+01, 0.5225775174439e+00, 0.3378045637764e-10, 0.4238019163430e+01, 0.1554202828031e+00, 0.2558134979840e-10, 0.1828225235805e+01, 0.5230807360890e+01, 0.2273755578447e-10, 0.5858184283998e+01, 0.7084896783808e+01, 0.2294176037690e-10, 0.4514589779057e+01, 0.1726015463500e+02, 0.2533506099435e-10, 0.2355717851551e+01, 0.5216580451554e+01, 0.2716685375812e-10, 0.2221003625100e+01, 0.8635942003952e+01, 0.2419043435198e-10, 0.5955704951635e+01, 0.4690479774488e+01, 0.2521232544812e-10, 0.1395676848521e+01, 0.5481254917084e+01, 0.2630195021491e-10, 0.5727468918743e+01, 0.2629832328990e-01, 0.2548395840944e-10, 0.2628351859400e-03, 0.1349867339771e+01 }; /* Sun-to-Earth, T^1, Y */ static const double e1y[] = { 0.9304690546528e-06, 0.0000000000000e+00, 0.0000000000000e+00, 0.5150715570663e-06, 0.4431807116294e+01, 0.1256615170089e+02, 0.1290825411056e-07, 0.4388610039678e+01, 0.1884922755134e+02, 0.4645466665386e-08, 0.5827263376034e+01, 0.6283075850446e+01, 0.2079625310718e-08, 0.1621698662282e+00, 0.6279552690824e+01, 0.2078189850907e-08, 0.3344713435140e+01, 0.6286599010068e+01, 0.6207190138027e-09, 0.5074049319576e+01, 0.4705732307012e+01, 0.5989826532569e-09, 0.2231842216620e+01, 0.6256777527156e+01, 0.5961360812618e-09, 0.1274975769045e+01, 0.6309374173736e+01, 0.4874165471016e-09, 0.3642277426779e+01, 0.7755226100720e+00, 0.4283834034360e-09, 0.5148765510106e+01, 0.1059381944224e+01, 0.4652389287529e-09, 0.4715794792175e+01, 0.7860419393880e+01, 0.3751707476401e-09, 0.6617207370325e+00, 0.5753384878334e+01, 0.3559998806198e-09, 0.6155548875404e+01, 0.5884926831456e+01, 0.3558447558857e-09, 0.2898827297664e+01, 0.6812766822558e+01, 0.3211116927106e-09, 0.3625813502509e+01, 0.6681224869435e+01, 0.2875609914672e-09, 0.4345435813134e+01, 0.2513230340178e+02, 0.2843109704069e-09, 0.5862263940038e+01, 0.6127655567643e+01, 0.2744676468427e-09, 0.3926419475089e+01, 0.6438496133249e+01, 0.2481285237789e-09, 0.1351976572828e+01, 0.5486777812467e+01, 0.2060338481033e-09, 0.2147556998591e+01, 0.7079373888424e+01, 0.2015822358331e-09, 0.4408358972216e+01, 0.6290189305114e+01, 0.2001195944195e-09, 0.5385829822531e+01, 0.6275962395778e+01, 0.1953667642377e-09, 0.1304933746120e+01, 0.5507553240374e+01, 0.1839744078713e-09, 0.6173567228835e+01, 0.1179062909082e+02, 0.1643334294845e-09, 0.4635942997523e+01, 0.1150676975667e+02, 0.1768051018652e-09, 0.5086283558874e+01, 0.7113454667900e-02, 0.1674874205489e-09, 0.2243332137241e+01, 0.7058598460518e+01, 0.1421445397609e-09, 0.6186899771515e+01, 0.7962980379786e+00, 0.1255163958267e-09, 0.5730238465658e+01, 0.4694002934110e+01, 0.1013945281961e-09, 0.1726055228402e+01, 0.3738761453707e+01, 0.1047294335852e-09, 0.2658801228129e+01, 0.6282095334605e+01, 0.1047103879392e-09, 0.8481047835035e+00, 0.6284056366286e+01, 0.9530343962826e-10, 0.3079267149859e+01, 0.6069776770667e+01, 0.9604637611690e-10, 0.3258679792918e+00, 0.4136910472696e+01, 0.9153518537177e-10, 0.4398599886584e+00, 0.6496374930224e+01, 0.8562458214922e-10, 0.4772686794145e+01, 0.1194447056968e+01, 0.8232525360654e-10, 0.5966220721679e+01, 0.1589072916335e+01, 0.6150223411438e-10, 0.1780985591923e+01, 0.8827390247185e+01, 0.6272087858000e-10, 0.3184305429012e+01, 0.8429241228195e+01, 0.5540476311040e-10, 0.3801260595433e+01, 0.4933208510675e+01, 0.7331901699361e-10, 0.5205948591865e+01, 0.4535059491685e+01, 0.6018528702791e-10, 0.4770139083623e+01, 0.1255903824622e+02, 0.5150530724804e-10, 0.3574796899585e+01, 0.1176985366291e+02, 0.6471933741811e-10, 0.2679787266521e+01, 0.5088628793478e+01, 0.5317460644174e-10, 0.9528763345494e+00, 0.3154687086868e+01, 0.4832187748783e-10, 0.5329322498232e+01, 0.6040347114260e+01, 0.4716763555110e-10, 0.2395235316466e+01, 0.5331357529664e+01, 0.4871509139861e-10, 0.3056663648823e+01, 0.1256967486051e+02, 0.4598417696768e-10, 0.4452762609019e+01, 0.6525804586632e+01, 0.5674189533175e-10, 0.9879680872193e+00, 0.5729506548653e+01, 0.4073560328195e-10, 0.5939127696986e+01, 0.7632943190217e+01, 0.5040994945359e-10, 0.4549875824510e+01, 0.8031092209206e+01, 0.5078185134679e-10, 0.7346659893982e+00, 0.7477522907414e+01, 0.3769343537061e-10, 0.1071317188367e+01, 0.7234794171227e+01, 0.4980331365299e-10, 0.2500345341784e+01, 0.6836645152238e+01, 0.3458236594757e-10, 0.3825159450711e+01, 0.1097707878456e+02, 0.3578859493602e-10, 0.5299664791549e+01, 0.4164311961999e+01, 0.3370504646419e-10, 0.5002316301593e+01, 0.1137170464392e+02, 0.3299873338428e-10, 0.2526123275282e+01, 0.3930209696940e+01, 0.4304917318409e-10, 0.3368078557132e+01, 0.1592596075957e+01, 0.3402418753455e-10, 0.8385495425800e+00, 0.3128388763578e+01, 0.2778460572146e-10, 0.3669905203240e+01, 0.7342457794669e+01, 0.2782710128902e-10, 0.2691664812170e+00, 0.1748016358760e+01, 0.2711725179646e-10, 0.4707487217718e+01, 0.5296909721118e+00, 0.2981760946340e-10, 0.3190260867816e+00, 0.5368044267797e+00, 0.2811672977772e-10, 0.3196532315372e+01, 0.7084896783808e+01, 0.2863454474467e-10, 0.2263240324780e+00, 0.5223693906222e+01, 0.3333464634051e-10, 0.3498451685065e+01, 0.8018209333619e+00, 0.3312991747609e-10, 0.5839154477412e+01, 0.1554202828031e+00, 0.2813255564006e-10, 0.8268044346621e+00, 0.5225775174439e+00, 0.2665098083966e-10, 0.3934021725360e+01, 0.5216580451554e+01, 0.2349795705216e-10, 0.5197620913779e+01, 0.2146165377750e+01, 0.2330352293961e-10, 0.2984999231807e+01, 0.1726015463500e+02, 0.2728001683419e-10, 0.6521679638544e+00, 0.8635942003952e+01, 0.2484061007669e-10, 0.3468955561097e+01, 0.5230807360890e+01, 0.2646328768427e-10, 0.1013724533516e+01, 0.2629832328990e-01, 0.2518630264831e-10, 0.6108081057122e+01, 0.5481254917084e+01, 0.2421901455384e-10, 0.1651097776260e+01, 0.1349867339771e+01, 0.6348533267831e-11, 0.3220226560321e+01, 0.8433466158131e+02 }; /* Sun-to-Earth, T^1, Z */ static const double e1z[] = { 0.2278290449966e-05, 0.3413716033863e+01, 0.6283075850446e+01, 0.5429458209830e-07, 0.0000000000000e+00, 0.0000000000000e+00, 0.1903240492525e-07, 0.3370592358297e+01, 0.1256615170089e+02, 0.2385409276743e-09, 0.3327914718416e+01, 0.1884922755134e+02, 0.8676928342573e-10, 0.1824006811264e+01, 0.5223693906222e+01, 0.7765442593544e-10, 0.3888564279247e+01, 0.5507553240374e+01, 0.7066158332715e-10, 0.5194267231944e+01, 0.2352866153506e+01, 0.7092175288657e-10, 0.2333246960021e+01, 0.8399684731857e+02, 0.5357582213535e-10, 0.2224031176619e+01, 0.5296909721118e+00, 0.3828035865021e-10, 0.2156710933584e+01, 0.6279552690824e+01, 0.3824857220427e-10, 0.1529755219915e+01, 0.6286599010068e+01, 0.3286995181628e-10, 0.4879512900483e+01, 0.1021328554739e+02 }; /* Sun-to-Earth, T^2, X */ static const double e2x[] = { -0.4143818297913e-10, 0.0000000000000e+00, 0.0000000000000e+00, 0.2171497694435e-10, 0.4398225628264e+01, 0.1256615170089e+02, 0.9845398442516e-11, 0.2079720838384e+00, 0.6283075850446e+01, 0.9256833552682e-12, 0.4191264694361e+01, 0.1884922755134e+02, 0.1022049384115e-12, 0.5381133195658e+01, 0.8399684731857e+02 }; /* Sun-to-Earth, T^2, Y */ static const double e2y[] = { 0.5063375872532e-10, 0.0000000000000e+00, 0.0000000000000e+00, 0.2173815785980e-10, 0.2827805833053e+01, 0.1256615170089e+02, 0.1010231999920e-10, 0.4634612377133e+01, 0.6283075850446e+01, 0.9259745317636e-12, 0.2620612076189e+01, 0.1884922755134e+02, 0.1022202095812e-12, 0.3809562326066e+01, 0.8399684731857e+02 }; /* Sun-to-Earth, T^2, Z */ static const double e2z[] = { 0.9722666114891e-10, 0.5152219582658e+01, 0.6283075850446e+01, -0.3494819171909e-11, 0.0000000000000e+00, 0.0000000000000e+00, 0.6713034376076e-12, 0.6440188750495e+00, 0.1256615170089e+02 }; /* SSB-to-Sun, T^0, X */ static const double s0x[] = { 0.4956757536410e-02, 0.3741073751789e+01, 0.5296909721118e+00, 0.2718490072522e-02, 0.4016011511425e+01, 0.2132990797783e+00, 0.1546493974344e-02, 0.2170528330642e+01, 0.3813291813120e-01, 0.8366855276341e-03, 0.2339614075294e+01, 0.7478166569050e-01, 0.2936777942117e-03, 0.0000000000000e+00, 0.0000000000000e+00, 0.1201317439469e-03, 0.4090736353305e+01, 0.1059381944224e+01, 0.7578550887230e-04, 0.3241518088140e+01, 0.4265981595566e+00, 0.1941787367773e-04, 0.1012202064330e+01, 0.2061856251104e+00, 0.1889227765991e-04, 0.3892520416440e+01, 0.2204125344462e+00, 0.1937896968613e-04, 0.4797779441161e+01, 0.1495633313810e+00, 0.1434506110873e-04, 0.3868960697933e+01, 0.5225775174439e+00, 0.1406659911580e-04, 0.4759766557397e+00, 0.5368044267797e+00, 0.1179022300202e-04, 0.7774961520598e+00, 0.7626583626240e-01, 0.8085864460959e-05, 0.3254654471465e+01, 0.3664874755930e-01, 0.7622752967615e-05, 0.4227633103489e+01, 0.3961708870310e-01, 0.6209171139066e-05, 0.2791828325711e+00, 0.7329749511860e-01, 0.4366435633970e-05, 0.4440454875925e+01, 0.1589072916335e+01, 0.3792124889348e-05, 0.5156393842356e+01, 0.7113454667900e-02, 0.3154548963402e-05, 0.6157005730093e+01, 0.4194847048887e+00, 0.3088359882942e-05, 0.2494567553163e+01, 0.6398972393349e+00, 0.2788440902136e-05, 0.4934318747989e+01, 0.1102062672231e+00, 0.3039928456376e-05, 0.4895077702640e+01, 0.6283075850446e+01, 0.2272258457679e-05, 0.5278394064764e+01, 0.1030928125552e+00, 0.2162007057957e-05, 0.5802978019099e+01, 0.3163918923335e+00, 0.1767632855737e-05, 0.3415346595193e-01, 0.1021328554739e+02, 0.1349413459362e-05, 0.2001643230755e+01, 0.1484170571900e-02, 0.1170141900476e-05, 0.2424750491620e+01, 0.6327837846670e+00, 0.1054355266820e-05, 0.3123311487576e+01, 0.4337116142245e+00, 0.9800822461610e-06, 0.3026258088130e+01, 0.1052268489556e+01, 0.1091203749931e-05, 0.3157811670347e+01, 0.1162474756779e+01, 0.6960236715913e-06, 0.8219570542313e+00, 0.1066495398892e+01, 0.5689257296909e-06, 0.1323052375236e+01, 0.9491756770005e+00, 0.6613172135802e-06, 0.2765348881598e+00, 0.8460828644453e+00, 0.6277702517571e-06, 0.5794064466382e+01, 0.1480791608091e+00, 0.6304884066699e-06, 0.7323555380787e+00, 0.2243449970715e+00, 0.4897850467382e-06, 0.3062464235399e+01, 0.3340612434717e+01, 0.3759148598786e-06, 0.4588290469664e+01, 0.3516457698740e-01, 0.3110520548195e-06, 0.1374299536572e+01, 0.6373574839730e-01, 0.3064708359780e-06, 0.4222267485047e+01, 0.1104591729320e-01, 0.2856347168241e-06, 0.3714202944973e+01, 0.1510475019529e+00, 0.2840945514288e-06, 0.2847972875882e+01, 0.4110125927500e-01, 0.2378951599405e-06, 0.3762072563388e+01, 0.2275259891141e+00, 0.2714229481417e-06, 0.1036049980031e+01, 0.2535050500000e-01, 0.2323551717307e-06, 0.4682388599076e+00, 0.8582758298370e-01, 0.1881790512219e-06, 0.4790565425418e+01, 0.2118763888447e+01, 0.2261353968371e-06, 0.1669144912212e+01, 0.7181332454670e-01, 0.2214546389848e-06, 0.3937717281614e+01, 0.2968341143800e-02, 0.2184915594933e-06, 0.1129169845099e+00, 0.7775000683430e-01, 0.2000164937936e-06, 0.4030009638488e+01, 0.2093666171530e+00, 0.1966105136719e-06, 0.8745955786834e+00, 0.2172315424036e+00, 0.1904742332624e-06, 0.5919743598964e+01, 0.2022531624851e+00, 0.1657399705031e-06, 0.2549141484884e+01, 0.7358765972222e+00, 0.1574070533987e-06, 0.5277533020230e+01, 0.7429900518901e+00, 0.1832261651039e-06, 0.3064688127777e+01, 0.3235053470014e+00, 0.1733615346569e-06, 0.3011432799094e+01, 0.1385174140878e+00, 0.1549124014496e-06, 0.4005569132359e+01, 0.5154640627760e+00, 0.1637044713838e-06, 0.1831375966632e+01, 0.8531963191132e+00, 0.1123420082383e-06, 0.1180270407578e+01, 0.1990721704425e+00, 0.1083754165740e-06, 0.3414101320863e+00, 0.5439178814476e+00, 0.1156638012655e-06, 0.6130479452594e+00, 0.5257585094865e+00, 0.1142548785134e-06, 0.3724761948846e+01, 0.5336234347371e+00, 0.7921463895965e-07, 0.2435425589361e+01, 0.1478866649112e+01, 0.7428600285231e-07, 0.3542144398753e+01, 0.2164800718209e+00, 0.8323211246747e-07, 0.3525058072354e+01, 0.1692165728891e+01, 0.7257595116312e-07, 0.1364299431982e+01, 0.2101180877357e+00, 0.7111185833236e-07, 0.2460478875808e+01, 0.4155522422634e+00, 0.6868090383716e-07, 0.4397327670704e+01, 0.1173197218910e+00, 0.7226419974175e-07, 0.4042647308905e+01, 0.1265567569334e+01, 0.6955642383177e-07, 0.2865047906085e+01, 0.9562891316684e+00, 0.7492139296331e-07, 0.5014278994215e+01, 0.1422690933580e-01, 0.6598363128857e-07, 0.2376730020492e+01, 0.6470106940028e+00, 0.7381147293385e-07, 0.3272990384244e+01, 0.1581959461667e+01, 0.6402909624032e-07, 0.5302290955138e+01, 0.9597935788730e-01, 0.6237454263857e-07, 0.5444144425332e+01, 0.7084920306520e-01, 0.5241198544016e-07, 0.4215359579205e+01, 0.5265099800692e+00, 0.5144463853918e-07, 0.1218916689916e+00, 0.5328719641544e+00, 0.5868164772299e-07, 0.2369402002213e+01, 0.7871412831580e-01, 0.6233195669151e-07, 0.1254922242403e+01, 0.2608790314060e+02, 0.6068463791422e-07, 0.5679713760431e+01, 0.1114304132498e+00, 0.4359361135065e-07, 0.6097219641646e+00, 0.1375773836557e+01, 0.4686510366826e-07, 0.4786231041431e+01, 0.1143987543936e+00, 0.3758977287225e-07, 0.1167368068139e+01, 0.1596186371003e+01, 0.4282051974778e-07, 0.1519471064319e+01, 0.2770348281756e+00, 0.5153765386113e-07, 0.1860532322984e+01, 0.2228608264996e+00, 0.4575129387188e-07, 0.7632857887158e+00, 0.1465949902372e+00, 0.3326844933286e-07, 0.1298219485285e+01, 0.5070101000000e-01, 0.3748617450984e-07, 0.1046510321062e+01, 0.4903339079539e+00, 0.2816756661499e-07, 0.3434522346190e+01, 0.2991266627620e+00, 0.3412750405039e-07, 0.2523766270318e+01, 0.3518164938661e+00, 0.2655796761776e-07, 0.2904422260194e+01, 0.6256703299991e+00, 0.2963597929458e-07, 0.5923900431149e+00, 0.1099462426779e+00, 0.2539523734781e-07, 0.4851947722567e+01, 0.1256615170089e+02, 0.2283087914139e-07, 0.3400498595496e+01, 0.6681224869435e+01, 0.2321309799331e-07, 0.5789099148673e+01, 0.3368040641550e-01, 0.2549657649750e-07, 0.3991856479792e-01, 0.1169588211447e+01, 0.2290462303977e-07, 0.2788567577052e+01, 0.1045155034888e+01, 0.1945398522914e-07, 0.3290896998176e+01, 0.1155361302111e+01, 0.1849171512638e-07, 0.2698060129367e+01, 0.4452511715700e-02, 0.1647199834254e-07, 0.3016735644085e+01, 0.4408250688924e+00, 0.1529530765273e-07, 0.5573043116178e+01, 0.6521991896920e-01, 0.1433199339978e-07, 0.1481192356147e+01, 0.9420622223326e+00, 0.1729134193602e-07, 0.1422817538933e+01, 0.2108507877249e+00, 0.1716463931346e-07, 0.3469468901855e+01, 0.2157473718317e+00, 0.1391206061378e-07, 0.6122436220547e+01, 0.4123712502208e+00, 0.1404746661924e-07, 0.1647765641936e+01, 0.4258542984690e-01, 0.1410452399455e-07, 0.5989729161964e+01, 0.2258291676434e+00, 0.1089828772168e-07, 0.2833705509371e+01, 0.4226656969313e+00, 0.1047374564948e-07, 0.5090690007331e+00, 0.3092784376656e+00, 0.1358279126532e-07, 0.5128990262836e+01, 0.7923417740620e-01, 0.1020456476148e-07, 0.9632772880808e+00, 0.1456308687557e+00, 0.1033428735328e-07, 0.3223779318418e+01, 0.1795258541446e+01, 0.1412435841540e-07, 0.2410271572721e+01, 0.1525316725248e+00, 0.9722759371574e-08, 0.2333531395690e+01, 0.8434341241180e-01, 0.9657334084704e-08, 0.6199270974168e+01, 0.1272681024002e+01, 0.1083641148690e-07, 0.2864222292929e+01, 0.7032915397480e-01, 0.1067318403838e-07, 0.5833458866568e+00, 0.2123349582968e+00, 0.1062366201976e-07, 0.4307753989494e+01, 0.2142632012598e+00, 0.1236364149266e-07, 0.2873917870593e+01, 0.1847279083684e+00, 0.1092759489593e-07, 0.2959887266733e+01, 0.1370332435159e+00, 0.8912069362899e-08, 0.5141213702562e+01, 0.2648454860559e+01, 0.9656467707970e-08, 0.4532182462323e+01, 0.4376440768498e+00, 0.8098386150135e-08, 0.2268906338379e+01, 0.2880807454688e+00, 0.7857714675000e-08, 0.4055544260745e+01, 0.2037373330570e+00, 0.7288455940646e-08, 0.5357901655142e+01, 0.1129145838217e+00, 0.9450595950552e-08, 0.4264926963939e+01, 0.5272426800584e+00, 0.9381718247537e-08, 0.7489366976576e-01, 0.5321392641652e+00, 0.7079052646038e-08, 0.1923311052874e+01, 0.6288513220417e+00, 0.9259004415344e-08, 0.2970256853438e+01, 0.1606092486742e+00, 0.8259801499742e-08, 0.3327056314697e+01, 0.8389694097774e+00, 0.6476334355779e-08, 0.2954925505727e+01, 0.2008557621224e+01, 0.5984021492007e-08, 0.9138753105829e+00, 0.2042657109477e+02, 0.5989546863181e-08, 0.3244464082031e+01, 0.2111650433779e+01, 0.6233108606023e-08, 0.4995232638403e+00, 0.4305306221819e+00, 0.6877299149965e-08, 0.2834987233449e+01, 0.9561746721300e-02, 0.8311234227190e-08, 0.2202951835758e+01, 0.3801276407308e+00, 0.6599472832414e-08, 0.4478581462618e+01, 0.1063314406849e+01, 0.6160491096549e-08, 0.5145858696411e+01, 0.1368660381889e+01, 0.6164772043891e-08, 0.3762976697911e+00, 0.4234171675140e+00, 0.6363248684450e-08, 0.3162246718685e+01, 0.1253008786510e-01, 0.6448587520999e-08, 0.3442693302119e+01, 0.5287268506303e+00, 0.6431662283977e-08, 0.8977549136606e+00, 0.5306550935933e+00, 0.6351223158474e-08, 0.4306447410369e+01, 0.5217580628120e+02, 0.5476721393451e-08, 0.3888529177855e+01, 0.2221856701002e+01, 0.5341772572619e-08, 0.2655560662512e+01, 0.7466759693650e-01, 0.5337055758302e-08, 0.5164990735946e+01, 0.7489573444450e-01, 0.5373120816787e-08, 0.6041214553456e+01, 0.1274714967946e+00, 0.5392351705426e-08, 0.9177763485932e+00, 0.1055449481598e+01, 0.6688495850205e-08, 0.3089608126937e+01, 0.2213766559277e+00, 0.5072003660362e-08, 0.4311316541553e+01, 0.2132517061319e+00, 0.5070726650455e-08, 0.5790675464444e+00, 0.2133464534247e+00, 0.5658012950032e-08, 0.2703945510675e+01, 0.7287631425543e+00, 0.4835509924854e-08, 0.2975422976065e+01, 0.7160067364790e-01, 0.6479821978012e-08, 0.1324168733114e+01, 0.2209183458640e-01, 0.6230636494980e-08, 0.2860103632836e+01, 0.3306188016693e+00, 0.4649239516213e-08, 0.4832259763403e+01, 0.7796265773310e-01, 0.6487325792700e-08, 0.2726165825042e+01, 0.3884652414254e+00, 0.4682823682770e-08, 0.6966602455408e+00, 0.1073608853559e+01, 0.5704230804976e-08, 0.5669634104606e+01, 0.8731175355560e-01, 0.6125413585489e-08, 0.1513386538915e+01, 0.7605151500000e-01, 0.6035825038187e-08, 0.1983509168227e+01, 0.9846002785331e+00, 0.4331123462303e-08, 0.2782892992807e+01, 0.4297791515992e+00, 0.4681107685143e-08, 0.5337232886836e+01, 0.2127790306879e+00, 0.4669105829655e-08, 0.5837133792160e+01, 0.2138191288687e+00, 0.5138823602365e-08, 0.3080560200507e+01, 0.7233337363710e-01, 0.4615856664534e-08, 0.1661747897471e+01, 0.8603097737811e+00, 0.4496916702197e-08, 0.2112508027068e+01, 0.7381754420900e-01, 0.4278479042945e-08, 0.5716528462627e+01, 0.7574578717200e-01, 0.3840525503932e-08, 0.6424172726492e+00, 0.3407705765729e+00, 0.4866636509685e-08, 0.4919244697715e+01, 0.7722995774390e-01, 0.3526100639296e-08, 0.2550821052734e+01, 0.6225157782540e-01, 0.3939558488075e-08, 0.3939331491710e+01, 0.5268983110410e-01, 0.4041268772576e-08, 0.2275337571218e+01, 0.3503323232942e+00, 0.3948761842853e-08, 0.1999324200790e+01, 0.1451108196653e+00, 0.3258394550029e-08, 0.9121001378200e+00, 0.5296435984654e+00, 0.3257897048761e-08, 0.3428428660869e+01, 0.5297383457582e+00, 0.3842559031298e-08, 0.6132927720035e+01, 0.9098186128426e+00, 0.3109920095448e-08, 0.7693650193003e+00, 0.3932462625300e-02, 0.3132237775119e-08, 0.3621293854908e+01, 0.2346394437820e+00, 0.3942189421510e-08, 0.4841863659733e+01, 0.3180992042600e-02, 0.3796972285340e-08, 0.1814174994268e+01, 0.1862120789403e+00, 0.3995640233688e-08, 0.1386990406091e+01, 0.4549093064213e+00, 0.2875013727414e-08, 0.9178318587177e+00, 0.1905464808669e+01, 0.3073719932844e-08, 0.2688923811835e+01, 0.3628624111593e+00, 0.2731016580075e-08, 0.1188259127584e+01, 0.2131850110243e+00, 0.2729549896546e-08, 0.3702160634273e+01, 0.2134131485323e+00, 0.3339372892449e-08, 0.7199163960331e+00, 0.2007689919132e+00, 0.2898833764204e-08, 0.1916709364999e+01, 0.5291709230214e+00, 0.2894536549362e-08, 0.2424043195547e+01, 0.5302110212022e+00, 0.3096872473843e-08, 0.4445894977497e+01, 0.2976424921901e+00, 0.2635672326810e-08, 0.3814366984117e+01, 0.1485980103780e+01, 0.3649302697001e-08, 0.2924200596084e+01, 0.6044726378023e+00, 0.3127954585895e-08, 0.1842251648327e+01, 0.1084620721060e+00, 0.2616040173947e-08, 0.4155841921984e+01, 0.1258454114666e+01, 0.2597395859860e-08, 0.1158045978874e+00, 0.2103781122809e+00, 0.2593286172210e-08, 0.4771850408691e+01, 0.2162200472757e+00, 0.2481823585747e-08, 0.4608842558889e+00, 0.1062562936266e+01, 0.2742219550725e-08, 0.1538781127028e+01, 0.5651155736444e+00, 0.3199558469610e-08, 0.3226647822878e+00, 0.7036329877322e+00, 0.2666088542957e-08, 0.1967991731219e+00, 0.1400015846597e+00, 0.2397067430580e-08, 0.3707036669873e+01, 0.2125476091956e+00, 0.2376570772738e-08, 0.1182086628042e+01, 0.2140505503610e+00, 0.2547228007887e-08, 0.4906256820629e+01, 0.1534957940063e+00, 0.2265575594114e-08, 0.3414949866857e+01, 0.2235935264888e+00, 0.2464381430585e-08, 0.4599122275378e+01, 0.2091065926078e+00, 0.2433408527044e-08, 0.2830751145445e+00, 0.2174915669488e+00, 0.2443605509076e-08, 0.4212046432538e+01, 0.1739420156204e+00, 0.2319779262465e-08, 0.9881978408630e+00, 0.7530171478090e-01, 0.2284622835465e-08, 0.5565347331588e+00, 0.7426161660010e-01, 0.2467268750783e-08, 0.5655708150766e+00, 0.2526561439362e+00, 0.2808513492782e-08, 0.1418405053408e+01, 0.5636314030725e+00, 0.2329528932532e-08, 0.4069557545675e+01, 0.1056200952181e+01, 0.9698639532817e-09, 0.1074134313634e+01, 0.7826370942180e+02 }; /* SSB-to-Sun, T^0, Y */ static const double s0y[] = { 0.4955392320126e-02, 0.2170467313679e+01, 0.5296909721118e+00, 0.2722325167392e-02, 0.2444433682196e+01, 0.2132990797783e+00, 0.1546579925346e-02, 0.5992779281546e+00, 0.3813291813120e-01, 0.8363140252966e-03, 0.7687356310801e+00, 0.7478166569050e-01, 0.3385792683603e-03, 0.0000000000000e+00, 0.0000000000000e+00, 0.1201192221613e-03, 0.2520035601514e+01, 0.1059381944224e+01, 0.7587125720554e-04, 0.1669954006449e+01, 0.4265981595566e+00, 0.1964155361250e-04, 0.5707743963343e+01, 0.2061856251104e+00, 0.1891900364909e-04, 0.2320960679937e+01, 0.2204125344462e+00, 0.1937373433356e-04, 0.3226940689555e+01, 0.1495633313810e+00, 0.1437139941351e-04, 0.2301626908096e+01, 0.5225775174439e+00, 0.1406267683099e-04, 0.5188579265542e+01, 0.5368044267797e+00, 0.1178703080346e-04, 0.5489483248476e+01, 0.7626583626240e-01, 0.8079835186041e-05, 0.1683751835264e+01, 0.3664874755930e-01, 0.7623253594652e-05, 0.2656400462961e+01, 0.3961708870310e-01, 0.6248667483971e-05, 0.4992775362055e+01, 0.7329749511860e-01, 0.4366353695038e-05, 0.2869706279678e+01, 0.1589072916335e+01, 0.3829101568895e-05, 0.3572131359950e+01, 0.7113454667900e-02, 0.3175733773908e-05, 0.4535372530045e+01, 0.4194847048887e+00, 0.3092437902159e-05, 0.9230153317909e+00, 0.6398972393349e+00, 0.2874168812154e-05, 0.3363143761101e+01, 0.1102062672231e+00, 0.3040119321826e-05, 0.3324250895675e+01, 0.6283075850446e+01, 0.2699723308006e-05, 0.2917882441928e+00, 0.1030928125552e+00, 0.2134832683534e-05, 0.4220997202487e+01, 0.3163918923335e+00, 0.1770412139433e-05, 0.4747318496462e+01, 0.1021328554739e+02, 0.1377264209373e-05, 0.4305058462401e+00, 0.1484170571900e-02, 0.1127814538960e-05, 0.8538177240740e+00, 0.6327837846670e+00, 0.1055608090130e-05, 0.1551800742580e+01, 0.4337116142245e+00, 0.9802673861420e-06, 0.1459646735377e+01, 0.1052268489556e+01, 0.1090329461951e-05, 0.1587351228711e+01, 0.1162474756779e+01, 0.6959590025090e-06, 0.5534442628766e+01, 0.1066495398892e+01, 0.5664914529542e-06, 0.6030673003297e+01, 0.9491756770005e+00, 0.6607787763599e-06, 0.4989507233927e+01, 0.8460828644453e+00, 0.6269725742838e-06, 0.4222951804572e+01, 0.1480791608091e+00, 0.6301889697863e-06, 0.5444316669126e+01, 0.2243449970715e+00, 0.4891042662861e-06, 0.1490552839784e+01, 0.3340612434717e+01, 0.3457083123290e-06, 0.3030475486049e+01, 0.3516457698740e-01, 0.3032559967314e-06, 0.2652038793632e+01, 0.1104591729320e-01, 0.2841133988903e-06, 0.1276744786829e+01, 0.4110125927500e-01, 0.2855564444432e-06, 0.2143368674733e+01, 0.1510475019529e+00, 0.2765157135038e-06, 0.5444186109077e+01, 0.6373574839730e-01, 0.2382312465034e-06, 0.2190521137593e+01, 0.2275259891141e+00, 0.2808060365077e-06, 0.5735195064841e+01, 0.2535050500000e-01, 0.2332175234405e-06, 0.9481985524859e-01, 0.7181332454670e-01, 0.2322488199659e-06, 0.5180499361533e+01, 0.8582758298370e-01, 0.1881850258423e-06, 0.3219788273885e+01, 0.2118763888447e+01, 0.2196111392808e-06, 0.2366941159761e+01, 0.2968341143800e-02, 0.2183810335519e-06, 0.4825445110915e+01, 0.7775000683430e-01, 0.2002733093326e-06, 0.2457148995307e+01, 0.2093666171530e+00, 0.1967111767229e-06, 0.5586291545459e+01, 0.2172315424036e+00, 0.1568473250543e-06, 0.3708003123320e+01, 0.7429900518901e+00, 0.1852528314300e-06, 0.4310638151560e+01, 0.2022531624851e+00, 0.1832111226447e-06, 0.1494665322656e+01, 0.3235053470014e+00, 0.1746805502310e-06, 0.1451378500784e+01, 0.1385174140878e+00, 0.1555730966650e-06, 0.1068040418198e+01, 0.7358765972222e+00, 0.1554883462559e-06, 0.2442579035461e+01, 0.5154640627760e+00, 0.1638380568746e-06, 0.2597913420625e+00, 0.8531963191132e+00, 0.1159938593640e-06, 0.5834512021280e+01, 0.1990721704425e+00, 0.1083427965695e-06, 0.5054033177950e+01, 0.5439178814476e+00, 0.1156480369431e-06, 0.5325677432457e+01, 0.5257585094865e+00, 0.1141308860095e-06, 0.2153403923857e+01, 0.5336234347371e+00, 0.7913146470946e-07, 0.8642846847027e+00, 0.1478866649112e+01, 0.7439752463733e-07, 0.1970628496213e+01, 0.2164800718209e+00, 0.7280277104079e-07, 0.6073307250609e+01, 0.2101180877357e+00, 0.8319567719136e-07, 0.1954371928334e+01, 0.1692165728891e+01, 0.7137705549290e-07, 0.8904989440909e+00, 0.4155522422634e+00, 0.6900825396225e-07, 0.2825717714977e+01, 0.1173197218910e+00, 0.7245757216635e-07, 0.2481677513331e+01, 0.1265567569334e+01, 0.6961165696255e-07, 0.1292955312978e+01, 0.9562891316684e+00, 0.7571804456890e-07, 0.3427517575069e+01, 0.1422690933580e-01, 0.6605425721904e-07, 0.8052192701492e+00, 0.6470106940028e+00, 0.7375477357248e-07, 0.1705076390088e+01, 0.1581959461667e+01, 0.7041664951470e-07, 0.4848356967891e+00, 0.9597935788730e-01, 0.6322199535763e-07, 0.3878069473909e+01, 0.7084920306520e-01, 0.5244380279191e-07, 0.2645560544125e+01, 0.5265099800692e+00, 0.5143125704988e-07, 0.4834486101370e+01, 0.5328719641544e+00, 0.5871866319373e-07, 0.7981472548900e+00, 0.7871412831580e-01, 0.6300822573871e-07, 0.5979398788281e+01, 0.2608790314060e+02, 0.6062154271548e-07, 0.4108655402756e+01, 0.1114304132498e+00, 0.4361912339976e-07, 0.5322624319280e+01, 0.1375773836557e+01, 0.4417005920067e-07, 0.6240817359284e+01, 0.2770348281756e+00, 0.4686806749936e-07, 0.3214977301156e+01, 0.1143987543936e+00, 0.3758892132305e-07, 0.5879809634765e+01, 0.1596186371003e+01, 0.5151351332319e-07, 0.2893377688007e+00, 0.2228608264996e+00, 0.4554683578572e-07, 0.5475427144122e+01, 0.1465949902372e+00, 0.3442381385338e-07, 0.5992034796640e+01, 0.5070101000000e-01, 0.2831093954933e-07, 0.5367350273914e+01, 0.3092784376656e+00, 0.3756267090084e-07, 0.5758171285420e+01, 0.4903339079539e+00, 0.2816374679892e-07, 0.1863718700923e+01, 0.2991266627620e+00, 0.3419307025569e-07, 0.9524347534130e+00, 0.3518164938661e+00, 0.2904250494239e-07, 0.5304471615602e+01, 0.1099462426779e+00, 0.2471734511206e-07, 0.1297069793530e+01, 0.6256703299991e+00, 0.2539620831872e-07, 0.3281126083375e+01, 0.1256615170089e+02, 0.2281017868007e-07, 0.1829122133165e+01, 0.6681224869435e+01, 0.2275319473335e-07, 0.5797198160181e+01, 0.3932462625300e-02, 0.2547755368442e-07, 0.4752697708330e+01, 0.1169588211447e+01, 0.2285979669317e-07, 0.1223205292886e+01, 0.1045155034888e+01, 0.1913386560994e-07, 0.1757532993389e+01, 0.1155361302111e+01, 0.1809020525147e-07, 0.4246116108791e+01, 0.3368040641550e-01, 0.1649213300201e-07, 0.1445162890627e+01, 0.4408250688924e+00, 0.1834972793932e-07, 0.1126917567225e+01, 0.4452511715700e-02, 0.1439550648138e-07, 0.6160756834764e+01, 0.9420622223326e+00, 0.1487645457041e-07, 0.4358761931792e+01, 0.4123712502208e+00, 0.1731729516660e-07, 0.6134456753344e+01, 0.2108507877249e+00, 0.1717747163567e-07, 0.1898186084455e+01, 0.2157473718317e+00, 0.1418190430374e-07, 0.4180286741266e+01, 0.6521991896920e-01, 0.1404844134873e-07, 0.7654053565412e-01, 0.4258542984690e-01, 0.1409842846538e-07, 0.4418612420312e+01, 0.2258291676434e+00, 0.1090948346291e-07, 0.1260615686131e+01, 0.4226656969313e+00, 0.1357577323612e-07, 0.3558248818690e+01, 0.7923417740620e-01, 0.1018154061960e-07, 0.5676087241256e+01, 0.1456308687557e+00, 0.1412073972109e-07, 0.8394392632422e+00, 0.1525316725248e+00, 0.1030938326496e-07, 0.1653593274064e+01, 0.1795258541446e+01, 0.1180081567104e-07, 0.1285802592036e+01, 0.7032915397480e-01, 0.9708510575650e-08, 0.7631889488106e+00, 0.8434341241180e-01, 0.9637689663447e-08, 0.4630642649176e+01, 0.1272681024002e+01, 0.1068910429389e-07, 0.5294934032165e+01, 0.2123349582968e+00, 0.1063716179336e-07, 0.2736266800832e+01, 0.2142632012598e+00, 0.1234858713814e-07, 0.1302891146570e+01, 0.1847279083684e+00, 0.8912631189738e-08, 0.3570415993621e+01, 0.2648454860559e+01, 0.1036378285534e-07, 0.4236693440949e+01, 0.1370332435159e+00, 0.9667798501561e-08, 0.2960768892398e+01, 0.4376440768498e+00, 0.8108314201902e-08, 0.6987781646841e+00, 0.2880807454688e+00, 0.7648364324628e-08, 0.2499017863863e+01, 0.2037373330570e+00, 0.7286136828406e-08, 0.3787426951665e+01, 0.1129145838217e+00, 0.9448237743913e-08, 0.2694354332983e+01, 0.5272426800584e+00, 0.9374276106428e-08, 0.4787121277064e+01, 0.5321392641652e+00, 0.7100226287462e-08, 0.3530238792101e+00, 0.6288513220417e+00, 0.9253056659571e-08, 0.1399478925664e+01, 0.1606092486742e+00, 0.6636432145504e-08, 0.3479575438447e+01, 0.1368660381889e+01, 0.6469975312932e-08, 0.1383669964800e+01, 0.2008557621224e+01, 0.7335849729765e-08, 0.1243698166898e+01, 0.9561746721300e-02, 0.8743421205855e-08, 0.3776164289301e+01, 0.3801276407308e+00, 0.5993635744494e-08, 0.5627122113596e+01, 0.2042657109477e+02, 0.5981008479693e-08, 0.1674336636752e+01, 0.2111650433779e+01, 0.6188535145838e-08, 0.5214925208672e+01, 0.4305306221819e+00, 0.6596074017566e-08, 0.2907653268124e+01, 0.1063314406849e+01, 0.6630815126226e-08, 0.2127643669658e+01, 0.8389694097774e+00, 0.6156772830040e-08, 0.5082160803295e+01, 0.4234171675140e+00, 0.6446960563014e-08, 0.1872100916905e+01, 0.5287268506303e+00, 0.6429324424668e-08, 0.5610276103577e+01, 0.5306550935933e+00, 0.6302232396465e-08, 0.1592152049607e+01, 0.1253008786510e-01, 0.6399244436159e-08, 0.2746214421532e+01, 0.5217580628120e+02, 0.5474965172558e-08, 0.2317666374383e+01, 0.2221856701002e+01, 0.5339293190692e-08, 0.1084724961156e+01, 0.7466759693650e-01, 0.5334733683389e-08, 0.3594106067745e+01, 0.7489573444450e-01, 0.5392665782110e-08, 0.5630254365606e+01, 0.1055449481598e+01, 0.6682075673789e-08, 0.1518480041732e+01, 0.2213766559277e+00, 0.5079130495960e-08, 0.2739765115711e+01, 0.2132517061319e+00, 0.5077759793261e-08, 0.5290711290094e+01, 0.2133464534247e+00, 0.4832037368310e-08, 0.1404473217200e+01, 0.7160067364790e-01, 0.6463279674802e-08, 0.6038381695210e+01, 0.2209183458640e-01, 0.6240592771560e-08, 0.1290170653666e+01, 0.3306188016693e+00, 0.4672013521493e-08, 0.3261895939677e+01, 0.7796265773310e-01, 0.6500650750348e-08, 0.1154522312095e+01, 0.3884652414254e+00, 0.6344161389053e-08, 0.6206111545062e+01, 0.7605151500000e-01, 0.4682518370646e-08, 0.5409118796685e+01, 0.1073608853559e+01, 0.5329460015591e-08, 0.1202985784864e+01, 0.7287631425543e+00, 0.5701588675898e-08, 0.4098715257064e+01, 0.8731175355560e-01, 0.6030690867211e-08, 0.4132033218460e+00, 0.9846002785331e+00, 0.4336256312655e-08, 0.1211415991827e+01, 0.4297791515992e+00, 0.4688498808975e-08, 0.3765479072409e+01, 0.2127790306879e+00, 0.4675578609335e-08, 0.4265540037226e+01, 0.2138191288687e+00, 0.4225578112158e-08, 0.5237566010676e+01, 0.3407705765729e+00, 0.5139422230028e-08, 0.1507173079513e+01, 0.7233337363710e-01, 0.4619995093571e-08, 0.9023957449848e-01, 0.8603097737811e+00, 0.4494776255461e-08, 0.5414930552139e+00, 0.7381754420900e-01, 0.4274026276788e-08, 0.4145735303659e+01, 0.7574578717200e-01, 0.5018141789353e-08, 0.3344408829055e+01, 0.3180992042600e-02, 0.4866163952181e-08, 0.3348534657607e+01, 0.7722995774390e-01, 0.4111986020501e-08, 0.4198823597220e+00, 0.1451108196653e+00, 0.3356142784950e-08, 0.5609144747180e+01, 0.1274714967946e+00, 0.4070575554551e-08, 0.7028411059224e+00, 0.3503323232942e+00, 0.3257451857278e-08, 0.5624697983086e+01, 0.5296435984654e+00, 0.3256973703026e-08, 0.1857842076707e+01, 0.5297383457582e+00, 0.3830771508640e-08, 0.4562887279931e+01, 0.9098186128426e+00, 0.3725024005962e-08, 0.2358058692652e+00, 0.1084620721060e+00, 0.3136763921756e-08, 0.2049731526845e+01, 0.2346394437820e+00, 0.3795147256194e-08, 0.2432356296933e+00, 0.1862120789403e+00, 0.2877342229911e-08, 0.5631101279387e+01, 0.1905464808669e+01, 0.3076931798805e-08, 0.1117615737392e+01, 0.3628624111593e+00, 0.2734765945273e-08, 0.5899826516955e+01, 0.2131850110243e+00, 0.2733405296885e-08, 0.2130562964070e+01, 0.2134131485323e+00, 0.2898552353410e-08, 0.3462387048225e+00, 0.5291709230214e+00, 0.2893736103681e-08, 0.8534352781543e+00, 0.5302110212022e+00, 0.3095717734137e-08, 0.2875061429041e+01, 0.2976424921901e+00, 0.2636190425832e-08, 0.2242512846659e+01, 0.1485980103780e+01, 0.3645512095537e-08, 0.1354016903958e+01, 0.6044726378023e+00, 0.2808173547723e-08, 0.6705114365631e-01, 0.6225157782540e-01, 0.2625012866888e-08, 0.4775705748482e+01, 0.5268983110410e-01, 0.2572233995651e-08, 0.2638924216139e+01, 0.1258454114666e+01, 0.2604238824792e-08, 0.4826358927373e+01, 0.2103781122809e+00, 0.2596886385239e-08, 0.3200388483118e+01, 0.2162200472757e+00, 0.3228057304264e-08, 0.5384848409563e+01, 0.2007689919132e+00, 0.2481601798252e-08, 0.5173373487744e+01, 0.1062562936266e+01, 0.2745977498864e-08, 0.6250966149853e+01, 0.5651155736444e+00, 0.2669878833811e-08, 0.4906001352499e+01, 0.1400015846597e+00, 0.3203986611711e-08, 0.5034333010005e+01, 0.7036329877322e+00, 0.3354961227212e-08, 0.6108262423137e+01, 0.4549093064213e+00, 0.2400407324558e-08, 0.2135399294955e+01, 0.2125476091956e+00, 0.2379905859802e-08, 0.5893721933961e+01, 0.2140505503610e+00, 0.2550844302187e-08, 0.3331940762063e+01, 0.1534957940063e+00, 0.2268824211001e-08, 0.1843418461035e+01, 0.2235935264888e+00, 0.2464700891204e-08, 0.3029548547230e+01, 0.2091065926078e+00, 0.2436814726024e-08, 0.4994717970364e+01, 0.2174915669488e+00, 0.2443623894745e-08, 0.2645102591375e+01, 0.1739420156204e+00, 0.2318701783838e-08, 0.5700547397897e+01, 0.7530171478090e-01, 0.2284448700256e-08, 0.5268898905872e+01, 0.7426161660010e-01, 0.2468848123510e-08, 0.5276280575078e+01, 0.2526561439362e+00, 0.2814052350303e-08, 0.6130168623475e+01, 0.5636314030725e+00, 0.2243662755220e-08, 0.6631692457995e+00, 0.8886590321940e-01, 0.2330795855941e-08, 0.2499435487702e+01, 0.1056200952181e+01, 0.9757679038404e-09, 0.5796846023126e+01, 0.7826370942180e+02 }; /* SSB-to-Sun, T^0, Z */ static const double s0z[] = { 0.1181255122986e-03, 0.4607918989164e+00, 0.2132990797783e+00, 0.1127777651095e-03, 0.4169146331296e+00, 0.5296909721118e+00, 0.4777754401806e-04, 0.4582657007130e+01, 0.3813291813120e-01, 0.1129354285772e-04, 0.5758735142480e+01, 0.7478166569050e-01, -0.1149543637123e-04, 0.0000000000000e+00, 0.0000000000000e+00, 0.3298730512306e-05, 0.5978801994625e+01, 0.4265981595566e+00, 0.2733376706079e-05, 0.7665413691040e+00, 0.1059381944224e+01, 0.9426389657270e-06, 0.3710201265838e+01, 0.2061856251104e+00, 0.8187517749552e-06, 0.3390675605802e+00, 0.2204125344462e+00, 0.4080447871819e-06, 0.4552296640088e+00, 0.5225775174439e+00, 0.3169973017028e-06, 0.3445455899321e+01, 0.5368044267797e+00, 0.2438098615549e-06, 0.5664675150648e+01, 0.3664874755930e-01, 0.2601897517235e-06, 0.1931894095697e+01, 0.1495633313810e+00, 0.2314558080079e-06, 0.3666319115574e+00, 0.3961708870310e-01, 0.1962549548002e-06, 0.3167411699020e+01, 0.7626583626240e-01, 0.2180518287925e-06, 0.1544420746580e+01, 0.7113454667900e-02, 0.1451382442868e-06, 0.1583756740070e+01, 0.1102062672231e+00, 0.1358439007389e-06, 0.5239941758280e+01, 0.6398972393349e+00, 0.1050585898028e-06, 0.2266958352859e+01, 0.3163918923335e+00, 0.1050029870186e-06, 0.2711495250354e+01, 0.4194847048887e+00, 0.9934920679800e-07, 0.1116208151396e+01, 0.1589072916335e+01, 0.1048395331560e-06, 0.3408619600206e+01, 0.1021328554739e+02, 0.8370147196668e-07, 0.3810459401087e+01, 0.2535050500000e-01, 0.7989856510998e-07, 0.3769910473647e+01, 0.7329749511860e-01, 0.5441221655233e-07, 0.2416994903374e+01, 0.1030928125552e+00, 0.4610812906784e-07, 0.5858503336994e+01, 0.4337116142245e+00, 0.3923022803444e-07, 0.3354170010125e+00, 0.1484170571900e-02, 0.2610725582128e-07, 0.5410600646324e+01, 0.6327837846670e+00, 0.2455279767721e-07, 0.6120216681403e+01, 0.1162474756779e+01, 0.2375530706525e-07, 0.6055443426143e+01, 0.1052268489556e+01, 0.1782967577553e-07, 0.3146108708004e+01, 0.8460828644453e+00, 0.1581687095238e-07, 0.6255496089819e+00, 0.3340612434717e+01, 0.1594657672461e-07, 0.3782604300261e+01, 0.1066495398892e+01, 0.1563448615040e-07, 0.1997775733196e+01, 0.2022531624851e+00, 0.1463624258525e-07, 0.1736316792088e+00, 0.3516457698740e-01, 0.1331585056673e-07, 0.4331941830747e+01, 0.9491756770005e+00, 0.1130634557637e-07, 0.6152017751825e+01, 0.2968341143800e-02, 0.1028949607145e-07, 0.2101792614637e+00, 0.2275259891141e+00, 0.1024074971618e-07, 0.4071833211074e+01, 0.5070101000000e-01, 0.8826956060303e-08, 0.4861633688145e+00, 0.2093666171530e+00, 0.8572230171541e-08, 0.5268190724302e+01, 0.4110125927500e-01, 0.7649332643544e-08, 0.5134543417106e+01, 0.2608790314060e+02, 0.8581673291033e-08, 0.2920218146681e+01, 0.1480791608091e+00, 0.8430589300938e-08, 0.3604576619108e+01, 0.2172315424036e+00, 0.7776165501012e-08, 0.3772942249792e+01, 0.6373574839730e-01, 0.8311070234408e-08, 0.6200412329888e+01, 0.3235053470014e+00, 0.6927365212582e-08, 0.4543353113437e+01, 0.8531963191132e+00, 0.6791574208598e-08, 0.2882188406238e+01, 0.7181332454670e-01, 0.5593100811839e-08, 0.1776646892780e+01, 0.7429900518901e+00, 0.4553381853021e-08, 0.3949617611240e+01, 0.7775000683430e-01, 0.5758000450068e-08, 0.3859251775075e+01, 0.1990721704425e+00, 0.4281283457133e-08, 0.1466294631206e+01, 0.2118763888447e+01, 0.4206935661097e-08, 0.5421776011706e+01, 0.1104591729320e-01, 0.4213751641837e-08, 0.3412048993322e+01, 0.2243449970715e+00, 0.5310506239878e-08, 0.5421641370995e+00, 0.5154640627760e+00, 0.3827450341320e-08, 0.8887314524995e+00, 0.1510475019529e+00, 0.4292435241187e-08, 0.1405043757194e+01, 0.1422690933580e-01, 0.3189780702289e-08, 0.1060049293445e+01, 0.1173197218910e+00, 0.3226611928069e-08, 0.6270858897442e+01, 0.2164800718209e+00, 0.2893897608830e-08, 0.5117563223301e+01, 0.6470106940028e+00, 0.3239852024578e-08, 0.4079092237983e+01, 0.2101180877357e+00, 0.2956892222200e-08, 0.1594917021704e+01, 0.3092784376656e+00, 0.2980177912437e-08, 0.5258787667564e+01, 0.4155522422634e+00, 0.3163725690776e-08, 0.3854589225479e+01, 0.8582758298370e-01, 0.2662262399118e-08, 0.3561326430187e+01, 0.5257585094865e+00, 0.2766689135729e-08, 0.3180732086830e+00, 0.1385174140878e+00, 0.2411600278464e-08, 0.3324798335058e+01, 0.5439178814476e+00, 0.2483527695131e-08, 0.4169069291947e+00, 0.5336234347371e+00, 0.7788777276590e-09, 0.1900569908215e+01, 0.5217580628120e+02 }; /* SSB-to-Sun, T^1, X */ static const double s1x[] = { -0.1296310361520e-07, 0.0000000000000e+00, 0.0000000000000e+00, 0.8975769009438e-08, 0.1128891609250e+01, 0.4265981595566e+00, 0.7771113441307e-08, 0.2706039877077e+01, 0.2061856251104e+00, 0.7538303866642e-08, 0.2191281289498e+01, 0.2204125344462e+00, 0.6061384579336e-08, 0.3248167319958e+01, 0.1059381944224e+01, 0.5726994235594e-08, 0.5569981398610e+01, 0.5225775174439e+00, 0.5616492836424e-08, 0.5057386614909e+01, 0.5368044267797e+00, 0.1010881584769e-08, 0.3473577116095e+01, 0.7113454667900e-02, 0.7259606157626e-09, 0.3651858593665e+00, 0.6398972393349e+00, 0.8755095026935e-09, 0.1662835408338e+01, 0.4194847048887e+00, 0.5370491182812e-09, 0.1327673878077e+01, 0.4337116142245e+00, 0.5743773887665e-09, 0.4250200846687e+01, 0.2132990797783e+00, 0.4408103140300e-09, 0.3598752574277e+01, 0.1589072916335e+01, 0.3101892374445e-09, 0.4887822983319e+01, 0.1052268489556e+01, 0.3209453713578e-09, 0.9702272295114e+00, 0.5296909721118e+00, 0.3017228286064e-09, 0.5484462275949e+01, 0.1066495398892e+01, 0.3200700038601e-09, 0.2846613338643e+01, 0.1495633313810e+00, 0.2137637279911e-09, 0.5692163292729e+00, 0.3163918923335e+00, 0.1899686386727e-09, 0.2061077157189e+01, 0.2275259891141e+00, 0.1401994545308e-09, 0.4177771136967e+01, 0.1102062672231e+00, 0.1578057810499e-09, 0.5782460597335e+01, 0.7626583626240e-01, 0.1237713253351e-09, 0.5705900866881e+01, 0.5154640627760e+00, 0.1313076837395e-09, 0.5163438179576e+01, 0.3664874755930e-01, 0.1184963304860e-09, 0.3054804427242e+01, 0.6327837846670e+00, 0.1238130878565e-09, 0.2317292575962e+01, 0.3961708870310e-01, 0.1015959527736e-09, 0.2194643645526e+01, 0.7329749511860e-01, 0.9017954423714e-10, 0.2868603545435e+01, 0.1990721704425e+00, 0.8668024955603e-10, 0.4923849675082e+01, 0.5439178814476e+00, 0.7756083930103e-10, 0.3014334135200e+01, 0.9491756770005e+00, 0.7536503401741e-10, 0.2704886279769e+01, 0.1030928125552e+00, 0.5483308679332e-10, 0.6010983673799e+01, 0.8531963191132e+00, 0.5184339620428e-10, 0.1952704573291e+01, 0.2093666171530e+00, 0.5108658712030e-10, 0.2958575786649e+01, 0.2172315424036e+00, 0.5019424524650e-10, 0.1736317621318e+01, 0.2164800718209e+00, 0.4909312625978e-10, 0.3167216416257e+01, 0.2101180877357e+00, 0.4456638901107e-10, 0.7697579923471e+00, 0.3235053470014e+00, 0.4227030350925e-10, 0.3490910137928e+01, 0.6373574839730e-01, 0.4095456040093e-10, 0.5178888984491e+00, 0.6470106940028e+00, 0.4990537041422e-10, 0.3323887668974e+01, 0.1422690933580e-01, 0.4321170010845e-10, 0.4288484987118e+01, 0.7358765972222e+00, 0.3544072091802e-10, 0.6021051579251e+01, 0.5265099800692e+00, 0.3480198638687e-10, 0.4600027054714e+01, 0.5328719641544e+00, 0.3440287244435e-10, 0.4349525970742e+01, 0.8582758298370e-01, 0.3330628322713e-10, 0.2347391505082e+01, 0.1104591729320e-01, 0.2973060707184e-10, 0.4789409286400e+01, 0.5257585094865e+00, 0.2932606766089e-10, 0.5831693799927e+01, 0.5336234347371e+00, 0.2876972310953e-10, 0.2692638514771e+01, 0.1173197218910e+00, 0.2827488278556e-10, 0.2056052487960e+01, 0.2022531624851e+00, 0.2515028239756e-10, 0.7411863262449e+00, 0.9597935788730e-01, 0.2853033744415e-10, 0.3948481024894e+01, 0.2118763888447e+01 }; /* SSB-to-Sun, T^1, Y */ static const double s1y[] = { 0.8989047573576e-08, 0.5840593672122e+01, 0.4265981595566e+00, 0.7815938401048e-08, 0.1129664707133e+01, 0.2061856251104e+00, 0.7550926713280e-08, 0.6196589104845e+00, 0.2204125344462e+00, 0.6056556925895e-08, 0.1677494667846e+01, 0.1059381944224e+01, 0.5734142698204e-08, 0.4000920852962e+01, 0.5225775174439e+00, 0.5614341822459e-08, 0.3486722577328e+01, 0.5368044267797e+00, 0.1028678147656e-08, 0.1877141024787e+01, 0.7113454667900e-02, 0.7270792075266e-09, 0.5077167301739e+01, 0.6398972393349e+00, 0.8734141726040e-09, 0.9069550282609e-01, 0.4194847048887e+00, 0.5377371402113e-09, 0.6039381844671e+01, 0.4337116142245e+00, 0.4729719431571e-09, 0.2153086311760e+01, 0.2132990797783e+00, 0.4458052820973e-09, 0.5059830025565e+01, 0.5296909721118e+00, 0.4406855467908e-09, 0.2027971692630e+01, 0.1589072916335e+01, 0.3101659310977e-09, 0.3317677981860e+01, 0.1052268489556e+01, 0.3016749232545e-09, 0.3913703482532e+01, 0.1066495398892e+01, 0.3198541352656e-09, 0.1275513098525e+01, 0.1495633313810e+00, 0.2142065389871e-09, 0.5301351614597e+01, 0.3163918923335e+00, 0.1902615247592e-09, 0.4894943352736e+00, 0.2275259891141e+00, 0.1613410990871e-09, 0.2449891130437e+01, 0.1102062672231e+00, 0.1576992165097e-09, 0.4211421447633e+01, 0.7626583626240e-01, 0.1241637259894e-09, 0.4140803368133e+01, 0.5154640627760e+00, 0.1313974830355e-09, 0.3591920305503e+01, 0.3664874755930e-01, 0.1181697118258e-09, 0.1506314382788e+01, 0.6327837846670e+00, 0.1238239742779e-09, 0.7461405378404e+00, 0.3961708870310e-01, 0.1010107068241e-09, 0.6271010795475e+00, 0.7329749511860e-01, 0.9226316616509e-10, 0.1259158839583e+01, 0.1990721704425e+00, 0.8664946419555e-10, 0.3353244696934e+01, 0.5439178814476e+00, 0.7757230468978e-10, 0.1447677295196e+01, 0.9491756770005e+00, 0.7693168628139e-10, 0.1120509896721e+01, 0.1030928125552e+00, 0.5487897454612e-10, 0.4439380426795e+01, 0.8531963191132e+00, 0.5196118677218e-10, 0.3788856619137e+00, 0.2093666171530e+00, 0.5110853339935e-10, 0.1386879372016e+01, 0.2172315424036e+00, 0.5027804534813e-10, 0.1647881805466e+00, 0.2164800718209e+00, 0.4922485922674e-10, 0.1594315079862e+01, 0.2101180877357e+00, 0.6155599524400e-10, 0.0000000000000e+00, 0.0000000000000e+00, 0.4447147832161e-10, 0.5480720918976e+01, 0.3235053470014e+00, 0.4144691276422e-10, 0.1931371033660e+01, 0.6373574839730e-01, 0.4099950625452e-10, 0.5229611294335e+01, 0.6470106940028e+00, 0.5060541682953e-10, 0.1731112486298e+01, 0.1422690933580e-01, 0.4293615946300e-10, 0.2714571038925e+01, 0.7358765972222e+00, 0.3545659845763e-10, 0.4451041444634e+01, 0.5265099800692e+00, 0.3479112041196e-10, 0.3029385448081e+01, 0.5328719641544e+00, 0.3438516493570e-10, 0.2778507143731e+01, 0.8582758298370e-01, 0.3297341285033e-10, 0.7898709807584e+00, 0.1104591729320e-01, 0.2972585818015e-10, 0.3218785316973e+01, 0.5257585094865e+00, 0.2931707295017e-10, 0.4260731012098e+01, 0.5336234347371e+00, 0.2897198149403e-10, 0.1120753978101e+01, 0.1173197218910e+00, 0.2832293240878e-10, 0.4597682717827e+00, 0.2022531624851e+00, 0.2864348326612e-10, 0.2169939928448e+01, 0.9597935788730e-01, 0.2852714675471e-10, 0.2377659870578e+01, 0.2118763888447e+01 }; /* SSB-to-Sun, T^1, Z */ static const double s1z[] = { 0.5444220475678e-08, 0.1803825509310e+01, 0.2132990797783e+00, 0.3883412695596e-08, 0.4668616389392e+01, 0.5296909721118e+00, 0.1334341434551e-08, 0.0000000000000e+00, 0.0000000000000e+00, 0.3730001266883e-09, 0.5401405918943e+01, 0.2061856251104e+00, 0.2894929197956e-09, 0.4932415609852e+01, 0.2204125344462e+00, 0.2857950357701e-09, 0.3154625362131e+01, 0.7478166569050e-01, 0.2499226432292e-09, 0.3657486128988e+01, 0.4265981595566e+00, 0.1937705443593e-09, 0.5740434679002e+01, 0.1059381944224e+01, 0.1374894396320e-09, 0.1712857366891e+01, 0.5368044267797e+00, 0.1217248678408e-09, 0.2312090870932e+01, 0.5225775174439e+00, 0.7961052740870e-10, 0.5283368554163e+01, 0.3813291813120e-01, 0.4979225949689e-10, 0.4298290471860e+01, 0.4194847048887e+00, 0.4388552286597e-10, 0.6145515047406e+01, 0.7113454667900e-02, 0.2586835212560e-10, 0.3019448001809e+01, 0.6398972393349e+00 }; /* SSB-to-Sun, T^2, X */ static const double s2x[] = { 0.1603551636587e-11, 0.4404109410481e+01, 0.2061856251104e+00, 0.1556935889384e-11, 0.4818040873603e+00, 0.2204125344462e+00, 0.1182594414915e-11, 0.9935762734472e+00, 0.5225775174439e+00, 0.1158794583180e-11, 0.3353180966450e+01, 0.5368044267797e+00, 0.9597358943932e-12, 0.5567045358298e+01, 0.2132990797783e+00, 0.6511516579605e-12, 0.5630872420788e+01, 0.4265981595566e+00, 0.7419792747688e-12, 0.2156188581957e+01, 0.5296909721118e+00, 0.3951972655848e-12, 0.1981022541805e+01, 0.1059381944224e+01, 0.4478223877045e-12, 0.0000000000000e+00, 0.0000000000000e+00 }; /* SSB-to-Sun, T^2, Y */ static const double s2y[] = { 0.1609114495091e-11, 0.2831096993481e+01, 0.2061856251104e+00, 0.1560330784946e-11, 0.5193058213906e+01, 0.2204125344462e+00, 0.1183535479202e-11, 0.5707003443890e+01, 0.5225775174439e+00, 0.1158183066182e-11, 0.1782400404928e+01, 0.5368044267797e+00, 0.1032868027407e-11, 0.4036925452011e+01, 0.2132990797783e+00, 0.6540142847741e-12, 0.4058241056717e+01, 0.4265981595566e+00, 0.7305236491596e-12, 0.6175401942957e+00, 0.5296909721118e+00, -0.5580725052968e-12, 0.0000000000000e+00, 0.0000000000000e+00, 0.3946122651015e-12, 0.4108265279171e+00, 0.1059381944224e+01 }; /* SSB-to-Sun, T^2, Z */ static const double s2z[] = { 0.3749920358054e-12, 0.3230285558668e+01, 0.2132990797783e+00, 0.2735037220939e-12, 0.6154322683046e+01, 0.5296909721118e+00 }; /* Pointers to coefficient arrays, in x,y,z sets */ static const double *ce0[] = { e0x, e0y, e0z }, *ce1[] = { e1x, e1y, e1z }, *ce2[] = { e2x, e2y, e2z }, *cs0[] = { s0x, s0y, s0z }, *cs1[] = { s1x, s1y, s1z }, *cs2[] = { s2x, s2y, s2z }; const double *coeffs; /* Numbers of terms for each component of the model, in x,y,z sets */ static const int ne0[3] = {(int)(sizeof e0x / sizeof (double) / 3), (int)(sizeof e0y / sizeof (double) / 3), (int)(sizeof e0z / sizeof (double) / 3) }, ne1[3] = {(int)(sizeof e1x / sizeof (double) / 3), (int)(sizeof e1y / sizeof (double) / 3), (int)(sizeof e1z / sizeof (double) / 3) }, ne2[3] = {(int)(sizeof e2x / sizeof (double) / 3), (int)(sizeof e2y / sizeof (double) / 3), (int)(sizeof e2z / sizeof (double) / 3) }, ns0[3] = {(int)(sizeof s0x / sizeof (double) / 3), (int)(sizeof s0y / sizeof (double) / 3), (int)(sizeof s0z / sizeof (double) / 3) }, ns1[3] = {(int)(sizeof s1x / sizeof (double) / 3), (int)(sizeof s1y / sizeof (double) / 3), (int)(sizeof s1z / sizeof (double) / 3) }, ns2[3] = {(int)(sizeof s2x / sizeof (double) / 3), (int)(sizeof s2y / sizeof (double) / 3), (int)(sizeof s2z / sizeof (double) / 3) }; int nterms; /* Miscellaneous */ int jstat, i, j; double t, t2, xyz, xyzd, a, b, c, ct, p, cp, ph[3], vh[3], pb[3], vb[3], x, y, z; /*--------------------------------------------------------------------*/ /* Time since reference epoch, Julian years. */ t = ((date1 - DJ00) + date2) / DJY; t2 = t*t; /* Set status. */ jstat = fabs(t) <= 100.0 ? 0 : 1; /* X then Y then Z. */ for (i = 0; i < 3; i++) { /* Initialize position and velocity component. */ xyz = 0.0; xyzd = 0.0; /* ------------------------------------------------ */ /* Obtain component of Sun to Earth ecliptic vector */ /* ------------------------------------------------ */ /* Sun to Earth, T^0 terms. */ coeffs = ce0[i]; nterms = ne0[i]; for (j = 0; j < nterms; j++) { a = *coeffs++; b = *coeffs++; c = *coeffs++; p = b + c*t; xyz += a*cos(p); xyzd -= a*c*sin(p); } /* Sun to Earth, T^1 terms. */ coeffs = ce1[i]; nterms = ne1[i]; for (j = 0; j < nterms; j++) { a = *coeffs++; b = *coeffs++; c = *coeffs++; ct = c*t; p = b + ct; cp = cos(p); xyz += a*t*cp; xyzd += a*( cp - ct*sin(p) ); } /* Sun to Earth, T^2 terms. */ coeffs = ce2[i]; nterms = ne2[i]; for (j = 0; j < nterms; j++) { a = *coeffs++; b = *coeffs++; c = *coeffs++; ct = c*t; p = b + ct; cp = cos(p); xyz += a*t2*cp; xyzd += a*t*( 2.0*cp - ct*sin(p) ); } /* Heliocentric Earth position and velocity component. */ ph[i] = xyz; vh[i] = xyzd / DJY; /* ------------------------------------------------ */ /* Obtain component of SSB to Earth ecliptic vector */ /* ------------------------------------------------ */ /* SSB to Sun, T^0 terms. */ coeffs = cs0[i]; nterms = ns0[i]; for (j = 0; j < nterms; j++) { a = *coeffs++; b = *coeffs++; c = *coeffs++; p = b + c*t; xyz += a*cos(p); xyzd -= a*c*sin(p); } /* SSB to Sun, T^1 terms. */ coeffs = cs1[i]; nterms = ns1[i]; for (j = 0; j < nterms; j++) { a = *coeffs++; b = *coeffs++; c = *coeffs++; ct = c*t; p = b + ct; cp = cos(p); xyz += a*t*cp; xyzd += a*(cp - ct*sin(p)); } /* SSB to Sun, T^2 terms. */ coeffs = cs2[i]; nterms = ns2[i]; for (j = 0; j < nterms; j++) { a = *coeffs++; b = *coeffs++; c = *coeffs++; ct = c*t; p = b + ct; cp = cos(p); xyz += a*t2*cp; xyzd += a*t*(2.0*cp - ct*sin(p)); } /* Barycentric Earth position and velocity component. */ pb[i] = xyz; vb[i] = xyzd / DJY; /* Next Cartesian component. */ } /* Rotate from ecliptic to BCRS coordinates. */ x = ph[0]; y = ph[1]; z = ph[2]; pvh[0][0] = x + am12*y + am13*z; pvh[0][1] = am21*x + am22*y + am23*z; pvh[0][2] = am32*y + am33*z; x = vh[0]; y = vh[1]; z = vh[2]; pvh[1][0] = x + am12*y + am13*z; pvh[1][1] = am21*x + am22*y + am23*z; pvh[1][2] = am32*y + am33*z; x = pb[0]; y = pb[1]; z = pb[2]; pvb[0][0] = x + am12*y + am13*z; pvb[0][1] = am21*x + am22*y + am23*z; pvb[0][2] = am32*y + am33*z; x = vb[0]; y = vb[1]; z = vb[2]; pvb[1][0] = x + am12*y + am13*z; pvb[1][1] = am21*x + am22*y + am23*z; pvb[1][2] = am32*y + am33*z; /* Return the status. */ return jstat; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/eqeq94.c0000644000113000011300000001545012507252056014152 0ustar bellsbells#include "sofa.h" double iauEqeq94(double date1, double date2) /* ** - - - - - - - - - - ** i a u E q e q 9 4 ** - - - - - - - - - - ** ** Equation of the equinoxes, IAU 1994 model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TDB date (Note 1) ** ** Returned (function value): ** double equation of the equinoxes (Note 2) ** ** Notes: ** ** 1) The date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The result, which is in radians, operates in the following sense: ** ** Greenwich apparent ST = GMST + equation of the equinoxes ** ** Called: ** iauAnpm normalize angle into range +/- pi ** iauNut80 nutation, IAU 1980 ** iauObl80 mean obliquity, IAU 1980 ** ** References: ** ** IAU Resolution C7, Recommendation 3 (1994). ** ** Capitaine, N. & Gontier, A.-M., 1993, Astron. Astrophys., 275, ** 645-650. ** ** This revision: 2013 August 31 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double t, om, dpsi, deps, eps0, ee; /* Interval between fundamental epoch J2000.0 and given date (JC). */ t = ((date1 - DJ00) + date2) / DJC; /* Longitude of the mean ascending node of the lunar orbit on the */ /* ecliptic, measured from the mean equinox of date. */ om = iauAnpm((450160.280 + (-482890.539 + (7.455 + 0.008 * t) * t) * t) * DAS2R + fmod(-5.0 * t, 1.0) * D2PI); /* Nutation components and mean obliquity. */ iauNut80(date1, date2, &dpsi, &deps); eps0 = iauObl80(date1, date2); /* Equation of the equinoxes. */ ee = dpsi*cos(eps0) + DAS2R*(0.00264*sin(om) + 0.000063*sin(om+om)); return ee; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/era00.c0000644000113000011300000001550112507252056013746 0ustar bellsbells#include "sofa.h" double iauEra00(double dj1, double dj2) /* ** - - - - - - - - - ** i a u E r a 0 0 ** - - - - - - - - - ** ** Earth rotation angle (IAU 2000 model). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** dj1,dj2 double UT1 as a 2-part Julian Date (see note) ** ** Returned (function value): ** double Earth rotation angle (radians), range 0-2pi ** ** Notes: ** ** 1) The UT1 date dj1+dj2 is a Julian Date, apportioned in any ** convenient way between the arguments dj1 and dj2. For example, ** JD(UT1)=2450123.7 could be expressed in any of these ways, ** among others: ** ** dj1 dj2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. The date & time method is ** best matched to the algorithm used: maximum precision is ** delivered when the dj1 argument is for 0hrs UT1 on the day in ** question and the dj2 argument lies in the range 0 to 1, or vice ** versa. ** ** 2) The algorithm is adapted from Expression 22 of Capitaine et al. ** 2000. The time argument has been expressed in days directly, ** and, to retain precision, integer contributions have been ** eliminated. The same formulation is given in IERS Conventions ** (2003), Chap. 5, Eq. 14. ** ** Called: ** iauAnp normalize angle into range 0 to 2pi ** ** References: ** ** Capitaine N., Guinot B. and McCarthy D.D, 2000, Astron. ** Astrophys., 355, 398-405. ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double d1, d2, t, f, theta; /* Days since fundamental epoch. */ if (dj1 < dj2) { d1 = dj1; d2 = dj2; } else { d1 = dj2; d2 = dj1; } t = d1 + (d2- DJ00); /* Fractional part of T (days). */ f = fmod(d1, 1.0) + fmod(d2, 1.0); /* Earth rotation angle at this UT1. */ theta = iauAnp(D2PI * (f + 0.7790572732640 + 0.00273781191135448 * t)); return theta; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/fad03.c0000644000113000011300000001323412507252056013735 0ustar bellsbells#include "sofa.h" double iauFad03(double t) /* ** - - - - - - - - - ** i a u F a d 0 3 ** - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean elongation of the Moon from the Sun. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double D, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** is from Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double a; /* Mean elongation of the Moon from the Sun (IERS Conventions 2003). */ a = fmod( 1072260.703692 + t * ( 1602961601.2090 + t * ( - 6.3706 + t * ( 0.006593 + t * ( - 0.00003169 ) ) ) ), TURNAS ) * DAS2R; return a; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/fae03.c0000644000113000011300000001317312507252056013740 0ustar bellsbells#include "sofa.h" double iauFae03(double t) /* ** - - - - - - - - - ** i a u F a e 0 3 ** - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of Earth. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double mean longitude of Earth, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** comes from Souchay et al. (1999) after Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, ** Astron.Astrophys.Supp.Ser. 135, 111 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double a; /* Mean longitude of Earth (IERS Conventions 2003). */ a = fmod(1.753470314 + 628.3075849991 * t, D2PI); return a; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/faf03.c0000644000113000011300000001337112507252056013741 0ustar bellsbells#include "sofa.h" double iauFaf03(double t) /* ** - - - - - - - - - ** i a u F a f 0 3 ** - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of the Moon minus mean longitude of the ascending ** node. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double F, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** is from Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double a; /* Mean longitude of the Moon minus that of the ascending node */ /* (IERS Conventions 2003). */ a = fmod( 335779.526232 + t * ( 1739527262.8478 + t * ( - 12.7512 + t * ( - 0.001037 + t * ( 0.00000417 ) ) ) ), TURNAS ) * DAS2R; return a; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/faju03.c0000644000113000011300000001320712507252056014130 0ustar bellsbells#include "sofa.h" double iauFaju03(double t) /* ** - - - - - - - - - - ** i a u F a j u 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of Jupiter. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double mean longitude of Jupiter, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** comes from Souchay et al. (1999) after Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, ** Astron.Astrophys.Supp.Ser. 135, 111 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double a; /* Mean longitude of Jupiter (IERS Conventions 2003). */ a = fmod(0.599546497 + 52.9690962641 * t, D2PI); return a; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/fal03.c0000644000113000011300000001317512507252056013751 0ustar bellsbells#include "sofa.h" double iauFal03(double t) /* ** - - - - - - - - - ** i a u F a l 0 3 ** - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean anomaly of the Moon. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double l, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** is from Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double a; /* Mean anomaly of the Moon (IERS Conventions 2003). */ a = fmod( 485868.249036 + t * ( 1717915923.2178 + t * ( 31.8792 + t * ( 0.051635 + t * ( - 0.00024470 ) ) ) ), TURNAS ) * DAS2R; return a; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/falp03.c0000644000113000011300000001317512507252056014131 0ustar bellsbells#include "sofa.h" double iauFalp03(double t) /* ** - - - - - - - - - - ** i a u F a l p 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean anomaly of the Sun. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double l', radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** is from Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double a; /* Mean anomaly of the Sun (IERS Conventions 2003). */ a = fmod( 1287104.793048 + t * ( 129596581.0481 + t * ( - 0.5532 + t * ( 0.000136 + t * ( - 0.00001149 ) ) ) ), TURNAS ) * DAS2R; return a; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/fama03.c0000644000113000011300000001317712507252056014115 0ustar bellsbells#include "sofa.h" double iauFama03(double t) /* ** - - - - - - - - - - ** i a u F a m a 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of Mars. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double mean longitude of Mars, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** comes from Souchay et al. (1999) after Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, ** Astron.Astrophys.Supp.Ser. 135, 111 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double a; /* Mean longitude of Mars (IERS Conventions 2003). */ a = fmod(6.203480913 + 334.0612426700 * t, D2PI); return a; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/fame03.c0000644000113000011300000001321112507252056014106 0ustar bellsbells#include "sofa.h" double iauFame03(double t) /* ** - - - - - - - - - - ** i a u F a m e 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of Mercury. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double mean longitude of Mercury, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** comes from Souchay et al. (1999) after Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, ** Astron.Astrophys.Supp.Ser. 135, 111 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double a; /* Mean longitude of Mercury (IERS Conventions 2003). */ a = fmod(4.402608842 + 2608.7903141574 * t, D2PI); return a; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/fane03.c0000644000113000011300000001277612507252056014126 0ustar bellsbells#include "sofa.h" double iauFane03(double t) /* ** - - - - - - - - - - ** i a u F a n e 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of Neptune. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double mean longitude of Neptune, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** is adapted from Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double a; /* Mean longitude of Neptune (IERS Conventions 2003). */ a = fmod(5.311886287 + 3.8133035638 * t, D2PI); return a; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/faom03.c0000644000113000011300000001330112507252056014120 0ustar bellsbells#include "sofa.h" double iauFaom03(double t) /* ** - - - - - - - - - - ** i a u F a o m 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of the Moon's ascending node. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double Omega, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** is from Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double a; /* Mean longitude of the Moon's ascending node */ /* (IERS Conventions 2003). */ a = fmod( 450160.398036 + t * ( - 6962890.5431 + t * ( 7.4722 + t * ( 0.007702 + t * ( - 0.00005939 ) ) ) ), TURNAS ) * DAS2R; return a; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/fapa03.c0000644000113000011300000001317112507252056014112 0ustar bellsbells#include "sofa.h" double iauFapa03(double t) /* ** - - - - - - - - - - ** i a u F a p a 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** general accumulated precession in longitude. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double general precession in longitude, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003). It ** is taken from Kinoshita & Souchay (1990) and comes originally ** from Lieske et al. (1977). ** ** References: ** ** Kinoshita, H. and Souchay J. 1990, Celest.Mech. and Dyn.Astron. ** 48, 187 ** ** Lieske, J.H., Lederle, T., Fricke, W. & Morando, B. 1977, ** Astron.Astrophys. 58, 1-16 ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double a; /* General accumulated precession in longitude. */ a = (0.024381750 + 0.00000538691 * t) * t; return a; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/fasa03.c0000644000113000011300000001320412507252056014112 0ustar bellsbells#include "sofa.h" double iauFasa03(double t) /* ** - - - - - - - - - - ** i a u F a s a 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of Saturn. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double mean longitude of Saturn, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** comes from Souchay et al. (1999) after Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, ** Astron.Astrophys.Supp.Ser. 135, 111 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double a; /* Mean longitude of Saturn (IERS Conventions 2003). */ a = fmod(0.874016757 + 21.3299104960 * t, D2PI); return a; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/faur03.c0000644000113000011300000001277412507252056014150 0ustar bellsbells#include "sofa.h" double iauFaur03(double t) /* ** - - - - - - - - - - ** i a u F a u r 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of Uranus. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double mean longitude of Uranus, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** is adapted from Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double a; /* Mean longitude of Uranus (IERS Conventions 2003). */ a = fmod(5.481293872 + 7.4781598567 * t, D2PI); return a; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/fave03.c0000644000113000011300000001320312507252056014120 0ustar bellsbells#include "sofa.h" double iauFave03(double t) /* ** - - - - - - - - - - ** i a u F a v e 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of Venus. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double mean longitude of Venus, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** comes from Souchay et al. (1999) after Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, ** Astron.Astrophys.Supp.Ser. 135, 111 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double a; /* Mean longitude of Venus (IERS Conventions 2003). */ a = fmod(3.176146697 + 1021.3285546211 * t, D2PI); return a; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/fk52h.c0000644000113000011300000001637212507252056013765 0ustar bellsbells#include "sofa.h" void iauFk52h(double r5, double d5, double dr5, double dd5, double px5, double rv5, double *rh, double *dh, double *drh, double *ddh, double *pxh, double *rvh) /* ** - - - - - - - - - ** i a u F k 5 2 h ** - - - - - - - - - ** ** Transform FK5 (J2000.0) star data into the Hipparcos system. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given (all FK5, equinox J2000.0, epoch J2000.0): ** r5 double RA (radians) ** d5 double Dec (radians) ** dr5 double proper motion in RA (dRA/dt, rad/Jyear) ** dd5 double proper motion in Dec (dDec/dt, rad/Jyear) ** px5 double parallax (arcsec) ** rv5 double radial velocity (km/s, positive = receding) ** ** Returned (all Hipparcos, epoch J2000.0): ** rh double RA (radians) ** dh double Dec (radians) ** drh double proper motion in RA (dRA/dt, rad/Jyear) ** ddh double proper motion in Dec (dDec/dt, rad/Jyear) ** pxh double parallax (arcsec) ** rvh double radial velocity (km/s, positive = receding) ** ** Notes: ** ** 1) This function transforms FK5 star positions and proper motions ** into the system of the Hipparcos catalog. ** ** 2) The proper motions in RA are dRA/dt rather than ** cos(Dec)*dRA/dt, and are per year rather than per century. ** ** 3) The FK5 to Hipparcos transformation is modeled as a pure ** rotation and spin; zonal errors in the FK5 catalog are not ** taken into account. ** ** 4) See also iauH2fk5, iauFk5hz, iauHfk5z. ** ** Called: ** iauStarpv star catalog data to space motion pv-vector ** iauFk5hip FK5 to Hipparcos rotation and spin ** iauRxp product of r-matrix and p-vector ** iauPxp vector product of two p-vectors ** iauPpp p-vector plus p-vector ** iauPvstar space motion pv-vector to star catalog data ** ** Reference: ** ** F.Mignard & M.Froeschle, Astron. Astrophys. 354, 732-739 (2000). ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int i; double pv5[2][3], r5h[3][3], s5h[3], wxp[3], vv[3], pvh[2][3]; /* FK5 barycentric position/velocity pv-vector (normalized). */ iauStarpv(r5, d5, dr5, dd5, px5, rv5, pv5); /* FK5 to Hipparcos orientation matrix and spin vector. */ iauFk5hip(r5h, s5h); /* Make spin units per day instead of per year. */ for ( i = 0; i < 3; s5h[i++] /= 365.25 ); /* Orient the FK5 position into the Hipparcos system. */ iauRxp(r5h, pv5[0], pvh[0]); /* Apply spin to the position giving an extra space motion component. */ iauPxp(pv5[0], s5h, wxp); /* Add this component to the FK5 space motion. */ iauPpp(wxp, pv5[1], vv); /* Orient the FK5 space motion into the Hipparcos system. */ iauRxp(r5h, vv, pvh[1]); /* Hipparcos pv-vector to spherical. */ iauPvstar(pvh, rh, dh, drh, ddh, pxh, rvh); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/fk5hip.c0000644000113000011300000001406212507252056014226 0ustar bellsbells#include "sofa.h" void iauFk5hip(double r5h[3][3], double s5h[3]) /* ** - - - - - - - - - - ** i a u F k 5 h i p ** - - - - - - - - - - ** ** FK5 to Hipparcos rotation and spin. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Returned: ** r5h double[3][3] r-matrix: FK5 rotation wrt Hipparcos (Note 2) ** s5h double[3] r-vector: FK5 spin wrt Hipparcos (Note 3) ** ** Notes: ** ** 1) This function models the FK5 to Hipparcos transformation as a ** pure rotation and spin; zonal errors in the FK5 catalogue are ** not taken into account. ** ** 2) The r-matrix r5h operates in the sense: ** ** P_Hipparcos = r5h x P_FK5 ** ** where P_FK5 is a p-vector in the FK5 frame, and P_Hipparcos is ** the equivalent Hipparcos p-vector. ** ** 3) The r-vector s5h represents the time derivative of the FK5 to ** Hipparcos rotation. The units are radians per year (Julian, ** TDB). ** ** Called: ** iauRv2m r-vector to r-matrix ** ** Reference: ** ** F.Mignard & M.Froeschle, Astron. Astrophys. 354, 732-739 (2000). ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double v[3]; /* FK5 wrt Hipparcos orientation and spin (radians, radians/year) */ double epx, epy, epz; double omx, omy, omz; epx = -19.9e-3 * DAS2R; epy = -9.1e-3 * DAS2R; epz = 22.9e-3 * DAS2R; omx = -0.30e-3 * DAS2R; omy = 0.60e-3 * DAS2R; omz = 0.70e-3 * DAS2R; /* FK5 to Hipparcos orientation expressed as an r-vector. */ v[0] = epx; v[1] = epy; v[2] = epz; /* Re-express as an r-matrix. */ iauRv2m(v, r5h); /* Hipparcos wrt FK5 spin expressed as an r-vector. */ s5h[0] = omx; s5h[1] = omy; s5h[2] = omz; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/fk5hz.c0000644000113000011300000001763412507252056014077 0ustar bellsbells#include "sofa.h" void iauFk5hz(double r5, double d5, double date1, double date2, double *rh, double *dh) /* ** - - - - - - - - - ** i a u F k 5 h z ** - - - - - - - - - ** ** Transform an FK5 (J2000.0) star position into the system of the ** Hipparcos catalogue, assuming zero Hipparcos proper motion. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** r5 double FK5 RA (radians), equinox J2000.0, at date ** d5 double FK5 Dec (radians), equinox J2000.0, at date ** date1,date2 double TDB date (Notes 1,2) ** ** Returned: ** rh double Hipparcos RA (radians) ** dh double Hipparcos Dec (radians) ** ** Notes: ** ** 1) This function converts a star position from the FK5 system to ** the Hipparcos system, in such a way that the Hipparcos proper ** motion is zero. Because such a star has, in general, a non-zero ** proper motion in the FK5 system, the function requires the date ** at which the position in the FK5 system was determined. ** ** 2) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 3) The FK5 to Hipparcos transformation is modeled as a pure ** rotation and spin; zonal errors in the FK5 catalogue are not ** taken into account. ** ** 4) The position returned by this function is in the Hipparcos ** reference system but at date date1+date2. ** ** 5) See also iauFk52h, iauH2fk5, iauHfk5z. ** ** Called: ** iauS2c spherical coordinates to unit vector ** iauFk5hip FK5 to Hipparcos rotation and spin ** iauSxp multiply p-vector by scalar ** iauRv2m r-vector to r-matrix ** iauTrxp product of transpose of r-matrix and p-vector ** iauPxp vector product of two p-vectors ** iauC2s p-vector to spherical ** iauAnp normalize angle into range 0 to 2pi ** ** Reference: ** ** F.Mignard & M.Froeschle, 2000, Astron.Astrophys. 354, 732-739. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double t, p5e[3], r5h[3][3], s5h[3], vst[3], rst[3][3], p5[3], ph[3], w; /* Interval from given date to fundamental epoch J2000.0 (JY). */ t = - ((date1 - DJ00) + date2) / DJY; /* FK5 barycentric position vector. */ iauS2c(r5, d5, p5e); /* FK5 to Hipparcos orientation matrix and spin vector. */ iauFk5hip(r5h, s5h); /* Accumulated Hipparcos wrt FK5 spin over that interval. */ iauSxp(t, s5h, vst); /* Express the accumulated spin as a rotation matrix. */ iauRv2m(vst, rst); /* Derotate the vector's FK5 axes back to date. */ iauTrxp(rst, p5e, p5); /* Rotate the vector into the Hipparcos system. */ iauRxp(r5h, p5, ph); /* Hipparcos vector to spherical. */ iauC2s(ph, &w, dh); *rh = iauAnp(w); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/fw2m.c0000644000113000011300000001516212507252057013716 0ustar bellsbells#include "sofa.h" void iauFw2m(double gamb, double phib, double psi, double eps, double r[3][3]) /* ** - - - - - - - - ** i a u F w 2 m ** - - - - - - - - ** ** Form rotation matrix given the Fukushima-Williams angles. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** gamb double F-W angle gamma_bar (radians) ** phib double F-W angle phi_bar (radians) ** psi double F-W angle psi (radians) ** eps double F-W angle epsilon (radians) ** ** Returned: ** r double[3][3] rotation matrix ** ** Notes: ** ** 1) Naming the following points: ** ** e = J2000.0 ecliptic pole, ** p = GCRS pole, ** E = ecliptic pole of date, ** and P = CIP, ** ** the four Fukushima-Williams angles are as follows: ** ** gamb = gamma = epE ** phib = phi = pE ** psi = psi = pEP ** eps = epsilon = EP ** ** 2) The matrix representing the combined effects of frame bias, ** precession and nutation is: ** ** NxPxB = R_1(-eps).R_3(-psi).R_1(phib).R_3(gamb) ** ** 3) Three different matrices can be constructed, depending on the ** supplied angles: ** ** o To obtain the nutation x precession x frame bias matrix, ** generate the four precession angles, generate the nutation ** components and add them to the psi_bar and epsilon_A angles, ** and call the present function. ** ** o To obtain the precession x frame bias matrix, generate the ** four precession angles and call the present function. ** ** o To obtain the frame bias matrix, generate the four precession ** angles for date J2000.0 and call the present function. ** ** The nutation-only and precession-only matrices can if necessary ** be obtained by combining these three appropriately. ** ** Called: ** iauIr initialize r-matrix to identity ** iauRz rotate around Z-axis ** iauRx rotate around X-axis ** ** Reference: ** ** Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Construct the matrix. */ iauIr(r); iauRz(gamb, r); iauRx(phib, r); iauRz(-psi, r); iauRx(-eps, r); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/fw2xy.c0000644000113000011300000001400212507252057014112 0ustar bellsbells#include "sofa.h" void iauFw2xy(double gamb, double phib, double psi, double eps, double *x, double *y) /* ** - - - - - - - - - ** i a u F w 2 x y ** - - - - - - - - - ** ** CIP X,Y given Fukushima-Williams bias-precession-nutation angles. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** gamb double F-W angle gamma_bar (radians) ** phib double F-W angle phi_bar (radians) ** psi double F-W angle psi (radians) ** eps double F-W angle epsilon (radians) ** ** Returned: ** x,y double CIP unit vector X,Y ** ** Notes: ** ** 1) Naming the following points: ** ** e = J2000.0 ecliptic pole, ** p = GCRS pole ** E = ecliptic pole of date, ** and P = CIP, ** ** the four Fukushima-Williams angles are as follows: ** ** gamb = gamma = epE ** phib = phi = pE ** psi = psi = pEP ** eps = epsilon = EP ** ** 2) The matrix representing the combined effects of frame bias, ** precession and nutation is: ** ** NxPxB = R_1(-epsA).R_3(-psi).R_1(phib).R_3(gamb) ** ** The returned values x,y are elements [2][0] and [2][1] of the ** matrix. Near J2000.0, they are essentially angles in radians. ** ** Called: ** iauFw2m F-W angles to r-matrix ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** ** Reference: ** ** Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351 ** ** This revision: 2013 September 2 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double r[3][3]; /* Form NxPxB matrix. */ iauFw2m(gamb, phib, psi, eps, r); /* Extract CIP X,Y. */ iauBpn2xy(r, x, y); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/g2icrs.c0000644000113000011300000002031512507252057014230 0ustar bellsbells#include "sofa.h" void iauG2icrs ( double dl, double db, double *dr, double *dd ) /* ** - - - - - - - - - - ** i a u G 2 i c r s ** - - - - - - - - - - ** ** Transformation from Galactic Coordinates to ICRS. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support routine. ** ** Given: ** dl double galactic longitude (radians) ** db double galactic latitude (radians) ** ** Returned: ** dr double ICRS right ascension (radians) ** dd double ICRS declination (radians) ** ** Notes: ** ** 1) The IAU 1958 system of Galactic coordinates was defined with ** respect to the now obsolete reference system FK4 B1950.0. When ** interpreting the system in a modern context, several factors have ** to be taken into account: ** ** . The inclusion in FK4 positions of the E-terms of aberration. ** ** . The distortion of the FK4 proper motion system by differential ** Galactic rotation. ** ** . The use of the B1950.0 equinox rather than the now-standard ** J2000.0. ** ** . The frame bias between ICRS and the J2000.0 mean place system. ** ** The Hipparcos Catalogue (Perryman & ESA 1997) provides a rotation ** matrix that transforms directly between ICRS and Galactic ** coordinates with the above factors taken into account. The ** matrix is derived from three angles, namely the ICRS coordinates ** of the Galactic pole and the longitude of the ascending node of ** the galactic equator on the ICRS equator. They are given in ** degrees to five decimal places and for canonical purposes are ** regarded as exact. In the Hipparcos Catalogue the matrix ** elements are given to 10 decimal places (about 20 microarcsec). ** In the present SOFA function the matrix elements have been ** recomputed from the canonical three angles and are given to 30 ** decimal places. ** ** 2) The inverse transformation is performed by the function iauIcrs2g. ** ** Called: ** iauAnp normalize angle into range 0 to 2pi ** iauAnpm normalize angle into range +/- pi ** iauS2c spherical coordinates to unit vector ** iauTrxp product of transpose of r-matrix and p-vector ** iauC2s p-vector to spherical ** ** Reference: ** Perryman M.A.C. & ESA, 1997, ESA SP-1200, The Hipparcos and Tycho ** catalogues. Astrometric and photometric star catalogues ** derived from the ESA Hipparcos Space Astrometry Mission. ESA ** Publications Division, Noordwijk, Netherlands. ** ** This revision: 2015 January 20 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double v1[3], v2[3]; /* ** L2,B2 system of galactic coordinates in the form presented in the ** Hipparcos Catalogue. In degrees: ** ** P = 192.85948 right ascension of the Galactic north pole in ICRS ** Q = 27.12825 declination of the Galactic north pole in ICRS ** R = 32.93192 longitude of the ascending node of the Galactic ** plane on the ICRS equator ** ** ICRS to galactic rotation matrix, obtained by computing ** R_3(-R) R_1(pi/2-Q) R_3(pi/2+P) to the full precision shown: */ double r[3][3] = { { -0.054875560416215368492398900454, -0.873437090234885048760383168409, -0.483835015548713226831774175116 }, { +0.494109427875583673525222371358, -0.444829629960011178146614061616, +0.746982244497218890527388004556 }, { -0.867666149019004701181616534570, -0.198076373431201528180486091412, +0.455983776175066922272100478348 } }; /* Spherical to Cartesian. */ iauS2c(dl, db, v1); /* Galactic to ICRS. */ iauTrxp(r, v1, v2); /* Cartesian to spherical. */ iauC2s(v2, dr, dd); /* Express in conventional ranges. */ *dr = iauAnp(*dr); *dd = iauAnpm(*dd); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/gc2gd.c0000644000113000011300000001506612507252057014034 0ustar bellsbells#include "sofa.h" int iauGc2gd ( int n, double xyz[3], double *elong, double *phi, double *height ) /* ** - - - - - - - - - ** i a u G c 2 g d ** - - - - - - - - - ** ** Transform geocentric coordinates to geodetic using the specified ** reference ellipsoid. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical transformation. ** ** Given: ** n int ellipsoid identifier (Note 1) ** xyz double[3] geocentric vector (Note 2) ** ** Returned: ** elong double longitude (radians, east +ve, Note 3) ** phi double latitude (geodetic, radians, Note 3) ** height double height above ellipsoid (geodetic, Notes 2,3) ** ** Returned (function value): ** int status: 0 = OK ** -1 = illegal identifier (Note 3) ** -2 = internal error (Note 3) ** ** Notes: ** ** 1) The identifier n is a number that specifies the choice of ** reference ellipsoid. The following are supported: ** ** n ellipsoid ** ** 1 WGS84 ** 2 GRS80 ** 3 WGS72 ** ** The n value has no significance outside the SOFA software. For ** convenience, symbols WGS84 etc. are defined in sofam.h. ** ** 2) The geocentric vector (xyz, given) and height (height, returned) ** are in meters. ** ** 3) An error status -1 means that the identifier n is illegal. An ** error status -2 is theoretically impossible. In all error cases, ** all three results are set to -1e9. ** ** 4) The inverse transformation is performed in the function iauGd2gc. ** ** Called: ** iauEform Earth reference ellipsoids ** iauGc2gde geocentric to geodetic transformation, general ** ** This revision: 2013 September 1 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int j; double a, f; /* Obtain reference ellipsoid parameters. */ j = iauEform ( n, &a, &f ); /* If OK, transform x,y,z to longitude, geodetic latitude, height. */ if ( j == 0 ) { j = iauGc2gde ( a, f, xyz, elong, phi, height ); if ( j < 0 ) j = -2; } /* Deal with any errors. */ if ( j < 0 ) { *elong = -1e9; *phi = -1e9; *height = -1e9; } /* Return the status. */ return j; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/gc2gde.c0000644000113000011300000002022312507252057014170 0ustar bellsbells#include "sofa.h" int iauGc2gde ( double a, double f, double xyz[3], double *elong, double *phi, double *height ) /* ** - - - - - - - - - - ** i a u G c 2 g d e ** - - - - - - - - - - ** ** Transform geocentric coordinates to geodetic for a reference ** ellipsoid of specified form. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** a double equatorial radius (Notes 2,4) ** f double flattening (Note 3) ** xyz double[3] geocentric vector (Note 4) ** ** Returned: ** elong double longitude (radians, east +ve) ** phi double latitude (geodetic, radians) ** height double height above ellipsoid (geodetic, Note 4) ** ** Returned (function value): ** int status: 0 = OK ** -1 = illegal f ** -2 = illegal a ** ** Notes: ** ** 1) This function is based on the GCONV2H Fortran subroutine by ** Toshio Fukushima (see reference). ** ** 2) The equatorial radius, a, can be in any units, but meters is ** the conventional choice. ** ** 3) The flattening, f, is (for the Earth) a value around 0.00335, ** i.e. around 1/298. ** ** 4) The equatorial radius, a, and the geocentric vector, xyz, ** must be given in the same units, and determine the units of ** the returned height, height. ** ** 5) If an error occurs (status < 0), elong, phi and height are ** unchanged. ** ** 6) The inverse transformation is performed in the function ** iauGd2gce. ** ** 7) The transformation for a standard ellipsoid (such as WGS84) can ** more conveniently be performed by calling iauGc2gd, which uses a ** numerical code to identify the required A and F values. ** ** Reference: ** ** Fukushima, T., "Transformation from Cartesian to geodetic ** coordinates accelerated by Halley's method", J.Geodesy (2006) ** 79: 689-693 ** ** This revision: 2014 November 7 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double aeps2, e2, e4t, ec2, ec, b, x, y, z, p2, absz, p, s0, pn, zc, c0, c02, c03, s02, s03, a02, a0, a03, d0, f0, b0, s1, cc, s12, cc2; /* ------------- */ /* Preliminaries */ /* ------------- */ /* Validate ellipsoid parameters. */ if ( f < 0.0 || f >= 1.0 ) return -1; if ( a <= 0.0 ) return -2; /* Functions of ellipsoid parameters (with further validation of f). */ aeps2 = a*a * 1e-32; e2 = (2.0 - f) * f; e4t = e2*e2 * 1.5; ec2 = 1.0 - e2; if ( ec2 <= 0.0 ) return -1; ec = sqrt(ec2); b = a * ec; /* Cartesian components. */ x = xyz[0]; y = xyz[1]; z = xyz[2]; /* Distance from polar axis squared. */ p2 = x*x + y*y; /* Longitude. */ *elong = p2 > 0.0 ? atan2(y, x) : 0.0; /* Unsigned z-coordinate. */ absz = fabs(z); /* Proceed unless polar case. */ if ( p2 > aeps2 ) { /* Distance from polar axis. */ p = sqrt(p2); /* Normalization. */ s0 = absz / a; pn = p / a; zc = ec * s0; /* Prepare Newton correction factors. */ c0 = ec * pn; c02 = c0 * c0; c03 = c02 * c0; s02 = s0 * s0; s03 = s02 * s0; a02 = c02 + s02; a0 = sqrt(a02); a03 = a02 * a0; d0 = zc*a03 + e2*s03; f0 = pn*a03 - e2*c03; /* Prepare Halley correction factor. */ b0 = e4t * s02 * c02 * pn * (a0 - ec); s1 = d0*f0 - b0*s0; cc = ec * (f0*f0 - b0*c0); /* Evaluate latitude and height. */ *phi = atan(s1/cc); s12 = s1 * s1; cc2 = cc * cc; *height = (p*cc + absz*s1 - a * sqrt(ec2*s12 + cc2)) / sqrt(s12 + cc2); } else { /* Exception: pole. */ *phi = DPI / 2.0; *height = absz - b; } /* Restore sign of latitude. */ if ( z < 0 ) *phi = -*phi; /* OK status. */ return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/gd2gc.c0000644000113000011300000001517712507252057014037 0ustar bellsbells#include "sofa.h" int iauGd2gc ( int n, double elong, double phi, double height, double xyz[3] ) /* ** - - - - - - - - - ** i a u G d 2 g c ** - - - - - - - - - ** ** Transform geodetic coordinates to geocentric using the specified ** reference ellipsoid. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical transformation. ** ** Given: ** n int ellipsoid identifier (Note 1) ** elong double longitude (radians, east +ve) ** phi double latitude (geodetic, radians, Note 3) ** height double height above ellipsoid (geodetic, Notes 2,3) ** ** Returned: ** xyz double[3] geocentric vector (Note 2) ** ** Returned (function value): ** int status: 0 = OK ** -1 = illegal identifier (Note 3) ** -2 = illegal case (Note 3) ** ** Notes: ** ** 1) The identifier n is a number that specifies the choice of ** reference ellipsoid. The following are supported: ** ** n ellipsoid ** ** 1 WGS84 ** 2 GRS80 ** 3 WGS72 ** ** The n value has no significance outside the SOFA software. For ** convenience, symbols WGS84 etc. are defined in sofam.h. ** ** 2) The height (height, given) and the geocentric vector (xyz, ** returned) are in meters. ** ** 3) No validation is performed on the arguments elong, phi and ** height. An error status -1 means that the identifier n is ** illegal. An error status -2 protects against cases that would ** lead to arithmetic exceptions. In all error cases, xyz is set ** to zeros. ** ** 4) The inverse transformation is performed in the function iauGc2gd. ** ** Called: ** iauEform Earth reference ellipsoids ** iauGd2gce geodetic to geocentric transformation, general ** iauZp zero p-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int j; double a, f; /* Obtain reference ellipsoid parameters. */ j = iauEform ( n, &a, &f ); /* If OK, transform longitude, geodetic latitude, height to x,y,z. */ if ( j == 0 ) { j = iauGd2gce ( a, f, elong, phi, height, xyz ); if ( j != 0 ) j = -2; } /* Deal with any errors. */ if ( j != 0 ) iauZp ( xyz ); /* Return the status. */ return j; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/gd2gce.c0000644000113000011300000001547012507252057014200 0ustar bellsbells#include "sofa.h" int iauGd2gce ( double a, double f, double elong, double phi, double height, double xyz[3] ) /* ** - - - - - - - - - - ** i a u G d 2 g c e ** - - - - - - - - - - ** ** Transform geodetic coordinates to geocentric for a reference ** ellipsoid of specified form. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** a double equatorial radius (Notes 1,4) ** f double flattening (Notes 2,4) ** elong double longitude (radians, east +ve) ** phi double latitude (geodetic, radians, Note 4) ** height double height above ellipsoid (geodetic, Notes 3,4) ** ** Returned: ** xyz double[3] geocentric vector (Note 3) ** ** Returned (function value): ** int status: 0 = OK ** -1 = illegal case (Note 4) ** Notes: ** ** 1) The equatorial radius, a, can be in any units, but meters is ** the conventional choice. ** ** 2) The flattening, f, is (for the Earth) a value around 0.00335, ** i.e. around 1/298. ** ** 3) The equatorial radius, a, and the height, height, must be ** given in the same units, and determine the units of the ** returned geocentric vector, xyz. ** ** 4) No validation is performed on individual arguments. The error ** status -1 protects against (unrealistic) cases that would lead ** to arithmetic exceptions. If an error occurs, xyz is unchanged. ** ** 5) The inverse transformation is performed in the function ** iauGc2gde. ** ** 6) The transformation for a standard ellipsoid (such as WGS84) can ** more conveniently be performed by calling iauGd2gc, which uses a ** numerical code to identify the required a and f values. ** ** References: ** ** Green, R.M., Spherical Astronomy, Cambridge University Press, ** (1985) Section 4.5, p96. ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 4.22, p202. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double sp, cp, w, d, ac, as, r; /* Functions of geodetic latitude. */ sp = sin(phi); cp = cos(phi); w = 1.0 - f; w = w * w; d = cp*cp + w*sp*sp; if ( d <= 0.0 ) return -1; ac = a / sqrt(d); as = w * ac; /* Geocentric vector. */ r = (ac + height) * cp; xyz[0] = r * cos(elong); xyz[1] = r * sin(elong); xyz[2] = (as + height) * sp; /* Success. */ return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/gmst00.c0000644000113000011300000001702212507252057014152 0ustar bellsbells#include "sofa.h" double iauGmst00(double uta, double utb, double tta, double ttb) /* ** - - - - - - - - - - ** i a u G m s t 0 0 ** - - - - - - - - - - ** ** Greenwich mean sidereal time (model consistent with IAU 2000 ** resolutions). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** uta,utb double UT1 as a 2-part Julian Date (Notes 1,2) ** tta,ttb double TT as a 2-part Julian Date (Notes 1,2) ** ** Returned (function value): ** double Greenwich mean sidereal time (radians) ** ** Notes: ** ** 1) The UT1 and TT dates uta+utb and tta+ttb respectively, are both ** Julian Dates, apportioned in any convenient way between the ** argument pairs. For example, JD=2450123.7 could be expressed in ** any of these ways, among others: ** ** Part A Part B ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable (in the case of UT; the TT is not at all critical ** in this respect). The J2000 and MJD methods are good compromises ** between resolution and convenience. For UT, the date & time ** method is best matched to the algorithm that is used by the Earth ** Rotation Angle function, called internally: maximum precision is ** delivered when the uta argument is for 0hrs UT1 on the day in ** question and the utb argument lies in the range 0 to 1, or vice ** versa. ** ** 2) Both UT1 and TT are required, UT1 to predict the Earth rotation ** and TT to predict the effects of precession. If UT1 is used for ** both purposes, errors of order 100 microarcseconds result. ** ** 3) This GMST is compatible with the IAU 2000 resolutions and must be ** used only in conjunction with other IAU 2000 compatible ** components such as precession-nutation and equation of the ** equinoxes. ** ** 4) The result is returned in the range 0 to 2pi. ** ** 5) The algorithm is from Capitaine et al. (2003) and IERS ** Conventions 2003. ** ** Called: ** iauEra00 Earth rotation angle, IAU 2000 ** iauAnp normalize angle into range 0 to 2pi ** ** References: ** ** Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to ** implement the IAU 2000 definition of UT1", Astronomy & ** Astrophysics, 406, 1135-1149 (2003) ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double t, gmst; /* TT Julian centuries since J2000.0. */ t = ((tta - DJ00) + ttb) / DJC; /* Greenwich Mean Sidereal Time, IAU 2000. */ gmst = iauAnp(iauEra00(uta, utb) + ( 0.014506 + ( 4612.15739966 + ( 1.39667721 + ( -0.00009344 + ( 0.00001882 ) * t) * t) * t) * t) * DAS2R); return gmst; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/gmst06.c0000644000113000011300000001625012507252057014162 0ustar bellsbells#include "sofa.h" double iauGmst06(double uta, double utb, double tta, double ttb) /* ** - - - - - - - - - - ** i a u G m s t 0 6 ** - - - - - - - - - - ** ** Greenwich mean sidereal time (consistent with IAU 2006 precession). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** uta,utb double UT1 as a 2-part Julian Date (Notes 1,2) ** tta,ttb double TT as a 2-part Julian Date (Notes 1,2) ** ** Returned (function value): ** double Greenwich mean sidereal time (radians) ** ** Notes: ** ** 1) The UT1 and TT dates uta+utb and tta+ttb respectively, are both ** Julian Dates, apportioned in any convenient way between the ** argument pairs. For example, JD=2450123.7 could be expressed in ** any of these ways, among others: ** ** Part A Part B ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable (in the case of UT; the TT is not at all critical ** in this respect). The J2000 and MJD methods are good compromises ** between resolution and convenience. For UT, the date & time ** method is best matched to the algorithm that is used by the Earth ** rotation angle function, called internally: maximum precision is ** delivered when the uta argument is for 0hrs UT1 on the day in ** question and the utb argument lies in the range 0 to 1, or vice ** versa. ** ** 2) Both UT1 and TT are required, UT1 to predict the Earth rotation ** and TT to predict the effects of precession. If UT1 is used for ** both purposes, errors of order 100 microarcseconds result. ** ** 3) This GMST is compatible with the IAU 2006 precession and must not ** be used with other precession models. ** ** 4) The result is returned in the range 0 to 2pi. ** ** Called: ** iauEra00 Earth rotation angle, IAU 2000 ** iauAnp normalize angle into range 0 to 2pi ** ** Reference: ** ** Capitaine, N., Wallace, P.T. & Chapront, J., 2005, ** Astron.Astrophys. 432, 355 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double t, gmst; /* TT Julian centuries since J2000.0. */ t = ((tta - DJ00) + ttb) / DJC; /* Greenwich mean sidereal time, IAU 2006. */ gmst = iauAnp(iauEra00(uta, utb) + ( 0.014506 + ( 4612.156534 + ( 1.3915817 + ( -0.00000044 + ( -0.000029956 + ( -0.0000000368 ) * t) * t) * t) * t) * t) * DAS2R); return gmst; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/gmst82.c0000644000113000011300000001707212507252057014171 0ustar bellsbells#include "sofa.h" double iauGmst82(double dj1, double dj2) /* ** - - - - - - - - - - ** i a u G m s t 8 2 ** - - - - - - - - - - ** ** Universal Time to Greenwich mean sidereal time (IAU 1982 model). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** dj1,dj2 double UT1 Julian Date (see note) ** ** Returned (function value): ** double Greenwich mean sidereal time (radians) ** ** Notes: ** ** 1) The UT1 date dj1+dj2 is a Julian Date, apportioned in any ** convenient way between the arguments dj1 and dj2. For example, ** JD(UT1)=2450123.7 could be expressed in any of these ways, ** among others: ** ** dj1 dj2 ** ** 2450123.7 0 (JD method) ** 2451545 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. The date & time method is ** best matched to the algorithm used: maximum accuracy (or, at ** least, minimum noise) is delivered when the dj1 argument is for ** 0hrs UT1 on the day in question and the dj2 argument lies in the ** range 0 to 1, or vice versa. ** ** 2) The algorithm is based on the IAU 1982 expression. This is ** always described as giving the GMST at 0 hours UT1. In fact, it ** gives the difference between the GMST and the UT, the steady ** 4-minutes-per-day drawing-ahead of ST with respect to UT. When ** whole days are ignored, the expression happens to equal the GMST ** at 0 hours UT1 each day. ** ** 3) In this function, the entire UT1 (the sum of the two arguments ** dj1 and dj2) is used directly as the argument for the standard ** formula, the constant term of which is adjusted by 12 hours to ** take account of the noon phasing of Julian Date. The UT1 is then ** added, but omitting whole days to conserve accuracy. ** ** Called: ** iauAnp normalize angle into range 0 to 2pi ** ** References: ** ** Transactions of the International Astronomical Union, ** XVIII B, 67 (1983). ** ** Aoki et al., Astron. Astrophys. 105, 359-361 (1982). ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Coefficients of IAU 1982 GMST-UT1 model */ double A = 24110.54841 - DAYSEC / 2.0; double B = 8640184.812866; double C = 0.093104; double D = -6.2e-6; /* Note: the first constant, A, has to be adjusted by 12 hours */ /* because the UT1 is supplied as a Julian date, which begins */ /* at noon. */ double d1, d2, t, f, gmst; /* Julian centuries since fundamental epoch. */ if (dj1 < dj2) { d1 = dj1; d2 = dj2; } else { d1 = dj2; d2 = dj1; } t = (d1 + (d2 - DJ00)) / DJC; /* Fractional part of JD(UT1), in seconds. */ f = DAYSEC * (fmod(d1, 1.0) + fmod(d2, 1.0)); /* GMST at this UT1. */ gmst = iauAnp(DS2R * ((A + (B + (C + D * t) * t) * t) + f)); return gmst; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/gst00a.c0000644000113000011300000001645512507252057014147 0ustar bellsbells#include "sofa.h" double iauGst00a(double uta, double utb, double tta, double ttb) /* ** - - - - - - - - - - ** i a u G s t 0 0 a ** - - - - - - - - - - ** ** Greenwich apparent sidereal time (consistent with IAU 2000 ** resolutions). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** uta,utb double UT1 as a 2-part Julian Date (Notes 1,2) ** tta,ttb double TT as a 2-part Julian Date (Notes 1,2) ** ** Returned (function value): ** double Greenwich apparent sidereal time (radians) ** ** Notes: ** ** 1) The UT1 and TT dates uta+utb and tta+ttb respectively, are both ** Julian Dates, apportioned in any convenient way between the ** argument pairs. For example, JD=2450123.7 could be expressed in ** any of these ways, among others: ** ** Part A Part B ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable (in the case of UT; the TT is not at all critical ** in this respect). The J2000 and MJD methods are good compromises ** between resolution and convenience. For UT, the date & time ** method is best matched to the algorithm that is used by the Earth ** Rotation Angle function, called internally: maximum precision is ** delivered when the uta argument is for 0hrs UT1 on the day in ** question and the utb argument lies in the range 0 to 1, or vice ** versa. ** ** 2) Both UT1 and TT are required, UT1 to predict the Earth rotation ** and TT to predict the effects of precession-nutation. If UT1 is ** used for both purposes, errors of order 100 microarcseconds ** result. ** ** 3) This GAST is compatible with the IAU 2000 resolutions and must be ** used only in conjunction with other IAU 2000 compatible ** components such as precession-nutation. ** ** 4) The result is returned in the range 0 to 2pi. ** ** 5) The algorithm is from Capitaine et al. (2003) and IERS ** Conventions 2003. ** ** Called: ** iauGmst00 Greenwich mean sidereal time, IAU 2000 ** iauEe00a equation of the equinoxes, IAU 2000A ** iauAnp normalize angle into range 0 to 2pi ** ** References: ** ** Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to ** implement the IAU 2000 definition of UT1", Astronomy & ** Astrophysics, 406, 1135-1149 (2003) ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double gmst00, ee00a, gst; gmst00 = iauGmst00(uta, utb, tta, ttb); ee00a = iauEe00a(tta, ttb); gst = iauAnp(gmst00 + ee00a); return gst; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/gst00b.c0000644000113000011300000001713112507252057014140 0ustar bellsbells#include "sofa.h" double iauGst00b(double uta, double utb) /* ** - - - - - - - - - - ** i a u G s t 0 0 b ** - - - - - - - - - - ** ** Greenwich apparent sidereal time (consistent with IAU 2000 ** resolutions but using the truncated nutation model IAU 2000B). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** uta,utb double UT1 as a 2-part Julian Date (Notes 1,2) ** ** Returned (function value): ** double Greenwich apparent sidereal time (radians) ** ** Notes: ** ** 1) The UT1 date uta+utb is a Julian Date, apportioned in any ** convenient way between the argument pair. For example, ** JD=2450123.7 could be expressed in any of these ways, among ** others: ** ** uta utb ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. For UT, the date & time ** method is best matched to the algorithm that is used by the Earth ** Rotation Angle function, called internally: maximum precision is ** delivered when the uta argument is for 0hrs UT1 on the day in ** question and the utb argument lies in the range 0 to 1, or vice ** versa. ** ** 2) The result is compatible with the IAU 2000 resolutions, except ** that accuracy has been compromised for the sake of speed and ** convenience in two respects: ** ** . UT is used instead of TDB (or TT) to compute the precession ** component of GMST and the equation of the equinoxes. This ** results in errors of order 0.1 mas at present. ** ** . The IAU 2000B abridged nutation model (McCarthy & Luzum, 2001) ** is used, introducing errors of up to 1 mas. ** ** 3) This GAST is compatible with the IAU 2000 resolutions and must be ** used only in conjunction with other IAU 2000 compatible ** components such as precession-nutation. ** ** 4) The result is returned in the range 0 to 2pi. ** ** 5) The algorithm is from Capitaine et al. (2003) and IERS ** Conventions 2003. ** ** Called: ** iauGmst00 Greenwich mean sidereal time, IAU 2000 ** iauEe00b equation of the equinoxes, IAU 2000B ** iauAnp normalize angle into range 0 to 2pi ** ** References: ** ** Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to ** implement the IAU 2000 definition of UT1", Astronomy & ** Astrophysics, 406, 1135-1149 (2003) ** ** McCarthy, D.D. & Luzum, B.J., "An abridged model of the ** precession-nutation of the celestial pole", Celestial Mechanics & ** Dynamical Astronomy, 85, 37-49 (2003) ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double gmst00, ee00b, gst; gmst00 = iauGmst00(uta, utb, uta, utb); ee00b = iauEe00b(uta, utb); gst = iauAnp(gmst00 + ee00b); return gst; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/gst06a.c0000644000113000011300000001600512507252057014144 0ustar bellsbells#include "sofa.h" double iauGst06a(double uta, double utb, double tta, double ttb) /* ** - - - - - - - - - - ** i a u G s t 0 6 a ** - - - - - - - - - - ** ** Greenwich apparent sidereal time (consistent with IAU 2000 and 2006 ** resolutions). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** uta,utb double UT1 as a 2-part Julian Date (Notes 1,2) ** tta,ttb double TT as a 2-part Julian Date (Notes 1,2) ** ** Returned (function value): ** double Greenwich apparent sidereal time (radians) ** ** Notes: ** ** 1) The UT1 and TT dates uta+utb and tta+ttb respectively, are both ** Julian Dates, apportioned in any convenient way between the ** argument pairs. For example, JD=2450123.7 could be expressed in ** any of these ways, among others: ** ** Part A Part B ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable (in the case of UT; the TT is not at all critical ** in this respect). The J2000 and MJD methods are good compromises ** between resolution and convenience. For UT, the date & time ** method is best matched to the algorithm that is used by the Earth ** rotation angle function, called internally: maximum precision is ** delivered when the uta argument is for 0hrs UT1 on the day in ** question and the utb argument lies in the range 0 to 1, or vice ** versa. ** ** 2) Both UT1 and TT are required, UT1 to predict the Earth rotation ** and TT to predict the effects of precession-nutation. If UT1 is ** used for both purposes, errors of order 100 microarcseconds ** result. ** ** 3) This GAST is compatible with the IAU 2000/2006 resolutions and ** must be used only in conjunction with IAU 2006 precession and ** IAU 2000A nutation. ** ** 4) The result is returned in the range 0 to 2pi. ** ** Called: ** iauPnm06a classical NPB matrix, IAU 2006/2000A ** iauGst06 Greenwich apparent ST, IAU 2006, given NPB matrix ** ** Reference: ** ** Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double rnpb[3][3], gst; /* Classical nutation x precession x bias matrix, IAU 2000A. */ iauPnm06a(tta, ttb, rnpb); /* Greenwich apparent sidereal time. */ gst = iauGst06(uta, utb, tta, ttb, rnpb); return gst; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/gst06.c0000644000113000011300000001655712507252057014017 0ustar bellsbells#include "sofa.h" double iauGst06(double uta, double utb, double tta, double ttb, double rnpb[3][3]) /* ** - - - - - - - - - ** i a u G s t 0 6 ** - - - - - - - - - ** ** Greenwich apparent sidereal time, IAU 2006, given the NPB matrix. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** uta,utb double UT1 as a 2-part Julian Date (Notes 1,2) ** tta,ttb double TT as a 2-part Julian Date (Notes 1,2) ** rnpb double[3][3] nutation x precession x bias matrix ** ** Returned (function value): ** double Greenwich apparent sidereal time (radians) ** ** Notes: ** ** 1) The UT1 and TT dates uta+utb and tta+ttb respectively, are both ** Julian Dates, apportioned in any convenient way between the ** argument pairs. For example, JD=2450123.7 could be expressed in ** any of these ways, among others: ** ** Part A Part B ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable (in the case of UT; the TT is not at all critical ** in this respect). The J2000 and MJD methods are good compromises ** between resolution and convenience. For UT, the date & time ** method is best matched to the algorithm that is used by the Earth ** rotation angle function, called internally: maximum precision is ** delivered when the uta argument is for 0hrs UT1 on the day in ** question and the utb argument lies in the range 0 to 1, or vice ** versa. ** ** 2) Both UT1 and TT are required, UT1 to predict the Earth rotation ** and TT to predict the effects of precession-nutation. If UT1 is ** used for both purposes, errors of order 100 microarcseconds ** result. ** ** 3) Although the function uses the IAU 2006 series for s+XY/2, it is ** otherwise independent of the precession-nutation model and can in ** practice be used with any equinox-based NPB matrix. ** ** 4) The result is returned in the range 0 to 2pi. ** ** Called: ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauS06 the CIO locator s, given X,Y, IAU 2006 ** iauAnp normalize angle into range 0 to 2pi ** iauEra00 Earth rotation angle, IAU 2000 ** iauEors equation of the origins, given NPB matrix and s ** ** Reference: ** ** Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double x, y, s, era, eors, gst; /* Extract CIP coordinates. */ iauBpn2xy(rnpb, &x, &y); /* The CIO locator, s. */ s = iauS06(tta, ttb, x, y); /* Greenwich apparent sidereal time. */ era = iauEra00(uta, utb); eors = iauEors(rnpb, s); gst = iauAnp(era - eors); return gst; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/gst94.c0000644000113000011300000001567212507252057014023 0ustar bellsbells#include "sofa.h" double iauGst94(double uta, double utb) /* ** - - - - - - - - - ** i a u G s t 9 4 ** - - - - - - - - - ** ** Greenwich apparent sidereal time (consistent with IAU 1982/94 ** resolutions). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** uta,utb double UT1 as a 2-part Julian Date (Notes 1,2) ** ** Returned (function value): ** double Greenwich apparent sidereal time (radians) ** ** Notes: ** ** 1) The UT1 date uta+utb is a Julian Date, apportioned in any ** convenient way between the argument pair. For example, ** JD=2450123.7 could be expressed in any of these ways, among ** others: ** ** uta utb ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. For UT, the date & time ** method is best matched to the algorithm that is used by the Earth ** Rotation Angle function, called internally: maximum precision is ** delivered when the uta argument is for 0hrs UT1 on the day in ** question and the utb argument lies in the range 0 to 1, or vice ** versa. ** ** 2) The result is compatible with the IAU 1982 and 1994 resolutions, ** except that accuracy has been compromised for the sake of ** convenience in that UT is used instead of TDB (or TT) to compute ** the equation of the equinoxes. ** ** 3) This GAST must be used only in conjunction with contemporaneous ** IAU standards such as 1976 precession, 1980 obliquity and 1982 ** nutation. It is not compatible with the IAU 2000 resolutions. ** ** 4) The result is returned in the range 0 to 2pi. ** ** Called: ** iauGmst82 Greenwich mean sidereal time, IAU 1982 ** iauEqeq94 equation of the equinoxes, IAU 1994 ** iauAnp normalize angle into range 0 to 2pi ** ** References: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** ** IAU Resolution C7, Recommendation 3 (1994) ** ** This revision: 2008 May 16 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double gmst82, eqeq94, gst; gmst82 = iauGmst82(uta, utb); eqeq94 = iauEqeq94(uta, utb); gst = iauAnp(gmst82 + eqeq94); return gst; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/h2fk5.c0000644000113000011300000001667212507252057013771 0ustar bellsbells#include "sofa.h" void iauH2fk5(double rh, double dh, double drh, double ddh, double pxh, double rvh, double *r5, double *d5, double *dr5, double *dd5, double *px5, double *rv5) /* ** - - - - - - - - - ** i a u H 2 f k 5 ** - - - - - - - - - ** ** Transform Hipparcos star data into the FK5 (J2000.0) system. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given (all Hipparcos, epoch J2000.0): ** rh double RA (radians) ** dh double Dec (radians) ** drh double proper motion in RA (dRA/dt, rad/Jyear) ** ddh double proper motion in Dec (dDec/dt, rad/Jyear) ** pxh double parallax (arcsec) ** rvh double radial velocity (km/s, positive = receding) ** ** Returned (all FK5, equinox J2000.0, epoch J2000.0): ** r5 double RA (radians) ** d5 double Dec (radians) ** dr5 double proper motion in RA (dRA/dt, rad/Jyear) ** dd5 double proper motion in Dec (dDec/dt, rad/Jyear) ** px5 double parallax (arcsec) ** rv5 double radial velocity (km/s, positive = receding) ** ** Notes: ** ** 1) This function transforms Hipparcos star positions and proper ** motions into FK5 J2000.0. ** ** 2) The proper motions in RA are dRA/dt rather than ** cos(Dec)*dRA/dt, and are per year rather than per century. ** ** 3) The FK5 to Hipparcos transformation is modeled as a pure ** rotation and spin; zonal errors in the FK5 catalog are not ** taken into account. ** ** 4) See also iauFk52h, iauFk5hz, iauHfk5z. ** ** Called: ** iauStarpv star catalog data to space motion pv-vector ** iauFk5hip FK5 to Hipparcos rotation and spin ** iauRv2m r-vector to r-matrix ** iauRxp product of r-matrix and p-vector ** iauTrxp product of transpose of r-matrix and p-vector ** iauPxp vector product of two p-vectors ** iauPmp p-vector minus p-vector ** iauPvstar space motion pv-vector to star catalog data ** ** Reference: ** ** F.Mignard & M.Froeschle, Astron. Astrophys. 354, 732-739 (2000). ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int i; double pvh[2][3], r5h[3][3], s5h[3], sh[3], wxp[3], vv[3], pv5[2][3]; /* Hipparcos barycentric position/velocity pv-vector (normalized). */ iauStarpv(rh, dh, drh, ddh, pxh, rvh, pvh); /* FK5 to Hipparcos orientation matrix and spin vector. */ iauFk5hip(r5h, s5h); /* Make spin units per day instead of per year. */ for ( i = 0; i < 3; s5h[i++] /= 365.25 ); /* Orient the spin into the Hipparcos system. */ iauRxp(r5h, s5h, sh); /* De-orient the Hipparcos position into the FK5 system. */ iauTrxp(r5h, pvh[0], pv5[0]); /* Apply spin to the position giving an extra space motion component. */ iauPxp(pvh[0], sh, wxp); /* Subtract this component from the Hipparcos space motion. */ iauPmp(pvh[1], wxp, vv); /* De-orient the Hipparcos space motion into the FK5 system. */ iauTrxp(r5h, vv, pv5[1]); /* FK5 pv-vector to spherical. */ iauPvstar(pv5, r5, d5, dr5, dd5, px5, rv5); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/hfk5z.c0000644000113000011300000002075312507252057014074 0ustar bellsbells#include "sofa.h" void iauHfk5z(double rh, double dh, double date1, double date2, double *r5, double *d5, double *dr5, double *dd5) /* ** - - - - - - - - - ** i a u H f k 5 z ** - - - - - - - - - ** ** Transform a Hipparcos star position into FK5 J2000.0, assuming ** zero Hipparcos proper motion. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rh double Hipparcos RA (radians) ** dh double Hipparcos Dec (radians) ** date1,date2 double TDB date (Note 1) ** ** Returned (all FK5, equinox J2000.0, date date1+date2): ** r5 double RA (radians) ** d5 double Dec (radians) ** dr5 double FK5 RA proper motion (rad/year, Note 4) ** dd5 double Dec proper motion (rad/year, Note 4) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt. ** ** 3) The FK5 to Hipparcos transformation is modeled as a pure rotation ** and spin; zonal errors in the FK5 catalogue are not taken into ** account. ** ** 4) It was the intention that Hipparcos should be a close ** approximation to an inertial frame, so that distant objects have ** zero proper motion; such objects have (in general) non-zero ** proper motion in FK5, and this function returns those fictitious ** proper motions. ** ** 5) The position returned by this function is in the FK5 J2000.0 ** reference system but at date date1+date2. ** ** 6) See also iauFk52h, iauH2fk5, iauFk5zhz. ** ** Called: ** iauS2c spherical coordinates to unit vector ** iauFk5hip FK5 to Hipparcos rotation and spin ** iauRxp product of r-matrix and p-vector ** iauSxp multiply p-vector by scalar ** iauRxr product of two r-matrices ** iauTrxp product of transpose of r-matrix and p-vector ** iauPxp vector product of two p-vectors ** iauPv2s pv-vector to spherical ** iauAnp normalize angle into range 0 to 2pi ** ** Reference: ** ** F.Mignard & M.Froeschle, 2000, Astron.Astrophys. 354, 732-739. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double t, ph[3], r5h[3][3], s5h[3], sh[3], vst[3], rst[3][3], r5ht[3][3], pv5e[2][3], vv[3], w, r, v; /* Time interval from fundamental epoch J2000.0 to given date (JY). */ t = ((date1 - DJ00) + date2) / DJY; /* Hipparcos barycentric position vector (normalized). */ iauS2c(rh, dh, ph); /* FK5 to Hipparcos orientation matrix and spin vector. */ iauFk5hip(r5h, s5h); /* Rotate the spin into the Hipparcos system. */ iauRxp(r5h, s5h, sh); /* Accumulated Hipparcos wrt FK5 spin over that interval. */ iauSxp(t, s5h, vst); /* Express the accumulated spin as a rotation matrix. */ iauRv2m(vst, rst); /* Rotation matrix: accumulated spin, then FK5 to Hipparcos. */ iauRxr(r5h, rst, r5ht); /* De-orient & de-spin the Hipparcos position into FK5 J2000.0. */ iauTrxp(r5ht, ph, pv5e[0]); /* Apply spin to the position giving a space motion. */ iauPxp(sh, ph, vv); /* De-orient & de-spin the Hipparcos space motion into FK5 J2000.0. */ iauTrxp(r5ht, vv, pv5e[1]); /* FK5 position/velocity pv-vector to spherical. */ iauPv2s(pv5e, &w, d5, &r, dr5, dd5, &v); *r5 = iauAnp(w); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/icrs2g.c0000644000113000011300000002027712507252057014237 0ustar bellsbells#include "sofa.h" void iauIcrs2g ( double dr, double dd, double *dl, double *db ) /* ** - - - - - - - - - - ** i a u I c r s 2 g ** - - - - - - - - - - ** ** Transformation from ICRS to Galactic Coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support routine. ** ** Given: ** dr double ICRS right ascension (radians) ** dd double ICRS declination (radians) ** ** Returned: ** dl double galactic longitude (radians) ** db double galactic latitude (radians) ** ** Notes: ** ** 1) The IAU 1958 system of Galactic coordinates was defined with ** respect to the now obsolete reference system FK4 B1950.0. When ** interpreting the system in a modern context, several factors have ** to be taken into account: ** ** . The inclusion in FK4 positions of the E-terms of aberration. ** ** . The distortion of the FK4 proper motion system by differential ** Galactic rotation. ** ** . The use of the B1950.0 equinox rather than the now-standard ** J2000.0. ** ** . The frame bias between ICRS and the J2000.0 mean place system. ** ** The Hipparcos Catalogue (Perryman & ESA 1997) provides a rotation ** matrix that transforms directly between ICRS and Galactic ** coordinates with the above factors taken into account. The ** matrix is derived from three angles, namely the ICRS coordinates ** of the Galactic pole and the longitude of the ascending node of ** the galactic equator on the ICRS equator. They are given in ** degrees to five decimal places and for canonical purposes are ** regarded as exact. In the Hipparcos Catalogue the matrix ** elements are given to 10 decimal places (about 20 microarcsec). ** In the present SOFA function the matrix elements have been ** recomputed from the canonical three angles and are given to 30 ** decimal places. ** ** 2) The inverse transformation is performed by the function iauG2icrs. ** ** Called: ** iauAnp normalize angle into range 0 to 2pi ** iauAnpm normalize angle into range +/- pi ** iauS2c spherical coordinates to unit vector ** iauRxp product of r-matrix and p-vector ** iauC2s p-vector to spherical ** ** Reference: ** Perryman M.A.C. & ESA, 1997, ESA SP-1200, The Hipparcos and Tycho ** catalogues. Astrometric and photometric star catalogues ** derived from the ESA Hipparcos Space Astrometry Mission. ESA ** Publications Division, Noordwijk, Netherlands. ** ** This revision: 2015 January 20 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double v1[3], v2[3]; /* ** L2,B2 system of galactic coordinates in the form presented in the ** Hipparcos Catalogue. In degrees: ** ** P = 192.85948 right ascension of the Galactic north pole in ICRS ** Q = 27.12825 declination of the Galactic north pole in ICRS ** R = 32.93192 longitude of the ascending node of the Galactic ** plane on the ICRS equator ** ** ICRS to galactic rotation matrix, obtained by computing ** R_3(-R) R_1(pi/2-Q) R_3(pi/2+P) to the full precision shown: */ double r[3][3] = { { -0.054875560416215368492398900454, -0.873437090234885048760383168409, -0.483835015548713226831774175116 }, { +0.494109427875583673525222371358, -0.444829629960011178146614061616, +0.746982244497218890527388004556 }, { -0.867666149019004701181616534570, -0.198076373431201528180486091412, +0.455983776175066922272100478348 } }; /* Spherical to Cartesian. */ iauS2c(dr, dd, v1); /* ICRS to Galactic. */ iauRxp(r, v1, v2); /* Cartesian to spherical. */ iauC2s(v2, dl, db); /* Express in conventional ranges. */ *dl = iauAnp(*dl); *db = iauAnpm(*db); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/ir.c0000644000113000011300000001155212507252057013454 0ustar bellsbells#include "sofa.h" void iauIr(double r[3][3]) /* ** - - - - - - ** i a u I r ** - - - - - - ** ** Initialize an r-matrix to the identity matrix. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Returned: ** r double[3][3] r-matrix ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { r[0][0] = 1.0; r[0][1] = 0.0; r[0][2] = 0.0; r[1][0] = 0.0; r[1][1] = 1.0; r[1][2] = 0.0; r[2][0] = 0.0; r[2][1] = 0.0; r[2][2] = 1.0; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/jd2cal.c0000644000113000011300000001612112507252057014176 0ustar bellsbells#include "sofa.h" int iauJd2cal(double dj1, double dj2, int *iy, int *im, int *id, double *fd) /* ** - - - - - - - - - - ** i a u J d 2 c a l ** - - - - - - - - - - ** ** Julian Date to Gregorian year, month, day, and fraction of a day. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** dj1,dj2 double Julian Date (Notes 1, 2) ** ** Returned (arguments): ** iy int year ** im int month ** id int day ** fd double fraction of day ** ** Returned (function value): ** int status: ** 0 = OK ** -1 = unacceptable date (Note 3) ** ** Notes: ** ** 1) The earliest valid date is -68569.5 (-4900 March 1). The ** largest value accepted is 1e9. ** ** 2) The Julian Date is apportioned in any convenient way between ** the arguments dj1 and dj2. For example, JD=2450123.7 could ** be expressed in any of these ways, among others: ** ** dj1 dj2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** 3) In early eras the conversion is from the "proleptic Gregorian ** calendar"; no account is taken of the date(s) of adoption of ** the Gregorian calendar, nor is the AD/BC numbering convention ** observed. ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 12.92 (p604). ** ** This revision: 2013 August 7 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Minimum and maximum allowed JD */ const double DJMIN = -68569.5; const double DJMAX = 1e9; long jd, l, n, i, k; double dj, d1, d2, f1, f2, f, d; /* Verify date is acceptable. */ dj = dj1 + dj2; if (dj < DJMIN || dj > DJMAX) return -1; /* Copy the date, big then small, and re-align to midnight. */ if (dj1 >= dj2) { d1 = dj1; d2 = dj2; } else { d1 = dj2; d2 = dj1; } d2 -= 0.5; /* Separate day and fraction. */ f1 = fmod(d1, 1.0); f2 = fmod(d2, 1.0); f = fmod(f1 + f2, 1.0); if (f < 0.0) f += 1.0; d = floor(d1 - f1) + floor(d2 - f2) + floor(f1 + f2 - f); jd = (long) floor(d) + 1L; /* Express day in Gregorian calendar. */ l = jd + 68569L; n = (4L * l) / 146097L; l -= (146097L * n + 3L) / 4L; i = (4000L * (l + 1L)) / 1461001L; l -= (1461L * i) / 4L - 31L; k = (80L * l) / 2447L; *id = (int) (l - (2447L * k) / 80L); l = k / 11L; *im = (int) (k + 2L - 12L * l); *iy = (int) (100L * (n - 49L) + i + l); *fd = f; return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/jdcalf.c0000644000113000011300000001635712507252057014275 0ustar bellsbells#include "sofa.h" int iauJdcalf(int ndp, double dj1, double dj2, int iymdf[4]) /* ** - - - - - - - - - - ** i a u J d c a l f ** - - - - - - - - - - ** ** Julian Date to Gregorian Calendar, expressed in a form convenient ** for formatting messages: rounded to a specified precision. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** ndp int number of decimal places of days in fraction ** dj1,dj2 double dj1+dj2 = Julian Date (Note 1) ** ** Returned: ** iymdf int[4] year, month, day, fraction in Gregorian ** calendar ** ** Returned (function value): ** int status: ** -1 = date out of range ** 0 = OK ** +1 = NDP not 0-9 (interpreted as 0) ** ** Notes: ** ** 1) The Julian Date is apportioned in any convenient way between ** the arguments dj1 and dj2. For example, JD=2450123.7 could ** be expressed in any of these ways, among others: ** ** dj1 dj2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** 2) In early eras the conversion is from the "Proleptic Gregorian ** Calendar"; no account is taken of the date(s) of adoption of ** the Gregorian Calendar, nor is the AD/BC numbering convention ** observed. ** ** 3) Refer to the function iauJd2cal. ** ** 4) NDP should be 4 or less if internal overflows are to be ** avoided on machines which use 16-bit integers. ** ** Called: ** iauJd2cal JD to Gregorian calendar ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 12.92 (p604). ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int j, js; double denom, d1, d2, f1, f2, f; /* Denominator of fraction (e.g. 100 for 2 decimal places). */ if ((ndp >= 0) && (ndp <= 9)) { j = 0; denom = pow(10.0, ndp); } else { j = 1; denom = 1.0; } /* Copy the date, big then small, and realign to midnight. */ if (dj1 >= dj2) { d1 = dj1; d2 = dj2; } else { d1 = dj2; d2 = dj1; } d2 -= 0.5; /* Separate days and fractions. */ f1 = fmod(d1, 1.0); f2 = fmod(d2, 1.0); d1 = floor(d1 - f1); d2 = floor(d2 - f2); /* Round the total fraction to the specified number of places. */ f = floor((f1+f2)*denom + 0.5) / denom; /* Re-assemble the rounded date and re-align to noon. */ d2 += f + 0.5; /* Convert to Gregorian calendar. */ js = iauJd2cal(d1, d2, &iymdf[0], &iymdf[1], &iymdf[2], &f); if (js == 0) { iymdf[3] = (int) (f * denom); } else { j = js; } /* Return the status. */ return j; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/ld.c0000644000113000011300000001675612507252057013454 0ustar bellsbells#include "sofa.h" void iauLd(double bm, double p[3], double q[3], double e[3], double em, double dlim, double p1[3]) /* ** - - - - - - ** i a u L d ** - - - - - - ** ** Apply light deflection by a solar-system body, as part of ** transforming coordinate direction into natural direction. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** bm double mass of the gravitating body (solar masses) ** p double[3] direction from observer to source (unit vector) ** q double[3] direction from body to source (unit vector) ** e double[3] direction from body to observer (unit vector) ** em double distance from body to observer (au) ** dlim double deflection limiter (Note 4) ** ** Returned: ** p1 double[3] observer to deflected source (unit vector) ** ** Notes: ** ** 1) The algorithm is based on Expr. (70) in Klioner (2003) and ** Expr. (7.63) in the Explanatory Supplement (Urban & Seidelmann ** 2013), with some rearrangement to minimize the effects of machine ** precision. ** ** 2) The mass parameter bm can, as required, be adjusted in order to ** allow for such effects as quadrupole field. ** ** 3) The barycentric position of the deflecting body should ideally ** correspond to the time of closest approach of the light ray to ** the body. ** ** 4) The deflection limiter parameter dlim is phi^2/2, where phi is ** the angular separation (in radians) between source and body at ** which limiting is applied. As phi shrinks below the chosen ** threshold, the deflection is artificially reduced, reaching zero ** for phi = 0. ** ** 5) The returned vector p1 is not normalized, but the consequential ** departure from unit magnitude is always negligible. ** ** 6) The arguments p and p1 can be the same array. ** ** 7) To accumulate total light deflection taking into account the ** contributions from several bodies, call the present function for ** each body in succession, in decreasing order of distance from the ** observer. ** ** 8) For efficiency, validation is omitted. The supplied vectors must ** be of unit magnitude, and the deflection limiter non-zero and ** positive. ** ** References: ** ** Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to ** the Astronomical Almanac, 3rd ed., University Science Books ** (2013). ** ** Klioner, Sergei A., "A practical relativistic model for micro- ** arcsecond astrometry in space", Astr. J. 125, 1580-1597 (2003). ** ** Called: ** iauPdp scalar product of two p-vectors ** iauPxp vector product of two p-vectors ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int i; double qpe[3], qdqpe, w, eq[3], peq[3]; /* q . (q + e). */ for (i = 0; i < 3; i++) { qpe[i] = q[i] + e[i]; } qdqpe = iauPdp(q, qpe); /* 2 x G x bm / ( em x c^2 x ( q . (q + e) ) ). */ w = bm * SRS / em / gmax(qdqpe,dlim); /* p x (e x q). */ iauPxp(e, q, eq); iauPxp(p, eq, peq); /* Apply the deflection. */ for (i = 0; i < 3; i++) { p1[i] = p[i] + w*peq[i]; } /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/ldn.c0000644000113000011300000002117612507252057013622 0ustar bellsbells#include "sofa.h" void iauLdn(int n, iauLDBODY b[], double ob[3], double sc[3], double sn[3]) /*+ ** - - - - - - - ** i a u L d n ** - - - - - - - ** ** For a star, apply light deflection by multiple solar-system bodies, ** as part of transforming coordinate direction into natural direction. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** n int number of bodies (note 1) ** b iauLDBODY[n] data for each of the n bodies (Notes 1,2): ** bm double mass of the body (solar masses, Note 3) ** dl double deflection limiter (Note 4) ** pv [2][3] barycentric PV of the body (au, au/day) ** ob double[3] barycentric position of the observer (au) ** sc double[3] observer to star coord direction (unit vector) ** ** Returned: ** sn double[3] observer to deflected star (unit vector) ** ** 1) The array b contains n entries, one for each body to be ** considered. If n = 0, no gravitational light deflection will be ** applied, not even for the Sun. ** ** 2) The array b should include an entry for the Sun as well as for ** any planet or other body to be taken into account. The entries ** should be in the order in which the light passes the body. ** ** 3) In the entry in the b array for body i, the mass parameter ** b[i].bm can, as required, be adjusted in order to allow for such ** effects as quadrupole field. ** ** 4) The deflection limiter parameter b[i].dl is phi^2/2, where phi is ** the angular separation (in radians) between star and body at ** which limiting is applied. As phi shrinks below the chosen ** threshold, the deflection is artificially reduced, reaching zero ** for phi = 0. Example values suitable for a terrestrial ** observer, together with masses, are as follows: ** ** body i b[i].bm b[i].dl ** ** Sun 1.0 6e-6 ** Jupiter 0.00095435 3e-9 ** Saturn 0.00028574 3e-10 ** ** 5) For cases where the starlight passes the body before reaching the ** observer, the body is placed back along its barycentric track by ** the light time from that point to the observer. For cases where ** the body is "behind" the observer no such shift is applied. If ** a different treatment is preferred, the user has the option of ** instead using the iauLd function. Similarly, iauLd can be used ** for cases where the source is nearby, not a star. ** ** 6) The returned vector sn is not normalized, but the consequential ** departure from unit magnitude is always negligible. ** ** 7) The arguments sc and sn can be the same array. ** ** 8) For efficiency, validation is omitted. The supplied masses must ** be greater than zero, the position and velocity vectors must be ** right, and the deflection limiter greater than zero. ** ** Reference: ** ** Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to ** the Astronomical Almanac, 3rd ed., University Science Books ** (2013), Section 7.2.4. ** ** Called: ** iauCp copy p-vector ** iauPdp scalar product of two p-vectors ** iauPmp p-vector minus p-vector ** iauPpsp p-vector plus scaled p-vector ** iauPn decompose p-vector into modulus and direction ** iauLd light deflection by a solar-system body ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Light time for 1 AU (days) */ const double CR = AULT/DAYSEC; int i; double v[3], dt, ev[3], em, e[3]; /* Star direction prior to deflection. */ iauCp(sc, sn); /* Body by body. */ for ( i = 0; i < n; i++ ) { /* Body to observer vector at epoch of observation (au). */ iauPmp ( ob, b[i].pv[0], v ); /* Minus the time since the light passed the body (days). */ dt = iauPdp(sn,v) * CR; /* Neutralize if the star is "behind" the observer. */ dt = gmin(dt, 0.0); /* Backtrack the body to the time the light was passing the body. */ iauPpsp(v, -dt, b[i].pv[1], ev); /* Body to observer vector as magnitude and direction. */ iauPn(ev, &em, e); /* Apply light deflection for this body. */ iauLd ( b[i].bm, sn, sn, e, em, b[i].dl, sn ); /* Next body. */ } /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/ldsun.c0000644000113000011300000001310012507252057014156 0ustar bellsbells#include "sofa.h" void iauLdsun(double p[3], double e[3], double em, double p1[3]) /* ** - - - - - - - - - ** i a u L d s u n ** - - - - - - - - - ** ** Deflection of starlight by the Sun. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** p double[3] direction from observer to star (unit vector) ** e double[3] direction from Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** ** Returned: ** p1 double[3] observer to deflected star (unit vector) ** ** Notes: ** ** 1) The source is presumed to be sufficiently distant that its ** directions seen from the Sun and the observer are essentially ** the same. ** ** 2) The deflection is restrained when the angle between the star and ** the center of the Sun is less than about 9 arcsec, falling to ** zero for zero separation. (The chosen threshold is within the ** solar limb for all solar-system applications.) ** ** 3) The arguments p and p1 can be the same array. ** ** Called: ** iauLd light deflection by a solar-system body ** ** This revision: 2014 September 1 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { iauLd(1.0, p, p, e, em, 1e-9, p1); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/num00a.c0000644000113000011300000001510712507252057014142 0ustar bellsbells#include "sofa.h" void iauNum00a(double date1, double date2, double rmatn[3][3]) /* ** - - - - - - - - - - ** i a u N u m 0 0 a ** - - - - - - - - - - ** ** Form the matrix of nutation for a given date, IAU 2000A model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rmatn double[3][3] nutation matrix ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(true) = rmatn * V(mean), where ** the p-vector V(true) is with respect to the true equatorial triad ** of date and the p-vector V(mean) is with respect to the mean ** equatorial triad of date. ** ** 3) A faster, but slightly less accurate result (about 1 mas), can be ** obtained by using instead the iauNum00b function. ** ** Called: ** iauPn00a bias/precession/nutation, IAU 2000A ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 3.222-3 (p114). ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double dpsi, deps, epsa, rb[3][3], rp[3][3], rbp[3][3], rbpn[3][3]; /* Obtain the required matrix (discarding other results). */ iauPn00a(date1, date2, &dpsi, &deps, &epsa, rb, rp, rbp, rmatn, rbpn); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/num00b.c0000644000113000011300000001507012507252057014142 0ustar bellsbells#include "sofa.h" void iauNum00b(double date1, double date2, double rmatn[3][3]) /* ** - - - - - - - - - - ** i a u N u m 0 0 b ** - - - - - - - - - - ** ** Form the matrix of nutation for a given date, IAU 2000B model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rmatn double[3][3] nutation matrix ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(true) = rmatn * V(mean), where ** the p-vector V(true) is with respect to the true equatorial triad ** of date and the p-vector V(mean) is with respect to the mean ** equatorial triad of date. ** ** 3) The present function is faster, but slightly less accurate (about ** 1 mas), than the iauNum00a function. ** ** Called: ** iauPn00b bias/precession/nutation, IAU 2000B ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 3.222-3 (p114). ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double dpsi, deps, epsa, rb[3][3], rp[3][3], rbp[3][3], rbpn[3][3]; /* Obtain the required matrix (discarding other results). */ iauPn00b(date1, date2, &dpsi, &deps, &epsa, rb, rp, rbp, rmatn, rbpn); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/num06a.c0000644000113000011300000001500312507252057014143 0ustar bellsbells#include "sofa.h" void iauNum06a(double date1, double date2, double rmatn[3][3]) /* ** - - - - - - - - - - ** i a u N u m 0 6 a ** - - - - - - - - - - ** ** Form the matrix of nutation for a given date, IAU 2006/2000A model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rmatn double[3][3] nutation matrix ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(true) = rmatn * V(mean), where ** the p-vector V(true) is with respect to the true equatorial triad ** of date and the p-vector V(mean) is with respect to the mean ** equatorial triad of date. ** ** Called: ** iauObl06 mean obliquity, IAU 2006 ** iauNut06a nutation, IAU 2006/2000A ** iauNumat form nutation matrix ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 3.222-3 (p114). ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double eps, dp, de; /* Mean obliquity. */ eps = iauObl06(date1, date2); /* Nutation components. */ iauNut06a(date1, date2, &dp, &de); /* Nutation matrix. */ iauNumat(eps, dp, de, rmatn); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/numat.c0000644000113000011300000001364612507252057014174 0ustar bellsbells#include "sofa.h" void iauNumat(double epsa, double dpsi, double deps, double rmatn[3][3]) /* ** - - - - - - - - - ** i a u N u m a t ** - - - - - - - - - ** ** Form the matrix of nutation. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** epsa double mean obliquity of date (Note 1) ** dpsi,deps double nutation (Note 2) ** ** Returned: ** rmatn double[3][3] nutation matrix (Note 3) ** ** Notes: ** ** 1) The supplied mean obliquity epsa, must be consistent with the ** precession-nutation models from which dpsi and deps were obtained. ** ** 2) The caller is responsible for providing the nutation components; ** they are in longitude and obliquity, in radians and are with ** respect to the equinox and ecliptic of date. ** ** 3) The matrix operates in the sense V(true) = rmatn * V(mean), ** where the p-vector V(true) is with respect to the true ** equatorial triad of date and the p-vector V(mean) is with ** respect to the mean equatorial triad of date. ** ** Called: ** iauIr initialize r-matrix to identity ** iauRx rotate around X-axis ** iauRz rotate around Z-axis ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 3.222-3 (p114). ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Build the rotation matrix. */ iauIr(rmatn); iauRx(epsa, rmatn); iauRz(-dpsi, rmatn); iauRx(-(epsa + deps), rmatn); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/nut00a.c0000644000113000011300000035177112507252057014163 0ustar bellsbells#include "sofa.h" void iauNut00a(double date1, double date2, double *dpsi, double *deps) /* ** - - - - - - - - - - ** i a u N u t 0 0 a ** - - - - - - - - - - ** ** Nutation, IAU 2000A model (MHB2000 luni-solar and planetary nutation ** with free core nutation omitted). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** dpsi,deps double nutation, luni-solar + planetary (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The nutation components in longitude and obliquity are in radians ** and with respect to the equinox and ecliptic of date. The ** obliquity at J2000.0 is assumed to be the Lieske et al. (1977) ** value of 84381.448 arcsec. ** ** Both the luni-solar and planetary nutations are included. The ** latter are due to direct planetary nutations and the ** perturbations of the lunar and terrestrial orbits. ** ** 3) The function computes the MHB2000 nutation series with the ** associated corrections for planetary nutations. It is an ** implementation of the nutation part of the IAU 2000A precession- ** nutation model, formally adopted by the IAU General Assembly in ** 2000, namely MHB2000 (Mathews et al. 2002), but with the free ** core nutation (FCN - see Note 4) omitted. ** ** 4) The full MHB2000 model also contains contributions to the ** nutations in longitude and obliquity due to the free-excitation ** of the free-core-nutation during the period 1979-2000. These FCN ** terms, which are time-dependent and unpredictable, are NOT ** included in the present function and, if required, must be ** independently computed. With the FCN corrections included, the ** present function delivers a pole which is at current epochs ** accurate to a few hundred microarcseconds. The omission of FCN ** introduces further errors of about that size. ** ** 5) The present function provides classical nutation. The MHB2000 ** algorithm, from which it is adapted, deals also with (i) the ** offsets between the GCRS and mean poles and (ii) the adjustments ** in longitude and obliquity due to the changed precession rates. ** These additional functions, namely frame bias and precession ** adjustments, are supported by the SOFA functions iauBi00 and ** iauPr00. ** ** 6) The MHB2000 algorithm also provides "total" nutations, comprising ** the arithmetic sum of the frame bias, precession adjustments, ** luni-solar nutation and planetary nutation. These total ** nutations can be used in combination with an existing IAU 1976 ** precession implementation, such as iauPmat76, to deliver GCRS- ** to-true predictions of sub-mas accuracy at current dates. ** However, there are three shortcomings in the MHB2000 model that ** must be taken into account if more accurate or definitive results ** are required (see Wallace 2002): ** ** (i) The MHB2000 total nutations are simply arithmetic sums, ** yet in reality the various components are successive Euler ** rotations. This slight lack of rigor leads to cross terms ** that exceed 1 mas after a century. The rigorous procedure ** is to form the GCRS-to-true rotation matrix by applying the ** bias, precession and nutation in that order. ** ** (ii) Although the precession adjustments are stated to be with ** respect to Lieske et al. (1977), the MHB2000 model does ** not specify which set of Euler angles are to be used and ** how the adjustments are to be applied. The most literal ** and straightforward procedure is to adopt the 4-rotation ** epsilon_0, psi_A, omega_A, xi_A option, and to add DPSIPR ** to psi_A and DEPSPR to both omega_A and eps_A. ** ** (iii) The MHB2000 model predates the determination by Chapront ** et al. (2002) of a 14.6 mas displacement between the ** J2000.0 mean equinox and the origin of the ICRS frame. It ** should, however, be noted that neglecting this displacement ** when calculating star coordinates does not lead to a ** 14.6 mas change in right ascension, only a small second- ** order distortion in the pattern of the precession-nutation ** effect. ** ** For these reasons, the SOFA functions do not generate the "total ** nutations" directly, though they can of course easily be ** generated by calling iauBi00, iauPr00 and the present function ** and adding the results. ** ** 7) The MHB2000 model contains 41 instances where the same frequency ** appears multiple times, of which 38 are duplicates and three are ** triplicates. To keep the present code close to the original MHB ** algorithm, this small inefficiency has not been corrected. ** ** Called: ** iauFal03 mean anomaly of the Moon ** iauFaf03 mean argument of the latitude of the Moon ** iauFaom03 mean longitude of the Moon's ascending node ** iauFame03 mean longitude of Mercury ** iauFave03 mean longitude of Venus ** iauFae03 mean longitude of Earth ** iauFama03 mean longitude of Mars ** iauFaju03 mean longitude of Jupiter ** iauFasa03 mean longitude of Saturn ** iauFaur03 mean longitude of Uranus ** iauFapa03 general accumulated precession in longitude ** ** References: ** ** Chapront, J., Chapront-Touze, M. & Francou, G. 2002, ** Astron.Astrophys. 387, 700 ** ** Lieske, J.H., Lederle, T., Fricke, W. & Morando, B. 1977, ** Astron.Astrophys. 58, 1-16 ** ** Mathews, P.M., Herring, T.A., Buffet, B.A. 2002, J.Geophys.Res. ** 107, B4. The MHB_2000 code itself was obtained on 9th September ** 2002 from ftp//maia.usno.navy.mil/conv2000/chapter5/IAU2000A. ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, ** Astron.Astrophys.Supp.Ser. 135, 111 ** ** Wallace, P.T., "Software for Implementing the IAU 2000 ** Resolutions", in IERS Workshop 5.1 (2002) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int i; double t, el, elp, f, d, om, arg, dp, de, sarg, carg, al, af, ad, aom, alme, alve, alea, alma, alju, alsa, alur, alne, apa, dpsils, depsls, dpsipl, depspl; /* Units of 0.1 microarcsecond to radians */ const double U2R = DAS2R / 1e7; /* ------------------------- */ /* Luni-Solar nutation model */ /* ------------------------- */ /* The units for the sine and cosine coefficients are */ /* 0.1 microarcsecond and the same per Julian century */ static const struct { int nl,nlp,nf,nd,nom; /* coefficients of l,l',F,D,Om */ double sp,spt,cp; /* longitude sin, t*sin, cos coefficients */ double ce,cet,se; /* obliquity cos, t*cos, sin coefficients */ } xls[] = { /* 1- 10 */ { 0, 0, 0, 0, 1, -172064161.0, -174666.0, 33386.0, 92052331.0, 9086.0, 15377.0}, { 0, 0, 2,-2, 2, -13170906.0, -1675.0, -13696.0, 5730336.0, -3015.0, -4587.0}, { 0, 0, 2, 0, 2,-2276413.0,-234.0,2796.0,978459.0,-485.0, 1374.0}, { 0, 0, 0, 0, 2,2074554.0, 207.0, -698.0,-897492.0,470.0, -291.0}, { 0, 1, 0, 0, 0,1475877.0,-3633.0,11817.0,73871.0,-184.0,-1924.0}, { 0, 1, 2,-2, 2,-516821.0,1226.0, -524.0,224386.0,-677.0, -174.0}, { 1, 0, 0, 0, 0, 711159.0, 73.0, -872.0, -6750.0, 0.0, 358.0}, { 0, 0, 2, 0, 1,-387298.0,-367.0, 380.0, 200728.0, 18.0, 318.0}, { 1, 0, 2, 0, 2,-301461.0, -36.0, 816.0, 129025.0,-63.0, 367.0}, { 0,-1, 2,-2, 2, 215829.0,-494.0, 111.0, -95929.0,299.0, 132.0}, /* 11-20 */ { 0, 0, 2,-2, 1, 128227.0, 137.0, 181.0, -68982.0, -9.0, 39.0}, {-1, 0, 2, 0, 2, 123457.0, 11.0, 19.0, -53311.0, 32.0, -4.0}, {-1, 0, 0, 2, 0, 156994.0, 10.0, -168.0, -1235.0, 0.0, 82.0}, { 1, 0, 0, 0, 1, 63110.0, 63.0, 27.0, -33228.0, 0.0, -9.0}, {-1, 0, 0, 0, 1, -57976.0, -63.0, -189.0, 31429.0, 0.0, -75.0}, {-1, 0, 2, 2, 2, -59641.0, -11.0, 149.0, 25543.0,-11.0, 66.0}, { 1, 0, 2, 0, 1, -51613.0, -42.0, 129.0, 26366.0, 0.0, 78.0}, {-2, 0, 2, 0, 1, 45893.0, 50.0, 31.0, -24236.0,-10.0, 20.0}, { 0, 0, 0, 2, 0, 63384.0, 11.0, -150.0, -1220.0, 0.0, 29.0}, { 0, 0, 2, 2, 2, -38571.0, -1.0, 158.0, 16452.0,-11.0, 68.0}, /* 21-30 */ { 0,-2, 2,-2, 2, 32481.0, 0.0, 0.0, -13870.0, 0.0, 0.0}, {-2, 0, 0, 2, 0, -47722.0, 0.0, -18.0, 477.0, 0.0, -25.0}, { 2, 0, 2, 0, 2, -31046.0, -1.0, 131.0, 13238.0,-11.0, 59.0}, { 1, 0, 2,-2, 2, 28593.0, 0.0, -1.0, -12338.0, 10.0, -3.0}, {-1, 0, 2, 0, 1, 20441.0, 21.0, 10.0, -10758.0, 0.0, -3.0}, { 2, 0, 0, 0, 0, 29243.0, 0.0, -74.0, -609.0, 0.0, 13.0}, { 0, 0, 2, 0, 0, 25887.0, 0.0, -66.0, -550.0, 0.0, 11.0}, { 0, 1, 0, 0, 1, -14053.0, -25.0, 79.0, 8551.0, -2.0, -45.0}, {-1, 0, 0, 2, 1, 15164.0, 10.0, 11.0, -8001.0, 0.0, -1.0}, { 0, 2, 2,-2, 2, -15794.0, 72.0, -16.0, 6850.0,-42.0, -5.0}, /* 31-40 */ { 0, 0,-2, 2, 0, 21783.0, 0.0, 13.0, -167.0, 0.0, 13.0}, { 1, 0, 0,-2, 1, -12873.0, -10.0, -37.0, 6953.0, 0.0, -14.0}, { 0,-1, 0, 0, 1, -12654.0, 11.0, 63.0, 6415.0, 0.0, 26.0}, {-1, 0, 2, 2, 1, -10204.0, 0.0, 25.0, 5222.0, 0.0, 15.0}, { 0, 2, 0, 0, 0, 16707.0, -85.0, -10.0, 168.0, -1.0, 10.0}, { 1, 0, 2, 2, 2, -7691.0, 0.0, 44.0, 3268.0, 0.0, 19.0}, {-2, 0, 2, 0, 0, -11024.0, 0.0, -14.0, 104.0, 0.0, 2.0}, { 0, 1, 2, 0, 2, 7566.0, -21.0, -11.0, -3250.0, 0.0, -5.0}, { 0, 0, 2, 2, 1, -6637.0, -11.0, 25.0, 3353.0, 0.0, 14.0}, { 0,-1, 2, 0, 2, -7141.0, 21.0, 8.0, 3070.0, 0.0, 4.0}, /* 41-50 */ { 0, 0, 0, 2, 1, -6302.0, -11.0, 2.0, 3272.0, 0.0, 4.0}, { 1, 0, 2,-2, 1, 5800.0, 10.0, 2.0, -3045.0, 0.0, -1.0}, { 2, 0, 2,-2, 2, 6443.0, 0.0, -7.0, -2768.0, 0.0, -4.0}, {-2, 0, 0, 2, 1, -5774.0, -11.0, -15.0, 3041.0, 0.0, -5.0}, { 2, 0, 2, 0, 1, -5350.0, 0.0, 21.0, 2695.0, 0.0, 12.0}, { 0,-1, 2,-2, 1, -4752.0, -11.0, -3.0, 2719.0, 0.0, -3.0}, { 0, 0, 0,-2, 1, -4940.0, -11.0, -21.0, 2720.0, 0.0, -9.0}, {-1,-1, 0, 2, 0, 7350.0, 0.0, -8.0, -51.0, 0.0, 4.0}, { 2, 0, 0,-2, 1, 4065.0, 0.0, 6.0, -2206.0, 0.0, 1.0}, { 1, 0, 0, 2, 0, 6579.0, 0.0, -24.0, -199.0, 0.0, 2.0}, /* 51-60 */ { 0, 1, 2,-2, 1, 3579.0, 0.0, 5.0, -1900.0, 0.0, 1.0}, { 1,-1, 0, 0, 0, 4725.0, 0.0, -6.0, -41.0, 0.0, 3.0}, {-2, 0, 2, 0, 2, -3075.0, 0.0, -2.0, 1313.0, 0.0, -1.0}, { 3, 0, 2, 0, 2, -2904.0, 0.0, 15.0, 1233.0, 0.0, 7.0}, { 0,-1, 0, 2, 0, 4348.0, 0.0, -10.0, -81.0, 0.0, 2.0}, { 1,-1, 2, 0, 2, -2878.0, 0.0, 8.0, 1232.0, 0.0, 4.0}, { 0, 0, 0, 1, 0, -4230.0, 0.0, 5.0, -20.0, 0.0, -2.0}, {-1,-1, 2, 2, 2, -2819.0, 0.0, 7.0, 1207.0, 0.0, 3.0}, {-1, 0, 2, 0, 0, -4056.0, 0.0, 5.0, 40.0, 0.0, -2.0}, { 0,-1, 2, 2, 2, -2647.0, 0.0, 11.0, 1129.0, 0.0, 5.0}, /* 61-70 */ {-2, 0, 0, 0, 1, -2294.0, 0.0, -10.0, 1266.0, 0.0, -4.0}, { 1, 1, 2, 0, 2, 2481.0, 0.0, -7.0, -1062.0, 0.0, -3.0}, { 2, 0, 0, 0, 1, 2179.0, 0.0, -2.0, -1129.0, 0.0, -2.0}, {-1, 1, 0, 1, 0, 3276.0, 0.0, 1.0, -9.0, 0.0, 0.0}, { 1, 1, 0, 0, 0, -3389.0, 0.0, 5.0, 35.0, 0.0, -2.0}, { 1, 0, 2, 0, 0, 3339.0, 0.0, -13.0, -107.0, 0.0, 1.0}, {-1, 0, 2,-2, 1, -1987.0, 0.0, -6.0, 1073.0, 0.0, -2.0}, { 1, 0, 0, 0, 2, -1981.0, 0.0, 0.0, 854.0, 0.0, 0.0}, {-1, 0, 0, 1, 0, 4026.0, 0.0, -353.0, -553.0, 0.0, -139.0}, { 0, 0, 2, 1, 2, 1660.0, 0.0, -5.0, -710.0, 0.0, -2.0}, /* 71-80 */ {-1, 0, 2, 4, 2, -1521.0, 0.0, 9.0, 647.0, 0.0, 4.0}, {-1, 1, 0, 1, 1, 1314.0, 0.0, 0.0, -700.0, 0.0, 0.0}, { 0,-2, 2,-2, 1, -1283.0, 0.0, 0.0, 672.0, 0.0, 0.0}, { 1, 0, 2, 2, 1, -1331.0, 0.0, 8.0, 663.0, 0.0, 4.0}, {-2, 0, 2, 2, 2, 1383.0, 0.0, -2.0, -594.0, 0.0, -2.0}, {-1, 0, 0, 0, 2, 1405.0, 0.0, 4.0, -610.0, 0.0, 2.0}, { 1, 1, 2,-2, 2, 1290.0, 0.0, 0.0, -556.0, 0.0, 0.0}, {-2, 0, 2, 4, 2, -1214.0, 0.0, 5.0, 518.0, 0.0, 2.0}, {-1, 0, 4, 0, 2, 1146.0, 0.0, -3.0, -490.0, 0.0, -1.0}, { 2, 0, 2,-2, 1, 1019.0, 0.0, -1.0, -527.0, 0.0, -1.0}, /* 81-90 */ { 2, 0, 2, 2, 2, -1100.0, 0.0, 9.0, 465.0, 0.0, 4.0}, { 1, 0, 0, 2, 1, -970.0, 0.0, 2.0, 496.0, 0.0, 1.0}, { 3, 0, 0, 0, 0, 1575.0, 0.0, -6.0, -50.0, 0.0, 0.0}, { 3, 0, 2,-2, 2, 934.0, 0.0, -3.0, -399.0, 0.0, -1.0}, { 0, 0, 4,-2, 2, 922.0, 0.0, -1.0, -395.0, 0.0, -1.0}, { 0, 1, 2, 0, 1, 815.0, 0.0, -1.0, -422.0, 0.0, -1.0}, { 0, 0,-2, 2, 1, 834.0, 0.0, 2.0, -440.0, 0.0, 1.0}, { 0, 0, 2,-2, 3, 1248.0, 0.0, 0.0, -170.0, 0.0, 1.0}, {-1, 0, 0, 4, 0, 1338.0, 0.0, -5.0, -39.0, 0.0, 0.0}, { 2, 0,-2, 0, 1, 716.0, 0.0, -2.0, -389.0, 0.0, -1.0}, /* 91-100 */ {-2, 0, 0, 4, 0, 1282.0, 0.0, -3.0, -23.0, 0.0, 1.0}, {-1,-1, 0, 2, 1, 742.0, 0.0, 1.0, -391.0, 0.0, 0.0}, {-1, 0, 0, 1, 1, 1020.0, 0.0, -25.0, -495.0, 0.0, -10.0}, { 0, 1, 0, 0, 2, 715.0, 0.0, -4.0, -326.0, 0.0, 2.0}, { 0, 0,-2, 0, 1, -666.0, 0.0, -3.0, 369.0, 0.0, -1.0}, { 0,-1, 2, 0, 1, -667.0, 0.0, 1.0, 346.0, 0.0, 1.0}, { 0, 0, 2,-1, 2, -704.0, 0.0, 0.0, 304.0, 0.0, 0.0}, { 0, 0, 2, 4, 2, -694.0, 0.0, 5.0, 294.0, 0.0, 2.0}, {-2,-1, 0, 2, 0, -1014.0, 0.0, -1.0, 4.0, 0.0, -1.0}, { 1, 1, 0,-2, 1, -585.0, 0.0, -2.0, 316.0, 0.0, -1.0}, /* 101-110 */ {-1, 1, 0, 2, 0, -949.0, 0.0, 1.0, 8.0, 0.0, -1.0}, {-1, 1, 0, 1, 2, -595.0, 0.0, 0.0, 258.0, 0.0, 0.0}, { 1,-1, 0, 0, 1, 528.0, 0.0, 0.0, -279.0, 0.0, 0.0}, { 1,-1, 2, 2, 2, -590.0, 0.0, 4.0, 252.0, 0.0, 2.0}, {-1, 1, 2, 2, 2, 570.0, 0.0, -2.0, -244.0, 0.0, -1.0}, { 3, 0, 2, 0, 1, -502.0, 0.0, 3.0, 250.0, 0.0, 2.0}, { 0, 1,-2, 2, 0, -875.0, 0.0, 1.0, 29.0, 0.0, 0.0}, {-1, 0, 0,-2, 1, -492.0, 0.0, -3.0, 275.0, 0.0, -1.0}, { 0, 1, 2, 2, 2, 535.0, 0.0, -2.0, -228.0, 0.0, -1.0}, {-1,-1, 2, 2, 1, -467.0, 0.0, 1.0, 240.0, 0.0, 1.0}, /* 111-120 */ { 0,-1, 0, 0, 2, 591.0, 0.0, 0.0, -253.0, 0.0, 0.0}, { 1, 0, 2,-4, 1, -453.0, 0.0, -1.0, 244.0, 0.0, -1.0}, {-1, 0,-2, 2, 0, 766.0, 0.0, 1.0, 9.0, 0.0, 0.0}, { 0,-1, 2, 2, 1, -446.0, 0.0, 2.0, 225.0, 0.0, 1.0}, { 2,-1, 2, 0, 2, -488.0, 0.0, 2.0, 207.0, 0.0, 1.0}, { 0, 0, 0, 2, 2, -468.0, 0.0, 0.0, 201.0, 0.0, 0.0}, { 1,-1, 2, 0, 1, -421.0, 0.0, 1.0, 216.0, 0.0, 1.0}, {-1, 1, 2, 0, 2, 463.0, 0.0, 0.0, -200.0, 0.0, 0.0}, { 0, 1, 0, 2, 0, -673.0, 0.0, 2.0, 14.0, 0.0, 0.0}, { 0,-1,-2, 2, 0, 658.0, 0.0, 0.0, -2.0, 0.0, 0.0}, /* 121-130 */ { 0, 3, 2,-2, 2, -438.0, 0.0, 0.0, 188.0, 0.0, 0.0}, { 0, 0, 0, 1, 1, -390.0, 0.0, 0.0, 205.0, 0.0, 0.0}, {-1, 0, 2, 2, 0, 639.0, -11.0, -2.0, -19.0, 0.0, 0.0}, { 2, 1, 2, 0, 2, 412.0, 0.0, -2.0, -176.0, 0.0, -1.0}, { 1, 1, 0, 0, 1, -361.0, 0.0, 0.0, 189.0, 0.0, 0.0}, { 1, 1, 2, 0, 1, 360.0, 0.0, -1.0, -185.0, 0.0, -1.0}, { 2, 0, 0, 2, 0, 588.0, 0.0, -3.0, -24.0, 0.0, 0.0}, { 1, 0,-2, 2, 0, -578.0, 0.0, 1.0, 5.0, 0.0, 0.0}, {-1, 0, 0, 2, 2, -396.0, 0.0, 0.0, 171.0, 0.0, 0.0}, { 0, 1, 0, 1, 0, 565.0, 0.0, -1.0, -6.0, 0.0, 0.0}, /* 131-140 */ { 0, 1, 0,-2, 1, -335.0, 0.0, -1.0, 184.0, 0.0, -1.0}, {-1, 0, 2,-2, 2, 357.0, 0.0, 1.0, -154.0, 0.0, 0.0}, { 0, 0, 0,-1, 1, 321.0, 0.0, 1.0, -174.0, 0.0, 0.0}, {-1, 1, 0, 0, 1, -301.0, 0.0, -1.0, 162.0, 0.0, 0.0}, { 1, 0, 2,-1, 2, -334.0, 0.0, 0.0, 144.0, 0.0, 0.0}, { 1,-1, 0, 2, 0, 493.0, 0.0, -2.0, -15.0, 0.0, 0.0}, { 0, 0, 0, 4, 0, 494.0, 0.0, -2.0, -19.0, 0.0, 0.0}, { 1, 0, 2, 1, 2, 337.0, 0.0, -1.0, -143.0, 0.0, -1.0}, { 0, 0, 2, 1, 1, 280.0, 0.0, -1.0, -144.0, 0.0, 0.0}, { 1, 0, 0,-2, 2, 309.0, 0.0, 1.0, -134.0, 0.0, 0.0}, /* 141-150 */ {-1, 0, 2, 4, 1, -263.0, 0.0, 2.0, 131.0, 0.0, 1.0}, { 1, 0,-2, 0, 1, 253.0, 0.0, 1.0, -138.0, 0.0, 0.0}, { 1, 1, 2,-2, 1, 245.0, 0.0, 0.0, -128.0, 0.0, 0.0}, { 0, 0, 2, 2, 0, 416.0, 0.0, -2.0, -17.0, 0.0, 0.0}, {-1, 0, 2,-1, 1, -229.0, 0.0, 0.0, 128.0, 0.0, 0.0}, {-2, 0, 2, 2, 1, 231.0, 0.0, 0.0, -120.0, 0.0, 0.0}, { 4, 0, 2, 0, 2, -259.0, 0.0, 2.0, 109.0, 0.0, 1.0}, { 2,-1, 0, 0, 0, 375.0, 0.0, -1.0, -8.0, 0.0, 0.0}, { 2, 1, 2,-2, 2, 252.0, 0.0, 0.0, -108.0, 0.0, 0.0}, { 0, 1, 2, 1, 2, -245.0, 0.0, 1.0, 104.0, 0.0, 0.0}, /* 151-160 */ { 1, 0, 4,-2, 2, 243.0, 0.0, -1.0, -104.0, 0.0, 0.0}, {-1,-1, 0, 0, 1, 208.0, 0.0, 1.0, -112.0, 0.0, 0.0}, { 0, 1, 0, 2, 1, 199.0, 0.0, 0.0, -102.0, 0.0, 0.0}, {-2, 0, 2, 4, 1, -208.0, 0.0, 1.0, 105.0, 0.0, 0.0}, { 2, 0, 2, 0, 0, 335.0, 0.0, -2.0, -14.0, 0.0, 0.0}, { 1, 0, 0, 1, 0, -325.0, 0.0, 1.0, 7.0, 0.0, 0.0}, {-1, 0, 0, 4, 1, -187.0, 0.0, 0.0, 96.0, 0.0, 0.0}, {-1, 0, 4, 0, 1, 197.0, 0.0, -1.0, -100.0, 0.0, 0.0}, { 2, 0, 2, 2, 1, -192.0, 0.0, 2.0, 94.0, 0.0, 1.0}, { 0, 0, 2,-3, 2, -188.0, 0.0, 0.0, 83.0, 0.0, 0.0}, /* 161-170 */ {-1,-2, 0, 2, 0, 276.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 2, 1, 0, 0, 0, -286.0, 0.0, 1.0, 6.0, 0.0, 0.0}, { 0, 0, 4, 0, 2, 186.0, 0.0, -1.0, -79.0, 0.0, 0.0}, { 0, 0, 0, 0, 3, -219.0, 0.0, 0.0, 43.0, 0.0, 0.0}, { 0, 3, 0, 0, 0, 276.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 0, 0, 2,-4, 1, -153.0, 0.0, -1.0, 84.0, 0.0, 0.0}, { 0,-1, 0, 2, 1, -156.0, 0.0, 0.0, 81.0, 0.0, 0.0}, { 0, 0, 0, 4, 1, -154.0, 0.0, 1.0, 78.0, 0.0, 0.0}, {-1,-1, 2, 4, 2, -174.0, 0.0, 1.0, 75.0, 0.0, 0.0}, { 1, 0, 2, 4, 2, -163.0, 0.0, 2.0, 69.0, 0.0, 1.0}, /* 171-180 */ {-2, 2, 0, 2, 0, -228.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {-2,-1, 2, 0, 1, 91.0, 0.0, -4.0, -54.0, 0.0, -2.0}, {-2, 0, 0, 2, 2, 175.0, 0.0, 0.0, -75.0, 0.0, 0.0}, {-1,-1, 2, 0, 2, -159.0, 0.0, 0.0, 69.0, 0.0, 0.0}, { 0, 0, 4,-2, 1, 141.0, 0.0, 0.0, -72.0, 0.0, 0.0}, { 3, 0, 2,-2, 1, 147.0, 0.0, 0.0, -75.0, 0.0, 0.0}, {-2,-1, 0, 2, 1, -132.0, 0.0, 0.0, 69.0, 0.0, 0.0}, { 1, 0, 0,-1, 1, 159.0, 0.0, -28.0, -54.0, 0.0, 11.0}, { 0,-2, 0, 2, 0, 213.0, 0.0, 0.0, -4.0, 0.0, 0.0}, {-2, 0, 0, 4, 1, 123.0, 0.0, 0.0, -64.0, 0.0, 0.0}, /* 181-190 */ {-3, 0, 0, 0, 1, -118.0, 0.0, -1.0, 66.0, 0.0, 0.0}, { 1, 1, 2, 2, 2, 144.0, 0.0, -1.0, -61.0, 0.0, 0.0}, { 0, 0, 2, 4, 1, -121.0, 0.0, 1.0, 60.0, 0.0, 0.0}, { 3, 0, 2, 2, 2, -134.0, 0.0, 1.0, 56.0, 0.0, 1.0}, {-1, 1, 2,-2, 1, -105.0, 0.0, 0.0, 57.0, 0.0, 0.0}, { 2, 0, 0,-4, 1, -102.0, 0.0, 0.0, 56.0, 0.0, 0.0}, { 0, 0, 0,-2, 2, 120.0, 0.0, 0.0, -52.0, 0.0, 0.0}, { 2, 0, 2,-4, 1, 101.0, 0.0, 0.0, -54.0, 0.0, 0.0}, {-1, 1, 0, 2, 1, -113.0, 0.0, 0.0, 59.0, 0.0, 0.0}, { 0, 0, 2,-1, 1, -106.0, 0.0, 0.0, 61.0, 0.0, 0.0}, /* 191-200 */ { 0,-2, 2, 2, 2, -129.0, 0.0, 1.0, 55.0, 0.0, 0.0}, { 2, 0, 0, 2, 1, -114.0, 0.0, 0.0, 57.0, 0.0, 0.0}, { 4, 0, 2,-2, 2, 113.0, 0.0, -1.0, -49.0, 0.0, 0.0}, { 2, 0, 0,-2, 2, -102.0, 0.0, 0.0, 44.0, 0.0, 0.0}, { 0, 2, 0, 0, 1, -94.0, 0.0, 0.0, 51.0, 0.0, 0.0}, { 1, 0, 0,-4, 1, -100.0, 0.0, -1.0, 56.0, 0.0, 0.0}, { 0, 2, 2,-2, 1, 87.0, 0.0, 0.0, -47.0, 0.0, 0.0}, {-3, 0, 0, 4, 0, 161.0, 0.0, 0.0, -1.0, 0.0, 0.0}, {-1, 1, 2, 0, 1, 96.0, 0.0, 0.0, -50.0, 0.0, 0.0}, {-1,-1, 0, 4, 0, 151.0, 0.0, -1.0, -5.0, 0.0, 0.0}, /* 201-210 */ {-1,-2, 2, 2, 2, -104.0, 0.0, 0.0, 44.0, 0.0, 0.0}, {-2,-1, 2, 4, 2, -110.0, 0.0, 0.0, 48.0, 0.0, 0.0}, { 1,-1, 2, 2, 1, -100.0, 0.0, 1.0, 50.0, 0.0, 0.0}, {-2, 1, 0, 2, 0, 92.0, 0.0, -5.0, 12.0, 0.0, -2.0}, {-2, 1, 2, 0, 1, 82.0, 0.0, 0.0, -45.0, 0.0, 0.0}, { 2, 1, 0,-2, 1, 82.0, 0.0, 0.0, -45.0, 0.0, 0.0}, {-3, 0, 2, 0, 1, -78.0, 0.0, 0.0, 41.0, 0.0, 0.0}, {-2, 0, 2,-2, 1, -77.0, 0.0, 0.0, 43.0, 0.0, 0.0}, {-1, 1, 0, 2, 2, 2.0, 0.0, 0.0, 54.0, 0.0, 0.0}, { 0,-1, 2,-1, 2, 94.0, 0.0, 0.0, -40.0, 0.0, 0.0}, /* 211-220 */ {-1, 0, 4,-2, 2, -93.0, 0.0, 0.0, 40.0, 0.0, 0.0}, { 0,-2, 2, 0, 2, -83.0, 0.0, 10.0, 40.0, 0.0, -2.0}, {-1, 0, 2, 1, 2, 83.0, 0.0, 0.0, -36.0, 0.0, 0.0}, { 2, 0, 0, 0, 2, -91.0, 0.0, 0.0, 39.0, 0.0, 0.0}, { 0, 0, 2, 0, 3, 128.0, 0.0, 0.0, -1.0, 0.0, 0.0}, {-2, 0, 4, 0, 2, -79.0, 0.0, 0.0, 34.0, 0.0, 0.0}, {-1, 0,-2, 0, 1, -83.0, 0.0, 0.0, 47.0, 0.0, 0.0}, {-1, 1, 2, 2, 1, 84.0, 0.0, 0.0, -44.0, 0.0, 0.0}, { 3, 0, 0, 0, 1, 83.0, 0.0, 0.0, -43.0, 0.0, 0.0}, {-1, 0, 2, 3, 2, 91.0, 0.0, 0.0, -39.0, 0.0, 0.0}, /* 221-230 */ { 2,-1, 2, 0, 1, -77.0, 0.0, 0.0, 39.0, 0.0, 0.0}, { 0, 1, 2, 2, 1, 84.0, 0.0, 0.0, -43.0, 0.0, 0.0}, { 0,-1, 2, 4, 2, -92.0, 0.0, 1.0, 39.0, 0.0, 0.0}, { 2,-1, 2, 2, 2, -92.0, 0.0, 1.0, 39.0, 0.0, 0.0}, { 0, 2,-2, 2, 0, -94.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1,-1, 2,-1, 1, 68.0, 0.0, 0.0, -36.0, 0.0, 0.0}, { 0,-2, 0, 0, 1, -61.0, 0.0, 0.0, 32.0, 0.0, 0.0}, { 1, 0, 2,-4, 2, 71.0, 0.0, 0.0, -31.0, 0.0, 0.0}, { 1,-1, 0,-2, 1, 62.0, 0.0, 0.0, -34.0, 0.0, 0.0}, {-1,-1, 2, 0, 1, -63.0, 0.0, 0.0, 33.0, 0.0, 0.0}, /* 231-240 */ { 1,-1, 2,-2, 2, -73.0, 0.0, 0.0, 32.0, 0.0, 0.0}, {-2,-1, 0, 4, 0, 115.0, 0.0, 0.0, -2.0, 0.0, 0.0}, {-1, 0, 0, 3, 0, -103.0, 0.0, 0.0, 2.0, 0.0, 0.0}, {-2,-1, 2, 2, 2, 63.0, 0.0, 0.0, -28.0, 0.0, 0.0}, { 0, 2, 2, 0, 2, 74.0, 0.0, 0.0, -32.0, 0.0, 0.0}, { 1, 1, 0, 2, 0, -103.0, 0.0, -3.0, 3.0, 0.0, -1.0}, { 2, 0, 2,-1, 2, -69.0, 0.0, 0.0, 30.0, 0.0, 0.0}, { 1, 0, 2, 1, 1, 57.0, 0.0, 0.0, -29.0, 0.0, 0.0}, { 4, 0, 0, 0, 0, 94.0, 0.0, 0.0, -4.0, 0.0, 0.0}, { 2, 1, 2, 0, 1, 64.0, 0.0, 0.0, -33.0, 0.0, 0.0}, /* 241-250 */ { 3,-1, 2, 0, 2, -63.0, 0.0, 0.0, 26.0, 0.0, 0.0}, {-2, 2, 0, 2, 1, -38.0, 0.0, 0.0, 20.0, 0.0, 0.0}, { 1, 0, 2,-3, 1, -43.0, 0.0, 0.0, 24.0, 0.0, 0.0}, { 1, 1, 2,-4, 1, -45.0, 0.0, 0.0, 23.0, 0.0, 0.0}, {-1,-1, 2,-2, 1, 47.0, 0.0, 0.0, -24.0, 0.0, 0.0}, { 0,-1, 0,-1, 1, -48.0, 0.0, 0.0, 25.0, 0.0, 0.0}, { 0,-1, 0,-2, 1, 45.0, 0.0, 0.0, -26.0, 0.0, 0.0}, {-2, 0, 0, 0, 2, 56.0, 0.0, 0.0, -25.0, 0.0, 0.0}, {-2, 0,-2, 2, 0, 88.0, 0.0, 0.0, 2.0, 0.0, 0.0}, {-1, 0,-2, 4, 0, -75.0, 0.0, 0.0, 0.0, 0.0, 0.0}, /* 251-260 */ { 1,-2, 0, 0, 0, 85.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0, 1, 0, 1, 1, 49.0, 0.0, 0.0, -26.0, 0.0, 0.0}, {-1, 2, 0, 2, 0, -74.0, 0.0, -3.0, -1.0, 0.0, -1.0}, { 1,-1, 2,-2, 1, -39.0, 0.0, 0.0, 21.0, 0.0, 0.0}, { 1, 2, 2,-2, 2, 45.0, 0.0, 0.0, -20.0, 0.0, 0.0}, { 2,-1, 2,-2, 2, 51.0, 0.0, 0.0, -22.0, 0.0, 0.0}, { 1, 0, 2,-1, 1, -40.0, 0.0, 0.0, 21.0, 0.0, 0.0}, { 2, 1, 2,-2, 1, 41.0, 0.0, 0.0, -21.0, 0.0, 0.0}, {-2, 0, 0,-2, 1, -42.0, 0.0, 0.0, 24.0, 0.0, 0.0}, { 1,-2, 2, 0, 2, -51.0, 0.0, 0.0, 22.0, 0.0, 0.0}, /* 261-270 */ { 0, 1, 2, 1, 1, -42.0, 0.0, 0.0, 22.0, 0.0, 0.0}, { 1, 0, 4,-2, 1, 39.0, 0.0, 0.0, -21.0, 0.0, 0.0}, {-2, 0, 4, 2, 2, 46.0, 0.0, 0.0, -18.0, 0.0, 0.0}, { 1, 1, 2, 1, 2, -53.0, 0.0, 0.0, 22.0, 0.0, 0.0}, { 1, 0, 0, 4, 0, 82.0, 0.0, 0.0, -4.0, 0.0, 0.0}, { 1, 0, 2, 2, 0, 81.0, 0.0, -1.0, -4.0, 0.0, 0.0}, { 2, 0, 2, 1, 2, 47.0, 0.0, 0.0, -19.0, 0.0, 0.0}, { 3, 1, 2, 0, 2, 53.0, 0.0, 0.0, -23.0, 0.0, 0.0}, { 4, 0, 2, 0, 1, -45.0, 0.0, 0.0, 22.0, 0.0, 0.0}, {-2,-1, 2, 0, 0, -44.0, 0.0, 0.0, -2.0, 0.0, 0.0}, /* 271-280 */ { 0, 1,-2, 2, 1, -33.0, 0.0, 0.0, 16.0, 0.0, 0.0}, { 1, 0,-2, 1, 0, -61.0, 0.0, 0.0, 1.0, 0.0, 0.0}, { 0,-1,-2, 2, 1, 28.0, 0.0, 0.0, -15.0, 0.0, 0.0}, { 2,-1, 0,-2, 1, -38.0, 0.0, 0.0, 19.0, 0.0, 0.0}, {-1, 0, 2,-1, 2, -33.0, 0.0, 0.0, 21.0, 0.0, 0.0}, { 1, 0, 2,-3, 2, -60.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0, 1, 2,-2, 3, 48.0, 0.0, 0.0, -10.0, 0.0, 0.0}, { 0, 0, 2,-3, 1, 27.0, 0.0, 0.0, -14.0, 0.0, 0.0}, {-1, 0,-2, 2, 1, 38.0, 0.0, 0.0, -20.0, 0.0, 0.0}, { 0, 0, 2,-4, 2, 31.0, 0.0, 0.0, -13.0, 0.0, 0.0}, /* 281-290 */ {-2, 1, 0, 0, 1, -29.0, 0.0, 0.0, 15.0, 0.0, 0.0}, {-1, 0, 0,-1, 1, 28.0, 0.0, 0.0, -15.0, 0.0, 0.0}, { 2, 0, 2,-4, 2, -32.0, 0.0, 0.0, 15.0, 0.0, 0.0}, { 0, 0, 4,-4, 4, 45.0, 0.0, 0.0, -8.0, 0.0, 0.0}, { 0, 0, 4,-4, 2, -44.0, 0.0, 0.0, 19.0, 0.0, 0.0}, {-1,-2, 0, 2, 1, 28.0, 0.0, 0.0, -15.0, 0.0, 0.0}, {-2, 0, 0, 3, 0, -51.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 1, 0,-2, 2, 1, -36.0, 0.0, 0.0, 20.0, 0.0, 0.0}, {-3, 0, 2, 2, 2, 44.0, 0.0, 0.0, -19.0, 0.0, 0.0}, {-3, 0, 2, 2, 1, 26.0, 0.0, 0.0, -14.0, 0.0, 0.0}, /* 291-300 */ {-2, 0, 2, 2, 0, -60.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 2,-1, 0, 0, 1, 35.0, 0.0, 0.0, -18.0, 0.0, 0.0}, {-2, 1, 2, 2, 2, -27.0, 0.0, 0.0, 11.0, 0.0, 0.0}, { 1, 1, 0, 1, 0, 47.0, 0.0, 0.0, -1.0, 0.0, 0.0}, { 0, 1, 4,-2, 2, 36.0, 0.0, 0.0, -15.0, 0.0, 0.0}, {-1, 1, 0,-2, 1, -36.0, 0.0, 0.0, 20.0, 0.0, 0.0}, { 0, 0, 0,-4, 1, -35.0, 0.0, 0.0, 19.0, 0.0, 0.0}, { 1,-1, 0, 2, 1, -37.0, 0.0, 0.0, 19.0, 0.0, 0.0}, { 1, 1, 0, 2, 1, 32.0, 0.0, 0.0, -16.0, 0.0, 0.0}, {-1, 2, 2, 2, 2, 35.0, 0.0, 0.0, -14.0, 0.0, 0.0}, /* 301-310 */ { 3, 1, 2,-2, 2, 32.0, 0.0, 0.0, -13.0, 0.0, 0.0}, { 0,-1, 0, 4, 0, 65.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 2,-1, 0, 2, 0, 47.0, 0.0, 0.0, -1.0, 0.0, 0.0}, { 0, 0, 4, 0, 1, 32.0, 0.0, 0.0, -16.0, 0.0, 0.0}, { 2, 0, 4,-2, 2, 37.0, 0.0, 0.0, -16.0, 0.0, 0.0}, {-1,-1, 2, 4, 1, -30.0, 0.0, 0.0, 15.0, 0.0, 0.0}, { 1, 0, 0, 4, 1, -32.0, 0.0, 0.0, 16.0, 0.0, 0.0}, { 1,-2, 2, 2, 2, -31.0, 0.0, 0.0, 13.0, 0.0, 0.0}, { 0, 0, 2, 3, 2, 37.0, 0.0, 0.0, -16.0, 0.0, 0.0}, {-1, 1, 2, 4, 2, 31.0, 0.0, 0.0, -13.0, 0.0, 0.0}, /* 311-320 */ { 3, 0, 0, 2, 0, 49.0, 0.0, 0.0, -2.0, 0.0, 0.0}, {-1, 0, 4, 2, 2, 32.0, 0.0, 0.0, -13.0, 0.0, 0.0}, { 1, 1, 2, 2, 1, 23.0, 0.0, 0.0, -12.0, 0.0, 0.0}, {-2, 0, 2, 6, 2, -43.0, 0.0, 0.0, 18.0, 0.0, 0.0}, { 2, 1, 2, 2, 2, 26.0, 0.0, 0.0, -11.0, 0.0, 0.0}, {-1, 0, 2, 6, 2, -32.0, 0.0, 0.0, 14.0, 0.0, 0.0}, { 1, 0, 2, 4, 1, -29.0, 0.0, 0.0, 14.0, 0.0, 0.0}, { 2, 0, 2, 4, 2, -27.0, 0.0, 0.0, 12.0, 0.0, 0.0}, { 1, 1,-2, 1, 0, 30.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3, 1, 2, 1, 2, -11.0, 0.0, 0.0, 5.0, 0.0, 0.0}, /* 321-330 */ { 2, 0,-2, 0, 2, -21.0, 0.0, 0.0, 10.0, 0.0, 0.0}, {-1, 0, 0, 1, 2, -34.0, 0.0, 0.0, 15.0, 0.0, 0.0}, {-4, 0, 2, 2, 1, -10.0, 0.0, 0.0, 6.0, 0.0, 0.0}, {-1,-1, 0, 1, 0, -36.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0, 0,-2, 2, 2, -9.0, 0.0, 0.0, 4.0, 0.0, 0.0}, { 1, 0, 0,-1, 2, -12.0, 0.0, 0.0, 5.0, 0.0, 0.0}, { 0,-1, 2,-2, 3, -21.0, 0.0, 0.0, 5.0, 0.0, 0.0}, {-2, 1, 2, 0, 0, -29.0, 0.0, 0.0, -1.0, 0.0, 0.0}, { 0, 0, 2,-2, 4, -15.0, 0.0, 0.0, 3.0, 0.0, 0.0}, {-2,-2, 0, 2, 0, -20.0, 0.0, 0.0, 0.0, 0.0, 0.0}, /* 331-340 */ {-2, 0,-2, 4, 0, 28.0, 0.0, 0.0, 0.0, 0.0, -2.0}, { 0,-2,-2, 2, 0, 17.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 1, 2, 0,-2, 1, -22.0, 0.0, 0.0, 12.0, 0.0, 0.0}, { 3, 0, 0,-4, 1, -14.0, 0.0, 0.0, 7.0, 0.0, 0.0}, {-1, 1, 2,-2, 2, 24.0, 0.0, 0.0, -11.0, 0.0, 0.0}, { 1,-1, 2,-4, 1, 11.0, 0.0, 0.0, -6.0, 0.0, 0.0}, { 1, 1, 0,-2, 2, 14.0, 0.0, 0.0, -6.0, 0.0, 0.0}, {-3, 0, 2, 0, 0, 24.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3, 0, 2, 0, 2, 18.0, 0.0, 0.0, -8.0, 0.0, 0.0}, {-2, 0, 0, 1, 0, -38.0, 0.0, 0.0, 0.0, 0.0, 0.0}, /* 341-350 */ { 0, 0,-2, 1, 0, -31.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3, 0, 0, 2, 1, -16.0, 0.0, 0.0, 8.0, 0.0, 0.0}, {-1,-1,-2, 2, 0, 29.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0, 1, 2,-4, 1, -18.0, 0.0, 0.0, 10.0, 0.0, 0.0}, { 2, 1, 0,-4, 1, -10.0, 0.0, 0.0, 5.0, 0.0, 0.0}, { 0, 2, 0,-2, 1, -17.0, 0.0, 0.0, 10.0, 0.0, 0.0}, { 1, 0, 0,-3, 1, 9.0, 0.0, 0.0, -4.0, 0.0, 0.0}, {-2, 0, 2,-2, 2, 16.0, 0.0, 0.0, -6.0, 0.0, 0.0}, {-2,-1, 0, 0, 1, 22.0, 0.0, 0.0, -12.0, 0.0, 0.0}, {-4, 0, 0, 2, 0, 20.0, 0.0, 0.0, 0.0, 0.0, 0.0}, /* 351-360 */ { 1, 1, 0,-4, 1, -13.0, 0.0, 0.0, 6.0, 0.0, 0.0}, {-1, 0, 2,-4, 1, -17.0, 0.0, 0.0, 9.0, 0.0, 0.0}, { 0, 0, 4,-4, 1, -14.0, 0.0, 0.0, 8.0, 0.0, 0.0}, { 0, 3, 2,-2, 2, 0.0, 0.0, 0.0, -7.0, 0.0, 0.0}, {-3,-1, 0, 4, 0, 14.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3, 0, 0, 4, 1, 19.0, 0.0, 0.0, -10.0, 0.0, 0.0}, { 1,-1,-2, 2, 0, -34.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1,-1, 0, 2, 2, -20.0, 0.0, 0.0, 8.0, 0.0, 0.0}, { 1,-2, 0, 0, 1, 9.0, 0.0, 0.0, -5.0, 0.0, 0.0}, { 1,-1, 0, 0, 2, -18.0, 0.0, 0.0, 7.0, 0.0, 0.0}, /* 361-370 */ { 0, 0, 0, 1, 2, 13.0, 0.0, 0.0, -6.0, 0.0, 0.0}, {-1,-1, 2, 0, 0, 17.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 1,-2, 2,-2, 2, -12.0, 0.0, 0.0, 5.0, 0.0, 0.0}, { 0,-1, 2,-1, 1, 15.0, 0.0, 0.0, -8.0, 0.0, 0.0}, {-1, 0, 2, 0, 3, -11.0, 0.0, 0.0, 3.0, 0.0, 0.0}, { 1, 1, 0, 0, 2, 13.0, 0.0, 0.0, -5.0, 0.0, 0.0}, {-1, 1, 2, 0, 0, -18.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 1, 2, 0, 0, 0, -35.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1, 2, 2, 0, 2, 9.0, 0.0, 0.0, -4.0, 0.0, 0.0}, {-1, 0, 4,-2, 1, -19.0, 0.0, 0.0, 10.0, 0.0, 0.0}, /* 371-380 */ { 3, 0, 2,-4, 2, -26.0, 0.0, 0.0, 11.0, 0.0, 0.0}, { 1, 2, 2,-2, 1, 8.0, 0.0, 0.0, -4.0, 0.0, 0.0}, { 1, 0, 4,-4, 2, -10.0, 0.0, 0.0, 4.0, 0.0, 0.0}, {-2,-1, 0, 4, 1, 10.0, 0.0, 0.0, -6.0, 0.0, 0.0}, { 0,-1, 0, 2, 2, -21.0, 0.0, 0.0, 9.0, 0.0, 0.0}, {-2, 1, 0, 4, 0, -15.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2,-1, 2, 2, 1, 9.0, 0.0, 0.0, -5.0, 0.0, 0.0}, { 2, 0,-2, 2, 0, -29.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 1, 0, 0, 1, 1, -19.0, 0.0, 0.0, 10.0, 0.0, 0.0}, { 0, 1, 0, 2, 2, 12.0, 0.0, 0.0, -5.0, 0.0, 0.0}, /* 381-390 */ { 1,-1, 2,-1, 2, 22.0, 0.0, 0.0, -9.0, 0.0, 0.0}, {-2, 0, 4, 0, 1, -10.0, 0.0, 0.0, 5.0, 0.0, 0.0}, { 2, 1, 0, 0, 1, -20.0, 0.0, 0.0, 11.0, 0.0, 0.0}, { 0, 1, 2, 0, 0, -20.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0,-1, 4,-2, 2, -17.0, 0.0, 0.0, 7.0, 0.0, 0.0}, { 0, 0, 4,-2, 4, 15.0, 0.0, 0.0, -3.0, 0.0, 0.0}, { 0, 2, 2, 0, 1, 8.0, 0.0, 0.0, -4.0, 0.0, 0.0}, {-3, 0, 0, 6, 0, 14.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1,-1, 0, 4, 1, -12.0, 0.0, 0.0, 6.0, 0.0, 0.0}, { 1,-2, 0, 2, 0, 25.0, 0.0, 0.0, 0.0, 0.0, 0.0}, /* 391-400 */ {-1, 0, 0, 4, 2, -13.0, 0.0, 0.0, 6.0, 0.0, 0.0}, {-1,-2, 2, 2, 1, -14.0, 0.0, 0.0, 8.0, 0.0, 0.0}, {-1, 0, 0,-2, 2, 13.0, 0.0, 0.0, -5.0, 0.0, 0.0}, { 1, 0,-2,-2, 1, -17.0, 0.0, 0.0, 9.0, 0.0, 0.0}, { 0, 0,-2,-2, 1, -12.0, 0.0, 0.0, 6.0, 0.0, 0.0}, {-2, 0,-2, 0, 1, -10.0, 0.0, 0.0, 5.0, 0.0, 0.0}, { 0, 0, 0, 3, 1, 10.0, 0.0, 0.0, -6.0, 0.0, 0.0}, { 0, 0, 0, 3, 0, -15.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1, 1, 0, 4, 0, -22.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1,-1, 2, 2, 0, 28.0, 0.0, 0.0, -1.0, 0.0, 0.0}, /* 401-410 */ {-2, 0, 2, 3, 2, 15.0, 0.0, 0.0, -7.0, 0.0, 0.0}, { 1, 0, 0, 2, 2, 23.0, 0.0, 0.0, -10.0, 0.0, 0.0}, { 0,-1, 2, 1, 2, 12.0, 0.0, 0.0, -5.0, 0.0, 0.0}, { 3,-1, 0, 0, 0, 29.0, 0.0, 0.0, -1.0, 0.0, 0.0}, { 2, 0, 0, 1, 0, -25.0, 0.0, 0.0, 1.0, 0.0, 0.0}, { 1,-1, 2, 0, 0, 22.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0, 0, 2, 1, 0, -18.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 1, 0, 2, 0, 3, 15.0, 0.0, 0.0, 3.0, 0.0, 0.0}, { 3, 1, 0, 0, 0, -23.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 3,-1, 2,-2, 2, 12.0, 0.0, 0.0, -5.0, 0.0, 0.0}, /* 411-420 */ { 2, 0, 2,-1, 1, -8.0, 0.0, 0.0, 4.0, 0.0, 0.0}, { 1, 1, 2, 0, 0, -19.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0, 0, 4,-1, 2, -10.0, 0.0, 0.0, 4.0, 0.0, 0.0}, { 1, 2, 2, 0, 2, 21.0, 0.0, 0.0, -9.0, 0.0, 0.0}, {-2, 0, 0, 6, 0, 23.0, 0.0, 0.0, -1.0, 0.0, 0.0}, { 0,-1, 0, 4, 1, -16.0, 0.0, 0.0, 8.0, 0.0, 0.0}, {-2,-1, 2, 4, 1, -19.0, 0.0, 0.0, 9.0, 0.0, 0.0}, { 0,-2, 2, 2, 1, -22.0, 0.0, 0.0, 10.0, 0.0, 0.0}, { 0,-1, 2, 2, 0, 27.0, 0.0, 0.0, -1.0, 0.0, 0.0}, {-1, 0, 2, 3, 1, 16.0, 0.0, 0.0, -8.0, 0.0, 0.0}, /* 421-430 */ {-2, 1, 2, 4, 2, 19.0, 0.0, 0.0, -8.0, 0.0, 0.0}, { 2, 0, 0, 2, 2, 9.0, 0.0, 0.0, -4.0, 0.0, 0.0}, { 2,-2, 2, 0, 2, -9.0, 0.0, 0.0, 4.0, 0.0, 0.0}, {-1, 1, 2, 3, 2, -9.0, 0.0, 0.0, 4.0, 0.0, 0.0}, { 3, 0, 2,-1, 2, -8.0, 0.0, 0.0, 4.0, 0.0, 0.0}, { 4, 0, 2,-2, 1, 18.0, 0.0, 0.0, -9.0, 0.0, 0.0}, {-1, 0, 0, 6, 0, 16.0, 0.0, 0.0, -1.0, 0.0, 0.0}, {-1,-2, 2, 4, 2, -10.0, 0.0, 0.0, 4.0, 0.0, 0.0}, {-3, 0, 2, 6, 2, -23.0, 0.0, 0.0, 9.0, 0.0, 0.0}, {-1, 0, 2, 4, 0, 16.0, 0.0, 0.0, -1.0, 0.0, 0.0}, /* 431-440 */ { 3, 0, 0, 2, 1, -12.0, 0.0, 0.0, 6.0, 0.0, 0.0}, { 3,-1, 2, 0, 1, -8.0, 0.0, 0.0, 4.0, 0.0, 0.0}, { 3, 0, 2, 0, 0, 30.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 1, 0, 4, 0, 2, 24.0, 0.0, 0.0, -10.0, 0.0, 0.0}, { 5, 0, 2,-2, 2, 10.0, 0.0, 0.0, -4.0, 0.0, 0.0}, { 0,-1, 2, 4, 1, -16.0, 0.0, 0.0, 7.0, 0.0, 0.0}, { 2,-1, 2, 2, 1, -16.0, 0.0, 0.0, 7.0, 0.0, 0.0}, { 0, 1, 2, 4, 2, 17.0, 0.0, 0.0, -7.0, 0.0, 0.0}, { 1,-1, 2, 4, 2, -24.0, 0.0, 0.0, 10.0, 0.0, 0.0}, { 3,-1, 2, 2, 2, -12.0, 0.0, 0.0, 5.0, 0.0, 0.0}, /* 441-450 */ { 3, 0, 2, 2, 1, -24.0, 0.0, 0.0, 11.0, 0.0, 0.0}, { 5, 0, 2, 0, 2, -23.0, 0.0, 0.0, 9.0, 0.0, 0.0}, { 0, 0, 2, 6, 2, -13.0, 0.0, 0.0, 5.0, 0.0, 0.0}, { 4, 0, 2, 2, 2, -15.0, 0.0, 0.0, 7.0, 0.0, 0.0}, { 0,-1, 1,-1, 1, 0.0, 0.0,-1988.0, 0.0, 0.0,-1679.0}, {-1, 0, 1, 0, 3, 0.0, 0.0, -63.0, 0.0, 0.0, -27.0}, { 0,-2, 2,-2, 3, -4.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 1, 0,-1, 0, 1, 0.0, 0.0, 5.0, 0.0, 0.0, 4.0}, { 2,-2, 0,-2, 1, 5.0, 0.0, 0.0, -3.0, 0.0, 0.0}, {-1, 0, 1, 0, 2, 0.0, 0.0, 364.0, 0.0, 0.0, 176.0}, /* 451-460 */ {-1, 0, 1, 0, 1, 0.0, 0.0,-1044.0, 0.0, 0.0, -891.0}, {-1,-1, 2,-1, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {-2, 2, 0, 2, 2, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0}, {-1, 0, 1, 0, 0, 0.0, 0.0, 330.0, 0.0, 0.0, 0.0}, {-4, 1, 2, 2, 2, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0}, {-3, 0, 2, 1, 1, 3.0, 0.0, 0.0, -2.0, 0.0, 0.0}, {-2,-1, 2, 0, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0}, { 1, 0,-2, 1, 1, -5.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 2,-1,-2, 0, 1, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0}, {-4, 0, 2, 2, 0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0}, /* 461-470 */ {-3, 1, 0, 3, 0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1, 0,-1, 2, 0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0}, { 0,-2, 0, 0, 2, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0}, { 0,-2, 0, 0, 2, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0}, {-3, 0, 0, 3, 0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2,-1, 0, 2, 2, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0}, {-1, 0,-2, 3, 0, -7.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-4, 0, 0, 4, 0, -12.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 2, 1,-2, 0, 1, 5.0, 0.0, 0.0, -3.0, 0.0, 0.0}, { 2,-1, 0,-2, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0}, /* 471-480 */ { 0, 0, 1,-1, 0, -5.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1, 2, 0, 1, 0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2, 1, 2, 0, 2, -7.0, 0.0, 0.0, 3.0, 0.0, 0.0}, { 1, 1, 0,-1, 1, 7.0, 0.0, 0.0, -4.0, 0.0, 0.0}, { 1, 0, 1,-2, 1, 0.0, 0.0, -12.0, 0.0, 0.0, -10.0}, { 0, 2, 0, 0, 2, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 1,-1, 2,-3, 1, 3.0, 0.0, 0.0, -2.0, 0.0, 0.0}, {-1, 1, 2,-1, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0}, {-2, 0, 4,-2, 2, -7.0, 0.0, 0.0, 3.0, 0.0, 0.0}, {-2, 0, 4,-2, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, /* 481-490 */ {-2,-2, 0, 2, 1, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {-2, 0,-2, 4, 0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 1, 2, 2,-4, 1, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0}, { 1, 1, 2,-4, 2, 7.0, 0.0, 0.0, -3.0, 0.0, 0.0}, {-1, 2, 2,-2, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 2, 0, 0,-3, 1, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0}, {-1, 2, 0, 0, 1, -5.0, 0.0, 0.0, 3.0, 0.0, 0.0}, { 0, 0, 0,-2, 0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1,-1, 2,-2, 2, -5.0, 0.0, 0.0, 2.0, 0.0, 0.0}, {-1, 1, 0, 0, 2, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0}, /* 491-500 */ { 0, 0, 0,-1, 2, -8.0, 0.0, 0.0, 3.0, 0.0, 0.0}, {-2, 1, 0, 1, 0, 9.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 1,-2, 0,-2, 1, 6.0, 0.0, 0.0, -3.0, 0.0, 0.0}, { 1, 0,-2, 0, 2, -5.0, 0.0, 0.0, 2.0, 0.0, 0.0}, {-3, 1, 0, 2, 0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1, 1,-2, 2, 0, -7.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1,-1, 0, 0, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {-3, 0, 0, 2, 0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3,-1, 0, 2, 0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 2, 0, 2,-6, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0}, /* 501-510 */ { 0, 1, 2,-4, 2, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 2, 0, 0,-4, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0}, {-2, 1, 2,-2, 1, -5.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 0,-1, 2,-4, 1, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 0, 1, 0,-2, 2, 9.0, 0.0, 0.0, -3.0, 0.0, 0.0}, {-1, 0, 0,-2, 0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 2, 0,-2,-2, 1, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0}, {-4, 0, 2, 0, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0}, {-1,-1, 0,-1, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 0, 0,-2, 0, 2, 9.0, 0.0, 0.0, -3.0, 0.0, 0.0}, /* 511-520 */ {-3, 0, 0, 1, 0, -4.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1, 0,-2, 1, 0, -4.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2, 0,-2, 2, 1, 3.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 0, 0,-4, 2, 0, 8.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2,-1,-2, 2, 0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 1, 0, 2,-6, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0}, {-1, 0, 2,-4, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0}, { 1, 0, 0,-4, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0}, { 2, 1, 2,-4, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0}, { 2, 1, 2,-4, 1, 6.0, 0.0, 0.0, -3.0, 0.0, 0.0}, /* 521-530 */ { 0, 1, 4,-4, 4, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0, 1, 4,-4, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {-1,-1,-2, 4, 0, -7.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1,-3, 0, 2, 0, 9.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1, 0,-2, 4, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0}, {-2,-1, 0, 3, 0, -3.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0, 0,-2, 3, 0, -4.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2, 0, 0, 3, 1, -5.0, 0.0, 0.0, 3.0, 0.0, 0.0}, { 0,-1, 0, 1, 0, -13.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3, 0, 2, 2, 0, -7.0, 0.0, 0.0, 0.0, 0.0, 0.0}, /* 531-540 */ { 1, 1,-2, 2, 0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1, 1, 0, 2, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0}, { 1,-2, 2,-2, 1, 10.0, 0.0, 13.0, 6.0, 0.0, -5.0}, { 0, 0, 1, 0, 2, 0.0, 0.0, 30.0, 0.0, 0.0, 14.0}, { 0, 0, 1, 0, 1, 0.0, 0.0, -162.0, 0.0, 0.0, -138.0}, { 0, 0, 1, 0, 0, 0.0, 0.0, 75.0, 0.0, 0.0, 0.0}, {-1, 2, 0, 2, 1, -7.0, 0.0, 0.0, 4.0, 0.0, 0.0}, { 0, 0, 2, 0, 2, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, {-2, 0, 2, 0, 2, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 2, 0, 0,-1, 1, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0}, /* 541-550 */ { 3, 0, 0,-2, 1, 5.0, 0.0, 0.0, -3.0, 0.0, 0.0}, { 1, 0, 2,-2, 3, -3.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 1, 2, 0, 0, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 2, 0, 2,-3, 2, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, {-1, 1, 4,-2, 2, -5.0, 0.0, 0.0, 2.0, 0.0, 0.0}, {-2,-2, 0, 4, 0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0,-3, 0, 2, 0, 9.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0, 0,-2, 4, 0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1,-1, 0, 3, 0, -7.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2, 0, 0, 4, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0}, /* 551-560 */ {-1, 0, 0, 3, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 2,-2, 0, 0, 0, 7.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 1,-1, 0, 1, 0, -4.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1, 0, 0, 2, 0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0,-2, 2, 0, 1, -6.0, 0.0, -3.0, 3.0, 0.0, 1.0}, {-1, 0, 1, 2, 1, 0.0, 0.0, -3.0, 0.0, 0.0, -2.0}, {-1, 1, 0, 3, 0, 11.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1,-1, 2, 1, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0}, { 0,-1, 2, 0, 0, 11.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2, 1, 2, 2, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0}, /* 561-570 */ { 2,-2, 2,-2, 2, -1.0, 0.0, 3.0, 3.0, 0.0, -1.0}, { 1, 1, 0, 1, 1, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 1, 0, 1, 0, 1, 0.0, 0.0, -13.0, 0.0, 0.0, -11.0}, { 1, 0, 1, 0, 0, 3.0, 0.0, 6.0, 0.0, 0.0, 0.0}, { 0, 2, 0, 2, 0, -7.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 2,-1, 2,-2, 1, 5.0, 0.0, 0.0, -3.0, 0.0, 0.0}, { 0,-1, 4,-2, 1, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0}, { 0, 0, 4,-2, 3, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0, 1, 4,-2, 1, 5.0, 0.0, 0.0, -3.0, 0.0, 0.0}, { 4, 0, 2,-4, 2, -7.0, 0.0, 0.0, 3.0, 0.0, 0.0}, /* 571-580 */ { 2, 2, 2,-2, 2, 8.0, 0.0, 0.0, -3.0, 0.0, 0.0}, { 2, 0, 4,-4, 2, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, {-1,-2, 0, 4, 0, 11.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1,-3, 2, 2, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {-3, 0, 2, 4, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0}, {-3, 0, 2,-2, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, {-1,-1, 0,-2, 1, 8.0, 0.0, 0.0, -4.0, 0.0, 0.0}, {-3, 0, 0, 0, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0}, {-3, 0,-2, 2, 0, 11.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0, 1, 0,-4, 1, -6.0, 0.0, 0.0, 3.0, 0.0, 0.0}, /* 581-590 */ {-2, 1, 0,-2, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, {-4, 0, 0, 0, 1, -8.0, 0.0, 0.0, 4.0, 0.0, 0.0}, {-1, 0, 0,-4, 1, -7.0, 0.0, 0.0, 3.0, 0.0, 0.0}, {-3, 0, 0,-2, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 0, 0, 0, 3, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0}, {-1, 1, 0, 4, 1, 6.0, 0.0, 0.0, -3.0, 0.0, 0.0}, { 1,-2, 2, 0, 1, -6.0, 0.0, 0.0, 3.0, 0.0, 0.0}, { 0, 1, 0, 3, 0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-1, 0, 2, 2, 3, 6.0, 0.0, 0.0, -1.0, 0.0, 0.0}, { 0, 0, 2, 2, 2, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0}, /* 591-600 */ {-2, 0, 2, 2, 2, -5.0, 0.0, 0.0, 2.0, 0.0, 0.0}, {-1, 1, 2, 2, 0, -4.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 3, 0, 0, 0, 2, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 2, 1, 0, 1, 0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 2,-1, 2,-1, 2, 6.0, 0.0, 0.0, -3.0, 0.0, 0.0}, { 0, 0, 2, 0, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 0, 0, 3, 0, 3, 0.0, 0.0, -26.0, 0.0, 0.0, -11.0}, { 0, 0, 3, 0, 2, 0.0, 0.0, -10.0, 0.0, 0.0, -5.0}, {-1, 2, 2, 2, 1, 5.0, 0.0, 0.0, -3.0, 0.0, 0.0}, {-1, 0, 4, 0, 0, -13.0, 0.0, 0.0, 0.0, 0.0, 0.0}, /* 601-610 */ { 1, 2, 2, 0, 1, 3.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 3, 1, 2,-2, 1, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 1, 1, 4,-2, 2, 7.0, 0.0, 0.0, -3.0, 0.0, 0.0}, {-2,-1, 0, 6, 0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0,-2, 0, 4, 0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-2, 0, 0, 6, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0}, {-2,-2, 2, 4, 2, -6.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 0,-3, 2, 2, 2, -5.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 0, 0, 0, 4, 2, -7.0, 0.0, 0.0, 3.0, 0.0, 0.0}, {-1,-1, 2, 3, 2, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0}, /* 611-620 */ {-2, 0, 2, 4, 0, 13.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 2,-1, 0, 2, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 1, 0, 0, 3, 0, -3.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0, 1, 0, 4, 1, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 0, 1, 0, 4, 0, -11.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 1,-1, 2, 1, 2, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 0, 0, 2, 2, 3, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 1, 0, 2, 2, 2, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0}, {-1, 0, 2, 2, 2, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, {-2, 0, 4, 2, 1, 6.0, 0.0, 0.0, -3.0, 0.0, 0.0}, /* 621-630 */ { 2, 1, 0, 2, 1, 3.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 2, 1, 0, 2, 0, -12.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 2,-1, 2, 0, 0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 1, 0, 2, 1, 0, -3.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0, 1, 2, 2, 0, -4.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 2, 0, 2, 0, 3, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 3, 0, 2, 0, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0}, { 1, 0, 2, 0, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0}, { 1, 0, 3, 0, 3, 0.0, 0.0, -5.0, 0.0, 0.0, -2.0}, { 1, 1, 2, 1, 1, -7.0, 0.0, 0.0, 4.0, 0.0, 0.0}, /* 631-640 */ { 0, 2, 2, 2, 2, 6.0, 0.0, 0.0, -3.0, 0.0, 0.0}, { 2, 1, 2, 0, 0, -3.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 2, 0, 4,-2, 1, 5.0, 0.0, 0.0, -3.0, 0.0, 0.0}, { 4, 1, 2,-2, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0}, {-1,-1, 0, 6, 0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0}, {-3,-1, 2, 6, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0}, {-1, 0, 0, 6, 1, -5.0, 0.0, 0.0, 3.0, 0.0, 0.0}, {-3, 0, 2, 6, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 1,-1, 0, 4, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 1,-1, 0, 4, 0, 12.0, 0.0, 0.0, 0.0, 0.0, 0.0}, /* 641-650 */ {-2, 0, 2, 5, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0}, { 1,-2, 2, 2, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 3,-1, 0, 2, 0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 1,-1, 2, 2, 0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0, 0, 2, 3, 1, 5.0, 0.0, 0.0, -3.0, 0.0, 0.0}, {-1, 1, 2, 4, 1, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 0, 1, 2, 3, 2, -6.0, 0.0, 0.0, 3.0, 0.0, 0.0}, {-1, 0, 4, 2, 1, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 2, 0, 2, 1, 1, 6.0, 0.0, 0.0, -3.0, 0.0, 0.0}, { 5, 0, 0, 0, 0, 6.0, 0.0, 0.0, 0.0, 0.0, 0.0}, /* 651-660 */ { 2, 1, 2, 1, 2, -6.0, 0.0, 0.0, 3.0, 0.0, 0.0}, { 1, 0, 4, 0, 1, 3.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 3, 1, 2, 0, 1, 7.0, 0.0, 0.0, -4.0, 0.0, 0.0}, { 3, 0, 4,-2, 2, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0}, {-2,-1, 2, 6, 2, -5.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 0, 0, 0, 6, 0, 5.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0,-2, 2, 4, 2, -6.0, 0.0, 0.0, 3.0, 0.0, 0.0}, {-2, 0, 2, 6, 1, -6.0, 0.0, 0.0, 3.0, 0.0, 0.0}, { 2, 0, 0, 4, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 2, 0, 0, 4, 0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0}, /* 661-670 */ { 2,-2, 2, 2, 2, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 0, 0, 2, 4, 0, 7.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 1, 0, 2, 3, 2, 7.0, 0.0, 0.0, -3.0, 0.0, 0.0}, { 4, 0, 0, 2, 0, 4.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 2, 0, 2, 2, 0, 11.0, 0.0, 0.0, 0.0, 0.0, 0.0}, { 0, 0, 4, 2, 2, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 4,-1, 2, 0, 2, -6.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 3, 0, 2, 1, 2, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 2, 1, 2, 2, 1, 3.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 4, 1, 2, 0, 2, 5.0, 0.0, 0.0, -2.0, 0.0, 0.0}, /* 671-678 */ {-1,-1, 2, 6, 2, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, {-1, 0, 2, 6, 1, -4.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 1,-1, 2, 4, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0}, { 1, 1, 2, 4, 2, 4.0, 0.0, 0.0, -2.0, 0.0, 0.0}, { 3, 1, 2, 2, 2, 3.0, 0.0, 0.0, -1.0, 0.0, 0.0}, { 5, 0, 2, 0, 1, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0}, { 2,-1, 2, 4, 2, -3.0, 0.0, 0.0, 1.0, 0.0, 0.0}, { 2, 0, 2, 4, 1, -3.0, 0.0, 0.0, 2.0, 0.0, 0.0} }; /* Number of terms in the luni-solar nutation model */ const int NLS = (int) (sizeof xls / sizeof xls[0]); /* ------------------------ */ /* Planetary nutation model */ /* ------------------------ */ /* The units for the sine and cosine coefficients are */ /* 0.1 microarcsecond */ static const struct { int nl, /* coefficients of l, F, D and Omega */ nf, nd, nom, nme, /* coefficients of planetary longitudes */ nve, nea, nma, nju, nsa, nur, nne, npa; /* coefficient of general precession */ int sp,cp; /* longitude sin, cos coefficients */ int se,ce; /* obliquity sin, cos coefficients */ } xpl[] = { /* 1-10 */ { 0, 0, 0, 0, 0, 0, 8,-16, 4, 5, 0, 0, 0, 1440, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, -8, 16,-4,-5, 0, 0, 2, 56,-117, -42, -40}, { 0, 0, 0, 0, 0, 0, 8,-16, 4, 5, 0, 0, 2, 125, -43, 0, -54}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-1, 2, 2, 0, 5, 0, 0}, { 0, 0, 0, 0, 0, 0, -4, 8,-1,-5, 0, 0, 2, 3, -7, -3, 0}, { 0, 0, 0, 0, 0, 0, 4, -8, 3, 0, 0, 0, 1, 3, 0, 0, -2}, { 0, 1,-1, 1, 0, 0, 3, -8, 3, 0, 0, 0, 0, -114, 0, 0, 61}, {-1, 0, 0, 0, 0, 10, -3, 0, 0, 0, 0, 0, 0, -219, 89, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0,-2, 6,-3, 0, 2, -3, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 4, -8, 3, 0, 0, 0, 0, -462,1604, 0, 0}, /* 11-20 */ { 0, 1,-1, 1, 0, 0, -5, 8,-3, 0, 0, 0, 0, 99, 0, 0, -53}, { 0, 0, 0, 0, 0, 0, -4, 8,-3, 0, 0, 0, 1, -3, 0, 0, 2}, { 0, 0, 0, 0, 0, 0, 4, -8, 1, 5, 0, 0, 2, 0, 6, 2, 0}, { 0, 0, 0, 0, 0, -5, 6, 4, 0, 0, 0, 0, 2, 3, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 2,-5, 0, 0, 2, -12, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 2,-5, 0, 0, 1, 14,-218, 117, 8}, { 0, 1,-1, 1, 0, 0, -1, 0, 2,-5, 0, 0, 0, 31,-481, -257, -17}, { 0, 0, 0, 0, 0, 0, 0, 0, 2,-5, 0, 0, 0, -491, 128, 0, 0}, { 0, 1,-1, 1, 0, 0, -1, 0,-2, 5, 0, 0, 0,-3084,5123, 2735,1647}, { 0, 0, 0, 0, 0, 0, 0, 0,-2, 5, 0, 0, 1,-1444,2409,-1286,-771}, /* 21-30 */ { 0, 0, 0, 0, 0, 0, 0, 0,-2, 5, 0, 0, 2, 11, -24, -11, -9}, { 2,-1,-1, 0, 0, 0, 3, -7, 0, 0, 0, 0, 0, 26, -9, 0, 0}, { 1, 0,-2, 0, 0, 19,-21, 3, 0, 0, 0, 0, 0, 103, -60, 0, 0}, { 0, 1,-1, 1, 0, 2, -4, 0,-3, 0, 0, 0, 0, 0, -13, -7, 0}, { 1, 0,-1, 1, 0, 0, -1, 0, 2, 0, 0, 0, 0, -26, -29, -16, 14}, { 0, 1,-1, 1, 0, 0, -1, 0,-4,10, 0, 0, 0, 9, -27, -14, -5}, {-2, 0, 2, 1, 0, 0, 2, 0, 0,-5, 0, 0, 0, 12, 0, 0, -6}, { 0, 0, 0, 0, 0, 3, -7, 4, 0, 0, 0, 0, 0, -7, 0, 0, 0}, { 0,-1, 1, 0, 0, 0, 1, 0, 1,-1, 0, 0, 0, 0, 24, 0, 0}, {-2, 0, 2, 1, 0, 0, 2, 0,-2, 0, 0, 0, 0, 284, 0, 0,-151}, /* 31-40 */ {-1, 0, 0, 0, 0, 18,-16, 0, 0, 0, 0, 0, 0, 226, 101, 0, 0}, {-2, 1, 1, 2, 0, 0, 1, 0,-2, 0, 0, 0, 0, 0, -8, -2, 0}, {-1, 1,-1, 1, 0, 18,-17, 0, 0, 0, 0, 0, 0, 0, -6, -3, 0}, {-1, 0, 1, 1, 0, 0, 2, -2, 0, 0, 0, 0, 0, 5, 0, 0, -3}, { 0, 0, 0, 0, 0, -8, 13, 0, 0, 0, 0, 0, 2, -41, 175, 76, 17}, { 0, 2,-2, 2, 0, -8, 11, 0, 0, 0, 0, 0, 0, 0, 15, 6, 0}, { 0, 0, 0, 0, 0, -8, 13, 0, 0, 0, 0, 0, 1, 425, 212, -133, 269}, { 0, 1,-1, 1, 0, -8, 12, 0, 0, 0, 0, 0, 0, 1200, 598, 319,-641}, { 0, 0, 0, 0, 0, 8,-13, 0, 0, 0, 0, 0, 0, 235, 334, 0, 0}, { 0, 1,-1, 1, 0, 8,-14, 0, 0, 0, 0, 0, 0, 11, -12, -7, -6}, /* 41-50 */ { 0, 0, 0, 0, 0, 8,-13, 0, 0, 0, 0, 0, 1, 5, -6, 3, 3}, {-2, 0, 2, 1, 0, 0, 2, 0,-4, 5, 0, 0, 0, -5, 0, 0, 3}, {-2, 0, 2, 2, 0, 3, -3, 0, 0, 0, 0, 0, 0, 6, 0, 0, -3}, {-2, 0, 2, 0, 0, 0, 2, 0,-3, 1, 0, 0, 0, 15, 0, 0, 0}, { 0, 0, 0, 1, 0, 3, -5, 0, 2, 0, 0, 0, 0, 13, 0, 0, -7}, {-2, 0, 2, 0, 0, 0, 2, 0,-4, 3, 0, 0, 0, -6, -9, 0, 0}, { 0,-1, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 266, -78, 0, 0}, { 0, 0, 0, 1, 0, 0, -1, 2, 0, 0, 0, 0, 0, -460,-435, -232, 246}, { 0, 1,-1, 2, 0, 0, -2, 2, 0, 0, 0, 0, 0, 0, 15, 7, 0}, {-1, 1, 0, 1, 0, 3, -5, 0, 0, 0, 0, 0, 0, -3, 0, 0, 2}, /* 51-60 */ {-1, 0, 1, 0, 0, 3, -4, 0, 0, 0, 0, 0, 0, 0, 131, 0, 0}, {-2, 0, 2, 0, 0, 0, 2, 0,-2,-2, 0, 0, 0, 4, 0, 0, 0}, {-2, 2, 0, 2, 0, 0, -5, 9, 0, 0, 0, 0, 0, 0, 3, 0, 0}, { 0, 1,-1, 1, 0, 0, -1, 0, 0, 0,-1, 0, 0, 0, 4, 2, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0}, { 0, 1,-1, 1, 0, 0, -1, 0, 0, 0, 0, 2, 0, -17, -19, -10, 9}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, -9, -11, 6, -5}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, -6, 0, 0, 3}, {-1, 0, 1, 0, 0, 0, 3, -4, 0, 0, 0, 0, 0, -16, 8, 0, 0}, { 0,-1, 1, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0}, /* 61-70 */ { 0, 1,-1, 2, 0, 0, -1, 0, 0, 2, 0, 0, 0, 11, 24, 11, -5}, { 0, 0, 0, 1, 0, 0, -9, 17, 0, 0, 0, 0, 0, -3, -4, -2, 1}, { 0, 0, 0, 2, 0, -3, 5, 0, 0, 0, 0, 0, 0, 3, 0, 0, -1}, { 0, 1,-1, 1, 0, 0, -1, 0,-1, 2, 0, 0, 0, 0, -8, -4, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 1,-2, 0, 0, 0, 0, 3, 0, 0}, { 1, 0,-2, 0, 0, 17,-16, 0,-2, 0, 0, 0, 0, 0, 5, 0, 0}, { 0, 1,-1, 1, 0, 0, -1, 0, 1,-3, 0, 0, 0, 0, 3, 2, 0}, {-2, 0, 2, 1, 0, 0, 5, -6, 0, 0, 0, 0, 0, -6, 4, 2, 3}, { 0,-2, 2, 0, 0, 0, 9,-13, 0, 0, 0, 0, 0, -3, -5, 0, 0}, { 0, 1,-1, 2, 0, 0, -1, 0, 0, 1, 0, 0, 0, -5, 0, 0, 2}, /* 71-80 */ { 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 24, 13, -2}, { 0,-1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, -42, 20, 0, 0}, { 0,-2, 2, 0, 0, 5, -6, 0, 0, 0, 0, 0, 0, -10, 233, 0, 0}, { 0,-1, 1, 1, 0, 5, -7, 0, 0, 0, 0, 0, 0, -3, 0, 0, 1}, {-2, 0, 2, 0, 0, 6, -8, 0, 0, 0, 0, 0, 0, 78, -18, 0, 0}, { 2, 1,-3, 1, 0, -6, 7, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0}, { 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -3, -1, 0}, { 0,-1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, -4, -2, 1}, { 0, 1,-1, 1, 0, 0, -1, 0, 0, 0, 2, 0, 0, 0, -8, -4, -1}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, -5, 3, 0}, /* 81-90 */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, -7, 0, 0, 3}, { 0, 0, 0, 0, 0, 0, -8, 15, 0, 0, 0, 0, 2, -14, 8, 3, 6}, { 0, 0, 0, 0, 0, 0, -8, 15, 0, 0, 0, 0, 1, 0, 8, -4, 0}, { 0, 1,-1, 1, 0, 0, -9, 15, 0, 0, 0, 0, 0, 0, 19, 10, 0}, { 0, 0, 0, 0, 0, 0, 8,-15, 0, 0, 0, 0, 0, 45, -22, 0, 0}, { 1,-1,-1, 0, 0, 0, 8,-15, 0, 0, 0, 0, 0, -3, 0, 0, 0}, { 2, 0,-2, 0, 0, 2, -5, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0}, {-2, 0, 2, 0, 0, 0, 2, 0,-5, 5, 0, 0, 0, 0, 3, 0, 0}, { 2, 0,-2, 1, 0, 0, -6, 8, 0, 0, 0, 0, 0, 3, 5, 3, -2}, { 2, 0,-2, 1, 0, 0, -2, 0, 3, 0, 0, 0, 0, 89, -16, -9, -48}, /* 91-100 */ {-2, 1, 1, 0, 0, 0, 1, 0,-3, 0, 0, 0, 0, 0, 3, 0, 0}, {-2, 1, 1, 1, 0, 0, 1, 0,-3, 0, 0, 0, 0, -3, 7, 4, 2}, {-2, 0, 2, 0, 0, 0, 2, 0,-3, 0, 0, 0, 0, -349, -62, 0, 0}, {-2, 0, 2, 0, 0, 0, 6, -8, 0, 0, 0, 0, 0, -15, 22, 0, 0}, {-2, 0, 2, 0, 0, 0, 2, 0,-1,-5, 0, 0, 0, -3, 0, 0, 0}, {-1, 0, 1, 0, 0, 0, 1, 0,-1, 0, 0, 0, 0, -53, 0, 0, 0}, {-1, 1, 1, 1, 0,-20, 20, 0, 0, 0, 0, 0, 0, 5, 0, 0, -3}, { 1, 0,-2, 0, 0, 20,-21, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0}, { 0, 0, 0, 1, 0, 0, 8,-15, 0, 0, 0, 0, 0, 15, -7, -4, -8}, { 0, 2,-2, 1, 0, 0,-10, 15, 0, 0, 0, 0, 0, -3, 0, 0, 1}, /* 101-110 */ { 0,-1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, -21, -78, 0, 0}, { 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 20, -70, -37, -11}, { 0, 1,-1, 2, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 6, 3, 0}, { 0, 1,-1, 1, 0, 0, -1, 0,-2, 4, 0, 0, 0, 5, 3, 2, -2}, { 2, 0,-2, 1, 0, -6, 8, 0, 0, 0, 0, 0, 0, -17, -4, -2, 9}, { 0,-2, 2, 1, 0, 5, -6, 0, 0, 0, 0, 0, 0, 0, 6, 3, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0,-1, 0, 0, 1, 32, 15, -8, 17}, { 0, 1,-1, 1, 0, 0, -1, 0, 0,-1, 0, 0, 0, 174, 84, 45, -93}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 11, 56, 0, 0}, { 0, 1,-1, 1, 0, 0, -1, 0, 0, 1, 0, 0, 0, -66, -12, -6, 35}, /* 111-120 */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 47, 8, 4, -25}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 8, 4, 0}, { 0, 2,-2, 1, 0, 0, -9, 13, 0, 0, 0, 0, 0, 10, -22, -12, -5}, { 0, 0, 0, 1, 0, 0, 7,-13, 0, 0, 0, 0, 0, -3, 0, 0, 2}, {-2, 0, 2, 0, 0, 0, 5, -6, 0, 0, 0, 0, 0, -24, 12, 0, 0}, { 0, 0, 0, 0, 0, 0, 9,-17, 0, 0, 0, 0, 0, 5, -6, 0, 0}, { 0, 0, 0, 0, 0, 0, -9, 17, 0, 0, 0, 0, 2, 3, 0, 0, -2}, { 1, 0,-1, 1, 0, 0, -3, 4, 0, 0, 0, 0, 0, 4, 3, 1, -2}, { 1, 0,-1, 1, 0, -3, 4, 0, 0, 0, 0, 0, 0, 0, 29, 15, 0}, { 0, 0, 0, 2, 0, 0, -1, 2, 0, 0, 0, 0, 0, -5, -4, -2, 2}, /* 121-130 */ { 0,-1, 1, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 8, -3, -1, -5}, { 0,-2, 2, 0, 1, 0, -2, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0}, { 0, 0, 0, 0, 0, 3, -5, 0, 2, 0, 0, 0, 0, 10, 0, 0, 0}, {-2, 0, 2, 1, 0, 0, 2, 0,-3, 1, 0, 0, 0, 3, 0, 0, -2}, {-2, 0, 2, 1, 0, 3, -3, 0, 0, 0, 0, 0, 0, -5, 0, 0, 3}, { 0, 0, 0, 1, 0, 8,-13, 0, 0, 0, 0, 0, 0, 46, 66, 35, -25}, { 0,-1, 1, 0, 0, 8,-12, 0, 0, 0, 0, 0, 0, -14, 7, 0, 0}, { 0, 2,-2, 1, 0, -8, 11, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0}, {-1, 0, 1, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, -5, 0, 0, 0}, {-1, 0, 0, 1, 0, 18,-16, 0, 0, 0, 0, 0, 0, -68, -34, -18, 36}, /* 131-140 */ { 0, 1,-1, 1, 0, 0, -1, 0,-1, 1, 0, 0, 0, 0, 14, 7, 0}, { 0, 0, 0, 1, 0, 3, -7, 4, 0, 0, 0, 0, 0, 10, -6, -3, -5}, {-2, 1, 1, 1, 0, 0, -3, 7, 0, 0, 0, 0, 0, -5, -4, -2, 3}, { 0, 1,-1, 2, 0, 0, -1, 0,-2, 5, 0, 0, 0, -3, 5, 2, 1}, { 0, 0, 0, 1, 0, 0, 0, 0,-2, 5, 0, 0, 0, 76, 17, 9, -41}, { 0, 0, 0, 1, 0, 0, -4, 8,-3, 0, 0, 0, 0, 84, 298, 159, -45}, { 1, 0, 0, 1, 0,-10, 3, 0, 0, 0, 0, 0, 0, 3, 0, 0, -1}, { 0, 2,-2, 1, 0, 0, -2, 0, 0, 0, 0, 0, 0, -3, 0, 0, 2}, {-1, 0, 0, 1, 0, 10, -3, 0, 0, 0, 0, 0, 0, -3, 0, 0, 1}, { 0, 0, 0, 1, 0, 0, 4, -8, 3, 0, 0, 0, 0, -82, 292, 156, 44}, /* 141-150 */ { 0, 0, 0, 1, 0, 0, 0, 0, 2,-5, 0, 0, 0, -73, 17, 9, 39}, { 0,-1, 1, 0, 0, 0, 1, 0, 2,-5, 0, 0, 0, -9, -16, 0, 0}, { 2,-1,-1, 1, 0, 0, 3, -7, 0, 0, 0, 0, 0, 3, 0, -1, -2}, {-2, 0, 2, 0, 0, 0, 2, 0, 0,-5, 0, 0, 0, -3, 0, 0, 0}, { 0, 0, 0, 1, 0, -3, 7, -4, 0, 0, 0, 0, 0, -9, -5, -3, 5}, {-2, 0, 2, 0, 0, 0, 2, 0,-2, 0, 0, 0, 0, -439, 0, 0, 0}, { 1, 0, 0, 1, 0,-18, 16, 0, 0, 0, 0, 0, 0, 57, -28, -15, -30}, {-2, 1, 1, 1, 0, 0, 1, 0,-2, 0, 0, 0, 0, 0, -6, -3, 0}, { 0, 1,-1, 2, 0, -8, 12, 0, 0, 0, 0, 0, 0, -4, 0, 0, 2}, { 0, 0, 0, 1, 0, -8, 13, 0, 0, 0, 0, 0, 0, -40, 57, 30, 21}, /* 151-160 */ { 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 1, 23, 7, 3, -13}, { 0, 1,-1, 1, 0, 0, 0, -2, 0, 0, 0, 0, 0, 273, 80, 43,-146}, { 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, -449, 430, 0, 0}, { 0, 1,-1, 1, 0, 0, -2, 2, 0, 0, 0, 0, 0, -8, -47, -25, 4}, { 0, 0, 0, 0, 0, 0, -1, 2, 0, 0, 0, 0, 1, 6, 47, 25, -3}, {-1, 0, 1, 1, 0, 3, -4, 0, 0, 0, 0, 0, 0, 0, 23, 13, 0}, {-1, 0, 1, 1, 0, 0, 3, -4, 0, 0, 0, 0, 0, -3, 0, 0, 2}, { 0, 1,-1, 1, 0, 0, -1, 0, 0,-2, 0, 0, 0, 3, -4, -2, -2}, { 0, 1,-1, 1, 0, 0, -1, 0, 0, 2, 0, 0, 0, -48,-110, -59, 26}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 51, 114, 61, -27}, /* 161-170 */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, -133, 0, 0, 57}, { 0, 1,-1, 0, 0, 3, -6, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0}, { 0, 0, 0, 1, 0, -3, 5, 0, 0, 0, 0, 0, 0, -21, -6, -3, 11}, { 0, 1,-1, 2, 0, -3, 4, 0, 0, 0, 0, 0, 0, 0, -3, -1, 0}, { 0, 0, 0, 1, 0, 0, -2, 4, 0, 0, 0, 0, 0, -11, -21, -11, 6}, { 0, 2,-2, 1, 0, -5, 6, 0, 0, 0, 0, 0, 0, -18,-436, -233, 9}, { 0,-1, 1, 0, 0, 5, -7, 0, 0, 0, 0, 0, 0, 35, -7, 0, 0}, { 0, 0, 0, 1, 0, 5, -8, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0}, {-2, 0, 2, 1, 0, 6, -8, 0, 0, 0, 0, 0, 0, 11, -3, -1, -6}, { 0, 0, 0, 1, 0, 0, -8, 15, 0, 0, 0, 0, 0, -5, -3, -1, 3}, /* 171-180 */ {-2, 0, 2, 1, 0, 0, 2, 0,-3, 0, 0, 0, 0, -53, -9, -5, 28}, {-2, 0, 2, 1, 0, 0, 6, -8, 0, 0, 0, 0, 0, 0, 3, 2, 1}, { 1, 0,-1, 1, 0, 0, -1, 0, 1, 0, 0, 0, 0, 4, 0, 0, -2}, { 0, 0, 0, 0, 0, 0, 0, 0, 3,-5, 0, 0, 0, 0, -4, 0, 0}, { 0, 1,-1, 1, 0, 0, -1, 0,-1, 0, 0, 0, 0, -50, 194, 103, 27}, { 0, 0, 0, 0, 0, 0, 0, 0,-1, 0, 0, 0, 1, -13, 52, 28, 7}, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, -91, 248, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 6, 49, 26, -3}, { 0, 1,-1, 1, 0, 0, -1, 0, 1, 0, 0, 0, 0, -6, -47, -25, 3}, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5, 3, 0}, /* 181-190 */ { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 52, 23, 10, -23}, { 0, 1,-1, 2, 0, 0, -1, 0, 0,-1, 0, 0, 0, -3, 0, 0, 1}, { 0, 0, 0, 1, 0, 0, 0, 0, 0,-1, 0, 0, 0, 0, 5, 3, 0}, { 0,-1, 1, 0, 0, 0, 1, 0, 0,-1, 0, 0, 0, -4, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, -7, 13, 0, 0, 0, 0, 2, -4, 8, 3, 2}, { 0, 0, 0, 0, 0, 0, 7,-13, 0, 0, 0, 0, 0, 10, 0, 0, 0}, { 2, 0,-2, 1, 0, 0, -5, 6, 0, 0, 0, 0, 0, 3, 0, 0, -2}, { 0, 2,-2, 1, 0, 0, -8, 11, 0, 0, 0, 0, 0, 0, 8, 4, 0}, { 0, 2,-2, 1,-1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 8, 4, 1}, {-2, 0, 2, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0, -4, 0, 0, 0}, /* 191-200 */ { 0, 0, 0, 0, 0, 0, 0, 0, 2,-2, 0, 0, 0, -4, 0, 0, 0}, { 0, 1,-1, 1, 0, 0, -1, 0, 0, 3, 0, 0, 0, -8, 4, 2, 4}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 8, -4, -2, -4}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 15, 7, 0}, {-2, 0, 2, 0, 0, 3, -3, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0}, { 0, 0, 0, 2, 0, 0, -4, 8,-3, 0, 0, 0, 0, 0, -7, -3, 0}, { 0, 0, 0, 2, 0, 0, 4, -8, 3, 0, 0, 0, 0, 0, -7, -3, 0}, { 2, 0,-2, 1, 0, 0, -2, 0, 2, 0, 0, 0, 0, 54, 0, 0, -29}, { 0, 1,-1, 2, 0, 0, -1, 0, 2, 0, 0, 0, 0, 0, 10, 4, 0}, { 0, 1,-1, 2, 0, 0, 0, -2, 0, 0, 0, 0, 0, -7, 0, 0, 3}, /* 201-210 */ { 0, 0, 0, 1, 0, 0, 1, -2, 0, 0, 0, 0, 0, -37, 35, 19, 20}, { 0,-1, 1, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, 0, 4, 0, 0}, { 0,-1, 1, 0, 0, 0, 1, 0, 0,-2, 0, 0, 0, -4, 9, 0, 0}, { 0, 2,-2, 1, 0, 0, -2, 0, 0, 2, 0, 0, 0, 8, 0, 0, -4}, { 0, 1,-1, 1, 0, 3, -6, 0, 0, 0, 0, 0, 0, -9, -14, -8, 5}, { 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, 1, -3, -9, -5, 3}, { 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, 0, -145, 47, 0, 0}, { 0, 1,-1, 1, 0, -3, 4, 0, 0, 0, 0, 0, 0, -10, 40, 21, 5}, { 0, 0, 0, 0, 0, -3, 5, 0, 0, 0, 0, 0, 1, 11, -49, -26, -7}, { 0, 0, 0, 0, 0, -3, 5, 0, 0, 0, 0, 0, 2,-2150, 0, 0, 932}, /* 211-220 */ { 0, 2,-2, 2, 0, -3, 3, 0, 0, 0, 0, 0, 0, -12, 0, 0, 5}, { 0, 0, 0, 0, 0, -3, 5, 0, 0, 0, 0, 0, 2, 85, 0, 0, -37}, { 0, 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, 1, 4, 0, 0, -2}, { 0, 1,-1, 1, 0, 0, 1, -4, 0, 0, 0, 0, 0, 3, 0, 0, -2}, { 0, 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, 0, -86, 153, 0, 0}, { 0, 0, 0, 0, 0, 0, -2, 4, 0, 0, 0, 0, 1, -6, 9, 5, 3}, { 0, 1,-1, 1, 0, 0, -3, 4, 0, 0, 0, 0, 0, 9, -13, -7, -5}, { 0, 0, 0, 0, 0, 0, -2, 4, 0, 0, 0, 0, 1, -8, 12, 6, 4}, { 0, 0, 0, 0, 0, 0, -2, 4, 0, 0, 0, 0, 2, -51, 0, 0, 22}, { 0, 0, 0, 0, 0, -5, 8, 0, 0, 0, 0, 0, 2, -11,-268, -116, 5}, /* 221-230 */ { 0, 2,-2, 2, 0, -5, 6, 0, 0, 0, 0, 0, 0, 0, 12, 5, 0}, { 0, 0, 0, 0, 0, -5, 8, 0, 0, 0, 0, 0, 2, 0, 7, 3, 0}, { 0, 0, 0, 0, 0, -5, 8, 0, 0, 0, 0, 0, 1, 31, 6, 3, -17}, { 0, 1,-1, 1, 0, -5, 7, 0, 0, 0, 0, 0, 0, 140, 27, 14, -75}, { 0, 0, 0, 0, 0, -5, 8, 0, 0, 0, 0, 0, 1, 57, 11, 6, -30}, { 0, 0, 0, 0, 0, 5, -8, 0, 0, 0, 0, 0, 0, -14, -39, 0, 0}, { 0, 1,-1, 2, 0, 0, -1, 0,-1, 0, 0, 0, 0, 0, -6, -2, 0}, { 0, 0, 0, 1, 0, 0, 0, 0,-1, 0, 0, 0, 0, 4, 15, 8, -2}, { 0,-1, 1, 0, 0, 0, 1, 0,-1, 0, 0, 0, 0, 0, 4, 0, 0}, { 0, 2,-2, 1, 0, 0, -2, 0, 1, 0, 0, 0, 0, -3, 0, 0, 1}, /* 231-240 */ { 0, 0, 0, 0, 0, 0, -6, 11, 0, 0, 0, 0, 2, 0, 11, 5, 0}, { 0, 0, 0, 0, 0, 0, 6,-11, 0, 0, 0, 0, 0, 9, 6, 0, 0}, { 0, 0, 0, 0,-1, 0, 4, 0, 0, 0, 0, 0, 2, -4, 10, 4, 2}, { 0, 0, 0, 0, 1, 0, -4, 0, 0, 0, 0, 0, 0, 5, 3, 0, 0}, { 2, 0,-2, 1, 0, -3, 3, 0, 0, 0, 0, 0, 0, 16, 0, 0, -9}, {-2, 0, 2, 0, 0, 0, 2, 0, 0,-2, 0, 0, 0, -3, 0, 0, 0}, { 0, 2,-2, 1, 0, 0, -7, 9, 0, 0, 0, 0, 0, 0, 3, 2, -1}, { 0, 0, 0, 0, 0, 0, 0, 0, 4,-5, 0, 0, 2, 7, 0, 0, -3}, { 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, -25, 22, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 42, 223, 119, -22}, /* 241-250 */ { 0, 1,-1, 1, 0, 0, -1, 0, 2, 0, 0, 0, 0, -27,-143, -77, 14}, { 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 9, 49, 26, -5}, { 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2,-1166, 0, 0, 505}, { 0, 2,-2, 2, 0, 0, -2, 0, 2, 0, 0, 0, 0, -5, 0, 0, 2}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 2, -6, 0, 0, 3}, { 0, 0, 0, 1, 0, 3, -5, 0, 0, 0, 0, 0, 0, -8, 0, 1, 4}, { 0,-1, 1, 0, 0, 3, -4, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0}, { 0, 2,-2, 1, 0, -3, 3, 0, 0, 0, 0, 0, 0, 117, 0, 0, -63}, { 0, 0, 0, 1, 0, 0, 2, -4, 0, 0, 0, 0, 0, -4, 8, 4, 2}, { 0, 2,-2, 1, 0, 0, -4, 4, 0, 0, 0, 0, 0, 3, 0, 0, -2}, /* 251-260 */ { 0, 1,-1, 2, 0, -5, 7, 0, 0, 0, 0, 0, 0, -5, 0, 0, 2}, { 0, 0, 0, 0, 0, 0, 3, -6, 0, 0, 0, 0, 0, 0, 31, 0, 0}, { 0, 0, 0, 0, 0, 0, -3, 6, 0, 0, 0, 0, 1, -5, 0, 1, 3}, { 0, 1,-1, 1, 0, 0, -4, 6, 0, 0, 0, 0, 0, 4, 0, 0, -2}, { 0, 0, 0, 0, 0, 0, -3, 6, 0, 0, 0, 0, 1, -4, 0, 0, 2}, { 0, 0, 0, 0, 0, 0, -3, 6, 0, 0, 0, 0, 2, -24, -13, -6, 10}, { 0,-1, 1, 0, 0, 2, -2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0}, { 0, 0, 0, 1, 0, 2, -3, 0, 0, 0, 0, 0, 0, 0, -32, -17, 0}, { 0, 0, 0, 0, 0, 0, -5, 9, 0, 0, 0, 0, 2, 8, 12, 5, -3}, { 0, 0, 0, 0, 0, 0, -5, 9, 0, 0, 0, 0, 1, 3, 0, 0, -1}, /* 261-270 */ { 0, 0, 0, 0, 0, 0, 5, -9, 0, 0, 0, 0, 0, 7, 13, 0, 0}, { 0,-1, 1, 0, 0, 0, 1, 0,-2, 0, 0, 0, 0, -3, 16, 0, 0}, { 0, 2,-2, 1, 0, 0, -2, 0, 2, 0, 0, 0, 0, 50, 0, 0, -27}, {-2, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -5, -3, 0}, { 0,-2, 2, 0, 0, 3, -3, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0}, { 0, 0, 0, 0, 0, -6, 10, 0, 0, 0, 0, 0, 1, 0, 5, 3, 1}, { 0, 0, 0, 0, 0, -6, 10, 0, 0, 0, 0, 0, 2, 24, 5, 2, -11}, { 0, 0, 0, 0, 0, -2, 3, 0, 0, 0, 0, 0, 2, 5, -11, -5, -2}, { 0, 0, 0, 0, 0, -2, 3, 0, 0, 0, 0, 0, 1, 30, -3, -2, -16}, { 0, 1,-1, 1, 0, -2, 2, 0, 0, 0, 0, 0, 0, 18, 0, 0, -9}, /* 271-280 */ { 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 0, 0, 0, 8, 614, 0, 0}, { 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 0, 0, 1, 3, -3, -1, -2}, { 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 6, 17, 9, -3}, { 0, 1,-1, 1, 0, 0, -1, 0, 3, 0, 0, 0, 0, -3, -9, -5, 2}, { 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 6, 3, -1}, { 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2, -127, 21, 9, 55}, { 0, 0, 0, 0, 0, 0, 4, -8, 0, 0, 0, 0, 0, 3, 5, 0, 0}, { 0, 0, 0, 0, 0, 0, -4, 8, 0, 0, 0, 0, 2, -6, -10, -4, 3}, { 0,-2, 2, 0, 0, 0, 2, 0,-2, 0, 0, 0, 0, 5, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, -4, 7, 0, 0, 0, 0, 2, 16, 9, 4, -7}, /* 281-290 */ { 0, 0, 0, 0, 0, 0, -4, 7, 0, 0, 0, 0, 1, 3, 0, 0, -2}, { 0, 0, 0, 0, 0, 0, 4, -7, 0, 0, 0, 0, 0, 0, 22, 0, 0}, { 0, 0, 0, 1, 0, -2, 3, 0, 0, 0, 0, 0, 0, 0, 19, 10, 0}, { 0, 2,-2, 1, 0, 0, -2, 0, 3, 0, 0, 0, 0, 7, 0, 0, -4}, { 0, 0, 0, 0, 0, 0, -5, 10, 0, 0, 0, 0, 2, 0, -5, -2, 0}, { 0, 0, 0, 1, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 2, -9, 3, 1, 4}, { 0, 0, 0, 0, 0, 0, -3, 5, 0, 0, 0, 0, 2, 17, 0, 0, -7}, { 0, 0, 0, 0, 0, 0, -3, 5, 0, 0, 0, 0, 1, 0, -3, -2, -1}, { 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, -20, 34, 0, 0}, /* 291-300 */ { 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 1, -10, 0, 1, 5}, { 0, 1,-1, 1, 0, 1, -3, 0, 0, 0, 0, 0, 0, -4, 0, 0, 2}, { 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 0, 22, -87, 0, 0}, { 0, 0, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 1, -4, 0, 0, 2}, { 0, 0, 0, 0, 0, -1, 2, 0, 0, 0, 0, 0, 2, -3, -6, -2, 1}, { 0, 0, 0, 0, 0, -7, 11, 0, 0, 0, 0, 0, 2, -16, -3, -1, 7}, { 0, 0, 0, 0, 0, -7, 11, 0, 0, 0, 0, 0, 1, 0, -3, -2, 0}, { 0,-2, 2, 0, 0, 4, -4, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 0, 0, -68, 39, 0, 0}, { 0, 2,-2, 1, 0, -4, 4, 0, 0, 0, 0, 0, 0, 27, 0, 0, -14}, /* 301-310 */ { 0,-1, 1, 0, 0, 4, -5, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0}, { 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, -25, 0, 0, 0}, { 0, 0, 0, 0, 0, -4, 7, 0, 0, 0, 0, 0, 1, -12, -3, -2, 6}, { 0, 1,-1, 1, 0, -4, 6, 0, 0, 0, 0, 0, 0, 3, 0, 0, -1}, { 0, 0, 0, 0, 0, -4, 7, 0, 0, 0, 0, 0, 2, 3, 66, 29, -1}, { 0, 0, 0, 0, 0, -4, 6, 0, 0, 0, 0, 0, 2, 490, 0, 0,-213}, { 0, 0, 0, 0, 0, -4, 6, 0, 0, 0, 0, 0, 1, -22, 93, 49, 12}, { 0, 1,-1, 1, 0, -4, 5, 0, 0, 0, 0, 0, 0, -7, 28, 15, 4}, { 0, 0, 0, 0, 0, -4, 6, 0, 0, 0, 0, 0, 1, -3, 13, 7, 2}, { 0, 0, 0, 0, 0, 4, -6, 0, 0, 0, 0, 0, 0, -46, 14, 0, 0}, /* 311-320 */ {-2, 0, 2, 0, 0, 2, -2, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 1, 0, 0}, { 0,-1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0}, { 0, 0, 0, 1, 0, 1, -1, 0, 0, 0, 0, 0, 0, -28, 0, 0, 15}, { 0, 0, 0, 0, 0, 0, -1, 0, 5, 0, 0, 0, 2, 5, 0, 0, -2}, { 0, 0, 0, 0, 0, 0, 1, -3, 0, 0, 0, 0, 0, 0, 3, 0, 0}, { 0, 0, 0, 0, 0, 0, -1, 3, 0, 0, 0, 0, 2, -11, 0, 0, 5}, { 0, 0, 0, 0, 0, 0, -7, 12, 0, 0, 0, 0, 2, 0, 3, 1, 0}, { 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 2, -3, 0, 0, 1}, { 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 1, 25, 106, 57, -13}, /* 321-330 */ { 0, 1,-1, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 5, 21, 11, -3}, { 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 1485, 0, 0, 0}, { 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 1, -7, -32, -17, 4}, { 0, 1,-1, 1, 0, 1, -2, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0}, { 0, 0, 0, 0, 0, 0, -2, 5, 0, 0, 0, 0, 2, -6, -3, -2, 3}, { 0, 0, 0, 0, 0, 0, -1, 0, 4, 0, 0, 0, 2, 30, -6, -2, -13}, { 0, 0, 0, 0, 0, 0, 1, 0,-4, 0, 0, 0, 0, -4, 4, 0, 0}, { 0, 0, 0, 1, 0, -1, 1, 0, 0, 0, 0, 0, 0, -19, 0, 0, 10}, { 0, 0, 0, 0, 0, 0, -6, 10, 0, 0, 0, 0, 2, 0, 4, 2, -1}, { 0, 0, 0, 0, 0, 0, -6, 10, 0, 0, 0, 0, 0, 0, 3, 0, 0}, /* 331-340 */ { 0, 2,-2, 1, 0, 0, -3, 0, 3, 0, 0, 0, 0, 4, 0, 0, -2}, { 0, 0, 0, 0, 0, 0, -3, 7, 0, 0, 0, 0, 2, 0, -3, -1, 0}, {-2, 0, 2, 0, 0, 4, -4, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, -5, 8, 0, 0, 0, 0, 2, 5, 3, 1, -2}, { 0, 0, 0, 0, 0, 0, 5, -8, 0, 0, 0, 0, 0, 0, 11, 0, 0}, { 0, 0, 0, 0, 0, 0, -1, 0, 3, 0, 0, 0, 2, 118, 0, 0, -52}, { 0, 0, 0, 0, 0, 0, -1, 0, 3, 0, 0, 0, 1, 0, -5, -3, 0}, { 0, 0, 0, 0, 0, 0, 1, 0,-3, 0, 0, 0, 0, -28, 36, 0, 0}, { 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, 0, 0, 5, -5, 0, 0}, { 0, 0, 0, 0, 0, -2, 4, 0, 0, 0, 0, 0, 1, 14, -59, -31, -8}, /* 341-350 */ { 0, 1,-1, 1, 0, -2, 3, 0, 0, 0, 0, 0, 0, 0, 9, 5, 1}, { 0, 0, 0, 0, 0, -2, 4, 0, 0, 0, 0, 0, 2, -458, 0, 0, 198}, { 0, 0, 0, 0, 0, -6, 9, 0, 0, 0, 0, 0, 2, 0, -45, -20, 0}, { 0, 0, 0, 0, 0, -6, 9, 0, 0, 0, 0, 0, 1, 9, 0, 0, -5}, { 0, 0, 0, 0, 0, 6, -9, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0}, { 0, 0, 0, 1, 0, 0, 1, 0,-2, 0, 0, 0, 0, 0, -4, -2, -1}, { 0, 2,-2, 1, 0, -2, 2, 0, 0, 0, 0, 0, 0, 11, 0, 0, -6}, { 0, 0, 0, 0, 0, 0, -4, 6, 0, 0, 0, 0, 2, 6, 0, 0, -2}, { 0, 0, 0, 0, 0, 0, 4, -6, 0, 0, 0, 0, 0, -16, 23, 0, 0}, { 0, 0, 0, 1, 0, 3, -4, 0, 0, 0, 0, 0, 0, 0, -4, -2, 0}, /* 351-360 */ { 0, 0, 0, 0, 0, 0, -1, 0, 2, 0, 0, 0, 2, -5, 0, 0, 2}, { 0, 0, 0, 0, 0, 0, 1, 0,-2, 0, 0, 0, 0, -166, 269, 0, 0}, { 0, 0, 0, 1, 0, 0, 1, 0,-1, 0, 0, 0, 0, 15, 0, 0, -8}, { 0, 0, 0, 0, 0, -5, 9, 0, 0, 0, 0, 0, 2, 10, 0, 0, -4}, { 0, 0, 0, 0, 0, 0, 3, -4, 0, 0, 0, 0, 0, -78, 45, 0, 0}, { 0, 0, 0, 0, 0, -3, 4, 0, 0, 0, 0, 0, 2, 0, -5, -2, 0}, { 0, 0, 0, 0, 0, -3, 4, 0, 0, 0, 0, 0, 1, 7, 0, 0, -4}, { 0, 0, 0, 0, 0, 3, -4, 0, 0, 0, 0, 0, 0, -5, 328, 0, 0}, { 0, 0, 0, 0, 0, 3, -4, 0, 0, 0, 0, 0, 1, 3, 0, 0, -2}, { 0, 0, 0, 1, 0, 0, 2, -2, 0, 0, 0, 0, 0, 5, 0, 0, -2}, /* 361-370 */ { 0, 0, 0, 1, 0, 0, -1, 0, 2, 0, 0, 0, 0, 0, 3, 1, 0}, { 0, 0, 0, 0, 0, 0, 1, 0, 0,-3, 0, 0, 0, -3, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 1, 0, 1,-5, 0, 0, 0, -3, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 1, 0, -4, -2, 0}, { 0, 0, 0, 0, 0, 0, 1, 0,-1, 0, 0, 0, 0,-1223, -26, 0, 0}, { 0, 0, 0, 0, 0, 0, 1, 0,-1, 0, 0, 0, 1, 0, 7, 3, 0}, { 0, 0, 0, 0, 0, 0, 1, 0,-3, 5, 0, 0, 0, 3, 0, 0, 0}, { 0, 0, 0, 1, 0, -3, 4, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0}, { 0, 0, 0, 0, 0, 0, 1, 0, 0,-2, 0, 0, 0, -6, 20, 0, 0}, { 0, 0, 0, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, -368, 0, 0, 0}, /* 371-380 */ { 0, 0, 0, 0, 0, 0, 1, 0, 0,-1, 0, 0, 0, -75, 0, 0, 0}, { 0, 0, 0, 1, 0, 0, -1, 0, 1, 0, 0, 0, 0, 11, 0, 0, -6}, { 0, 0, 0, 1, 0, 0, -2, 2, 0, 0, 0, 0, 0, 3, 0, 0, -2}, { 0, 0, 0, 0, 0, -8, 14, 0, 0, 0, 0, 0, 2, -3, 0, 0, 1}, { 0, 0, 0, 0, 0, 0, 1, 0, 2,-5, 0, 0, 0, -13, -30, 0, 0}, { 0, 0, 0, 0, 0, 0, 5, -8, 3, 0, 0, 0, 0, 21, 3, 0, 0}, { 0, 0, 0, 0, 0, 0, 5, -8, 3, 0, 0, 0, 2, -3, 0, 0, 1}, { 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, -4, 0, 0, 2}, { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 8, -27, 0, 0}, { 0, 0, 0, 0, 0, 0, 3, -8, 3, 0, 0, 0, 0, -19, -11, 0, 0}, /* 381-390 */ { 0, 0, 0, 0, 0, 0, -3, 8,-3, 0, 0, 0, 2, -4, 0, 0, 2}, { 0, 0, 0, 0, 0, 0, 1, 0,-2, 5, 0, 0, 2, 0, 5, 2, 0}, { 0, 0, 0, 0, 0, -8, 12, 0, 0, 0, 0, 0, 2, -6, 0, 0, 2}, { 0, 0, 0, 0, 0, -8, 12, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 1, 0, 1,-2, 0, 0, 0, -1, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 2, -14, 0, 0, 6}, { 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 6, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, -74, 0, 0, 32}, { 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 2, 0, -3, -1, 0}, { 0, 2,-2, 1, 0, -5, 5, 0, 0, 0, 0, 0, 0, 4, 0, 0, -2}, /* 391-400 */ { 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 8, 11, 0, 0}, { 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 3, 2, 0}, { 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2, -262, 0, 0, 114}, { 0, 0, 0, 0, 0, 3, -6, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0}, { 0, 0, 0, 0, 0, -3, 6, 0, 0, 0, 0, 0, 1, -7, 0, 0, 4}, { 0, 0, 0, 0, 0, -3, 6, 0, 0, 0, 0, 0, 2, 0, -27, -12, 0}, { 0, 0, 0, 0, 0, 0, -1, 4, 0, 0, 0, 0, 2, -19, -8, -4, 8}, { 0, 0, 0, 0, 0, -5, 7, 0, 0, 0, 0, 0, 2, 202, 0, 0, -87}, { 0, 0, 0, 0, 0, -5, 7, 0, 0, 0, 0, 0, 1, -8, 35, 19, 5}, { 0, 1,-1, 1, 0, -5, 6, 0, 0, 0, 0, 0, 0, 0, 4, 2, 0}, /* 401-410 */ { 0, 0, 0, 0, 0, 5, -7, 0, 0, 0, 0, 0, 0, 16, -5, 0, 0}, { 0, 2,-2, 1, 0, 0, -1, 0, 1, 0, 0, 0, 0, 5, 0, 0, -3}, { 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, -3, 0, 0}, { 0, 0, 0, 0,-1, 0, 3, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2, -35, -48, -21, 15}, { 0, 0, 0, 0, 0, 0, -2, 6, 0, 0, 0, 0, 2, -3, -5, -2, 1}, { 0, 0, 0, 1, 0, 2, -2, 0, 0, 0, 0, 0, 0, 6, 0, 0, -3}, { 0, 0, 0, 0, 0, 0, -6, 9, 0, 0, 0, 0, 2, 3, 0, 0, -1}, { 0, 0, 0, 0, 0, 0, 6, -9, 0, 0, 0, 0, 0, 0, -5, 0, 0}, { 0, 0, 0, 0, 0, -2, 2, 0, 0, 0, 0, 0, 1, 12, 55, 29, -6}, /* 411-420 */ { 0, 1,-1, 1, 0, -2, 1, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0}, { 0, 0, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, 0, -598, 0, 0, 0}, { 0, 0, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, 1, -3, -13, -7, 1}, { 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 2, -5, -7, -3, 2}, { 0, 0, 0, 0, 0, 0, -5, 7, 0, 0, 0, 0, 2, 3, 0, 0, -1}, { 0, 0, 0, 0, 0, 0, 5, -7, 0, 0, 0, 0, 0, 5, -7, 0, 0}, { 0, 0, 0, 1, 0, -2, 2, 0, 0, 0, 0, 0, 0, 4, 0, 0, -2}, { 0, 0, 0, 0, 0, 0, 4, -5, 0, 0, 0, 0, 0, 16, -6, 0, 0}, { 0, 0, 0, 0, 0, 1, -3, 0, 0, 0, 0, 0, 0, 8, -3, 0, 0}, { 0, 0, 0, 0, 0, -1, 3, 0, 0, 0, 0, 0, 1, 8, -31, -16, -4}, /* 421-430 */ { 0, 1,-1, 1, 0, -1, 2, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0}, { 0, 0, 0, 0, 0, -1, 3, 0, 0, 0, 0, 0, 2, 113, 0, 0, -49}, { 0, 0, 0, 0, 0, -7, 10, 0, 0, 0, 0, 0, 2, 0, -24, -10, 0}, { 0, 0, 0, 0, 0, -7, 10, 0, 0, 0, 0, 0, 1, 4, 0, 0, -2}, { 0, 0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, 27, 0, 0, 0}, { 0, 0, 0, 0, 0, -4, 8, 0, 0, 0, 0, 0, 2, -3, 0, 0, 1}, { 0, 0, 0, 0, 0, -4, 5, 0, 0, 0, 0, 0, 2, 0, -4, -2, 0}, { 0, 0, 0, 0, 0, -4, 5, 0, 0, 0, 0, 0, 1, 5, 0, 0, -2}, { 0, 0, 0, 0, 0, 4, -5, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0}, { 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 2, -13, 0, 0, 6}, /* 431-440 */ { 0, 0, 0, 0, 0, 0, -2, 0, 5, 0, 0, 0, 2, 5, 0, 0, -2}, { 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, -18, -10, -4, 8}, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -4, -28, 0, 0}, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, -5, 6, 3, 2}, { 0, 0, 0, 0, 0, -9, 13, 0, 0, 0, 0, 0, 2, -3, 0, 0, 1}, { 0, 0, 0, 0, 0, 0, -1, 5, 0, 0, 0, 0, 2, -5, -9, -4, 2}, { 0, 0, 0, 0, 0, 0, -2, 0, 4, 0, 0, 0, 2, 17, 0, 0, -7}, { 0, 0, 0, 0, 0, 0, 2, 0,-4, 0, 0, 0, 0, 11, 4, 0, 0}, { 0, 0, 0, 0, 0, 0, -2, 7, 0, 0, 0, 0, 2, 0, -6, -2, 0}, { 0, 0, 0, 0, 0, 0, 2, 0,-3, 0, 0, 0, 0, 83, 15, 0, 0}, /* 441-450 */ { 0, 0, 0, 0, 0, -2, 5, 0, 0, 0, 0, 0, 1, -4, 0, 0, 2}, { 0, 0, 0, 0, 0, -2, 5, 0, 0, 0, 0, 0, 2, 0,-114, -49, 0}, { 0, 0, 0, 0, 0, -6, 8, 0, 0, 0, 0, 0, 2, 117, 0, 0, -51}, { 0, 0, 0, 0, 0, -6, 8, 0, 0, 0, 0, 0, 1, -5, 19, 10, 2}, { 0, 0, 0, 0, 0, 6, -8, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0}, { 0, 0, 0, 1, 0, 0, 2, 0,-2, 0, 0, 0, 0, -3, 0, 0, 2}, { 0, 0, 0, 0, 0, 0, -3, 9, 0, 0, 0, 0, 2, 0, -3, -1, 0}, { 0, 0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 0, 3, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 2, 0, -6, -2, 0}, { 0, 0, 0, 0, 0, 0, 2, 0,-2, 0, 0, 0, 0, 393, 3, 0, 0}, /* 451-460 */ { 0, 0, 0, 0, 0, 0, 2, 0,-2, 0, 0, 0, 1, -4, 21, 11, 2}, { 0, 0, 0, 0, 0, 0, 2, 0,-2, 0, 0, 0, 2, -6, 0, -1, 3}, { 0, 0, 0, 0, 0, -5, 10, 0, 0, 0, 0, 0, 2, -3, 8, 4, 1}, { 0, 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0, 8, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 2, 18, -29, -13, -8}, { 0, 0, 0, 0, 0, -3, 3, 0, 0, 0, 0, 0, 1, 8, 34, 18, -4}, { 0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0}, { 0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, 1, 3, 12, 6, -1}, { 0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, 2, 54, -15, -7, -24}, { 0, 0, 0, 0, 0, 0, 2, 0, 0,-3, 0, 0, 0, 0, 3, 0, 0}, /* 461-470 */ { 0, 0, 0, 0, 0, 0, -5, 13, 0, 0, 0, 0, 2, 3, 0, 0, -1}, { 0, 0, 0, 0, 0, 0, 2, 0,-1, 0, 0, 0, 0, 0, 35, 0, 0}, { 0, 0, 0, 0, 0, 0, 2, 0,-1, 0, 0, 0, 2, -154, -30, -13, 67}, { 0, 0, 0, 0, 0, 0, 2, 0, 0,-2, 0, 0, 0, 15, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 2, 0, 0,-2, 0, 0, 1, 0, 4, 2, 0}, { 0, 0, 0, 0, 0, 0, 3, -2, 0, 0, 0, 0, 0, 0, 9, 0, 0}, { 0, 0, 0, 0, 0, 0, 3, -2, 0, 0, 0, 0, 2, 80, -71, -31, -35}, { 0, 0, 0, 0, 0, 0, 2, 0, 0,-1, 0, 0, 2, 0, -20, -9, 0}, { 0, 0, 0, 0, 0, 0, -6, 15, 0, 0, 0, 0, 2, 11, 5, 2, -5}, { 0, 0, 0, 0, 0, -8, 15, 0, 0, 0, 0, 0, 2, 61, -96, -42, -27}, /* 471-480 */ { 0, 0, 0, 0, 0, -3, 9, -4, 0, 0, 0, 0, 2, 14, 9, 4, -6}, { 0, 0, 0, 0, 0, 0, 2, 0, 2,-5, 0, 0, 2, -11, -6, -3, 5}, { 0, 0, 0, 0, 0, 0, -2, 8,-1,-5, 0, 0, 2, 0, -3, -1, 0}, { 0, 0, 0, 0, 0, 0, 6, -8, 3, 0, 0, 0, 2, 123,-415, -180, -53}, { 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35}, { 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 7, -32, -17, -4}, { 0, 1,-1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -9, -5, 0}, { 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, -4, 2, 0}, { 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, -89, 0, 0, 38}, /* 481-490 */ { 0, 0, 0, 0, 0, 0, -6, 16,-4,-5, 0, 0, 2, 0, -86, -19, -6}, { 0, 0, 0, 0, 0, 0, -2, 8,-3, 0, 0, 0, 2, 0, 0, -19, 6}, { 0, 0, 0, 0, 0, 0, -2, 8,-3, 0, 0, 0, 2, -123,-416, -180, 53}, { 0, 0, 0, 0, 0, 0, 6, -8, 1, 5, 0, 0, 2, 0, -3, -1, 0}, { 0, 0, 0, 0, 0, 0, 2, 0,-2, 5, 0, 0, 2, 12, -6, -3, -5}, { 0, 0, 0, 0, 0, 3, -5, 4, 0, 0, 0, 0, 2, -13, 9, 4, 6}, { 0, 0, 0, 0, 0, -8, 11, 0, 0, 0, 0, 0, 2, 0, -15, -7, 0}, { 0, 0, 0, 0, 0, -8, 11, 0, 0, 0, 0, 0, 1, 3, 0, 0, -1}, { 0, 0, 0, 0, 0, -8, 11, 0, 0, 0, 0, 0, 2, -62, -97, -42, 27}, { 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 2, -11, 5, 2, 5}, /* 491-500 */ { 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 2, 0, -19, -8, 0}, { 0, 0, 0, 0, 0, 3, -3, 0, 2, 0, 0, 0, 2, -3, 0, 0, 1}, { 0, 2,-2, 1, 0, 0, 4, -8, 3, 0, 0, 0, 0, 0, 4, 2, 0}, { 0, 1,-1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0}, { 0, 2,-2, 1, 0, 0, -4, 8,-3, 0, 0, 0, 0, 0, 4, 2, 0}, { 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 2, -85, -70, -31, 37}, { 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2, 163, -12, -5, -72}, { 0, 0, 0, 0, 0, -3, 7, 0, 0, 0, 0, 0, 2, -63, -16, -7, 28}, { 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 2, -21, -32, -14, 9}, { 0, 0, 0, 0, 0, -5, 6, 0, 0, 0, 0, 0, 2, 0, -3, -1, 0}, /* 501-510 */ { 0, 0, 0, 0, 0, -5, 6, 0, 0, 0, 0, 0, 1, 3, 0, 0, -2}, { 0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0}, { 0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 0, 2, 3, 10, 4, -1}, { 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 3, 0, 0, -1}, { 0, 0, 0, 0, 0, 0, -1, 6, 0, 0, 0, 0, 2, 0, -7, -3, 0}, { 0, 0, 0, 0, 0, 0, 7, -9, 0, 0, 0, 0, 2, 0, -4, -2, 0}, { 0, 0, 0, 0, 0, 2, -1, 0, 0, 0, 0, 0, 0, 6, 19, 0, 0}, { 0, 0, 0, 0, 0, 2, -1, 0, 0, 0, 0, 0, 2, 5,-173, -75, -2}, { 0, 0, 0, 0, 0, 0, 6, -7, 0, 0, 0, 0, 2, 0, -7, -3, 0}, { 0, 0, 0, 0, 0, 0, 5, -5, 0, 0, 0, 0, 2, 7, -12, -5, -3}, /* 511-520 */ { 0, 0, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 1, -3, 0, 0, 2}, { 0, 0, 0, 0, 0, -1, 4, 0, 0, 0, 0, 0, 2, 3, -4, -2, -1}, { 0, 0, 0, 0, 0, -7, 9, 0, 0, 0, 0, 0, 2, 74, 0, 0, -32}, { 0, 0, 0, 0, 0, -7, 9, 0, 0, 0, 0, 0, 1, -3, 12, 6, 2}, { 0, 0, 0, 0, 0, 0, 4, -3, 0, 0, 0, 0, 2, 26, -14, -6, -11}, { 0, 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 2, 19, 0, 0, -8}, { 0, 0, 0, 0, 0, -4, 4, 0, 0, 0, 0, 0, 1, 6, 24, 13, -3}, { 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0}, { 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0, 1, 0, -10, -5, 0}, { 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0, 2, 11, -3, -1, -5}, /* 521-530 */ { 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 2, 3, 0, 1, -1}, { 0, 0, 0, 0, 0, 0, -3, 0, 5, 0, 0, 0, 2, 3, 0, 0, -1}, { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0}, { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 5, -23, -12, -3}, { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 2, -339, 0, 0, 147}, { 0, 0, 0, 0, 0, -9, 12, 0, 0, 0, 0, 0, 2, 0, -10, -5, 0}, { 0, 0, 0, 0, 0, 0, 3, 0,-4, 0, 0, 0, 0, 5, 0, 0, 0}, { 0, 2,-2, 1, 0, 1, -1, 0, 0, 0, 0, 0, 0, 3, 0, 0, -1}, { 0, 0, 0, 0, 0, 0, 7, -8, 0, 0, 0, 0, 2, 0, -4, -2, 0}, { 0, 0, 0, 0, 0, 0, 3, 0,-3, 0, 0, 0, 0, 18, -3, 0, 0}, /* 531-540 */ { 0, 0, 0, 0, 0, 0, 3, 0,-3, 0, 0, 0, 2, 9, -11, -5, -4}, { 0, 0, 0, 0, 0, -2, 6, 0, 0, 0, 0, 0, 2, -8, 0, 0, 4}, { 0, 0, 0, 0, 0, -6, 7, 0, 0, 0, 0, 0, 1, 3, 0, 0, -1}, { 0, 0, 0, 0, 0, 6, -7, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0}, { 0, 0, 0, 0, 0, 0, 6, -6, 0, 0, 0, 0, 2, 6, -9, -4, -2}, { 0, 0, 0, 0, 0, 0, 3, 0,-2, 0, 0, 0, 0, -4, -12, 0, 0}, { 0, 0, 0, 0, 0, 0, 3, 0,-2, 0, 0, 0, 2, 67, -91, -39, -29}, { 0, 0, 0, 0, 0, 0, 5, -4, 0, 0, 0, 0, 2, 30, -18, -8, -13}, { 0, 0, 0, 0, 0, 3, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 3, -2, 0, 0, 0, 0, 0, 2, 0,-114, -50, 0}, /* 541-550 */ { 0, 0, 0, 0, 0, 0, 3, 0,-1, 0, 0, 0, 2, 0, 0, 0, 23}, { 0, 0, 0, 0, 0, 0, 3, 0,-1, 0, 0, 0, 2, 517, 16, 7,-224}, { 0, 0, 0, 0, 0, 0, 3, 0, 0,-2, 0, 0, 2, 0, -7, -3, 0}, { 0, 0, 0, 0, 0, 0, 4, -2, 0, 0, 0, 0, 2, 143, -3, -1, -62}, { 0, 0, 0, 0, 0, 0, 3, 0, 0,-1, 0, 0, 2, 29, 0, 0, -13}, { 0, 2,-2, 1, 0, 0, 1, 0,-1, 0, 0, 0, 0, -4, 0, 0, 2}, { 0, 0, 0, 0, 0, -8, 16, 0, 0, 0, 0, 0, 2, -6, 0, 0, 3}, { 0, 0, 0, 0, 0, 0, 3, 0, 2,-5, 0, 0, 2, 5, 12, 5, -2}, { 0, 0, 0, 0, 0, 0, 7, -8, 3, 0, 0, 0, 2, -25, 0, 0, 11}, { 0, 0, 0, 0, 0, 0, -5, 16,-4,-5, 0, 0, 2, -3, 0, 0, 1}, /* 551-560 */ { 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2, 0, 4, 2, 0}, { 0, 0, 0, 0, 0, 0, -1, 8,-3, 0, 0, 0, 2, -22, 12, 5, 10}, { 0, 0, 0, 0, 0, -8, 10, 0, 0, 0, 0, 0, 2, 50, 0, 0, -22}, { 0, 0, 0, 0, 0, -8, 10, 0, 0, 0, 0, 0, 1, 0, 7, 4, 0}, { 0, 0, 0, 0, 0, -8, 10, 0, 0, 0, 0, 0, 2, 0, 3, 1, 0}, { 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, -4, 4, 2, 2}, { 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 2, -5, -11, -5, 2}, { 0, 0, 0, 0, 0, -3, 8, 0, 0, 0, 0, 0, 2, 0, 4, 2, 0}, { 0, 0, 0, 0, 0, -5, 5, 0, 0, 0, 0, 0, 1, 4, 17, 9, -2}, { 0, 0, 0, 0, 0, 5, -5, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0}, /* 561-570 */ { 0, 0, 0, 0, 0, 5, -5, 0, 0, 0, 0, 0, 1, 0, -4, -2, 0}, { 0, 0, 0, 0, 0, 5, -5, 0, 0, 0, 0, 0, 2, -8, 0, 0, 4}, { 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0}, { 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1, 4, -15, -8, -2}, { 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 370, -8, 0,-160}, { 0, 0, 0, 0, 0, 0, 7, -7, 0, 0, 0, 0, 2, 0, 0, -3, 0}, { 0, 0, 0, 0, 0, 0, 7, -7, 0, 0, 0, 0, 2, 0, 3, 1, 0}, { 0, 0, 0, 0, 0, 0, 6, -5, 0, 0, 0, 0, 2, -6, 3, 1, 3}, { 0, 0, 0, 0, 0, 7, -8, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0}, { 0, 0, 0, 0, 0, 0, 5, -3, 0, 0, 0, 0, 2, -10, 0, 0, 4}, /* 571-580 */ { 0, 0, 0, 0, 0, 4, -3, 0, 0, 0, 0, 0, 2, 0, 9, 4, 0}, { 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 2, 4, 17, 7, -2}, { 0, 0, 0, 0, 0, -9, 11, 0, 0, 0, 0, 0, 2, 34, 0, 0, -15}, { 0, 0, 0, 0, 0, -9, 11, 0, 0, 0, 0, 0, 1, 0, 5, 3, 0}, { 0, 0, 0, 0, 0, 0, 4, 0,-4, 0, 0, 0, 2, -5, 0, 0, 2}, { 0, 0, 0, 0, 0, 0, 4, 0,-3, 0, 0, 0, 2, -37, -7, -3, 16}, { 0, 0, 0, 0, 0, -6, 6, 0, 0, 0, 0, 0, 1, 3, 13, 7, -2}, { 0, 0, 0, 0, 0, 6, -6, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0}, { 0, 0, 0, 0, 0, 6, -6, 0, 0, 0, 0, 0, 1, 0, -3, -2, 0}, { 0, 0, 0, 0, 0, 0, 4, 0,-2, 0, 0, 0, 2, -184, -3, -1, 80}, /* 581-590 */ { 0, 0, 0, 0, 0, 0, 6, -4, 0, 0, 0, 0, 2, -3, 0, 0, 1}, { 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0}, { 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 0, 1, 0, -10, -6, -1}, { 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 0, 2, 31, -6, 0, -13}, { 0, 0, 0, 0, 0, 0, 4, 0,-1, 0, 0, 0, 2, -3, -32, -14, 1}, { 0, 0, 0, 0, 0, 0, 4, 0, 0,-2, 0, 0, 2, -7, 0, 0, 3}, { 0, 0, 0, 0, 0, 0, 5, -2, 0, 0, 0, 0, 2, 0, -8, -4, 0}, { 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 3, -4, 0, 0}, { 0, 0, 0, 0, 0, 8, -9, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0}, { 0, 0, 0, 0, 0, 5, -4, 0, 0, 0, 0, 0, 2, 0, 3, 1, 0}, /* 591-600 */ { 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 2, 19, -23, -10, 2}, { 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, -10}, { 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 1, 0, 3, 2, 0}, { 0, 0, 0, 0, 0, -7, 7, 0, 0, 0, 0, 0, 1, 0, 9, 5, -1}, { 0, 0, 0, 0, 0, 7, -7, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0}, { 0, 0, 0, 0, 0, 4, -2, 0, 0, 0, 0, 0, 1, 0, -7, -4, 0}, { 0, 0, 0, 0, 0, 4, -2, 0, 0, 0, 0, 0, 2, 8, -4, 0, -4}, { 0, 0, 0, 0, 0, 4, -2, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0}, { 0, 0, 0, 0, 0, 4, -2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0}, { 0, 0, 0, 0, 0, 0, 5, 0,-4, 0, 0, 0, 2, -3, 0, 0, 1}, /* 601-610 */ { 0, 0, 0, 0, 0, 0, 5, 0,-3, 0, 0, 0, 2, -9, 0, 1, 4}, { 0, 0, 0, 0, 0, 0, 5, 0,-2, 0, 0, 0, 2, 3, 12, 5, -1}, { 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 17, -3, -1, 0}, { 0, 0, 0, 0, 0, -8, 8, 0, 0, 0, 0, 0, 1, 0, 7, 4, 0}, { 0, 0, 0, 0, 0, 8, -8, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0}, { 0, 0, 0, 0, 0, 5, -3, 0, 0, 0, 0, 0, 1, 0, -5, -3, 0}, { 0, 0, 0, 0, 0, 5, -3, 0, 0, 0, 0, 0, 2, 14, -3, 0, -1}, { 0, 0, 0, 0, 0, -9, 9, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0}, { 0, 0, 0, 0, 0, -9, 9, 0, 0, 0, 0, 0, 1, 0, 0, 0, -5}, { 0, 0, 0, 0, 0, -9, 9, 0, 0, 0, 0, 0, 1, 0, 5, 3, 0}, /* 611-620 */ { 0, 0, 0, 0, 0, 9, -9, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0}, { 0, 0, 0, 0, 0, 6, -4, 0, 0, 0, 0, 0, 1, 0, -3, -2, 0}, { 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 2, 2, 9, 4, 3}, { 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4}, { 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1, 0, 4, 2, 0}, { 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 2, 6, 0, 0, -3}, { 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1, 0, 3, 1, 0}, { 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 2, 5, 0, 0, -2}, /* 621-630 */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, -1}, { 1, 0,-2, 0, 0, 0, 2, 0,-2, 0, 0, 0, 0, -3, 0, 0, 0}, { 1, 0,-2, 0, 0, 2, -2, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0}, { 1, 0,-2, 0, 0, 0, 1, 0,-1, 0, 0, 0, 0, 7, 0, 0, 0}, { 1, 0,-2, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0}, {-1, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0}, {-1, 0, 0, 0, 0, 0, 2, 0,-2, 0, 0, 0, 0, 6, 0, 0, 0}, {-1, 0, 2, 0, 0, 0, 4, -8, 3, 0, 0, 0, 0, 0, -4, 0, 0}, { 1, 0,-2, 0, 0, 0, 4, -8, 3, 0, 0, 0, 0, 0, -4, 0, 0}, {-2, 0, 2, 0, 0, 0, 4, -8, 3, 0, 0, 0, 0, 5, 0, 0, 0}, /* 631-640 */ {-1, 0, 0, 0, 0, 0, 2, 0,-3, 0, 0, 0, 0, -3, 0, 0, 0}, {-1, 0, 0, 0, 0, 0, 1, 0,-1, 0, 0, 0, 0, 4, 0, 0, 0}, {-1, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0}, {-1, 0, 2, 0, 0, 2, -2, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0}, { 1,-1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0}, {-1, 0, 2, 0, 0, 0, 2, 0,-3, 0, 0, 0, 0, 13, 0, 0, 0}, {-2, 0, 0, 0, 0, 0, 2, 0,-3, 0, 0, 0, 0, 21, 11, 0, 0}, { 1, 0, 0, 0, 0, 0, 4, -8, 3, 0, 0, 0, 0, 0, -5, 0, 0}, {-1, 1,-1, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, -5, -2, 0}, { 1, 1,-1, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 5, 3, 0}, /* 641-650 */ {-1, 0, 0, 0, 0, 0, 4, -8, 3, 0, 0, 0, 0, 0, -5, 0, 0}, {-1, 0, 2, 1, 0, 0, 2, 0,-2, 0, 0, 0, 0, -3, 0, 0, 2}, { 0, 0, 0, 0, 0, 0, 2, 0,-2, 0, 0, 0, 0, 20, 10, 0, 0}, {-1, 0, 2, 0, 0, 0, 2, 0,-2, 0, 0, 0, 0, -34, 0, 0, 0}, {-1, 0, 2, 0, 0, 3, -3, 0, 0, 0, 0, 0, 0, -19, 0, 0, 0}, { 1, 0,-2, 1, 0, 0, -2, 0, 2, 0, 0, 0, 0, 3, 0, 0, -2}, { 1, 2,-2, 2, 0, -3, 3, 0, 0, 0, 0, 0, 0, -3, 0, 0, 1}, { 1, 2,-2, 2, 0, 0, -2, 0, 2, 0, 0, 0, 0, -6, 0, 0, 3}, { 1, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0}, { 1, 0, 0, 0, 0, 0, 1, 0,-1, 0, 0, 0, 0, 3, 0, 0, 0}, /* 651-660 */ { 0, 0,-2, 0, 0, 2, -2, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0}, { 0, 0,-2, 0, 0, 0, 1, 0,-1, 0, 0, 0, 0, 4, 0, 0, 0}, { 0, 2, 0, 2, 0, -2, 2, 0, 0, 0, 0, 0, 0, 3, 0, 0, -1}, { 0, 2, 0, 2, 0, 0, -1, 0, 1, 0, 0, 0, 0, 6, 0, 0, -3}, { 0, 2, 0, 2, 0, -1, 1, 0, 0, 0, 0, 0, 0, -8, 0, 0, 3}, { 0, 2, 0, 2, 0, -2, 3, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0}, { 0, 0, 2, 0, 0, 0, 2, 0,-2, 0, 0, 0, 0, -3, 0, 0, 0}, { 0, 1, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -3, -2, 0}, { 1, 2, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 126, -63, -27, -55}, {-1, 2, 0, 2, 0, 10, -3, 0, 0, 0, 0, 0, 0, -5, 0, 1, 2}, /* 661-670 */ { 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, -3, 28, 15, 2}, { 1, 2, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 5, 0, 1, -2}, { 0, 2, 0, 2, 0, 0, 4, -8, 3, 0, 0, 0, 0, 0, 9, 4, 1}, { 0, 2, 0, 2, 0, 0, -4, 8,-3, 0, 0, 0, 0, 0, 9, 4, -1}, {-1, 2, 0, 2, 0, 0, -4, 8,-3, 0, 0, 0, 0, -126, -63, -27, 55}, { 2, 2,-2, 2, 0, 0, -2, 0, 3, 0, 0, 0, 0, 3, 0, 0, -1}, { 1, 2, 0, 1, 0, 0, -2, 0, 3, 0, 0, 0, 0, 21, -11, -6, -11}, { 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0}, {-1, 2, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, -21, -11, -6, 11}, {-2, 2, 2, 2, 0, 0, 2, 0,-2, 0, 0, 0, 0, -3, 0, 0, 1}, /* 671-680 */ { 0, 2, 0, 2, 0, 2, -3, 0, 0, 0, 0, 0, 0, 0, 3, 1, 0}, { 0, 2, 0, 2, 0, 1, -1, 0, 0, 0, 0, 0, 0, 8, 0, 0, -4}, { 0, 2, 0, 2, 0, 0, 1, 0,-1, 0, 0, 0, 0, -6, 0, 0, 3}, { 0, 2, 0, 2, 0, 2, -2, 0, 0, 0, 0, 0, 0, -3, 0, 0, 1}, {-1, 2, 2, 2, 0, 0, -1, 0, 1, 0, 0, 0, 0, 3, 0, 0, -1}, { 1, 2, 0, 2, 0, -1, 1, 0, 0, 0, 0, 0, 0, -3, 0, 0, 1}, {-1, 2, 2, 2, 0, 0, 2, 0,-3, 0, 0, 0, 0, -5, 0, 0, 2}, { 2, 2, 0, 2, 0, 0, 2, 0,-3, 0, 0, 0, 0, 24, -12, -5, -11}, { 1, 2, 0, 2, 0, 0, -4, 8,-3, 0, 0, 0, 0, 0, 3, 1, 0}, { 1, 2, 0, 2, 0, 0, 4, -8, 3, 0, 0, 0, 0, 0, 3, 1, 0}, /* 681-687 */ { 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0}, { 0, 2, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, -24, -12, -5, 10}, { 2, 2, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 4, 0, -1, -2}, {-1, 2, 2, 2, 0, 0, 2, 0,-2, 0, 0, 0, 0, 13, 0, 0, -6}, {-1, 2, 2, 2, 0, 3, -3, 0, 0, 0, 0, 0, 0, 7, 0, 0, -3}, { 1, 2, 0, 2, 0, 1, -1, 0, 0, 0, 0, 0, 0, 3, 0, 0, -1}, { 0, 2, 2, 2, 0, 0, 2, 0,-2, 0, 0, 0, 0, 3, 0, 0, -1} }; /* Number of terms in the planetary nutation model */ const int NPL = (int) (sizeof xpl / sizeof xpl[0]); /*--------------------------------------------------------------------*/ /* Interval between fundamental date J2000.0 and given date (JC). */ t = ((date1 - DJ00) + date2) / DJC; /* ------------------- */ /* LUNI-SOLAR NUTATION */ /* ------------------- */ /* Fundamental (Delaunay) arguments */ /* Mean anomaly of the Moon (IERS 2003). */ el = iauFal03(t); /* Mean anomaly of the Sun (MHB2000). */ elp = fmod(1287104.79305 + t * (129596581.0481 + t * (-0.5532 + t * (0.000136 + t * (-0.00001149)))), TURNAS) * DAS2R; /* Mean longitude of the Moon minus that of the ascending node */ /* (IERS 2003. */ f = iauFaf03(t); /* Mean elongation of the Moon from the Sun (MHB2000). */ d = fmod(1072260.70369 + t * (1602961601.2090 + t * (-6.3706 + t * (0.006593 + t * (-0.00003169)))), TURNAS) * DAS2R; /* Mean longitude of the ascending node of the Moon (IERS 2003). */ om = iauFaom03(t); /* Initialize the nutation values. */ dp = 0.0; de = 0.0; /* Summation of luni-solar nutation series (in reverse order). */ for (i = NLS-1; i >= 0; i--) { /* Argument and functions. */ arg = fmod((double)xls[i].nl * el + (double)xls[i].nlp * elp + (double)xls[i].nf * f + (double)xls[i].nd * d + (double)xls[i].nom * om, D2PI); sarg = sin(arg); carg = cos(arg); /* Term. */ dp += (xls[i].sp + xls[i].spt * t) * sarg + xls[i].cp * carg; de += (xls[i].ce + xls[i].cet * t) * carg + xls[i].se * sarg; } /* Convert from 0.1 microarcsec units to radians. */ dpsils = dp * U2R; depsls = de * U2R; /* ------------------ */ /* PLANETARY NUTATION */ /* ------------------ */ /* n.b. The MHB2000 code computes the luni-solar and planetary nutation */ /* in different functions, using slightly different Delaunay */ /* arguments in the two cases. This behaviour is faithfully */ /* reproduced here. Use of the IERS 2003 expressions for both */ /* cases leads to negligible changes, well below */ /* 0.1 microarcsecond. */ /* Mean anomaly of the Moon (MHB2000). */ al = fmod(2.35555598 + 8328.6914269554 * t, D2PI); /* Mean longitude of the Moon minus that of the ascending node */ /*(MHB2000). */ af = fmod(1.627905234 + 8433.466158131 * t, D2PI); /* Mean elongation of the Moon from the Sun (MHB2000). */ ad = fmod(5.198466741 + 7771.3771468121 * t, D2PI); /* Mean longitude of the ascending node of the Moon (MHB2000). */ aom = fmod(2.18243920 - 33.757045 * t, D2PI); /* General accumulated precession in longitude (IERS 2003). */ apa = iauFapa03(t); /* Planetary longitudes, Mercury through Uranus (IERS 2003). */ alme = iauFame03(t); alve = iauFave03(t); alea = iauFae03(t); alma = iauFama03(t); alju = iauFaju03(t); alsa = iauFasa03(t); alur = iauFaur03(t); /* Neptune longitude (MHB2000). */ alne = fmod(5.321159000 + 3.8127774000 * t, D2PI); /* Initialize the nutation values. */ dp = 0.0; de = 0.0; /* Summation of planetary nutation series (in reverse order). */ for (i = NPL-1; i >= 0; i--) { /* Argument and functions. */ arg = fmod((double)xpl[i].nl * al + (double)xpl[i].nf * af + (double)xpl[i].nd * ad + (double)xpl[i].nom * aom + (double)xpl[i].nme * alme + (double)xpl[i].nve * alve + (double)xpl[i].nea * alea + (double)xpl[i].nma * alma + (double)xpl[i].nju * alju + (double)xpl[i].nsa * alsa + (double)xpl[i].nur * alur + (double)xpl[i].nne * alne + (double)xpl[i].npa * apa, D2PI); sarg = sin(arg); carg = cos(arg); /* Term. */ dp += (double)xpl[i].sp * sarg + (double)xpl[i].cp * carg; de += (double)xpl[i].se * sarg + (double)xpl[i].ce * carg; } /* Convert from 0.1 microarcsec units to radians. */ dpsipl = dp * U2R; depspl = de * U2R; /* ------- */ /* RESULTS */ /* ------- */ /* Add luni-solar and planetary components. */ *dpsi = dpsils + dpsipl; *deps = depsls + depspl; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/nut00b.c0000644000113000011300000004511412507252057014153 0ustar bellsbells#include "sofa.h" void iauNut00b(double date1, double date2, double *dpsi, double *deps) /* ** - - - - - - - - - - ** i a u N u t 0 0 b ** - - - - - - - - - - ** ** Nutation, IAU 2000B model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** dpsi,deps double nutation, luni-solar + planetary (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The nutation components in longitude and obliquity are in radians ** and with respect to the equinox and ecliptic of date. The ** obliquity at J2000.0 is assumed to be the Lieske et al. (1977) ** value of 84381.448 arcsec. (The errors that result from using ** this function with the IAU 2006 value of 84381.406 arcsec can be ** neglected.) ** ** The nutation model consists only of luni-solar terms, but ** includes also a fixed offset which compensates for certain long- ** period planetary terms (Note 7). ** ** 3) This function is an implementation of the IAU 2000B abridged ** nutation model formally adopted by the IAU General Assembly in ** 2000. The function computes the MHB_2000_SHORT luni-solar ** nutation series (Luzum 2001), but without the associated ** corrections for the precession rate adjustments and the offset ** between the GCRS and J2000.0 mean poles. ** ** 4) The full IAU 2000A (MHB2000) nutation model contains nearly 1400 ** terms. The IAU 2000B model (McCarthy & Luzum 2003) contains only ** 77 terms, plus additional simplifications, yet still delivers ** results of 1 mas accuracy at present epochs. This combination of ** accuracy and size makes the IAU 2000B abridged nutation model ** suitable for most practical applications. ** ** The function delivers a pole accurate to 1 mas from 1900 to 2100 ** (usually better than 1 mas, very occasionally just outside ** 1 mas). The full IAU 2000A model, which is implemented in the ** function iauNut00a (q.v.), delivers considerably greater accuracy ** at current dates; however, to realize this improved accuracy, ** corrections for the essentially unpredictable free-core-nutation ** (FCN) must also be included. ** ** 5) The present function provides classical nutation. The ** MHB_2000_SHORT algorithm, from which it is adapted, deals also ** with (i) the offsets between the GCRS and mean poles and (ii) the ** adjustments in longitude and obliquity due to the changed ** precession rates. These additional functions, namely frame bias ** and precession adjustments, are supported by the SOFA functions ** iauBi00 and iauPr00. ** ** 6) The MHB_2000_SHORT algorithm also provides "total" nutations, ** comprising the arithmetic sum of the frame bias, precession ** adjustments, and nutation (luni-solar + planetary). These total ** nutations can be used in combination with an existing IAU 1976 ** precession implementation, such as iauPmat76, to deliver GCRS- ** to-true predictions of mas accuracy at current epochs. However, ** for symmetry with the iauNut00a function (q.v. for the reasons), ** the SOFA functions do not generate the "total nutations" ** directly. Should they be required, they could of course easily ** be generated by calling iauBi00, iauPr00 and the present function ** and adding the results. ** ** 7) The IAU 2000B model includes "planetary bias" terms that are ** fixed in size but compensate for long-period nutations. The ** amplitudes quoted in McCarthy & Luzum (2003), namely ** Dpsi = -1.5835 mas and Depsilon = +1.6339 mas, are optimized for ** the "total nutations" method described in Note 6. The Luzum ** (2001) values used in this SOFA implementation, namely -0.135 mas ** and +0.388 mas, are optimized for the "rigorous" method, where ** frame bias, precession and nutation are applied separately and in ** that order. During the interval 1995-2050, the SOFA ** implementation delivers a maximum error of 1.001 mas (not ** including FCN). ** ** References: ** ** Lieske, J.H., Lederle, T., Fricke, W., Morando, B., "Expressions ** for the precession quantities based upon the IAU /1976/ system of ** astronomical constants", Astron.Astrophys. 58, 1-2, 1-16. (1977) ** ** Luzum, B., private communication, 2001 (Fortran code ** MHB_2000_SHORT) ** ** McCarthy, D.D. & Luzum, B.J., "An abridged model of the ** precession-nutation of the celestial pole", Cel.Mech.Dyn.Astron. ** 85, 37-49 (2003) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J., Astron.Astrophys. 282, 663-683 (1994) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double t, el, elp, f, d, om, arg, dp, de, sarg, carg, dpsils, depsls, dpsipl, depspl; int i; /* Units of 0.1 microarcsecond to radians */ static const double U2R = DAS2R / 1e7; /* ---------------------------------------- */ /* Fixed offsets in lieu of planetary terms */ /* ---------------------------------------- */ static const double DPPLAN = -0.135 * DMAS2R; static const double DEPLAN = 0.388 * DMAS2R; /* --------------------------------------------------- */ /* Luni-solar nutation: argument and term coefficients */ /* --------------------------------------------------- */ /* The units for the sine and cosine coefficients are */ /* 0.1 microarcsec and the same per Julian century */ static const struct { int nl,nlp,nf,nd,nom; /* coefficients of l,l',F,D,Om */ double ps,pst,pc; /* longitude sin, t*sin, cos coefficients */ double ec,ect,es; /* obliquity cos, t*cos, sin coefficients */ } x[] = { /* 1-10 */ { 0, 0, 0, 0,1, -172064161.0, -174666.0, 33386.0, 92052331.0, 9086.0, 15377.0}, { 0, 0, 2,-2,2, -13170906.0, -1675.0, -13696.0, 5730336.0, -3015.0, -4587.0}, { 0, 0, 2, 0,2,-2276413.0,-234.0, 2796.0, 978459.0,-485.0,1374.0}, { 0, 0, 0, 0,2,2074554.0, 207.0, -698.0,-897492.0, 470.0,-291.0}, { 0, 1, 0, 0,0,1475877.0,-3633.0,11817.0, 73871.0,-184.0,-1924.0}, { 0, 1, 2,-2,2,-516821.0, 1226.0, -524.0, 224386.0,-677.0,-174.0}, { 1, 0, 0, 0,0, 711159.0, 73.0, -872.0, -6750.0, 0.0, 358.0}, { 0, 0, 2, 0,1,-387298.0, -367.0, 380.0, 200728.0, 18.0, 318.0}, { 1, 0, 2, 0,2,-301461.0, -36.0, 816.0, 129025.0, -63.0, 367.0}, { 0,-1, 2,-2,2, 215829.0, -494.0, 111.0, -95929.0, 299.0, 132.0}, /* 11-20 */ { 0, 0, 2,-2,1, 128227.0, 137.0, 181.0, -68982.0, -9.0, 39.0}, {-1, 0, 2, 0,2, 123457.0, 11.0, 19.0, -53311.0, 32.0, -4.0}, {-1, 0, 0, 2,0, 156994.0, 10.0, -168.0, -1235.0, 0.0, 82.0}, { 1, 0, 0, 0,1, 63110.0, 63.0, 27.0, -33228.0, 0.0, -9.0}, {-1, 0, 0, 0,1, -57976.0, -63.0, -189.0, 31429.0, 0.0, -75.0}, {-1, 0, 2, 2,2, -59641.0, -11.0, 149.0, 25543.0, -11.0, 66.0}, { 1, 0, 2, 0,1, -51613.0, -42.0, 129.0, 26366.0, 0.0, 78.0}, {-2, 0, 2, 0,1, 45893.0, 50.0, 31.0, -24236.0, -10.0, 20.0}, { 0, 0, 0, 2,0, 63384.0, 11.0, -150.0, -1220.0, 0.0, 29.0}, { 0, 0, 2, 2,2, -38571.0, -1.0, 158.0, 16452.0, -11.0, 68.0}, /* 21-30 */ { 0,-2, 2,-2,2, 32481.0, 0.0, 0.0, -13870.0, 0.0, 0.0}, {-2, 0, 0, 2,0, -47722.0, 0.0, -18.0, 477.0, 0.0, -25.0}, { 2, 0, 2, 0,2, -31046.0, -1.0, 131.0, 13238.0, -11.0, 59.0}, { 1, 0, 2,-2,2, 28593.0, 0.0, -1.0, -12338.0, 10.0, -3.0}, {-1, 0, 2, 0,1, 20441.0, 21.0, 10.0, -10758.0, 0.0, -3.0}, { 2, 0, 0, 0,0, 29243.0, 0.0, -74.0, -609.0, 0.0, 13.0}, { 0, 0, 2, 0,0, 25887.0, 0.0, -66.0, -550.0, 0.0, 11.0}, { 0, 1, 0, 0,1, -14053.0, -25.0, 79.0, 8551.0, -2.0, -45.0}, {-1, 0, 0, 2,1, 15164.0, 10.0, 11.0, -8001.0, 0.0, -1.0}, { 0, 2, 2,-2,2, -15794.0, 72.0, -16.0, 6850.0, -42.0, -5.0}, /* 31-40 */ { 0, 0,-2, 2,0, 21783.0, 0.0, 13.0, -167.0, 0.0, 13.0}, { 1, 0, 0,-2,1, -12873.0, -10.0, -37.0, 6953.0, 0.0, -14.0}, { 0,-1, 0, 0,1, -12654.0, 11.0, 63.0, 6415.0, 0.0, 26.0}, {-1, 0, 2, 2,1, -10204.0, 0.0, 25.0, 5222.0, 0.0, 15.0}, { 0, 2, 0, 0,0, 16707.0, -85.0, -10.0, 168.0, -1.0, 10.0}, { 1, 0, 2, 2,2, -7691.0, 0.0, 44.0, 3268.0, 0.0, 19.0}, {-2, 0, 2, 0,0, -11024.0, 0.0, -14.0, 104.0, 0.0, 2.0}, { 0, 1, 2, 0,2, 7566.0, -21.0, -11.0, -3250.0, 0.0, -5.0}, { 0, 0, 2, 2,1, -6637.0, -11.0, 25.0, 3353.0, 0.0, 14.0}, { 0,-1, 2, 0,2, -7141.0, 21.0, 8.0, 3070.0, 0.0, 4.0}, /* 41-50 */ { 0, 0, 0, 2,1, -6302.0, -11.0, 2.0, 3272.0, 0.0, 4.0}, { 1, 0, 2,-2,1, 5800.0, 10.0, 2.0, -3045.0, 0.0, -1.0}, { 2, 0, 2,-2,2, 6443.0, 0.0, -7.0, -2768.0, 0.0, -4.0}, {-2, 0, 0, 2,1, -5774.0, -11.0, -15.0, 3041.0, 0.0, -5.0}, { 2, 0, 2, 0,1, -5350.0, 0.0, 21.0, 2695.0, 0.0, 12.0}, { 0,-1, 2,-2,1, -4752.0, -11.0, -3.0, 2719.0, 0.0, -3.0}, { 0, 0, 0,-2,1, -4940.0, -11.0, -21.0, 2720.0, 0.0, -9.0}, {-1,-1, 0, 2,0, 7350.0, 0.0, -8.0, -51.0, 0.0, 4.0}, { 2, 0, 0,-2,1, 4065.0, 0.0, 6.0, -2206.0, 0.0, 1.0}, { 1, 0, 0, 2,0, 6579.0, 0.0, -24.0, -199.0, 0.0, 2.0}, /* 51-60 */ { 0, 1, 2,-2,1, 3579.0, 0.0, 5.0, -1900.0, 0.0, 1.0}, { 1,-1, 0, 0,0, 4725.0, 0.0, -6.0, -41.0, 0.0, 3.0}, {-2, 0, 2, 0,2, -3075.0, 0.0, -2.0, 1313.0, 0.0, -1.0}, { 3, 0, 2, 0,2, -2904.0, 0.0, 15.0, 1233.0, 0.0, 7.0}, { 0,-1, 0, 2,0, 4348.0, 0.0, -10.0, -81.0, 0.0, 2.0}, { 1,-1, 2, 0,2, -2878.0, 0.0, 8.0, 1232.0, 0.0, 4.0}, { 0, 0, 0, 1,0, -4230.0, 0.0, 5.0, -20.0, 0.0, -2.0}, {-1,-1, 2, 2,2, -2819.0, 0.0, 7.0, 1207.0, 0.0, 3.0}, {-1, 0, 2, 0,0, -4056.0, 0.0, 5.0, 40.0, 0.0, -2.0}, { 0,-1, 2, 2,2, -2647.0, 0.0, 11.0, 1129.0, 0.0, 5.0}, /* 61-70 */ {-2, 0, 0, 0,1, -2294.0, 0.0, -10.0, 1266.0, 0.0, -4.0}, { 1, 1, 2, 0,2, 2481.0, 0.0, -7.0, -1062.0, 0.0, -3.0}, { 2, 0, 0, 0,1, 2179.0, 0.0, -2.0, -1129.0, 0.0, -2.0}, {-1, 1, 0, 1,0, 3276.0, 0.0, 1.0, -9.0, 0.0, 0.0}, { 1, 1, 0, 0,0, -3389.0, 0.0, 5.0, 35.0, 0.0, -2.0}, { 1, 0, 2, 0,0, 3339.0, 0.0, -13.0, -107.0, 0.0, 1.0}, {-1, 0, 2,-2,1, -1987.0, 0.0, -6.0, 1073.0, 0.0, -2.0}, { 1, 0, 0, 0,2, -1981.0, 0.0, 0.0, 854.0, 0.0, 0.0}, {-1, 0, 0, 1,0, 4026.0, 0.0, -353.0, -553.0, 0.0,-139.0}, { 0, 0, 2, 1,2, 1660.0, 0.0, -5.0, -710.0, 0.0, -2.0}, /* 71-77 */ {-1, 0, 2, 4,2, -1521.0, 0.0, 9.0, 647.0, 0.0, 4.0}, {-1, 1, 0, 1,1, 1314.0, 0.0, 0.0, -700.0, 0.0, 0.0}, { 0,-2, 2,-2,1, -1283.0, 0.0, 0.0, 672.0, 0.0, 0.0}, { 1, 0, 2, 2,1, -1331.0, 0.0, 8.0, 663.0, 0.0, 4.0}, {-2, 0, 2, 2,2, 1383.0, 0.0, -2.0, -594.0, 0.0, -2.0}, {-1, 0, 0, 0,2, 1405.0, 0.0, 4.0, -610.0, 0.0, 2.0}, { 1, 1, 2,-2,2, 1290.0, 0.0, 0.0, -556.0, 0.0, 0.0} }; /* Number of terms in the series */ const int NLS = (int) (sizeof x / sizeof x[0]); /*--------------------------------------------------------------------*/ /* Interval between fundamental epoch J2000.0 and given date (JC). */ t = ((date1 - DJ00) + date2) / DJC; /* --------------------*/ /* LUNI-SOLAR NUTATION */ /* --------------------*/ /* Fundamental (Delaunay) arguments from Simon et al. (1994) */ /* Mean anomaly of the Moon. */ el = fmod(485868.249036 + (1717915923.2178) * t, TURNAS) * DAS2R; /* Mean anomaly of the Sun. */ elp = fmod(1287104.79305 + (129596581.0481) * t, TURNAS) * DAS2R; /* Mean argument of the latitude of the Moon. */ f = fmod(335779.526232 + (1739527262.8478) * t, TURNAS) * DAS2R; /* Mean elongation of the Moon from the Sun. */ d = fmod(1072260.70369 + (1602961601.2090) * t, TURNAS) * DAS2R; /* Mean longitude of the ascending node of the Moon. */ om = fmod(450160.398036 + (-6962890.5431) * t, TURNAS) * DAS2R; /* Initialize the nutation values. */ dp = 0.0; de = 0.0; /* Summation of luni-solar nutation series (smallest terms first). */ for (i = NLS-1; i >= 0; i--) { /* Argument and functions. */ arg = fmod( (double)x[i].nl * el + (double)x[i].nlp * elp + (double)x[i].nf * f + (double)x[i].nd * d + (double)x[i].nom * om, D2PI ); sarg = sin(arg); carg = cos(arg); /* Term. */ dp += (x[i].ps + x[i].pst * t) * sarg + x[i].pc * carg; de += (x[i].ec + x[i].ect * t) * carg + x[i].es * sarg; } /* Convert from 0.1 microarcsec units to radians. */ dpsils = dp * U2R; depsls = de * U2R; /* ------------------------------*/ /* IN LIEU OF PLANETARY NUTATION */ /* ------------------------------*/ /* Fixed offset to correct for missing terms in truncated series. */ dpsipl = DPPLAN; depspl = DEPLAN; /* --------*/ /* RESULTS */ /* --------*/ /* Add luni-solar and planetary components. */ *dpsi = dpsils + dpsipl; *deps = depsls + depspl; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/nut06a.c0000644000113000011300000001721612507252057014162 0ustar bellsbells#include "sofa.h" void iauNut06a(double date1, double date2, double *dpsi, double *deps) /* ** - - - - - - - - - - ** i a u N u t 0 6 a ** - - - - - - - - - - ** ** IAU 2000A nutation with adjustments to match the IAU 2006 ** precession. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** dpsi,deps double nutation, luni-solar + planetary (Note 2) ** ** Status: canonical model. ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The nutation components in longitude and obliquity are in radians ** and with respect to the mean equinox and ecliptic of date, ** IAU 2006 precession model (Hilton et al. 2006, Capitaine et al. ** 2005). ** ** 3) The function first computes the IAU 2000A nutation, then applies ** adjustments for (i) the consequences of the change in obliquity ** from the IAU 1980 ecliptic to the IAU 2006 ecliptic and (ii) the ** secular variation in the Earth's dynamical form factor J2. ** ** 4) The present function provides classical nutation, complementing ** the IAU 2000 frame bias and IAU 2006 precession. It delivers a ** pole which is at current epochs accurate to a few tens of ** microarcseconds, apart from the free core nutation. ** ** Called: ** iauNut00a nutation, IAU 2000A ** ** References: ** ** Chapront, J., Chapront-Touze, M. & Francou, G. 2002, ** Astron.Astrophys. 387, 700 ** ** Lieske, J.H., Lederle, T., Fricke, W. & Morando, B. 1977, ** Astron.Astrophys. 58, 1-16 ** ** Mathews, P.M., Herring, T.A., Buffet, B.A. 2002, J.Geophys.Res. ** 107, B4. The MHB_2000 code itself was obtained on 9th September ** 2002 from ftp//maia.usno.navy.mil/conv2000/chapter5/IAU2000A. ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, ** Astron.Astrophys.Supp.Ser. 135, 111 ** ** Wallace, P.T., "Software for Implementing the IAU 2000 ** Resolutions", in IERS Workshop 5.1 (2002) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double t, fj2, dp, de; /* Interval between fundamental date J2000.0 and given date (JC). */ t = ((date1 - DJ00) + date2) / DJC; /* Factor correcting for secular variation of J2. */ fj2 = -2.7774e-6 * t; /* Obtain IAU 2000A nutation. */ iauNut00a(date1, date2, &dp, &de); /* Apply P03 adjustments (Wallace & Capitaine, 2006, Eqs.5). */ *dpsi = dp + dp * (0.4697e-6 + fj2); *deps = de + de * fj2; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/nut80.c0000644000113000011300000003764712507252057014035 0ustar bellsbells#include "sofa.h" void iauNut80(double date1, double date2, double *dpsi, double *deps) /* ** - - - - - - - - - ** i a u N u t 8 0 ** - - - - - - - - - ** ** Nutation, IAU 1980 model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** dpsi double nutation in longitude (radians) ** deps double nutation in obliquity (radians) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The nutation components are with respect to the ecliptic of ** date. ** ** Called: ** iauAnpm normalize angle into range +/- pi ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 3.222 (p111). ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double t, el, elp, f, d, om, dp, de, arg, s, c; int j; /* Units of 0.1 milliarcsecond to radians */ const double U2R = DAS2R / 1e4; /* ------------------------------------------------ */ /* Table of multiples of arguments and coefficients */ /* ------------------------------------------------ */ /* The units for the sine and cosine coefficients are 0.1 mas and */ /* the same per Julian century */ static const struct { int nl,nlp,nf,nd,nom; /* coefficients of l,l',F,D,Om */ double sp,spt; /* longitude sine, 1 and t coefficients */ double ce,cet; /* obliquity cosine, 1 and t coefficients */ } x[] = { /* 1-10 */ { 0, 0, 0, 0, 1, -171996.0, -174.2, 92025.0, 8.9 }, { 0, 0, 0, 0, 2, 2062.0, 0.2, -895.0, 0.5 }, { -2, 0, 2, 0, 1, 46.0, 0.0, -24.0, 0.0 }, { 2, 0, -2, 0, 0, 11.0, 0.0, 0.0, 0.0 }, { -2, 0, 2, 0, 2, -3.0, 0.0, 1.0, 0.0 }, { 1, -1, 0, -1, 0, -3.0, 0.0, 0.0, 0.0 }, { 0, -2, 2, -2, 1, -2.0, 0.0, 1.0, 0.0 }, { 2, 0, -2, 0, 1, 1.0, 0.0, 0.0, 0.0 }, { 0, 0, 2, -2, 2, -13187.0, -1.6, 5736.0, -3.1 }, { 0, 1, 0, 0, 0, 1426.0, -3.4, 54.0, -0.1 }, /* 11-20 */ { 0, 1, 2, -2, 2, -517.0, 1.2, 224.0, -0.6 }, { 0, -1, 2, -2, 2, 217.0, -0.5, -95.0, 0.3 }, { 0, 0, 2, -2, 1, 129.0, 0.1, -70.0, 0.0 }, { 2, 0, 0, -2, 0, 48.0, 0.0, 1.0, 0.0 }, { 0, 0, 2, -2, 0, -22.0, 0.0, 0.0, 0.0 }, { 0, 2, 0, 0, 0, 17.0, -0.1, 0.0, 0.0 }, { 0, 1, 0, 0, 1, -15.0, 0.0, 9.0, 0.0 }, { 0, 2, 2, -2, 2, -16.0, 0.1, 7.0, 0.0 }, { 0, -1, 0, 0, 1, -12.0, 0.0, 6.0, 0.0 }, { -2, 0, 0, 2, 1, -6.0, 0.0, 3.0, 0.0 }, /* 21-30 */ { 0, -1, 2, -2, 1, -5.0, 0.0, 3.0, 0.0 }, { 2, 0, 0, -2, 1, 4.0, 0.0, -2.0, 0.0 }, { 0, 1, 2, -2, 1, 4.0, 0.0, -2.0, 0.0 }, { 1, 0, 0, -1, 0, -4.0, 0.0, 0.0, 0.0 }, { 2, 1, 0, -2, 0, 1.0, 0.0, 0.0, 0.0 }, { 0, 0, -2, 2, 1, 1.0, 0.0, 0.0, 0.0 }, { 0, 1, -2, 2, 0, -1.0, 0.0, 0.0, 0.0 }, { 0, 1, 0, 0, 2, 1.0, 0.0, 0.0, 0.0 }, { -1, 0, 0, 1, 1, 1.0, 0.0, 0.0, 0.0 }, { 0, 1, 2, -2, 0, -1.0, 0.0, 0.0, 0.0 }, /* 31-40 */ { 0, 0, 2, 0, 2, -2274.0, -0.2, 977.0, -0.5 }, { 1, 0, 0, 0, 0, 712.0, 0.1, -7.0, 0.0 }, { 0, 0, 2, 0, 1, -386.0, -0.4, 200.0, 0.0 }, { 1, 0, 2, 0, 2, -301.0, 0.0, 129.0, -0.1 }, { 1, 0, 0, -2, 0, -158.0, 0.0, -1.0, 0.0 }, { -1, 0, 2, 0, 2, 123.0, 0.0, -53.0, 0.0 }, { 0, 0, 0, 2, 0, 63.0, 0.0, -2.0, 0.0 }, { 1, 0, 0, 0, 1, 63.0, 0.1, -33.0, 0.0 }, { -1, 0, 0, 0, 1, -58.0, -0.1, 32.0, 0.0 }, { -1, 0, 2, 2, 2, -59.0, 0.0, 26.0, 0.0 }, /* 41-50 */ { 1, 0, 2, 0, 1, -51.0, 0.0, 27.0, 0.0 }, { 0, 0, 2, 2, 2, -38.0, 0.0, 16.0, 0.0 }, { 2, 0, 0, 0, 0, 29.0, 0.0, -1.0, 0.0 }, { 1, 0, 2, -2, 2, 29.0, 0.0, -12.0, 0.0 }, { 2, 0, 2, 0, 2, -31.0, 0.0, 13.0, 0.0 }, { 0, 0, 2, 0, 0, 26.0, 0.0, -1.0, 0.0 }, { -1, 0, 2, 0, 1, 21.0, 0.0, -10.0, 0.0 }, { -1, 0, 0, 2, 1, 16.0, 0.0, -8.0, 0.0 }, { 1, 0, 0, -2, 1, -13.0, 0.0, 7.0, 0.0 }, { -1, 0, 2, 2, 1, -10.0, 0.0, 5.0, 0.0 }, /* 51-60 */ { 1, 1, 0, -2, 0, -7.0, 0.0, 0.0, 0.0 }, { 0, 1, 2, 0, 2, 7.0, 0.0, -3.0, 0.0 }, { 0, -1, 2, 0, 2, -7.0, 0.0, 3.0, 0.0 }, { 1, 0, 2, 2, 2, -8.0, 0.0, 3.0, 0.0 }, { 1, 0, 0, 2, 0, 6.0, 0.0, 0.0, 0.0 }, { 2, 0, 2, -2, 2, 6.0, 0.0, -3.0, 0.0 }, { 0, 0, 0, 2, 1, -6.0, 0.0, 3.0, 0.0 }, { 0, 0, 2, 2, 1, -7.0, 0.0, 3.0, 0.0 }, { 1, 0, 2, -2, 1, 6.0, 0.0, -3.0, 0.0 }, { 0, 0, 0, -2, 1, -5.0, 0.0, 3.0, 0.0 }, /* 61-70 */ { 1, -1, 0, 0, 0, 5.0, 0.0, 0.0, 0.0 }, { 2, 0, 2, 0, 1, -5.0, 0.0, 3.0, 0.0 }, { 0, 1, 0, -2, 0, -4.0, 0.0, 0.0, 0.0 }, { 1, 0, -2, 0, 0, 4.0, 0.0, 0.0, 0.0 }, { 0, 0, 0, 1, 0, -4.0, 0.0, 0.0, 0.0 }, { 1, 1, 0, 0, 0, -3.0, 0.0, 0.0, 0.0 }, { 1, 0, 2, 0, 0, 3.0, 0.0, 0.0, 0.0 }, { 1, -1, 2, 0, 2, -3.0, 0.0, 1.0, 0.0 }, { -1, -1, 2, 2, 2, -3.0, 0.0, 1.0, 0.0 }, { -2, 0, 0, 0, 1, -2.0, 0.0, 1.0, 0.0 }, /* 71-80 */ { 3, 0, 2, 0, 2, -3.0, 0.0, 1.0, 0.0 }, { 0, -1, 2, 2, 2, -3.0, 0.0, 1.0, 0.0 }, { 1, 1, 2, 0, 2, 2.0, 0.0, -1.0, 0.0 }, { -1, 0, 2, -2, 1, -2.0, 0.0, 1.0, 0.0 }, { 2, 0, 0, 0, 1, 2.0, 0.0, -1.0, 0.0 }, { 1, 0, 0, 0, 2, -2.0, 0.0, 1.0, 0.0 }, { 3, 0, 0, 0, 0, 2.0, 0.0, 0.0, 0.0 }, { 0, 0, 2, 1, 2, 2.0, 0.0, -1.0, 0.0 }, { -1, 0, 0, 0, 2, 1.0, 0.0, -1.0, 0.0 }, { 1, 0, 0, -4, 0, -1.0, 0.0, 0.0, 0.0 }, /* 81-90 */ { -2, 0, 2, 2, 2, 1.0, 0.0, -1.0, 0.0 }, { -1, 0, 2, 4, 2, -2.0, 0.0, 1.0, 0.0 }, { 2, 0, 0, -4, 0, -1.0, 0.0, 0.0, 0.0 }, { 1, 1, 2, -2, 2, 1.0, 0.0, -1.0, 0.0 }, { 1, 0, 2, 2, 1, -1.0, 0.0, 1.0, 0.0 }, { -2, 0, 2, 4, 2, -1.0, 0.0, 1.0, 0.0 }, { -1, 0, 4, 0, 2, 1.0, 0.0, 0.0, 0.0 }, { 1, -1, 0, -2, 0, 1.0, 0.0, 0.0, 0.0 }, { 2, 0, 2, -2, 1, 1.0, 0.0, -1.0, 0.0 }, { 2, 0, 2, 2, 2, -1.0, 0.0, 0.0, 0.0 }, /* 91-100 */ { 1, 0, 0, 2, 1, -1.0, 0.0, 0.0, 0.0 }, { 0, 0, 4, -2, 2, 1.0, 0.0, 0.0, 0.0 }, { 3, 0, 2, -2, 2, 1.0, 0.0, 0.0, 0.0 }, { 1, 0, 2, -2, 0, -1.0, 0.0, 0.0, 0.0 }, { 0, 1, 2, 0, 1, 1.0, 0.0, 0.0, 0.0 }, { -1, -1, 0, 2, 1, 1.0, 0.0, 0.0, 0.0 }, { 0, 0, -2, 0, 1, -1.0, 0.0, 0.0, 0.0 }, { 0, 0, 2, -1, 2, -1.0, 0.0, 0.0, 0.0 }, { 0, 1, 0, 2, 0, -1.0, 0.0, 0.0, 0.0 }, { 1, 0, -2, -2, 0, -1.0, 0.0, 0.0, 0.0 }, /* 101-106 */ { 0, -1, 2, 0, 1, -1.0, 0.0, 0.0, 0.0 }, { 1, 1, 0, -2, 1, -1.0, 0.0, 0.0, 0.0 }, { 1, 0, -2, 2, 0, -1.0, 0.0, 0.0, 0.0 }, { 2, 0, 0, 2, 0, 1.0, 0.0, 0.0, 0.0 }, { 0, 0, 2, 4, 2, -1.0, 0.0, 0.0, 0.0 }, { 0, 1, 0, 1, 0, 1.0, 0.0, 0.0, 0.0 } }; /* Number of terms in the series */ const int NT = (int) (sizeof x / sizeof x[0]); /*--------------------------------------------------------------------*/ /* Interval between fundamental epoch J2000.0 and given date (JC). */ t = ((date1 - DJ00) + date2) / DJC; /* --------------------- */ /* Fundamental arguments */ /* --------------------- */ /* Mean longitude of Moon minus mean longitude of Moon's perigee. */ el = iauAnpm( (485866.733 + (715922.633 + (31.310 + 0.064 * t) * t) * t) * DAS2R + fmod(1325.0 * t, 1.0) * D2PI); /* Mean longitude of Sun minus mean longitude of Sun's perigee. */ elp = iauAnpm( (1287099.804 + (1292581.224 + (-0.577 - 0.012 * t) * t) * t) * DAS2R + fmod(99.0 * t, 1.0) * D2PI); /* Mean longitude of Moon minus mean longitude of Moon's node. */ f = iauAnpm( (335778.877 + (295263.137 + (-13.257 + 0.011 * t) * t) * t) * DAS2R + fmod(1342.0 * t, 1.0) * D2PI); /* Mean elongation of Moon from Sun. */ d = iauAnpm( (1072261.307 + (1105601.328 + (-6.891 + 0.019 * t) * t) * t) * DAS2R + fmod(1236.0 * t, 1.0) * D2PI); /* Longitude of the mean ascending node of the lunar orbit on the */ /* ecliptic, measured from the mean equinox of date. */ om = iauAnpm( (450160.280 + (-482890.539 + (7.455 + 0.008 * t) * t) * t) * DAS2R + fmod(-5.0 * t, 1.0) * D2PI); /* --------------- */ /* Nutation series */ /* --------------- */ /* Initialize nutation components. */ dp = 0.0; de = 0.0; /* Sum the nutation terms, ending with the biggest. */ for (j = NT-1; j >= 0; j--) { /* Form argument for current term. */ arg = (double)x[j].nl * el + (double)x[j].nlp * elp + (double)x[j].nf * f + (double)x[j].nd * d + (double)x[j].nom * om; /* Accumulate current nutation term. */ s = x[j].sp + x[j].spt * t; c = x[j].ce + x[j].cet * t; if (s != 0.0) dp += s * sin(arg); if (c != 0.0) de += c * cos(arg); } /* Convert results from 0.1 mas units to radians. */ *dpsi = dp * U2R; *deps = de * U2R; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/nutm80.c0000644000113000011300000001451012507252057014172 0ustar bellsbells#include "sofa.h" void iauNutm80(double date1, double date2, double rmatn[3][3]) /* ** - - - - - - - - - - ** i a u N u t m 8 0 ** - - - - - - - - - - ** ** Form the matrix of nutation for a given date, IAU 1980 model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TDB date (Note 1) ** ** Returned: ** rmatn double[3][3] nutation matrix ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(true) = rmatn * V(mean), ** where the p-vector V(true) is with respect to the true ** equatorial triad of date and the p-vector V(mean) is with ** respect to the mean equatorial triad of date. ** ** Called: ** iauNut80 nutation, IAU 1980 ** iauObl80 mean obliquity, IAU 1980 ** iauNumat form nutation matrix ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double dpsi, deps, epsa; /* Nutation components and mean obliquity. */ iauNut80(date1, date2, &dpsi, &deps); epsa = iauObl80(date1, date2); /* Build the rotation matrix. */ iauNumat(epsa, dpsi, deps, rmatn); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/obl06.c0000644000113000011300000001441512507252057013765 0ustar bellsbells#include "sofa.h" double iauObl06(double date1, double date2) /* ** - - - - - - - - - ** i a u O b l 0 6 ** - - - - - - - - - ** ** Mean obliquity of the ecliptic, IAU 2006 precession model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double obliquity of the ecliptic (radians, Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The result is the angle between the ecliptic and mean equator of ** date date1+date2. ** ** Reference: ** ** Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double t, eps0; /* Interval between fundamental date J2000.0 and given date (JC). */ t = ((date1 - DJ00) + date2) / DJC; /* Mean obliquity. */ eps0 = (84381.406 + (-46.836769 + ( -0.0001831 + ( 0.00200340 + ( -0.000000576 + ( -0.0000000434) * t) * t) * t) * t) * t) * DAS2R; return eps0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/obl80.c0000644000113000011300000001447212507252057013772 0ustar bellsbells#include "sofa.h" double iauObl80(double date1, double date2) /* ** - - - - - - - - - ** i a u O b l 8 0 ** - - - - - - - - - ** ** Mean obliquity of the ecliptic, IAU 1980 model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double obliquity of the ecliptic (radians, Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The result is the angle between the ecliptic and mean equator of ** date date1+date2. ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Expression 3.222-1 (p114). ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double t, eps0; /* Interval between fundamental epoch J2000.0 and given date (JC). */ t = ((date1 - DJ00) + date2) / DJC; /* Mean obliquity of date. */ eps0 = DAS2R * (84381.448 + (-46.8150 + (-0.00059 + ( 0.001813) * t) * t) * t); return eps0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/p06e.c0000644000113000011300000003232712507252057013617 0ustar bellsbells#include "sofa.h" void iauP06e(double date1, double date2, double *eps0, double *psia, double *oma, double *bpa, double *bqa, double *pia, double *bpia, double *epsa, double *chia, double *za, double *zetaa, double *thetaa, double *pa, double *gam, double *phi, double *psi) /* ** - - - - - - - - ** i a u P 0 6 e ** - - - - - - - - ** ** Precession angles, IAU 2006, equinox based. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical models. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (see Note 2): ** eps0 double epsilon_0 ** psia double psi_A ** oma double omega_A ** bpa double P_A ** bqa double Q_A ** pia double pi_A ** bpia double Pi_A ** epsa double obliquity epsilon_A ** chia double chi_A ** za double z_A ** zetaa double zeta_A ** thetaa double theta_A ** pa double p_A ** gam double F-W angle gamma_J2000 ** phi double F-W angle phi_J2000 ** psi double F-W angle psi_J2000 ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) This function returns the set of equinox based angles for the ** Capitaine et al. "P03" precession theory, adopted by the IAU in ** 2006. The angles are set out in Table 1 of Hilton et al. (2006): ** ** eps0 epsilon_0 obliquity at J2000.0 ** psia psi_A luni-solar precession ** oma omega_A inclination of equator wrt J2000.0 ecliptic ** bpa P_A ecliptic pole x, J2000.0 ecliptic triad ** bqa Q_A ecliptic pole -y, J2000.0 ecliptic triad ** pia pi_A angle between moving and J2000.0 ecliptics ** bpia Pi_A longitude of ascending node of the ecliptic ** epsa epsilon_A obliquity of the ecliptic ** chia chi_A planetary precession ** za z_A equatorial precession: -3rd 323 Euler angle ** zetaa zeta_A equatorial precession: -1st 323 Euler angle ** thetaa theta_A equatorial precession: 2nd 323 Euler angle ** pa p_A general precession ** gam gamma_J2000 J2000.0 RA difference of ecliptic poles ** phi phi_J2000 J2000.0 codeclination of ecliptic pole ** psi psi_J2000 longitude difference of equator poles, J2000.0 ** ** The returned values are all radians. ** ** 3) Hilton et al. (2006) Table 1 also contains angles that depend on ** models distinct from the P03 precession theory itself, namely the ** IAU 2000A frame bias and nutation. The quoted polynomials are ** used in other SOFA functions: ** ** . iauXy06 contains the polynomial parts of the X and Y series. ** ** . iauS06 contains the polynomial part of the s+XY/2 series. ** ** . iauPfw06 implements the series for the Fukushima-Williams ** angles that are with respect to the GCRS pole (i.e. the variants ** that include frame bias). ** ** 4) The IAU resolution stipulated that the choice of parameterization ** was left to the user, and so an IAU compliant precession ** implementation can be constructed using various combinations of ** the angles returned by the present function. ** ** 5) The parameterization used by SOFA is the version of the Fukushima- ** Williams angles that refers directly to the GCRS pole. These ** angles may be calculated by calling the function iauPfw06. SOFA ** also supports the direct computation of the CIP GCRS X,Y by ** series, available by calling iauXy06. ** ** 6) The agreement between the different parameterizations is at the ** 1 microarcsecond level in the present era. ** ** 7) When constructing a precession formulation that refers to the GCRS ** pole rather than the dynamical pole, it may (depending on the ** choice of angles) be necessary to introduce the frame bias ** explicitly. ** ** 8) It is permissible to re-use the same variable in the returned ** arguments. The quantities are stored in the stated order. ** ** Reference: ** ** Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351 ** ** Called: ** iauObl06 mean obliquity, IAU 2006 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double t; /* Interval between fundamental date J2000.0 and given date (JC). */ t = ((date1 - DJ00) + date2) / DJC; /* Obliquity at J2000.0. */ *eps0 = 84381.406 * DAS2R; /* Luni-solar precession. */ *psia = ( 5038.481507 + ( -1.0790069 + ( -0.00114045 + ( 0.000132851 + ( -0.0000000951 ) * t) * t) * t) * t) * t * DAS2R; /* Inclination of mean equator with respect to the J2000.0 ecliptic. */ *oma = *eps0 + ( -0.025754 + ( 0.0512623 + ( -0.00772503 + ( -0.000000467 + ( 0.0000003337 ) * t) * t) * t) * t) * t * DAS2R; /* Ecliptic pole x, J2000.0 ecliptic triad. */ *bpa = ( 4.199094 + ( 0.1939873 + ( -0.00022466 + ( -0.000000912 + ( 0.0000000120 ) * t) * t) * t) * t) * t * DAS2R; /* Ecliptic pole -y, J2000.0 ecliptic triad. */ *bqa = ( -46.811015 + ( 0.0510283 + ( 0.00052413 + ( -0.000000646 + ( -0.0000000172 ) * t) * t) * t) * t) * t * DAS2R; /* Angle between moving and J2000.0 ecliptics. */ *pia = ( 46.998973 + ( -0.0334926 + ( -0.00012559 + ( 0.000000113 + ( -0.0000000022 ) * t) * t) * t) * t) * t * DAS2R; /* Longitude of ascending node of the moving ecliptic. */ *bpia = ( 629546.7936 + ( -867.95758 + ( 0.157992 + ( -0.0005371 + ( -0.00004797 + ( 0.000000072 ) * t) * t) * t) * t) * t) * DAS2R; /* Mean obliquity of the ecliptic. */ *epsa = iauObl06(date1, date2); /* Planetary precession. */ *chia = ( 10.556403 + ( -2.3814292 + ( -0.00121197 + ( 0.000170663 + ( -0.0000000560 ) * t) * t) * t) * t) * t * DAS2R; /* Equatorial precession: minus the third of the 323 Euler angles. */ *za = ( -2.650545 + ( 2306.077181 + ( 1.0927348 + ( 0.01826837 + ( -0.000028596 + ( -0.0000002904 ) * t) * t) * t) * t) * t) * DAS2R; /* Equatorial precession: minus the first of the 323 Euler angles. */ *zetaa = ( 2.650545 + ( 2306.083227 + ( 0.2988499 + ( 0.01801828 + ( -0.000005971 + ( -0.0000003173 ) * t) * t) * t) * t) * t) * DAS2R; /* Equatorial precession: second of the 323 Euler angles. */ *thetaa = ( 2004.191903 + ( -0.4294934 + ( -0.04182264 + ( -0.000007089 + ( -0.0000001274 ) * t) * t) * t) * t) * t * DAS2R; /* General precession. */ *pa = ( 5028.796195 + ( 1.1054348 + ( 0.00007964 + ( -0.000023857 + ( 0.0000000383 ) * t) * t) * t) * t) * t * DAS2R; /* Fukushima-Williams angles for precession. */ *gam = ( 10.556403 + ( 0.4932044 + ( -0.00031238 + ( -0.000002788 + ( 0.0000000260 ) * t) * t) * t) * t) * t * DAS2R; *phi = *eps0 + ( -46.811015 + ( 0.0511269 + ( 0.00053289 + ( -0.000000440 + ( -0.0000000176 ) * t) * t) * t) * t) * t * DAS2R; *psi = ( 5038.481507 + ( 1.5584176 + ( -0.00018522 + ( -0.000026452 + ( -0.0000000148 ) * t) * t) * t) * t) * t * DAS2R; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/p2pv.c0000644000113000011300000001164512507252057013734 0ustar bellsbells#include "sofa.h" void iauP2pv(double p[3], double pv[2][3]) /* ** - - - - - - - - ** i a u P 2 p v ** - - - - - - - - ** ** Extend a p-vector to a pv-vector by appending a zero velocity. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** p double[3] p-vector ** ** Returned: ** pv double[2][3] pv-vector ** ** Called: ** iauCp copy p-vector ** iauZp zero p-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { iauCp(p, pv[0]); iauZp(pv[1]); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/p2s.c0000644000113000011300000001223412507252057013544 0ustar bellsbells#include "sofa.h" void iauP2s(double p[3], double *theta, double *phi, double *r) /* ** - - - - - - - ** i a u P 2 s ** - - - - - - - ** ** P-vector to spherical polar coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** p double[3] p-vector ** ** Returned: ** theta double longitude angle (radians) ** phi double latitude angle (radians) ** r double radial distance ** ** Notes: ** ** 1) If P is null, zero theta, phi and r are returned. ** ** 2) At either pole, zero theta is returned. ** ** Called: ** iauC2s p-vector to spherical ** iauPm modulus of p-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { iauC2s(p, theta, phi); *r = iauPm(p); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pap.c0000644000113000011300000001515712507252057013627 0ustar bellsbells#include "sofa.h" double iauPap(double a[3], double b[3]) /* ** - - - - - - - ** i a u P a p ** - - - - - - - ** ** Position-angle from two p-vectors. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[3] direction of reference point ** b double[3] direction of point whose PA is required ** ** Returned (function value): ** double position angle of b with respect to a (radians) ** ** Notes: ** ** 1) The result is the position angle, in radians, of direction b with ** respect to direction a. It is in the range -pi to +pi. The ** sense is such that if b is a small distance "north" of a the ** position angle is approximately zero, and if b is a small ** distance "east" of a the position angle is approximately +pi/2. ** ** 2) The vectors a and b need not be of unit length. ** ** 3) Zero is returned if the two directions are the same or if either ** vector is null. ** ** 4) If vector a is at a pole, the result is ill-defined. ** ** Called: ** iauPn decompose p-vector into modulus and direction ** iauPm modulus of p-vector ** iauPxp vector product of two p-vectors ** iauPmp p-vector minus p-vector ** iauPdp scalar product of two p-vectors ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double am, au[3], bm, st, ct, xa, ya, za, eta[3], xi[3], a2b[3], pa; /* Modulus and direction of the a vector. */ iauPn(a, &am, au); /* Modulus of the b vector. */ bm = iauPm(b); /* Deal with the case of a null vector. */ if ((am == 0.0) || (bm == 0.0)) { st = 0.0; ct = 1.0; } else { /* The "north" axis tangential from a (arbitrary length). */ xa = a[0]; ya = a[1]; za = a[2]; eta[0] = -xa * za; eta[1] = -ya * za; eta[2] = xa*xa + ya*ya; /* The "east" axis tangential from a (same length). */ iauPxp(eta, au, xi); /* The vector from a to b. */ iauPmp(b, a, a2b); /* Resolve into components along the north and east axes. */ st = iauPdp(a2b, xi); ct = iauPdp(a2b, eta); /* Deal with degenerate cases. */ if ((st == 0.0) && (ct == 0.0)) ct = 1.0; } /* Position angle. */ pa = atan2(st, ct); return pa; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pas.c0000644000113000011300000001300512507252057013620 0ustar bellsbells#include "sofa.h" double iauPas(double al, double ap, double bl, double bp) /* ** - - - - - - - ** i a u P a s ** - - - - - - - ** ** Position-angle from spherical coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** al double longitude of point A (e.g. RA) in radians ** ap double latitude of point A (e.g. Dec) in radians ** bl double longitude of point B ** bp double latitude of point B ** ** Returned (function value): ** double position angle of B with respect to A ** ** Notes: ** ** 1) The result is the bearing (position angle), in radians, of point ** B with respect to point A. It is in the range -pi to +pi. The ** sense is such that if B is a small distance "east" of point A, ** the bearing is approximately +pi/2. ** ** 2) Zero is returned if the two points are coincident. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double dl, x, y, pa; dl = bl - al; y = sin(dl) * cos(bp); x = sin(bp) * cos(ap) - cos(bp) * sin(ap) * cos(dl); pa = ((x != 0.0) || (y != 0.0)) ? atan2(y, x) : 0.0; return pa; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pb06.c0000644000113000011300000001676412507252057013623 0ustar bellsbells#include "sofa.h" void iauPb06(double date1, double date2, double *bzeta, double *bz, double *btheta) /* ** - - - - - - - - ** i a u P b 0 6 ** - - - - - - - - ** ** This function forms three Euler angles which implement general ** precession from epoch J2000.0, using the IAU 2006 model. Frame ** bias (the offset between ICRS and mean J2000.0) is included. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** bzeta double 1st rotation: radians cw around z ** bz double 3rd rotation: radians cw around z ** btheta double 2nd rotation: radians ccw around y ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The traditional accumulated precession angles zeta_A, z_A, ** theta_A cannot be obtained in the usual way, namely through ** polynomial expressions, because of the frame bias. The latter ** means that two of the angles undergo rapid changes near this ** date. They are instead the results of decomposing the ** precession-bias matrix obtained by using the Fukushima-Williams ** method, which does not suffer from the problem. The ** decomposition returns values which can be used in the ** conventional formulation and which include frame bias. ** ** 3) The three angles are returned in the conventional order, which ** is not the same as the order of the corresponding Euler ** rotations. The precession-bias matrix is ** R_3(-z) x R_2(+theta) x R_3(-zeta). ** ** 4) Should zeta_A, z_A, theta_A angles be required that do not ** contain frame bias, they are available by calling the SOFA ** function iauP06e. ** ** Called: ** iauPmat06 PB matrix, IAU 2006 ** iauRz rotate around Z-axis ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double r[3][3], r31, r32; /* Precession matrix via Fukushima-Williams angles. */ iauPmat06(date1, date2, r); /* Solve for z. */ *bz = atan2(r[1][2], r[0][2]); /* Remove it from the matrix. */ iauRz(*bz, r); /* Solve for the remaining two angles. */ *bzeta = atan2 (r[1][0], r[1][1]); r31 = r[2][0]; r32 = r[2][1]; *btheta = atan2(-dsign(sqrt(r31 * r31 + r32 * r32), r[0][2]), r[2][2]); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pdp.c0000644000113000011300000001161712507252057013627 0ustar bellsbells#include "sofa.h" double iauPdp(double a[3], double b[3]) /* ** - - - - - - - ** i a u P d p ** - - - - - - - ** ** p-vector inner (=scalar=dot) product. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[3] first p-vector ** b double[3] second p-vector ** ** Returned (function value): ** double a . b ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double w; w = a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; return w; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pfw06.c0000644000113000011300000001743312507252057014010 0ustar bellsbells#include "sofa.h" void iauPfw06(double date1, double date2, double *gamb, double *phib, double *psib, double *epsa) /* ** - - - - - - - - - ** i a u P f w 0 6 ** - - - - - - - - - ** ** Precession angles, IAU 2006 (Fukushima-Williams 4-angle formulation). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** gamb double F-W angle gamma_bar (radians) ** phib double F-W angle phi_bar (radians) ** psib double F-W angle psi_bar (radians) ** epsa double F-W angle epsilon_A (radians) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) Naming the following points: ** ** e = J2000.0 ecliptic pole, ** p = GCRS pole, ** E = mean ecliptic pole of date, ** and P = mean pole of date, ** ** the four Fukushima-Williams angles are as follows: ** ** gamb = gamma_bar = epE ** phib = phi_bar = pE ** psib = psi_bar = pEP ** epsa = epsilon_A = EP ** ** 3) The matrix representing the combined effects of frame bias and ** precession is: ** ** PxB = R_1(-epsa).R_3(-psib).R_1(phib).R_3(gamb) ** ** 4) The matrix representing the combined effects of frame bias, ** precession and nutation is simply: ** ** NxPxB = R_1(-epsa-dE).R_3(-psib-dP).R_1(phib).R_3(gamb) ** ** where dP and dE are the nutation components with respect to the ** ecliptic of date. ** ** Reference: ** ** Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351 ** ** Called: ** iauObl06 mean obliquity, IAU 2006 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double t; /* Interval between fundamental date J2000.0 and given date (JC). */ t = ((date1 - DJ00) + date2) / DJC; /* P03 bias+precession angles. */ *gamb = ( -0.052928 + ( 10.556378 + ( 0.4932044 + ( -0.00031238 + ( -0.000002788 + ( 0.0000000260 ) * t) * t) * t) * t) * t) * DAS2R; *phib = ( 84381.412819 + ( -46.811016 + ( 0.0511268 + ( 0.00053289 + ( -0.000000440 + ( -0.0000000176 ) * t) * t) * t) * t) * t) * DAS2R; *psib = ( -0.041775 + ( 5038.481484 + ( 1.5584175 + ( -0.00018522 + ( -0.000026452 + ( -0.0000000148 ) * t) * t) * t) * t) * t) * DAS2R; *epsa = iauObl06(date1, date2); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/plan94.c0000644000113000011300000005521412507252057014154 0ustar bellsbells#include "sofa.h" int iauPlan94(double date1, double date2, int np, double pv[2][3]) /* ** - - - - - - - - - - ** i a u P l a n 9 4 ** - - - - - - - - - - ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Approximate heliocentric position and velocity of a nominated major ** planet: Mercury, Venus, EMB, Mars, Jupiter, Saturn, Uranus or ** Neptune (but not the Earth itself). ** ** Given: ** date1 double TDB date part A (Note 1) ** date2 double TDB date part B (Note 1) ** np int planet (1=Mercury, 2=Venus, 3=EMB, 4=Mars, ** 5=Jupiter, 6=Saturn, 7=Uranus, 8=Neptune) ** ** Returned (argument): ** pv double[2][3] planet p,v (heliocentric, J2000.0, AU,AU/d) ** ** Returned (function value): ** int status: -1 = illegal NP (outside 1-8) ** 0 = OK ** +1 = warning: year outside 1000-3000 ** +2 = warning: failed to converge ** ** Notes: ** ** 1) The date date1+date2 is in the TDB time scale (in practice TT can ** be used) and is a Julian Date, apportioned in any convenient way ** between the two arguments. For example, JD(TDB)=2450123.7 could ** be expressed in any of these ways, among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. The limited ** accuracy of the present algorithm is such that any of the methods ** is satisfactory. ** ** 2) If an np value outside the range 1-8 is supplied, an error status ** (function value -1) is returned and the pv vector set to zeroes. ** ** 3) For np=3 the result is for the Earth-Moon Barycenter. To obtain ** the heliocentric position and velocity of the Earth, use instead ** the SOFA function iauEpv00. ** ** 4) On successful return, the array pv contains the following: ** ** pv[0][0] x } ** pv[0][1] y } heliocentric position, AU ** pv[0][2] z } ** ** pv[1][0] xdot } ** pv[1][1] ydot } heliocentric velocity, AU/d ** pv[1][2] zdot } ** ** The reference frame is equatorial and is with respect to the ** mean equator and equinox of epoch J2000.0. ** ** 5) The algorithm is due to J.L. Simon, P. Bretagnon, J. Chapront, ** M. Chapront-Touze, G. Francou and J. Laskar (Bureau des ** Longitudes, Paris, France). From comparisons with JPL ** ephemeris DE102, they quote the following maximum errors ** over the interval 1800-2050: ** ** L (arcsec) B (arcsec) R (km) ** ** Mercury 4 1 300 ** Venus 5 1 800 ** EMB 6 1 1000 ** Mars 17 1 7700 ** Jupiter 71 5 76000 ** Saturn 81 13 267000 ** Uranus 86 7 712000 ** Neptune 11 1 253000 ** ** Over the interval 1000-3000, they report that the accuracy is no ** worse than 1.5 times that over 1800-2050. Outside 1000-3000 the ** accuracy declines. ** ** Comparisons of the present function with the JPL DE200 ephemeris ** give the following RMS errors over the interval 1960-2025: ** ** position (km) velocity (m/s) ** ** Mercury 334 0.437 ** Venus 1060 0.855 ** EMB 2010 0.815 ** Mars 7690 1.98 ** Jupiter 71700 7.70 ** Saturn 199000 19.4 ** Uranus 564000 16.4 ** Neptune 158000 14.4 ** ** Comparisons against DE200 over the interval 1800-2100 gave the ** following maximum absolute differences. (The results using ** DE406 were essentially the same.) ** ** L (arcsec) B (arcsec) R (km) Rdot (m/s) ** ** Mercury 7 1 500 0.7 ** Venus 7 1 1100 0.9 ** EMB 9 1 1300 1.0 ** Mars 26 1 9000 2.5 ** Jupiter 78 6 82000 8.2 ** Saturn 87 14 263000 24.6 ** Uranus 86 7 661000 27.4 ** Neptune 11 2 248000 21.4 ** ** 6) The present SOFA re-implementation of the original Simon et al. ** Fortran code differs from the original in the following respects: ** ** * C instead of Fortran. ** ** * The date is supplied in two parts. ** ** * The result is returned only in equatorial Cartesian form; ** the ecliptic longitude, latitude and radius vector are not ** returned. ** ** * The result is in the J2000.0 equatorial frame, not ecliptic. ** ** * More is done in-line: there are fewer calls to subroutines. ** ** * Different error/warning status values are used. ** ** * A different Kepler's-equation-solver is used (avoiding ** use of double precision complex). ** ** * Polynomials in t are nested to minimize rounding errors. ** ** * Explicit double constants are used to avoid mixed-mode ** expressions. ** ** None of the above changes affects the result significantly. ** ** 7) The returned status indicates the most serious condition ** encountered during execution of the function. Illegal np is ** considered the most serious, overriding failure to converge, ** which in turn takes precedence over the remote date warning. ** ** Called: ** iauAnp normalize angle into range 0 to 2pi ** ** Reference: Simon, J.L, Bretagnon, P., Chapront, J., ** Chapront-Touze, M., Francou, G., and Laskar, J., ** Astron. Astrophys. 282, 663 (1994). ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Gaussian constant */ static const double GK = 0.017202098950; /* Sin and cos of J2000.0 mean obliquity (IAU 1976) */ static const double SINEPS = 0.3977771559319137; static const double COSEPS = 0.9174820620691818; /* Maximum number of iterations allowed to solve Kepler's equation */ static const int KMAX = 10; int jstat, i, k; double t, da, dl, de, dp, di, dom, dmu, arga, argl, am, ae, dae, ae2, at, r, v, si2, xq, xp, tl, xsw, xcw, xm2, xf, ci2, xms, xmc, xpxq2, x, y, z; /* Planetary inverse masses */ static const double amas[] = { 6023600.0, /* Mercury */ 408523.5, /* Venus */ 328900.5, /* EMB */ 3098710.0, /* Mars */ 1047.355, /* Jupiter */ 3498.5, /* Saturn */ 22869.0, /* Uranus */ 19314.0 }; /* Neptune */ /* ** Tables giving the mean Keplerian elements, limited to t^2 terms: ** ** a semi-major axis (AU) ** dlm mean longitude (degree and arcsecond) ** e eccentricity ** pi longitude of the perihelion (degree and arcsecond) ** dinc inclination (degree and arcsecond) ** omega longitude of the ascending node (degree and arcsecond) */ static const double a[][3] = { { 0.3870983098, 0.0, 0.0 }, /* Mercury */ { 0.7233298200, 0.0, 0.0 }, /* Venus */ { 1.0000010178, 0.0, 0.0 }, /* EMB */ { 1.5236793419, 3e-10, 0.0 }, /* Mars */ { 5.2026032092, 19132e-10, -39e-10 }, /* Jupiter */ { 9.5549091915, -0.0000213896, 444e-10 }, /* Saturn */ { 19.2184460618, -3716e-10, 979e-10 }, /* Uranus */ { 30.1103868694, -16635e-10, 686e-10 } /* Neptune */ }; static const double dlm[][3] = { { 252.25090552, 5381016286.88982, -1.92789 }, { 181.97980085, 2106641364.33548, 0.59381 }, { 100.46645683, 1295977422.83429, -2.04411 }, { 355.43299958, 689050774.93988, 0.94264 }, { 34.35151874, 109256603.77991, -30.60378 }, { 50.07744430, 43996098.55732, 75.61614 }, { 314.05500511, 15424811.93933, -1.75083 }, { 304.34866548, 7865503.20744, 0.21103 } }; static const double e[][3] = { { 0.2056317526, 0.0002040653, -28349e-10 }, { 0.0067719164, -0.0004776521, 98127e-10 }, { 0.0167086342, -0.0004203654, -0.0000126734 }, { 0.0934006477, 0.0009048438, -80641e-10 }, { 0.0484979255, 0.0016322542, -0.0000471366 }, { 0.0555481426, -0.0034664062, -0.0000643639 }, { 0.0463812221, -0.0002729293, 0.0000078913 }, { 0.0094557470, 0.0000603263, 0.0 } }; static const double pi[][3] = { { 77.45611904, 5719.11590, -4.83016 }, { 131.56370300, 175.48640, -498.48184 }, { 102.93734808, 11612.35290, 53.27577 }, { 336.06023395, 15980.45908, -62.32800 }, { 14.33120687, 7758.75163, 259.95938 }, { 93.05723748, 20395.49439, 190.25952 }, { 173.00529106, 3215.56238, -34.09288 }, { 48.12027554, 1050.71912, 27.39717 } }; static const double dinc[][3] = { { 7.00498625, -214.25629, 0.28977 }, { 3.39466189, -30.84437, -11.67836 }, { 0.0, 469.97289, -3.35053 }, { 1.84972648, -293.31722, -8.11830 }, { 1.30326698, -71.55890, 11.95297 }, { 2.48887878, 91.85195, -17.66225 }, { 0.77319689, -60.72723, 1.25759 }, { 1.76995259, 8.12333, 0.08135 } }; static const double omega[][3] = { { 48.33089304, -4515.21727, -31.79892 }, { 76.67992019, -10008.48154, -51.32614 }, { 174.87317577, -8679.27034, 15.34191 }, { 49.55809321, -10620.90088, -230.57416 }, { 100.46440702, 6362.03561, 326.52178 }, { 113.66550252, -9240.19942, -66.23743 }, { 74.00595701, 2669.15033, 145.93964 }, { 131.78405702, -221.94322, -0.78728 } }; /* Tables for trigonometric terms to be added to the mean elements of */ /* the semi-major axes */ static const double kp[][9] = { { 69613, 75645, 88306, 59899, 15746, 71087, 142173, 3086, 0 }, { 21863, 32794, 26934, 10931, 26250, 43725, 53867, 28939, 0 }, { 16002, 21863, 32004, 10931, 14529, 16368, 15318, 32794, 0 }, { 6345, 7818, 15636, 7077, 8184, 14163, 1107, 4872, 0 }, { 1760, 1454, 1167, 880, 287, 2640, 19, 2047, 1454 }, { 574, 0, 880, 287, 19, 1760, 1167, 306, 574 }, { 204, 0, 177, 1265, 4, 385, 200, 208, 204 }, { 0, 102, 106, 4, 98, 1367, 487, 204, 0 } }; static const double ca[][9] = { { 4, -13, 11, -9, -9, -3, -1, 4, 0 }, { -156, 59, -42, 6, 19, -20, -10, -12, 0 }, { 64, -152, 62, -8, 32, -41, 19, -11, 0 }, { 124, 621, -145, 208, 54, -57, 30, 15, 0 }, { -23437, -2634, 6601, 6259, -1507,-1821, 2620, -2115, -1489 }, { 62911,-119919, 79336,17814,-24241,12068, 8306, -4893, 8902 }, { 389061,-262125,-44088, 8387,-22976,-2093, -615, -9720, 6633 }, { -412235,-157046,-31430,37817, -9740, -13, -7449, 9644, 0 } }; static const double sa[][9] = { { -29, -1, 9, 6, -6, 5, 4, 0, 0 }, { -48, -125, -26, -37, 18, -13, -20, -2, 0 }, { -150, -46, 68, 54, 14, 24, -28, 22, 0 }, { -621, 532, -694, -20, 192, -94, 71, -73, 0 }, { -14614,-19828, -5869, 1881, -4372, -2255, 782, 930, 913 }, { 139737, 0, 24667, 51123, -5102, 7429, -4095, -1976, -9566 }, { -138081, 0, 37205,-49039,-41901,-33872,-27037,-12474, 18797 }, { 0, 28492,133236, 69654, 52322,-49577,-26430, -3593, 0 } }; /* Tables giving the trigonometric terms to be added to the mean */ /* elements of the mean longitudes */ static const double kq[][10] = { { 3086,15746,69613,59899,75645,88306, 12661, 2658, 0, 0 }, { 21863,32794,10931, 73, 4387,26934, 1473, 2157, 0, 0 }, { 10,16002,21863,10931, 1473,32004, 4387, 73, 0, 0 }, { 10, 6345, 7818, 1107,15636, 7077, 8184, 532, 10, 0 }, { 19, 1760, 1454, 287, 1167, 880, 574, 2640, 19, 1454 }, { 19, 574, 287, 306, 1760, 12, 31, 38, 19, 574 }, { 4, 204, 177, 8, 31, 200, 1265, 102, 4, 204 }, { 4, 102, 106, 8, 98, 1367, 487, 204, 4, 102 } }; static const double cl[][10] = { { 21, -95, -157, 41, -5, 42, 23, 30, 0, 0 }, { -160, -313, -235, 60, -74, -76, -27, 34, 0, 0 }, { -325, -322, -79, 232, -52, 97, 55, -41, 0, 0 }, { 2268, -979, 802, 602, -668, -33, 345, 201, -55, 0 }, { 7610, -4997,-7689,-5841,-2617, 1115,-748,-607, 6074, 354 }, { -18549, 30125,20012, -730, 824, 23,1289,-352, -14767, -2062 }, { -135245,-14594, 4197,-4030,-5630,-2898,2540,-306, 2939, 1986 }, { 89948, 2103, 8963, 2695, 3682, 1648, 866,-154, -1963, -283 } }; static const double sl[][10] = { { -342, 136, -23, 62, 66, -52, -33, 17, 0, 0 }, { 524, -149, -35, 117, 151, 122, -71, -62, 0, 0 }, { -105, -137, 258, 35, -116, -88,-112, -80, 0, 0 }, { 854, -205, -936, -240, 140, -341, -97, -232, 536, 0 }, { -56980, 8016, 1012, 1448,-3024,-3710, 318, 503, 3767, 577 }, { 138606,-13478,-4964, 1441,-1319,-1482, 427, 1236, -9167, -1918 }, { 71234,-41116, 5334,-4935,-1848, 66, 434, -1748, 3780, -701 }, { -47645, 11647, 2166, 3194, 679, 0,-244, -419, -2531, 48 } }; /*--------------------------------------------------------------------*/ /* Validate the planet number. */ if ((np < 1) || (np > 8)) { jstat = -1; /* Reset the result in case of failure. */ for (k = 0; k < 2; k++) { for (i = 0; i < 3; i++) { pv[k][i] = 0.0; } } } else { /* Decrement the planet number to start at zero. */ np--; /* Time: Julian millennia since J2000.0. */ t = ((date1 - DJ00) + date2) / DJM; /* OK status unless remote date. */ jstat = fabs(t) <= 1.0 ? 0 : 1; /* Compute the mean elements. */ da = a[np][0] + (a[np][1] + a[np][2] * t) * t; dl = (3600.0 * dlm[np][0] + (dlm[np][1] + dlm[np][2] * t) * t) * DAS2R; de = e[np][0] + ( e[np][1] + e[np][2] * t) * t; dp = iauAnpm((3600.0 * pi[np][0] + (pi[np][1] + pi[np][2] * t) * t) * DAS2R); di = (3600.0 * dinc[np][0] + (dinc[np][1] + dinc[np][2] * t) * t) * DAS2R; dom = iauAnpm((3600.0 * omega[np][0] + (omega[np][1] + omega[np][2] * t) * t) * DAS2R); /* Apply the trigonometric terms. */ dmu = 0.35953620 * t; for (k = 0; k < 8; k++) { arga = kp[np][k] * dmu; argl = kq[np][k] * dmu; da += (ca[np][k] * cos(arga) + sa[np][k] * sin(arga)) * 1e-7; dl += (cl[np][k] * cos(argl) + sl[np][k] * sin(argl)) * 1e-7; } arga = kp[np][8] * dmu; da += t * (ca[np][8] * cos(arga) + sa[np][8] * sin(arga)) * 1e-7; for (k = 8; k < 10; k++) { argl = kq[np][k] * dmu; dl += t * (cl[np][k] * cos(argl) + sl[np][k] * sin(argl)) * 1e-7; } dl = fmod(dl, D2PI); /* Iterative soln. of Kepler's equation to get eccentric anomaly. */ am = dl - dp; ae = am + de * sin(am); k = 0; dae = 1.0; while (k < KMAX && fabs(dae) > 1e-12) { dae = (am - ae + de * sin(ae)) / (1.0 - de * cos(ae)); ae += dae; k++; if (k == KMAX-1) jstat = 2; } /* True anomaly. */ ae2 = ae / 2.0; at = 2.0 * atan2(sqrt((1.0 + de) / (1.0 - de)) * sin(ae2), cos(ae2)); /* Distance (AU) and speed (radians per day). */ r = da * (1.0 - de * cos(ae)); v = GK * sqrt((1.0 + 1.0 / amas[np]) / (da * da * da)); si2 = sin(di / 2.0); xq = si2 * cos(dom); xp = si2 * sin(dom); tl = at + dp; xsw = sin(tl); xcw = cos(tl); xm2 = 2.0 * (xp * xcw - xq * xsw); xf = da / sqrt(1 - de * de); ci2 = cos(di / 2.0); xms = (de * sin(dp) + xsw) * xf; xmc = (de * cos(dp) + xcw) * xf; xpxq2 = 2 * xp * xq; /* Position (J2000.0 ecliptic x,y,z in AU). */ x = r * (xcw - xm2 * xp); y = r * (xsw + xm2 * xq); z = r * (-xm2 * ci2); /* Rotate to equatorial. */ pv[0][0] = x; pv[0][1] = y * COSEPS - z * SINEPS; pv[0][2] = y * SINEPS + z * COSEPS; /* Velocity (J2000.0 ecliptic xdot,ydot,zdot in AU/d). */ x = v * (( -1.0 + 2.0 * xp * xp) * xms + xpxq2 * xmc); y = v * (( 1.0 - 2.0 * xq * xq) * xmc - xpxq2 * xms); z = v * (2.0 * ci2 * (xp * xms + xq * xmc)); /* Rotate to equatorial. */ pv[1][0] = x; pv[1][1] = y * COSEPS - z * SINEPS; pv[1][2] = y * SINEPS + z * COSEPS; } /* Return the status. */ return jstat; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pmat00.c0000644000113000011300000001466212507252057014150 0ustar bellsbells#include "sofa.h" void iauPmat00(double date1, double date2, double rbp[3][3]) /* ** - - - - - - - - - - ** i a u P m a t 0 0 ** - - - - - - - - - - ** ** Precession matrix (including frame bias) from GCRS to a specified ** date, IAU 2000 model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rbp double[3][3] bias-precession matrix (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(date) = rbp * V(GCRS), where ** the p-vector V(GCRS) is with respect to the Geocentric Celestial ** Reference System (IAU, 2000) and the p-vector V(date) is with ** respect to the mean equatorial triad of the given date. ** ** Called: ** iauBp00 frame bias and precession matrices, IAU 2000 ** ** Reference: ** ** IAU: Trans. International Astronomical Union, Vol. XXIVB; Proc. ** 24th General Assembly, Manchester, UK. Resolutions B1.3, B1.6. ** (2000) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double rb[3][3], rp[3][3]; /* Obtain the required matrix (discarding others). */ iauBp00(date1, date2, rb, rp, rbp); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pmat06.c0000644000113000011300000001503212507252057014146 0ustar bellsbells#include "sofa.h" void iauPmat06(double date1, double date2, double rbp[3][3]) /* ** - - - - - - - - - - ** i a u P m a t 0 6 ** - - - - - - - - - - ** ** Precession matrix (including frame bias) from GCRS to a specified ** date, IAU 2006 model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rbp double[3][3] bias-precession matrix (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(date) = rbp * V(GCRS), where ** the p-vector V(GCRS) is with respect to the Geocentric Celestial ** Reference System (IAU, 2000) and the p-vector V(date) is with ** respect to the mean equatorial triad of the given date. ** ** Called: ** iauPfw06 bias-precession F-W angles, IAU 2006 ** iauFw2m F-W angles to r-matrix ** ** References: ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 ** ** Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double gamb, phib, psib, epsa; /* Bias-precession Fukushima-Williams angles. */ iauPfw06(date1, date2, &gamb, &phib, &psib, &epsa); /* Form the matrix. */ iauFw2m(gamb, phib, psib, epsa, rbp); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pmat76.c0000644000113000011300000001657312507252057014170 0ustar bellsbells#include "sofa.h" void iauPmat76(double date1, double date2, double rmatp[3][3]) /* ** - - - - - - - - - - ** i a u P m a t 7 6 ** - - - - - - - - - - ** ** Precession matrix from J2000.0 to a specified date, IAU 1976 model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double ending date, TT (Note 1) ** ** Returned: ** rmatp double[3][3] precession matrix, J2000.0 -> date1+date2 ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(date) = RMATP * V(J2000), ** where the p-vector V(J2000) is with respect to the mean ** equatorial triad of epoch J2000.0 and the p-vector V(date) ** is with respect to the mean equatorial triad of the given ** date. ** ** 3) Though the matrix method itself is rigorous, the precession ** angles are expressed through canonical polynomials which are ** valid only for a limited time span. In addition, the IAU 1976 ** precession rate is known to be imperfect. The absolute accuracy ** of the present formulation is better than 0.1 arcsec from ** 1960AD to 2040AD, better than 1 arcsec from 1640AD to 2360AD, ** and remains below 3 arcsec for the whole of the period ** 500BC to 3000AD. The errors exceed 10 arcsec outside the ** range 1200BC to 3900AD, exceed 100 arcsec outside 4200BC to ** 5600AD and exceed 1000 arcsec outside 6800BC to 8200AD. ** ** Called: ** iauPrec76 accumulated precession angles, IAU 1976 ** iauIr initialize r-matrix to identity ** iauRz rotate around Z-axis ** iauRy rotate around Y-axis ** iauCr copy r-matrix ** ** References: ** ** Lieske, J.H., 1979, Astron.Astrophys. 73, 282. ** equations (6) & (7), p283. ** ** Kaplan,G.H., 1981. USNO circular no. 163, pA2. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double zeta, z, theta, wmat[3][3]; /* Precession Euler angles, J2000.0 to specified date. */ iauPrec76(DJ00, 0.0, date1, date2, &zeta, &z, &theta); /* Form the rotation matrix. */ iauIr( wmat); iauRz( -zeta, wmat); iauRy( theta, wmat); iauRz( -z, wmat); iauCr( wmat, rmatp); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pm.c0000644000113000011300000001142712507252057013457 0ustar bellsbells#include "sofa.h" double iauPm(double p[3]) /* ** - - - - - - ** i a u P m ** - - - - - - ** ** Modulus of p-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** p double[3] p-vector ** ** Returned (function value): ** double modulus ** ** This revision: 2013 August 7 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { return sqrt( p[0]*p[0] + p[1]*p[1] + p[2]*p[2] ); /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pmp.c0000644000113000011300000001174212507252057013637 0ustar bellsbells#include "sofa.h" void iauPmp(double a[3], double b[3], double amb[3]) /* ** - - - - - - - ** i a u P m p ** - - - - - - - ** ** P-vector subtraction. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[3] first p-vector ** b double[3] second p-vector ** ** Returned: ** amb double[3] a - b ** ** Note: ** It is permissible to re-use the same array for any of the ** arguments. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { amb[0] = a[0] - b[0]; amb[1] = a[1] - b[1]; amb[2] = a[2] - b[2]; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pmpx.c0000644000113000011300000001561612507252057014033 0ustar bellsbells#include "sofa.h" void iauPmpx(double rc, double dc, double pr, double pd, double px, double rv, double pmt, double pob[3], double pco[3]) /* ** - - - - - - - - ** i a u P m p x ** - - - - - - - - ** ** Proper motion and parallax. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rc,dc double ICRS RA,Dec at catalog epoch (radians) ** pr double RA proper motion (radians/year; Note 1) ** pd double Dec proper motion (radians/year) ** px double parallax (arcsec) ** rv double radial velocity (km/s, +ve if receding) ** pmt double proper motion time interval (SSB, Julian years) ** pob double[3] SSB to observer vector (au) ** ** Returned: ** pco double[3] coordinate direction (BCRS unit vector) ** ** Notes: ** ** 1) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt. ** ** 2) The proper motion time interval is for when the starlight ** reaches the solar system barycenter. ** ** 3) To avoid the need for iteration, the Roemer effect (i.e. the ** small annual modulation of the proper motion coming from the ** changing light time) is applied approximately, using the ** direction of the star at the catalog epoch. ** ** References: ** ** 1984 Astronomical Almanac, pp B39-B41. ** ** Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to ** the Astronomical Almanac, 3rd ed., University Science Books ** (2013), Section 7.2. ** ** Called: ** iauPdp scalar product of two p-vectors ** iauPn decompose p-vector into modulus and direction ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Km/s to au/year */ const double VF = DAYSEC*DJM/DAU; /* Light time for 1 au, Julian years */ const double AULTY = AULT/DAYSEC/DJY; int i; double sr, cr, sd, cd, x, y, z, p[3], dt, pxr, w, pdz, pm[3]; /* Spherical coordinates to unit vector (and useful functions). */ sr = sin(rc); cr = cos(rc); sd = sin(dc); cd = cos(dc); p[0] = x = cr*cd; p[1] = y = sr*cd; p[2] = z = sd; /* Proper motion time interval (y) including Roemer effect. */ dt = pmt + iauPdp(p,pob)*AULTY; /* Space motion (radians per year). */ pxr = px * DAS2R; w = VF * rv * pxr; pdz = pd * z; pm[0] = - pr*y - pdz*cr + w*x; pm[1] = pr*x - pdz*sr + w*y; pm[2] = pd*cd + w*z; /* Coordinate direction of star (unit vector, BCRS). */ for (i = 0; i < 3; i++) { p[i] += dt*pm[i] - pxr*pob[i]; } iauPn(p, &w, pco); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pmsafe.c0000644000113000011300000002375412507252057014324 0ustar bellsbells#include "sofa.h" int iauPmsafe(double ra1, double dec1, double pmr1, double pmd1, double px1, double rv1, double ep1a, double ep1b, double ep2a, double ep2b, double *ra2, double *dec2, double *pmr2, double *pmd2, double *px2, double *rv2) /* ** - - - - - - - - - - ** i a u P m s a f e ** - - - - - - - - - - ** ** Star proper motion: update star catalog data for space motion, with ** special handling to handle the zero parallax case. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** ra1 double right ascension (radians), before ** dec1 double declination (radians), before ** pmr1 double RA proper motion (radians/year), before ** pmd1 double Dec proper motion (radians/year), before ** px1 double parallax (arcseconds), before ** rv1 double radial velocity (km/s, +ve = receding), before ** ep1a double "before" epoch, part A (Note 1) ** ep1b double "before" epoch, part B (Note 1) ** ep2a double "after" epoch, part A (Note 1) ** ep2b double "after" epoch, part B (Note 1) ** ** Returned: ** ra2 double right ascension (radians), after ** dec2 double declination (radians), after ** pmr2 double RA proper motion (radians/year), after ** pmd2 double Dec proper motion (radians/year), after ** px2 double parallax (arcseconds), after ** rv2 double radial velocity (km/s, +ve = receding), after ** ** Returned (function value): ** int status: ** -1 = system error (should not occur) ** 0 = no warnings or errors ** 1 = distance overridden (Note 6) ** 2 = excessive velocity (Note 7) ** 4 = solution didn't converge (Note 8) ** else = binary logical OR of the above warnings ** ** Notes: ** ** 1) The starting and ending TDB epochs ep1a+ep1b and ep2a+ep2b are ** Julian Dates, apportioned in any convenient way between the two ** parts (A and B). For example, JD(TDB)=2450123.7 could be ** expressed in any of these ways, among others: ** ** epNa epNb ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. ** ** 2) In accordance with normal star-catalog conventions, the object's ** right ascension and declination are freed from the effects of ** secular aberration. The frame, which is aligned to the catalog ** equator and equinox, is Lorentzian and centered on the SSB. ** ** The proper motions are the rate of change of the right ascension ** and declination at the catalog epoch and are in radians per TDB ** Julian year. ** ** The parallax and radial velocity are in the same frame. ** ** 3) Care is needed with units. The star coordinates are in radians ** and the proper motions in radians per Julian year, but the ** parallax is in arcseconds. ** ** 4) The RA proper motion is in terms of coordinate angle, not true ** angle. If the catalog uses arcseconds for both RA and Dec proper ** motions, the RA proper motion will need to be divided by cos(Dec) ** before use. ** ** 5) Straight-line motion at constant speed, in the inertial frame, is ** assumed. ** ** 6) An extremely small (or zero or negative) parallax is overridden ** to ensure that the object is at a finite but very large distance, ** but not so large that the proper motion is equivalent to a large ** but safe speed (about 0.1c using the chosen constant). A warning ** status of 1 is added to the status if this action has been taken. ** ** 7) If the space velocity is a significant fraction of c (see the ** constant VMAX in the function iauStarpv), it is arbitrarily set ** to zero. When this action occurs, 2 is added to the status. ** ** 8) The relativistic adjustment carried out in the iauStarpv function ** involves an iterative calculation. If the process fails to ** converge within a set number of iterations, 4 is added to the ** status. ** ** Called: ** iauSeps angle between two points ** iauStarpm update star catalog data for space motion ** ** This revision: 2014 July 1 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Minimum allowed parallax (arcsec) */ const double PXMIN = 5e-7; /* Factor giving maximum allowed transverse speed of about 1% c */ const double F = 326.0; int jpx, j; double pm, px1a; /* Proper motion in one year (radians). */ pm = iauSeps(ra1, dec1, ra1+pmr1, dec1+pmd1); /* Override the parallax to reduce the chances of a warning status. */ jpx = 0; px1a = px1; pm *= F; if (px1a < pm) {jpx = 1; px1a = pm;} if (px1a < PXMIN) {jpx = 1; px1a = PXMIN;} /* Carry out the transformation using the modified parallax. */ j = iauStarpm(ra1, dec1, pmr1, pmd1, px1a, rv1, ep1a, ep1b, ep2a, ep2b, ra2, dec2, pmr2, pmd2, px2, rv2); /* Revise and return the status. */ if ( !(j%2) ) j += jpx; return j; /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pn00a.c0000644000113000011300000002120112507252057013750 0ustar bellsbells#include "sofa.h" void iauPn00a(double date1, double date2, double *dpsi, double *deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3]) /* ** - - - - - - - - - ** i a u P n 0 0 a ** - - - - - - - - - ** ** Precession-nutation, IAU 2000A model: a multi-purpose function, ** supporting classical (equinox-based) use directly and CIO-based ** use indirectly. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** dpsi,deps double nutation (Note 2) ** epsa double mean obliquity (Note 3) ** rb double[3][3] frame bias matrix (Note 4) ** rp double[3][3] precession matrix (Note 5) ** rbp double[3][3] bias-precession matrix (Note 6) ** rn double[3][3] nutation matrix (Note 7) ** rbpn double[3][3] GCRS-to-true matrix (Notes 8,9) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The nutation components (luni-solar + planetary, IAU 2000A) in ** longitude and obliquity are in radians and with respect to the ** equinox and ecliptic of date. Free core nutation is omitted; ** for the utmost accuracy, use the iauPn00 function, where the ** nutation components are caller-specified. For faster but ** slightly less accurate results, use the iauPn00b function. ** ** 3) The mean obliquity is consistent with the IAU 2000 precession. ** ** 4) The matrix rb transforms vectors from GCRS to J2000.0 mean ** equator and equinox by applying frame bias. ** ** 5) The matrix rp transforms vectors from J2000.0 mean equator and ** equinox to mean equator and equinox of date by applying ** precession. ** ** 6) The matrix rbp transforms vectors from GCRS to mean equator and ** equinox of date by applying frame bias then precession. It is ** the product rp x rb. ** ** 7) The matrix rn transforms vectors from mean equator and equinox ** of date to true equator and equinox of date by applying the ** nutation (luni-solar + planetary). ** ** 8) The matrix rbpn transforms vectors from GCRS to true equator and ** equinox of date. It is the product rn x rbp, applying frame ** bias, precession and nutation in that order. ** ** 9) The X,Y,Z coordinates of the IAU 2000A Celestial Intermediate ** Pole are elements (3,1-3) of the GCRS-to-true matrix, ** i.e. rbpn[2][0-2]. ** ** 10) It is permissible to re-use the same array in the returned ** arguments. The arrays are filled in the order given. ** ** Called: ** iauNut00a nutation, IAU 2000A ** iauPn00 bias/precession/nutation results, IAU 2000 ** ** Reference: ** ** Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** This revision: 2013 November 14 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Nutation. */ iauNut00a(date1, date2, dpsi, deps); /* Remaining results. */ iauPn00(date1, date2, *dpsi, *deps, epsa, rb, rp, rbp, rn, rbpn); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pn00b.c0000644000113000011300000002117112507252057013757 0ustar bellsbells#include "sofa.h" void iauPn00b(double date1, double date2, double *dpsi, double *deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3]) /* ** - - - - - - - - - ** i a u P n 0 0 b ** - - - - - - - - - ** ** Precession-nutation, IAU 2000B model: a multi-purpose function, ** supporting classical (equinox-based) use directly and CIO-based ** use indirectly. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** dpsi,deps double nutation (Note 2) ** epsa double mean obliquity (Note 3) ** rb double[3][3] frame bias matrix (Note 4) ** rp double[3][3] precession matrix (Note 5) ** rbp double[3][3] bias-precession matrix (Note 6) ** rn double[3][3] nutation matrix (Note 7) ** rbpn double[3][3] GCRS-to-true matrix (Notes 8,9) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The nutation components (luni-solar + planetary, IAU 2000B) in ** longitude and obliquity are in radians and with respect to the ** equinox and ecliptic of date. For more accurate results, but ** at the cost of increased computation, use the iauPn00a function. ** For the utmost accuracy, use the iauPn00 function, where the ** nutation components are caller-specified. ** ** 3) The mean obliquity is consistent with the IAU 2000 precession. ** ** 4) The matrix rb transforms vectors from GCRS to J2000.0 mean ** equator and equinox by applying frame bias. ** ** 5) The matrix rp transforms vectors from J2000.0 mean equator and ** equinox to mean equator and equinox of date by applying ** precession. ** ** 6) The matrix rbp transforms vectors from GCRS to mean equator and ** equinox of date by applying frame bias then precession. It is ** the product rp x rb. ** ** 7) The matrix rn transforms vectors from mean equator and equinox ** of date to true equator and equinox of date by applying the ** nutation (luni-solar + planetary). ** ** 8) The matrix rbpn transforms vectors from GCRS to true equator and ** equinox of date. It is the product rn x rbp, applying frame ** bias, precession and nutation in that order. ** ** 9) The X,Y,Z coordinates of the IAU 2000B Celestial Intermediate ** Pole are elements (3,1-3) of the GCRS-to-true matrix, ** i.e. rbpn[2][0-2]. ** ** 10) It is permissible to re-use the same array in the returned ** arguments. The arrays are filled in the stated order. ** ** Called: ** iauNut00b nutation, IAU 2000B ** iauPn00 bias/precession/nutation results, IAU 2000 ** ** Reference: ** ** Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 (2003). ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** This revision: 2013 November 13 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Nutation. */ iauNut00b(date1, date2, dpsi, deps); /* Remaining results. */ iauPn00(date1, date2, *dpsi, *deps, epsa, rb, rp, rbp, rn, rbpn); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pn00.c0000644000113000011300000002167112507252057013622 0ustar bellsbells#include "sofa.h" void iauPn00(double date1, double date2, double dpsi, double deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3]) /* ** - - - - - - - - ** i a u P n 0 0 ** - - - - - - - - ** ** Precession-nutation, IAU 2000 model: a multi-purpose function, ** supporting classical (equinox-based) use directly and CIO-based ** use indirectly. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** dpsi,deps double nutation (Note 2) ** ** Returned: ** epsa double mean obliquity (Note 3) ** rb double[3][3] frame bias matrix (Note 4) ** rp double[3][3] precession matrix (Note 5) ** rbp double[3][3] bias-precession matrix (Note 6) ** rn double[3][3] nutation matrix (Note 7) ** rbpn double[3][3] GCRS-to-true matrix (Note 8) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The caller is responsible for providing the nutation components; ** they are in longitude and obliquity, in radians and are with ** respect to the equinox and ecliptic of date. For high-accuracy ** applications, free core nutation should be included as well as ** any other relevant corrections to the position of the CIP. ** ** 3) The returned mean obliquity is consistent with the IAU 2000 ** precession-nutation models. ** ** 4) The matrix rb transforms vectors from GCRS to J2000.0 mean ** equator and equinox by applying frame bias. ** ** 5) The matrix rp transforms vectors from J2000.0 mean equator and ** equinox to mean equator and equinox of date by applying ** precession. ** ** 6) The matrix rbp transforms vectors from GCRS to mean equator and ** equinox of date by applying frame bias then precession. It is ** the product rp x rb. ** ** 7) The matrix rn transforms vectors from mean equator and equinox of ** date to true equator and equinox of date by applying the nutation ** (luni-solar + planetary). ** ** 8) The matrix rbpn transforms vectors from GCRS to true equator and ** equinox of date. It is the product rn x rbp, applying frame ** bias, precession and nutation in that order. ** ** 9) It is permissible to re-use the same array in the returned ** arguments. The arrays are filled in the order given. ** ** Called: ** iauPr00 IAU 2000 precession adjustments ** iauObl80 mean obliquity, IAU 1980 ** iauBp00 frame bias and precession matrices, IAU 2000 ** iauCr copy r-matrix ** iauNumat form nutation matrix ** iauRxr product of two r-matrices ** ** Reference: ** ** Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double dpsipr, depspr, rbpw[3][3], rnw[3][3]; /* IAU 2000 precession-rate adjustments. */ iauPr00(date1, date2, &dpsipr, &depspr); /* Mean obliquity, consistent with IAU 2000 precession-nutation. */ *epsa = iauObl80(date1, date2) + depspr; /* Frame bias and precession matrices and their product. */ iauBp00(date1, date2, rb, rp, rbpw); iauCr(rbpw, rbp); /* Nutation matrix. */ iauNumat(*epsa, dpsi, deps, rnw); iauCr(rnw, rn); /* Bias-precession-nutation matrix (classical). */ iauRxr(rnw, rbpw, rbpn); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pn06a.c0000644000113000011300000002013212507252057013760 0ustar bellsbells#include "sofa.h" void iauPn06a(double date1, double date2, double *dpsi, double *deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3]) /* ** - - - - - - - - - ** i a u P n 0 6 a ** - - - - - - - - - ** ** Precession-nutation, IAU 2006/2000A models: a multi-purpose function, ** supporting classical (equinox-based) use directly and CIO-based use ** indirectly. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** dpsi,deps double nutation (Note 2) ** epsa double mean obliquity (Note 3) ** rb double[3][3] frame bias matrix (Note 4) ** rp double[3][3] precession matrix (Note 5) ** rbp double[3][3] bias-precession matrix (Note 6) ** rn double[3][3] nutation matrix (Note 7) ** rbpn double[3][3] GCRS-to-true matrix (Notes 8,9) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The nutation components (luni-solar + planetary, IAU 2000A) in ** longitude and obliquity are in radians and with respect to the ** equinox and ecliptic of date. Free core nutation is omitted; ** for the utmost accuracy, use the iauPn06 function, where the ** nutation components are caller-specified. ** ** 3) The mean obliquity is consistent with the IAU 2006 precession. ** ** 4) The matrix rb transforms vectors from GCRS to mean J2000.0 by ** applying frame bias. ** ** 5) The matrix rp transforms vectors from mean J2000.0 to mean of ** date by applying precession. ** ** 6) The matrix rbp transforms vectors from GCRS to mean of date by ** applying frame bias then precession. It is the product rp x rb. ** ** 7) The matrix rn transforms vectors from mean of date to true of ** date by applying the nutation (luni-solar + planetary). ** ** 8) The matrix rbpn transforms vectors from GCRS to true of date ** (CIP/equinox). It is the product rn x rbp, applying frame bias, ** precession and nutation in that order. ** ** 9) The X,Y,Z coordinates of the IAU 2006/2000A Celestial ** Intermediate Pole are elements (3,1-3) of the GCRS-to-true ** matrix, i.e. rbpn[2][0-2]. ** ** 10) It is permissible to re-use the same array in the returned ** arguments. The arrays are filled in the stated order. ** ** Called: ** iauNut06a nutation, IAU 2006/2000A ** iauPn06 bias/precession/nutation results, IAU 2006 ** ** Reference: ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 ** ** This revision: 2013 November 13 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Nutation. */ iauNut06a(date1, date2, dpsi, deps); /* Remaining results. */ iauPn06(date1, date2, *dpsi, *deps, epsa, rb, rp, rbp, rn, rbpn); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pn06.c0000644000113000011300000002204412507252057013623 0ustar bellsbells#include "sofa.h" void iauPn06(double date1, double date2, double dpsi, double deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3]) /* ** - - - - - - - - ** i a u P n 0 6 ** - - - - - - - - ** ** Precession-nutation, IAU 2006 model: a multi-purpose function, ** supporting classical (equinox-based) use directly and CIO-based use ** indirectly. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** dpsi,deps double nutation (Note 2) ** ** Returned: ** epsa double mean obliquity (Note 3) ** rb double[3][3] frame bias matrix (Note 4) ** rp double[3][3] precession matrix (Note 5) ** rbp double[3][3] bias-precession matrix (Note 6) ** rn double[3][3] nutation matrix (Note 7) ** rbpn double[3][3] GCRS-to-true matrix (Note 8) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The caller is responsible for providing the nutation components; ** they are in longitude and obliquity, in radians and are with ** respect to the equinox and ecliptic of date. For high-accuracy ** applications, free core nutation should be included as well as ** any other relevant corrections to the position of the CIP. ** ** 3) The returned mean obliquity is consistent with the IAU 2006 ** precession. ** ** 4) The matrix rb transforms vectors from GCRS to J2000.0 mean ** equator and equinox by applying frame bias. ** ** 5) The matrix rp transforms vectors from J2000.0 mean equator and ** equinox to mean equator and equinox of date by applying ** precession. ** ** 6) The matrix rbp transforms vectors from GCRS to mean equator and ** equinox of date by applying frame bias then precession. It is ** the product rp x rb. ** ** 7) The matrix rn transforms vectors from mean equator and equinox ** of date to true equator and equinox of date by applying the ** nutation (luni-solar + planetary). ** ** 8) The matrix rbpn transforms vectors from GCRS to true equator and ** equinox of date. It is the product rn x rbp, applying frame ** bias, precession and nutation in that order. ** ** 9) The X,Y,Z coordinates of the Celestial Intermediate Pole are ** elements (3,1-3) of the GCRS-to-true matrix, i.e. rbpn[2][0-2]. ** ** 10) It is permissible to re-use the same array in the returned ** arguments. The arrays are filled in the stated order. ** ** Called: ** iauPfw06 bias-precession F-W angles, IAU 2006 ** iauFw2m F-W angles to r-matrix ** iauCr copy r-matrix ** iauTr transpose r-matrix ** iauRxr product of two r-matrices ** ** References: ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 ** ** Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** ** This revision: 2013 November 14 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double gamb, phib, psib, eps, r1[3][3], r2[3][3], rt[3][3]; /* Bias-precession Fukushima-Williams angles of J2000.0 = frame bias. */ iauPfw06(DJM0, DJM00, &gamb, &phib, &psib, &eps); /* B matrix. */ iauFw2m(gamb, phib, psib, eps, r1); iauCr(r1, rb); /* Bias-precession Fukushima-Williams angles of date. */ iauPfw06(date1, date2, &gamb, &phib, &psib, &eps); /* Bias-precession matrix. */ iauFw2m(gamb, phib, psib, eps, r2); iauCr(r2, rbp); /* Solve for precession matrix. */ iauTr(r1, rt); iauRxr(r2, rt, rp); /* Equinox-based bias-precession-nutation matrix. */ iauFw2m(gamb, phib, psib + dpsi, eps + deps, r1); iauCr(r1, rbpn); /* Solve for nutation matrix. */ iauTr(r2, rt); iauRxr(r1, rt, rn); /* Obliquity, mean of date. */ *epsa = eps; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pn.c0000644000113000011300000001256612507252057013465 0ustar bellsbells#include "sofa.h" void iauPn(double p[3], double *r, double u[3]) /* ** - - - - - - ** i a u P n ** - - - - - - ** ** Convert a p-vector into modulus and unit vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** p double[3] p-vector ** ** Returned: ** r double modulus ** u double[3] unit vector ** ** Notes: ** ** 1) If p is null, the result is null. Otherwise the result is a unit ** vector. ** ** 2) It is permissible to re-use the same array for any of the ** arguments. ** ** Called: ** iauPm modulus of p-vector ** iauZp zero p-vector ** iauSxp multiply p-vector by scalar ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double w; /* Obtain the modulus and test for zero. */ w = iauPm(p); if (w == 0.0) { /* Null vector. */ iauZp(u); } else { /* Unit vector. */ iauSxp(1.0/w, p, u); } /* Return the modulus. */ *r = w; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pnm00a.c0000644000113000011300000001522112507252057014132 0ustar bellsbells#include "sofa.h" void iauPnm00a(double date1, double date2, double rbpn[3][3]) /* ** - - - - - - - - - - ** i a u P n m 0 0 a ** - - - - - - - - - - ** ** Form the matrix of precession-nutation for a given date (including ** frame bias), equinox-based, IAU 2000A model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rbpn double[3][3] classical NPB matrix (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(date) = rbpn * V(GCRS), where ** the p-vector V(date) is with respect to the true equatorial triad ** of date date1+date2 and the p-vector V(GCRS) is with respect to ** the Geocentric Celestial Reference System (IAU, 2000). ** ** 3) A faster, but slightly less accurate result (about 1 mas), can be ** obtained by using instead the iauPnm00b function. ** ** Called: ** iauPn00a bias/precession/nutation, IAU 2000A ** ** Reference: ** ** IAU: Trans. International Astronomical Union, Vol. XXIVB; Proc. ** 24th General Assembly, Manchester, UK. Resolutions B1.3, B1.6. ** (2000) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double dpsi, deps, epsa, rb[3][3], rp[3][3], rbp[3][3], rn[3][3]; /* Obtain the required matrix (discarding other results). */ iauPn00a(date1, date2, &dpsi, &deps, &epsa, rb, rp, rbp, rn, rbpn); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pnm00b.c0000644000113000011300000001521412507252057014135 0ustar bellsbells#include "sofa.h" void iauPnm00b(double date1, double date2, double rbpn[3][3]) /* ** - - - - - - - - - - ** i a u P n m 0 0 b ** - - - - - - - - - - ** ** Form the matrix of precession-nutation for a given date (including ** frame bias), equinox-based, IAU 2000B model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rbpn double[3][3] bias-precession-nutation matrix (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(date) = rbpn * V(GCRS), where ** the p-vector V(date) is with respect to the true equatorial triad ** of date date1+date2 and the p-vector V(GCRS) is with respect to ** the Geocentric Celestial Reference System (IAU, 2000). ** ** 3) The present function is faster, but slightly less accurate (about ** 1 mas), than the iauPnm00a function. ** ** Called: ** iauPn00b bias/precession/nutation, IAU 2000B ** ** Reference: ** ** IAU: Trans. International Astronomical Union, Vol. XXIVB; Proc. ** 24th General Assembly, Manchester, UK. Resolutions B1.3, B1.6. ** (2000) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double dpsi, deps, epsa, rb[3][3], rp[3][3], rbp[3][3], rn[3][3]; /* Obtain the required matrix (discarding other results). */ iauPn00b(date1, date2, &dpsi, &deps, &epsa, rb, rp, rbp, rn, rbpn); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pnm06a.c0000644000113000011300000001526212507252057014145 0ustar bellsbells#include "sofa.h" void iauPnm06a(double date1, double date2, double rnpb[3][3]) /* ** - - - - - - - - - - ** i a u P n m 0 6 a ** - - - - - - - - - - ** ** Form the matrix of precession-nutation for a given date (including ** frame bias), IAU 2006 precession and IAU 2000A nutation models. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rnpb double[3][3] bias-precession-nutation matrix (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(date) = rnpb * V(GCRS), where ** the p-vector V(date) is with respect to the true equatorial triad ** of date date1+date2 and the p-vector V(GCRS) is with respect to ** the Geocentric Celestial Reference System (IAU, 2000). ** ** Called: ** iauPfw06 bias-precession F-W angles, IAU 2006 ** iauNut06a nutation, IAU 2006/2000A ** iauFw2m F-W angles to r-matrix ** ** Reference: ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double gamb, phib, psib, epsa, dp, de; /* Fukushima-Williams angles for frame bias and precession. */ iauPfw06(date1, date2, &gamb, &phib, &psib, &epsa); /* Nutation components. */ iauNut06a(date1, date2, &dp, &de); /* Equinox based nutation x precession x bias matrix. */ iauFw2m(gamb, phib, psib + dp, epsa + de, rnpb); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pnm80.c0000644000113000011300000001517112507252057014005 0ustar bellsbells#include "sofa.h" void iauPnm80(double date1, double date2, double rmatpn[3][3]) /* ** - - - - - - - - - ** i a u P n m 8 0 ** - - - - - - - - - ** ** Form the matrix of precession/nutation for a given date, IAU 1976 ** precession model, IAU 1980 nutation model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TDB date (Note 1) ** ** Returned: ** rmatpn double[3][3] combined precession/nutation matrix ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(date) = rmatpn * V(J2000), ** where the p-vector V(date) is with respect to the true equatorial ** triad of date date1+date2 and the p-vector V(J2000) is with ** respect to the mean equatorial triad of epoch J2000.0. ** ** Called: ** iauPmat76 precession matrix, IAU 1976 ** iauNutm80 nutation matrix, IAU 1980 ** iauRxr product of two r-matrices ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 3.3 (p145). ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double rmatp[3][3], rmatn[3][3]; /* Precession matrix, J2000.0 to date. */ iauPmat76(date1, date2, rmatp); /* Nutation matrix. */ iauNutm80(date1, date2, rmatn); /* Combine the matrices: PN = N x P. */ iauRxr(rmatn, rmatp, rmatpn); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pom00.c0000644000113000011300000001446512507252057014003 0ustar bellsbells#include "sofa.h" void iauPom00(double xp, double yp, double sp, double rpom[3][3]) /* ** - - - - - - - - - - ** i a u P o m 0 0 ** - - - - - - - - - - ** ** Form the matrix of polar motion for a given date, IAU 2000. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** xp,yp double coordinates of the pole (radians, Note 1) ** sp double the TIO locator s' (radians, Note 2) ** ** Returned: ** rpom double[3][3] polar-motion matrix (Note 3) ** ** Notes: ** ** 1) The arguments xp and yp are the coordinates (in radians) of the ** Celestial Intermediate Pole with respect to the International ** Terrestrial Reference System (see IERS Conventions 2003), ** measured along the meridians to 0 and 90 deg west respectively. ** ** 2) The argument sp is the TIO locator s', in radians, which ** positions the Terrestrial Intermediate Origin on the equator. It ** is obtained from polar motion observations by numerical ** integration, and so is in essence unpredictable. However, it is ** dominated by a secular drift of about 47 microarcseconds per ** century, and so can be taken into account by using s' = -47*t, ** where t is centuries since J2000.0. The function iauSp00 ** implements this approximation. ** ** 3) The matrix operates in the sense V(TRS) = rpom * V(CIP), meaning ** that it is the final rotation when computing the pointing ** direction to a celestial source. ** ** Called: ** iauIr initialize r-matrix to identity ** iauRz rotate around Z-axis ** iauRy rotate around Y-axis ** iauRx rotate around X-axis ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Construct the matrix. */ iauIr(rpom); iauRz(sp, rpom); iauRy(-xp, rpom); iauRx(-yp, rpom); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/ppp.c0000644000113000011300000001173712507252057013646 0ustar bellsbells#include "sofa.h" void iauPpp(double a[3], double b[3], double apb[3]) /* ** - - - - - - - ** i a u P p p ** - - - - - - - ** ** P-vector addition. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[3] first p-vector ** b double[3] second p-vector ** ** Returned: ** apb double[3] a + b ** ** Note: ** It is permissible to re-use the same array for any of the ** arguments. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { apb[0] = a[0] + b[0]; apb[1] = a[1] + b[1]; apb[2] = a[2] + b[2]; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/ppsp.c0000644000113000011300000001223212507252057014020 0ustar bellsbells#include "sofa.h" void iauPpsp(double a[3], double s, double b[3], double apsb[3]) /* ** - - - - - - - - ** i a u P p s p ** - - - - - - - - ** ** P-vector plus scaled p-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[3] first p-vector ** s double scalar (multiplier for b) ** b double[3] second p-vector ** ** Returned: ** apsb double[3] a + s*b ** ** Note: ** It is permissible for any of a, b and apsb to be the same array. ** ** Called: ** iauSxp multiply p-vector by scalar ** iauPpp p-vector plus p-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double sb[3]; /* s*b. */ iauSxp(s, b, sb); /* a + s*b. */ iauPpp(a, sb, apsb); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pr00.c0000644000113000011300000001720412507252057013623 0ustar bellsbells#include "sofa.h" void iauPr00(double date1, double date2, double *dpsipr, double *depspr) /* ** - - - - - - - - ** i a u P r 0 0 ** - - - - - - - - ** ** Precession-rate part of the IAU 2000 precession-nutation models ** (part of MHB2000). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** dpsipr,depspr double precession corrections (Notes 2,3) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The precession adjustments are expressed as "nutation ** components", corrections in longitude and obliquity with respect ** to the J2000.0 equinox and ecliptic. ** ** 3) Although the precession adjustments are stated to be with respect ** to Lieske et al. (1977), the MHB2000 model does not specify which ** set of Euler angles are to be used and how the adjustments are to ** be applied. The most literal and straightforward procedure is to ** adopt the 4-rotation epsilon_0, psi_A, omega_A, xi_A option, and ** to add dpsipr to psi_A and depspr to both omega_A and eps_A. ** ** 4) This is an implementation of one aspect of the IAU 2000A nutation ** model, formally adopted by the IAU General Assembly in 2000, ** namely MHB2000 (Mathews et al. 2002). ** ** References: ** ** Lieske, J.H., Lederle, T., Fricke, W. & Morando, B., "Expressions ** for the precession quantities based upon the IAU (1976) System of ** Astronomical Constants", Astron.Astrophys., 58, 1-16 (1977) ** ** Mathews, P.M., Herring, T.A., Buffet, B.A., "Modeling of nutation ** and precession New nutation series for nonrigid Earth and ** insights into the Earth's interior", J.Geophys.Res., 107, B4, ** 2002. The MHB2000 code itself was obtained on 9th September 2002 ** from ftp://maia.usno.navy.mil/conv2000/chapter5/IAU2000A. ** ** Wallace, P.T., "Software for Implementing the IAU 2000 ** Resolutions", in IERS Workshop 5.1 (2002). ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double t; /* Precession and obliquity corrections (radians per century) */ static const double PRECOR = -0.29965 * DAS2R, OBLCOR = -0.02524 * DAS2R; /* Interval between fundamental epoch J2000.0 and given date (JC). */ t = ((date1 - DJ00) + date2) / DJC; /* Precession rate contributions with respect to IAU 1976/80. */ *dpsipr = PRECOR * t; *depspr = OBLCOR * t; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/prec76.c0000644000113000011300000001752612507252057014157 0ustar bellsbells#include "sofa.h" void iauPrec76(double date01, double date02, double date11, double date12, double *zeta, double *z, double *theta) /* ** - - - - - - - - - - ** i a u P r e c 7 6 ** - - - - - - - - - - ** ** IAU 1976 precession model. ** ** This function forms the three Euler angles which implement general ** precession between two dates, using the IAU 1976 model (as for the ** FK5 catalog). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date01,date02 double TDB starting date (Note 1) ** date11,date12 double TDB ending date (Note 1) ** ** Returned: ** zeta double 1st rotation: radians cw around z ** z double 3rd rotation: radians cw around z ** theta double 2nd rotation: radians ccw around y ** ** Notes: ** ** 1) The dates date01+date02 and date11+date12 are Julian Dates, ** apportioned in any convenient way between the arguments daten1 ** and daten2. For example, JD(TDB)=2450123.7 could be expressed in ** any of these ways, among others: ** ** daten1 daten2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** The two dates may be expressed using different methods, but at ** the risk of losing some resolution. ** ** 2) The accumulated precession angles zeta, z, theta are expressed ** through canonical polynomials which are valid only for a limited ** time span. In addition, the IAU 1976 precession rate is known to ** be imperfect. The absolute accuracy of the present formulation ** is better than 0.1 arcsec from 1960AD to 2040AD, better than ** 1 arcsec from 1640AD to 2360AD, and remains below 3 arcsec for ** the whole of the period 500BC to 3000AD. The errors exceed ** 10 arcsec outside the range 1200BC to 3900AD, exceed 100 arcsec ** outside 4200BC to 5600AD and exceed 1000 arcsec outside 6800BC to ** 8200AD. ** ** 3) The three angles are returned in the conventional order, which ** is not the same as the order of the corresponding Euler ** rotations. The precession matrix is ** R_3(-z) x R_2(+theta) x R_3(-zeta). ** ** Reference: ** ** Lieske, J.H., 1979, Astron.Astrophys. 73, 282, equations ** (6) & (7), p283. ** ** This revision: 2013 November 19 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double t0, t, tas2r, w; /* Interval between fundamental epoch J2000.0 and start date (JC). */ t0 = ((date01 - DJ00) + date02) / DJC; /* Interval over which precession required (JC). */ t = ((date11 - date01) + (date12 - date02)) / DJC; /* Euler angles. */ tas2r = t * DAS2R; w = 2306.2181 + (1.39656 - 0.000139 * t0) * t0; *zeta = (w + ((0.30188 - 0.000344 * t0) + 0.017998 * t) * t) * tas2r; *z = (w + ((1.09468 + 0.000066 * t0) + 0.018203 * t) * t) * tas2r; *theta = ((2004.3109 + (-0.85330 - 0.000217 * t0) * t0) + ((-0.42665 - 0.000217 * t0) - 0.041833 * t) * t) * tas2r; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pv2p.c0000644000113000011300000001153612507252057013733 0ustar bellsbells#include "sofa.h" void iauPv2p(double pv[2][3], double p[3]) /* ** - - - - - - - - ** i a u P v 2 p ** - - - - - - - - ** ** Discard velocity component of a pv-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** pv double[2][3] pv-vector ** ** Returned: ** p double[3] p-vector ** ** Called: ** iauCp copy p-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { iauCp(pv[0], p); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pv2s.c0000644000113000011300000001531412507252057013734 0ustar bellsbells#include "sofa.h" void iauPv2s(double pv[2][3], double *theta, double *phi, double *r, double *td, double *pd, double *rd) /* ** - - - - - - - - ** i a u P v 2 s ** - - - - - - - - ** ** Convert position/velocity from Cartesian to spherical coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** pv double[2][3] pv-vector ** ** Returned: ** theta double longitude angle (radians) ** phi double latitude angle (radians) ** r double radial distance ** td double rate of change of theta ** pd double rate of change of phi ** rd double rate of change of r ** ** Notes: ** ** 1) If the position part of pv is null, theta, phi, td and pd ** are indeterminate. This is handled by extrapolating the ** position through unit time by using the velocity part of ** pv. This moves the origin without changing the direction ** of the velocity component. If the position and velocity ** components of pv are both null, zeroes are returned for all ** six results. ** ** 2) If the position is a pole, theta, td and pd are indeterminate. ** In such cases zeroes are returned for all three. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double x, y, z, xd, yd, zd, rxy2, rxy, r2, rtrue, rw, xyp; /* Components of position/velocity vector. */ x = pv[0][0]; y = pv[0][1]; z = pv[0][2]; xd = pv[1][0]; yd = pv[1][1]; zd = pv[1][2]; /* Component of r in XY plane squared. */ rxy2 = x*x + y*y; /* Modulus squared. */ r2 = rxy2 + z*z; /* Modulus. */ rtrue = sqrt(r2); /* If null vector, move the origin along the direction of movement. */ rw = rtrue; if (rtrue == 0.0) { x = xd; y = yd; z = zd; rxy2 = x*x + y*y; r2 = rxy2 + z*z; rw = sqrt(r2); } /* Position and velocity in spherical coordinates. */ rxy = sqrt(rxy2); xyp = x*xd + y*yd; if (rxy2 != 0.0) { *theta = atan2(y, x); *phi = atan2(z, rxy); *td = (x*yd - y*xd) / rxy2; *pd = (zd*rxy2 - z*xyp) / (r2*rxy); } else { *theta = 0.0; *phi = (z != 0.0) ? atan2(z, rxy) : 0.0; *td = 0.0; *pd = 0.0; } *r = rtrue; *rd = (rw != 0.0) ? (xyp + z*zd) / rw : 0.0; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pvdpv.c0000644000113000011300000001272212507252057014201 0ustar bellsbells#include "sofa.h" void iauPvdpv(double a[2][3], double b[2][3], double adb[2]) /* ** - - - - - - - - - ** i a u P v d p v ** - - - - - - - - - ** ** Inner (=scalar=dot) product of two pv-vectors. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[2][3] first pv-vector ** b double[2][3] second pv-vector ** ** Returned: ** adb double[2] a . b (see note) ** ** Note: ** ** If the position and velocity components of the two pv-vectors are ** ( ap, av ) and ( bp, bv ), the result, a . b, is the pair of ** numbers ( ap . bp , ap . bv + av . bp ). The two numbers are the ** dot-product of the two p-vectors and its derivative. ** ** Called: ** iauPdp scalar product of two p-vectors ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double adbd, addb; /* a . b = constant part of result. */ adb[0] = iauPdp(a[0], b[0]); /* a . bdot */ adbd = iauPdp(a[0], b[1]); /* adot . b */ addb = iauPdp(a[1], b[0]); /* Velocity part of result. */ adb[1] = adbd + addb; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pvm.c0000644000113000011300000001172112507252057013642 0ustar bellsbells#include "sofa.h" void iauPvm(double pv[2][3], double *r, double *s) /* ** - - - - - - - ** i a u P v m ** - - - - - - - ** ** Modulus of pv-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** pv double[2][3] pv-vector ** ** Returned: ** r double modulus of position component ** s double modulus of velocity component ** ** Called: ** iauPm modulus of p-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Distance. */ *r = iauPm(pv[0]); /* Speed. */ *s = iauPm(pv[1]); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pvmpv.c0000644000113000011300000001207612507252057014214 0ustar bellsbells#include "sofa.h" void iauPvmpv(double a[2][3], double b[2][3], double amb[2][3]) /* ** - - - - - - - - - ** i a u P v m p v ** - - - - - - - - - ** ** Subtract one pv-vector from another. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[2][3] first pv-vector ** b double[2][3] second pv-vector ** ** Returned: ** amb double[2][3] a - b ** ** Note: ** It is permissible to re-use the same array for any of the ** arguments. ** ** Called: ** iauPmp p-vector minus p-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { iauPmp(a[0], b[0], amb[0]); iauPmp(a[1], b[1], amb[1]); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pvppv.c0000644000113000011300000001207112507252057014212 0ustar bellsbells#include "sofa.h" void iauPvppv(double a[2][3], double b[2][3], double apb[2][3]) /* ** - - - - - - - - - ** i a u P v p p v ** - - - - - - - - - ** ** Add one pv-vector to another. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[2][3] first pv-vector ** b double[2][3] second pv-vector ** ** Returned: ** apb double[2][3] a + b ** ** Note: ** It is permissible to re-use the same array for any of the ** arguments. ** ** Called: ** iauPpp p-vector plus p-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { iauPpp(a[0], b[0], apb[0]); iauPpp(a[1], b[1], apb[1]); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pvstar.c0000644000113000011300000002360612507252057014364 0ustar bellsbells#include "sofa.h" int iauPvstar(double pv[2][3], double *ra, double *dec, double *pmr, double *pmd, double *px, double *rv) /* ** - - - - - - - - - - ** i a u P v s t a r ** - - - - - - - - - - ** ** Convert star position+velocity vector to catalog coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given (Note 1): ** pv double[2][3] pv-vector (AU, AU/day) ** ** Returned (Note 2): ** ra double right ascension (radians) ** dec double declination (radians) ** pmr double RA proper motion (radians/year) ** pmd double Dec proper motion (radians/year) ** px double parallax (arcsec) ** rv double radial velocity (km/s, positive = receding) ** ** Returned (function value): ** int status: ** 0 = OK ** -1 = superluminal speed (Note 5) ** -2 = null position vector ** ** Notes: ** ** 1) The specified pv-vector is the coordinate direction (and its rate ** of change) for the date at which the light leaving the star ** reached the solar-system barycenter. ** ** 2) The star data returned by this function are "observables" for an ** imaginary observer at the solar-system barycenter. Proper motion ** and radial velocity are, strictly, in terms of barycentric ** coordinate time, TCB. For most practical applications, it is ** permissible to neglect the distinction between TCB and ordinary ** "proper" time on Earth (TT/TAI). The result will, as a rule, be ** limited by the intrinsic accuracy of the proper-motion and ** radial-velocity data; moreover, the supplied pv-vector is likely ** to be merely an intermediate result (for example generated by the ** function iauStarpv), so that a change of time unit will cancel ** out overall. ** ** In accordance with normal star-catalog conventions, the object's ** right ascension and declination are freed from the effects of ** secular aberration. The frame, which is aligned to the catalog ** equator and equinox, is Lorentzian and centered on the SSB. ** ** Summarizing, the specified pv-vector is for most stars almost ** identical to the result of applying the standard geometrical ** "space motion" transformation to the catalog data. The ** differences, which are the subject of the Stumpff paper cited ** below, are: ** ** (i) In stars with significant radial velocity and proper motion, ** the constantly changing light-time distorts the apparent proper ** motion. Note that this is a classical, not a relativistic, ** effect. ** ** (ii) The transformation complies with special relativity. ** ** 3) Care is needed with units. The star coordinates are in radians ** and the proper motions in radians per Julian year, but the ** parallax is in arcseconds; the radial velocity is in km/s, but ** the pv-vector result is in AU and AU/day. ** ** 4) The proper motions are the rate of change of the right ascension ** and declination at the catalog epoch and are in radians per Julian ** year. The RA proper motion is in terms of coordinate angle, not ** true angle, and will thus be numerically larger at high ** declinations. ** ** 5) Straight-line motion at constant speed in the inertial frame is ** assumed. If the speed is greater than or equal to the speed of ** light, the function aborts with an error status. ** ** 6) The inverse transformation is performed by the function iauStarpv. ** ** Called: ** iauPn decompose p-vector into modulus and direction ** iauPdp scalar product of two p-vectors ** iauSxp multiply p-vector by scalar ** iauPmp p-vector minus p-vector ** iauPm modulus of p-vector ** iauPpp p-vector plus p-vector ** iauPv2s pv-vector to spherical ** iauAnp normalize angle into range 0 to 2pi ** ** Reference: ** ** Stumpff, P., 1985, Astron.Astrophys. 144, 232-240. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double r, x[3], vr, ur[3], vt, ut[3], bett, betr, d, w, del, usr[3], ust[3], a, rad, decd, rd; /* Isolate the radial component of the velocity (AU/day, inertial). */ iauPn(pv[0], &r, x); vr = iauPdp(x, pv[1]); iauSxp(vr, x, ur); /* Isolate the transverse component of the velocity (AU/day, inertial). */ iauPmp(pv[1], ur, ut); vt = iauPm(ut); /* Special-relativity dimensionless parameters. */ bett = vt / DC; betr = vr / DC; /* The inertial-to-observed correction terms. */ d = 1.0 + betr; w = 1.0 - betr*betr - bett*bett; if (d == 0.0 || w < 0) return -1; del = sqrt(w) - 1.0; /* Apply relativistic correction factor to radial velocity component. */ w = (betr != 0) ? (betr - del) / (betr * d) : 1.0; iauSxp(w, ur, usr); /* Apply relativistic correction factor to tangential velocity */ /* component. */ iauSxp(1.0/d, ut, ust); /* Combine the two to obtain the observed velocity vector (AU/day). */ iauPpp(usr, ust, pv[1]); /* Cartesian to spherical. */ iauPv2s(pv, &a, dec, &r, &rad, &decd, &rd); if (r == 0.0) return -2; /* Return RA in range 0 to 2pi. */ *ra = iauAnp(a); /* Return proper motions in radians per year. */ *pmr = rad * DJY; *pmd = decd * DJY; /* Return parallax in arcsec. */ *px = DR2AS / r; /* Return radial velocity in km/s. */ *rv = 1e-3 * rd * DAU / DAYSEC; /* OK status. */ return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pvtob.c0000644000113000011300000001704012507252057014172 0ustar bellsbells#include "sofa.h" void iauPvtob(double elong, double phi, double hm, double xp, double yp, double sp, double theta, double pv[2][3]) /* ** - - - - - - - - - ** i a u P v t o b ** - - - - - - - - - ** ** Position and velocity of a terrestrial observing station. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** elong double longitude (radians, east +ve, Note 1) ** phi double latitude (geodetic, radians, Note 1) ** hm double height above ref. ellipsoid (geodetic, m) ** xp,yp double coordinates of the pole (radians, Note 2) ** sp double the TIO locator s' (radians, Note 2) ** theta double Earth rotation angle (radians, Note 3) ** ** Returned: ** pv double[2][3] position/velocity vector (m, m/s, CIRS) ** ** Notes: ** ** 1) The terrestrial coordinates are with respect to the WGS84 ** reference ellipsoid. ** ** 2) xp and yp are the coordinates (in radians) of the Celestial ** Intermediate Pole with respect to the International Terrestrial ** Reference System (see IERS Conventions), measured along the ** meridians 0 and 90 deg west respectively. sp is the TIO locator ** s', in radians, which positions the Terrestrial Intermediate ** Origin on the equator. For many applications, xp, yp and ** (especially) sp can be set to zero. ** ** 3) If theta is Greenwich apparent sidereal time instead of Earth ** rotation angle, the result is with respect to the true equator ** and equinox of date, i.e. with the x-axis at the equinox rather ** than the celestial intermediate origin. ** ** 4) The velocity units are meters per UT1 second, not per SI second. ** This is unlikely to have any practical consequences in the modern ** era. ** ** 5) No validation is performed on the arguments. Error cases that ** could lead to arithmetic exceptions are trapped by the iauGd2gc ** function, and the result set to zeros. ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to ** the Astronomical Almanac, 3rd ed., University Science Books ** (2013), Section 7.4.3.3. ** ** Called: ** iauGd2gc geodetic to geocentric transformation ** iauPom00 polar motion matrix ** iauTrxp product of transpose of r-matrix and p-vector ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Earth rotation rate in radians per UT1 second */ const double OM = 1.00273781191135448 * D2PI / DAYSEC; double xyzm[3], rpm[3][3], xyz[3], x, y, z, s, c; /* Geodetic to geocentric transformation (WGS84). */ (void) iauGd2gc(1, elong, phi, hm, xyzm); /* Polar motion and TIO position. */ iauPom00(xp, yp, sp, rpm); iauTrxp(rpm, xyzm, xyz); x = xyz[0]; y = xyz[1]; z = xyz[2]; /* Functions of ERA. */ s = sin(theta); c = cos(theta); /* Position. */ pv[0][0] = c*x - s*y; pv[0][1] = s*x + c*y; pv[0][2] = z; /* Velocity. */ pv[1][0] = OM * ( -s*x - c*y ); pv[1][1] = OM * ( c*x - s*y ); pv[1][2] = 0.0; /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pvu.c0000644000113000011300000001237512507252057013660 0ustar bellsbells#include "sofa.h" void iauPvu(double dt, double pv[2][3], double upv[2][3]) /* ** - - - - - - - ** i a u P v u ** - - - - - - - ** ** Update a pv-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** dt double time interval ** pv double[2][3] pv-vector ** ** Returned: ** upv double[2][3] p updated, v unchanged ** ** Notes: ** ** 1) "Update" means "refer the position component of the vector ** to a new date dt time units from the existing date". ** ** 2) The time units of dt must match those of the velocity. ** ** 3) It is permissible for pv and upv to be the same array. ** ** Called: ** iauPpsp p-vector plus scaled p-vector ** iauCp copy p-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { iauPpsp(pv[0], dt, pv[1], upv[0]); iauCp(pv[1], upv[1]); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pvup.c0000644000113000011300000001224012507252057014027 0ustar bellsbells#include "sofa.h" void iauPvup(double dt, double pv[2][3], double p[3]) /* ** - - - - - - - - ** i a u P v u p ** - - - - - - - - ** ** Update a pv-vector, discarding the velocity component. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** dt double time interval ** pv double[2][3] pv-vector ** ** Returned: ** p double[3] p-vector ** ** Notes: ** ** 1) "Update" means "refer the position component of the vector to a ** new date dt time units from the existing date". ** ** 2) The time units of dt must match those of the velocity. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { p[0] = pv[0][0] + dt * pv[1][0]; p[1] = pv[0][1] + dt * pv[1][1]; p[2] = pv[0][2] + dt * pv[1][2]; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pvxpv.c0000644000113000011300000001332112507252057014221 0ustar bellsbells#include "sofa.h" void iauPvxpv(double a[2][3], double b[2][3], double axb[2][3]) /* ** - - - - - - - - - ** i a u P v x p v ** - - - - - - - - - ** ** Outer (=vector=cross) product of two pv-vectors. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[2][3] first pv-vector ** b double[2][3] second pv-vector ** ** Returned: ** axb double[2][3] a x b ** ** Notes: ** ** 1) If the position and velocity components of the two pv-vectors are ** ( ap, av ) and ( bp, bv ), the result, a x b, is the pair of ** vectors ( ap x bp, ap x bv + av x bp ). The two vectors are the ** cross-product of the two p-vectors and its derivative. ** ** 2) It is permissible to re-use the same array for any of the ** arguments. ** ** Called: ** iauCpv copy pv-vector ** iauPxp vector product of two p-vectors ** iauPpp p-vector plus p-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double wa[2][3], wb[2][3], axbd[3], adxb[3]; /* Make copies of the inputs. */ iauCpv(a, wa); iauCpv(b, wb); /* a x b = position part of result. */ iauPxp(wa[0], wb[0], axb[0]); /* a x bdot + adot x b = velocity part of result. */ iauPxp(wa[0], wb[1], axbd); iauPxp(wa[1], wb[0], adxb); iauPpp(axbd, adxb, axb[1]); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/pxp.c0000644000113000011300000001216112507252057013646 0ustar bellsbells#include "sofa.h" void iauPxp(double a[3], double b[3], double axb[3]) /* ** - - - - - - - ** i a u P x p ** - - - - - - - ** ** p-vector outer (=vector=cross) product. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[3] first p-vector ** b double[3] second p-vector ** ** Returned: ** axb double[3] a x b ** ** Note: ** It is permissible to re-use the same array for any of the ** arguments. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double xa, ya, za, xb, yb, zb; xa = a[0]; ya = a[1]; za = a[2]; xb = b[0]; yb = b[1]; zb = b[2]; axb[0] = ya*zb - za*yb; axb[1] = za*xb - xa*zb; axb[2] = xa*yb - ya*xb; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/refco.c0000644000113000011300000002661712507252057014150 0ustar bellsbells#include "sofa.h" void iauRefco(double phpa, double tc, double rh, double wl, double *refa, double *refb) /* ** - - - - - - - - - ** i a u R e f c o ** - - - - - - - - - ** ** Determine the constants A and B in the atmospheric refraction model ** dZ = A tan Z + B tan^3 Z. ** ** Z is the "observed" zenith distance (i.e. affected by refraction) ** and dZ is what to add to Z to give the "topocentric" (i.e. in vacuo) ** zenith distance. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** phpa double pressure at the observer (hPa = millibar) ** tc double ambient temperature at the observer (deg C) ** rh double relative humidity at the observer (range 0-1) ** wl double wavelength (micrometers) ** ** Returned: ** refa double* tan Z coefficient (radians) ** refb double* tan^3 Z coefficient (radians) ** ** Notes: ** ** 1) The model balances speed and accuracy to give good results in ** applications where performance at low altitudes is not paramount. ** Performance is maintained across a range of conditions, and ** applies to both optical/IR and radio. ** ** 2) The model omits the effects of (i) height above sea level (apart ** from the reduced pressure itself), (ii) latitude (i.e. the ** flattening of the Earth), (iii) variations in tropospheric lapse ** rate and (iv) dispersive effects in the radio. ** ** The model was tested using the following range of conditions: ** ** lapse rates 0.0055, 0.0065, 0.0075 deg/meter ** latitudes 0, 25, 50, 75 degrees ** heights 0, 2500, 5000 meters ASL ** pressures mean for height -10% to +5% in steps of 5% ** temperatures -10 deg to +20 deg with respect to 280 deg at SL ** relative humidity 0, 0.5, 1 ** wavelengths 0.4, 0.6, ... 2 micron, + radio ** zenith distances 15, 45, 75 degrees ** ** The accuracy with respect to raytracing through a model ** atmosphere was as follows: ** ** worst RMS ** ** optical/IR 62 mas 8 mas ** radio 319 mas 49 mas ** ** For this particular set of conditions: ** ** lapse rate 0.0065 K/meter ** latitude 50 degrees ** sea level ** pressure 1005 mb ** temperature 280.15 K ** humidity 80% ** wavelength 5740 Angstroms ** ** the results were as follows: ** ** ZD raytrace iauRefco Saastamoinen ** ** 10 10.27 10.27 10.27 ** 20 21.19 21.20 21.19 ** 30 33.61 33.61 33.60 ** 40 48.82 48.83 48.81 ** 45 58.16 58.18 58.16 ** 50 69.28 69.30 69.27 ** 55 82.97 82.99 82.95 ** 60 100.51 100.54 100.50 ** 65 124.23 124.26 124.20 ** 70 158.63 158.68 158.61 ** 72 177.32 177.37 177.31 ** 74 200.35 200.38 200.32 ** 76 229.45 229.43 229.42 ** 78 267.44 267.29 267.41 ** 80 319.13 318.55 319.10 ** ** deg arcsec arcsec arcsec ** ** The values for Saastamoinen's formula (which includes terms ** up to tan^5) are taken from Hohenkerk and Sinclair (1985). ** ** 3) A wl value in the range 0-100 selects the optical/IR case and is ** wavelength in micrometers. Any value outside this range selects ** the radio case. ** ** 4) Outlandish input parameters are silently limited to ** mathematically safe values. Zero pressure is permissible, and ** causes zeroes to be returned. ** ** 5) The algorithm draws on several sources, as follows: ** ** a) The formula for the saturation vapour pressure of water as ** a function of temperature and temperature is taken from ** Equations (A4.5-A4.7) of Gill (1982). ** ** b) The formula for the water vapour pressure, given the ** saturation pressure and the relative humidity, is from ** Crane (1976), Equation (2.5.5). ** ** c) The refractivity of air is a function of temperature, ** total pressure, water-vapour pressure and, in the case ** of optical/IR, wavelength. The formulae for the two cases are ** developed from Hohenkerk & Sinclair (1985) and Rueger (2002). ** ** d) The formula for beta, the ratio of the scale height of the ** atmosphere to the geocentric distance of the observer, is ** an adaption of Equation (9) from Stone (1996). The ** adaptations, arrived at empirically, consist of (i) a small ** adjustment to the coefficient and (ii) a humidity term for the ** radio case only. ** ** e) The formulae for the refraction constants as a function of ** n-1 and beta are from Green (1987), Equation (4.31). ** ** References: ** ** Crane, R.K., Meeks, M.L. (ed), "Refraction Effects in the Neutral ** Atmosphere", Methods of Experimental Physics: Astrophysics 12B, ** Academic Press, 1976. ** ** Gill, Adrian E., "Atmosphere-Ocean Dynamics", Academic Press, ** 1982. ** ** Green, R.M., "Spherical Astronomy", Cambridge University Press, ** 1987. ** ** Hohenkerk, C.Y., & Sinclair, A.T., NAO Technical Note No. 63, ** 1985. ** ** Rueger, J.M., "Refractive Index Formulae for Electronic Distance ** Measurement with Radio and Millimetre Waves", in Unisurv Report ** S-68, School of Surveying and Spatial Information Systems, ** University of New South Wales, Sydney, Australia, 2002. ** ** Stone, Ronald C., P.A.S.P. 108, 1051-1058, 1996. ** ** This revision: 2013 October 9 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int optic; double p, t, r, w, ps, pw, tk, wlsq, gamma, beta; /* Decide whether optical/IR or radio case: switch at 100 microns. */ optic = ( wl <= 100.0 ); /* Restrict parameters to safe values. */ t = gmax ( tc, -150.0 ); t = gmin ( t, 200.0 ); p = gmax ( phpa, 0.0 ); p = gmin ( p, 10000.0 ); r = gmax ( rh, 0.0 ); r = gmin ( r, 1.0 ); w = gmax ( wl, 0.1 ); w = gmin ( w, 1e6 ); /* Water vapour pressure at the observer. */ if ( p > 0.0 ) { ps = pow ( 10.0, ( 0.7859 + 0.03477*t ) / ( 1.0 + 0.00412*t ) ) * ( 1.0 + p * ( 4.5e-6 + 6e-10*t*t ) ); pw = r * ps / ( 1.0 - (1.0-r)*ps/p ); } else { pw = 0.0; } /* Refractive index minus 1 at the observer. */ tk = t + 273.15; if ( optic ) { wlsq = w * w; gamma = ( ( 77.53484e-6 + ( 4.39108e-7 + 3.666e-9/wlsq ) / wlsq ) * p - 11.2684e-6*pw ) / tk; } else { gamma = ( 77.6890e-6*p - ( 6.3938e-6 - 0.375463/tk ) * pw ) / tk; } /* Formula for beta from Stone, with empirical adjustments. */ beta = 4.4474e-6 * tk; if ( ! optic ) beta -= 0.0074 * pw * beta; /* Refraction constants from Green. */ *refa = gamma * ( 1.0 - beta ); *refb = - gamma * ( beta - gamma / 2.0 ); /* Finished. */ /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/rm2v.c0000644000113000011300000001354512507252057013734 0ustar bellsbells#include "sofa.h" void iauRm2v(double r[3][3], double w[3]) /* ** - - - - - - - - ** i a u R m 2 v ** - - - - - - - - ** ** Express an r-matrix as an r-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** r double[3][3] rotation matrix ** ** Returned: ** w double[3] rotation vector (Note 1) ** ** Notes: ** ** 1) A rotation matrix describes a rotation through some angle about ** some arbitrary axis called the Euler axis. The "rotation vector" ** returned by this function has the same direction as the Euler axis, ** and its magnitude is the angle in radians. (The magnitude and ** direction can be separated by means of the function iauPn.) ** ** 2) If r is null, so is the result. If r is not a rotation matrix ** the result is undefined; r must be proper (i.e. have a positive ** determinant) and real orthogonal (inverse = transpose). ** ** 3) The reference frame rotates clockwise as seen looking along ** the rotation vector from the origin. ** ** This revision: 2015 January 30 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double x, y, z, s2, c2, phi, f; x = r[1][2] - r[2][1]; y = r[2][0] - r[0][2]; z = r[0][1] - r[1][0]; s2 = sqrt(x*x + y*y + z*z); if (s2 > 0) { c2 = r[0][0] + r[1][1] + r[2][2] - 1.0; phi = atan2(s2, c2); f = phi / s2; w[0] = x * f; w[1] = y * f; w[2] = z * f; } else { w[0] = 0.0; w[1] = 0.0; w[2] = 0.0; } return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/rv2m.c0000644000113000011300000001355412507252057013734 0ustar bellsbells#include "sofa.h" void iauRv2m(double w[3], double r[3][3]) /* ** - - - - - - - - ** i a u R v 2 m ** - - - - - - - - ** ** Form the r-matrix corresponding to a given r-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** w double[3] rotation vector (Note 1) ** ** Returned: ** r double[3][3] rotation matrix ** ** Notes: ** ** 1) A rotation matrix describes a rotation through some angle about ** some arbitrary axis called the Euler axis. The "rotation vector" ** supplied to This function has the same direction as the Euler ** axis, and its magnitude is the angle in radians. ** ** 2) If w is null, the unit matrix is returned. ** ** 3) The reference frame rotates clockwise as seen looking along the ** rotation vector from the origin. ** ** This revision: 2015 January 30 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double x, y, z, phi, s, c, f; /* Euler angle (magnitude of rotation vector) and functions. */ x = w[0]; y = w[1]; z = w[2]; phi = sqrt(x*x + y*y + z*z); s = sin(phi); c = cos(phi); f = 1.0 - c; /* Euler axis (direction of rotation vector), perhaps null. */ if (phi > 0.0) { x /= phi; y /= phi; z /= phi; } /* Form the rotation matrix. */ r[0][0] = x*x*f + c; r[0][1] = x*y*f + z*s; r[0][2] = x*z*f - y*s; r[1][0] = y*x*f - z*s; r[1][1] = y*y*f + c; r[1][2] = y*z*f + x*s; r[2][0] = z*x*f + y*s; r[2][1] = z*y*f - x*s; r[2][2] = z*z*f + c; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/rx.c0000644000113000011300000001325612507252057013476 0ustar bellsbells#include "sofa.h" void iauRx(double phi, double r[3][3]) /* ** - - - - - - ** i a u R x ** - - - - - - ** ** Rotate an r-matrix about the x-axis. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** phi double angle (radians) ** ** Given and returned: ** r double[3][3] r-matrix, rotated ** ** Notes: ** ** 1) Calling this function with positive phi incorporates in the ** supplied r-matrix r an additional rotation, about the x-axis, ** anticlockwise as seen looking towards the origin from positive x. ** ** 2) The additional rotation can be represented by this matrix: ** ** ( 1 0 0 ) ** ( ) ** ( 0 + cos(phi) + sin(phi) ) ** ( ) ** ( 0 - sin(phi) + cos(phi) ) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double s, c, a10, a11, a12, a20, a21, a22; s = sin(phi); c = cos(phi); a10 = c*r[1][0] + s*r[2][0]; a11 = c*r[1][1] + s*r[2][1]; a12 = c*r[1][2] + s*r[2][2]; a20 = - s*r[1][0] + c*r[2][0]; a21 = - s*r[1][1] + c*r[2][1]; a22 = - s*r[1][2] + c*r[2][2]; r[1][0] = a10; r[1][1] = a11; r[1][2] = a12; r[2][0] = a20; r[2][1] = a21; r[2][2] = a22; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/rxp.c0000644000113000011300000001226112507252057013651 0ustar bellsbells#include "sofa.h" void iauRxp(double r[3][3], double p[3], double rp[3]) /* ** - - - - - - - ** i a u R x p ** - - - - - - - ** ** Multiply a p-vector by an r-matrix. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** r double[3][3] r-matrix ** p double[3] p-vector ** ** Returned: ** rp double[3] r * p ** ** Note: ** It is permissible for p and rp to be the same array. ** ** Called: ** iauCp copy p-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double w, wrp[3]; int i, j; /* Matrix r * vector p. */ for (j = 0; j < 3; j++) { w = 0.0; for (i = 0; i < 3; i++) { w += r[j][i] * p[i]; } wrp[j] = w; } /* Return the result. */ iauCp(wrp, rp); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/rxpv.c0000644000113000011300000001203012507252057014031 0ustar bellsbells#include "sofa.h" void iauRxpv(double r[3][3], double pv[2][3], double rpv[2][3]) /* ** - - - - - - - - ** i a u R x p v ** - - - - - - - - ** ** Multiply a pv-vector by an r-matrix. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** r double[3][3] r-matrix ** pv double[2][3] pv-vector ** ** Returned: ** rpv double[2][3] r * pv ** ** Note: ** It is permissible for pv and rpv to be the same array. ** ** Called: ** iauRxp product of r-matrix and p-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { iauRxp(r, pv[0], rpv[0]); iauRxp(r, pv[1], rpv[1]); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/rxr.c0000644000113000011300000001233012507252057013650 0ustar bellsbells#include "sofa.h" void iauRxr(double a[3][3], double b[3][3], double atb[3][3]) /* ** - - - - - - - ** i a u R x r ** - - - - - - - ** ** Multiply two r-matrices. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[3][3] first r-matrix ** b double[3][3] second r-matrix ** ** Returned: ** atb double[3][3] a * b ** ** Note: ** It is permissible to re-use the same array for any of the ** arguments. ** ** Called: ** iauCr copy r-matrix ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int i, j, k; double w, wm[3][3]; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { w = 0.0; for (k = 0; k < 3; k++) { w += a[i][k] * b[k][j]; } wm[i][j] = w; } } iauCr(wm, atb); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/ry.c0000644000113000011300000001332712507252057013476 0ustar bellsbells#include "sofa.h" void iauRy(double theta, double r[3][3]) /* ** - - - - - - ** i a u R y ** - - - - - - ** ** Rotate an r-matrix about the y-axis. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** theta double angle (radians) ** ** Given and returned: ** r double[3][3] r-matrix, rotated ** ** Notes: ** ** 1) Calling this function with positive theta incorporates in the ** supplied r-matrix r an additional rotation, about the y-axis, ** anticlockwise as seen looking towards the origin from positive y. ** ** 2) The additional rotation can be represented by this matrix: ** ** ( + cos(theta) 0 - sin(theta) ) ** ( ) ** ( 0 1 0 ) ** ( ) ** ( + sin(theta) 0 + cos(theta) ) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double s, c, a00, a01, a02, a20, a21, a22; s = sin(theta); c = cos(theta); a00 = c*r[0][0] - s*r[2][0]; a01 = c*r[0][1] - s*r[2][1]; a02 = c*r[0][2] - s*r[2][2]; a20 = s*r[0][0] + c*r[2][0]; a21 = s*r[0][1] + c*r[2][1]; a22 = s*r[0][2] + c*r[2][2]; r[0][0] = a00; r[0][1] = a01; r[0][2] = a02; r[2][0] = a20; r[2][1] = a21; r[2][2] = a22; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/rz.c0000644000113000011300000001327012507252057013474 0ustar bellsbells#include "sofa.h" void iauRz(double psi, double r[3][3]) /* ** - - - - - - ** i a u R z ** - - - - - - ** ** Rotate an r-matrix about the z-axis. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** psi double angle (radians) ** ** Given and returned: ** r double[3][3] r-matrix, rotated ** ** Notes: ** ** 1) Calling this function with positive psi incorporates in the ** supplied r-matrix r an additional rotation, about the z-axis, ** anticlockwise as seen looking towards the origin from positive z. ** ** 2) The additional rotation can be represented by this matrix: ** ** ( + cos(psi) + sin(psi) 0 ) ** ( ) ** ( - sin(psi) + cos(psi) 0 ) ** ( ) ** ( 0 0 1 ) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double s, c, a00, a01, a02, a10, a11, a12; s = sin(psi); c = cos(psi); a00 = c*r[0][0] + s*r[1][0]; a01 = c*r[0][1] + s*r[1][1]; a02 = c*r[0][2] + s*r[1][2]; a10 = - s*r[0][0] + c*r[1][0]; a11 = - s*r[0][1] + c*r[1][1]; a12 = - s*r[0][2] + c*r[1][2]; r[0][0] = a00; r[0][1] = a01; r[0][2] = a02; r[1][0] = a10; r[1][1] = a11; r[1][2] = a12; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/s00a.c0000644000113000011300000001714412507252057013610 0ustar bellsbells#include "sofa.h" double iauS00a(double date1, double date2) /* ** - - - - - - - - ** i a u S 0 0 a ** - - - - - - - - ** ** The CIO locator s, positioning the Celestial Intermediate Origin on ** the equator of the Celestial Intermediate Pole, using the IAU 2000A ** precession-nutation model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double the CIO locator s in radians (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The CIO locator s is the difference between the right ascensions ** of the same point in two systems. The two systems are the GCRS ** and the CIP,CIO, and the point is the ascending node of the ** CIP equator. The CIO locator s remains a small fraction of ** 1 arcsecond throughout 1900-2100. ** ** 3) The series used to compute s is in fact for s+XY/2, where X and Y ** are the x and y components of the CIP unit vector; this series ** is more compact than a direct series for s would be. The present ** function uses the full IAU 2000A nutation model when predicting ** the CIP position. Faster results, with no significant loss of ** accuracy, can be obtained via the function iauS00b, which uses ** instead the IAU 2000B truncated model. ** ** Called: ** iauPnm00a classical NPB matrix, IAU 2000A ** iauBnp2xy extract CIP X,Y from the BPN matrix ** iauS00 the CIO locator s, given X,Y, IAU 2000A ** ** References: ** ** Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double rbpn[3][3], x, y, s; /* Bias-precession-nutation-matrix, IAU 2000A. */ iauPnm00a(date1, date2, rbpn); /* Extract the CIP coordinates. */ iauBpn2xy(rbpn, &x, &y); /* Compute the CIO locator s, given the CIP coordinates. */ s = iauS00(date1, date2, x, y); return s; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/s00b.c0000644000113000011300000001713312507252057013607 0ustar bellsbells#include "sofa.h" double iauS00b(double date1, double date2) /* ** - - - - - - - - ** i a u S 0 0 b ** - - - - - - - - ** ** The CIO locator s, positioning the Celestial Intermediate Origin on ** the equator of the Celestial Intermediate Pole, using the IAU 2000B ** precession-nutation model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double the CIO locator s in radians (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The CIO locator s is the difference between the right ascensions ** of the same point in two systems. The two systems are the GCRS ** and the CIP,CIO, and the point is the ascending node of the ** CIP equator. The CIO locator s remains a small fraction of ** 1 arcsecond throughout 1900-2100. ** ** 3) The series used to compute s is in fact for s+XY/2, where X and Y ** are the x and y components of the CIP unit vector; this series ** is more compact than a direct series for s would be. The present ** function uses the IAU 2000B truncated nutation model when ** predicting the CIP position. The function iauS00a uses instead ** the full IAU 2000A model, but with no significant increase in ** accuracy and at some cost in speed. ** ** Called: ** iauPnm00b classical NPB matrix, IAU 2000B ** iauBnp2xy extract CIP X,Y from the BPN matrix ** iauS00 the CIO locator s, given X,Y, IAU 2000A ** ** References: ** ** Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double rbpn[3][3], x, y, s; /* Bias-precession-nutation-matrix, IAU 2000B. */ iauPnm00b(date1, date2, rbpn); /* Extract the CIP coordinates. */ iauBpn2xy(rbpn, &x, &y); /* Compute the CIO locator s, given the CIP coordinates. */ s = iauS00(date1, date2, x, y); return s; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/s00.c0000644000113000011300000003626412507252057013453 0ustar bellsbells#include "sofa.h" double iauS00(double date1, double date2, double x, double y) /* ** - - - - - - - ** i a u S 0 0 ** - - - - - - - ** ** The CIO locator s, positioning the Celestial Intermediate Origin on ** the equator of the Celestial Intermediate Pole, given the CIP's X,Y ** coordinates. Compatible with IAU 2000A precession-nutation. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** x,y double CIP coordinates (Note 3) ** ** Returned (function value): ** double the CIO locator s in radians (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The CIO locator s is the difference between the right ascensions ** of the same point in two systems: the two systems are the GCRS ** and the CIP,CIO, and the point is the ascending node of the ** CIP equator. The quantity s remains below 0.1 arcsecond ** throughout 1900-2100. ** ** 3) The series used to compute s is in fact for s+XY/2, where X and Y ** are the x and y components of the CIP unit vector; this series ** is more compact than a direct series for s would be. This ** function requires X,Y to be supplied by the caller, who is ** responsible for providing values that are consistent with the ** supplied date. ** ** 4) The model is consistent with the IAU 2000A precession-nutation. ** ** Called: ** iauFal03 mean anomaly of the Moon ** iauFalp03 mean anomaly of the Sun ** iauFaf03 mean argument of the latitude of the Moon ** iauFad03 mean elongation of the Moon from the Sun ** iauFaom03 mean longitude of the Moon's ascending node ** iauFave03 mean longitude of Venus ** iauFae03 mean longitude of Earth ** iauFapa03 general accumulated precession in longitude ** ** References: ** ** Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Time since J2000.0, in Julian centuries */ double t; /* Miscellaneous */ int i, j; double a, w0, w1, w2, w3, w4, w5; /* Fundamental arguments */ double fa[8]; /* Returned value */ double s; /* --------------------- */ /* The series for s+XY/2 */ /* --------------------- */ typedef struct { int nfa[8]; /* coefficients of l,l',F,D,Om,LVe,LE,pA */ double s, c; /* sine and cosine coefficients */ } TERM; /* Polynomial coefficients */ static const double sp[] = { /* 1-6 */ 94.00e-6, 3808.35e-6, -119.94e-6, -72574.09e-6, 27.70e-6, 15.61e-6 }; /* Terms of order t^0 */ static const TERM s0[] = { /* 1-10 */ {{ 0, 0, 0, 0, 1, 0, 0, 0}, -2640.73e-6, 0.39e-6 }, {{ 0, 0, 0, 0, 2, 0, 0, 0}, -63.53e-6, 0.02e-6 }, {{ 0, 0, 2, -2, 3, 0, 0, 0}, -11.75e-6, -0.01e-6 }, {{ 0, 0, 2, -2, 1, 0, 0, 0}, -11.21e-6, -0.01e-6 }, {{ 0, 0, 2, -2, 2, 0, 0, 0}, 4.57e-6, 0.00e-6 }, {{ 0, 0, 2, 0, 3, 0, 0, 0}, -2.02e-6, 0.00e-6 }, {{ 0, 0, 2, 0, 1, 0, 0, 0}, -1.98e-6, 0.00e-6 }, {{ 0, 0, 0, 0, 3, 0, 0, 0}, 1.72e-6, 0.00e-6 }, {{ 0, 1, 0, 0, 1, 0, 0, 0}, 1.41e-6, 0.01e-6 }, {{ 0, 1, 0, 0, -1, 0, 0, 0}, 1.26e-6, 0.01e-6 }, /* 11-20 */ {{ 1, 0, 0, 0, -1, 0, 0, 0}, 0.63e-6, 0.00e-6 }, {{ 1, 0, 0, 0, 1, 0, 0, 0}, 0.63e-6, 0.00e-6 }, {{ 0, 1, 2, -2, 3, 0, 0, 0}, -0.46e-6, 0.00e-6 }, {{ 0, 1, 2, -2, 1, 0, 0, 0}, -0.45e-6, 0.00e-6 }, {{ 0, 0, 4, -4, 4, 0, 0, 0}, -0.36e-6, 0.00e-6 }, {{ 0, 0, 1, -1, 1, -8, 12, 0}, 0.24e-6, 0.12e-6 }, {{ 0, 0, 2, 0, 0, 0, 0, 0}, -0.32e-6, 0.00e-6 }, {{ 0, 0, 2, 0, 2, 0, 0, 0}, -0.28e-6, 0.00e-6 }, {{ 1, 0, 2, 0, 3, 0, 0, 0}, -0.27e-6, 0.00e-6 }, {{ 1, 0, 2, 0, 1, 0, 0, 0}, -0.26e-6, 0.00e-6 }, /* 21-30 */ {{ 0, 0, 2, -2, 0, 0, 0, 0}, 0.21e-6, 0.00e-6 }, {{ 0, 1, -2, 2, -3, 0, 0, 0}, -0.19e-6, 0.00e-6 }, {{ 0, 1, -2, 2, -1, 0, 0, 0}, -0.18e-6, 0.00e-6 }, {{ 0, 0, 0, 0, 0, 8,-13, -1}, 0.10e-6, -0.05e-6 }, {{ 0, 0, 0, 2, 0, 0, 0, 0}, -0.15e-6, 0.00e-6 }, {{ 2, 0, -2, 0, -1, 0, 0, 0}, 0.14e-6, 0.00e-6 }, {{ 0, 1, 2, -2, 2, 0, 0, 0}, 0.14e-6, 0.00e-6 }, {{ 1, 0, 0, -2, 1, 0, 0, 0}, -0.14e-6, 0.00e-6 }, {{ 1, 0, 0, -2, -1, 0, 0, 0}, -0.14e-6, 0.00e-6 }, {{ 0, 0, 4, -2, 4, 0, 0, 0}, -0.13e-6, 0.00e-6 }, /* 31-33 */ {{ 0, 0, 2, -2, 4, 0, 0, 0}, 0.11e-6, 0.00e-6 }, {{ 1, 0, -2, 0, -3, 0, 0, 0}, -0.11e-6, 0.00e-6 }, {{ 1, 0, -2, 0, -1, 0, 0, 0}, -0.11e-6, 0.00e-6 } }; /* Terms of order t^1 */ static const TERM s1[] ={ /* 1-3 */ {{ 0, 0, 0, 0, 2, 0, 0, 0}, -0.07e-6, 3.57e-6 }, {{ 0, 0, 0, 0, 1, 0, 0, 0}, 1.71e-6, -0.03e-6 }, {{ 0, 0, 2, -2, 3, 0, 0, 0}, 0.00e-6, 0.48e-6 } }; /* Terms of order t^2 */ static const TERM s2[] ={ /* 1-10 */ {{ 0, 0, 0, 0, 1, 0, 0, 0}, 743.53e-6, -0.17e-6 }, {{ 0, 0, 2, -2, 2, 0, 0, 0}, 56.91e-6, 0.06e-6 }, {{ 0, 0, 2, 0, 2, 0, 0, 0}, 9.84e-6, -0.01e-6 }, {{ 0, 0, 0, 0, 2, 0, 0, 0}, -8.85e-6, 0.01e-6 }, {{ 0, 1, 0, 0, 0, 0, 0, 0}, -6.38e-6, -0.05e-6 }, {{ 1, 0, 0, 0, 0, 0, 0, 0}, -3.07e-6, 0.00e-6 }, {{ 0, 1, 2, -2, 2, 0, 0, 0}, 2.23e-6, 0.00e-6 }, {{ 0, 0, 2, 0, 1, 0, 0, 0}, 1.67e-6, 0.00e-6 }, {{ 1, 0, 2, 0, 2, 0, 0, 0}, 1.30e-6, 0.00e-6 }, {{ 0, 1, -2, 2, -2, 0, 0, 0}, 0.93e-6, 0.00e-6 }, /* 11-20 */ {{ 1, 0, 0, -2, 0, 0, 0, 0}, 0.68e-6, 0.00e-6 }, {{ 0, 0, 2, -2, 1, 0, 0, 0}, -0.55e-6, 0.00e-6 }, {{ 1, 0, -2, 0, -2, 0, 0, 0}, 0.53e-6, 0.00e-6 }, {{ 0, 0, 0, 2, 0, 0, 0, 0}, -0.27e-6, 0.00e-6 }, {{ 1, 0, 0, 0, 1, 0, 0, 0}, -0.27e-6, 0.00e-6 }, {{ 1, 0, -2, -2, -2, 0, 0, 0}, -0.26e-6, 0.00e-6 }, {{ 1, 0, 0, 0, -1, 0, 0, 0}, -0.25e-6, 0.00e-6 }, {{ 1, 0, 2, 0, 1, 0, 0, 0}, 0.22e-6, 0.00e-6 }, {{ 2, 0, 0, -2, 0, 0, 0, 0}, -0.21e-6, 0.00e-6 }, {{ 2, 0, -2, 0, -1, 0, 0, 0}, 0.20e-6, 0.00e-6 }, /* 21-25 */ {{ 0, 0, 2, 2, 2, 0, 0, 0}, 0.17e-6, 0.00e-6 }, {{ 2, 0, 2, 0, 2, 0, 0, 0}, 0.13e-6, 0.00e-6 }, {{ 2, 0, 0, 0, 0, 0, 0, 0}, -0.13e-6, 0.00e-6 }, {{ 1, 0, 2, -2, 2, 0, 0, 0}, -0.12e-6, 0.00e-6 }, {{ 0, 0, 2, 0, 0, 0, 0, 0}, -0.11e-6, 0.00e-6 } }; /* Terms of order t^3 */ static const TERM s3[] ={ /* 1-4 */ {{ 0, 0, 0, 0, 1, 0, 0, 0}, 0.30e-6, -23.51e-6 }, {{ 0, 0, 2, -2, 2, 0, 0, 0}, -0.03e-6, -1.39e-6 }, {{ 0, 0, 2, 0, 2, 0, 0, 0}, -0.01e-6, -0.24e-6 }, {{ 0, 0, 0, 0, 2, 0, 0, 0}, 0.00e-6, 0.22e-6 } }; /* Terms of order t^4 */ static const TERM s4[] ={ /* 1-1 */ {{ 0, 0, 0, 0, 1, 0, 0, 0}, -0.26e-6, -0.01e-6 } }; /* Number of terms in the series */ const int NS0 = (int) (sizeof s0 / sizeof (TERM)); const int NS1 = (int) (sizeof s1 / sizeof (TERM)); const int NS2 = (int) (sizeof s2 / sizeof (TERM)); const int NS3 = (int) (sizeof s3 / sizeof (TERM)); const int NS4 = (int) (sizeof s4 / sizeof (TERM)); /*--------------------------------------------------------------------*/ /* Interval between fundamental epoch J2000.0 and current date (JC). */ t = ((date1 - DJ00) + date2) / DJC; /* Fundamental Arguments (from IERS Conventions 2003) */ /* Mean anomaly of the Moon. */ fa[0] = iauFal03(t); /* Mean anomaly of the Sun. */ fa[1] = iauFalp03(t); /* Mean longitude of the Moon minus that of the ascending node. */ fa[2] = iauFaf03(t); /* Mean elongation of the Moon from the Sun. */ fa[3] = iauFad03(t); /* Mean longitude of the ascending node of the Moon. */ fa[4] = iauFaom03(t); /* Mean longitude of Venus. */ fa[5] = iauFave03(t); /* Mean longitude of Earth. */ fa[6] = iauFae03(t); /* General precession in longitude. */ fa[7] = iauFapa03(t); /* Evaluate s. */ w0 = sp[0]; w1 = sp[1]; w2 = sp[2]; w3 = sp[3]; w4 = sp[4]; w5 = sp[5]; for (i = NS0-1; i >= 0; i--) { a = 0.0; for (j = 0; j < 8; j++) { a += (double)s0[i].nfa[j] * fa[j]; } w0 += s0[i].s * sin(a) + s0[i].c * cos(a); } for (i = NS1-1; i >= 0; i--) { a = 0.0; for (j = 0; j < 8; j++) { a += (double)s1[i].nfa[j] * fa[j]; } w1 += s1[i].s * sin(a) + s1[i].c * cos(a); } for (i = NS2-1; i >= 0; i--) { a = 0.0; for (j = 0; j < 8; j++) { a += (double)s2[i].nfa[j] * fa[j]; } w2 += s2[i].s * sin(a) + s2[i].c * cos(a); } for (i = NS3-1; i >= 0; i--) { a = 0.0; for (j = 0; j < 8; j++) { a += (double)s3[i].nfa[j] * fa[j]; } w3 += s3[i].s * sin(a) + s3[i].c * cos(a); } for (i = NS4-1; i >= 0; i--) { a = 0.0; for (j = 0; j < 8; j++) { a += (double)s4[i].nfa[j] * fa[j]; } w4 += s4[i].s * sin(a) + s4[i].c * cos(a); } s = (w0 + (w1 + (w2 + (w3 + (w4 + w5 * t) * t) * t) * t) * t) * DAS2R - x*y/2.0; return s; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/s06a.c0000644000113000011300000001716612507252057013622 0ustar bellsbells#include "sofa.h" double iauS06a(double date1, double date2) /* ** - - - - - - - - ** i a u S 0 6 a ** - - - - - - - - ** ** The CIO locator s, positioning the Celestial Intermediate Origin on ** the equator of the Celestial Intermediate Pole, using the IAU 2006 ** precession and IAU 2000A nutation models. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double the CIO locator s in radians (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The CIO locator s is the difference between the right ascensions ** of the same point in two systems. The two systems are the GCRS ** and the CIP,CIO, and the point is the ascending node of the ** CIP equator. The CIO locator s remains a small fraction of ** 1 arcsecond throughout 1900-2100. ** ** 3) The series used to compute s is in fact for s+XY/2, where X and Y ** are the x and y components of the CIP unit vector; this series is ** more compact than a direct series for s would be. The present ** function uses the full IAU 2000A nutation model when predicting ** the CIP position. ** ** Called: ** iauPnm06a classical NPB matrix, IAU 2006/2000A ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauS06 the CIO locator s, given X,Y, IAU 2006 ** ** References: ** ** Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 ** ** McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), ** IERS Technical Note No. 32, BKG ** ** Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double rnpb[3][3], x, y, s; /* Bias-precession-nutation-matrix, IAU 20006/2000A. */ iauPnm06a(date1, date2, rnpb); /* Extract the CIP coordinates. */ iauBpn2xy(rnpb, &x, &y); /* Compute the CIO locator s, given the CIP coordinates. */ s = iauS06(date1, date2, x, y); return s; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/s06.c0000644000113000011300000003612212507252057013452 0ustar bellsbells#include "sofa.h" double iauS06(double date1, double date2, double x, double y) /* ** - - - - - - - ** i a u S 0 6 ** - - - - - - - ** ** The CIO locator s, positioning the Celestial Intermediate Origin on ** the equator of the Celestial Intermediate Pole, given the CIP's X,Y ** coordinates. Compatible with IAU 2006/2000A precession-nutation. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** x,y double CIP coordinates (Note 3) ** ** Returned (function value): ** double the CIO locator s in radians (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The CIO locator s is the difference between the right ascensions ** of the same point in two systems: the two systems are the GCRS ** and the CIP,CIO, and the point is the ascending node of the ** CIP equator. The quantity s remains below 0.1 arcsecond ** throughout 1900-2100. ** ** 3) The series used to compute s is in fact for s+XY/2, where X and Y ** are the x and y components of the CIP unit vector; this series ** is more compact than a direct series for s would be. This ** function requires X,Y to be supplied by the caller, who is ** responsible for providing values that are consistent with the ** supplied date. ** ** 4) The model is consistent with the "P03" precession (Capitaine et ** al. 2003), adopted by IAU 2006 Resolution 1, 2006, and the ** IAU 2000A nutation (with P03 adjustments). ** ** Called: ** iauFal03 mean anomaly of the Moon ** iauFalp03 mean anomaly of the Sun ** iauFaf03 mean argument of the latitude of the Moon ** iauFad03 mean elongation of the Moon from the Sun ** iauFaom03 mean longitude of the Moon's ascending node ** iauFave03 mean longitude of Venus ** iauFae03 mean longitude of Earth ** iauFapa03 general accumulated precession in longitude ** ** References: ** ** Capitaine, N., Wallace, P.T. & Chapront, J., 2003, Astron. ** Astrophys. 432, 355 ** ** McCarthy, D.D., Petit, G. (eds.) 2004, IERS Conventions (2003), ** IERS Technical Note No. 32, BKG ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Time since J2000.0, in Julian centuries */ double t; /* Miscellaneous */ int i, j; double a, w0, w1, w2, w3, w4, w5; /* Fundamental arguments */ double fa[8]; /* Returned value */ double s; /* --------------------- */ /* The series for s+XY/2 */ /* --------------------- */ typedef struct { int nfa[8]; /* coefficients of l,l',F,D,Om,LVe,LE,pA */ double s, c; /* sine and cosine coefficients */ } TERM; /* Polynomial coefficients */ static const double sp[] = { /* 1-6 */ 94.00e-6, 3808.65e-6, -122.68e-6, -72574.11e-6, 27.98e-6, 15.62e-6 }; /* Terms of order t^0 */ static const TERM s0[] = { /* 1-10 */ {{ 0, 0, 0, 0, 1, 0, 0, 0}, -2640.73e-6, 0.39e-6 }, {{ 0, 0, 0, 0, 2, 0, 0, 0}, -63.53e-6, 0.02e-6 }, {{ 0, 0, 2, -2, 3, 0, 0, 0}, -11.75e-6, -0.01e-6 }, {{ 0, 0, 2, -2, 1, 0, 0, 0}, -11.21e-6, -0.01e-6 }, {{ 0, 0, 2, -2, 2, 0, 0, 0}, 4.57e-6, 0.00e-6 }, {{ 0, 0, 2, 0, 3, 0, 0, 0}, -2.02e-6, 0.00e-6 }, {{ 0, 0, 2, 0, 1, 0, 0, 0}, -1.98e-6, 0.00e-6 }, {{ 0, 0, 0, 0, 3, 0, 0, 0}, 1.72e-6, 0.00e-6 }, {{ 0, 1, 0, 0, 1, 0, 0, 0}, 1.41e-6, 0.01e-6 }, {{ 0, 1, 0, 0, -1, 0, 0, 0}, 1.26e-6, 0.01e-6 }, /* 11-20 */ {{ 1, 0, 0, 0, -1, 0, 0, 0}, 0.63e-6, 0.00e-6 }, {{ 1, 0, 0, 0, 1, 0, 0, 0}, 0.63e-6, 0.00e-6 }, {{ 0, 1, 2, -2, 3, 0, 0, 0}, -0.46e-6, 0.00e-6 }, {{ 0, 1, 2, -2, 1, 0, 0, 0}, -0.45e-6, 0.00e-6 }, {{ 0, 0, 4, -4, 4, 0, 0, 0}, -0.36e-6, 0.00e-6 }, {{ 0, 0, 1, -1, 1, -8, 12, 0}, 0.24e-6, 0.12e-6 }, {{ 0, 0, 2, 0, 0, 0, 0, 0}, -0.32e-6, 0.00e-6 }, {{ 0, 0, 2, 0, 2, 0, 0, 0}, -0.28e-6, 0.00e-6 }, {{ 1, 0, 2, 0, 3, 0, 0, 0}, -0.27e-6, 0.00e-6 }, {{ 1, 0, 2, 0, 1, 0, 0, 0}, -0.26e-6, 0.00e-6 }, /* 21-30 */ {{ 0, 0, 2, -2, 0, 0, 0, 0}, 0.21e-6, 0.00e-6 }, {{ 0, 1, -2, 2, -3, 0, 0, 0}, -0.19e-6, 0.00e-6 }, {{ 0, 1, -2, 2, -1, 0, 0, 0}, -0.18e-6, 0.00e-6 }, {{ 0, 0, 0, 0, 0, 8,-13, -1}, 0.10e-6, -0.05e-6 }, {{ 0, 0, 0, 2, 0, 0, 0, 0}, -0.15e-6, 0.00e-6 }, {{ 2, 0, -2, 0, -1, 0, 0, 0}, 0.14e-6, 0.00e-6 }, {{ 0, 1, 2, -2, 2, 0, 0, 0}, 0.14e-6, 0.00e-6 }, {{ 1, 0, 0, -2, 1, 0, 0, 0}, -0.14e-6, 0.00e-6 }, {{ 1, 0, 0, -2, -1, 0, 0, 0}, -0.14e-6, 0.00e-6 }, {{ 0, 0, 4, -2, 4, 0, 0, 0}, -0.13e-6, 0.00e-6 }, /* 31-33 */ {{ 0, 0, 2, -2, 4, 0, 0, 0}, 0.11e-6, 0.00e-6 }, {{ 1, 0, -2, 0, -3, 0, 0, 0}, -0.11e-6, 0.00e-6 }, {{ 1, 0, -2, 0, -1, 0, 0, 0}, -0.11e-6, 0.00e-6 } }; /* Terms of order t^1 */ static const TERM s1[] = { /* 1 - 3 */ {{ 0, 0, 0, 0, 2, 0, 0, 0}, -0.07e-6, 3.57e-6 }, {{ 0, 0, 0, 0, 1, 0, 0, 0}, 1.73e-6, -0.03e-6 }, {{ 0, 0, 2, -2, 3, 0, 0, 0}, 0.00e-6, 0.48e-6 } }; /* Terms of order t^2 */ static const TERM s2[] = { /* 1-10 */ {{ 0, 0, 0, 0, 1, 0, 0, 0}, 743.52e-6, -0.17e-6 }, {{ 0, 0, 2, -2, 2, 0, 0, 0}, 56.91e-6, 0.06e-6 }, {{ 0, 0, 2, 0, 2, 0, 0, 0}, 9.84e-6, -0.01e-6 }, {{ 0, 0, 0, 0, 2, 0, 0, 0}, -8.85e-6, 0.01e-6 }, {{ 0, 1, 0, 0, 0, 0, 0, 0}, -6.38e-6, -0.05e-6 }, {{ 1, 0, 0, 0, 0, 0, 0, 0}, -3.07e-6, 0.00e-6 }, {{ 0, 1, 2, -2, 2, 0, 0, 0}, 2.23e-6, 0.00e-6 }, {{ 0, 0, 2, 0, 1, 0, 0, 0}, 1.67e-6, 0.00e-6 }, {{ 1, 0, 2, 0, 2, 0, 0, 0}, 1.30e-6, 0.00e-6 }, {{ 0, 1, -2, 2, -2, 0, 0, 0}, 0.93e-6, 0.00e-6 }, /* 11-20 */ {{ 1, 0, 0, -2, 0, 0, 0, 0}, 0.68e-6, 0.00e-6 }, {{ 0, 0, 2, -2, 1, 0, 0, 0}, -0.55e-6, 0.00e-6 }, {{ 1, 0, -2, 0, -2, 0, 0, 0}, 0.53e-6, 0.00e-6 }, {{ 0, 0, 0, 2, 0, 0, 0, 0}, -0.27e-6, 0.00e-6 }, {{ 1, 0, 0, 0, 1, 0, 0, 0}, -0.27e-6, 0.00e-6 }, {{ 1, 0, -2, -2, -2, 0, 0, 0}, -0.26e-6, 0.00e-6 }, {{ 1, 0, 0, 0, -1, 0, 0, 0}, -0.25e-6, 0.00e-6 }, {{ 1, 0, 2, 0, 1, 0, 0, 0}, 0.22e-6, 0.00e-6 }, {{ 2, 0, 0, -2, 0, 0, 0, 0}, -0.21e-6, 0.00e-6 }, {{ 2, 0, -2, 0, -1, 0, 0, 0}, 0.20e-6, 0.00e-6 }, /* 21-25 */ {{ 0, 0, 2, 2, 2, 0, 0, 0}, 0.17e-6, 0.00e-6 }, {{ 2, 0, 2, 0, 2, 0, 0, 0}, 0.13e-6, 0.00e-6 }, {{ 2, 0, 0, 0, 0, 0, 0, 0}, -0.13e-6, 0.00e-6 }, {{ 1, 0, 2, -2, 2, 0, 0, 0}, -0.12e-6, 0.00e-6 }, {{ 0, 0, 2, 0, 0, 0, 0, 0}, -0.11e-6, 0.00e-6 } }; /* Terms of order t^3 */ static const TERM s3[] = { /* 1-4 */ {{ 0, 0, 0, 0, 1, 0, 0, 0}, 0.30e-6, -23.42e-6 }, {{ 0, 0, 2, -2, 2, 0, 0, 0}, -0.03e-6, -1.46e-6 }, {{ 0, 0, 2, 0, 2, 0, 0, 0}, -0.01e-6, -0.25e-6 }, {{ 0, 0, 0, 0, 2, 0, 0, 0}, 0.00e-6, 0.23e-6 } }; /* Terms of order t^4 */ static const TERM s4[] = { /* 1-1 */ {{ 0, 0, 0, 0, 1, 0, 0, 0}, -0.26e-6, -0.01e-6 } }; /* Number of terms in the series */ static const int NS0 = (int) (sizeof s0 / sizeof (TERM)); static const int NS1 = (int) (sizeof s1 / sizeof (TERM)); static const int NS2 = (int) (sizeof s2 / sizeof (TERM)); static const int NS3 = (int) (sizeof s3 / sizeof (TERM)); static const int NS4 = (int) (sizeof s4 / sizeof (TERM)); /*--------------------------------------------------------------------*/ /* Interval between fundamental epoch J2000.0 and current date (JC). */ t = ((date1 - DJ00) + date2) / DJC; /* Fundamental Arguments (from IERS Conventions 2003) */ /* Mean anomaly of the Moon. */ fa[0] = iauFal03(t); /* Mean anomaly of the Sun. */ fa[1] = iauFalp03(t); /* Mean longitude of the Moon minus that of the ascending node. */ fa[2] = iauFaf03(t); /* Mean elongation of the Moon from the Sun. */ fa[3] = iauFad03(t); /* Mean longitude of the ascending node of the Moon. */ fa[4] = iauFaom03(t); /* Mean longitude of Venus. */ fa[5] = iauFave03(t); /* Mean longitude of Earth. */ fa[6] = iauFae03(t); /* General precession in longitude. */ fa[7] = iauFapa03(t); /* Evaluate s. */ w0 = sp[0]; w1 = sp[1]; w2 = sp[2]; w3 = sp[3]; w4 = sp[4]; w5 = sp[5]; for (i = NS0-1; i >= 0; i--) { a = 0.0; for (j = 0; j < 8; j++) { a += (double)s0[i].nfa[j] * fa[j]; } w0 += s0[i].s * sin(a) + s0[i].c * cos(a); } for (i = NS1-1; i >= 0; i--) { a = 0.0; for (j = 0; j < 8; j++) { a += (double)s1[i].nfa[j] * fa[j]; } w1 += s1[i].s * sin(a) + s1[i].c * cos(a); } for (i = NS2-1; i >= 0; i--) { a = 0.0; for (j = 0; j < 8; j++) { a += (double)s2[i].nfa[j] * fa[j]; } w2 += s2[i].s * sin(a) + s2[i].c * cos(a); } for (i = NS3-1; i >= 0; i--) { a = 0.0; for (j = 0; j < 8; j++) { a += (double)s3[i].nfa[j] * fa[j]; } w3 += s3[i].s * sin(a) + s3[i].c * cos(a); } for (i = NS4-1; i >= 0; i--) { a = 0.0; for (j = 0; j < 8; j++) { a += (double)s4[i].nfa[j] * fa[j]; } w4 += s4[i].s * sin(a) + s4[i].c * cos(a); } s = (w0 + (w1 + (w2 + (w3 + (w4 + w5 * t) * t) * t) * t) * t) * DAS2R - x*y/2.0; return s; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/s2c.c0000644000113000011300000001172012507252057013526 0ustar bellsbells#include "sofa.h" void iauS2c(double theta, double phi, double c[3]) /* ** - - - - - - - ** i a u S 2 c ** - - - - - - - ** ** Convert spherical coordinates to Cartesian. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** theta double longitude angle (radians) ** phi double latitude angle (radians) ** ** Returned: ** c double[3] direction cosines ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double cp; cp = cos(phi); c[0] = cos(theta) * cp; c[1] = sin(theta) * cp; c[2] = sin(phi); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/s2p.c0000644000113000011300000001213012507252057013537 0ustar bellsbells#include "sofa.h" void iauS2p(double theta, double phi, double r, double p[3]) /* ** - - - - - - - ** i a u S 2 p ** - - - - - - - ** ** Convert spherical polar coordinates to p-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** theta double longitude angle (radians) ** phi double latitude angle (radians) ** r double radial distance ** ** Returned: ** p double[3] Cartesian coordinates ** ** Called: ** iauS2c spherical coordinates to unit vector ** iauSxp multiply p-vector by scalar ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double u[3]; iauS2c(theta, phi, u); iauSxp(r, u, p); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/s2pv.c0000644000113000011300000001300312507252057013725 0ustar bellsbells#include "sofa.h" void iauS2pv(double theta, double phi, double r, double td, double pd, double rd, double pv[2][3]) /* ** - - - - - - - - ** i a u S 2 p v ** - - - - - - - - ** ** Convert position/velocity from spherical to Cartesian coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** theta double longitude angle (radians) ** phi double latitude angle (radians) ** r double radial distance ** td double rate of change of theta ** pd double rate of change of phi ** rd double rate of change of r ** ** Returned: ** pv double[2][3] pv-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double st, ct, sp, cp, rcp, x, y, rpd, w; st = sin(theta); ct = cos(theta); sp = sin(phi); cp = cos(phi); rcp = r * cp; x = rcp * ct; y = rcp * st; rpd = r * pd; w = rpd*sp - cp*rd; pv[0][0] = x; pv[0][1] = y; pv[0][2] = r * sp; pv[1][0] = -y*td - w*ct; pv[1][1] = x*td - w*st; pv[1][2] = rpd*cp + sp*rd; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/s2xpv.c0000644000113000011300000001224212507252057014121 0ustar bellsbells#include "sofa.h" void iauS2xpv(double s1, double s2, double pv[2][3], double spv[2][3]) /* ** - - - - - - - - - ** i a u S 2 x p v ** - - - - - - - - - ** ** Multiply a pv-vector by two scalars. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** s1 double scalar to multiply position component by ** s2 double scalar to multiply velocity component by ** pv double[2][3] pv-vector ** ** Returned: ** spv double[2][3] pv-vector: p scaled by s1, v scaled by s2 ** ** Note: ** It is permissible for pv and spv to be the same array. ** ** Called: ** iauSxp multiply p-vector by scalar ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { iauSxp(s1, pv[0], spv[0]); iauSxp(s2, pv[1], spv[1]); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/sepp.c0000644000113000011300000001336412507252057014014 0ustar bellsbells#include "sofa.h" double iauSepp(double a[3], double b[3]) /* ** - - - - - - - - ** i a u S e p p ** - - - - - - - - ** ** Angular separation between two p-vectors. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[3] first p-vector (not necessarily unit length) ** b double[3] second p-vector (not necessarily unit length) ** ** Returned (function value): ** double angular separation (radians, always positive) ** ** Notes: ** ** 1) If either vector is null, a zero result is returned. ** ** 2) The angular separation is most simply formulated in terms of ** scalar product. However, this gives poor accuracy for angles ** near zero and pi. The present algorithm uses both cross product ** and dot product, to deliver full accuracy whatever the size of ** the angle. ** ** Called: ** iauPxp vector product of two p-vectors ** iauPm modulus of p-vector ** iauPdp scalar product of two p-vectors ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double axb[3], ss, cs, s; /* Sine of angle between the vectors, multiplied by the two moduli. */ iauPxp(a, b, axb); ss = iauPm(axb); /* Cosine of the angle, multiplied by the two moduli. */ cs = iauPdp(a, b); /* The angle. */ s = ((ss != 0.0) || (cs != 0.0)) ? atan2(ss, cs) : 0.0; return s; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/seps.c0000644000113000011300000001245712507252057014021 0ustar bellsbells#include "sofa.h" double iauSeps(double al, double ap, double bl, double bp) /* ** - - - - - - - - ** i a u S e p s ** - - - - - - - - ** ** Angular separation between two sets of spherical coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** al double first longitude (radians) ** ap double first latitude (radians) ** bl double second longitude (radians) ** bp double second latitude (radians) ** ** Returned (function value): ** double angular separation (radians) ** ** Called: ** iauS2c spherical coordinates to unit vector ** iauSepp angular separation between two p-vectors ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double ac[3], bc[3], s; /* Spherical to Cartesian. */ iauS2c(al, ap, ac); iauS2c(bl, bp, bc); /* Angle between the vectors. */ s = iauSepp(ac, bc); return s; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/sp00.c0000644000113000011300000001463412507252057013630 0ustar bellsbells#include "sofa.h" double iauSp00(double date1, double date2) /* ** - - - - - - - - ** i a u S p 0 0 ** - - - - - - - - ** ** The TIO locator s', positioning the Terrestrial Intermediate Origin ** on the equator of the Celestial Intermediate Pole. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double the TIO locator s' in radians (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The TIO locator s' is obtained from polar motion observations by ** numerical integration, and so is in essence unpredictable. ** However, it is dominated by a secular drift of about ** 47 microarcseconds per century, which is the approximation ** evaluated by the present function. ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double t, sp; /* Interval between fundamental epoch J2000.0 and current date (JC). */ t = ((date1 - DJ00) + date2) / DJC; /* Approximate s'. */ sp = -47e-6 * t * DAS2R; return sp; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/starpm.c0000644000113000011300000002466412507252057014360 0ustar bellsbells#include "sofa.h" int iauStarpm(double ra1, double dec1, double pmr1, double pmd1, double px1, double rv1, double ep1a, double ep1b, double ep2a, double ep2b, double *ra2, double *dec2, double *pmr2, double *pmd2, double *px2, double *rv2) /* ** - - - - - - - - - - ** i a u S t a r p m ** - - - - - - - - - - ** ** Star proper motion: update star catalog data for space motion. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** ra1 double right ascension (radians), before ** dec1 double declination (radians), before ** pmr1 double RA proper motion (radians/year), before ** pmd1 double Dec proper motion (radians/year), before ** px1 double parallax (arcseconds), before ** rv1 double radial velocity (km/s, +ve = receding), before ** ep1a double "before" epoch, part A (Note 1) ** ep1b double "before" epoch, part B (Note 1) ** ep2a double "after" epoch, part A (Note 1) ** ep2b double "after" epoch, part B (Note 1) ** ** Returned: ** ra2 double right ascension (radians), after ** dec2 double declination (radians), after ** pmr2 double RA proper motion (radians/year), after ** pmd2 double Dec proper motion (radians/year), after ** px2 double parallax (arcseconds), after ** rv2 double radial velocity (km/s, +ve = receding), after ** ** Returned (function value): ** int status: ** -1 = system error (should not occur) ** 0 = no warnings or errors ** 1 = distance overridden (Note 6) ** 2 = excessive velocity (Note 7) ** 4 = solution didn't converge (Note 8) ** else = binary logical OR of the above warnings ** ** Notes: ** ** 1) The starting and ending TDB dates ep1a+ep1b and ep2a+ep2b are ** Julian Dates, apportioned in any convenient way between the two ** parts (A and B). For example, JD(TDB)=2450123.7 could be ** expressed in any of these ways, among others: ** ** epna epnb ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) In accordance with normal star-catalog conventions, the object's ** right ascension and declination are freed from the effects of ** secular aberration. The frame, which is aligned to the catalog ** equator and equinox, is Lorentzian and centered on the SSB. ** ** The proper motions are the rate of change of the right ascension ** and declination at the catalog epoch and are in radians per TDB ** Julian year. ** ** The parallax and radial velocity are in the same frame. ** ** 3) Care is needed with units. The star coordinates are in radians ** and the proper motions in radians per Julian year, but the ** parallax is in arcseconds. ** ** 4) The RA proper motion is in terms of coordinate angle, not true ** angle. If the catalog uses arcseconds for both RA and Dec proper ** motions, the RA proper motion will need to be divided by cos(Dec) ** before use. ** ** 5) Straight-line motion at constant speed, in the inertial frame, ** is assumed. ** ** 6) An extremely small (or zero or negative) parallax is interpreted ** to mean that the object is on the "celestial sphere", the radius ** of which is an arbitrary (large) value (see the iauStarpv ** function for the value used). When the distance is overridden in ** this way, the status, initially zero, has 1 added to it. ** ** 7) If the space velocity is a significant fraction of c (see the ** constant VMAX in the function iauStarpv), it is arbitrarily set ** to zero. When this action occurs, 2 is added to the status. ** ** 8) The relativistic adjustment carried out in the iauStarpv function ** involves an iterative calculation. If the process fails to ** converge within a set number of iterations, 4 is added to the ** status. ** ** Called: ** iauStarpv star catalog data to space motion pv-vector ** iauPvu update a pv-vector ** iauPdp scalar product of two p-vectors ** iauPvstar space motion pv-vector to star catalog data ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double pv1[2][3], tl1, dt, pv[2][3], r2, rdv, v2, c2mv2, tl2, pv2[2][3]; int j1, j2, j; /* RA,Dec etc. at the "before" epoch to space motion pv-vector. */ j1 = iauStarpv(ra1, dec1, pmr1, pmd1, px1, rv1, pv1); /* Light time when observed (days). */ tl1 = iauPm(pv1[0]) / DC; /* Time interval, "before" to "after" (days). */ dt = (ep2a - ep1a) + (ep2b - ep1b); /* Move star along track from the "before" observed position to the */ /* "after" geometric position. */ iauPvu(dt + tl1, pv1, pv); /* From this geometric position, deduce the observed light time (days) */ /* at the "after" epoch (with theoretically unneccessary error check). */ r2 = iauPdp(pv[0], pv[0]); rdv = iauPdp(pv[0], pv[1]); v2 = iauPdp(pv[1], pv[1]); c2mv2 = DC*DC - v2; if (c2mv2 <= 0) return -1; tl2 = (-rdv + sqrt(rdv*rdv + c2mv2*r2)) / c2mv2; /* Move the position along track from the observed place at the */ /* "before" epoch to the observed place at the "after" epoch. */ iauPvu(dt + (tl1 - tl2), pv1, pv2); /* Space motion pv-vector to RA,Dec etc. at the "after" epoch. */ j2 = iauPvstar(pv2, ra2, dec2, pmr2, pmd2, px2, rv2); /* Final status. */ j = (j2 == 0) ? j1 : -1; return j; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/starpv.c0000644000113000011300000002724012507252057014362 0ustar bellsbells#include "sofa.h" int iauStarpv(double ra, double dec, double pmr, double pmd, double px, double rv, double pv[2][3]) /* ** - - - - - - - - - - ** i a u S t a r p v ** - - - - - - - - - - ** ** Convert star catalog coordinates to position+velocity vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given (Note 1): ** ra double right ascension (radians) ** dec double declination (radians) ** pmr double RA proper motion (radians/year) ** pmd double Dec proper motion (radians/year) ** px double parallax (arcseconds) ** rv double radial velocity (km/s, positive = receding) ** ** Returned (Note 2): ** pv double[2][3] pv-vector (AU, AU/day) ** ** Returned (function value): ** int status: ** 0 = no warnings ** 1 = distance overridden (Note 6) ** 2 = excessive speed (Note 7) ** 4 = solution didn't converge (Note 8) ** else = binary logical OR of the above ** ** Notes: ** ** 1) The star data accepted by this function are "observables" for an ** imaginary observer at the solar-system barycenter. Proper motion ** and radial velocity are, strictly, in terms of barycentric ** coordinate time, TCB. For most practical applications, it is ** permissible to neglect the distinction between TCB and ordinary ** "proper" time on Earth (TT/TAI). The result will, as a rule, be ** limited by the intrinsic accuracy of the proper-motion and ** radial-velocity data; moreover, the pv-vector is likely to be ** merely an intermediate result, so that a change of time unit ** would cancel out overall. ** ** In accordance with normal star-catalog conventions, the object's ** right ascension and declination are freed from the effects of ** secular aberration. The frame, which is aligned to the catalog ** equator and equinox, is Lorentzian and centered on the SSB. ** ** 2) The resulting position and velocity pv-vector is with respect to ** the same frame and, like the catalog coordinates, is freed from ** the effects of secular aberration. Should the "coordinate ** direction", where the object was located at the catalog epoch, be ** required, it may be obtained by calculating the magnitude of the ** position vector pv[0][0-2] dividing by the speed of light in ** AU/day to give the light-time, and then multiplying the space ** velocity pv[1][0-2] by this light-time and adding the result to ** pv[0][0-2]. ** ** Summarizing, the pv-vector returned is for most stars almost ** identical to the result of applying the standard geometrical ** "space motion" transformation. The differences, which are the ** subject of the Stumpff paper referenced below, are: ** ** (i) In stars with significant radial velocity and proper motion, ** the constantly changing light-time distorts the apparent proper ** motion. Note that this is a classical, not a relativistic, ** effect. ** ** (ii) The transformation complies with special relativity. ** ** 3) Care is needed with units. The star coordinates are in radians ** and the proper motions in radians per Julian year, but the ** parallax is in arcseconds; the radial velocity is in km/s, but ** the pv-vector result is in AU and AU/day. ** ** 4) The RA proper motion is in terms of coordinate angle, not true ** angle. If the catalog uses arcseconds for both RA and Dec proper ** motions, the RA proper motion will need to be divided by cos(Dec) ** before use. ** ** 5) Straight-line motion at constant speed, in the inertial frame, ** is assumed. ** ** 6) An extremely small (or zero or negative) parallax is interpreted ** to mean that the object is on the "celestial sphere", the radius ** of which is an arbitrary (large) value (see the constant PXMIN). ** When the distance is overridden in this way, the status, ** initially zero, has 1 added to it. ** ** 7) If the space velocity is a significant fraction of c (see the ** constant VMAX), it is arbitrarily set to zero. When this action ** occurs, 2 is added to the status. ** ** 8) The relativistic adjustment involves an iterative calculation. ** If the process fails to converge within a set number (IMAX) of ** iterations, 4 is added to the status. ** ** 9) The inverse transformation is performed by the function ** iauPvstar. ** ** Called: ** iauS2pv spherical coordinates to pv-vector ** iauPm modulus of p-vector ** iauZp zero p-vector ** iauPn decompose p-vector into modulus and direction ** iauPdp scalar product of two p-vectors ** iauSxp multiply p-vector by scalar ** iauPmp p-vector minus p-vector ** iauPpp p-vector plus p-vector ** ** Reference: ** ** Stumpff, P., 1985, Astron.Astrophys. 144, 232-240. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Smallest allowed parallax */ static const double PXMIN = 1e-7; /* Largest allowed speed (fraction of c) */ static const double VMAX = 0.5; /* Maximum number of iterations for relativistic solution */ static const int IMAX = 100; int i, iwarn; double w, r, rd, rad, decd, v, x[3], usr[3], ust[3], vsr, vst, betst, betsr, bett, betr, dd, ddel, ur[3], ut[3], d = 0.0, del = 0.0, /* to prevent */ odd = 0.0, oddel = 0.0, /* compiler */ od = 0.0, odel = 0.0; /* warnings */ /* Distance (AU). */ if (px >= PXMIN) { w = px; iwarn = 0; } else { w = PXMIN; iwarn = 1; } r = DR2AS / w; /* Radial velocity (AU/day). */ rd = DAYSEC * rv * 1e3 / DAU; /* Proper motion (radian/day). */ rad = pmr / DJY; decd = pmd / DJY; /* To pv-vector (AU,AU/day). */ iauS2pv(ra, dec, r, rad, decd, rd, pv); /* If excessive velocity, arbitrarily set it to zero. */ v = iauPm(pv[1]); if (v / DC > VMAX) { iauZp(pv[1]); iwarn += 2; } /* Isolate the radial component of the velocity (AU/day). */ iauPn(pv[0], &w, x); vsr = iauPdp(x, pv[1]); iauSxp(vsr, x, usr); /* Isolate the transverse component of the velocity (AU/day). */ iauPmp(pv[1], usr, ust); vst = iauPm(ust); /* Special-relativity dimensionless parameters. */ betsr = vsr / DC; betst = vst / DC; /* Determine the inertial-to-observed relativistic correction terms. */ bett = betst; betr = betsr; for (i = 0; i < IMAX; i++) { d = 1.0 + betr; del = sqrt(1.0 - betr*betr - bett*bett) - 1.0; betr = d * betsr + del; bett = d * betst; if (i > 0) { dd = fabs(d - od); ddel = fabs(del - odel); if ((i > 1) && (dd >= odd) && (ddel >= oddel)) break; odd = dd; oddel = ddel; } od = d; odel = del; } if (i >= IMAX) iwarn += 4; /* Replace observed radial velocity with inertial value. */ w = (betsr != 0.0) ? d + del / betsr : 1.0; iauSxp(w, usr, ur); /* Replace observed tangential velocity with inertial value. */ iauSxp(d, ust, ut); /* Combine the two to obtain the inertial space velocity. */ iauPpp(ur, ut, pv[1]); /* Return the status. */ return iwarn; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/sxp.c0000644000113000011300000001165612507252057013661 0ustar bellsbells#include "sofa.h" void iauSxp(double s, double p[3], double sp[3]) /* ** - - - - - - - ** i a u S x p ** - - - - - - - ** ** Multiply a p-vector by a scalar. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** s double scalar ** p double[3] p-vector ** ** Returned: ** sp double[3] s * p ** ** Note: ** It is permissible for p and sp to be the same array. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { sp[0] = s * p[0]; sp[1] = s * p[1]; sp[2] = s * p[2]; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/sxpv.c0000644000113000011300000001175512507252057014047 0ustar bellsbells#include "sofa.h" void iauSxpv(double s, double pv[2][3], double spv[2][3]) /* ** - - - - - - - - ** i a u S x p v ** - - - - - - - - ** ** Multiply a pv-vector by a scalar. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** s double scalar ** pv double[2][3] pv-vector ** ** Returned: ** spv double[2][3] s * pv ** ** Note: ** It is permissible for pv and spv to be the same array ** ** Called: ** iauS2xpv multiply pv-vector by two scalars ** ** This revision: 2013 August 7 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { iauS2xpv(s, s, pv, spv); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/taitt.c0000644000113000011300000001331012507252057014161 0ustar bellsbells#include "sofa.h" int iauTaitt(double tai1, double tai2, double *tt1, double *tt2) /* ** - - - - - - - - - ** i a u T a i t t ** - - - - - - - - - ** ** Time scale transformation: International Atomic Time, TAI, to ** Terrestrial Time, TT. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tai1,tai2 double TAI as a 2-part Julian Date ** ** Returned: ** tt1,tt2 double TT as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Note: ** ** tai1+tai2 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where tai1 is the Julian ** Day Number and tai2 is the fraction of a day. The returned ** tt1,tt2 follow suit. ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* TT minus TAI (days). */ static const double dtat = TTMTAI/DAYSEC; /* Result, safeguarding precision. */ if ( tai1 > tai2 ) { *tt1 = tai1; *tt2 = tai2 + dtat; } else { *tt1 = tai1 + dtat; *tt2 = tai2; } /* Status (always OK). */ return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/taiut1.c0000644000113000011300000001340012507252057014243 0ustar bellsbells#include "sofa.h" int iauTaiut1(double tai1, double tai2, double dta, double *ut11, double *ut12) /* ** - - - - - - - - - - ** i a u T a i u t 1 ** - - - - - - - - - - ** ** Time scale transformation: International Atomic Time, TAI, to ** Universal Time, UT1. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tai1,tai2 double TAI as a 2-part Julian Date ** dta double UT1-TAI in seconds ** ** Returned: ** ut11,ut12 double UT1 as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Notes: ** ** 1) tai1+tai2 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where tai1 is the Julian ** Day Number and tai2 is the fraction of a day. The returned ** UT11,UT12 follow suit. ** ** 2) The argument dta, i.e. UT1-TAI, is an observed quantity, and is ** available from IERS tabulations. ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. ** */ { double dtad; /* Result, safeguarding precision. */ dtad = dta / DAYSEC; if ( tai1 > tai2 ) { *ut11 = tai1; *ut12 = tai2 + dtad; } else { *ut11 = tai1 + dtad; *ut12 = tai2; } /* Status (always OK). */ return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/taiutc.c0000644000113000011300000001647512507252057014344 0ustar bellsbells#include "sofa.h" int iauTaiutc(double tai1, double tai2, double *utc1, double *utc2) /* ** - - - - - - - - - - ** i a u T a i u t c ** - - - - - - - - - - ** ** Time scale transformation: International Atomic Time, TAI, to ** Coordinated Universal Time, UTC. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tai1,tai2 double TAI as a 2-part Julian Date (Note 1) ** ** Returned: ** utc1,utc2 double UTC as a 2-part quasi Julian Date (Notes 1-3) ** ** Returned (function value): ** int status: +1 = dubious year (Note 4) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) tai1+tai2 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where tai1 is the Julian ** Day Number and tai2 is the fraction of a day. The returned utc1 ** and utc2 form an analogous pair, except that a special convention ** is used, to deal with the problem of leap seconds - see the next ** note. ** ** 2) JD cannot unambiguously represent UTC during a leap second unless ** special measures are taken. The convention in the present ** function is that the JD day represents UTC days whether the ** length is 86399, 86400 or 86401 SI seconds. In the 1960-1972 era ** there were smaller jumps (in either direction) each time the ** linear UTC(TAI) expression was changed, and these "mini-leaps" ** are also included in the SOFA convention. ** ** 3) The function iauD2dtf can be used to transform the UTC quasi-JD ** into calendar date and clock time, including UTC leap second ** handling. ** ** 4) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the future ** to be trusted. See iauDat for further details. ** ** Called: ** iauUtctai UTC to TAI ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** ** This revision: 2013 September 12 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int big1; int i, j; double a1, a2, u1, u2, g1, g2; /* Put the two parts of the TAI into big-first order. */ big1 = ( tai1 >= tai2 ); if ( big1 ) { a1 = tai1; a2 = tai2; } else { a1 = tai2; a2 = tai1; } /* Initial guess for UTC. */ u1 = a1; u2 = a2; /* Iterate (though in most cases just once is enough). */ for ( i = 0; i < 3; i++ ) { /* Guessed UTC to TAI. */ j = iauUtctai(u1, u2, &g1, &g2); if ( j < 0 ) return j; /* Adjust guessed UTC. */ u2 += a1 - g1; u2 += a2 - g2; } /* Return the UTC result, preserving the TAI order. */ if ( big1 ) { *utc1 = u1; *utc2 = u2; } else { *utc1 = u2; *utc2 = u1; } /* Status. */ return j; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/tcbtdb.c0000644000113000011300000001547612507252057014315 0ustar bellsbells#include "sofa.h" int iauTcbtdb(double tcb1, double tcb2, double *tdb1, double *tdb2) /* ** - - - - - - - - - - ** i a u T c b t d b ** - - - - - - - - - - ** ** Time scale transformation: Barycentric Coordinate Time, TCB, to ** Barycentric Dynamical Time, TDB. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tcb1,tcb2 double TCB as a 2-part Julian Date ** ** Returned: ** tdb1,tdb2 double TDB as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Notes: ** ** 1) tcb1+tcb2 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where tcb1 is the Julian ** Day Number and tcb2 is the fraction of a day. The returned ** tdb1,tdb2 follow suit. ** ** 2) The 2006 IAU General Assembly introduced a conventional linear ** transformation between TDB and TCB. This transformation ** compensates for the drift between TCB and terrestrial time TT, ** and keeps TDB approximately centered on TT. Because the ** relationship between TT and TCB depends on the adopted solar ** system ephemeris, the degree of alignment between TDB and TT over ** long intervals will vary according to which ephemeris is used. ** Former definitions of TDB attempted to avoid this problem by ** stipulating that TDB and TT should differ only by periodic ** effects. This is a good description of the nature of the ** relationship but eluded precise mathematical formulation. The ** conventional linear relationship adopted in 2006 sidestepped ** these difficulties whilst delivering a TDB that in practice was ** consistent with values before that date. ** ** 3) TDB is essentially the same as Teph, the time argument for the ** JPL solar system ephemerides. ** ** Reference: ** ** IAU 2006 Resolution B3 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* 1977 Jan 1 00:00:32.184 TT, as two-part JD */ static const double t77td = DJM0 + DJM77; static const double t77tf = TTMTAI/DAYSEC; /* TDB (days) at TAI 1977 Jan 1.0 */ static const double tdb0 = TDB0/DAYSEC; double d; /* Result, safeguarding precision. */ if ( tcb1 > tcb2 ) { d = tcb1 - t77td; *tdb1 = tcb1; *tdb2 = tcb2 + tdb0 - ( d + ( tcb2 - t77tf ) ) * ELB; } else { d = tcb2 - t77td; *tdb1 = tcb1 + tdb0 - ( d + ( tcb1 - t77tf ) ) * ELB; *tdb2 = tcb2; } /* Status (always OK). */ return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/tcgtt.c0000644000113000011300000001331012507252057014161 0ustar bellsbells#include "sofa.h" int iauTcgtt(double tcg1, double tcg2, double *tt1, double *tt2) /* ** - - - - - - - - - ** i a u T c g t t ** - - - - - - - - - ** ** Time scale transformation: Geocentric Coordinate Time, TCG, to ** Terrestrial Time, TT. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tcg1,tcg2 double TCG as a 2-part Julian Date ** ** Returned: ** tt1,tt2 double TT as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Note: ** ** tcg1+tcg2 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where tcg1 is the Julian ** Day Number and tcg22 is the fraction of a day. The returned ** tt1,tt2 follow suit. ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),. ** IERS Technical Note No. 32, BKG (2004) ** ** IAU 2000 Resolution B1.9 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* 1977 Jan 1 00:00:32.184 TT, as MJD */ static const double t77t = DJM77 + TTMTAI/DAYSEC; /* Result, safeguarding precision. */ if ( tcg1 > tcg2 ) { *tt1 = tcg1; *tt2 = tcg2 - ( ( tcg1 - DJM0 ) + ( tcg2 - t77t ) ) * ELG; } else { *tt1 = tcg1 - ( ( tcg2 - DJM0 ) + ( tcg1 - t77t ) ) * ELG; *tt2 = tcg2; } /* OK status. */ return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/tdbtcb.c0000644000113000011300000001567012507252057014311 0ustar bellsbells#include "sofa.h" int iauTdbtcb(double tdb1, double tdb2, double *tcb1, double *tcb2) /* ** - - - - - - - - - - ** i a u T d b t c b ** - - - - - - - - - - ** ** Time scale transformation: Barycentric Dynamical Time, TDB, to ** Barycentric Coordinate Time, TCB. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tdb1,tdb2 double TDB as a 2-part Julian Date ** ** Returned: ** tcb1,tcb2 double TCB as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Notes: ** ** 1) tdb1+tdb2 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where tdb1 is the Julian ** Day Number and tdb2 is the fraction of a day. The returned ** tcb1,tcb2 follow suit. ** ** 2) The 2006 IAU General Assembly introduced a conventional linear ** transformation between TDB and TCB. This transformation ** compensates for the drift between TCB and terrestrial time TT, ** and keeps TDB approximately centered on TT. Because the ** relationship between TT and TCB depends on the adopted solar ** system ephemeris, the degree of alignment between TDB and TT over ** long intervals will vary according to which ephemeris is used. ** Former definitions of TDB attempted to avoid this problem by ** stipulating that TDB and TT should differ only by periodic ** effects. This is a good description of the nature of the ** relationship but eluded precise mathematical formulation. The ** conventional linear relationship adopted in 2006 sidestepped ** these difficulties whilst delivering a TDB that in practice was ** consistent with values before that date. ** ** 3) TDB is essentially the same as Teph, the time argument for the ** JPL solar system ephemerides. ** ** Reference: ** ** IAU 2006 Resolution B3 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* 1977 Jan 1 00:00:32.184 TT, as two-part JD */ static const double t77td = DJM0 + DJM77; static const double t77tf = TTMTAI/DAYSEC; /* TDB (days) at TAI 1977 Jan 1.0 */ static const double tdb0 = TDB0/DAYSEC; /* TDB to TCB rate */ static const double elbb = ELB/(1.0-ELB); double d, f; /* Result, preserving date format but safeguarding precision. */ if ( tdb1 > tdb2 ) { d = t77td - tdb1; f = tdb2 - tdb0; *tcb1 = tdb1; *tcb2 = f - ( d - ( f - t77tf ) ) * elbb; } else { d = t77td - tdb2; f = tdb1 - tdb0; *tcb1 = f + ( d - ( f - t77tf ) ) * elbb; *tcb2 = tdb2; } /* Status (always OK). */ return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/tdbtt.c0000644000113000011300000001430412507252057014161 0ustar bellsbells#include "sofa.h" int iauTdbtt(double tdb1, double tdb2, double dtr, double *tt1, double *tt2 ) /* ** - - - - - - - - - ** i a u T d b t t ** - - - - - - - - - ** ** Time scale transformation: Barycentric Dynamical Time, TDB, to ** Terrestrial Time, TT. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tdb1,tdb2 double TDB as a 2-part Julian Date ** dtr double TDB-TT in seconds ** ** Returned: ** tt1,tt2 double TT as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Notes: ** ** 1) tdb1+tdb2 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where tdb1 is the Julian ** Day Number and tdb2 is the fraction of a day. The returned ** tt1,tt2 follow suit. ** ** 2) The argument dtr represents the quasi-periodic component of the ** GR transformation between TT and TCB. It is dependent upon the ** adopted solar-system ephemeris, and can be obtained by numerical ** integration, by interrogating a precomputed time ephemeris or by ** evaluating a model such as that implemented in the SOFA function ** iauDtdb. The quantity is dominated by an annual term of 1.7 ms ** amplitude. ** ** 3) TDB is essentially the same as Teph, the time argument for the ** JPL solar system ephemerides. ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** IAU 2006 Resolution 3 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. ** */ { double dtrd; /* Result, safeguarding precision. */ dtrd = dtr / DAYSEC; if ( tdb1 > tdb2 ) { *tt1 = tdb1; *tt2 = tdb2 - dtrd; } else { *tt1 = tdb1 - dtrd; *tt2 = tdb2; } /* Status (always OK). */ return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/tf2a.c0000644000113000011300000001365612507252057013705 0ustar bellsbells#include "sofa.h" #include int iauTf2a(char s, int ihour, int imin, double sec, double *rad) /* ** - - - - - - - - ** i a u T f 2 a ** - - - - - - - - ** ** Convert hours, minutes, seconds to radians. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** s char sign: '-' = negative, otherwise positive ** ihour int hours ** imin int minutes ** sec double seconds ** ** Returned: ** rad double angle in radians ** ** Returned (function value): ** int status: 0 = OK ** 1 = ihour outside range 0-23 ** 2 = imin outside range 0-59 ** 3 = sec outside range 0-59.999... ** ** Notes: ** ** 1) The result is computed even if any of the range checks fail. ** ** 2) Negative ihour, imin and/or sec produce a warning status, but ** the absolute value is used in the conversion. ** ** 3) If there are multiple errors, the status value reflects only the ** first, the smallest taking precedence. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Compute the interval. */ *rad = ( s == '-' ? -1.0 : 1.0 ) * ( 60.0 * ( 60.0 * ( (double) abs(ihour) ) + ( (double) abs(imin) ) ) + fabs(sec) ) * DS2R; /* Validate arguments and return status. */ if ( ihour < 0 || ihour > 23 ) return 1; if ( imin < 0 || imin > 59 ) return 2; if ( sec < 0.0 || sec >= 60.0 ) return 3; return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/tf2d.c0000644000113000011300000001366212507252057013705 0ustar bellsbells#include "sofa.h" #include int iauTf2d(char s, int ihour, int imin, double sec, double *days) /* ** - - - - - - - - ** i a u T f 2 d ** - - - - - - - - ** ** Convert hours, minutes, seconds to days. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** s char sign: '-' = negative, otherwise positive ** ihour int hours ** imin int minutes ** sec double seconds ** ** Returned: ** days double interval in days ** ** Returned (function value): ** int status: 0 = OK ** 1 = ihour outside range 0-23 ** 2 = imin outside range 0-59 ** 3 = sec outside range 0-59.999... ** ** Notes: ** ** 1) The result is computed even if any of the range checks fail. ** ** 2) Negative ihour, imin and/or sec produce a warning status, but ** the absolute value is used in the conversion. ** ** 3) If there are multiple errors, the status value reflects only the ** first, the smallest taking precedence. ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Compute the interval. */ *days = ( s == '-' ? -1.0 : 1.0 ) * ( 60.0 * ( 60.0 * ( (double) abs(ihour) ) + ( (double) abs(imin) ) ) + fabs(sec) ) / DAYSEC; /* Validate arguments and return status. */ if ( ihour < 0 || ihour > 23 ) return 1; if ( imin < 0 || imin > 59 ) return 2; if ( sec < 0.0 || sec >= 60.0 ) return 3; return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/tr.c0000644000113000011300000001201712507252057013464 0ustar bellsbells#include "sofa.h" void iauTr(double r[3][3], double rt[3][3]) /* ** - - - - - - ** i a u T r ** - - - - - - ** ** Transpose an r-matrix. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** r double[3][3] r-matrix ** ** Returned: ** rt double[3][3] transpose ** ** Note: ** It is permissible for r and rt to be the same array. ** ** Called: ** iauCr copy r-matrix ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double wm[3][3]; int i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { wm[i][j] = r[j][i]; } } iauCr(wm, rt); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/trxp.c0000644000113000011300000001221512507252057014034 0ustar bellsbells#include "sofa.h" void iauTrxp(double r[3][3], double p[3], double trp[3]) /* ** - - - - - - - - ** i a u T r x p ** - - - - - - - - ** ** Multiply a p-vector by the transpose of an r-matrix. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** r double[3][3] r-matrix ** p double[3] p-vector ** ** Returned: ** trp double[3] r * p ** ** Note: ** It is permissible for p and trp to be the same array. ** ** Called: ** iauTr transpose r-matrix ** iauRxp product of r-matrix and p-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double tr[3][3]; /* Transpose of matrix r. */ iauTr(r, tr); /* Matrix tr * vector p -> vector trp. */ iauRxp(tr, p, trp); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/trxpv.c0000644000113000011300000001225212507252057014223 0ustar bellsbells#include "sofa.h" void iauTrxpv(double r[3][3], double pv[2][3], double trpv[2][3]) /* ** - - - - - - - - - ** i a u T r x p v ** - - - - - - - - - ** ** Multiply a pv-vector by the transpose of an r-matrix. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** r double[3][3] r-matrix ** pv double[2][3] pv-vector ** ** Returned: ** trpv double[2][3] r * pv ** ** Note: ** It is permissible for pv and trpv to be the same array. ** ** Called: ** iauTr transpose r-matrix ** iauRxpv product of r-matrix and pv-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double tr[3][3]; /* Transpose of matrix r. */ iauTr(r, tr); /* Matrix tr * vector pv -> vector trpv. */ iauRxpv(tr, pv, trpv); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/t_sofa_c.c0000644000113000011300000065361612507252057014634 0ustar bellsbells#include #include static int verbose = 0; /* ** - - - - - - - - - ** t _ s o f a _ c ** - - - - - - - - - ** ** Validate the SOFA C functions. ** ** Each SOFA function is at least called and a usually quite basic test ** is performed. Successful completion is signalled by a confirming ** message. Failure of a given function or group of functions results ** in error messages. ** ** All messages go to stdout. ** ** This revision: 2015 January 30 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ static void viv(int ival, int ivalok, const char *func, const char *test, int *status) /* ** - - - - ** v i v ** - - - - ** ** Validate an integer result. ** ** Internal function used by t_sofa_c program. ** ** Given: ** ival int value computed by function under test ** ivalok int correct value ** func char[] name of function under test ** test char[] name of individual test ** ** Given and returned: ** status int set to TRUE if test fails ** ** This revision: 2013 August 7 */ { if (ival != ivalok) { *status = 1; printf("%s failed: %s want %d got %d\n", func, test, ivalok, ival); } else if (verbose) { printf("%s passed: %s want %d got %d\n", func, test, ivalok, ival); } } static void vvd(double val, double valok, double dval, const char *func, const char *test, int *status) /* ** - - - - ** v v d ** - - - - ** ** Validate a double result. ** ** Internal function used by t_sofa_c program. ** ** Given: ** val double value computed by function under test ** valok double expected value ** dval double maximum allowable error ** func char[] name of function under test ** test char[] name of individual test ** ** Given and returned: ** status int set to TRUE if test fails ** ** This revision: 2013 August 7 */ { double a, f; /* absolute and fractional error */ a = val - valok; if (fabs(a) > dval) { f = fabs(valok / a); *status = 1; printf("%s failed: %s want %.20g got %.20g (1/%.3g)\n", func, test, valok, val, f); } else if (verbose) { printf("%s passed: %s want %.20g got %.20g\n", func, test, valok, val); } } static void t_a2af(int *status) /* ** - - - - - - - ** t _ a 2 a f ** - - - - - - - ** ** Test iauA2af function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauA2af, viv ** ** This revision: 2013 August 7 */ { int idmsf[4]; char s; iauA2af(4, 2.345, &s, idmsf); viv(s, '+', "iauA2af", "s", status); viv(idmsf[0], 134, "iauA2af", "0", status); viv(idmsf[1], 21, "iauA2af", "1", status); viv(idmsf[2], 30, "iauA2af", "2", status); viv(idmsf[3], 9706, "iauA2af", "3", status); } static void t_a2tf(int *status) /* ** - - - - - - - ** t _ a 2 t f ** - - - - - - - ** ** Test iauA2tf function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauA2tf, viv ** ** This revision: 2013 August 7 */ { int ihmsf[4]; char s; iauA2tf(4, -3.01234, &s, ihmsf); viv((int)s, '-', "iauA2tf", "s", status); viv(ihmsf[0], 11, "iauA2tf", "0", status); viv(ihmsf[1], 30, "iauA2tf", "1", status); viv(ihmsf[2], 22, "iauA2tf", "2", status); viv(ihmsf[3], 6484, "iauA2tf", "3", status); } static void t_ab(int *status) /* ** - - - - - ** t _ a b ** - - - - - ** ** Test iauAb function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauAb, vvd ** ** This revision: 2013 October 1 */ { double pnat[3], v[3], s, bm1, ppr[3]; pnat[0] = -0.76321968546737951; pnat[1] = -0.60869453983060384; pnat[2] = -0.21676408580639883; v[0] = 2.1044018893653786e-5; v[1] = -8.9108923304429319e-5; v[2] = -3.8633714797716569e-5; s = 0.99980921395708788; bm1 = 0.99999999506209258; iauAb(pnat, v, s, bm1, ppr); vvd(ppr[0], -0.7631631094219556269, 1e-12, "iauAb", "1", status); vvd(ppr[1], -0.6087553082505590832, 1e-12, "iauAb", "2", status); vvd(ppr[2], -0.2167926269368471279, 1e-12, "iauAb", "3", status); } static void t_af2a(int *status) /* ** - - - - - - - ** t _ a f 2 a ** - - - - - - - ** ** Test iauAf2a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauAf2a, viv ** ** This revision: 2013 August 7 */ { double a; int j; j = iauAf2a('-', 45, 13, 27.2, &a); vvd(a, -0.7893115794313644842, 1e-12, "iauAf2a", "a", status); viv(j, 0, "iauAf2a", "j", status); } static void t_anp(int *status) /* ** - - - - - - ** t _ a n p ** - - - - - - ** ** Test iauAnp function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauAnp, vvd ** ** This revision: 2013 August 7 */ { vvd(iauAnp(-0.1), 6.183185307179586477, 1e-12, "iauAnp", "", status); } static void t_anpm(int *status) /* ** - - - - - - - ** t _ a n p m ** - - - - - - - ** ** Test iauAnpm function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauAnpm, vvd ** ** This revision: 2013 August 7 */ { vvd(iauAnpm(-4.0), 2.283185307179586477, 1e-12, "iauAnpm", "", status); } static void t_apcg(int *status) /* ** - - - - - - - ** t _ a p c g ** - - - - - - - ** ** Test iauApcg function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauApcg, vvd ** ** This revision: 2013 October 3 */ { double date1, date2, ebpv[2][3], ehp[3]; iauASTROM astrom; date1 = 2456165.5; date2 = 0.401182685; ebpv[0][0] = 0.901310875; ebpv[0][1] = -0.417402664; ebpv[0][2] = -0.180982288; ebpv[1][0] = 0.00742727954; ebpv[1][1] = 0.0140507459; ebpv[1][2] = 0.00609045792; ehp[0] = 0.903358544; ehp[1] = -0.415395237; ehp[2] = -0.180084014; iauApcg(date1, date2, ebpv, ehp, &astrom); vvd(astrom.pmt, 12.65133794027378508, 1e-11, "iauApcg", "pmt", status); vvd(astrom.eb[0], 0.901310875, 1e-12, "iauApcg", "eb(1)", status); vvd(astrom.eb[1], -0.417402664, 1e-12, "iauApcg", "eb(2)", status); vvd(astrom.eb[2], -0.180982288, 1e-12, "iauApcg", "eb(3)", status); vvd(astrom.eh[0], 0.8940025429324143045, 1e-12, "iauApcg", "eh(1)", status); vvd(astrom.eh[1], -0.4110930268679817955, 1e-12, "iauApcg", "eh(2)", status); vvd(astrom.eh[2], -0.1782189004872870264, 1e-12, "iauApcg", "eh(3)", status); vvd(astrom.em, 1.010465295811013146, 1e-12, "iauApcg", "em", status); vvd(astrom.v[0], 0.4289638897813379954e-4, 1e-16, "iauApcg", "v(1_", status); vvd(astrom.v[1], 0.8115034021720941898e-4, 1e-16, "iauApcg", "v(2)", status); vvd(astrom.v[2], 0.3517555123437237778e-4, 1e-16, "iauApcg", "v(3)", status); vvd(astrom.bm1, 0.9999999951686013336, 1e-12, "iauApcg", "bm1", status); vvd(astrom.bpn[0][0], 1.0, 0.0, "iauApcg", "bpn(1,1)", status); vvd(astrom.bpn[1][0], 0.0, 0.0, "iauApcg", "bpn(2,1)", status); vvd(astrom.bpn[2][0], 0.0, 0.0, "iauApcg", "bpn(3,1)", status); vvd(astrom.bpn[0][1], 0.0, 0.0, "iauApcg", "bpn(1,2)", status); vvd(astrom.bpn[1][1], 1.0, 0.0, "iauApcg", "bpn(2,2)", status); vvd(astrom.bpn[2][1], 0.0, 0.0, "iauApcg", "bpn(3,2)", status); vvd(astrom.bpn[0][2], 0.0, 0.0, "iauApcg", "bpn(1,3)", status); vvd(astrom.bpn[1][2], 0.0, 0.0, "iauApcg", "bpn(2,3)", status); vvd(astrom.bpn[2][2], 1.0, 0.0, "iauApcg", "bpn(3,3)", status); } static void t_apcg13(int *status) /* ** - - - - - - - - - ** t _ a p c g 1 3 ** - - - - - - - - - ** ** Test iauApcg13 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauApcg13, vvd ** ** This revision: 2013 October 3 */ { double date1, date2; iauASTROM astrom; date1 = 2456165.5; date2 = 0.401182685; iauApcg13(date1, date2, &astrom); vvd(astrom.pmt, 12.65133794027378508, 1e-11, "iauApcg13", "pmt", status); vvd(astrom.eb[0], 0.9013108747340644755, 1e-12, "iauApcg13", "eb(1)", status); vvd(astrom.eb[1], -0.4174026640406119957, 1e-12, "iauApcg13", "eb(2)", status); vvd(astrom.eb[2], -0.1809822877867817771, 1e-12, "iauApcg13", "eb(3)", status); vvd(astrom.eh[0], 0.8940025429255499549, 1e-12, "iauApcg13", "eh(1)", status); vvd(astrom.eh[1], -0.4110930268331896318, 1e-12, "iauApcg13", "eh(2)", status); vvd(astrom.eh[2], -0.1782189006019749850, 1e-12, "iauApcg13", "eh(3)", status); vvd(astrom.em, 1.010465295964664178, 1e-12, "iauApcg13", "em", status); vvd(astrom.v[0], 0.4289638897157027528e-4, 1e-16, "iauApcg13", "v(1)", status); vvd(astrom.v[1], 0.8115034002544663526e-4, 1e-16, "iauApcg13", "v(2)", status); vvd(astrom.v[2], 0.3517555122593144633e-4, 1e-16, "iauApcg13", "v(3)", status); vvd(astrom.bm1, 0.9999999951686013498, 1e-12, "iauApcg13", "bm1", status); vvd(astrom.bpn[0][0], 1.0, 0.0, "iauApcg13", "bpn(1,1)", status); vvd(astrom.bpn[1][0], 0.0, 0.0, "iauApcg13", "bpn(2,1)", status); vvd(astrom.bpn[2][0], 0.0, 0.0, "iauApcg13", "bpn(3,1)", status); vvd(astrom.bpn[0][1], 0.0, 0.0, "iauApcg13", "bpn(1,2)", status); vvd(astrom.bpn[1][1], 1.0, 0.0, "iauApcg13", "bpn(2,2)", status); vvd(astrom.bpn[2][1], 0.0, 0.0, "iauApcg13", "bpn(3,2)", status); vvd(astrom.bpn[0][2], 0.0, 0.0, "iauApcg13", "bpn(1,3)", status); vvd(astrom.bpn[1][2], 0.0, 0.0, "iauApcg13", "bpn(2,3)", status); vvd(astrom.bpn[2][2], 1.0, 0.0, "iauApcg13", "bpn(3,3)", status); } static void t_apci(int *status) /* ** - - - - - - - ** t _ a p c i ** - - - - - - - ** ** Test iauApci function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauApci, vvd ** ** This revision: 2013 October 3 */ { double date1, date2, ebpv[2][3], ehp[3], x, y, s; iauASTROM astrom; date1 = 2456165.5; date2 = 0.401182685; ebpv[0][0] = 0.901310875; ebpv[0][1] = -0.417402664; ebpv[0][2] = -0.180982288; ebpv[1][0] = 0.00742727954; ebpv[1][1] = 0.0140507459; ebpv[1][2] = 0.00609045792; ehp[0] = 0.903358544; ehp[1] = -0.415395237; ehp[2] = -0.180084014; x = 0.0013122272; y = -2.92808623e-5; s = 3.05749468e-8; iauApci(date1, date2, ebpv, ehp, x, y, s, &astrom); vvd(astrom.pmt, 12.65133794027378508, 1e-11, "iauApci", "pmt", status); vvd(astrom.eb[0], 0.901310875, 1e-12, "iauApci", "eb(1)", status); vvd(astrom.eb[1], -0.417402664, 1e-12, "iauApci", "eb(2)", status); vvd(astrom.eb[2], -0.180982288, 1e-12, "iauApci", "eb(3)", status); vvd(astrom.eh[0], 0.8940025429324143045, 1e-12, "iauApci", "eh(1)", status); vvd(astrom.eh[1], -0.4110930268679817955, 1e-12, "iauApci", "eh(2)", status); vvd(astrom.eh[2], -0.1782189004872870264, 1e-12, "iauApci", "eh(3)", status); vvd(astrom.em, 1.010465295811013146, 1e-12, "iauApci", "em", status); vvd(astrom.v[0], 0.4289638897813379954e-4, 1e-16, "iauApci", "v(1)", status); vvd(astrom.v[1], 0.8115034021720941898e-4, 1e-16, "iauApci", "v(2)", status); vvd(astrom.v[2], 0.3517555123437237778e-4, 1e-16, "iauApci", "v(3)", status); vvd(astrom.bm1, 0.9999999951686013336, 1e-12, "iauApci", "bm1", status); vvd(astrom.bpn[0][0], 0.9999991390295159156, 1e-12, "iauApci", "bpn(1,1)", status); vvd(astrom.bpn[1][0], 0.4978650072505016932e-7, 1e-12, "iauApci", "bpn(2,1)", status); vvd(astrom.bpn[2][0], 0.1312227200000000000e-2, 1e-12, "iauApci", "bpn(3,1)", status); vvd(astrom.bpn[0][1], -0.1136336653771609630e-7, 1e-12, "iauApci", "bpn(1,2)", status); vvd(astrom.bpn[1][1], 0.9999999995713154868, 1e-12, "iauApci", "bpn(2,2)", status); vvd(astrom.bpn[2][1], -0.2928086230000000000e-4, 1e-12, "iauApci", "bpn(3,2)", status); vvd(astrom.bpn[0][2], -0.1312227200895260194e-2, 1e-12, "iauApci", "bpn(1,3)", status); vvd(astrom.bpn[1][2], 0.2928082217872315680e-4, 1e-12, "iauApci", "bpn(2,3)", status); vvd(astrom.bpn[2][2], 0.9999991386008323373, 1e-12, "iauApci", "bpn(3,3)", status); } static void t_apci13(int *status) /* ** - - - - - - - - - ** t _ a p c i 1 3 ** - - - - - - - - - ** ** Test iauApci13 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauApci13, vvd ** ** This revision: 2013 October 3 */ { double date1, date2, eo; iauASTROM astrom; date1 = 2456165.5; date2 = 0.401182685; iauApci13(date1, date2, &astrom, &eo); vvd(astrom.pmt, 12.65133794027378508, 1e-11, "iauApci13", "pmt", status); vvd(astrom.eb[0], 0.9013108747340644755, 1e-12, "iauApci13", "eb(1)", status); vvd(astrom.eb[1], -0.4174026640406119957, 1e-12, "iauApci13", "eb(2)", status); vvd(astrom.eb[2], -0.1809822877867817771, 1e-12, "iauApci13", "eb(3)", status); vvd(astrom.eh[0], 0.8940025429255499549, 1e-12, "iauApci13", "eh(1)", status); vvd(astrom.eh[1], -0.4110930268331896318, 1e-12, "iauApci13", "eh(2)", status); vvd(astrom.eh[2], -0.1782189006019749850, 1e-12, "iauApci13", "eh(3)", status); vvd(astrom.em, 1.010465295964664178, 1e-12, "iauApci13", "em", status); vvd(astrom.v[0], 0.4289638897157027528e-4, 1e-16, "iauApci13", "v(1)", status); vvd(astrom.v[1], 0.8115034002544663526e-4, 1e-16, "iauApci13", "v(2)", status); vvd(astrom.v[2], 0.3517555122593144633e-4, 1e-16, "iauApci13", "v(3)", status); vvd(astrom.bm1, 0.9999999951686013498, 1e-12, "iauApci13", "bm1", status); vvd(astrom.bpn[0][0], 0.9999992060376761710, 1e-12, "iauApci13", "bpn(1,1)", status); vvd(astrom.bpn[1][0], 0.4124244860106037157e-7, 1e-12, "iauApci13", "bpn(2,1)", status); vvd(astrom.bpn[2][0], 0.1260128571051709670e-2, 1e-12, "iauApci13", "bpn(3,1)", status); vvd(astrom.bpn[0][1], -0.1282291987222130690e-7, 1e-12, "iauApci13", "bpn(1,2)", status); vvd(astrom.bpn[1][1], 0.9999999997456835325, 1e-12, "iauApci13", "bpn(2,2)", status); vvd(astrom.bpn[2][1], -0.2255288829420524935e-4, 1e-12, "iauApci13", "bpn(3,2)", status); vvd(astrom.bpn[0][2], -0.1260128571661374559e-2, 1e-12, "iauApci13", "bpn(1,3)", status); vvd(astrom.bpn[1][2], 0.2255285422953395494e-4, 1e-12, "iauApci13", "bpn(2,3)", status); vvd(astrom.bpn[2][2], 0.9999992057833604343, 1e-12, "iauApci13", "bpn(3,3)", status); vvd(eo, -0.2900618712657375647e-2, 1e-12, "iauApci13", "eo", status); } static void t_apco(int *status) /* ** - - - - - - - ** t _ a p c o ** - - - - - - - ** ** Test iauApco function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauApco, vvd ** ** This revision: 2013 October 3 */ { double date1, date2, ebpv[2][3], ehp[3], x, y, s, theta, elong, phi, hm, xp, yp, sp, refa, refb; iauASTROM astrom; date1 = 2456384.5; date2 = 0.970031644; ebpv[0][0] = -0.974170438; ebpv[0][1] = -0.211520082; ebpv[0][2] = -0.0917583024; ebpv[1][0] = 0.00364365824; ebpv[1][1] = -0.0154287319; ebpv[1][2] = -0.00668922024; ehp[0] = -0.973458265; ehp[1] = -0.209215307; ehp[2] = -0.0906996477; x = 0.0013122272; y = -2.92808623e-5; s = 3.05749468e-8; theta = 3.14540971; elong = -0.527800806; phi = -1.2345856; hm = 2738.0; xp = 2.47230737e-7; yp = 1.82640464e-6; sp = -3.01974337e-11; refa = 0.000201418779; refb = -2.36140831e-7; iauApco(date1, date2, ebpv, ehp, x, y, s, theta, elong, phi, hm, xp, yp, sp, refa, refb, &astrom); vvd(astrom.pmt, 13.25248468622587269, 1e-11, "iauApco", "pmt", status); vvd(astrom.eb[0], -0.9741827110630897003, 1e-12, "iauApco", "eb(1)", status); vvd(astrom.eb[1], -0.2115130190135014340, 1e-12, "iauApco", "eb(2)", status); vvd(astrom.eb[2], -0.09179840186968295686, 1e-12, "iauApco", "eb(3)", status); vvd(astrom.eh[0], -0.9736425571689670428, 1e-12, "iauApco", "eh(1)", status); vvd(astrom.eh[1], -0.2092452125848862201, 1e-12, "iauApco", "eh(2)", status); vvd(astrom.eh[2], -0.09075578152261439954, 1e-12, "iauApco", "eh(3)", status); vvd(astrom.em, 0.9998233241710617934, 1e-12, "iauApco", "em", status); vvd(astrom.v[0], 0.2078704985147609823e-4, 1e-16, "iauApco", "v(1)", status); vvd(astrom.v[1], -0.8955360074407552709e-4, 1e-16, "iauApco", "v(2)", status); vvd(astrom.v[2], -0.3863338980073114703e-4, 1e-16, "iauApco", "v(3)", status); vvd(astrom.bm1, 0.9999999950277561600, 1e-12, "iauApco", "bm1", status); vvd(astrom.bpn[0][0], 0.9999991390295159156, 1e-12, "iauApco", "bpn(1,1)", status); vvd(astrom.bpn[1][0], 0.4978650072505016932e-7, 1e-12, "iauApco", "bpn(2,1)", status); vvd(astrom.bpn[2][0], 0.1312227200000000000e-2, 1e-12, "iauApco", "bpn(3,1)", status); vvd(astrom.bpn[0][1], -0.1136336653771609630e-7, 1e-12, "iauApco", "bpn(1,2)", status); vvd(astrom.bpn[1][1], 0.9999999995713154868, 1e-12, "iauApco", "bpn(2,2)", status); vvd(astrom.bpn[2][1], -0.2928086230000000000e-4, 1e-12, "iauApco", "bpn(3,2)", status); vvd(astrom.bpn[0][2], -0.1312227200895260194e-2, 1e-12, "iauApco", "bpn(1,3)", status); vvd(astrom.bpn[1][2], 0.2928082217872315680e-4, 1e-12, "iauApco", "bpn(2,3)", status); vvd(astrom.bpn[2][2], 0.9999991386008323373, 1e-12, "iauApco", "bpn(3,3)", status); vvd(astrom.along, -0.5278008060301974337, 1e-12, "iauApco", "along", status); vvd(astrom.xpl, 0.1133427418174939329e-5, 1e-17, "iauApco", "xpl", status); vvd(astrom.ypl, 0.1453347595745898629e-5, 1e-17, "iauApco", "ypl", status); vvd(astrom.sphi, -0.9440115679003211329, 1e-12, "iauApco", "sphi", status); vvd(astrom.cphi, 0.3299123514971474711, 1e-12, "iauApco", "cphi", status); vvd(astrom.diurab, 0, 0, "iauApco", "diurab", status); vvd(astrom.eral, 2.617608903969802566, 1e-12, "iauApco", "eral", status); vvd(astrom.refa, 0.2014187790000000000e-3, 1e-15, "iauApco", "refa", status); vvd(astrom.refb, -0.2361408310000000000e-6, 1e-18, "iauApco", "refb", status); } static void t_apco13(int *status) /* ** - - - - - - - - - ** t _ a p c o 1 3 ** - - - - - - - - - ** ** Test iauApco13 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauApco13, vvd, viv ** ** This revision: 2013 October 4 */ { double utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, eo; iauASTROM astrom; int j; utc1 = 2456384.5; utc2 = 0.969254051; dut1 = 0.1550675; elong = -0.527800806; phi = -1.2345856; hm = 2738.0; xp = 2.47230737e-7; yp = 1.82640464e-6; phpa = 731.0; tc = 12.8; rh = 0.59; wl = 0.55; j = iauApco13(utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &astrom, &eo); vvd(astrom.pmt, 13.25248468622475727, 1e-11, "iauApco13", "pmt", status); vvd(astrom.eb[0], -0.9741827107321449445, 1e-12, "iauApco13", "eb(1)", status); vvd(astrom.eb[1], -0.2115130190489386190, 1e-12, "iauApco13", "eb(2)", status); vvd(astrom.eb[2], -0.09179840189515518726, 1e-12, "iauApco13", "eb(3)", status); vvd(astrom.eh[0], -0.9736425572586866640, 1e-12, "iauApco13", "eh(1)", status); vvd(astrom.eh[1], -0.2092452121602867431, 1e-12, "iauApco13", "eh(2)", status); vvd(astrom.eh[2], -0.09075578153903832650, 1e-12, "iauApco13", "eh(3)", status); vvd(astrom.em, 0.9998233240914558422, 1e-12, "iauApco13", "em", status); vvd(astrom.v[0], 0.2078704986751370303e-4, 1e-16, "iauApco13", "v(1)", status); vvd(astrom.v[1], -0.8955360100494469232e-4, 1e-16, "iauApco13", "v(2)", status); vvd(astrom.v[2], -0.3863338978840051024e-4, 1e-16, "iauApco13", "v(3)", status); vvd(astrom.bm1, 0.9999999950277561368, 1e-12, "iauApco13", "bm1", status); vvd(astrom.bpn[0][0], 0.9999991390295147999, 1e-12, "iauApco13", "bpn(1,1)", status); vvd(astrom.bpn[1][0], 0.4978650075315529277e-7, 1e-12, "iauApco13", "bpn(2,1)", status); vvd(astrom.bpn[2][0], 0.001312227200850293372, 1e-12, "iauApco13", "bpn(3,1)", status); vvd(astrom.bpn[0][1], -0.1136336652812486604e-7, 1e-12, "iauApco13", "bpn(1,2)", status); vvd(astrom.bpn[1][1], 0.9999999995713154865, 1e-12, "iauApco13", "bpn(2,2)", status); vvd(astrom.bpn[2][1], -0.2928086230975367296e-4, 1e-12, "iauApco13", "bpn(3,2)", status); vvd(astrom.bpn[0][2], -0.001312227201745553566, 1e-12, "iauApco13", "bpn(1,3)", status); vvd(astrom.bpn[1][2], 0.2928082218847679162e-4, 1e-12, "iauApco13", "bpn(2,3)", status); vvd(astrom.bpn[2][2], 0.9999991386008312212, 1e-12, "iauApco13", "bpn(3,3)", status); vvd(astrom.along, -0.5278008060301974337, 1e-12, "iauApco13", "along", status); vvd(astrom.xpl, 0.1133427418174939329e-5, 1e-17, "iauApco13", "xpl", status); vvd(astrom.ypl, 0.1453347595745898629e-5, 1e-17, "iauApco13", "ypl", status); vvd(astrom.sphi, -0.9440115679003211329, 1e-12, "iauApco13", "sphi", status); vvd(astrom.cphi, 0.3299123514971474711, 1e-12, "iauApco13", "cphi", status); vvd(astrom.diurab, 0, 0, "iauApco13", "diurab", status); vvd(astrom.eral, 2.617608909189066140, 1e-12, "iauApco13", "eral", status); vvd(astrom.refa, 0.2014187785940396921e-3, 1e-15, "iauApco13", "refa", status); vvd(astrom.refb, -0.2361408314943696227e-6, 1e-18, "iauApco13", "refb", status); vvd(eo, -0.003020548354802412839, 1e-14, "iauApco13", "eo", status); viv(j, 0, "iauApco13", "j", status); } static void t_apcs(int *status) /* ** - - - - - - - ** t _ a p c s ** - - - - - - - ** ** Test iauApcs function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauApcs, vvd ** ** This revision: 2013 October 3 */ { double date1, date2, pv[2][3], ebpv[2][3], ehp[3]; iauASTROM astrom; date1 = 2456384.5; date2 = 0.970031644; pv[0][0] = -1836024.09; pv[0][1] = 1056607.72; pv[0][2] = -5998795.26; pv[1][0] = -77.0361767; pv[1][1] = -133.310856; pv[1][2] = 0.0971855934; ebpv[0][0] = -0.974170438; ebpv[0][1] = -0.211520082; ebpv[0][2] = -0.0917583024; ebpv[1][0] = 0.00364365824; ebpv[1][1] = -0.0154287319; ebpv[1][2] = -0.00668922024; ehp[0] = -0.973458265; ehp[1] = -0.209215307; ehp[2] = -0.0906996477; iauApcs(date1, date2, pv, ebpv, ehp, &astrom); vvd(astrom.pmt, 13.25248468622587269, 1e-11, "iauApcs", "pmt", status); vvd(astrom.eb[0], -0.9741827110630456169, 1e-12, "iauApcs", "eb(1)", status); vvd(astrom.eb[1], -0.2115130190136085494, 1e-12, "iauApcs", "eb(2)", status); vvd(astrom.eb[2], -0.09179840186973175487, 1e-12, "iauApcs", "eb(3)", status); vvd(astrom.eh[0], -0.9736425571689386099, 1e-12, "iauApcs", "eh(1)", status); vvd(astrom.eh[1], -0.2092452125849967195, 1e-12, "iauApcs", "eh(2)", status); vvd(astrom.eh[2], -0.09075578152266466572, 1e-12, "iauApcs", "eh(3)", status); vvd(astrom.em, 0.9998233241710457140, 1e-12, "iauApcs", "em", status); vvd(astrom.v[0], 0.2078704985513566571e-4, 1e-16, "iauApcs", "v(1)", status); vvd(astrom.v[1], -0.8955360074245006073e-4, 1e-16, "iauApcs", "v(2)", status); vvd(astrom.v[2], -0.3863338980073572719e-4, 1e-16, "iauApcs", "v(3)", status); vvd(astrom.bm1, 0.9999999950277561601, 1e-12, "iauApcs", "bm1", status); vvd(astrom.bpn[0][0], 1, 0, "iauApcs", "bpn(1,1)", status); vvd(astrom.bpn[1][0], 0, 0, "iauApcs", "bpn(2,1)", status); vvd(astrom.bpn[2][0], 0, 0, "iauApcs", "bpn(3,1)", status); vvd(astrom.bpn[0][1], 0, 0, "iauApcs", "bpn(1,2)", status); vvd(astrom.bpn[1][1], 1, 0, "iauApcs", "bpn(2,2)", status); vvd(astrom.bpn[2][1], 0, 0, "iauApcs", "bpn(3,2)", status); vvd(astrom.bpn[0][2], 0, 0, "iauApcs", "bpn(1,3)", status); vvd(astrom.bpn[1][2], 0, 0, "iauApcs", "bpn(2,3)", status); vvd(astrom.bpn[2][2], 1, 0, "iauApcs", "bpn(3,3)", status); } static void t_apcs13(int *status) /* ** - - - - - - - - - ** t _ a p c s 1 3 ** - - - - - - - - - ** ** Test iauApcs13 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauApcs13, vvd ** ** This revision: 2013 October 3 */ { double date1, date2, pv[2][3]; iauASTROM astrom; date1 = 2456165.5; date2 = 0.401182685; pv[0][0] = -6241497.16; pv[0][1] = 401346.896; pv[0][2] = -1251136.04; pv[1][0] = -29.264597; pv[1][1] = -455.021831; pv[1][2] = 0.0266151194; iauApcs13(date1, date2, pv, &astrom); vvd(astrom.pmt, 12.65133794027378508, 1e-11, "iauApcs13", "pmt", status); vvd(astrom.eb[0], 0.9012691529023298391, 1e-12, "iauApcs13", "eb(1)", status); vvd(astrom.eb[1], -0.4173999812023068781, 1e-12, "iauApcs13", "eb(2)", status); vvd(astrom.eb[2], -0.1809906511146821008, 1e-12, "iauApcs13", "eb(3)", status); vvd(astrom.eh[0], 0.8939939101759726824, 1e-12, "iauApcs13", "eh(1)", status); vvd(astrom.eh[1], -0.4111053891734599955, 1e-12, "iauApcs13", "eh(2)", status); vvd(astrom.eh[2], -0.1782336880637689334, 1e-12, "iauApcs13", "eh(3)", status); vvd(astrom.em, 1.010428384373318379, 1e-12, "iauApcs13", "em", status); vvd(astrom.v[0], 0.4279877278327626511e-4, 1e-16, "iauApcs13", "v(1)", status); vvd(astrom.v[1], 0.7963255057040027770e-4, 1e-16, "iauApcs13", "v(2)", status); vvd(astrom.v[2], 0.3517564000441374759e-4, 1e-16, "iauApcs13", "v(3)", status); vvd(astrom.bm1, 0.9999999952947981330, 1e-12, "iauApcs13", "bm1", status); vvd(astrom.bpn[0][0], 1, 0, "iauApcs13", "bpn(1,1)", status); vvd(astrom.bpn[1][0], 0, 0, "iauApcs13", "bpn(2,1)", status); vvd(astrom.bpn[2][0], 0, 0, "iauApcs13", "bpn(3,1)", status); vvd(astrom.bpn[0][1], 0, 0, "iauApcs13", "bpn(1,2)", status); vvd(astrom.bpn[1][1], 1, 0, "iauApcs13", "bpn(2,2)", status); vvd(astrom.bpn[2][1], 0, 0, "iauApcs13", "bpn(3,2)", status); vvd(astrom.bpn[0][2], 0, 0, "iauApcs13", "bpn(1,3)", status); vvd(astrom.bpn[1][2], 0, 0, "iauApcs13", "bpn(2,3)", status); vvd(astrom.bpn[2][2], 1, 0, "iauApcs13", "bpn(3,3)", status); } static void t_aper(int *status) /* ** - - - - - - - ** t _ a p e r ** - - - - - - - * ** Test iauAper function. * ** Returned: ** status int FALSE = success, TRUE = fail * ** Called: iauAper, vvd * ** This revision: 2013 October 3 */ { double theta; iauASTROM astrom; astrom.along = 1.234; theta = 5.678; iauAper(theta, &astrom); vvd(astrom.eral, 6.912000000000000000, 1e-12, "iauAper", "pmt", status); } static void t_aper13(int *status) /* ** - - - - - - - - - ** t _ a p e r 1 3 ** - - - - - - - - - ** ** Test iauAper13 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauAper13, vvd ** ** This revision: 2013 October 3 */ { double ut11, ut12; iauASTROM astrom; astrom.along = 1.234; ut11 = 2456165.5; ut12 = 0.401182685; iauAper13(ut11, ut12, &astrom); vvd(astrom.eral, 3.316236661789694933, 1e-12, "iauAper13", "pmt", status); } static void t_apio(int *status) /* ** - - - - - - - ** t _ a p i o ** - - - - - - - ** ** Test iauApio function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauApio, vvd ** ** This revision: 2013 October 3 */ { double sp, theta, elong, phi, hm, xp, yp, refa, refb; iauASTROM astrom; sp = -3.01974337e-11; theta = 3.14540971; elong = -0.527800806; phi = -1.2345856; hm = 2738.0; xp = 2.47230737e-7; yp = 1.82640464e-6; refa = 0.000201418779; refb = -2.36140831e-7; iauApio(sp, theta, elong, phi, hm, xp, yp, refa, refb, &astrom); vvd(astrom.along, -0.5278008060301974337, 1e-12, "iauApio", "along", status); vvd(astrom.xpl, 0.1133427418174939329e-5, 1e-17, "iauApio", "xpl", status); vvd(astrom.ypl, 0.1453347595745898629e-5, 1e-17, "iauApio", "ypl", status); vvd(astrom.sphi, -0.9440115679003211329, 1e-12, "iauApio", "sphi", status); vvd(astrom.cphi, 0.3299123514971474711, 1e-12, "iauApio", "cphi", status); vvd(astrom.diurab, 0.5135843661699913529e-6, 1e-12, "iauApio", "diurab", status); vvd(astrom.eral, 2.617608903969802566, 1e-12, "iauApio", "eral", status); vvd(astrom.refa, 0.2014187790000000000e-3, 1e-15, "iauApio", "refa", status); vvd(astrom.refb, -0.2361408310000000000e-6, 1e-18, "iauApio", "refb", status); } static void t_apio13(int *status) /* ** - - - - - - - - - ** t _ a p i o 1 3 ** - - - - - - - - - ** ** Test iauApio13 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauApio13, vvd, viv ** ** This revision: 2013 October 4 */ { double utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl; int j; iauASTROM astrom; utc1 = 2456384.5; utc2 = 0.969254051; dut1 = 0.1550675; elong = -0.527800806; phi = -1.2345856; hm = 2738.0; xp = 2.47230737e-7; yp = 1.82640464e-6; phpa = 731.0; tc = 12.8; rh = 0.59; wl = 0.55; j = iauApio13(utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &astrom); vvd(astrom.along, -0.5278008060301974337, 1e-12, "iauApio13", "along", status); vvd(astrom.xpl, 0.1133427418174939329e-5, 1e-17, "iauApio13", "xpl", status); vvd(astrom.ypl, 0.1453347595745898629e-5, 1e-17, "iauApio13", "ypl", status); vvd(astrom.sphi, -0.9440115679003211329, 1e-12, "iauApio13", "sphi", status); vvd(astrom.cphi, 0.3299123514971474711, 1e-12, "iauApio13", "cphi", status); vvd(astrom.diurab, 0.5135843661699913529e-6, 1e-12, "iauApio13", "diurab", status); vvd(astrom.eral, 2.617608909189066140, 1e-12, "iauApio13", "eral", status); vvd(astrom.refa, 0.2014187785940396921e-3, 1e-15, "iauApio13", "refa", status); vvd(astrom.refb, -0.2361408314943696227e-6, 1e-18, "iauApio13", "refb", status); viv(j, 0, "iauApio13", "j", status); } static void t_atci13(int *status) /* ** - - - - - - - - - ** t _ a t c i 1 3 ** - - - - - - - - - ** ** Test iauAtci13 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauAtci13, vvd ** ** This revision: 2013 October 3 */ { double rc, dc, pr, pd, px, rv, date1, date2, ri, di, eo; rc = 2.71; dc = 0.174; pr = 1e-5; pd = 5e-6; px = 0.1; rv = 55.0; date1 = 2456165.5; date2 = 0.401182685; iauAtci13(rc, dc, pr, pd, px, rv, date1, date2, &ri, &di, &eo); vvd(ri, 2.710121572969038991, 1e-12, "iauAtci13", "ri", status); vvd(di, 0.1729371367218230438, 1e-12, "iauAtci13", "di", status); vvd(eo, -0.002900618712657375647, 1e-14, "iauAtci13", "eo", status); } static void t_atciq(int *status) /* ** - - - - - - - - ** t _ a t c i q ** - - - - - - - - ** ** Test iauAtciq function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauApci13, iauAtciq, vvd ** ** This revision: 2013 October 3 */ { double date1, date2, eo, rc, dc, pr, pd, px, rv, ri, di; iauASTROM astrom; date1 = 2456165.5; date2 = 0.401182685; iauApci13(date1, date2, &astrom, &eo); rc = 2.71; dc = 0.174; pr = 1e-5; pd = 5e-6; px = 0.1; rv = 55.0; iauAtciq(rc, dc, pr, pd, px, rv, &astrom, &ri, &di); vvd(ri, 2.710121572969038991, 1e-12, "iauAtciq", "ri", status); vvd(di, 0.1729371367218230438, 1e-12, "iauAtciq", "di", status); } static void t_atciqn(int *status) /* ** - - - - - - - - - ** t _ a t c i q n ** - - - - - - - - - ** ** Test iauAtciqn function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauApci13, iauAtciqn, vvd ** ** This revision: 2013 October 3 */ { iauLDBODY b[3]; double date1, date2, eo, rc, dc, pr, pd, px, rv, ri, di; iauASTROM astrom; date1 = 2456165.5; date2 = 0.401182685; iauApci13(date1, date2, &astrom, &eo); rc = 2.71; dc = 0.174; pr = 1e-5; pd = 5e-6; px = 0.1; rv = 55.0; b[0].bm = 0.00028574; b[0].dl = 3e-10; b[0].pv[0][0] = -7.81014427; b[0].pv[0][1] = -5.60956681; b[0].pv[0][2] = -1.98079819; b[0].pv[1][0] = 0.0030723249; b[0].pv[1][1] = -0.00406995477; b[0].pv[1][2] = -0.00181335842; b[1].bm = 0.00095435; b[1].dl = 3e-9; b[1].pv[0][0] = 0.738098796; b[1].pv[0][1] = 4.63658692; b[1].pv[0][2] = 1.9693136; b[1].pv[1][0] = -0.00755816922; b[1].pv[1][1] = 0.00126913722; b[1].pv[1][2] = 0.000727999001; b[2].bm = 1.0; b[2].dl = 6e-6; b[2].pv[0][0] = -0.000712174377; b[2].pv[0][1] = -0.00230478303; b[2].pv[0][2] = -0.00105865966; b[2].pv[1][0] = 6.29235213e-6; b[2].pv[1][1] = -3.30888387e-7; b[2].pv[1][2] = -2.96486623e-7; iauAtciqn ( rc, dc, pr, pd, px, rv, &astrom, 3, b, &ri, &di); vvd(ri, 2.710122008105325582, 1e-12, "iauAtciqn", "ri", status); vvd(di, 0.1729371916491459122, 1e-12, "iauAtciqn", "di", status); } static void t_atciqz(int *status) /* ** - - - - - - - - - ** t _ a t c i q z ** - - - - - - - - - ** ** Test iauAtciqz function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauApci13, iauAtciqz, vvd ** ** This revision: 2013 October 3 */ { double date1, date2, eo, rc, dc, ri, di; iauASTROM astrom; date1 = 2456165.5; date2 = 0.401182685; iauApci13(date1, date2, &astrom, &eo); rc = 2.71; dc = 0.174; iauAtciqz(rc, dc, &astrom, &ri, &di); vvd(ri, 2.709994899247599271, 1e-12, "iauAtciqz", "ri", status); vvd(di, 0.1728740720983623469, 1e-12, "iauAtciqz", "di", status); } static void t_atco13(int *status) /* ** - - - - - - - - - ** t _ a t c o 1 3 ** - - - - - - - - - ** ** Test iauAtco13 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauAtco13, vvd, viv ** ** This revision: 2013 October 4 */ { double rc, dc, pr, pd, px, rv, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, aob, zob, hob, dob, rob, eo; int j; rc = 2.71; dc = 0.174; pr = 1e-5; pd = 5e-6; px = 0.1; rv = 55.0; utc1 = 2456384.5; utc2 = 0.969254051; dut1 = 0.1550675; elong = -0.527800806; phi = -1.2345856; hm = 2738.0; xp = 2.47230737e-7; yp = 1.82640464e-6; phpa = 731.0; tc = 12.8; rh = 0.59; wl = 0.55; j = iauAtco13(rc, dc, pr, pd, px, rv, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &aob, &zob, &hob, &dob, &rob, &eo); vvd(aob, 0.09251774485358230653, 1e-12, "iauAtco13", "aob", status); vvd(zob, 1.407661405256767021, 1e-12, "iauAtco13", "zob", status); vvd(hob, -0.09265154431403157925, 1e-12, "iauAtco13", "hob", status); vvd(dob, 0.1716626560075591655, 1e-12, "iauAtco13", "dob", status); vvd(rob, 2.710260453503097719, 1e-12, "iauAtco13", "rob", status); vvd(eo, -0.003020548354802412839, 1e-14, "iauAtco13", "eo", status); viv(j, 0, "iauAtco13", "j", status); } static void t_atic13(int *status) /* ** - - - - - - - - - ** t _ a t i c 1 3 ** - - - - - - - - - ** ** Test iauAtic13 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauAtic13, vvd ** ** This revision: 2013 October 3 */ { double ri, di, date1, date2, rc, dc, eo; ri = 2.710121572969038991; di = 0.1729371367218230438; date1 = 2456165.5; date2 = 0.401182685; iauAtic13(ri, di, date1, date2, &rc, &dc, &eo); vvd(rc, 2.710126504531374930, 1e-12, "iauAtic13", "rc", status); vvd(dc, 0.1740632537628342320, 1e-12, "iauAtic13", "dc", status); vvd(eo, -0.002900618712657375647, 1e-14, "iauAtic13", "eo", status); } static void t_aticq(int *status) /* ** - - - - - - - - ** t _ a t i c q ** - - - - - - - - ** ** Test iauAticq function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauApci13, iauAticq, vvd ** ** This revision: 2013 October 3 */ { double date1, date2, eo, ri, di, rc, dc; iauASTROM astrom; date1 = 2456165.5; date2 = 0.401182685; iauApci13(date1, date2, &astrom, &eo); ri = 2.710121572969038991; di = 0.1729371367218230438; iauAticq(ri, di, &astrom, &rc, &dc); vvd(rc, 2.710126504531374930, 1e-12, "iauAticq", "rc", status); vvd(dc, 0.1740632537628342320, 1e-12, "iauAticq", "dc", status); } static void t_aticqn(int *status) /* ** - - - - - - - - - ** t _ a t i c q n ** - - - - - - - - - ** ** Test iauAticqn function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauApci13, iauAticqn, vvd ** ** This revision: 2013 October 3 */ { double date1, date2, eo, ri, di, rc, dc; iauLDBODY b[3]; iauASTROM astrom; date1 = 2456165.5; date2 = 0.401182685; iauApci13(date1, date2, &astrom, &eo); ri = 2.709994899247599271; di = 0.1728740720983623469; b[0].bm = 0.00028574; b[0].dl = 3e-10; b[0].pv[0][0] = -7.81014427; b[0].pv[0][1] = -5.60956681; b[0].pv[0][2] = -1.98079819; b[0].pv[1][0] = 0.0030723249; b[0].pv[1][1] = -0.00406995477; b[0].pv[1][2] = -0.00181335842; b[1].bm = 0.00095435; b[1].dl = 3e-9; b[1].pv[0][0] = 0.738098796; b[1].pv[0][1] = 4.63658692; b[1].pv[0][2] = 1.9693136; b[1].pv[1][0] = -0.00755816922; b[1].pv[1][1] = 0.00126913722; b[1].pv[1][2] = 0.000727999001; b[2].bm = 1.0; b[2].dl = 6e-6; b[2].pv[0][0] = -0.000712174377; b[2].pv[0][1] = -0.00230478303; b[2].pv[0][2] = -0.00105865966; b[2].pv[1][0] = 6.29235213e-6; b[2].pv[1][1] = -3.30888387e-7; b[2].pv[1][2] = -2.96486623e-7; iauAticqn(ri, di, &astrom, 3, b, &rc, &dc); vvd(rc, 2.709999575032685412, 1e-12, "iauAtciqn", "rc", status); vvd(dc, 0.1739999656317778034, 1e-12, "iauAtciqn", "dc", status); } static void t_atio13(int *status) /* ** - - - - - - - - - ** t _ a t i o 1 3 ** - - - - - - - - - ** ** Test iauAtio13 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauAtio13, vvd, viv ** ** This revision: 2013 October 3 */ { double ri, di, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, aob, zob, hob, dob, rob; int j; ri = 2.710121572969038991; di = 0.1729371367218230438; utc1 = 2456384.5; utc2 = 0.969254051; dut1 = 0.1550675; elong = -0.527800806; phi = -1.2345856; hm = 2738.0; xp = 2.47230737e-7; yp = 1.82640464e-6; phpa = 731.0; tc = 12.8; rh = 0.59; wl = 0.55; j = iauAtio13(ri, di, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &aob, &zob, &hob, &dob, &rob); vvd(aob, 0.09233952224794989993, 1e-12, "iauAtio13", "aob", status); vvd(zob, 1.407758704513722461, 1e-12, "iauAtio13", "zob", status); vvd(hob, -0.09247619879782006106, 1e-12, "iauAtio13", "hob", status); vvd(dob, 0.1717653435758265198, 1e-12, "iauAtio13", "dob", status); vvd(rob, 2.710085107986886201, 1e-12, "iauAtio13", "rob", status); viv(j, 0, "iauAtio13", "j", status); } static void t_atioq(int *status) /* ** - - - - - - - - ** t _ a t i o q ** - - - - - - - - ** ** Test iauAtioq function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauApio13, iauAtioq, vvd, viv ** ** This revision: 2013 October 4 */ { double utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, ri, di, aob, zob, hob, dob, rob; iauASTROM astrom; utc1 = 2456384.5; utc2 = 0.969254051; dut1 = 0.1550675; elong = -0.527800806; phi = -1.2345856; hm = 2738.0; xp = 2.47230737e-7; yp = 1.82640464e-6; phpa = 731.0; tc = 12.8; rh = 0.59; wl = 0.55; (void) iauApio13(utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &astrom); ri = 2.710121572969038991; di = 0.1729371367218230438; iauAtioq(ri, di, &astrom, &aob, &zob, &hob, &dob, &rob); vvd(aob, 0.09233952224794989993, 1e-12, "iauAtioq", "aob", status); vvd(zob, 1.407758704513722461, 1e-12, "iauAtioq", "zob", status); vvd(hob, -0.09247619879782006106, 1e-12, "iauAtioq", "hob", status); vvd(dob, 0.1717653435758265198, 1e-12, "iauAtioq", "dob", status); vvd(rob, 2.710085107986886201, 1e-12, "iauAtioq", "rob", status); } static void t_atoc13(int *status) /* ** - - - - - - - - - ** t _ a t o c 1 3 ** - - - - - - - - - ** ** Test iauAtoc13 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauAtoc13, vvd, viv ** ** This revision: 2013 October 3 */ { double utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, ob1, ob2, rc, dc; int j; utc1 = 2456384.5; utc2 = 0.969254051; dut1 = 0.1550675; elong = -0.527800806; phi = -1.2345856; hm = 2738.0; xp = 2.47230737e-7; yp = 1.82640464e-6; phpa = 731.0; tc = 12.8; rh = 0.59; wl = 0.55; ob1 = 2.710085107986886201; ob2 = 0.1717653435758265198; j = iauAtoc13 ( "R", ob1, ob2, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &rc, &dc); vvd(rc, 2.709956744661000609, 1e-12, "iauAtoc13", "R/rc", status); vvd(dc, 0.1741696500895398562, 1e-12, "iauAtoc13", "R/dc", status); viv(j, 0, "iauAtoc13", "R/j", status); ob1 = -0.09247619879782006106; ob2 = 0.1717653435758265198; j = iauAtoc13 ( "H", ob1, ob2, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &rc, &dc); vvd(rc, 2.709956744661000609, 1e-12, "iauAtoc13", "H/rc", status); vvd(dc, 0.1741696500895398562, 1e-12, "iauAtoc13", "H/dc", status); viv(j, 0, "iauAtoc13", "H/j", status); ob1 = 0.09233952224794989993; ob2 = 1.407758704513722461; j = iauAtoc13 ( "A", ob1, ob2, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &rc, &dc); vvd(rc, 2.709956744661000609, 1e-12, "iauAtoc13", "A/rc", status); vvd(dc, 0.1741696500895398565, 1e-12, "iauAtoc13", "A/dc", status); viv(j, 0, "iauAtoc13", "A/j", status); } static void t_atoi13(int *status) /* ** - - - - - - - - - ** t _ a t o i 1 3 ** - - - - - - - - - ** ** Test iauAtoi13 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauAtoi13, vvd, viv ** ** This revision: 2013 October 3 */ { double utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, ob1, ob2, ri, di; int j; utc1 = 2456384.5; utc2 = 0.969254051; dut1 = 0.1550675; elong = -0.527800806; phi = -1.2345856; hm = 2738.0; xp = 2.47230737e-7; yp = 1.82640464e-6; phpa = 731.0; tc = 12.8; rh = 0.59; wl = 0.55; ob1 = 2.710085107986886201; ob2 = 0.1717653435758265198; j = iauAtoi13 ( "R", ob1, ob2, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &ri, &di); vvd(ri, 2.710121574449135955, 1e-12, "iauAtoi13", "R/ri", status); vvd(di, 0.1729371839114567725, 1e-12, "iauAtoi13", "R/di", status); viv(j, 0, "iauAtoi13", "R/J", status); ob1 = -0.09247619879782006106; ob2 = 0.1717653435758265198; j = iauAtoi13 ( "H", ob1, ob2, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &ri, &di); vvd(ri, 2.710121574449135955, 1e-12, "iauAtoi13", "H/ri", status); vvd(di, 0.1729371839114567725, 1e-12, "iauAtoi13", "H/di", status); viv(j, 0, "iauAtoi13", "H/J", status); ob1 = 0.09233952224794989993; ob2 = 1.407758704513722461; j = iauAtoi13 ( "A", ob1, ob2, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &ri, &di); vvd(ri, 2.710121574449135955, 1e-12, "iauAtoi13", "A/ri", status); vvd(di, 0.1729371839114567728, 1e-12, "iauAtoi13", "A/di", status); viv(j, 0, "iauAtoi13", "A/J", status); } static void t_atoiq(int *status) /* ** - - - - - - - - ** t _ a t o i q ** - - - - - - - - * ** Test iauAtoiq function. * ** Returned: ** status int FALSE = success, TRUE = fail * ** Called: iauApio13, iauAtoiq, vvd * ** This revision: 2013 October 4 */ { double utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, ob1, ob2, ri, di; iauASTROM astrom; utc1 = 2456384.5; utc2 = 0.969254051; dut1 = 0.1550675; elong = -0.527800806; phi = -1.2345856; hm = 2738.0; xp = 2.47230737e-7; yp = 1.82640464e-6; phpa = 731.0; tc = 12.8; rh = 0.59; wl = 0.55; (void) iauApio13(utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &astrom); ob1 = 2.710085107986886201; ob2 = 0.1717653435758265198; iauAtoiq("R", ob1, ob2, &astrom, &ri, &di); vvd(ri, 2.710121574449135955, 1e-12, "iauAtoiq", "R/ri", status); vvd(di, 0.1729371839114567725, 1e-12, "iauAtoiq", "R/di", status); ob1 = -0.09247619879782006106; ob2 = 0.1717653435758265198; iauAtoiq("H", ob1, ob2, &astrom, &ri, &di); vvd(ri, 2.710121574449135955, 1e-12, "iauAtoiq", "H/ri", status); vvd(di, 0.1729371839114567725, 1e-12, "iauAtoiq", "H/di", status); ob1 = 0.09233952224794989993; ob2 = 1.407758704513722461; iauAtoiq("A", ob1, ob2, &astrom, &ri, &di); vvd(ri, 2.710121574449135955, 1e-12, "iauAtoiq", "A/ri", status); vvd(di, 0.1729371839114567728, 1e-12, "iauAtoiq", "A/di", status); } static void t_bi00(int *status) /* ** - - - - - - - ** t _ b i 0 0 ** - - - - - - - ** ** Test iauBi00 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauBi00, vvd ** ** This revision: 2013 August 7 */ { double dpsibi, depsbi, dra; iauBi00(&dpsibi, &depsbi, &dra); vvd(dpsibi, -0.2025309152835086613e-6, 1e-12, "iauBi00", "dpsibi", status); vvd(depsbi, -0.3306041454222147847e-7, 1e-12, "iauBi00", "depsbi", status); vvd(dra, -0.7078279744199225506e-7, 1e-12, "iauBi00", "dra", status); } static void t_bp00(int *status) /* ** - - - - - - - ** t _ b p 0 0 ** - - - - - - - ** ** Test iauBp00 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauBp00, vvd ** ** This revision: 2013 August 7 */ { double rb[3][3], rp[3][3], rbp[3][3]; iauBp00(2400000.5, 50123.9999, rb, rp, rbp); vvd(rb[0][0], 0.9999999999999942498, 1e-12, "iauBp00", "rb11", status); vvd(rb[0][1], -0.7078279744199196626e-7, 1e-16, "iauBp00", "rb12", status); vvd(rb[0][2], 0.8056217146976134152e-7, 1e-16, "iauBp00", "rb13", status); vvd(rb[1][0], 0.7078279477857337206e-7, 1e-16, "iauBp00", "rb21", status); vvd(rb[1][1], 0.9999999999999969484, 1e-12, "iauBp00", "rb22", status); vvd(rb[1][2], 0.3306041454222136517e-7, 1e-16, "iauBp00", "rb23", status); vvd(rb[2][0], -0.8056217380986972157e-7, 1e-16, "iauBp00", "rb31", status); vvd(rb[2][1], -0.3306040883980552500e-7, 1e-16, "iauBp00", "rb32", status); vvd(rb[2][2], 0.9999999999999962084, 1e-12, "iauBp00", "rb33", status); vvd(rp[0][0], 0.9999995504864048241, 1e-12, "iauBp00", "rp11", status); vvd(rp[0][1], 0.8696113836207084411e-3, 1e-14, "iauBp00", "rp12", status); vvd(rp[0][2], 0.3778928813389333402e-3, 1e-14, "iauBp00", "rp13", status); vvd(rp[1][0], -0.8696113818227265968e-3, 1e-14, "iauBp00", "rp21", status); vvd(rp[1][1], 0.9999996218879365258, 1e-12, "iauBp00", "rp22", status); vvd(rp[1][2], -0.1690679263009242066e-6, 1e-14, "iauBp00", "rp23", status); vvd(rp[2][0], -0.3778928854764695214e-3, 1e-14, "iauBp00", "rp31", status); vvd(rp[2][1], -0.1595521004195286491e-6, 1e-14, "iauBp00", "rp32", status); vvd(rp[2][2], 0.9999999285984682756, 1e-12, "iauBp00", "rp33", status); vvd(rbp[0][0], 0.9999995505175087260, 1e-12, "iauBp00", "rbp11", status); vvd(rbp[0][1], 0.8695405883617884705e-3, 1e-14, "iauBp00", "rbp12", status); vvd(rbp[0][2], 0.3779734722239007105e-3, 1e-14, "iauBp00", "rbp13", status); vvd(rbp[1][0], -0.8695405990410863719e-3, 1e-14, "iauBp00", "rbp21", status); vvd(rbp[1][1], 0.9999996219494925900, 1e-12, "iauBp00", "rbp22", status); vvd(rbp[1][2], -0.1360775820404982209e-6, 1e-14, "iauBp00", "rbp23", status); vvd(rbp[2][0], -0.3779734476558184991e-3, 1e-14, "iauBp00", "rbp31", status); vvd(rbp[2][1], -0.1925857585832024058e-6, 1e-14, "iauBp00", "rbp32", status); vvd(rbp[2][2], 0.9999999285680153377, 1e-12, "iauBp00", "rbp33", status); } static void t_bp06(int *status) /* ** - - - - - - - ** t _ b p 0 6 ** - - - - - - - ** ** Test iauBp06 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauBp06, vvd ** ** This revision: 2013 August 7 */ { double rb[3][3], rp[3][3], rbp[3][3]; iauBp06(2400000.5, 50123.9999, rb, rp, rbp); vvd(rb[0][0], 0.9999999999999942497, 1e-12, "iauBp06", "rb11", status); vvd(rb[0][1], -0.7078368960971557145e-7, 1e-14, "iauBp06", "rb12", status); vvd(rb[0][2], 0.8056213977613185606e-7, 1e-14, "iauBp06", "rb13", status); vvd(rb[1][0], 0.7078368694637674333e-7, 1e-14, "iauBp06", "rb21", status); vvd(rb[1][1], 0.9999999999999969484, 1e-12, "iauBp06", "rb22", status); vvd(rb[1][2], 0.3305943742989134124e-7, 1e-14, "iauBp06", "rb23", status); vvd(rb[2][0], -0.8056214211620056792e-7, 1e-14, "iauBp06", "rb31", status); vvd(rb[2][1], -0.3305943172740586950e-7, 1e-14, "iauBp06", "rb32", status); vvd(rb[2][2], 0.9999999999999962084, 1e-12, "iauBp06", "rb33", status); vvd(rp[0][0], 0.9999995504864960278, 1e-12, "iauBp06", "rp11", status); vvd(rp[0][1], 0.8696112578855404832e-3, 1e-14, "iauBp06", "rp12", status); vvd(rp[0][2], 0.3778929293341390127e-3, 1e-14, "iauBp06", "rp13", status); vvd(rp[1][0], -0.8696112560510186244e-3, 1e-14, "iauBp06", "rp21", status); vvd(rp[1][1], 0.9999996218880458820, 1e-12, "iauBp06", "rp22", status); vvd(rp[1][2], -0.1691646168941896285e-6, 1e-14, "iauBp06", "rp23", status); vvd(rp[2][0], -0.3778929335557603418e-3, 1e-14, "iauBp06", "rp31", status); vvd(rp[2][1], -0.1594554040786495076e-6, 1e-14, "iauBp06", "rp32", status); vvd(rp[2][2], 0.9999999285984501222, 1e-12, "iauBp06", "rp33", status); vvd(rbp[0][0], 0.9999995505176007047, 1e-12, "iauBp06", "rbp11", status); vvd(rbp[0][1], 0.8695404617348208406e-3, 1e-14, "iauBp06", "rbp12", status); vvd(rbp[0][2], 0.3779735201865589104e-3, 1e-14, "iauBp06", "rbp13", status); vvd(rbp[1][0], -0.8695404723772031414e-3, 1e-14, "iauBp06", "rbp21", status); vvd(rbp[1][1], 0.9999996219496027161, 1e-12, "iauBp06", "rbp22", status); vvd(rbp[1][2], -0.1361752497080270143e-6, 1e-14, "iauBp06", "rbp23", status); vvd(rbp[2][0], -0.3779734957034089490e-3, 1e-14, "iauBp06", "rbp31", status); vvd(rbp[2][1], -0.1924880847894457113e-6, 1e-14, "iauBp06", "rbp32", status); vvd(rbp[2][2], 0.9999999285679971958, 1e-12, "iauBp06", "rbp33", status); } static void t_bpn2xy(int *status) /* ** - - - - - - - - - ** t _ b p n 2 x y ** - - - - - - - - - ** ** Test iauBpn2xy function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauBpn2xy, vvd ** ** This revision: 2013 August 7 */ { double rbpn[3][3], x, y; rbpn[0][0] = 9.999962358680738e-1; rbpn[0][1] = -2.516417057665452e-3; rbpn[0][2] = -1.093569785342370e-3; rbpn[1][0] = 2.516462370370876e-3; rbpn[1][1] = 9.999968329010883e-1; rbpn[1][2] = 4.006159587358310e-5; rbpn[2][0] = 1.093465510215479e-3; rbpn[2][1] = -4.281337229063151e-5; rbpn[2][2] = 9.999994012499173e-1; iauBpn2xy(rbpn, &x, &y); vvd(x, 1.093465510215479e-3, 1e-12, "iauBpn2xy", "x", status); vvd(y, -4.281337229063151e-5, 1e-12, "iauBpn2xy", "y", status); } static void t_c2i00a(int *status) /* ** - - - - - - - - - ** t _ c 2 i 0 0 a ** - - - - - - - - - ** ** Test iauC2i00a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauC2i00a, vvd ** ** This revision: 2013 August 7 */ { double rc2i[3][3]; iauC2i00a(2400000.5, 53736.0, rc2i); vvd(rc2i[0][0], 0.9999998323037165557, 1e-12, "iauC2i00a", "11", status); vvd(rc2i[0][1], 0.5581526348992140183e-9, 1e-12, "iauC2i00a", "12", status); vvd(rc2i[0][2], -0.5791308477073443415e-3, 1e-12, "iauC2i00a", "13", status); vvd(rc2i[1][0], -0.2384266227870752452e-7, 1e-12, "iauC2i00a", "21", status); vvd(rc2i[1][1], 0.9999999991917405258, 1e-12, "iauC2i00a", "22", status); vvd(rc2i[1][2], -0.4020594955028209745e-4, 1e-12, "iauC2i00a", "23", status); vvd(rc2i[2][0], 0.5791308472168152904e-3, 1e-12, "iauC2i00a", "31", status); vvd(rc2i[2][1], 0.4020595661591500259e-4, 1e-12, "iauC2i00a", "32", status); vvd(rc2i[2][2], 0.9999998314954572304, 1e-12, "iauC2i00a", "33", status); } static void t_c2i00b(int *status) /* ** - - - - - - - - - ** t _ c 2 i 0 0 b ** - - - - - - - - - ** ** Test iauC2i00b function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauC2i00b, vvd ** ** This revision: 2013 August 7 */ { double rc2i[3][3]; iauC2i00b(2400000.5, 53736.0, rc2i); vvd(rc2i[0][0], 0.9999998323040954356, 1e-12, "iauC2i00b", "11", status); vvd(rc2i[0][1], 0.5581526349131823372e-9, 1e-12, "iauC2i00b", "12", status); vvd(rc2i[0][2], -0.5791301934855394005e-3, 1e-12, "iauC2i00b", "13", status); vvd(rc2i[1][0], -0.2384239285499175543e-7, 1e-12, "iauC2i00b", "21", status); vvd(rc2i[1][1], 0.9999999991917574043, 1e-12, "iauC2i00b", "22", status); vvd(rc2i[1][2], -0.4020552974819030066e-4, 1e-12, "iauC2i00b", "23", status); vvd(rc2i[2][0], 0.5791301929950208873e-3, 1e-12, "iauC2i00b", "31", status); vvd(rc2i[2][1], 0.4020553681373720832e-4, 1e-12, "iauC2i00b", "32", status); vvd(rc2i[2][2], 0.9999998314958529887, 1e-12, "iauC2i00b", "33", status); } static void t_c2i06a(int *status) /* ** - - - - - - - - - ** t _ c 2 i 0 6 a ** - - - - - - - - - ** ** Test iauC2i06a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauC2i06a, vvd ** ** This revision: 2013 August 7 */ { double rc2i[3][3]; iauC2i06a(2400000.5, 53736.0, rc2i); vvd(rc2i[0][0], 0.9999998323037159379, 1e-12, "iauC2i06a", "11", status); vvd(rc2i[0][1], 0.5581121329587613787e-9, 1e-12, "iauC2i06a", "12", status); vvd(rc2i[0][2], -0.5791308487740529749e-3, 1e-12, "iauC2i06a", "13", status); vvd(rc2i[1][0], -0.2384253169452306581e-7, 1e-12, "iauC2i06a", "21", status); vvd(rc2i[1][1], 0.9999999991917467827, 1e-12, "iauC2i06a", "22", status); vvd(rc2i[1][2], -0.4020579392895682558e-4, 1e-12, "iauC2i06a", "23", status); vvd(rc2i[2][0], 0.5791308482835292617e-3, 1e-12, "iauC2i06a", "31", status); vvd(rc2i[2][1], 0.4020580099454020310e-4, 1e-12, "iauC2i06a", "32", status); vvd(rc2i[2][2], 0.9999998314954628695, 1e-12, "iauC2i06a", "33", status); } static void t_c2ibpn(int *status) /* ** - - - - - - - - - ** t _ c 2 i b p n ** - - - - - - - - - ** ** Test iauC2ibpn function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauC2ibpn, vvd ** ** This revision: 2013 August 7 */ { double rbpn[3][3], rc2i[3][3]; rbpn[0][0] = 9.999962358680738e-1; rbpn[0][1] = -2.516417057665452e-3; rbpn[0][2] = -1.093569785342370e-3; rbpn[1][0] = 2.516462370370876e-3; rbpn[1][1] = 9.999968329010883e-1; rbpn[1][2] = 4.006159587358310e-5; rbpn[2][0] = 1.093465510215479e-3; rbpn[2][1] = -4.281337229063151e-5; rbpn[2][2] = 9.999994012499173e-1; iauC2ibpn(2400000.5, 50123.9999, rbpn, rc2i); vvd(rc2i[0][0], 0.9999994021664089977, 1e-12, "iauC2ibpn", "11", status); vvd(rc2i[0][1], -0.3869195948017503664e-8, 1e-12, "iauC2ibpn", "12", status); vvd(rc2i[0][2], -0.1093465511383285076e-2, 1e-12, "iauC2ibpn", "13", status); vvd(rc2i[1][0], 0.5068413965715446111e-7, 1e-12, "iauC2ibpn", "21", status); vvd(rc2i[1][1], 0.9999999990835075686, 1e-12, "iauC2ibpn", "22", status); vvd(rc2i[1][2], 0.4281334246452708915e-4, 1e-12, "iauC2ibpn", "23", status); vvd(rc2i[2][0], 0.1093465510215479000e-2, 1e-12, "iauC2ibpn", "31", status); vvd(rc2i[2][1], -0.4281337229063151000e-4, 1e-12, "iauC2ibpn", "32", status); vvd(rc2i[2][2], 0.9999994012499173103, 1e-12, "iauC2ibpn", "33", status); } static void t_c2ixy(int *status) /* ** - - - - - - - - ** t _ c 2 i x y ** - - - - - - - - ** ** Test iauC2ixy function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauC2ixy, vvd ** ** This revision: 2013 August 7 */ { double x, y, rc2i[3][3]; x = 0.5791308486706011000e-3; y = 0.4020579816732961219e-4; iauC2ixy(2400000.5, 53736, x, y, rc2i); vvd(rc2i[0][0], 0.9999998323037157138, 1e-12, "iauC2ixy", "11", status); vvd(rc2i[0][1], 0.5581526349032241205e-9, 1e-12, "iauC2ixy", "12", status); vvd(rc2i[0][2], -0.5791308491611263745e-3, 1e-12, "iauC2ixy", "13", status); vvd(rc2i[1][0], -0.2384257057469842953e-7, 1e-12, "iauC2ixy", "21", status); vvd(rc2i[1][1], 0.9999999991917468964, 1e-12, "iauC2ixy", "22", status); vvd(rc2i[1][2], -0.4020579110172324363e-4, 1e-12, "iauC2ixy", "23", status); vvd(rc2i[2][0], 0.5791308486706011000e-3, 1e-12, "iauC2ixy", "31", status); vvd(rc2i[2][1], 0.4020579816732961219e-4, 1e-12, "iauC2ixy", "32", status); vvd(rc2i[2][2], 0.9999998314954627590, 1e-12, "iauC2ixy", "33", status); } static void t_c2ixys(int *status) /* ** - - - - - - - - - ** t _ c 2 i x y s ** - - - - - - - - - ** ** Test iauC2ixys function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauC2ixys, vvd ** ** This revision: 2013 August 7 */ { double x, y, s, rc2i[3][3]; x = 0.5791308486706011000e-3; y = 0.4020579816732961219e-4; s = -0.1220040848472271978e-7; iauC2ixys(x, y, s, rc2i); vvd(rc2i[0][0], 0.9999998323037157138, 1e-12, "iauC2ixys", "11", status); vvd(rc2i[0][1], 0.5581984869168499149e-9, 1e-12, "iauC2ixys", "12", status); vvd(rc2i[0][2], -0.5791308491611282180e-3, 1e-12, "iauC2ixys", "13", status); vvd(rc2i[1][0], -0.2384261642670440317e-7, 1e-12, "iauC2ixys", "21", status); vvd(rc2i[1][1], 0.9999999991917468964, 1e-12, "iauC2ixys", "22", status); vvd(rc2i[1][2], -0.4020579110169668931e-4, 1e-12, "iauC2ixys", "23", status); vvd(rc2i[2][0], 0.5791308486706011000e-3, 1e-12, "iauC2ixys", "31", status); vvd(rc2i[2][1], 0.4020579816732961219e-4, 1e-12, "iauC2ixys", "32", status); vvd(rc2i[2][2], 0.9999998314954627590, 1e-12, "iauC2ixys", "33", status); } static void t_c2s(int *status) /* ** - - - - - - ** t _ c 2 s ** - - - - - - ** ** Test iauC2s function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauC2s, vvd ** ** This revision: 2013 August 7 */ { double p[3], theta, phi; p[0] = 100.0; p[1] = -50.0; p[2] = 25.0; iauC2s(p, &theta, &phi); vvd(theta, -0.4636476090008061162, 1e-14, "iauC2s", "theta", status); vvd(phi, 0.2199879773954594463, 1e-14, "iauC2s", "phi", status); } static void t_c2t00a(int *status) /* ** - - - - - - - - - ** t _ c 2 t 0 0 a ** - - - - - - - - - ** ** Test iauC2t00a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauC2t00a, vvd ** ** This revision: 2013 August 7 */ { double tta, ttb, uta, utb, xp, yp, rc2t[3][3]; tta = 2400000.5; uta = 2400000.5; ttb = 53736.0; utb = 53736.0; xp = 2.55060238e-7; yp = 1.860359247e-6; iauC2t00a(tta, ttb, uta, utb, xp, yp, rc2t); vvd(rc2t[0][0], -0.1810332128307182668, 1e-12, "iauC2t00a", "11", status); vvd(rc2t[0][1], 0.9834769806938457836, 1e-12, "iauC2t00a", "12", status); vvd(rc2t[0][2], 0.6555535638688341725e-4, 1e-12, "iauC2t00a", "13", status); vvd(rc2t[1][0], -0.9834768134135984552, 1e-12, "iauC2t00a", "21", status); vvd(rc2t[1][1], -0.1810332203649520727, 1e-12, "iauC2t00a", "22", status); vvd(rc2t[1][2], 0.5749801116141056317e-3, 1e-12, "iauC2t00a", "23", status); vvd(rc2t[2][0], 0.5773474014081406921e-3, 1e-12, "iauC2t00a", "31", status); vvd(rc2t[2][1], 0.3961832391770163647e-4, 1e-12, "iauC2t00a", "32", status); vvd(rc2t[2][2], 0.9999998325501692289, 1e-12, "iauC2t00a", "33", status); } static void t_c2t00b(int *status) /* ** - - - - - - - - - ** t _ c 2 t 0 0 b ** - - - - - - - - - ** ** Test iauC2t00b function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauC2t00b, vvd ** ** This revision: 2013 August 7 */ { double tta, ttb, uta, utb, xp, yp, rc2t[3][3]; tta = 2400000.5; uta = 2400000.5; ttb = 53736.0; utb = 53736.0; xp = 2.55060238e-7; yp = 1.860359247e-6; iauC2t00b(tta, ttb, uta, utb, xp, yp, rc2t); vvd(rc2t[0][0], -0.1810332128439678965, 1e-12, "iauC2t00b", "11", status); vvd(rc2t[0][1], 0.9834769806913872359, 1e-12, "iauC2t00b", "12", status); vvd(rc2t[0][2], 0.6555565082458415611e-4, 1e-12, "iauC2t00b", "13", status); vvd(rc2t[1][0], -0.9834768134115435923, 1e-12, "iauC2t00b", "21", status); vvd(rc2t[1][1], -0.1810332203784001946, 1e-12, "iauC2t00b", "22", status); vvd(rc2t[1][2], 0.5749793922030017230e-3, 1e-12, "iauC2t00b", "23", status); vvd(rc2t[2][0], 0.5773467471863534901e-3, 1e-12, "iauC2t00b", "31", status); vvd(rc2t[2][1], 0.3961790411549945020e-4, 1e-12, "iauC2t00b", "32", status); vvd(rc2t[2][2], 0.9999998325505635738, 1e-12, "iauC2t00b", "33", status); } static void t_c2t06a(int *status) /* ** - - - - - - - - - ** t _ c 2 t 0 6 a ** - - - - - - - - - ** ** Test iauC2t06a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauC2t06a, vvd ** ** This revision: 2013 August 7 */ { double tta, ttb, uta, utb, xp, yp, rc2t[3][3]; tta = 2400000.5; uta = 2400000.5; ttb = 53736.0; utb = 53736.0; xp = 2.55060238e-7; yp = 1.860359247e-6; iauC2t06a(tta, ttb, uta, utb, xp, yp, rc2t); vvd(rc2t[0][0], -0.1810332128305897282, 1e-12, "iauC2t06a", "11", status); vvd(rc2t[0][1], 0.9834769806938592296, 1e-12, "iauC2t06a", "12", status); vvd(rc2t[0][2], 0.6555550962998436505e-4, 1e-12, "iauC2t06a", "13", status); vvd(rc2t[1][0], -0.9834768134136214897, 1e-12, "iauC2t06a", "21", status); vvd(rc2t[1][1], -0.1810332203649130832, 1e-12, "iauC2t06a", "22", status); vvd(rc2t[1][2], 0.5749800844905594110e-3, 1e-12, "iauC2t06a", "23", status); vvd(rc2t[2][0], 0.5773474024748545878e-3, 1e-12, "iauC2t06a", "31", status); vvd(rc2t[2][1], 0.3961816829632690581e-4, 1e-12, "iauC2t06a", "32", status); vvd(rc2t[2][2], 0.9999998325501747785, 1e-12, "iauC2t06a", "33", status); } static void t_c2tcio(int *status) /* ** - - - - - - - - - ** t _ c 2 t c i o ** - - - - - - - - - ** ** Test iauC2tcio function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauC2tcio, vvd ** ** This revision: 2013 August 7 */ { double rc2i[3][3], era, rpom[3][3], rc2t[3][3]; rc2i[0][0] = 0.9999998323037164738; rc2i[0][1] = 0.5581526271714303683e-9; rc2i[0][2] = -0.5791308477073443903e-3; rc2i[1][0] = -0.2384266227524722273e-7; rc2i[1][1] = 0.9999999991917404296; rc2i[1][2] = -0.4020594955030704125e-4; rc2i[2][0] = 0.5791308472168153320e-3; rc2i[2][1] = 0.4020595661593994396e-4; rc2i[2][2] = 0.9999998314954572365; era = 1.75283325530307; rpom[0][0] = 0.9999999999999674705; rpom[0][1] = -0.1367174580728847031e-10; rpom[0][2] = 0.2550602379999972723e-6; rpom[1][0] = 0.1414624947957029721e-10; rpom[1][1] = 0.9999999999982694954; rpom[1][2] = -0.1860359246998866338e-5; rpom[2][0] = -0.2550602379741215275e-6; rpom[2][1] = 0.1860359247002413923e-5; rpom[2][2] = 0.9999999999982369658; iauC2tcio(rc2i, era, rpom, rc2t); vvd(rc2t[0][0], -0.1810332128307110439, 1e-12, "iauC2tcio", "11", status); vvd(rc2t[0][1], 0.9834769806938470149, 1e-12, "iauC2tcio", "12", status); vvd(rc2t[0][2], 0.6555535638685466874e-4, 1e-12, "iauC2tcio", "13", status); vvd(rc2t[1][0], -0.9834768134135996657, 1e-12, "iauC2tcio", "21", status); vvd(rc2t[1][1], -0.1810332203649448367, 1e-12, "iauC2tcio", "22", status); vvd(rc2t[1][2], 0.5749801116141106528e-3, 1e-12, "iauC2tcio", "23", status); vvd(rc2t[2][0], 0.5773474014081407076e-3, 1e-12, "iauC2tcio", "31", status); vvd(rc2t[2][1], 0.3961832391772658944e-4, 1e-12, "iauC2tcio", "32", status); vvd(rc2t[2][2], 0.9999998325501691969, 1e-12, "iauC2tcio", "33", status); } static void t_c2teqx(int *status) /* ** - - - - - - - - - ** t _ c 2 t e q x ** - - - - - - - - - ** ** Test iauC2teqx function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauC2teqx, vvd ** ** This revision: 2013 August 7 */ { double rbpn[3][3], gst, rpom[3][3], rc2t[3][3]; rbpn[0][0] = 0.9999989440476103608; rbpn[0][1] = -0.1332881761240011518e-2; rbpn[0][2] = -0.5790767434730085097e-3; rbpn[1][0] = 0.1332858254308954453e-2; rbpn[1][1] = 0.9999991109044505944; rbpn[1][2] = -0.4097782710401555759e-4; rbpn[2][0] = 0.5791308472168153320e-3; rbpn[2][1] = 0.4020595661593994396e-4; rbpn[2][2] = 0.9999998314954572365; gst = 1.754166138040730516; rpom[0][0] = 0.9999999999999674705; rpom[0][1] = -0.1367174580728847031e-10; rpom[0][2] = 0.2550602379999972723e-6; rpom[1][0] = 0.1414624947957029721e-10; rpom[1][1] = 0.9999999999982694954; rpom[1][2] = -0.1860359246998866338e-5; rpom[2][0] = -0.2550602379741215275e-6; rpom[2][1] = 0.1860359247002413923e-5; rpom[2][2] = 0.9999999999982369658; iauC2teqx(rbpn, gst, rpom, rc2t); vvd(rc2t[0][0], -0.1810332128528685730, 1e-12, "iauC2teqx", "11", status); vvd(rc2t[0][1], 0.9834769806897685071, 1e-12, "iauC2teqx", "12", status); vvd(rc2t[0][2], 0.6555535639982634449e-4, 1e-12, "iauC2teqx", "13", status); vvd(rc2t[1][0], -0.9834768134095211257, 1e-12, "iauC2teqx", "21", status); vvd(rc2t[1][1], -0.1810332203871023800, 1e-12, "iauC2teqx", "22", status); vvd(rc2t[1][2], 0.5749801116126438962e-3, 1e-12, "iauC2teqx", "23", status); vvd(rc2t[2][0], 0.5773474014081539467e-3, 1e-12, "iauC2teqx", "31", status); vvd(rc2t[2][1], 0.3961832391768640871e-4, 1e-12, "iauC2teqx", "32", status); vvd(rc2t[2][2], 0.9999998325501691969, 1e-12, "iauC2teqx", "33", status); } static void t_c2tpe(int *status) /* ** - - - - - - - - ** t _ c 2 t p e ** - - - - - - - - ** ** Test iauC2tpe function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauC2tpe, vvd ** ** This revision: 2013 August 7 */ { double tta, ttb, uta, utb, dpsi, deps, xp, yp, rc2t[3][3]; tta = 2400000.5; uta = 2400000.5; ttb = 53736.0; utb = 53736.0; deps = 0.4090789763356509900; dpsi = -0.9630909107115582393e-5; xp = 2.55060238e-7; yp = 1.860359247e-6; iauC2tpe(tta, ttb, uta, utb, dpsi, deps, xp, yp, rc2t); vvd(rc2t[0][0], -0.1813677995763029394, 1e-12, "iauC2tpe", "11", status); vvd(rc2t[0][1], 0.9023482206891683275, 1e-12, "iauC2tpe", "12", status); vvd(rc2t[0][2], -0.3909902938641085751, 1e-12, "iauC2tpe", "13", status); vvd(rc2t[1][0], -0.9834147641476804807, 1e-12, "iauC2tpe", "21", status); vvd(rc2t[1][1], -0.1659883635434995121, 1e-12, "iauC2tpe", "22", status); vvd(rc2t[1][2], 0.7309763898042819705e-1, 1e-12, "iauC2tpe", "23", status); vvd(rc2t[2][0], 0.1059685430673215247e-2, 1e-12, "iauC2tpe", "31", status); vvd(rc2t[2][1], 0.3977631855605078674, 1e-12, "iauC2tpe", "32", status); vvd(rc2t[2][2], 0.9174875068792735362, 1e-12, "iauC2tpe", "33", status); } static void t_c2txy(int *status) /* ** - - - - - - - - ** t _ c 2 t x y ** - - - - - - - - ** ** Test iauC2txy function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauC2txy, vvd ** ** This revision: 2013 August 7 */ { double tta, ttb, uta, utb, x, y, xp, yp, rc2t[3][3]; tta = 2400000.5; uta = 2400000.5; ttb = 53736.0; utb = 53736.0; x = 0.5791308486706011000e-3; y = 0.4020579816732961219e-4; xp = 2.55060238e-7; yp = 1.860359247e-6; iauC2txy(tta, ttb, uta, utb, x, y, xp, yp, rc2t); vvd(rc2t[0][0], -0.1810332128306279253, 1e-12, "iauC2txy", "11", status); vvd(rc2t[0][1], 0.9834769806938520084, 1e-12, "iauC2txy", "12", status); vvd(rc2t[0][2], 0.6555551248057665829e-4, 1e-12, "iauC2txy", "13", status); vvd(rc2t[1][0], -0.9834768134136142314, 1e-12, "iauC2txy", "21", status); vvd(rc2t[1][1], -0.1810332203649529312, 1e-12, "iauC2txy", "22", status); vvd(rc2t[1][2], 0.5749800843594139912e-3, 1e-12, "iauC2txy", "23", status); vvd(rc2t[2][0], 0.5773474028619264494e-3, 1e-12, "iauC2txy", "31", status); vvd(rc2t[2][1], 0.3961816546911624260e-4, 1e-12, "iauC2txy", "32", status); vvd(rc2t[2][2], 0.9999998325501746670, 1e-12, "iauC2txy", "33", status); } static void t_cal2jd(int *status) /* ** - - - - - - - - - ** t _ c a l 2 j d ** - - - - - - - - - ** ** Test iauCal2jd function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauCal2jd, vvd, viv ** ** This revision: 2013 August 7 */ { int j; double djm0, djm; j = iauCal2jd(2003, 06, 01, &djm0, &djm); vvd(djm0, 2400000.5, 0.0, "iauCal2jd", "djm0", status); vvd(djm, 52791.0, 0.0, "iauCal2jd", "djm", status); viv(j, 0, "iauCal2jd", "j", status); } static void t_cp(int *status) /* ** - - - - - ** t _ c p ** - - - - - ** ** Test iauCp function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauCp, vvd ** ** This revision: 2013 August 7 */ { double p[3], c[3]; p[0] = 0.3; p[1] = 1.2; p[2] = -2.5; iauCp(p, c); vvd(c[0], 0.3, 0.0, "iauCp", "1", status); vvd(c[1], 1.2, 0.0, "iauCp", "2", status); vvd(c[2], -2.5, 0.0, "iauCp", "3", status); } static void t_cpv(int *status) /* ** - - - - - - ** t _ c p v ** - - - - - - ** ** Test iauCpv function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauCpv, vvd ** ** This revision: 2013 August 7 */ { double pv[2][3], c[2][3]; pv[0][0] = 0.3; pv[0][1] = 1.2; pv[0][2] = -2.5; pv[1][0] = -0.5; pv[1][1] = 3.1; pv[1][2] = 0.9; iauCpv(pv, c); vvd(c[0][0], 0.3, 0.0, "iauCpv", "p1", status); vvd(c[0][1], 1.2, 0.0, "iauCpv", "p2", status); vvd(c[0][2], -2.5, 0.0, "iauCpv", "p3", status); vvd(c[1][0], -0.5, 0.0, "iauCpv", "v1", status); vvd(c[1][1], 3.1, 0.0, "iauCpv", "v2", status); vvd(c[1][2], 0.9, 0.0, "iauCpv", "v3", status); } static void t_cr(int *status) /* ** - - - - - ** t _ c r ** - - - - - ** ** Test iauCr function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauCr, vvd ** ** This revision: 2013 August 7 */ { double r[3][3], c[3][3]; r[0][0] = 2.0; r[0][1] = 3.0; r[0][2] = 2.0; r[1][0] = 3.0; r[1][1] = 2.0; r[1][2] = 3.0; r[2][0] = 3.0; r[2][1] = 4.0; r[2][2] = 5.0; iauCr(r, c); vvd(c[0][0], 2.0, 0.0, "iauCr", "11", status); vvd(c[0][1], 3.0, 0.0, "iauCr", "12", status); vvd(c[0][2], 2.0, 0.0, "iauCr", "13", status); vvd(c[1][0], 3.0, 0.0, "iauCr", "21", status); vvd(c[1][1], 2.0, 0.0, "iauCr", "22", status); vvd(c[1][2], 3.0, 0.0, "iauCr", "23", status); vvd(c[2][0], 3.0, 0.0, "iauCr", "31", status); vvd(c[2][1], 4.0, 0.0, "iauCr", "32", status); vvd(c[2][2], 5.0, 0.0, "iauCr", "33", status); } static void t_d2dtf(int *status ) /* ** - - - - - - - - ** t _ d 2 d t f ** - - - - - - - - ** ** Test iauD2dtf function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauD2dtf, viv ** ** This revision: 2013 August 7 */ { int j, iy, im, id, ihmsf[4]; j = iauD2dtf("UTC", 5, 2400000.5, 49533.99999, &iy, &im, &id, ihmsf); viv(iy, 1994, "iauD2dtf", "y", status); viv(im, 6, "iauD2dtf", "mo", status); viv(id, 30, "iauD2dtf", "d", status); viv(ihmsf[0], 23, "iauD2dtf", "h", status); viv(ihmsf[1], 59, "iauD2dtf", "m", status); viv(ihmsf[2], 60, "iauD2dtf", "s", status); viv(ihmsf[3], 13599, "iauD2dtf", "f", status); viv(j, 0, "iauD2dtf", "j", status); } static void t_d2tf(int *status) /* ** - - - - - - - ** t _ d 2 t f ** - - - - - - - ** ** Test iauD2tf function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauD2tf, viv, vvd ** ** This revision: 2013 August 7 */ { int ihmsf[4]; char s; iauD2tf(4, -0.987654321, &s, ihmsf); viv((int)s, '-', "iauD2tf", "s", status); viv(ihmsf[0], 23, "iauD2tf", "0", status); viv(ihmsf[1], 42, "iauD2tf", "1", status); viv(ihmsf[2], 13, "iauD2tf", "2", status); viv(ihmsf[3], 3333, "iauD2tf", "3", status); } static void t_dat(int *status) /* ** - - - - - - ** t _ d a t ** - - - - - - ** ** Test iauDat function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauDat, vvd, viv ** ** This revision: 2015 January 30 */ { int j; double deltat; j = iauDat(2003, 6, 1, 0.0, &deltat); vvd(deltat, 32.0, 0.0, "iauDat", "d1", status); viv(j, 0, "iauDat", "j1", status); j = iauDat(2008, 1, 17, 0.0, &deltat); vvd(deltat, 33.0, 0.0, "iauDat", "d2", status); viv(j, 0, "iauDat", "j2", status); j = iauDat(2015, 9, 1, 0.0, &deltat); vvd(deltat, 36.0, 0.0, "iauDat", "d3", status); viv(j, 0, "iauDat", "j3", status); } static void t_dtdb(int *status) /* ** - - - - - - - ** t _ d t d b ** - - - - - - - ** ** Test iauDtdb function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauDtdb, vvd ** ** This revision: 2013 August 7 */ { double dtdb; dtdb = iauDtdb(2448939.5, 0.123, 0.76543, 5.0123, 5525.242, 3190.0); vvd(dtdb, -0.1280368005936998991e-2, 1e-15, "iauDtdb", "", status); } static void t_dtf2d(int *status) /* ** - - - - - - - - ** t _ d t f 2 d ** - - - - - - - - ** ** Test iauDtf2d function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauDtf2d, vvd, viv ** ** This revision: 2013 August 7 */ { double u1, u2; int j; j = iauDtf2d("UTC", 1994, 6, 30, 23, 59, 60.13599, &u1, &u2); vvd(u1+u2, 2449534.49999, 1e-6, "iauDtf2d", "u", status); viv(j, 0, "iauDtf2d", "j", status); } static void t_ee00(int *status) /* ** - - - - - - - ** t _ e e 0 0 ** - - - - - - - ** ** Test iauEe00 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauEe00, vvd ** ** This revision: 2013 August 7 */ { double epsa, dpsi, ee; epsa = 0.4090789763356509900; dpsi = -0.9630909107115582393e-5; ee = iauEe00(2400000.5, 53736.0, epsa, dpsi); vvd(ee, -0.8834193235367965479e-5, 1e-18, "iauEe00", "", status); } static void t_ee00a(int *status) /* ** - - - - - - - - ** t _ e e 0 0 a ** - - - - - - - - ** ** Test iauEe00a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauEe00a, vvd ** ** This revision: 2013 August 7 */ { double ee; ee = iauEe00a(2400000.5, 53736.0); vvd(ee, -0.8834192459222588227e-5, 1e-18, "iauEe00a", "", status); } static void t_ee00b(int *status) /* ** - - - - - - - - ** t _ e e 0 0 b ** - - - - - - - - ** ** Test iauEe00b function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauEe00b, vvd ** ** This revision: 2013 August 7 */ { double ee; ee = iauEe00b(2400000.5, 53736.0); vvd(ee, -0.8835700060003032831e-5, 1e-18, "iauEe00b", "", status); } static void t_ee06a(int *status) /* ** - - - - - - - - ** t _ e e 0 6 a ** - - - - - - - - ** ** Test iauEe06a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauEe06a, vvd ** ** This revision: 2013 August 7 */ { double ee; ee = iauEe06a(2400000.5, 53736.0); vvd(ee, -0.8834195072043790156e-5, 1e-15, "iauEe06a", "", status); } static void t_eect00(int *status) /* ** - - - - - - - - - ** t _ e e c t 0 0 ** - - - - - - - - - ** ** Test iauEect00 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauEect00, vvd ** ** This revision: 2013 August 7 */ { double eect; eect = iauEect00(2400000.5, 53736.0); vvd(eect, 0.2046085004885125264e-8, 1e-20, "iauEect00", "", status); } static void t_eform(int *status) /* ** - - - - - - - - ** t _ e f o r m ** - - - - - - - - ** ** Test iauEform function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauEform, viv, vvd ** ** This revision: 2013 August 7 */ { int j; double a, f; j = iauEform(0, &a, &f); viv(j, -1, "iauEform", "j0", status); j = iauEform(WGS84, &a, &f); viv(j, 0, "iauEform", "j1", status); vvd(a, 6378137.0, 1e-10, "iauEform", "a1", status); vvd(f, 0.0033528106647474807, 1e-18, "iauEform", "f1", status); j = iauEform(GRS80, &a, &f); viv(j, 0, "iauEform", "j2", status); vvd(a, 6378137.0, 1e-10, "iauEform", "a2", status); vvd(f, 0.0033528106811823189, 1e-18, "iauEform", "f2", status); j = iauEform(WGS72, &a, &f); viv(j, 0, "iauEform", "j2", status); vvd(a, 6378135.0, 1e-10, "iauEform", "a3", status); vvd(f, 0.0033527794541675049, 1e-18, "iauEform", "f3", status); j = iauEform(4, &a, &f); viv(j, -1, "iauEform", "j3", status); } static void t_eo06a(int *status) /* ** - - - - - - - - ** t _ e o 0 6 a ** - - - - - - - - ** ** Test iauEo06a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauEo06a, vvd ** ** This revision: 2013 August 7 */ { double eo; eo = iauEo06a(2400000.5, 53736.0); vvd(eo, -0.1332882371941833644e-2, 1e-15, "iauEo06a", "", status); } static void t_eors(int *status) /* ** - - - - - - - ** t _ e o r s ** - - - - - - - ** ** Test iauEors function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauEors, vvd ** ** This revision: 2013 August 7 */ { double rnpb[3][3], s, eo; rnpb[0][0] = 0.9999989440476103608; rnpb[0][1] = -0.1332881761240011518e-2; rnpb[0][2] = -0.5790767434730085097e-3; rnpb[1][0] = 0.1332858254308954453e-2; rnpb[1][1] = 0.9999991109044505944; rnpb[1][2] = -0.4097782710401555759e-4; rnpb[2][0] = 0.5791308472168153320e-3; rnpb[2][1] = 0.4020595661593994396e-4; rnpb[2][2] = 0.9999998314954572365; s = -0.1220040848472271978e-7; eo = iauEors(rnpb, s); vvd(eo, -0.1332882715130744606e-2, 1e-14, "iauEors", "", status); } static void t_epb(int *status) /* ** - - - - - - ** t _ e p b ** - - - - - - ** ** Test iauEpb function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauEpb, vvd ** ** This revision: 2013 August 7 */ { double epb; epb = iauEpb(2415019.8135, 30103.18648); vvd(epb, 1982.418424159278580, 1e-12, "iauEpb", "", status); } static void t_epb2jd(int *status) /* ** - - - - - - - - - ** t _ e p b 2 j d ** - - - - - - - - - ** ** Test iauEpb2jd function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauEpb2jd, vvd ** ** This revision: 2013 August 7 */ { double epb, djm0, djm; epb = 1957.3; iauEpb2jd(epb, &djm0, &djm); vvd(djm0, 2400000.5, 1e-9, "iauEpb2jd", "djm0", status); vvd(djm, 35948.1915101513, 1e-9, "iauEpb2jd", "mjd", status); } static void t_epj(int *status) /* ** - - - - - - ** t _ e p j ** - - - - - - ** ** Test iauEpj function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauEpj, vvd ** ** This revision: 2013 August 7 */ { double epj; epj = iauEpj(2451545, -7392.5); vvd(epj, 1979.760438056125941, 1e-12, "iauEpj", "", status); } static void t_epj2jd(int *status) /* ** - - - - - - - - - ** t _ e p j 2 j d ** - - - - - - - - - ** ** Test iauEpj2jd function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauEpj2jd, vvd ** ** This revision: 2013 August 7 */ { double epj, djm0, djm; epj = 1996.8; iauEpj2jd(epj, &djm0, &djm); vvd(djm0, 2400000.5, 1e-9, "iauEpj2jd", "djm0", status); vvd(djm, 50375.7, 1e-9, "iauEpj2jd", "mjd", status); } static void t_epv00(int *status) /* ** - - - - - - - - ** t _ e p v 0 0 ** - - - - - - - - ** ** Test iauEpv00 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauEpv00, vvd, viv ** ** This revision: 2013 August 7 */ { double pvh[2][3], pvb[2][3]; int j; j = iauEpv00(2400000.5, 53411.52501161, pvh, pvb); vvd(pvh[0][0], -0.7757238809297706813, 1e-14, "iauEpv00", "ph(x)", status); vvd(pvh[0][1], 0.5598052241363340596, 1e-14, "iauEpv00", "ph(y)", status); vvd(pvh[0][2], 0.2426998466481686993, 1e-14, "iauEpv00", "ph(z)", status); vvd(pvh[1][0], -0.1091891824147313846e-1, 1e-15, "iauEpv00", "vh(x)", status); vvd(pvh[1][1], -0.1247187268440845008e-1, 1e-15, "iauEpv00", "vh(y)", status); vvd(pvh[1][2], -0.5407569418065039061e-2, 1e-15, "iauEpv00", "vh(z)", status); vvd(pvb[0][0], -0.7714104440491111971, 1e-14, "iauEpv00", "pb(x)", status); vvd(pvb[0][1], 0.5598412061824171323, 1e-14, "iauEpv00", "pb(y)", status); vvd(pvb[0][2], 0.2425996277722452400, 1e-14, "iauEpv00", "pb(z)", status); vvd(pvb[1][0], -0.1091874268116823295e-1, 1e-15, "iauEpv00", "vb(x)", status); vvd(pvb[1][1], -0.1246525461732861538e-1, 1e-15, "iauEpv00", "vb(y)", status); vvd(pvb[1][2], -0.5404773180966231279e-2, 1e-15, "iauEpv00", "vb(z)", status); viv(j, 0, "iauEpv00", "j", status); } static void t_eqeq94(int *status) /* ** - - - - - - - - - ** t _ e q e q 9 4 ** - - - - - - - - - ** ** Test iauEqeq94 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauEqeq94, vvd ** ** This revision: 2013 August 7 */ { double eqeq; eqeq = iauEqeq94(2400000.5, 41234.0); vvd(eqeq, 0.5357758254609256894e-4, 1e-17, "iauEqeq94", "", status); } static void t_era00(int *status) /* ** - - - - - - - - ** t _ e r a 0 0 ** - - - - - - - - ** ** Test iauEra00 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauEra00, vvd ** ** This revision: 2013 August 7 */ { double era00; era00 = iauEra00(2400000.5, 54388.0); vvd(era00, 0.4022837240028158102, 1e-12, "iauEra00", "", status); } static void t_fad03(int *status) /* ** - - - - - - - - ** t _ f a d 0 3 ** - - - - - - - - ** ** Test iauFad03 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFad03, vvd ** ** This revision: 2013 August 7 */ { vvd(iauFad03(0.80), 1.946709205396925672, 1e-12, "iauFad03", "", status); } static void t_fae03(int *status) /* ** - - - - - - - - ** t _ f a e 0 3 ** - - - - - - - - ** ** Test iauFae03 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFae03, vvd ** ** This revision: 2013 August 7 */ { vvd(iauFae03(0.80), 1.744713738913081846, 1e-12, "iauFae03", "", status); } static void t_faf03(int *status) /* ** - - - - - - - - ** t _ f a f 0 3 ** - - - - - - - - ** ** Test iauFaf03 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFaf03, vvd ** ** This revision: 2013 August 7 */ { vvd(iauFaf03(0.80), 0.2597711366745499518, 1e-12, "iauFaf03", "", status); } static void t_faju03(int *status) /* ** - - - - - - - - - ** t _ f a j u 0 3 ** - - - - - - - - - ** ** Test iauFaju03 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFaju03, vvd ** ** This revision: 2013 August 7 */ { vvd(iauFaju03(0.80), 5.275711665202481138, 1e-12, "iauFaju03", "", status); } static void t_fal03(int *status) /* ** - - - - - - - - ** t _ f a l 0 3 ** - - - - - - - - ** ** Test iauFal03 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFal03, vvd ** ** This revision: 2013 August 7 */ { vvd(iauFal03(0.80), 5.132369751108684150, 1e-12, "iauFal03", "", status); } static void t_falp03(int *status) /* ** - - - - - - - - - ** t _ f a l p 0 3 ** - - - - - - - - - ** ** Test iauFalp03 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFalp03, vvd ** ** This revision: 2013 August 7 */ { vvd(iauFalp03(0.80), 6.226797973505507345, 1e-12, "iauFalp03", "", status); } static void t_fama03(int *status) /* ** - - - - - - - - - ** t _ f a m a 0 3 ** - - - - - - - - - ** ** Test iauFama03 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFama03, vvd ** ** This revision: 2013 August 7 */ { vvd(iauFama03(0.80), 3.275506840277781492, 1e-12, "iauFama03", "", status); } static void t_fame03(int *status) /* ** - - - - - - - - - ** t _ f a m e 0 3 ** - - - - - - - - - ** ** Test iauFame03 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFame03, vvd ** ** This revision: 2013 August 7 */ { vvd(iauFame03(0.80), 5.417338184297289661, 1e-12, "iauFame03", "", status); } static void t_fane03(int *status) /* ** - - - - - - - - - ** t _ f a n e 0 3 ** - - - - - - - - - ** ** Test iauFane03 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFane03, vvd ** ** This revision: 2013 August 7 */ { vvd(iauFane03(0.80), 2.079343830860413523, 1e-12, "iauFane03", "", status); } static void t_faom03(int *status) /* ** - - - - - - - - - ** t _ f a o m 0 3 ** - - - - - - - - - ** ** Test iauFaom03 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFaom03, vvd ** ** This revision: 2013 August 7 */ { vvd(iauFaom03(0.80), -5.973618440951302183, 1e-12, "iauFaom03", "", status); } static void t_fapa03(int *status) /* ** - - - - - - - - - ** t _ f a p a 0 3 ** - - - - - - - - - ** ** Test iauFapa03 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFapa03, vvd ** ** This revision: 2013 August 7 */ { vvd(iauFapa03(0.80), 0.1950884762240000000e-1, 1e-12, "iauFapa03", "", status); } static void t_fasa03(int *status) /* ** - - - - - - - - - ** t _ f a s a 0 3 ** - - - - - - - - - ** ** Test iauFasa03 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFasa03, vvd ** ** This revision: 2013 August 7 */ { vvd(iauFasa03(0.80), 5.371574539440827046, 1e-12, "iauFasa03", "", status); } static void t_faur03(int *status) /* ** - - - - - - - - - ** t _ f a u r 0 3 ** - - - - - - - - - ** ** Test iauFaur03 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFaur03, vvd ** ** This revision: 2013 August 7 */ { vvd(iauFaur03(0.80), 5.180636450180413523, 1e-12, "iauFaur03", "", status); } static void t_fave03(int *status) /* ** - - - - - - - - - ** t _ f a v e 0 3 ** - - - - - - - - - ** ** Test iauFave03 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFave03, vvd ** ** This revision: 2013 August 7 */ { vvd(iauFave03(0.80), 3.424900460533758000, 1e-12, "iauFave03", "", status); } static void t_fk52h(int *status) /* ** - - - - - - - - ** t _ f k 5 2 h ** - - - - - - - - ** ** Test iauFk52h function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFk52h, vvd ** ** This revision: 2013 August 7 */ { double r5, d5, dr5, dd5, px5, rv5, rh, dh, drh, ddh, pxh, rvh; r5 = 1.76779433; d5 = -0.2917517103; dr5 = -1.91851572e-7; dd5 = -5.8468475e-6; px5 = 0.379210; rv5 = -7.6; iauFk52h(r5, d5, dr5, dd5, px5, rv5, &rh, &dh, &drh, &ddh, &pxh, &rvh); vvd(rh, 1.767794226299947632, 1e-14, "iauFk52h", "ra", status); vvd(dh, -0.2917516070530391757, 1e-14, "iauFk52h", "dec", status); vvd(drh, -0.19618741256057224e-6,1e-19, "iauFk52h", "dr5", status); vvd(ddh, -0.58459905176693911e-5, 1e-19, "iauFk52h", "dd5", status); vvd(pxh, 0.37921, 1e-14, "iauFk52h", "px", status); vvd(rvh, -7.6000000940000254, 1e-11, "iauFk52h", "rv", status); } static void t_fk5hip(int *status) /* ** - - - - - - - - - ** t _ f k 5 h i p ** - - - - - - - - - ** ** Test iauFk5hip function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFk5hip, vvd ** ** This revision: 2013 August 7 */ { double r5h[3][3], s5h[3]; iauFk5hip(r5h, s5h); vvd(r5h[0][0], 0.9999999999999928638, 1e-14, "iauFk5hip", "11", status); vvd(r5h[0][1], 0.1110223351022919694e-6, 1e-17, "iauFk5hip", "12", status); vvd(r5h[0][2], 0.4411803962536558154e-7, 1e-17, "iauFk5hip", "13", status); vvd(r5h[1][0], -0.1110223308458746430e-6, 1e-17, "iauFk5hip", "21", status); vvd(r5h[1][1], 0.9999999999999891830, 1e-14, "iauFk5hip", "22", status); vvd(r5h[1][2], -0.9647792498984142358e-7, 1e-17, "iauFk5hip", "23", status); vvd(r5h[2][0], -0.4411805033656962252e-7, 1e-17, "iauFk5hip", "31", status); vvd(r5h[2][1], 0.9647792009175314354e-7, 1e-17, "iauFk5hip", "32", status); vvd(r5h[2][2], 0.9999999999999943728, 1e-14, "iauFk5hip", "33", status); vvd(s5h[0], -0.1454441043328607981e-8, 1e-17, "iauFk5hip", "s1", status); vvd(s5h[1], 0.2908882086657215962e-8, 1e-17, "iauFk5hip", "s2", status); vvd(s5h[2], 0.3393695767766751955e-8, 1e-17, "iauFk5hip", "s3", status); } static void t_fk5hz(int *status) /* ** - - - - - - - - ** t _ f k 5 h z ** - - - - - - - - ** ** Test iauFk5hz function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFk5hz, vvd ** ** This revision: 2013 August 7 */ { double r5, d5, rh, dh; r5 = 1.76779433; d5 = -0.2917517103; iauFk5hz(r5, d5, 2400000.5, 54479.0, &rh, &dh); vvd(rh, 1.767794191464423978, 1e-12, "iauFk5hz", "ra", status); vvd(dh, -0.2917516001679884419, 1e-12, "iauFk5hz", "dec", status); } static void t_fw2m(int *status) /* ** - - - - - - - ** t _ f w 2 m ** - - - - - - - ** ** Test iauFw2m function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFw2m, vvd ** ** This revision: 2013 August 7 */ { double gamb, phib, psi, eps, r[3][3]; gamb = -0.2243387670997992368e-5; phib = 0.4091014602391312982; psi = -0.9501954178013015092e-3; eps = 0.4091014316587367472; iauFw2m(gamb, phib, psi, eps, r); vvd(r[0][0], 0.9999995505176007047, 1e-12, "iauFw2m", "11", status); vvd(r[0][1], 0.8695404617348192957e-3, 1e-12, "iauFw2m", "12", status); vvd(r[0][2], 0.3779735201865582571e-3, 1e-12, "iauFw2m", "13", status); vvd(r[1][0], -0.8695404723772016038e-3, 1e-12, "iauFw2m", "21", status); vvd(r[1][1], 0.9999996219496027161, 1e-12, "iauFw2m", "22", status); vvd(r[1][2], -0.1361752496887100026e-6, 1e-12, "iauFw2m", "23", status); vvd(r[2][0], -0.3779734957034082790e-3, 1e-12, "iauFw2m", "31", status); vvd(r[2][1], -0.1924880848087615651e-6, 1e-12, "iauFw2m", "32", status); vvd(r[2][2], 0.9999999285679971958, 1e-12, "iauFw2m", "33", status); } static void t_fw2xy(int *status) /* ** - - - - - - - - ** t _ f w 2 x y ** - - - - - - - - ** ** Test iauFw2xy function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauFw2xy, vvd ** ** This revision: 2013 August 7 */ { double gamb, phib, psi, eps, x, y; gamb = -0.2243387670997992368e-5; phib = 0.4091014602391312982; psi = -0.9501954178013015092e-3; eps = 0.4091014316587367472; iauFw2xy(gamb, phib, psi, eps, &x, &y); vvd(x, -0.3779734957034082790e-3, 1e-14, "iauFw2xy", "x", status); vvd(y, -0.1924880848087615651e-6, 1e-14, "iauFw2xy", "y", status); } static void t_g2icrs(int *status) /* ** - - - - - - - - - ** t _ g 2 i c r s ** - - - - - - - - - ** ** Test iauG2icrs function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauG2icrs, vvd ** ** This revision: 2015 January 30 */ { double dl, db, dr, dd; dl = 5.5850536063818546461558105; db = -0.7853981633974483096156608; iauG2icrs (dl, db, &dr, &dd); vvd(dr, 5.9338074302227188048671, 1e-14, "iauG2icrs", "R", status); vvd(dd, -1.1784870613579944551541, 1e-14, "iauG2icrs", "D", status); } static void t_gc2gd(int *status) /* ** - - - - - - - - ** t _ g c 2 g d ** - - - - - - - - ** ** Test iauGc2gd function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauGc2gd, viv, vvd ** ** This revision: 2013 August 7 */ { int j; double xyz[] = {2e6, 3e6, 5.244e6}; double e, p, h; j = iauGc2gd(0, xyz, &e, &p, &h); viv(j, -1, "iauGc2gd", "j0", status); j = iauGc2gd(WGS84, xyz, &e, &p, &h); viv(j, 0, "iauGc2gd", "j1", status); vvd(e, 0.98279372324732907, 1e-14, "iauGc2gd", "e1", status); vvd(p, 0.97160184819075459, 1e-14, "iauGc2gd", "p1", status); vvd(h, 331.41724614260599, 1e-8, "iauGc2gd", "h1", status); j = iauGc2gd(GRS80, xyz, &e, &p, &h); viv(j, 0, "iauGc2gd", "j2", status); vvd(e, 0.98279372324732907, 1e-14, "iauGc2gd", "e2", status); vvd(p, 0.97160184820607853, 1e-14, "iauGc2gd", "p2", status); vvd(h, 331.41731754844348, 1e-8, "iauGc2gd", "h2", status); j = iauGc2gd(WGS72, xyz, &e, &p, &h); viv(j, 0, "iauGc2gd", "j3", status); vvd(e, 0.98279372324732907, 1e-14, "iauGc2gd", "e3", status); vvd(p, 0.97160181811015119, 1e-14, "iauGc2gd", "p3", status); vvd(h, 333.27707261303181, 1e-8, "iauGc2gd", "h3", status); j = iauGc2gd(4, xyz, &e, &p, &h); viv(j, -1, "iauGc2gd", "j4", status); } static void t_gc2gde(int *status) /* ** - - - - - - - - - ** t _ g c 2 g d e ** - - - - - - - - - ** ** Test iauGc2gde function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauGc2gde, viv, vvd ** ** This revision: 2013 August 7 */ { int j; double a = 6378136.0, f = 0.0033528; double xyz[] = {2e6, 3e6, 5.244e6}; double e, p, h; j = iauGc2gde(a, f, xyz, &e, &p, &h); viv(j, 0, "iauGc2gde", "j", status); vvd(e, 0.98279372324732907, 1e-14, "iauGc2gde", "e", status); vvd(p, 0.97160183775704115, 1e-14, "iauGc2gde", "p", status); vvd(h, 332.36862495764397, 1e-8, "iauGc2gde", "h", status); } static void t_gd2gc(int *status) /* ** - - - - - - - - ** t _ g d 2 g c ** - - - - - - - - ** ** Test iauGd2gc function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauGd2gc, viv, vvd ** ** This revision: 2013 August 7 */ { int j; double e = 3.1, p = -0.5, h = 2500.0; double xyz[3]; j = iauGd2gc(0, e, p, h, xyz); viv(j, -1, "iauGd2gc", "j0", status); j = iauGd2gc(WGS84, e, p, h, xyz); viv(j, 0, "iauGd2gc", "j1", status); vvd(xyz[0], -5599000.5577049947, 1e-7, "iauGd2gc", "0/1", status); vvd(xyz[1], 233011.67223479203, 1e-7, "iauGd2gc", "1/1", status); vvd(xyz[2], -3040909.4706983363, 1e-7, "iauGd2gc", "2/1", status); j = iauGd2gc(GRS80, e, p, h, xyz); viv(j, 0, "iauGd2gc", "j2", status); vvd(xyz[0], -5599000.5577260984, 1e-7, "iauGd2gc", "0/2", status); vvd(xyz[1], 233011.6722356703, 1e-7, "iauGd2gc", "1/2", status); vvd(xyz[2], -3040909.4706095476, 1e-7, "iauGd2gc", "2/2", status); j = iauGd2gc(WGS72, e, p, h, xyz); viv(j, 0, "iauGd2gc", "j3", status); vvd(xyz[0], -5598998.7626301490, 1e-7, "iauGd2gc", "0/3", status); vvd(xyz[1], 233011.5975297822, 1e-7, "iauGd2gc", "1/3", status); vvd(xyz[2], -3040908.6861467111, 1e-7, "iauGd2gc", "2/3", status); j = iauGd2gc(4, e, p, h, xyz); viv(j, -1, "iauGd2gc", "j4", status); } static void t_gd2gce(int *status) /* ** - - - - - - - - - ** t _ g d 2 g c e ** - - - - - - - - - ** ** Test iauGd2gce function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauGd2gce, viv, vvd ** ** This revision: 2013 August 7 */ { int j; double a = 6378136.0, f = 0.0033528; double e = 3.1, p = -0.5, h = 2500.0; double xyz[3]; j = iauGd2gce(a, f, e, p, h, xyz); viv(j, 0, "iauGd2gce", "j", status); vvd(xyz[0], -5598999.6665116328, 1e-7, "iauGd2gce", "0", status); vvd(xyz[1], 233011.63514630572, 1e-7, "iauGd2gce", "1", status); vvd(xyz[2], -3040909.0517314132, 1e-7, "iauGd2gce", "2", status); } static void t_gmst00(int *status) /* ** - - - - - - - - - ** t _ g m s t 0 0 ** - - - - - - - - - ** ** Test iauGmst00 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauGmst00, vvd ** ** This revision: 2013 August 7 */ { double theta; theta = iauGmst00(2400000.5, 53736.0, 2400000.5, 53736.0); vvd(theta, 1.754174972210740592, 1e-12, "iauGmst00", "", status); } static void t_gmst06(int *status) /* ** - - - - - - - - - ** t _ g m s t 0 6 ** - - - - - - - - - ** ** Test iauGmst06 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauGmst06, vvd ** ** This revision: 2013 August 7 */ { double theta; theta = iauGmst06(2400000.5, 53736.0, 2400000.5, 53736.0); vvd(theta, 1.754174971870091203, 1e-12, "iauGmst06", "", status); } static void t_gmst82(int *status) /* ** - - - - - - - - - ** t _ g m s t 8 2 ** - - - - - - - - - ** ** Test iauGmst82 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauGmst82, vvd ** ** This revision: 2013 August 7 */ { double theta; theta = iauGmst82(2400000.5, 53736.0); vvd(theta, 1.754174981860675096, 1e-12, "iauGmst82", "", status); } static void t_gst00a(int *status) /* ** - - - - - - - - - ** t _ g s t 0 0 a ** - - - - - - - - - ** ** Test iauGst00a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauGst00a, vvd ** ** This revision: 2013 August 7 */ { double theta; theta = iauGst00a(2400000.5, 53736.0, 2400000.5, 53736.0); vvd(theta, 1.754166138018281369, 1e-12, "iauGst00a", "", status); } static void t_gst00b(int *status) /* ** - - - - - - - - - ** t _ g s t 0 0 b ** - - - - - - - - - ** ** Test iauGst00b function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauGst00b, vvd ** ** This revision: 2013 August 7 */ { double theta; theta = iauGst00b(2400000.5, 53736.0); vvd(theta, 1.754166136510680589, 1e-12, "iauGst00b", "", status); } static void t_gst06(int *status) /* ** - - - - - - - - ** t _ g s t 0 6 ** - - - - - - - - ** ** Test iauGst06 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauGst06, vvd ** ** This revision: 2013 August 7 */ { double rnpb[3][3], theta; rnpb[0][0] = 0.9999989440476103608; rnpb[0][1] = -0.1332881761240011518e-2; rnpb[0][2] = -0.5790767434730085097e-3; rnpb[1][0] = 0.1332858254308954453e-2; rnpb[1][1] = 0.9999991109044505944; rnpb[1][2] = -0.4097782710401555759e-4; rnpb[2][0] = 0.5791308472168153320e-3; rnpb[2][1] = 0.4020595661593994396e-4; rnpb[2][2] = 0.9999998314954572365; theta = iauGst06(2400000.5, 53736.0, 2400000.5, 53736.0, rnpb); vvd(theta, 1.754166138018167568, 1e-12, "iauGst06", "", status); } static void t_gst06a(int *status) /* ** - - - - - - - - - ** t _ g s t 0 6 a ** - - - - - - - - - ** ** Test iauGst06a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauGst06a, vvd ** ** This revision: 2013 August 7 */ { double theta; theta = iauGst06a(2400000.5, 53736.0, 2400000.5, 53736.0); vvd(theta, 1.754166137675019159, 1e-12, "iauGst06a", "", status); } static void t_gst94(int *status) /* ** - - - - - - - - ** t _ g s t 9 4 ** - - - - - - - - ** ** Test iauGst94 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauGst94, vvd ** ** This revision: 2013 August 7 */ { double theta; theta = iauGst94(2400000.5, 53736.0); vvd(theta, 1.754166136020645203, 1e-12, "iauGst94", "", status); } static void t_icrs2g(int *status) /* ** - - - - - - - - - ** t _ i c r s 2 g ** - - - - - - - - - ** ** Test iauIcrs2g function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauIcrs2g, vvd ** ** This revision: 2015 January 30 */ { double dr, dd, dl, db; dr = 5.9338074302227188048671087; dd = -1.1784870613579944551540570; iauIcrs2g (dr, dd, &dl, &db); vvd(dl, 5.5850536063818546461558, 1e-14, "iauIcrs2g", "L", status); vvd(db, -0.7853981633974483096157, 1e-14, "iauIcrs2g", "B", status); } static void t_h2fk5(int *status) /* ** - - - - - - - - ** t _ h 2 f k 5 ** - - - - - - - - ** ** Test iauH2fk5 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauH2fk5, vvd ** ** This revision: 2013 August 7 */ { double rh, dh, drh, ddh, pxh, rvh, r5, d5, dr5, dd5, px5, rv5; rh = 1.767794352; dh = -0.2917512594; drh = -2.76413026e-6; ddh = -5.92994449e-6; pxh = 0.379210; rvh = -7.6; iauH2fk5(rh, dh, drh, ddh, pxh, rvh, &r5, &d5, &dr5, &dd5, &px5, &rv5); vvd(r5, 1.767794455700065506, 1e-13, "iauH2fk5", "ra", status); vvd(d5, -0.2917513626469638890, 1e-13, "iauH2fk5", "dec", status); vvd(dr5, -0.27597945024511204e-5, 1e-18, "iauH2fk5", "dr5", status); vvd(dd5, -0.59308014093262838e-5, 1e-18, "iauH2fk5", "dd5", status); vvd(px5, 0.37921, 1e-13, "iauH2fk5", "px", status); vvd(rv5, -7.6000001309071126, 1e-10, "iauH2fk5", "rv", status); } static void t_hfk5z(int *status) /* ** - - - - - - - - ** t _ h f k 5 z ** - - - - - - - - ** ** Test iauHfk5z function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauHfk5z, vvd ** ** This revision: 2013 August 7 */ { double rh, dh, r5, d5, dr5, dd5; rh = 1.767794352; dh = -0.2917512594; iauHfk5z(rh, dh, 2400000.5, 54479.0, &r5, &d5, &dr5, &dd5); vvd(r5, 1.767794490535581026, 1e-13, "iauHfk5z", "ra", status); vvd(d5, -0.2917513695320114258, 1e-14, "iauHfk5z", "dec", status); vvd(dr5, 0.4335890983539243029e-8, 1e-22, "iauHfk5z", "dr5", status); vvd(dd5, -0.8569648841237745902e-9, 1e-23, "iauHfk5z", "dd5", status); } static void t_ir(int *status) /* ** - - - - - ** t _ i r ** - - - - - ** ** Test iauIr function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauIr, vvd ** ** This revision: 2013 August 7 */ { double r[3][3]; r[0][0] = 2.0; r[0][1] = 3.0; r[0][2] = 2.0; r[1][0] = 3.0; r[1][1] = 2.0; r[1][2] = 3.0; r[2][0] = 3.0; r[2][1] = 4.0; r[2][2] = 5.0; iauIr(r); vvd(r[0][0], 1.0, 0.0, "iauIr", "11", status); vvd(r[0][1], 0.0, 0.0, "iauIr", "12", status); vvd(r[0][2], 0.0, 0.0, "iauIr", "13", status); vvd(r[1][0], 0.0, 0.0, "iauIr", "21", status); vvd(r[1][1], 1.0, 0.0, "iauIr", "22", status); vvd(r[1][2], 0.0, 0.0, "iauIr", "23", status); vvd(r[2][0], 0.0, 0.0, "iauIr", "31", status); vvd(r[2][1], 0.0, 0.0, "iauIr", "32", status); vvd(r[2][2], 1.0, 0.0, "iauIr", "33", status); } static void t_jd2cal(int *status) /* ** - - - - - - - - - ** t _ j d 2 c a l ** - - - - - - - - - ** ** Test iauJd2cal function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauJd2cal, viv, vvd ** ** This revision: 2013 August 7 */ { double dj1, dj2, fd; int iy, im, id, j; dj1 = 2400000.5; dj2 = 50123.9999; j = iauJd2cal(dj1, dj2, &iy, &im, &id, &fd); viv(iy, 1996, "iauJd2cal", "y", status); viv(im, 2, "iauJd2cal", "m", status); viv(id, 10, "iauJd2cal", "d", status); vvd(fd, 0.9999, 1e-7, "iauJd2cal", "fd", status); viv(j, 0, "iauJd2cal", "j", status); } static void t_jdcalf(int *status) /* ** - - - - - - - - - ** t _ j d c a l f ** - - - - - - - - - ** ** Test iauJdcalf function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauJdcalf, viv ** ** This revision: 2013 August 7 */ { double dj1, dj2; int iydmf[4], j; dj1 = 2400000.5; dj2 = 50123.9999; j = iauJdcalf(4, dj1, dj2, iydmf); viv(iydmf[0], 1996, "iauJdcalf", "y", status); viv(iydmf[1], 2, "iauJdcalf", "m", status); viv(iydmf[2], 10, "iauJdcalf", "d", status); viv(iydmf[3], 9999, "iauJdcalf", "f", status); viv(j, 0, "iauJdcalf", "j", status); } static void t_ld(int *status) /* ** - - - - - ** t _ l d ** - - - - - ** ** Test iauLd function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauLd, vvd * ** This revision: 2013 October 2 */ { double bm, p[3], q[3], e[3], em, dlim, p1[3]; bm = 0.00028574; p[0] = -0.763276255; p[1] = -0.608633767; p[2] = -0.216735543; q[0] = -0.763276255; q[1] = -0.608633767; q[2] = -0.216735543; e[0] = 0.76700421; e[1] = 0.605629598; e[2] = 0.211937094; em = 8.91276983; dlim = 3e-10; iauLd(bm, p, q, e, em, dlim, p1); vvd(p1[0], -0.7632762548968159627, 1e-12, "iauLd", "1", status); vvd(p1[1], -0.6086337670823762701, 1e-12, "iauLd", "2", status); vvd(p1[2], -0.2167355431320546947, 1e-12, "iauLd", "3", status); } static void t_ldn(int *status) /* ** - - - - - - ** t _ l d n ** - - - - - - ** ** Test iauLdn function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauLdn, vvd ** ** This revision: 2013 October 2 */ { int n; iauLDBODY b[3]; double ob[3], sc[3], sn[3]; n = 3; b[0].bm = 0.00028574; b[0].dl = 3e-10; b[0].pv[0][0] = -7.81014427; b[0].pv[0][1] = -5.60956681; b[0].pv[0][2] = -1.98079819; b[0].pv[1][0] = 0.0030723249; b[0].pv[1][1] = -0.00406995477; b[0].pv[1][2] = -0.00181335842; b[1].bm = 0.00095435; b[1].dl = 3e-9; b[1].pv[0][0] = 0.738098796; b[1].pv[0][1] = 4.63658692; b[1].pv[0][2] = 1.9693136; b[1].pv[1][0] = -0.00755816922; b[1].pv[1][1] = 0.00126913722; b[1].pv[1][2] = 0.000727999001; b[2].bm = 1.0; b[2].dl = 6e-6; b[2].pv[0][0] = -0.000712174377; b[2].pv[0][1] = -0.00230478303; b[2].pv[0][2] = -0.00105865966; b[2].pv[1][0] = 6.29235213e-6; b[2].pv[1][1] = -3.30888387e-7; b[2].pv[1][2] = -2.96486623e-7; ob[0] = -0.974170437; ob[1] = -0.2115201; ob[2] = -0.0917583114; sc[0] = -0.763276255; sc[1] = -0.608633767; sc[2] = -0.216735543; iauLdn(n, b, ob, sc, sn); vvd(sn[0], -0.7632762579693333866, 1e-12, "iauLdn", "1", status); vvd(sn[1], -0.6086337636093002660, 1e-12, "iauLdn", "2", status); vvd(sn[2], -0.2167355420646328159, 1e-12, "iauLdn", "3", status); } static void t_ldsun(int *status) /* ** - - - - - - - - ** t _ l d s u n ** - - - - - - - - ** ** Test iauLdsun function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauLdsun, vvd ** ** This revision: 2013 October 2 */ { double p[3], e[3], em, p1[3]; p[0] = -0.763276255; p[1] = -0.608633767; p[2] = -0.216735543; e[0] = -0.973644023; e[1] = -0.20925523; e[2] = -0.0907169552; em = 0.999809214; iauLdsun(p, e, em, p1); vvd(p1[0], -0.7632762580731413169, 1e-12, "iauLdsun", "1", status); vvd(p1[1], -0.6086337635262647900, 1e-12, "iauLdsun", "2", status); vvd(p1[2], -0.2167355419322321302, 1e-12, "iauLdsun", "3", status); } static void t_num00a(int *status) /* ** - - - - - - - - - ** t _ n u m 0 0 a ** - - - - - - - - - ** ** Test iauNum00a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauNum00a, vvd ** ** This revision: 2013 August 7 */ { double rmatn[3][3]; iauNum00a(2400000.5, 53736.0, rmatn); vvd(rmatn[0][0], 0.9999999999536227949, 1e-12, "iauNum00a", "11", status); vvd(rmatn[0][1], 0.8836238544090873336e-5, 1e-12, "iauNum00a", "12", status); vvd(rmatn[0][2], 0.3830835237722400669e-5, 1e-12, "iauNum00a", "13", status); vvd(rmatn[1][0], -0.8836082880798569274e-5, 1e-12, "iauNum00a", "21", status); vvd(rmatn[1][1], 0.9999999991354655028, 1e-12, "iauNum00a", "22", status); vvd(rmatn[1][2], -0.4063240865362499850e-4, 1e-12, "iauNum00a", "23", status); vvd(rmatn[2][0], -0.3831194272065995866e-5, 1e-12, "iauNum00a", "31", status); vvd(rmatn[2][1], 0.4063237480216291775e-4, 1e-12, "iauNum00a", "32", status); vvd(rmatn[2][2], 0.9999999991671660338, 1e-12, "iauNum00a", "33", status); } static void t_num00b(int *status) /* ** - - - - - - - - - ** t _ n u m 0 0 b ** - - - - - - - - - ** ** Test iauNum00b function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauNum00b, vvd ** ** This revision: 2013 August 7 */ { double rmatn[3][3]; iauNum00b(2400000.5, 53736, rmatn); vvd(rmatn[0][0], 0.9999999999536069682, 1e-12, "iauNum00b", "11", status); vvd(rmatn[0][1], 0.8837746144871248011e-5, 1e-12, "iauNum00b", "12", status); vvd(rmatn[0][2], 0.3831488838252202945e-5, 1e-12, "iauNum00b", "13", status); vvd(rmatn[1][0], -0.8837590456632304720e-5, 1e-12, "iauNum00b", "21", status); vvd(rmatn[1][1], 0.9999999991354692733, 1e-12, "iauNum00b", "22", status); vvd(rmatn[1][2], -0.4063198798559591654e-4, 1e-12, "iauNum00b", "23", status); vvd(rmatn[2][0], -0.3831847930134941271e-5, 1e-12, "iauNum00b", "31", status); vvd(rmatn[2][1], 0.4063195412258168380e-4, 1e-12, "iauNum00b", "32", status); vvd(rmatn[2][2], 0.9999999991671806225, 1e-12, "iauNum00b", "33", status); } static void t_num06a(int *status) /* ** - - - - - - - - - ** t _ n u m 0 6 a ** - - - - - - - - - ** ** Test iauNum06a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauNum06a, vvd ** ** This revision: 2013 August 7 */ { double rmatn[3][3]; iauNum06a(2400000.5, 53736, rmatn); vvd(rmatn[0][0], 0.9999999999536227668, 1e-12, "iauNum06a", "11", status); vvd(rmatn[0][1], 0.8836241998111535233e-5, 1e-12, "iauNum06a", "12", status); vvd(rmatn[0][2], 0.3830834608415287707e-5, 1e-12, "iauNum06a", "13", status); vvd(rmatn[1][0], -0.8836086334870740138e-5, 1e-12, "iauNum06a", "21", status); vvd(rmatn[1][1], 0.9999999991354657474, 1e-12, "iauNum06a", "22", status); vvd(rmatn[1][2], -0.4063240188248455065e-4, 1e-12, "iauNum06a", "23", status); vvd(rmatn[2][0], -0.3831193642839398128e-5, 1e-12, "iauNum06a", "31", status); vvd(rmatn[2][1], 0.4063236803101479770e-4, 1e-12, "iauNum06a", "32", status); vvd(rmatn[2][2], 0.9999999991671663114, 1e-12, "iauNum06a", "33", status); } static void t_numat(int *status) /* ** - - - - - - - - ** t _ n u m a t ** - - - - - - - - ** ** Test iauNumat function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauNumat, vvd ** ** This revision: 2013 August 7 */ { double epsa, dpsi, deps, rmatn[3][3]; epsa = 0.4090789763356509900; dpsi = -0.9630909107115582393e-5; deps = 0.4063239174001678826e-4; iauNumat(epsa, dpsi, deps, rmatn); vvd(rmatn[0][0], 0.9999999999536227949, 1e-12, "iauNumat", "11", status); vvd(rmatn[0][1], 0.8836239320236250577e-5, 1e-12, "iauNumat", "12", status); vvd(rmatn[0][2], 0.3830833447458251908e-5, 1e-12, "iauNumat", "13", status); vvd(rmatn[1][0], -0.8836083657016688588e-5, 1e-12, "iauNumat", "21", status); vvd(rmatn[1][1], 0.9999999991354654959, 1e-12, "iauNumat", "22", status); vvd(rmatn[1][2], -0.4063240865361857698e-4, 1e-12, "iauNumat", "23", status); vvd(rmatn[2][0], -0.3831192481833385226e-5, 1e-12, "iauNumat", "31", status); vvd(rmatn[2][1], 0.4063237480216934159e-4, 1e-12, "iauNumat", "32", status); vvd(rmatn[2][2], 0.9999999991671660407, 1e-12, "iauNumat", "33", status); } static void t_nut00a(int *status) /* ** - - - - - - - - - ** t _ n u t 0 0 a ** - - - - - - - - - ** ** Test iauNut00a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauNut00a, vvd ** ** This revision: 2013 August 7 */ { double dpsi, deps; iauNut00a(2400000.5, 53736.0, &dpsi, &deps); vvd(dpsi, -0.9630909107115518431e-5, 1e-13, "iauNut00a", "dpsi", status); vvd(deps, 0.4063239174001678710e-4, 1e-13, "iauNut00a", "deps", status); } static void t_nut00b(int *status) /* ** - - - - - - - - - ** t _ n u t 0 0 b ** - - - - - - - - - ** ** Test iauNut00b function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauNut00b, vvd ** ** This revision: 2013 August 7 */ { double dpsi, deps; iauNut00b(2400000.5, 53736.0, &dpsi, &deps); vvd(dpsi, -0.9632552291148362783e-5, 1e-13, "iauNut00b", "dpsi", status); vvd(deps, 0.4063197106621159367e-4, 1e-13, "iauNut00b", "deps", status); } static void t_nut06a(int *status) /* ** - - - - - - - - - ** t _ n u t 0 6 a ** - - - - - - - - - ** ** Test iauNut06a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauNut06a, vvd ** ** This revision: 2013 August 7 */ { double dpsi, deps; iauNut06a(2400000.5, 53736.0, &dpsi, &deps); vvd(dpsi, -0.9630912025820308797e-5, 1e-13, "iauNut06a", "dpsi", status); vvd(deps, 0.4063238496887249798e-4, 1e-13, "iauNut06a", "deps", status); } static void t_nut80(int *status) /* ** - - - - - - - - ** t _ n u t 8 0 ** - - - - - - - - ** ** Test iauNut80 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauNut80, vvd ** ** This revision: 2013 August 7 */ { double dpsi, deps; iauNut80(2400000.5, 53736.0, &dpsi, &deps); vvd(dpsi, -0.9643658353226563966e-5, 1e-13, "iauNut80", "dpsi", status); vvd(deps, 0.4060051006879713322e-4, 1e-13, "iauNut80", "deps", status); } static void t_nutm80(int *status) /* ** - - - - - - - - - ** t _ n u t m 8 0 ** - - - - - - - - - ** ** Test iauNutm80 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauNutm80, vvd ** ** This revision: 2013 August 7 */ { double rmatn[3][3]; iauNutm80(2400000.5, 53736.0, rmatn); vvd(rmatn[0][0], 0.9999999999534999268, 1e-12, "iauNutm80", "11", status); vvd(rmatn[0][1], 0.8847935789636432161e-5, 1e-12, "iauNutm80", "12", status); vvd(rmatn[0][2], 0.3835906502164019142e-5, 1e-12, "iauNutm80", "13", status); vvd(rmatn[1][0], -0.8847780042583435924e-5, 1e-12, "iauNutm80", "21", status); vvd(rmatn[1][1], 0.9999999991366569963, 1e-12, "iauNutm80", "22", status); vvd(rmatn[1][2], -0.4060052702727130809e-4, 1e-12, "iauNutm80", "23", status); vvd(rmatn[2][0], -0.3836265729708478796e-5, 1e-12, "iauNutm80", "31", status); vvd(rmatn[2][1], 0.4060049308612638555e-4, 1e-12, "iauNutm80", "32", status); vvd(rmatn[2][2], 0.9999999991684415129, 1e-12, "iauNutm80", "33", status); } static void t_obl06(int *status) /* ** - - - - - - - - ** t _ o b l 0 6 ** - - - - - - - - ** ** Test iauObl06 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauObl06, vvd ** ** This revision: 2013 August 7 */ { vvd(iauObl06(2400000.5, 54388.0), 0.4090749229387258204, 1e-14, "iauObl06", "", status); } static void t_obl80(int *status) /* ** - - - - - - - - ** t _ o b l 8 0 ** - - - - - - - - ** ** Test iauObl80 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauObl80, vvd ** ** This revision: 2013 August 7 */ { double eps0; eps0 = iauObl80(2400000.5, 54388.0); vvd(eps0, 0.4090751347643816218, 1e-14, "iauObl80", "", status); } static void t_p06e(int *status) /* ** - - - - - - - ** t _ p 0 6 e ** - - - - - - - ** ** Test iauP06e function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauP06e, vvd ** ** This revision: 2013 August 7 */ { double eps0, psia, oma, bpa, bqa, pia, bpia, epsa, chia, za, zetaa, thetaa, pa, gam, phi, psi; iauP06e(2400000.5, 52541.0, &eps0, &psia, &oma, &bpa, &bqa, &pia, &bpia, &epsa, &chia, &za, &zetaa, &thetaa, &pa, &gam, &phi, &psi); vvd(eps0, 0.4090926006005828715, 1e-14, "iauP06e", "eps0", status); vvd(psia, 0.6664369630191613431e-3, 1e-14, "iauP06e", "psia", status); vvd(oma , 0.4090925973783255982, 1e-14, "iauP06e", "oma", status); vvd(bpa, 0.5561149371265209445e-6, 1e-14, "iauP06e", "bpa", status); vvd(bqa, -0.6191517193290621270e-5, 1e-14, "iauP06e", "bqa", status); vvd(pia, 0.6216441751884382923e-5, 1e-14, "iauP06e", "pia", status); vvd(bpia, 3.052014180023779882, 1e-14, "iauP06e", "bpia", status); vvd(epsa, 0.4090864054922431688, 1e-14, "iauP06e", "epsa", status); vvd(chia, 0.1387703379530915364e-5, 1e-14, "iauP06e", "chia", status); vvd(za, 0.2921789846651790546e-3, 1e-14, "iauP06e", "za", status); vvd(zetaa, 0.3178773290332009310e-3, 1e-14, "iauP06e", "zetaa", status); vvd(thetaa, 0.2650932701657497181e-3, 1e-14, "iauP06e", "thetaa", status); vvd(pa, 0.6651637681381016344e-3, 1e-14, "iauP06e", "pa", status); vvd(gam, 0.1398077115963754987e-5, 1e-14, "iauP06e", "gam", status); vvd(phi, 0.4090864090837462602, 1e-14, "iauP06e", "phi", status); vvd(psi, 0.6664464807480920325e-3, 1e-14, "iauP06e", "psi", status); } static void t_p2pv(int *status) /* ** - - - - - - - ** t _ p 2 p v ** - - - - - - - ** ** Test iauP2pv function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauP2pv, vvd ** ** This revision: 2013 August 7 */ { double p[3], pv[2][3]; p[0] = 0.25; p[1] = 1.2; p[2] = 3.0; pv[0][0] = 0.3; pv[0][1] = 1.2; pv[0][2] = -2.5; pv[1][0] = -0.5; pv[1][1] = 3.1; pv[1][2] = 0.9; iauP2pv(p, pv); vvd(pv[0][0], 0.25, 0.0, "iauP2pv", "p1", status); vvd(pv[0][1], 1.2, 0.0, "iauP2pv", "p2", status); vvd(pv[0][2], 3.0, 0.0, "iauP2pv", "p3", status); vvd(pv[1][0], 0.0, 0.0, "iauP2pv", "v1", status); vvd(pv[1][1], 0.0, 0.0, "iauP2pv", "v2", status); vvd(pv[1][2], 0.0, 0.0, "iauP2pv", "v3", status); } static void t_p2s(int *status) /* ** - - - - - - ** t _ p 2 s ** - - - - - - ** ** Test iauP2s function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauP2s, vvd ** ** This revision: 2013 August 7 */ { double p[3], theta, phi, r; p[0] = 100.0; p[1] = -50.0; p[2] = 25.0; iauP2s(p, &theta, &phi, &r); vvd(theta, -0.4636476090008061162, 1e-12, "iauP2s", "theta", status); vvd(phi, 0.2199879773954594463, 1e-12, "iauP2s", "phi", status); vvd(r, 114.5643923738960002, 1e-9, "iauP2s", "r", status); } static void t_pap(int *status) /* ** - - - - - - ** t _ p a p ** - - - - - - ** ** Test iauPap function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPap, vvd ** ** This revision: 2013 August 7 */ { double a[3], b[3], theta; a[0] = 1.0; a[1] = 0.1; a[2] = 0.2; b[0] = -3.0; b[1] = 1e-3; b[2] = 0.2; theta = iauPap(a, b); vvd(theta, 0.3671514267841113674, 1e-12, "iauPap", "", status); } static void t_pas(int *status) /* ** - - - - - - ** t _ p a s ** - - - - - - ** ** Test iauPas function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPas, vvd ** ** This revision: 2013 August 7 */ { double al, ap, bl, bp, theta; al = 1.0; ap = 0.1; bl = 0.2; bp = -1.0; theta = iauPas(al, ap, bl, bp); vvd(theta, -2.724544922932270424, 1e-12, "iauPas", "", status); } static void t_pb06(int *status) /* ** - - - - - - - ** t _ p b 0 6 ** - - - - - - - ** ** Test iauPb06 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPb06, vvd ** ** This revision: 2013 August 7 */ { double bzeta, bz, btheta; iauPb06(2400000.5, 50123.9999, &bzeta, &bz, &btheta); vvd(bzeta, -0.5092634016326478238e-3, 1e-12, "iauPb06", "bzeta", status); vvd(bz, -0.3602772060566044413e-3, 1e-12, "iauPb06", "bz", status); vvd(btheta, -0.3779735537167811177e-3, 1e-12, "iauPb06", "btheta", status); } static void t_pdp(int *status) /* ** - - - - - - ** t _ p d p ** - - - - - - ** ** Test iauPdp function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPdp, vvd ** ** This revision: 2013 August 7 */ { double a[3], b[3], adb; a[0] = 2.0; a[1] = 2.0; a[2] = 3.0; b[0] = 1.0; b[1] = 3.0; b[2] = 4.0; adb = iauPdp(a, b); vvd(adb, 20, 1e-12, "iauPdp", "", status); } static void t_pfw06(int *status) /* ** - - - - - - - - ** t _ p f w 0 6 ** - - - - - - - - ** ** Test iauPfw06 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPfw06, vvd ** ** This revision: 2013 August 7 */ { double gamb, phib, psib, epsa; iauPfw06(2400000.5, 50123.9999, &gamb, &phib, &psib, &epsa); vvd(gamb, -0.2243387670997995690e-5, 1e-16, "iauPfw06", "gamb", status); vvd(phib, 0.4091014602391312808, 1e-12, "iauPfw06", "phib", status); vvd(psib, -0.9501954178013031895e-3, 1e-14, "iauPfw06", "psib", status); vvd(epsa, 0.4091014316587367491, 1e-12, "iauPfw06", "epsa", status); } static void t_plan94(int *status) /* ** - - - - - - - - - ** t _ p l a n 9 4 ** - - - - - - - - - ** ** Test iauPlan94 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPlan94, vvd, viv ** ** This revision: 2013 October 2 */ { double pv[2][3]; int j; j = iauPlan94(2400000.5, 1e6, 0, pv); vvd(pv[0][0], 0.0, 0.0, "iauPlan94", "x 1", status); vvd(pv[0][1], 0.0, 0.0, "iauPlan94", "y 1", status); vvd(pv[0][2], 0.0, 0.0, "iauPlan94", "z 1", status); vvd(pv[1][0], 0.0, 0.0, "iauPlan94", "xd 1", status); vvd(pv[1][1], 0.0, 0.0, "iauPlan94", "yd 1", status); vvd(pv[1][2], 0.0, 0.0, "iauPlan94", "zd 1", status); viv(j, -1, "iauPlan94", "j 1", status); j = iauPlan94(2400000.5, 1e6, 10, pv); viv(j, -1, "iauPlan94", "j 2", status); j = iauPlan94(2400000.5, -320000, 3, pv); vvd(pv[0][0], 0.9308038666832975759, 1e-11, "iauPlan94", "x 3", status); vvd(pv[0][1], 0.3258319040261346000, 1e-11, "iauPlan94", "y 3", status); vvd(pv[0][2], 0.1422794544481140560, 1e-11, "iauPlan94", "z 3", status); vvd(pv[1][0], -0.6429458958255170006e-2, 1e-11, "iauPlan94", "xd 3", status); vvd(pv[1][1], 0.1468570657704237764e-1, 1e-11, "iauPlan94", "yd 3", status); vvd(pv[1][2], 0.6406996426270981189e-2, 1e-11, "iauPlan94", "zd 3", status); viv(j, 1, "iauPlan94", "j 3", status); j = iauPlan94(2400000.5, 43999.9, 1, pv); vvd(pv[0][0], 0.2945293959257430832, 1e-11, "iauPlan94", "x 4", status); vvd(pv[0][1], -0.2452204176601049596, 1e-11, "iauPlan94", "y 4", status); vvd(pv[0][2], -0.1615427700571978153, 1e-11, "iauPlan94", "z 4", status); vvd(pv[1][0], 0.1413867871404614441e-1, 1e-11, "iauPlan94", "xd 4", status); vvd(pv[1][1], 0.1946548301104706582e-1, 1e-11, "iauPlan94", "yd 4", status); vvd(pv[1][2], 0.8929809783898904786e-2, 1e-11, "iauPlan94", "zd 4", status); viv(j, 0, "iauPlan94", "j 4", status); } static void t_pmat00(int *status) /* ** - - - - - - - - - ** t _ p m a t 0 0 ** - - - - - - - - - ** ** Test iauPmat00 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPmat00, vvd ** ** This revision: 2013 August 7 */ { double rbp[3][3]; iauPmat00(2400000.5, 50123.9999, rbp); vvd(rbp[0][0], 0.9999995505175087260, 1e-12, "iauPmat00", "11", status); vvd(rbp[0][1], 0.8695405883617884705e-3, 1e-14, "iauPmat00", "12", status); vvd(rbp[0][2], 0.3779734722239007105e-3, 1e-14, "iauPmat00", "13", status); vvd(rbp[1][0], -0.8695405990410863719e-3, 1e-14, "iauPmat00", "21", status); vvd(rbp[1][1], 0.9999996219494925900, 1e-12, "iauPmat00", "22", status); vvd(rbp[1][2], -0.1360775820404982209e-6, 1e-14, "iauPmat00", "23", status); vvd(rbp[2][0], -0.3779734476558184991e-3, 1e-14, "iauPmat00", "31", status); vvd(rbp[2][1], -0.1925857585832024058e-6, 1e-14, "iauPmat00", "32", status); vvd(rbp[2][2], 0.9999999285680153377, 1e-12, "iauPmat00", "33", status); } static void t_pmat06(int *status) /* ** - - - - - - - - - ** t _ p m a t 0 6 ** - - - - - - - - - ** ** Test iauPmat06 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPmat06, vvd ** ** This revision: 2013 August 7 */ { double rbp[3][3]; iauPmat06(2400000.5, 50123.9999, rbp); vvd(rbp[0][0], 0.9999995505176007047, 1e-12, "iauPmat06", "11", status); vvd(rbp[0][1], 0.8695404617348208406e-3, 1e-14, "iauPmat06", "12", status); vvd(rbp[0][2], 0.3779735201865589104e-3, 1e-14, "iauPmat06", "13", status); vvd(rbp[1][0], -0.8695404723772031414e-3, 1e-14, "iauPmat06", "21", status); vvd(rbp[1][1], 0.9999996219496027161, 1e-12, "iauPmat06", "22", status); vvd(rbp[1][2], -0.1361752497080270143e-6, 1e-14, "iauPmat06", "23", status); vvd(rbp[2][0], -0.3779734957034089490e-3, 1e-14, "iauPmat06", "31", status); vvd(rbp[2][1], -0.1924880847894457113e-6, 1e-14, "iauPmat06", "32", status); vvd(rbp[2][2], 0.9999999285679971958, 1e-12, "iauPmat06", "33", status); } static void t_pmat76(int *status) /* ** - - - - - - - - - ** t _ p m a t 7 6 ** - - - - - - - - - ** ** Test iauPmat76 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPmat76, vvd ** ** This revision: 2013 August 7 */ { double rmatp[3][3]; iauPmat76(2400000.5, 50123.9999, rmatp); vvd(rmatp[0][0], 0.9999995504328350733, 1e-12, "iauPmat76", "11", status); vvd(rmatp[0][1], 0.8696632209480960785e-3, 1e-14, "iauPmat76", "12", status); vvd(rmatp[0][2], 0.3779153474959888345e-3, 1e-14, "iauPmat76", "13", status); vvd(rmatp[1][0], -0.8696632209485112192e-3, 1e-14, "iauPmat76", "21", status); vvd(rmatp[1][1], 0.9999996218428560614, 1e-12, "iauPmat76", "22", status); vvd(rmatp[1][2], -0.1643284776111886407e-6, 1e-14, "iauPmat76", "23", status); vvd(rmatp[2][0], -0.3779153474950335077e-3, 1e-14, "iauPmat76", "31", status); vvd(rmatp[2][1], -0.1643306746147366896e-6, 1e-14, "iauPmat76", "32", status); vvd(rmatp[2][2], 0.9999999285899790119, 1e-12, "iauPmat76", "33", status); } static void t_pm(int *status) /* ** - - - - - ** t _ p m ** - - - - - ** ** Test iauPm function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPm, vvd ** ** This revision: 2013 August 7 */ { double p[3], r; p[0] = 0.3; p[1] = 1.2; p[2] = -2.5; r = iauPm(p); vvd(r, 2.789265136196270604, 1e-12, "iauPm", "", status); } static void t_pmp(int *status) /* ** - - - - - - ** t _ p m p ** - - - - - - ** ** Test iauPmp function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPmp, vvd ** ** This revision: 2013 August 7 */ { double a[3], b[3], amb[3]; a[0] = 2.0; a[1] = 2.0; a[2] = 3.0; b[0] = 1.0; b[1] = 3.0; b[2] = 4.0; iauPmp(a, b, amb); vvd(amb[0], 1.0, 1e-12, "iauPmp", "0", status); vvd(amb[1], -1.0, 1e-12, "iauPmp", "1", status); vvd(amb[2], -1.0, 1e-12, "iauPmp", "2", status); } static void t_pmpx(int *status) /* ** - - - - - - - ** t _ p m p x ** - - - - - - - ** ** Test iauPmpx function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPmpx, vvd ** ** This revision: 2013 October 2 */ { double rc, dc, pr, pd, px, rv, pmt, pob[3], pco[3]; rc = 1.234; dc = 0.789; pr = 1e-5; pd = -2e-5; px = 1e-2; rv = 10.0; pmt = 8.75; pob[0] = 0.9; pob[1] = 0.4; pob[2] = 0.1; iauPmpx(rc, dc, pr, pd, px, rv, pmt, pob, pco); vvd(pco[0], 0.2328137623960308440, 1e-12, "iauPmpx", "1", status); vvd(pco[1], 0.6651097085397855317, 1e-12, "iauPmpx", "2", status); vvd(pco[2], 0.7095257765896359847, 1e-12, "iauPmpx", "3", status); } static void t_pmsafe(int *status) /* ** - - - - - - - - - ** t _ p m s a f e ** - - - - - - - - - ** ** Test iauPmsafe function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPmsafe, vvd, viv ** ** This revision: 2013 October 2 */ { int j; double ra1, dec1, pmr1, pmd1, px1, rv1, ep1a, ep1b, ep2a, ep2b, ra2, dec2, pmr2, pmd2, px2, rv2; ra1 = 1.234; dec1 = 0.789; pmr1 = 1e-5; pmd1 = -2e-5; px1 = 1e-2; rv1 = 10.0; ep1a = 2400000.5; ep1b = 48348.5625; ep2a = 2400000.5; ep2b = 51544.5; j = iauPmsafe(ra1, dec1, pmr1, pmd1, px1, rv1, ep1a, ep1b, ep2a, ep2b, &ra2, &dec2, &pmr2, &pmd2, &px2, &rv2); vvd(ra2, 1.234087484501017061, 1e-12, "iauPmsafe", "ra2", status); vvd(dec2, 0.7888249982450468574, 1e-12, "iauPmsafe", "dec2", status); vvd(pmr2, 0.9996457663586073988e-5, 1e-12, "iauPmsafe", "pmr2", status); vvd(pmd2, -0.2000040085106737816e-4, 1e-16, "iauPmsafe", "pmd2", status); vvd(px2, 0.9999997295356765185e-2, 1e-12, "iauPmsafe", "px2", status); vvd(rv2, 10.38468380113917014, 1e-10, "iauPmsafe", "rv2", status); viv ( j, 0, "iauPmsafe", "j", status); } static void t_pn(int *status) /* ** - - - - - ** t _ p n ** - - - - - ** ** Test iauPn function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPn, vvd ** ** This revision: 2013 August 7 */ { double p[3], r, u[3]; p[0] = 0.3; p[1] = 1.2; p[2] = -2.5; iauPn(p, &r, u); vvd(r, 2.789265136196270604, 1e-12, "iauPn", "r", status); vvd(u[0], 0.1075552109073112058, 1e-12, "iauPn", "u1", status); vvd(u[1], 0.4302208436292448232, 1e-12, "iauPn", "u2", status); vvd(u[2], -0.8962934242275933816, 1e-12, "iauPn", "u3", status); } static void t_pn00(int *status) /* ** - - - - - - - ** t _ p n 0 0 ** - - - - - - - ** ** Test iauPn00 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPn00, vvd ** ** This revision: 2013 August 7 */ { double dpsi, deps, epsa, rb[3][3], rp[3][3], rbp[3][3], rn[3][3], rbpn[3][3]; dpsi = -0.9632552291149335877e-5; deps = 0.4063197106621141414e-4; iauPn00(2400000.5, 53736.0, dpsi, deps, &epsa, rb, rp, rbp, rn, rbpn); vvd(epsa, 0.4090791789404229916, 1e-12, "iauPn00", "epsa", status); vvd(rb[0][0], 0.9999999999999942498, 1e-12, "iauPn00", "rb11", status); vvd(rb[0][1], -0.7078279744199196626e-7, 1e-18, "iauPn00", "rb12", status); vvd(rb[0][2], 0.8056217146976134152e-7, 1e-18, "iauPn00", "rb13", status); vvd(rb[1][0], 0.7078279477857337206e-7, 1e-18, "iauPn00", "rb21", status); vvd(rb[1][1], 0.9999999999999969484, 1e-12, "iauPn00", "rb22", status); vvd(rb[1][2], 0.3306041454222136517e-7, 1e-18, "iauPn00", "rb23", status); vvd(rb[2][0], -0.8056217380986972157e-7, 1e-18, "iauPn00", "rb31", status); vvd(rb[2][1], -0.3306040883980552500e-7, 1e-18, "iauPn00", "rb32", status); vvd(rb[2][2], 0.9999999999999962084, 1e-12, "iauPn00", "rb33", status); vvd(rp[0][0], 0.9999989300532289018, 1e-12, "iauPn00", "rp11", status); vvd(rp[0][1], -0.1341647226791824349e-2, 1e-14, "iauPn00", "rp12", status); vvd(rp[0][2], -0.5829880927190296547e-3, 1e-14, "iauPn00", "rp13", status); vvd(rp[1][0], 0.1341647231069759008e-2, 1e-14, "iauPn00", "rp21", status); vvd(rp[1][1], 0.9999990999908750433, 1e-12, "iauPn00", "rp22", status); vvd(rp[1][2], -0.3837444441583715468e-6, 1e-14, "iauPn00", "rp23", status); vvd(rp[2][0], 0.5829880828740957684e-3, 1e-14, "iauPn00", "rp31", status); vvd(rp[2][1], -0.3984203267708834759e-6, 1e-14, "iauPn00", "rp32", status); vvd(rp[2][2], 0.9999998300623538046, 1e-12, "iauPn00", "rp33", status); vvd(rbp[0][0], 0.9999989300052243993, 1e-12, "iauPn00", "rbp11", status); vvd(rbp[0][1], -0.1341717990239703727e-2, 1e-14, "iauPn00", "rbp12", status); vvd(rbp[0][2], -0.5829075749891684053e-3, 1e-14, "iauPn00", "rbp13", status); vvd(rbp[1][0], 0.1341718013831739992e-2, 1e-14, "iauPn00", "rbp21", status); vvd(rbp[1][1], 0.9999990998959191343, 1e-12, "iauPn00", "rbp22", status); vvd(rbp[1][2], -0.3505759733565421170e-6, 1e-14, "iauPn00", "rbp23", status); vvd(rbp[2][0], 0.5829075206857717883e-3, 1e-14, "iauPn00", "rbp31", status); vvd(rbp[2][1], -0.4315219955198608970e-6, 1e-14, "iauPn00", "rbp32", status); vvd(rbp[2][2], 0.9999998301093036269, 1e-12, "iauPn00", "rbp33", status); vvd(rn[0][0], 0.9999999999536069682, 1e-12, "iauPn00", "rn11", status); vvd(rn[0][1], 0.8837746144872140812e-5, 1e-16, "iauPn00", "rn12", status); vvd(rn[0][2], 0.3831488838252590008e-5, 1e-16, "iauPn00", "rn13", status); vvd(rn[1][0], -0.8837590456633197506e-5, 1e-16, "iauPn00", "rn21", status); vvd(rn[1][1], 0.9999999991354692733, 1e-12, "iauPn00", "rn22", status); vvd(rn[1][2], -0.4063198798559573702e-4, 1e-16, "iauPn00", "rn23", status); vvd(rn[2][0], -0.3831847930135328368e-5, 1e-16, "iauPn00", "rn31", status); vvd(rn[2][1], 0.4063195412258150427e-4, 1e-16, "iauPn00", "rn32", status); vvd(rn[2][2], 0.9999999991671806225, 1e-12, "iauPn00", "rn33", status); vvd(rbpn[0][0], 0.9999989440499982806, 1e-12, "iauPn00", "rbpn11", status); vvd(rbpn[0][1], -0.1332880253640848301e-2, 1e-14, "iauPn00", "rbpn12", status); vvd(rbpn[0][2], -0.5790760898731087295e-3, 1e-14, "iauPn00", "rbpn13", status); vvd(rbpn[1][0], 0.1332856746979948745e-2, 1e-14, "iauPn00", "rbpn21", status); vvd(rbpn[1][1], 0.9999991109064768883, 1e-12, "iauPn00", "rbpn22", status); vvd(rbpn[1][2], -0.4097740555723063806e-4, 1e-14, "iauPn00", "rbpn23", status); vvd(rbpn[2][0], 0.5791301929950205000e-3, 1e-14, "iauPn00", "rbpn31", status); vvd(rbpn[2][1], 0.4020553681373702931e-4, 1e-14, "iauPn00", "rbpn32", status); vvd(rbpn[2][2], 0.9999998314958529887, 1e-12, "iauPn00", "rbpn33", status); } static void t_pn00a(int *status) /* ** - - - - - - - - ** t _ p n 0 0 a ** - - - - - - - - ** ** Test iauPn00a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPn00a, vvd ** ** This revision: 2013 August 7 */ { double dpsi, deps, epsa, rb[3][3], rp[3][3], rbp[3][3], rn[3][3], rbpn[3][3]; iauPn00a(2400000.5, 53736.0, &dpsi, &deps, &epsa, rb, rp, rbp, rn, rbpn); vvd(dpsi, -0.9630909107115518431e-5, 1e-12, "iauPn00a", "dpsi", status); vvd(deps, 0.4063239174001678710e-4, 1e-12, "iauPn00a", "deps", status); vvd(epsa, 0.4090791789404229916, 1e-12, "iauPn00a", "epsa", status); vvd(rb[0][0], 0.9999999999999942498, 1e-12, "iauPn00a", "rb11", status); vvd(rb[0][1], -0.7078279744199196626e-7, 1e-16, "iauPn00a", "rb12", status); vvd(rb[0][2], 0.8056217146976134152e-7, 1e-16, "iauPn00a", "rb13", status); vvd(rb[1][0], 0.7078279477857337206e-7, 1e-16, "iauPn00a", "rb21", status); vvd(rb[1][1], 0.9999999999999969484, 1e-12, "iauPn00a", "rb22", status); vvd(rb[1][2], 0.3306041454222136517e-7, 1e-16, "iauPn00a", "rb23", status); vvd(rb[2][0], -0.8056217380986972157e-7, 1e-16, "iauPn00a", "rb31", status); vvd(rb[2][1], -0.3306040883980552500e-7, 1e-16, "iauPn00a", "rb32", status); vvd(rb[2][2], 0.9999999999999962084, 1e-12, "iauPn00a", "rb33", status); vvd(rp[0][0], 0.9999989300532289018, 1e-12, "iauPn00a", "rp11", status); vvd(rp[0][1], -0.1341647226791824349e-2, 1e-14, "iauPn00a", "rp12", status); vvd(rp[0][2], -0.5829880927190296547e-3, 1e-14, "iauPn00a", "rp13", status); vvd(rp[1][0], 0.1341647231069759008e-2, 1e-14, "iauPn00a", "rp21", status); vvd(rp[1][1], 0.9999990999908750433, 1e-12, "iauPn00a", "rp22", status); vvd(rp[1][2], -0.3837444441583715468e-6, 1e-14, "iauPn00a", "rp23", status); vvd(rp[2][0], 0.5829880828740957684e-3, 1e-14, "iauPn00a", "rp31", status); vvd(rp[2][1], -0.3984203267708834759e-6, 1e-14, "iauPn00a", "rp32", status); vvd(rp[2][2], 0.9999998300623538046, 1e-12, "iauPn00a", "rp33", status); vvd(rbp[0][0], 0.9999989300052243993, 1e-12, "iauPn00a", "rbp11", status); vvd(rbp[0][1], -0.1341717990239703727e-2, 1e-14, "iauPn00a", "rbp12", status); vvd(rbp[0][2], -0.5829075749891684053e-3, 1e-14, "iauPn00a", "rbp13", status); vvd(rbp[1][0], 0.1341718013831739992e-2, 1e-14, "iauPn00a", "rbp21", status); vvd(rbp[1][1], 0.9999990998959191343, 1e-12, "iauPn00a", "rbp22", status); vvd(rbp[1][2], -0.3505759733565421170e-6, 1e-14, "iauPn00a", "rbp23", status); vvd(rbp[2][0], 0.5829075206857717883e-3, 1e-14, "iauPn00a", "rbp31", status); vvd(rbp[2][1], -0.4315219955198608970e-6, 1e-14, "iauPn00a", "rbp32", status); vvd(rbp[2][2], 0.9999998301093036269, 1e-12, "iauPn00a", "rbp33", status); vvd(rn[0][0], 0.9999999999536227949, 1e-12, "iauPn00a", "rn11", status); vvd(rn[0][1], 0.8836238544090873336e-5, 1e-14, "iauPn00a", "rn12", status); vvd(rn[0][2], 0.3830835237722400669e-5, 1e-14, "iauPn00a", "rn13", status); vvd(rn[1][0], -0.8836082880798569274e-5, 1e-14, "iauPn00a", "rn21", status); vvd(rn[1][1], 0.9999999991354655028, 1e-12, "iauPn00a", "rn22", status); vvd(rn[1][2], -0.4063240865362499850e-4, 1e-14, "iauPn00a", "rn23", status); vvd(rn[2][0], -0.3831194272065995866e-5, 1e-14, "iauPn00a", "rn31", status); vvd(rn[2][1], 0.4063237480216291775e-4, 1e-14, "iauPn00a", "rn32", status); vvd(rn[2][2], 0.9999999991671660338, 1e-12, "iauPn00a", "rn33", status); vvd(rbpn[0][0], 0.9999989440476103435, 1e-12, "iauPn00a", "rbpn11", status); vvd(rbpn[0][1], -0.1332881761240011763e-2, 1e-14, "iauPn00a", "rbpn12", status); vvd(rbpn[0][2], -0.5790767434730085751e-3, 1e-14, "iauPn00a", "rbpn13", status); vvd(rbpn[1][0], 0.1332858254308954658e-2, 1e-14, "iauPn00a", "rbpn21", status); vvd(rbpn[1][1], 0.9999991109044505577, 1e-12, "iauPn00a", "rbpn22", status); vvd(rbpn[1][2], -0.4097782710396580452e-4, 1e-14, "iauPn00a", "rbpn23", status); vvd(rbpn[2][0], 0.5791308472168152904e-3, 1e-14, "iauPn00a", "rbpn31", status); vvd(rbpn[2][1], 0.4020595661591500259e-4, 1e-14, "iauPn00a", "rbpn32", status); vvd(rbpn[2][2], 0.9999998314954572304, 1e-12, "iauPn00a", "rbpn33", status); } static void t_pn00b(int *status) /* ** - - - - - - - - ** t _ p n 0 0 b ** - - - - - - - - ** ** Test iauPn00b function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPn00b, vvd ** ** This revision: 2013 August 7 */ { double dpsi, deps, epsa, rb[3][3], rp[3][3], rbp[3][3], rn[3][3], rbpn[3][3]; iauPn00b(2400000.5, 53736.0, &dpsi, &deps, &epsa, rb, rp, rbp, rn, rbpn); vvd(dpsi, -0.9632552291148362783e-5, 1e-12, "iauPn00b", "dpsi", status); vvd(deps, 0.4063197106621159367e-4, 1e-12, "iauPn00b", "deps", status); vvd(epsa, 0.4090791789404229916, 1e-12, "iauPn00b", "epsa", status); vvd(rb[0][0], 0.9999999999999942498, 1e-12, "iauPn00b", "rb11", status); vvd(rb[0][1], -0.7078279744199196626e-7, 1e-16, "iauPn00b", "rb12", status); vvd(rb[0][2], 0.8056217146976134152e-7, 1e-16, "iauPn00b", "rb13", status); vvd(rb[1][0], 0.7078279477857337206e-7, 1e-16, "iauPn00b", "rb21", status); vvd(rb[1][1], 0.9999999999999969484, 1e-12, "iauPn00b", "rb22", status); vvd(rb[1][2], 0.3306041454222136517e-7, 1e-16, "iauPn00b", "rb23", status); vvd(rb[2][0], -0.8056217380986972157e-7, 1e-16, "iauPn00b", "rb31", status); vvd(rb[2][1], -0.3306040883980552500e-7, 1e-16, "iauPn00b", "rb32", status); vvd(rb[2][2], 0.9999999999999962084, 1e-12, "iauPn00b", "rb33", status); vvd(rp[0][0], 0.9999989300532289018, 1e-12, "iauPn00b", "rp11", status); vvd(rp[0][1], -0.1341647226791824349e-2, 1e-14, "iauPn00b", "rp12", status); vvd(rp[0][2], -0.5829880927190296547e-3, 1e-14, "iauPn00b", "rp13", status); vvd(rp[1][0], 0.1341647231069759008e-2, 1e-14, "iauPn00b", "rp21", status); vvd(rp[1][1], 0.9999990999908750433, 1e-12, "iauPn00b", "rp22", status); vvd(rp[1][2], -0.3837444441583715468e-6, 1e-14, "iauPn00b", "rp23", status); vvd(rp[2][0], 0.5829880828740957684e-3, 1e-14, "iauPn00b", "rp31", status); vvd(rp[2][1], -0.3984203267708834759e-6, 1e-14, "iauPn00b", "rp32", status); vvd(rp[2][2], 0.9999998300623538046, 1e-12, "iauPn00b", "rp33", status); vvd(rbp[0][0], 0.9999989300052243993, 1e-12, "iauPn00b", "rbp11", status); vvd(rbp[0][1], -0.1341717990239703727e-2, 1e-14, "iauPn00b", "rbp12", status); vvd(rbp[0][2], -0.5829075749891684053e-3, 1e-14, "iauPn00b", "rbp13", status); vvd(rbp[1][0], 0.1341718013831739992e-2, 1e-14, "iauPn00b", "rbp21", status); vvd(rbp[1][1], 0.9999990998959191343, 1e-12, "iauPn00b", "rbp22", status); vvd(rbp[1][2], -0.3505759733565421170e-6, 1e-14, "iauPn00b", "rbp23", status); vvd(rbp[2][0], 0.5829075206857717883e-3, 1e-14, "iauPn00b", "rbp31", status); vvd(rbp[2][1], -0.4315219955198608970e-6, 1e-14, "iauPn00b", "rbp32", status); vvd(rbp[2][2], 0.9999998301093036269, 1e-12, "iauPn00b", "rbp33", status); vvd(rn[0][0], 0.9999999999536069682, 1e-12, "iauPn00b", "rn11", status); vvd(rn[0][1], 0.8837746144871248011e-5, 1e-14, "iauPn00b", "rn12", status); vvd(rn[0][2], 0.3831488838252202945e-5, 1e-14, "iauPn00b", "rn13", status); vvd(rn[1][0], -0.8837590456632304720e-5, 1e-14, "iauPn00b", "rn21", status); vvd(rn[1][1], 0.9999999991354692733, 1e-12, "iauPn00b", "rn22", status); vvd(rn[1][2], -0.4063198798559591654e-4, 1e-14, "iauPn00b", "rn23", status); vvd(rn[2][0], -0.3831847930134941271e-5, 1e-14, "iauPn00b", "rn31", status); vvd(rn[2][1], 0.4063195412258168380e-4, 1e-14, "iauPn00b", "rn32", status); vvd(rn[2][2], 0.9999999991671806225, 1e-12, "iauPn00b", "rn33", status); vvd(rbpn[0][0], 0.9999989440499982806, 1e-12, "iauPn00b", "rbpn11", status); vvd(rbpn[0][1], -0.1332880253640849194e-2, 1e-14, "iauPn00b", "rbpn12", status); vvd(rbpn[0][2], -0.5790760898731091166e-3, 1e-14, "iauPn00b", "rbpn13", status); vvd(rbpn[1][0], 0.1332856746979949638e-2, 1e-14, "iauPn00b", "rbpn21", status); vvd(rbpn[1][1], 0.9999991109064768883, 1e-12, "iauPn00b", "rbpn22", status); vvd(rbpn[1][2], -0.4097740555723081811e-4, 1e-14, "iauPn00b", "rbpn23", status); vvd(rbpn[2][0], 0.5791301929950208873e-3, 1e-14, "iauPn00b", "rbpn31", status); vvd(rbpn[2][1], 0.4020553681373720832e-4, 1e-14, "iauPn00b", "rbpn32", status); vvd(rbpn[2][2], 0.9999998314958529887, 1e-12, "iauPn00b", "rbpn33", status); } static void t_pn06a(int *status) /* ** - - - - - - - - ** t _ p n 0 6 a ** - - - - - - - - ** ** Test iauPn06a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPn06a, vvd ** ** This revision: 2013 August 7 */ { double dpsi, deps, epsa; double rb[3][3], rp[3][3], rbp[3][3], rn[3][3], rbpn[3][3]; iauPn06a(2400000.5, 53736.0, &dpsi, &deps, &epsa, rb, rp, rbp, rn, rbpn); vvd(dpsi, -0.9630912025820308797e-5, 1e-12, "iauPn06a", "dpsi", status); vvd(deps, 0.4063238496887249798e-4, 1e-12, "iauPn06a", "deps", status); vvd(epsa, 0.4090789763356509926, 1e-12, "iauPn06a", "epsa", status); vvd(rb[0][0], 0.9999999999999942497, 1e-12, "iauPn06a", "rb11", status); vvd(rb[0][1], -0.7078368960971557145e-7, 1e-14, "iauPn06a", "rb12", status); vvd(rb[0][2], 0.8056213977613185606e-7, 1e-14, "iauPn06a", "rb13", status); vvd(rb[1][0], 0.7078368694637674333e-7, 1e-14, "iauPn06a", "rb21", status); vvd(rb[1][1], 0.9999999999999969484, 1e-12, "iauPn06a", "rb22", status); vvd(rb[1][2], 0.3305943742989134124e-7, 1e-14, "iauPn06a", "rb23", status); vvd(rb[2][0], -0.8056214211620056792e-7, 1e-14, "iauPn06a", "rb31", status); vvd(rb[2][1], -0.3305943172740586950e-7, 1e-14, "iauPn06a", "rb32", status); vvd(rb[2][2], 0.9999999999999962084, 1e-12, "iauPn06a", "rb33", status); vvd(rp[0][0], 0.9999989300536854831, 1e-12, "iauPn06a", "rp11", status); vvd(rp[0][1], -0.1341646886204443795e-2, 1e-14, "iauPn06a", "rp12", status); vvd(rp[0][2], -0.5829880933488627759e-3, 1e-14, "iauPn06a", "rp13", status); vvd(rp[1][0], 0.1341646890569782183e-2, 1e-14, "iauPn06a", "rp21", status); vvd(rp[1][1], 0.9999990999913319321, 1e-12, "iauPn06a", "rp22", status); vvd(rp[1][2], -0.3835944216374477457e-6, 1e-14, "iauPn06a", "rp23", status); vvd(rp[2][0], 0.5829880833027867368e-3, 1e-14, "iauPn06a", "rp31", status); vvd(rp[2][1], -0.3985701514686976112e-6, 1e-14, "iauPn06a", "rp32", status); vvd(rp[2][2], 0.9999998300623534950, 1e-12, "iauPn06a", "rp33", status); vvd(rbp[0][0], 0.9999989300056797893, 1e-12, "iauPn06a", "rbp11", status); vvd(rbp[0][1], -0.1341717650545059598e-2, 1e-14, "iauPn06a", "rbp12", status); vvd(rbp[0][2], -0.5829075756493728856e-3, 1e-14, "iauPn06a", "rbp13", status); vvd(rbp[1][0], 0.1341717674223918101e-2, 1e-14, "iauPn06a", "rbp21", status); vvd(rbp[1][1], 0.9999990998963748448, 1e-12, "iauPn06a", "rbp22", status); vvd(rbp[1][2], -0.3504269280170069029e-6, 1e-14, "iauPn06a", "rbp23", status); vvd(rbp[2][0], 0.5829075211461454599e-3, 1e-14, "iauPn06a", "rbp31", status); vvd(rbp[2][1], -0.4316708436255949093e-6, 1e-14, "iauPn06a", "rbp32", status); vvd(rbp[2][2], 0.9999998301093032943, 1e-12, "iauPn06a", "rbp33", status); vvd(rn[0][0], 0.9999999999536227668, 1e-12, "iauPn06a", "rn11", status); vvd(rn[0][1], 0.8836241998111535233e-5, 1e-14, "iauPn06a", "rn12", status); vvd(rn[0][2], 0.3830834608415287707e-5, 1e-14, "iauPn06a", "rn13", status); vvd(rn[1][0], -0.8836086334870740138e-5, 1e-14, "iauPn06a", "rn21", status); vvd(rn[1][1], 0.9999999991354657474, 1e-12, "iauPn06a", "rn22", status); vvd(rn[1][2], -0.4063240188248455065e-4, 1e-14, "iauPn06a", "rn23", status); vvd(rn[2][0], -0.3831193642839398128e-5, 1e-14, "iauPn06a", "rn31", status); vvd(rn[2][1], 0.4063236803101479770e-4, 1e-14, "iauPn06a", "rn32", status); vvd(rn[2][2], 0.9999999991671663114, 1e-12, "iauPn06a", "rn33", status); vvd(rbpn[0][0], 0.9999989440480669738, 1e-12, "iauPn06a", "rbpn11", status); vvd(rbpn[0][1], -0.1332881418091915973e-2, 1e-14, "iauPn06a", "rbpn12", status); vvd(rbpn[0][2], -0.5790767447612042565e-3, 1e-14, "iauPn06a", "rbpn13", status); vvd(rbpn[1][0], 0.1332857911250989133e-2, 1e-14, "iauPn06a", "rbpn21", status); vvd(rbpn[1][1], 0.9999991109049141908, 1e-12, "iauPn06a", "rbpn22", status); vvd(rbpn[1][2], -0.4097767128546784878e-4, 1e-14, "iauPn06a", "rbpn23", status); vvd(rbpn[2][0], 0.5791308482835292617e-3, 1e-14, "iauPn06a", "rbpn31", status); vvd(rbpn[2][1], 0.4020580099454020310e-4, 1e-14, "iauPn06a", "rbpn32", status); vvd(rbpn[2][2], 0.9999998314954628695, 1e-12, "iauPn06a", "rbpn33", status); } static void t_pn06(int *status) /* ** - - - - - - - ** t _ p n 0 6 ** - - - - - - - ** ** Test iauPn06 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPn06, vvd ** ** This revision: 2013 August 7 */ { double dpsi, deps, epsa, rb[3][3], rp[3][3], rbp[3][3], rn[3][3], rbpn[3][3]; dpsi = -0.9632552291149335877e-5; deps = 0.4063197106621141414e-4; iauPn06(2400000.5, 53736.0, dpsi, deps, &epsa, rb, rp, rbp, rn, rbpn); vvd(epsa, 0.4090789763356509926, 1e-12, "iauPn06", "epsa", status); vvd(rb[0][0], 0.9999999999999942497, 1e-12, "iauPn06", "rb11", status); vvd(rb[0][1], -0.7078368960971557145e-7, 1e-14, "iauPn06", "rb12", status); vvd(rb[0][2], 0.8056213977613185606e-7, 1e-14, "iauPn06", "rb13", status); vvd(rb[1][0], 0.7078368694637674333e-7, 1e-14, "iauPn06", "rb21", status); vvd(rb[1][1], 0.9999999999999969484, 1e-12, "iauPn06", "rb22", status); vvd(rb[1][2], 0.3305943742989134124e-7, 1e-14, "iauPn06", "rb23", status); vvd(rb[2][0], -0.8056214211620056792e-7, 1e-14, "iauPn06", "rb31", status); vvd(rb[2][1], -0.3305943172740586950e-7, 1e-14, "iauPn06", "rb32", status); vvd(rb[2][2], 0.9999999999999962084, 1e-12, "iauPn06", "rb33", status); vvd(rp[0][0], 0.9999989300536854831, 1e-12, "iauPn06", "rp11", status); vvd(rp[0][1], -0.1341646886204443795e-2, 1e-14, "iauPn06", "rp12", status); vvd(rp[0][2], -0.5829880933488627759e-3, 1e-14, "iauPn06", "rp13", status); vvd(rp[1][0], 0.1341646890569782183e-2, 1e-14, "iauPn06", "rp21", status); vvd(rp[1][1], 0.9999990999913319321, 1e-12, "iauPn06", "rp22", status); vvd(rp[1][2], -0.3835944216374477457e-6, 1e-14, "iauPn06", "rp23", status); vvd(rp[2][0], 0.5829880833027867368e-3, 1e-14, "iauPn06", "rp31", status); vvd(rp[2][1], -0.3985701514686976112e-6, 1e-14, "iauPn06", "rp32", status); vvd(rp[2][2], 0.9999998300623534950, 1e-12, "iauPn06", "rp33", status); vvd(rbp[0][0], 0.9999989300056797893, 1e-12, "iauPn06", "rbp11", status); vvd(rbp[0][1], -0.1341717650545059598e-2, 1e-14, "iauPn06", "rbp12", status); vvd(rbp[0][2], -0.5829075756493728856e-3, 1e-14, "iauPn06", "rbp13", status); vvd(rbp[1][0], 0.1341717674223918101e-2, 1e-14, "iauPn06", "rbp21", status); vvd(rbp[1][1], 0.9999990998963748448, 1e-12, "iauPn06", "rbp22", status); vvd(rbp[1][2], -0.3504269280170069029e-6, 1e-14, "iauPn06", "rbp23", status); vvd(rbp[2][0], 0.5829075211461454599e-3, 1e-14, "iauPn06", "rbp31", status); vvd(rbp[2][1], -0.4316708436255949093e-6, 1e-14, "iauPn06", "rbp32", status); vvd(rbp[2][2], 0.9999998301093032943, 1e-12, "iauPn06", "rbp33", status); vvd(rn[0][0], 0.9999999999536069682, 1e-12, "iauPn06", "rn11", status); vvd(rn[0][1], 0.8837746921149881914e-5, 1e-14, "iauPn06", "rn12", status); vvd(rn[0][2], 0.3831487047682968703e-5, 1e-14, "iauPn06", "rn13", status); vvd(rn[1][0], -0.8837591232983692340e-5, 1e-14, "iauPn06", "rn21", status); vvd(rn[1][1], 0.9999999991354692664, 1e-12, "iauPn06", "rn22", status); vvd(rn[1][2], -0.4063198798558931215e-4, 1e-14, "iauPn06", "rn23", status); vvd(rn[2][0], -0.3831846139597250235e-5, 1e-14, "iauPn06", "rn31", status); vvd(rn[2][1], 0.4063195412258792914e-4, 1e-14, "iauPn06", "rn32", status); vvd(rn[2][2], 0.9999999991671806293, 1e-12, "iauPn06", "rn33", status); vvd(rbpn[0][0], 0.9999989440504506688, 1e-12, "iauPn06", "rbpn11", status); vvd(rbpn[0][1], -0.1332879913170492655e-2, 1e-14, "iauPn06", "rbpn12", status); vvd(rbpn[0][2], -0.5790760923225655753e-3, 1e-14, "iauPn06", "rbpn13", status); vvd(rbpn[1][0], 0.1332856406595754748e-2, 1e-14, "iauPn06", "rbpn21", status); vvd(rbpn[1][1], 0.9999991109069366795, 1e-12, "iauPn06", "rbpn22", status); vvd(rbpn[1][2], -0.4097725651142641812e-4, 1e-14, "iauPn06", "rbpn23", status); vvd(rbpn[2][0], 0.5791301952321296716e-3, 1e-14, "iauPn06", "rbpn31", status); vvd(rbpn[2][1], 0.4020538796195230577e-4, 1e-14, "iauPn06", "rbpn32", status); vvd(rbpn[2][2], 0.9999998314958576778, 1e-12, "iauPn06", "rbpn33", status); } static void t_pnm00a(int *status) /* ** - - - - - - - - - ** t _ p n m 0 0 a ** - - - - - - - - - ** ** Test iauPnm00a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPnm00a, vvd ** ** This revision: 2013 August 7 */ { double rbpn[3][3]; iauPnm00a(2400000.5, 50123.9999, rbpn); vvd(rbpn[0][0], 0.9999995832793134257, 1e-12, "iauPnm00a", "11", status); vvd(rbpn[0][1], 0.8372384254137809439e-3, 1e-14, "iauPnm00a", "12", status); vvd(rbpn[0][2], 0.3639684306407150645e-3, 1e-14, "iauPnm00a", "13", status); vvd(rbpn[1][0], -0.8372535226570394543e-3, 1e-14, "iauPnm00a", "21", status); vvd(rbpn[1][1], 0.9999996486491582471, 1e-12, "iauPnm00a", "22", status); vvd(rbpn[1][2], 0.4132915262664072381e-4, 1e-14, "iauPnm00a", "23", status); vvd(rbpn[2][0], -0.3639337004054317729e-3, 1e-14, "iauPnm00a", "31", status); vvd(rbpn[2][1], -0.4163386925461775873e-4, 1e-14, "iauPnm00a", "32", status); vvd(rbpn[2][2], 0.9999999329094390695, 1e-12, "iauPnm00a", "33", status); } static void t_pnm00b(int *status) /* ** - - - - - - - - - ** t _ p n m 0 0 b ** - - - - - - - - - ** ** Test iauPnm00b function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPnm00b, vvd ** ** This revision: 2013 August 7 */ { double rbpn[3][3]; iauPnm00b(2400000.5, 50123.9999, rbpn); vvd(rbpn[0][0], 0.9999995832776208280, 1e-12, "iauPnm00b", "11", status); vvd(rbpn[0][1], 0.8372401264429654837e-3, 1e-14, "iauPnm00b", "12", status); vvd(rbpn[0][2], 0.3639691681450271771e-3, 1e-14, "iauPnm00b", "13", status); vvd(rbpn[1][0], -0.8372552234147137424e-3, 1e-14, "iauPnm00b", "21", status); vvd(rbpn[1][1], 0.9999996486477686123, 1e-12, "iauPnm00b", "22", status); vvd(rbpn[1][2], 0.4132832190946052890e-4, 1e-14, "iauPnm00b", "23", status); vvd(rbpn[2][0], -0.3639344385341866407e-3, 1e-14, "iauPnm00b", "31", status); vvd(rbpn[2][1], -0.4163303977421522785e-4, 1e-14, "iauPnm00b", "32", status); vvd(rbpn[2][2], 0.9999999329092049734, 1e-12, "iauPnm00b", "33", status); } static void t_pnm06a(int *status) /* ** - - - - - - - - - ** t _ p n m 0 6 a ** - - - - - - - - - ** ** Test iauPnm06a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPnm06a, vvd ** ** This revision: 2013 August 7 */ { double rbpn[3][3]; iauPnm06a(2400000.5, 50123.9999, rbpn); vvd(rbpn[0][0], 0.9999995832794205484, 1e-12, "iauPnm06a", "11", status); vvd(rbpn[0][1], 0.8372382772630962111e-3, 1e-14, "iauPnm06a", "12", status); vvd(rbpn[0][2], 0.3639684771140623099e-3, 1e-14, "iauPnm06a", "13", status); vvd(rbpn[1][0], -0.8372533744743683605e-3, 1e-14, "iauPnm06a", "21", status); vvd(rbpn[1][1], 0.9999996486492861646, 1e-12, "iauPnm06a", "22", status); vvd(rbpn[1][2], 0.4132905944611019498e-4, 1e-14, "iauPnm06a", "23", status); vvd(rbpn[2][0], -0.3639337469629464969e-3, 1e-14, "iauPnm06a", "31", status); vvd(rbpn[2][1], -0.4163377605910663999e-4, 1e-14, "iauPnm06a", "32", status); vvd(rbpn[2][2], 0.9999999329094260057, 1e-12, "iauPnm06a", "33", status); } static void t_pnm80(int *status) /* ** - - - - - - - - ** t _ p n m 8 0 ** - - - - - - - - ** ** Test iauPnm80 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPnm80, vvd ** ** This revision: 2013 August 7 */ { double rmatpn[3][3]; iauPnm80(2400000.5, 50123.9999, rmatpn); vvd(rmatpn[0][0], 0.9999995831934611169, 1e-12, "iauPnm80", "11", status); vvd(rmatpn[0][1], 0.8373654045728124011e-3, 1e-14, "iauPnm80", "12", status); vvd(rmatpn[0][2], 0.3639121916933106191e-3, 1e-14, "iauPnm80", "13", status); vvd(rmatpn[1][0], -0.8373804896118301316e-3, 1e-14, "iauPnm80", "21", status); vvd(rmatpn[1][1], 0.9999996485439674092, 1e-12, "iauPnm80", "22", status); vvd(rmatpn[1][2], 0.4130202510421549752e-4, 1e-14, "iauPnm80", "23", status); vvd(rmatpn[2][0], -0.3638774789072144473e-3, 1e-14, "iauPnm80", "31", status); vvd(rmatpn[2][1], -0.4160674085851722359e-4, 1e-14, "iauPnm80", "32", status); vvd(rmatpn[2][2], 0.9999999329310274805, 1e-12, "iauPnm80", "33", status); } static void t_pom00(int *status) /* ** - - - - - - - - ** t _ p o m 0 0 ** - - - - - - - - ** ** Test iauPom00 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPom00, vvd ** ** This revision: 2013 August 7 */ { double xp, yp, sp, rpom[3][3]; xp = 2.55060238e-7; yp = 1.860359247e-6; sp = -0.1367174580728891460e-10; iauPom00(xp, yp, sp, rpom); vvd(rpom[0][0], 0.9999999999999674721, 1e-12, "iauPom00", "11", status); vvd(rpom[0][1], -0.1367174580728846989e-10, 1e-16, "iauPom00", "12", status); vvd(rpom[0][2], 0.2550602379999972345e-6, 1e-16, "iauPom00", "13", status); vvd(rpom[1][0], 0.1414624947957029801e-10, 1e-16, "iauPom00", "21", status); vvd(rpom[1][1], 0.9999999999982695317, 1e-12, "iauPom00", "22", status); vvd(rpom[1][2], -0.1860359246998866389e-5, 1e-16, "iauPom00", "23", status); vvd(rpom[2][0], -0.2550602379741215021e-6, 1e-16, "iauPom00", "31", status); vvd(rpom[2][1], 0.1860359247002414021e-5, 1e-16, "iauPom00", "32", status); vvd(rpom[2][2], 0.9999999999982370039, 1e-12, "iauPom00", "33", status); } static void t_ppp(int *status) /* ** - - - - - - ** t _ p p p ** - - - - - - ** ** Test iauPpp function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPpp, vvd ** ** This revision: 2013 August 7 */ { double a[3], b[3], apb[3]; a[0] = 2.0; a[1] = 2.0; a[2] = 3.0; b[0] = 1.0; b[1] = 3.0; b[2] = 4.0; iauPpp(a, b, apb); vvd(apb[0], 3.0, 1e-12, "iauPpp", "0", status); vvd(apb[1], 5.0, 1e-12, "iauPpp", "1", status); vvd(apb[2], 7.0, 1e-12, "iauPpp", "2", status); } static void t_ppsp(int *status) /* ** - - - - - - - ** t _ p p s p ** - - - - - - - ** ** Test iauPpsp function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPpsp, vvd ** ** This revision: 2013 August 7 */ { double a[3], s, b[3], apsb[3]; a[0] = 2.0; a[1] = 2.0; a[2] = 3.0; s = 5.0; b[0] = 1.0; b[1] = 3.0; b[2] = 4.0; iauPpsp(a, s, b, apsb); vvd(apsb[0], 7.0, 1e-12, "iauPpsp", "0", status); vvd(apsb[1], 17.0, 1e-12, "iauPpsp", "1", status); vvd(apsb[2], 23.0, 1e-12, "iauPpsp", "2", status); } static void t_pr00(int *status) /* ** - - - - - - - ** t _ p r 0 0 ** - - - - - - - ** ** Test iauPr00 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPr00, vvd ** ** This revision: 2013 August 7 */ { double dpsipr, depspr; iauPr00(2400000.5, 53736, &dpsipr, &depspr); vvd(dpsipr, -0.8716465172668347629e-7, 1e-22, "iauPr00", "dpsipr", status); vvd(depspr, -0.7342018386722813087e-8, 1e-22, "iauPr00", "depspr", status); } static void t_prec76(int *status) /* ** - - - - - - - - - ** t _ p r e c 7 6 ** - - - - - - - - - ** ** Test iauPrec76 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPrec76, vvd ** ** This revision: 2013 August 7 */ { double ep01, ep02, ep11, ep12, zeta, z, theta; ep01 = 2400000.5; ep02 = 33282.0; ep11 = 2400000.5; ep12 = 51544.0; iauPrec76(ep01, ep02, ep11, ep12, &zeta, &z, &theta); vvd(zeta, 0.5588961642000161243e-2, 1e-12, "iauPrec76", "zeta", status); vvd(z, 0.5589922365870680624e-2, 1e-12, "iauPrec76", "z", status); vvd(theta, 0.4858945471687296760e-2, 1e-12, "iauPrec76", "theta", status); } static void t_pv2p(int *status) /* ** - - - - - - - ** t _ p v 2 p ** - - - - - - - ** ** Test iauPv2p function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPv2p, vvd ** ** This revision: 2013 August 7 */ { double pv[2][3], p[3]; pv[0][0] = 0.3; pv[0][1] = 1.2; pv[0][2] = -2.5; pv[1][0] = -0.5; pv[1][1] = 3.1; pv[1][2] = 0.9; iauPv2p(pv, p); vvd(p[0], 0.3, 0.0, "iauPv2p", "1", status); vvd(p[1], 1.2, 0.0, "iauPv2p", "2", status); vvd(p[2], -2.5, 0.0, "iauPv2p", "3", status); } static void t_pv2s(int *status) /* ** - - - - - - - ** t _ p v 2 s ** - - - - - - - ** ** Test iauPv2s function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPv2s, vvd ** ** This revision: 2013 August 7 */ { double pv[2][3], theta, phi, r, td, pd, rd; pv[0][0] = -0.4514964673880165; pv[0][1] = 0.03093394277342585; pv[0][2] = 0.05594668105108779; pv[1][0] = 1.292270850663260e-5; pv[1][1] = 2.652814182060692e-6; pv[1][2] = 2.568431853930293e-6; iauPv2s(pv, &theta, &phi, &r, &td, &pd, &rd); vvd(theta, 3.073185307179586515, 1e-12, "iauPv2s", "theta", status); vvd(phi, 0.1229999999999999992, 1e-12, "iauPv2s", "phi", status); vvd(r, 0.4559999999999999757, 1e-12, "iauPv2s", "r", status); vvd(td, -0.7800000000000000364e-5, 1e-16, "iauPv2s", "td", status); vvd(pd, 0.9010000000000001639e-5, 1e-16, "iauPv2s", "pd", status); vvd(rd, -0.1229999999999999832e-4, 1e-16, "iauPv2s", "rd", status); } static void t_pvdpv(int *status) /* ** - - - - - - - - ** t _ p v d p v ** - - - - - - - - ** ** Test iauPvdpv function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPvdpv, vvd ** ** This revision: 2013 August 7 */ { double a[2][3], b[2][3], adb[2]; a[0][0] = 2.0; a[0][1] = 2.0; a[0][2] = 3.0; a[1][0] = 6.0; a[1][1] = 0.0; a[1][2] = 4.0; b[0][0] = 1.0; b[0][1] = 3.0; b[0][2] = 4.0; b[1][0] = 0.0; b[1][1] = 2.0; b[1][2] = 8.0; iauPvdpv(a, b, adb); vvd(adb[0], 20.0, 1e-12, "iauPvdpv", "1", status); vvd(adb[1], 50.0, 1e-12, "iauPvdpv", "2", status); } static void t_pvm(int *status) /* ** - - - - - - ** t _ p v m ** - - - - - - ** ** Test iauPvm function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPvm, vvd ** ** This revision: 2013 August 7 */ { double pv[2][3], r, s; pv[0][0] = 0.3; pv[0][1] = 1.2; pv[0][2] = -2.5; pv[1][0] = 0.45; pv[1][1] = -0.25; pv[1][2] = 1.1; iauPvm(pv, &r, &s); vvd(r, 2.789265136196270604, 1e-12, "iauPvm", "r", status); vvd(s, 1.214495780149111922, 1e-12, "iauPvm", "s", status); } static void t_pvmpv(int *status) /* ** - - - - - - - - ** t _ p v m p v ** - - - - - - - - ** ** Test iauPvmpv function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPvmpv, vvd ** ** This revision: 2013 August 7 */ { double a[2][3], b[2][3], amb[2][3]; a[0][0] = 2.0; a[0][1] = 2.0; a[0][2] = 3.0; a[1][0] = 5.0; a[1][1] = 6.0; a[1][2] = 3.0; b[0][0] = 1.0; b[0][1] = 3.0; b[0][2] = 4.0; b[1][0] = 3.0; b[1][1] = 2.0; b[1][2] = 1.0; iauPvmpv(a, b, amb); vvd(amb[0][0], 1.0, 1e-12, "iauPvmpv", "11", status); vvd(amb[0][1], -1.0, 1e-12, "iauPvmpv", "21", status); vvd(amb[0][2], -1.0, 1e-12, "iauPvmpv", "31", status); vvd(amb[1][0], 2.0, 1e-12, "iauPvmpv", "12", status); vvd(amb[1][1], 4.0, 1e-12, "iauPvmpv", "22", status); vvd(amb[1][2], 2.0, 1e-12, "iauPvmpv", "32", status); } static void t_pvppv(int *status) /* ** - - - - - - - - ** t _ p v p p v ** - - - - - - - - ** ** Test iauPvppv function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPvppv, vvd ** ** This revision: 2013 August 7 */ { double a[2][3], b[2][3], apb[2][3]; a[0][0] = 2.0; a[0][1] = 2.0; a[0][2] = 3.0; a[1][0] = 5.0; a[1][1] = 6.0; a[1][2] = 3.0; b[0][0] = 1.0; b[0][1] = 3.0; b[0][2] = 4.0; b[1][0] = 3.0; b[1][1] = 2.0; b[1][2] = 1.0; iauPvppv(a, b, apb); vvd(apb[0][0], 3.0, 1e-12, "iauPvppv", "p1", status); vvd(apb[0][1], 5.0, 1e-12, "iauPvppv", "p2", status); vvd(apb[0][2], 7.0, 1e-12, "iauPvppv", "p3", status); vvd(apb[1][0], 8.0, 1e-12, "iauPvppv", "v1", status); vvd(apb[1][1], 8.0, 1e-12, "iauPvppv", "v2", status); vvd(apb[1][2], 4.0, 1e-12, "iauPvppv", "v3", status); } static void t_pvstar(int *status) /* ** - - - - - - - - - ** t _ p v s t a r ** - - - - - - - - - ** ** Test iauPvstar function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPvstar, vvd, viv ** ** This revision: 2013 August 7 */ { double pv[2][3], ra, dec, pmr, pmd, px, rv; int j; pv[0][0] = 126668.5912743160601; pv[0][1] = 2136.792716839935195; pv[0][2] = -245251.2339876830091; pv[1][0] = -0.4051854035740712739e-2; pv[1][1] = -0.6253919754866173866e-2; pv[1][2] = 0.1189353719774107189e-1; j = iauPvstar(pv, &ra, &dec, &pmr, &pmd, &px, &rv); vvd(ra, 0.1686756e-1, 1e-12, "iauPvstar", "ra", status); vvd(dec, -1.093989828, 1e-12, "iauPvstar", "dec", status); vvd(pmr, -0.178323516e-4, 1e-16, "iauPvstar", "pmr", status); vvd(pmd, 0.2336024047e-5, 1e-16, "iauPvstar", "pmd", status); vvd(px, 0.74723, 1e-12, "iauPvstar", "px", status); vvd(rv, -21.6, 1e-11, "iauPvstar", "rv", status); viv(j, 0, "iauPvstar", "j", status); } static void t_pvtob(int *status) /* ** - - - - - - - - ** t _ p v t o b ** - - - - - - - - ** ** Test iauPvtob function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPvtob, vvd ** ** This revision: 2013 October 2 */ { double elong, phi, hm, xp, yp, sp, theta, pv[2][3]; elong = 2.0; phi = 0.5; hm = 3000.0; xp = 1e-6; yp = -0.5e-6; sp = 1e-8; theta = 5.0; iauPvtob(elong, phi, hm, xp, yp, sp, theta, pv); vvd(pv[0][0], 4225081.367071159207, 1e-5, "iauPvtob", "p(1)", status); vvd(pv[0][1], 3681943.215856198144, 1e-5, "iauPvtob", "p(2)", status); vvd(pv[0][2], 3041149.399241260785, 1e-5, "iauPvtob", "p(3)", status); vvd(pv[1][0], -268.4915389365998787, 1e-9, "iauPvtob", "v(1)", status); vvd(pv[1][1], 308.0977983288903123, 1e-9, "iauPvtob", "v(2)", status); vvd(pv[1][2], 0, 0, "iauPvtob", "v(3)", status); } static void t_pvu(int *status) /* ** - - - - - - ** t _ p v u ** - - - - - - ** ** Test iauPvu function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPvu, vvd ** ** This revision: 2013 August 7 */ { double pv[2][3], upv[2][3]; pv[0][0] = 126668.5912743160734; pv[0][1] = 2136.792716839935565; pv[0][2] = -245251.2339876830229; pv[1][0] = -0.4051854035740713039e-2; pv[1][1] = -0.6253919754866175788e-2; pv[1][2] = 0.1189353719774107615e-1; iauPvu(2920.0, pv, upv); vvd(upv[0][0], 126656.7598605317105, 1e-12, "iauPvu", "p1", status); vvd(upv[0][1], 2118.531271155726332, 1e-12, "iauPvu", "p2", status); vvd(upv[0][2], -245216.5048590656190, 1e-12, "iauPvu", "p3", status); vvd(upv[1][0], -0.4051854035740713039e-2, 1e-12, "iauPvu", "v1", status); vvd(upv[1][1], -0.6253919754866175788e-2, 1e-12, "iauPvu", "v2", status); vvd(upv[1][2], 0.1189353719774107615e-1, 1e-12, "iauPvu", "v3", status); } static void t_pvup(int *status) /* ** - - - - - - - ** t _ p v u p ** - - - - - - - ** ** Test iauPvup function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPvup, vvd ** ** This revision: 2013 August 7 */ { double pv[2][3], p[3]; pv[0][0] = 126668.5912743160734; pv[0][1] = 2136.792716839935565; pv[0][2] = -245251.2339876830229; pv[1][0] = -0.4051854035740713039e-2; pv[1][1] = -0.6253919754866175788e-2; pv[1][2] = 0.1189353719774107615e-1; iauPvup(2920.0, pv, p); vvd(p[0], 126656.7598605317105, 1e-12, "iauPvup", "1", status); vvd(p[1], 2118.531271155726332, 1e-12, "iauPvup", "2", status); vvd(p[2], -245216.5048590656190, 1e-12, "iauPvup", "3", status); } static void t_pvxpv(int *status) /* ** - - - - - - - - ** t _ p v x p v ** - - - - - - - - ** ** Test iauPvxpv function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPvxpv, vvd ** ** This revision: 2013 August 7 */ { double a[2][3], b[2][3], axb[2][3]; a[0][0] = 2.0; a[0][1] = 2.0; a[0][2] = 3.0; a[1][0] = 6.0; a[1][1] = 0.0; a[1][2] = 4.0; b[0][0] = 1.0; b[0][1] = 3.0; b[0][2] = 4.0; b[1][0] = 0.0; b[1][1] = 2.0; b[1][2] = 8.0; iauPvxpv(a, b, axb); vvd(axb[0][0], -1.0, 1e-12, "iauPvxpv", "p1", status); vvd(axb[0][1], -5.0, 1e-12, "iauPvxpv", "p2", status); vvd(axb[0][2], 4.0, 1e-12, "iauPvxpv", "p3", status); vvd(axb[1][0], -2.0, 1e-12, "iauPvxpv", "v1", status); vvd(axb[1][1], -36.0, 1e-12, "iauPvxpv", "v2", status); vvd(axb[1][2], 22.0, 1e-12, "iauPvxpv", "v3", status); } static void t_pxp(int *status) /* ** - - - - - - ** t _ p x p ** - - - - - - ** ** Test iauPxp function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauPxp, vvd ** ** This revision: 2013 August 7 */ { double a[3], b[3], axb[3]; a[0] = 2.0; a[1] = 2.0; a[2] = 3.0; b[0] = 1.0; b[1] = 3.0; b[2] = 4.0; iauPxp(a, b, axb); vvd(axb[0], -1.0, 1e-12, "iauPxp", "1", status); vvd(axb[1], -5.0, 1e-12, "iauPxp", "2", status); vvd(axb[2], 4.0, 1e-12, "iauPxp", "3", status); } static void t_refco(int *status) /* ** - - - - - - - - ** t _ r e f c o ** - - - - - - - - ** ** Test iauRefco function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauRefco, vvd ** ** This revision: 2013 October 2 */ { double phpa, tc, rh, wl, refa, refb; phpa = 800.0; tc = 10.0; rh = 0.9; wl = 0.4; iauRefco(phpa, tc, rh, wl, &refa, &refb); vvd(refa, 0.2264949956241415009e-3, 1e-15, "iauRefco", "refa", status); vvd(refb, -0.2598658261729343970e-6, 1e-18, "iauRefco", "refb", status); } static void t_rm2v(int *status) /* ** - - - - - - - ** t _ r m 2 v ** - - - - - - - ** ** Test iauRm2v function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauRm2v, vvd ** ** This revision: 2013 August 7 */ { double r[3][3], w[3]; r[0][0] = 0.00; r[0][1] = -0.80; r[0][2] = -0.60; r[1][0] = 0.80; r[1][1] = -0.36; r[1][2] = 0.48; r[2][0] = 0.60; r[2][1] = 0.48; r[2][2] = -0.64; iauRm2v(r, w); vvd(w[0], 0.0, 1e-12, "iauRm2v", "1", status); vvd(w[1], 1.413716694115406957, 1e-12, "iauRm2v", "2", status); vvd(w[2], -1.884955592153875943, 1e-12, "iauRm2v", "3", status); } static void t_rv2m(int *status) /* ** - - - - - - - ** t _ r v 2 m ** - - - - - - - ** ** Test iauRv2m function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauRv2m, vvd ** ** This revision: 2013 August 7 */ { double w[3], r[3][3]; w[0] = 0.0; w[1] = 1.41371669; w[2] = -1.88495559; iauRv2m(w, r); vvd(r[0][0], -0.7071067782221119905, 1e-14, "iauRv2m", "11", status); vvd(r[0][1], -0.5656854276809129651, 1e-14, "iauRv2m", "12", status); vvd(r[0][2], -0.4242640700104211225, 1e-14, "iauRv2m", "13", status); vvd(r[1][0], 0.5656854276809129651, 1e-14, "iauRv2m", "21", status); vvd(r[1][1], -0.0925483394532274246, 1e-14, "iauRv2m", "22", status); vvd(r[1][2], -0.8194112531408833269, 1e-14, "iauRv2m", "23", status); vvd(r[2][0], 0.4242640700104211225, 1e-14, "iauRv2m", "31", status); vvd(r[2][1], -0.8194112531408833269, 1e-14, "iauRv2m", "32", status); vvd(r[2][2], 0.3854415612311154341, 1e-14, "iauRv2m", "33", status); } static void t_rx(int *status) /* ** - - - - - ** t _ r x ** - - - - - ** ** Test iauRx function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauRx, vvd ** ** This revision: 2013 August 7 */ { double phi, r[3][3]; phi = 0.3456789; r[0][0] = 2.0; r[0][1] = 3.0; r[0][2] = 2.0; r[1][0] = 3.0; r[1][1] = 2.0; r[1][2] = 3.0; r[2][0] = 3.0; r[2][1] = 4.0; r[2][2] = 5.0; iauRx(phi, r); vvd(r[0][0], 2.0, 0.0, "iauRx", "11", status); vvd(r[0][1], 3.0, 0.0, "iauRx", "12", status); vvd(r[0][2], 2.0, 0.0, "iauRx", "13", status); vvd(r[1][0], 3.839043388235612460, 1e-12, "iauRx", "21", status); vvd(r[1][1], 3.237033249594111899, 1e-12, "iauRx", "22", status); vvd(r[1][2], 4.516714379005982719, 1e-12, "iauRx", "23", status); vvd(r[2][0], 1.806030415924501684, 1e-12, "iauRx", "31", status); vvd(r[2][1], 3.085711545336372503, 1e-12, "iauRx", "32", status); vvd(r[2][2], 3.687721683977873065, 1e-12, "iauRx", "33", status); } static void t_rxp(int *status) /* ** - - - - - - ** t _ r x p ** - - - - - - ** ** Test iauRxp function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauRxp, vvd ** ** This revision: 2013 August 7 */ { double r[3][3], p[3], rp[3]; r[0][0] = 2.0; r[0][1] = 3.0; r[0][2] = 2.0; r[1][0] = 3.0; r[1][1] = 2.0; r[1][2] = 3.0; r[2][0] = 3.0; r[2][1] = 4.0; r[2][2] = 5.0; p[0] = 0.2; p[1] = 1.5; p[2] = 0.1; iauRxp(r, p, rp); vvd(rp[0], 5.1, 1e-12, "iauRxp", "1", status); vvd(rp[1], 3.9, 1e-12, "iauRxp", "2", status); vvd(rp[2], 7.1, 1e-12, "iauRxp", "3", status); } static void t_rxpv(int *status) /* ** - - - - - - - ** t _ r x p v ** - - - - - - - ** ** Test iauRxpv function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauRxpv, vvd ** ** This revision: 2013 August 7 */ { double r[3][3], pv[2][3], rpv[2][3]; r[0][0] = 2.0; r[0][1] = 3.0; r[0][2] = 2.0; r[1][0] = 3.0; r[1][1] = 2.0; r[1][2] = 3.0; r[2][0] = 3.0; r[2][1] = 4.0; r[2][2] = 5.0; pv[0][0] = 0.2; pv[0][1] = 1.5; pv[0][2] = 0.1; pv[1][0] = 1.5; pv[1][1] = 0.2; pv[1][2] = 0.1; iauRxpv(r, pv, rpv); vvd(rpv[0][0], 5.1, 1e-12, "iauRxpv", "11", status); vvd(rpv[1][0], 3.8, 1e-12, "iauRxpv", "12", status); vvd(rpv[0][1], 3.9, 1e-12, "iauRxpv", "21", status); vvd(rpv[1][1], 5.2, 1e-12, "iauRxpv", "22", status); vvd(rpv[0][2], 7.1, 1e-12, "iauRxpv", "31", status); vvd(rpv[1][2], 5.8, 1e-12, "iauRxpv", "32", status); } static void t_rxr(int *status) /* ** - - - - - - ** t _ r x r ** - - - - - - ** ** Test iauRxr function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauRxr, vvd ** ** This revision: 2013 August 7 */ { double a[3][3], b[3][3], atb[3][3]; a[0][0] = 2.0; a[0][1] = 3.0; a[0][2] = 2.0; a[1][0] = 3.0; a[1][1] = 2.0; a[1][2] = 3.0; a[2][0] = 3.0; a[2][1] = 4.0; a[2][2] = 5.0; b[0][0] = 1.0; b[0][1] = 2.0; b[0][2] = 2.0; b[1][0] = 4.0; b[1][1] = 1.0; b[1][2] = 1.0; b[2][0] = 3.0; b[2][1] = 0.0; b[2][2] = 1.0; iauRxr(a, b, atb); vvd(atb[0][0], 20.0, 1e-12, "iauRxr", "11", status); vvd(atb[0][1], 7.0, 1e-12, "iauRxr", "12", status); vvd(atb[0][2], 9.0, 1e-12, "iauRxr", "13", status); vvd(atb[1][0], 20.0, 1e-12, "iauRxr", "21", status); vvd(atb[1][1], 8.0, 1e-12, "iauRxr", "22", status); vvd(atb[1][2], 11.0, 1e-12, "iauRxr", "23", status); vvd(atb[2][0], 34.0, 1e-12, "iauRxr", "31", status); vvd(atb[2][1], 10.0, 1e-12, "iauRxr", "32", status); vvd(atb[2][2], 15.0, 1e-12, "iauRxr", "33", status); } static void t_ry(int *status) /* ** - - - - - ** t _ r y ** - - - - - ** ** Test iauRy function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauRy, vvd ** ** This revision: 2013 August 7 */ { double theta, r[3][3]; theta = 0.3456789; r[0][0] = 2.0; r[0][1] = 3.0; r[0][2] = 2.0; r[1][0] = 3.0; r[1][1] = 2.0; r[1][2] = 3.0; r[2][0] = 3.0; r[2][1] = 4.0; r[2][2] = 5.0; iauRy(theta, r); vvd(r[0][0], 0.8651847818978159930, 1e-12, "iauRy", "11", status); vvd(r[0][1], 1.467194920539316554, 1e-12, "iauRy", "12", status); vvd(r[0][2], 0.1875137911274457342, 1e-12, "iauRy", "13", status); vvd(r[1][0], 3, 1e-12, "iauRy", "21", status); vvd(r[1][1], 2, 1e-12, "iauRy", "22", status); vvd(r[1][2], 3, 1e-12, "iauRy", "23", status); vvd(r[2][0], 3.500207892850427330, 1e-12, "iauRy", "31", status); vvd(r[2][1], 4.779889022262298150, 1e-12, "iauRy", "32", status); vvd(r[2][2], 5.381899160903798712, 1e-12, "iauRy", "33", status); } static void t_rz(int *status) /* ** - - - - - ** t _ r z ** - - - - - ** ** Test iauRz function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauRz, vvd ** ** This revision: 2013 August 7 */ { double psi, r[3][3]; psi = 0.3456789; r[0][0] = 2.0; r[0][1] = 3.0; r[0][2] = 2.0; r[1][0] = 3.0; r[1][1] = 2.0; r[1][2] = 3.0; r[2][0] = 3.0; r[2][1] = 4.0; r[2][2] = 5.0; iauRz(psi, r); vvd(r[0][0], 2.898197754208926769, 1e-12, "iauRz", "11", status); vvd(r[0][1], 3.500207892850427330, 1e-12, "iauRz", "12", status); vvd(r[0][2], 2.898197754208926769, 1e-12, "iauRz", "13", status); vvd(r[1][0], 2.144865911309686813, 1e-12, "iauRz", "21", status); vvd(r[1][1], 0.865184781897815993, 1e-12, "iauRz", "22", status); vvd(r[1][2], 2.144865911309686813, 1e-12, "iauRz", "23", status); vvd(r[2][0], 3.0, 1e-12, "iauRz", "31", status); vvd(r[2][1], 4.0, 1e-12, "iauRz", "32", status); vvd(r[2][2], 5.0, 1e-12, "iauRz", "33", status); } static void t_s00a(int *status) /* ** - - - - - - - ** t _ s 0 0 a ** - - - - - - - ** ** Test iauS00a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauS00a, vvd ** ** This revision: 2013 August 7 */ { double s; s = iauS00a(2400000.5, 52541.0); vvd(s, -0.1340684448919163584e-7, 1e-18, "iauS00a", "", status); } static void t_s00b(int *status) /* ** - - - - - - - ** t _ s 0 0 b ** - - - - - - - ** ** Test iauS00b function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauS00b, vvd ** ** This revision: 2013 August 7 */ { double s; s = iauS00b(2400000.5, 52541.0); vvd(s, -0.1340695782951026584e-7, 1e-18, "iauS00b", "", status); } static void t_s00(int *status) /* ** - - - - - - ** t _ s 0 0 ** - - - - - - ** ** Test iauS00 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauS00, vvd ** ** This revision: 2013 August 7 */ { double x, y, s; x = 0.5791308486706011000e-3; y = 0.4020579816732961219e-4; s = iauS00(2400000.5, 53736.0, x, y); vvd(s, -0.1220036263270905693e-7, 1e-18, "iauS00", "", status); } static void t_s06a(int *status) /* ** - - - - - - - ** t _ s 0 6 a ** - - - - - - - ** ** Test iauS06a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauS06a, vvd ** ** This revision: 2013 August 7 */ { double s; s = iauS06a(2400000.5, 52541.0); vvd(s, -0.1340680437291812383e-7, 1e-18, "iauS06a", "", status); } static void t_s06(int *status) /* ** - - - - - - ** t _ s 0 6 ** - - - - - - ** ** Test iauS06 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauS06, vvd ** ** This revision: 2013 August 7 */ { double x, y, s; x = 0.5791308486706011000e-3; y = 0.4020579816732961219e-4; s = iauS06(2400000.5, 53736.0, x, y); vvd(s, -0.1220032213076463117e-7, 1e-18, "iauS06", "", status); } static void t_s2c(int *status) /* ** - - - - - - ** t _ s 2 c ** - - - - - - ** ** Test iauS2c function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauS2c, vvd ** ** This revision: 2013 August 7 */ { double c[3]; iauS2c(3.0123, -0.999, c); vvd(c[0], -0.5366267667260523906, 1e-12, "iauS2c", "1", status); vvd(c[1], 0.0697711109765145365, 1e-12, "iauS2c", "2", status); vvd(c[2], -0.8409302618566214041, 1e-12, "iauS2c", "3", status); } static void t_s2p(int *status) /* ** - - - - - - ** t _ s 2 p ** - - - - - - ** ** Test iauS2p function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauS2p, vvd ** ** This revision: 2013 August 7 */ { double p[3]; iauS2p(-3.21, 0.123, 0.456, p); vvd(p[0], -0.4514964673880165228, 1e-12, "iauS2p", "x", status); vvd(p[1], 0.0309339427734258688, 1e-12, "iauS2p", "y", status); vvd(p[2], 0.0559466810510877933, 1e-12, "iauS2p", "z", status); } static void t_s2pv(int *status) /* ** - - - - - - - ** t _ s 2 p v ** - - - - - - - ** ** Test iauS2pv function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauS2pv, vvd ** ** This revision: 2013 August 7 */ { double pv[2][3]; iauS2pv(-3.21, 0.123, 0.456, -7.8e-6, 9.01e-6, -1.23e-5, pv); vvd(pv[0][0], -0.4514964673880165228, 1e-12, "iauS2pv", "x", status); vvd(pv[0][1], 0.0309339427734258688, 1e-12, "iauS2pv", "y", status); vvd(pv[0][2], 0.0559466810510877933, 1e-12, "iauS2pv", "z", status); vvd(pv[1][0], 0.1292270850663260170e-4, 1e-16, "iauS2pv", "vx", status); vvd(pv[1][1], 0.2652814182060691422e-5, 1e-16, "iauS2pv", "vy", status); vvd(pv[1][2], 0.2568431853930292259e-5, 1e-16, "iauS2pv", "vz", status); } static void t_s2xpv(int *status) /* ** - - - - - - - - ** t _ s 2 x p v ** - - - - - - - - ** ** Test iauS2xpv function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauS2xpv, vvd ** ** This revision: 2013 August 7 */ { double s1, s2, pv[2][3], spv[2][3]; s1 = 2.0; s2 = 3.0; pv[0][0] = 0.3; pv[0][1] = 1.2; pv[0][2] = -2.5; pv[1][0] = 0.5; pv[1][1] = 2.3; pv[1][2] = -0.4; iauS2xpv(s1, s2, pv, spv); vvd(spv[0][0], 0.6, 1e-12, "iauS2xpv", "p1", status); vvd(spv[0][1], 2.4, 1e-12, "iauS2xpv", "p2", status); vvd(spv[0][2], -5.0, 1e-12, "iauS2xpv", "p3", status); vvd(spv[1][0], 1.5, 1e-12, "iauS2xpv", "v1", status); vvd(spv[1][1], 6.9, 1e-12, "iauS2xpv", "v2", status); vvd(spv[1][2], -1.2, 1e-12, "iauS2xpv", "v3", status); } static void t_sepp(int *status) /* ** - - - - - - - ** t _ s e p p ** - - - - - - - ** ** Test iauSepp function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauSepp, vvd ** ** This revision: 2013 August 7 */ { double a[3], b[3], s; a[0] = 1.0; a[1] = 0.1; a[2] = 0.2; b[0] = -3.0; b[1] = 1e-3; b[2] = 0.2; s = iauSepp(a, b); vvd(s, 2.860391919024660768, 1e-12, "iauSepp", "", status); } static void t_seps(int *status) /* ** - - - - - - - ** t _ s e p s ** - - - - - - - ** ** Test iauSeps function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauSeps, vvd ** ** This revision: 2013 August 7 */ { double al, ap, bl, bp, s; al = 1.0; ap = 0.1; bl = 0.2; bp = -3.0; s = iauSeps(al, ap, bl, bp); vvd(s, 2.346722016996998842, 1e-14, "iauSeps", "", status); } static void t_sp00(int *status) /* ** - - - - - - - ** t _ s p 0 0 ** - - - - - - - ** ** Test iauSp00 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauSp00, vvd ** ** This revision: 2013 August 7 */ { vvd(iauSp00(2400000.5, 52541.0), -0.6216698469981019309e-11, 1e-12, "iauSp00", "", status); } static void t_starpm(int *status) /* ** - - - - - - - - - ** t _ s t a r p m ** - - - - - - - - - ** ** Test iauStarpm function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauStarpm, vvd, viv ** ** This revision: 2013 August 7 */ { double ra1, dec1, pmr1, pmd1, px1, rv1; double ra2, dec2, pmr2, pmd2, px2, rv2; int j; ra1 = 0.01686756; dec1 = -1.093989828; pmr1 = -1.78323516e-5; pmd1 = 2.336024047e-6; px1 = 0.74723; rv1 = -21.6; j = iauStarpm(ra1, dec1, pmr1, pmd1, px1, rv1, 2400000.5, 50083.0, 2400000.5, 53736.0, &ra2, &dec2, &pmr2, &pmd2, &px2, &rv2); vvd(ra2, 0.01668919069414242368, 1e-13, "iauStarpm", "ra", status); vvd(dec2, -1.093966454217127879, 1e-13, "iauStarpm", "dec", status); vvd(pmr2, -0.1783662682155932702e-4, 1e-17, "iauStarpm", "pmr", status); vvd(pmd2, 0.2338092915987603664e-5, 1e-17, "iauStarpm", "pmd", status); vvd(px2, 0.7473533835323493644, 1e-13, "iauStarpm", "px", status); vvd(rv2, -21.59905170476860786, 1e-11, "iauStarpm", "rv", status); viv(j, 0, "iauStarpm", "j", status); } static void t_starpv(int *status) /* ** - - - - - - - - - ** t _ s t a r p v ** - - - - - - - - - ** ** Test iauStarpv function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauStarpv, vvd, viv ** ** This revision: 2013 August 7 */ { double ra, dec, pmr, pmd, px, rv, pv[2][3]; int j; ra = 0.01686756; dec = -1.093989828; pmr = -1.78323516e-5; pmd = 2.336024047e-6; px = 0.74723; rv = -21.6; j = iauStarpv(ra, dec, pmr, pmd, px, rv, pv); vvd(pv[0][0], 126668.5912743160601, 1e-10, "iauStarpv", "11", status); vvd(pv[0][1], 2136.792716839935195, 1e-12, "iauStarpv", "12", status); vvd(pv[0][2], -245251.2339876830091, 1e-10, "iauStarpv", "13", status); vvd(pv[1][0], -0.4051854035740712739e-2, 1e-13, "iauStarpv", "21", status); vvd(pv[1][1], -0.6253919754866173866e-2, 1e-15, "iauStarpv", "22", status); vvd(pv[1][2], 0.1189353719774107189e-1, 1e-13, "iauStarpv", "23", status); viv(j, 0, "iauStarpv", "j", status); } static void t_sxp(int *status) /* ** - - - - - - ** t _ s x p ** - - - - - - ** ** Test iauSxp function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauSxp, vvd ** ** This revision: 2013 August 7 */ { double s, p[3], sp[3]; s = 2.0; p[0] = 0.3; p[1] = 1.2; p[2] = -2.5; iauSxp(s, p, sp); vvd(sp[0], 0.6, 0.0, "iauSxp", "1", status); vvd(sp[1], 2.4, 0.0, "iauSxp", "2", status); vvd(sp[2], -5.0, 0.0, "iauSxp", "3", status); } static void t_sxpv(int *status) /* ** - - - - - - - ** t _ s x p v ** - - - - - - - ** ** Test iauSxpv function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauSxpv, vvd ** ** This revision: 2013 August 7 */ { double s, pv[2][3], spv[2][3]; s = 2.0; pv[0][0] = 0.3; pv[0][1] = 1.2; pv[0][2] = -2.5; pv[1][0] = 0.5; pv[1][1] = 3.2; pv[1][2] = -0.7; iauSxpv(s, pv, spv); vvd(spv[0][0], 0.6, 0.0, "iauSxpv", "p1", status); vvd(spv[0][1], 2.4, 0.0, "iauSxpv", "p2", status); vvd(spv[0][2], -5.0, 0.0, "iauSxpv", "p3", status); vvd(spv[1][0], 1.0, 0.0, "iauSxpv", "v1", status); vvd(spv[1][1], 6.4, 0.0, "iauSxpv", "v2", status); vvd(spv[1][2], -1.4, 0.0, "iauSxpv", "v3", status); } static void t_taitt(int *status) /* ** - - - - - - - - ** t _ t a i t t ** - - - - - - - - ** ** Test iauTaitt function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauTaitt, vvd, viv ** ** This revision: 2013 August 7 */ { double t1, t2; int j; j = iauTaitt(2453750.5, 0.892482639, &t1, &t2); vvd(t1, 2453750.5, 1e-6, "iauTaitt", "t1", status); vvd(t2, 0.892855139, 1e-12, "iauTaitt", "t2", status); viv(j, 0, "iauTaitt", "j", status); } static void t_taiut1(int *status) /* ** - - - - - - - - - ** t _ t a i u t 1 ** - - - - - - - - - ** ** Test iauTaiut1 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauTaiut1, vvd, viv ** ** This revision: 2013 August 7 */ { double u1, u2; int j; j = iauTaiut1(2453750.5, 0.892482639, -32.6659, &u1, &u2); vvd(u1, 2453750.5, 1e-6, "iauTaiut1", "u1", status); vvd(u2, 0.8921045614537037037, 1e-12, "iauTaiut1", "u2", status); viv(j, 0, "iauTaiut1", "j", status); } static void t_taiutc(int *status) /* ** - - - - - - - - - ** t _ t a i u t c ** - - - - - - - - - ** ** Test iauTaiutc function. ** ** Returned: ** status LOGICAL TRUE = success, FALSE = fail ** ** Called: iauTaiutc, vvd, viv ** ** This revision: 2013 October 3 */ { double u1, u2; int j; j = iauTaiutc(2453750.5, 0.892482639, &u1, &u2); vvd(u1, 2453750.5, 1e-6, "iauTaiutc", "u1", status); vvd(u2, 0.8921006945555555556, 1e-12, "iauTaiutc", "u2", status); viv(j, 0, "iauTaiutc", "j", status); } static void t_tcbtdb(int *status) /* ** - - - - - - - - - ** t _ t c b t d b ** - - - - - - - - - ** ** Test iauTcbtdb function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauTcbtdb, vvd, viv ** ** This revision: 2013 August 7 */ { double b1, b2; int j; j = iauTcbtdb(2453750.5, 0.893019599, &b1, &b2); vvd(b1, 2453750.5, 1e-6, "iauTcbtdb", "b1", status); vvd(b2, 0.8928551362746343397, 1e-12, "iauTcbtdb", "b2", status); viv(j, 0, "iauTcbtdb", "j", status); } static void t_tcgtt(int *status) /* ** - - - - - - - - ** t _ t c g t t ** - - - - - - - - ** ** Test iauTcgtt function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauTcgtt, vvd, viv ** ** This revision: 2013 August 7 */ { double t1, t2; int j; j = iauTcgtt(2453750.5, 0.892862531, &t1, &t2); vvd(t1, 2453750.5, 1e-6, "iauTcgtt", "t1", status); vvd(t2, 0.8928551387488816828, 1e-12, "iauTcgtt", "t2", status); viv(j, 0, "iauTcgtt", "j", status); } static void t_tdbtcb(int *status) /* ** - - - - - - - - - ** t _ t d b t c b ** - - - - - - - - - ** ** Test iauTdbtcb function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauTdbtcb, vvd, viv ** ** This revision: 2013 August 7 */ { double b1, b2; int j; j = iauTdbtcb(2453750.5, 0.892855137, &b1, &b2); vvd( b1, 2453750.5, 1e-6, "iauTdbtcb", "b1", status); vvd( b2, 0.8930195997253656716, 1e-12, "iauTdbtcb", "b2", status); viv(j, 0, "iauTdbtcb", "j", status); } static void t_tdbtt(int *status) /* ** - - - - - - - - ** t _ t d b t t ** - - - - - - - - ** ** Test iauTdbtt function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauTdbtt, vvd, viv ** ** This revision: 2013 August 7 */ { double t1, t2; int j; j = iauTdbtt(2453750.5, 0.892855137, -0.000201, &t1, &t2); vvd(t1, 2453750.5, 1e-6, "iauTdbtt", "t1", status); vvd(t2, 0.8928551393263888889, 1e-12, "iauTdbtt", "t2", status); viv(j, 0, "iauTdbtt", "j", status); } static void t_tf2a(int *status) /* ** - - - - - - - ** t _ t f 2 a ** - - - - - - - ** ** Test iauTf2a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauTf2a, vvd, viv ** ** This revision: 2013 August 7 */ { double a; int j; j = iauTf2a('+', 4, 58, 20.2, &a); vvd(a, 1.301739278189537429, 1e-12, "iauTf2a", "a", status); viv(j, 0, "iauTf2a", "j", status); } static void t_tf2d(int *status) /* ** - - - - - - - ** t _ t f 2 d ** - - - - - - - ** ** Test iauTf2d function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauTf2d, vvd, viv ** ** This revision: 2013 August 7 */ { double d; int j; j = iauTf2d(' ', 23, 55, 10.9, &d); vvd(d, 0.9966539351851851852, 1e-12, "iauTf2d", "d", status); viv(j, 0, "iauTf2d", "j", status); } static void t_tr(int *status) /* ** - - - - - ** t _ t r ** - - - - - ** ** Test iauTr function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauTr, vvd ** ** This revision: 2013 August 7 */ { double r[3][3], rt[3][3]; r[0][0] = 2.0; r[0][1] = 3.0; r[0][2] = 2.0; r[1][0] = 3.0; r[1][1] = 2.0; r[1][2] = 3.0; r[2][0] = 3.0; r[2][1] = 4.0; r[2][2] = 5.0; iauTr(r, rt); vvd(rt[0][0], 2.0, 0.0, "iauTr", "11", status); vvd(rt[0][1], 3.0, 0.0, "iauTr", "12", status); vvd(rt[0][2], 3.0, 0.0, "iauTr", "13", status); vvd(rt[1][0], 3.0, 0.0, "iauTr", "21", status); vvd(rt[1][1], 2.0, 0.0, "iauTr", "22", status); vvd(rt[1][2], 4.0, 0.0, "iauTr", "23", status); vvd(rt[2][0], 2.0, 0.0, "iauTr", "31", status); vvd(rt[2][1], 3.0, 0.0, "iauTr", "32", status); vvd(rt[2][2], 5.0, 0.0, "iauTr", "33", status); } static void t_trxp(int *status) /* ** - - - - - - - ** t _ t r x p ** - - - - - - - ** ** Test iauTrxp function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauTrxp, vvd ** ** This revision: 2013 August 7 */ { double r[3][3], p[3], trp[3]; r[0][0] = 2.0; r[0][1] = 3.0; r[0][2] = 2.0; r[1][0] = 3.0; r[1][1] = 2.0; r[1][2] = 3.0; r[2][0] = 3.0; r[2][1] = 4.0; r[2][2] = 5.0; p[0] = 0.2; p[1] = 1.5; p[2] = 0.1; iauTrxp(r, p, trp); vvd(trp[0], 5.2, 1e-12, "iauTrxp", "1", status); vvd(trp[1], 4.0, 1e-12, "iauTrxp", "2", status); vvd(trp[2], 5.4, 1e-12, "iauTrxp", "3", status); } static void t_trxpv(int *status) /* ** - - - - - - - - ** t _ t r x p v ** - - - - - - - - ** ** Test iauTrxpv function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauTrxpv, vvd ** ** This revision: 2013 August 7 */ { double r[3][3], pv[2][3], trpv[2][3]; r[0][0] = 2.0; r[0][1] = 3.0; r[0][2] = 2.0; r[1][0] = 3.0; r[1][1] = 2.0; r[1][2] = 3.0; r[2][0] = 3.0; r[2][1] = 4.0; r[2][2] = 5.0; pv[0][0] = 0.2; pv[0][1] = 1.5; pv[0][2] = 0.1; pv[1][0] = 1.5; pv[1][1] = 0.2; pv[1][2] = 0.1; iauTrxpv(r, pv, trpv); vvd(trpv[0][0], 5.2, 1e-12, "iauTrxpv", "p1", status); vvd(trpv[0][1], 4.0, 1e-12, "iauTrxpv", "p1", status); vvd(trpv[0][2], 5.4, 1e-12, "iauTrxpv", "p1", status); vvd(trpv[1][0], 3.9, 1e-12, "iauTrxpv", "v1", status); vvd(trpv[1][1], 5.3, 1e-12, "iauTrxpv", "v2", status); vvd(trpv[1][2], 4.1, 1e-12, "iauTrxpv", "v3", status); } static void t_tttai(int *status) /* ** - - - - - - - - ** t _ t t t a i ** - - - - - - - - ** ** Test iauTttai function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauTttai, vvd, viv ** ** This revision: 2013 August 7 */ { double a1, a2; int j; j = iauTttai(2453750.5, 0.892482639, &a1, &a2); vvd(a1, 2453750.5, 1e-6, "iauTttai", "a1", status); vvd(a2, 0.892110139, 1e-12, "iauTttai", "a2", status); viv(j, 0, "iauTttai", "j", status); } static void t_tttcg(int *status) /* ** - - - - - - - - ** t _ t t t c g ** - - - - - - - - ** ** Test iauTttcg function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauTttcg, vvd, viv ** ** This revision: 2013 August 7 */ { double g1, g2; int j; j = iauTttcg(2453750.5, 0.892482639, &g1, &g2); vvd( g1, 2453750.5, 1e-6, "iauTttcg", "g1", status); vvd( g2, 0.8924900312508587113, 1e-12, "iauTttcg", "g2", status); viv(j, 0, "iauTttcg", "j", status); } static void t_tttdb(int *status) /* ** - - - - - - - - ** t _ t t t d b ** - - - - - - - - ** ** Test iauTttdb function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauTttdb, vvd, viv ** ** This revision: 2013 August 7 */ { double b1, b2; int j; j = iauTttdb(2453750.5, 0.892855139, -0.000201, &b1, &b2); vvd(b1, 2453750.5, 1e-6, "iauTttdb", "b1", status); vvd(b2, 0.8928551366736111111, 1e-12, "iauTttdb", "b2", status); viv(j, 0, "iauTttdb", "j", status); } static void t_ttut1(int *status) /* ** - - - - - - - - ** t _ t t u t 1 ** - - - - - - - - ** ** Test iauTtut1 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauTtut1, vvd, viv ** ** This revision: 2013 August 7 */ { double u1, u2; int j; j = iauTtut1(2453750.5, 0.892855139, 64.8499, &u1, &u2); vvd(u1, 2453750.5, 1e-6, "iauTtut1", "u1", status); vvd(u2, 0.8921045614537037037, 1e-12, "iauTtut1", "u2", status); viv(j, 0, "iauTtut1", "j", status); } static void t_ut1tai(int *status) /* ** - - - - - - - - - ** t _ u t 1 t a i ** - - - - - - - - - ** ** Test iauUt1tai function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauUt1tai, vvd, viv ** ** This revision: 2013 August 7 */ { double a1, a2; int j; j = iauUt1tai(2453750.5, 0.892104561, -32.6659, &a1, &a2); vvd(a1, 2453750.5, 1e-6, "iauUt1tai", "a1", status); vvd(a2, 0.8924826385462962963, 1e-12, "iauUt1tai", "a2", status); viv(j, 0, "iauUt1tai", "j", status); } static void t_ut1tt(int *status) /* ** - - - - - - - - ** t _ u t 1 t t ** - - - - - - - - ** ** Test iauUt1tt function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauUt1tt, vvd, viv ** ** This revision: 2013 October 3 */ { double t1, t2; int j; j = iauUt1tt(2453750.5, 0.892104561, 64.8499, &t1, &t2); vvd(t1, 2453750.5, 1e-6, "iauUt1tt", "t1", status); vvd(t2, 0.8928551385462962963, 1e-12, "iauUt1tt", "t2", status); viv(j, 0, "iauUt1tt", "j", status); } static void t_ut1utc(int *status) /* ** - - - - - - - - - ** t _ u t 1 u t c ** - - - - - - - - - ** ** Test iauUt1utc function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauUt1utc, vvd, viv ** ** This revision: 2013 August 7 */ { double u1, u2; int j; j = iauUt1utc(2453750.5, 0.892104561, 0.3341, &u1, &u2); vvd(u1, 2453750.5, 1e-6, "iauUt1utc", "u1", status); vvd(u2, 0.8921006941018518519, 1e-12, "iauUt1utc", "u2", status); viv(j, 0, "iauUt1utc", "j", status); } static void t_utctai(int *status) /* ** - - - - - - - - - ** t _ u t c t a i ** - - - - - - - - - ** ** Test iauUtctai function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauUtctai, vvd, viv ** ** This revision: 2013 August 7 */ { double u1, u2; int j; j = iauUtctai(2453750.5, 0.892100694, &u1, &u2); vvd(u1, 2453750.5, 1e-6, "iauUtctai", "u1", status); vvd(u2, 0.8924826384444444444, 1e-12, "iauUtctai", "u2", status); viv(j, 0, "iauUtctai", "j", status); } static void t_utcut1(int *status) /* ** - - - - - - - - - ** t _ u t c u t 1 ** - - - - - - - - - ** ** Test iauUtcut1 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauUtcut1, vvd, viv ** ** This revision: 2013 August 7 */ { double u1, u2; int j; j = iauUtcut1(2453750.5, 0.892100694, 0.3341, &u1, &u2); vvd(u1, 2453750.5, 1e-6, "iauUtcut1", "u1", status); vvd(u2, 0.8921045608981481481, 1e-12, "iauUtcut1", "u2", status); viv(j, 0, "iauUtcut1", "j", status); } static void t_xy06(int *status) /* ** - - - - - - - ** t _ x y 0 6 ** - - - - - - - ** ** Test iauXy06 function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauXy06, vvd ** ** This revision: 2013 August 7 */ { double x, y; iauXy06(2400000.5, 53736.0, &x, &y); vvd(x, 0.5791308486706010975e-3, 1e-15, "iauXy06", "x", status); vvd(y, 0.4020579816732958141e-4, 1e-16, "iauXy06", "y", status); } static void t_xys00a(int *status) /* ** - - - - - - - - - ** t _ x y s 0 0 a ** - - - - - - - - - ** ** Test iauXys00a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauXys00a, vvd ** ** This revision: 2013 August 7 */ { double x, y, s; iauXys00a(2400000.5, 53736.0, &x, &y, &s); vvd(x, 0.5791308472168152904e-3, 1e-14, "iauXys00a", "x", status); vvd(y, 0.4020595661591500259e-4, 1e-15, "iauXys00a", "y", status); vvd(s, -0.1220040848471549623e-7, 1e-18, "iauXys00a", "s", status); } static void t_xys00b(int *status) /* ** - - - - - - - - - ** t _ x y s 0 0 b ** - - - - - - - - - ** ** Test iauXys00b function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauXys00b, vvd ** ** This revision: 2013 August 7 */ { double x, y, s; iauXys00b(2400000.5, 53736.0, &x, &y, &s); vvd(x, 0.5791301929950208873e-3, 1e-14, "iauXys00b", "x", status); vvd(y, 0.4020553681373720832e-4, 1e-15, "iauXys00b", "y", status); vvd(s, -0.1220027377285083189e-7, 1e-18, "iauXys00b", "s", status); } static void t_xys06a(int *status) /* ** - - - - - - - - - ** t _ x y s 0 6 a ** - - - - - - - - - ** ** Test iauXys06a function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauXys06a, vvd ** ** This revision: 2013 August 7 */ { double x, y, s; iauXys06a(2400000.5, 53736.0, &x, &y, &s); vvd(x, 0.5791308482835292617e-3, 1e-14, "iauXys06a", "x", status); vvd(y, 0.4020580099454020310e-4, 1e-15, "iauXys06a", "y", status); vvd(s, -0.1220032294164579896e-7, 1e-18, "iauXys06a", "s", status); } static void t_zp(int *status) /* ** - - - - - ** t _ z p ** - - - - - ** ** Test iauZp function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauZp, vvd ** ** This revision: 2013 August 7 */ { double p[3]; p[0] = 0.3; p[1] = 1.2; p[2] = -2.5; iauZp(p); vvd(p[0], 0.0, 0.0, "iauZp", "1", status); vvd(p[1], 0.0, 0.0, "iauZp", "2", status); vvd(p[2], 0.0, 0.0, "iauZp", "3", status); } static void t_zpv(int *status) /* ** - - - - - - ** t _ z p v ** - - - - - - ** ** Test iauZpv function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauZpv, vvd ** ** This revision: 2013 August 7 */ { double pv[2][3]; pv[0][0] = 0.3; pv[0][1] = 1.2; pv[0][2] = -2.5; pv[1][0] = -0.5; pv[1][1] = 3.1; pv[1][2] = 0.9; iauZpv(pv); vvd(pv[0][0], 0.0, 0.0, "iauZpv", "p1", status); vvd(pv[0][1], 0.0, 0.0, "iauZpv", "p2", status); vvd(pv[0][2], 0.0, 0.0, "iauZpv", "p3", status); vvd(pv[1][0], 0.0, 0.0, "iauZpv", "v1", status); vvd(pv[1][1], 0.0, 0.0, "iauZpv", "v2", status); vvd(pv[1][2], 0.0, 0.0, "iauZpv", "v3", status); } static void t_zr(int *status) /* ** - - - - - ** t _ z r ** - - - - - ** ** Test iauZr function. ** ** Returned: ** status int FALSE = success, TRUE = fail ** ** Called: iauZr, vvd ** ** This revision: 2013 August 7 */ { double r[3][3]; r[0][0] = 2.0; r[1][0] = 3.0; r[2][0] = 2.0; r[0][1] = 3.0; r[1][1] = 2.0; r[2][1] = 3.0; r[0][2] = 3.0; r[1][2] = 4.0; r[2][2] = 5.0; iauZr(r); vvd(r[0][0], 0.0, 0.0, "iauZr", "00", status); vvd(r[1][0], 0.0, 0.0, "iauZr", "01", status); vvd(r[2][0], 0.0, 0.0, "iauZr", "02", status); vvd(r[0][1], 0.0, 0.0, "iauZr", "10", status); vvd(r[1][1], 0.0, 0.0, "iauZr", "11", status); vvd(r[2][1], 0.0, 0.0, "iauZr", "12", status); vvd(r[0][2], 0.0, 0.0, "iauZr", "20", status); vvd(r[1][2], 0.0, 0.0, "iauZr", "21", status); vvd(r[2][2], 0.0, 0.0, "iauZr", "22", status); } int main(int argc, char *argv[]) /* ** - - - - - ** m a i n ** - - - - - ** ** This revision: 2013 October 3 */ { int status; /* If any command-line argument, switch to verbose reporting. */ if (argc > 1) { verbose = 1; argv[0][0] += 0; /* to avoid compiler warnings */ } /* Preset the &status to FALSE = success. */ status = 0; /* Test all of the SOFA functions. */ t_a2af(&status); t_a2tf(&status); t_ab(&status); t_af2a(&status); t_anp(&status); t_anpm(&status); t_apcg(&status); t_apcg13(&status); t_apci(&status); t_apci13(&status); t_apco(&status); t_apco13(&status); t_apcs(&status); t_apcs13(&status); t_aper(&status); t_aper13(&status); t_apio(&status); t_apio13(&status); t_atci13(&status); t_atciq(&status); t_atciqn(&status); t_atciqz(&status); t_atco13(&status); t_atic13(&status); t_aticq(&status); t_aticqn(&status); t_atio13(&status); t_atioq(&status); t_atoc13(&status); t_atoi13(&status); t_atoiq(&status); t_bi00(&status); t_bp00(&status); t_bp06(&status); t_bpn2xy(&status); t_c2i00a(&status); t_c2i00b(&status); t_c2i06a(&status); t_c2ibpn(&status); t_c2ixy(&status); t_c2ixys(&status); t_c2s(&status); t_c2t00a(&status); t_c2t00b(&status); t_c2t06a(&status); t_c2tcio(&status); t_c2teqx(&status); t_c2tpe(&status); t_c2txy(&status); t_cal2jd(&status); t_cp(&status); t_cpv(&status); t_cr(&status); t_d2dtf(&status); t_d2tf(&status); t_dat(&status); t_dtdb(&status); t_dtf2d(&status); t_ee00(&status); t_ee00a(&status); t_ee00b(&status); t_ee06a(&status); t_eect00(&status); t_eform(&status); t_eo06a(&status); t_eors(&status); t_epb(&status); t_epb2jd(&status); t_epj(&status); t_epj2jd(&status); t_epv00(&status); t_eqeq94(&status); t_era00(&status); t_fad03(&status); t_fae03(&status); t_faf03(&status); t_faju03(&status); t_fal03(&status); t_falp03(&status); t_fama03(&status); t_fame03(&status); t_fane03(&status); t_faom03(&status); t_fapa03(&status); t_fasa03(&status); t_faur03(&status); t_fave03(&status); t_fk52h(&status); t_fk5hip(&status); t_fk5hz(&status); t_fw2m(&status); t_fw2xy(&status); t_g2icrs(&status); t_gc2gd(&status); t_gc2gde(&status); t_gd2gc(&status); t_gd2gce(&status); t_gmst00(&status); t_gmst06(&status); t_gmst82(&status); t_gst00a(&status); t_gst00b(&status); t_gst06(&status); t_gst06a(&status); t_gst94(&status); t_h2fk5(&status); t_hfk5z(&status); t_icrs2g(&status); t_ir(&status); t_jd2cal(&status); t_jdcalf(&status); t_ld(&status); t_ldn(&status); t_ldsun(&status); t_num00a(&status); t_num00b(&status); t_num06a(&status); t_numat(&status); t_nut00a(&status); t_nut00b(&status); t_nut06a(&status); t_nut80(&status); t_nutm80(&status); t_obl06(&status); t_obl80(&status); t_p06e(&status); t_p2pv(&status); t_p2s(&status); t_pap(&status); t_pas(&status); t_pb06(&status); t_pdp(&status); t_pfw06(&status); t_plan94(&status); t_pmat00(&status); t_pmat06(&status); t_pmat76(&status); t_pm(&status); t_pmp(&status); t_pmpx(&status); t_pmsafe(&status); t_pn(&status); t_pn00(&status); t_pn00a(&status); t_pn00b(&status); t_pn06a(&status); t_pn06(&status); t_pnm00a(&status); t_pnm00b(&status); t_pnm06a(&status); t_pnm80(&status); t_pom00(&status); t_ppp(&status); t_ppsp(&status); t_pr00(&status); t_prec76(&status); t_pv2p(&status); t_pv2s(&status); t_pvdpv(&status); t_pvm(&status); t_pvmpv(&status); t_pvppv(&status); t_pvstar(&status); t_pvtob(&status); t_pvu(&status); t_pvup(&status); t_pvxpv(&status); t_pxp(&status); t_refco(&status); t_rm2v(&status); t_rv2m(&status); t_rx(&status); t_rxp(&status); t_rxpv(&status); t_rxr(&status); t_ry(&status); t_rz(&status); t_s00a(&status); t_s00b(&status); t_s00(&status); t_s06a(&status); t_s06(&status); t_s2c(&status); t_s2p(&status); t_s2pv(&status); t_s2xpv(&status); t_sepp(&status); t_seps(&status); t_sp00(&status); t_starpm(&status); t_starpv(&status); t_sxp(&status); t_sxpv(&status); t_taitt(&status); t_taiut1(&status); t_taiutc(&status); t_tcbtdb(&status); t_tcgtt(&status); t_tdbtcb(&status); t_tdbtt(&status); t_tf2a(&status); t_tf2d(&status); t_tr(&status); t_trxp(&status); t_trxpv(&status); t_tttai(&status); t_tttcg(&status); t_tttdb(&status); t_ttut1(&status); t_ut1tai(&status); t_ut1tt(&status) ; t_ut1utc(&status); t_utctai(&status); t_utcut1(&status); t_xy06(&status); t_xys00a(&status); t_xys00b(&status); t_xys06a(&status); t_zp(&status); t_zpv(&status); t_zr(&status); /* Report, set up an appropriate exit status, and finish. */ if (status) { printf("t_sofa_c validation failed!\n"); } else { printf("t_sofa_c validation successful\n"); } return status; } sofa/20150209/c/src/tttai.c0000644000113000011300000001330412507252057014164 0ustar bellsbells#include "sofa.h" int iauTttai(double tt1, double tt2, double *tai1, double *tai2) /* ** - - - - - - - - - ** i a u T t t a i ** - - - - - - - - - ** ** Time scale transformation: Terrestrial Time, TT, to International ** Atomic Time, TAI. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tt1,tt2 double TT as a 2-part Julian Date ** ** Returned: ** tai1,tai2 double TAI as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Note: ** ** tt1+tt2 is Julian Date, apportioned in any convenient way between ** the two arguments, for example where tt1 is the Julian Day Number ** and tt2 is the fraction of a day. The returned tai1,tai2 follow ** suit. ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* TT minus TAI (days). */ static const double dtat = TTMTAI/DAYSEC; /* Result, safeguarding precision. */ if ( tt1 > tt2 ) { *tai1 = tt1; *tai2 = tt2 - dtat; } else { *tai1 = tt1 - dtat; *tai2 = tt2; } /* Status (always OK). */ return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/tttcg.c0000644000113000011300000001341412507252057014166 0ustar bellsbells#include "sofa.h" int iauTttcg(double tt1, double tt2, double *tcg1, double *tcg2) /* ** - - - - - - - - - ** i a u T t t c g ** - - - - - - - - - ** ** Time scale transformation: Terrestrial Time, TT, to Geocentric ** Coordinate Time, TCG. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tt1,tt2 double TT as a 2-part Julian Date ** ** Returned: ** tcg1,tcg2 double TCG as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Note: ** ** tt1+tt2 is Julian Date, apportioned in any convenient way between ** the two arguments, for example where tt1 is the Julian Day Number ** and tt2 is the fraction of a day. The returned tcg1,tcg2 follow ** suit. ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** IAU 2000 Resolution B1.9 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* 1977 Jan 1 00:00:32.184 TT, as MJD */ static const double t77t = DJM77 + TTMTAI/DAYSEC; /* TT to TCG rate */ static const double elgg = ELG/(1.0-ELG); /* Result, safeguarding precision. */ if ( tt1 > tt2 ) { *tcg1 = tt1; *tcg2 = tt2 + ( ( tt1 - DJM0 ) + ( tt2 - t77t ) ) * elgg; } else { *tcg1 = tt1 + ( ( tt2 - DJM0 ) + ( tt1 - t77t ) ) * elgg; *tcg2 = tt2; } /* Status (always OK). */ return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/tttdb.c0000644000113000011300000001427412507252057014167 0ustar bellsbells#include "sofa.h" int iauTttdb(double tt1, double tt2, double dtr, double *tdb1, double *tdb2) /* ** - - - - - - - - - ** i a u T t t d b ** - - - - - - - - - ** ** Time scale transformation: Terrestrial Time, TT, to Barycentric ** Dynamical Time, TDB. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tt1,tt2 double TT as a 2-part Julian Date ** dtr double TDB-TT in seconds ** ** Returned: ** tdb1,tdb2 double TDB as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Notes: ** ** 1) tt1+tt2 is Julian Date, apportioned in any convenient way between ** the two arguments, for example where tt1 is the Julian Day Number ** and tt2 is the fraction of a day. The returned tdb1,tdb2 follow ** suit. ** ** 2) The argument dtr represents the quasi-periodic component of the ** GR transformation between TT and TCB. It is dependent upon the ** adopted solar-system ephemeris, and can be obtained by numerical ** integration, by interrogating a precomputed time ephemeris or by ** evaluating a model such as that implemented in the SOFA function ** iauDtdb. The quantity is dominated by an annual term of 1.7 ms ** amplitude. ** ** 3) TDB is essentially the same as Teph, the time argument for the JPL ** solar system ephemerides. ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** IAU 2006 Resolution 3 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double dtrd; /* Result, safeguarding precision. */ dtrd = dtr / DAYSEC; if ( tt1 > tt2 ) { *tdb1 = tt1; *tdb2 = tt2 + dtrd; } else { *tdb1 = tt1 + dtrd; *tdb2 = tt2; } /* Status (always OK). */ return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/ttut1.c0000644000113000011300000001322512507252057014122 0ustar bellsbells#include "sofa.h" int iauTtut1(double tt1, double tt2, double dt, double *ut11, double *ut12) /* ** - - - - - - - - - ** i a u T t u t 1 ** - - - - - - - - - ** ** Time scale transformation: Terrestrial Time, TT, to Universal Time, ** UT1. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tt1,tt2 double TT as a 2-part Julian Date ** dt double TT-UT1 in seconds ** ** Returned: ** ut11,ut12 double UT1 as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Notes: ** ** 1) tt1+tt2 is Julian Date, apportioned in any convenient way between ** the two arguments, for example where tt1 is the Julian Day Number ** and tt2 is the fraction of a day. The returned ut11,ut12 follow ** suit. ** ** 2) The argument dt is classical Delta T. ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double dtd; /* Result, safeguarding precision. */ dtd = dt / DAYSEC; if ( tt1 > tt2 ) { *ut11 = tt1; *ut12 = tt2 - dtd; } else { *ut11 = tt1 - dtd; *ut12 = tt2; } /* Status (always OK). */ return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/ut1tai.c0000644000113000011300000001337512507252057014256 0ustar bellsbells#include "sofa.h" int iauUt1tai(double ut11, double ut12, double dta, double *tai1, double *tai2) /* ** - - - - - - - - - - ** i a u U t 1 t a i ** - - - - - - - - - - ** ** Time scale transformation: Universal Time, UT1, to International ** Atomic Time, TAI. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** ut11,ut12 double UT1 as a 2-part Julian Date ** dta double UT1-TAI in seconds ** ** Returned: ** tai1,tai2 double TAI as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Notes: ** ** 1) ut11+ut12 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where ut11 is the Julian ** Day Number and ut12 is the fraction of a day. The returned ** tai1,tai2 follow suit. ** ** 2) The argument dta, i.e. UT1-TAI, is an observed quantity, and is ** available from IERS tabulations. ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double dtad; /* Result, safeguarding precision. */ dtad = dta / DAYSEC; if ( ut11 > ut12 ) { *tai1 = ut11; *tai2 = ut12 - dtad; } else { *tai1 = ut11 - dtad; *tai2 = ut12; } /* Status (always OK). */ return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/ut1tt.c0000644000113000011300000001323112507252057014117 0ustar bellsbells#include "sofa.h" int iauUt1tt(double ut11, double ut12, double dt, double *tt1, double *tt2) /* ** - - - - - - - - - ** i a u U t 1 t t ** - - - - - - - - - ** ** Time scale transformation: Universal Time, UT1, to Terrestrial ** Time, TT. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** ut11,ut12 double UT1 as a 2-part Julian Date ** dt double TT-UT1 in seconds ** ** Returned: ** tt1,tt2 double TT as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Notes: ** ** 1) ut11+ut12 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where ut11 is the Julian ** Day Number and ut12 is the fraction of a day. The returned ** tt1,tt2 follow suit. ** ** 2) The argument dt is classical Delta T. ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double dtd; /* Result, safeguarding precision. */ dtd = dt / DAYSEC; if ( ut11 > ut12 ) { *tt1 = ut11; *tt2 = ut12 + dtd; } else { *tt1 = ut11 + dtd; *tt2 = ut12; } /* Status (always OK). */ return 0; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/ut1utc.c0000644000113000011300000002110112507252057014256 0ustar bellsbells#include "sofa.h" int iauUt1utc(double ut11, double ut12, double dut1, double *utc1, double *utc2) /* ** - - - - - - - - - - ** i a u U t 1 u t c ** - - - - - - - - - - ** ** Time scale transformation: Universal Time, UT1, to Coordinated ** Universal Time, UTC. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** ut11,ut12 double UT1 as a 2-part Julian Date (Note 1) ** dut1 double Delta UT1: UT1-UTC in seconds (Note 2) ** ** Returned: ** utc1,utc2 double UTC as a 2-part quasi Julian Date (Notes 3,4) ** ** Returned (function value): ** int status: +1 = dubious year (Note 5) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) ut11+ut12 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where ut11 is the Julian ** Day Number and ut12 is the fraction of a day. The returned utc1 ** and utc2 form an analogous pair, except that a special convention ** is used, to deal with the problem of leap seconds - see Note 3. ** ** 2) Delta UT1 can be obtained from tabulations provided by the ** International Earth Rotation and Reference Systems Service. The ** value changes abruptly by 1s at a leap second; however, close to ** a leap second the algorithm used here is tolerant of the "wrong" ** choice of value being made. ** ** 3) JD cannot unambiguously represent UTC during a leap second unless ** special measures are taken. The convention in the present ** function is that the returned quasi JD day UTC1+UTC2 represents ** UTC days whether the length is 86399, 86400 or 86401 SI seconds. ** ** 4) The function iauD2dtf can be used to transform the UTC quasi-JD ** into calendar date and clock time, including UTC leap second ** handling. ** ** 5) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the future ** to be trusted. See iauDat for further details. ** ** Called: ** iauJd2cal JD to Gregorian calendar ** iauDat delta(AT) = TAI-UTC ** iauCal2jd Gregorian calendar to JD ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int big1; int i, iy, im, id, js; double duts, u1, u2, d1, dats1, d2, fd, dats2, ddats, us1, us2, du; /* UT1-UTC in seconds. */ duts = dut1; /* Put the two parts of the UT1 into big-first order. */ big1 = ( ut11 >= ut12 ); if ( big1 ) { u1 = ut11; u2 = ut12; } else { u1 = ut12; u2 = ut11; } /* See if the UT1 can possibly be in a leap-second day. */ d1 = u1; dats1 = 0; for ( i = -1; i <= 3; i++ ) { d2 = u2 + (double) i; if ( iauJd2cal(d1, d2, &iy, &im, &id, &fd) ) return -1; js = iauDat(iy, im, id, 0.0, &dats2); if ( js < 0 ) return -1; if ( i == - 1 ) dats1 = dats2; ddats = dats2 - dats1; if ( fabs(ddats) >= 0.5 ) { /* Yes, leap second nearby: ensure UT1-UTC is "before" value. */ if ( ddats * duts >= 0 ) duts -= ddats; /* UT1 for the start of the UTC day that ends in a leap. */ if ( iauCal2jd(iy, im, id, &d1, &d2) ) return -1; us1 = d1; us2 = d2 - 1.0 + duts/DAYSEC; /* Is the UT1 after this point? */ du = u1 - us1; du += u2 - us2; if ( du > 0 ) { /* Yes: fraction of the current UTC day that has elapsed. */ fd = du * DAYSEC / ( DAYSEC + ddats ); /* Ramp UT1-UTC to bring about SOFA's JD(UTC) convention. */ duts += ddats * ( fd <= 1.0 ? fd : 1.0 ); } /* Done. */ break; } dats1 = dats2; } /* Subtract the (possibly adjusted) UT1-UTC from UT1 to give UTC. */ u2 -= duts / DAYSEC; /* Result, safeguarding precision. */ if ( big1 ) { *utc1 = u1; *utc2 = u2; } else { *utc1 = u2; *utc2 = u1; } /* Status. */ return js; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/utctai.c0000644000113000011300000002011612507252057014327 0ustar bellsbells#include "sofa.h" int iauUtctai(double utc1, double utc2, double *tai1, double *tai2) /* ** - - - - - - - - - - ** i a u U t c t a i ** - - - - - - - - - - ** ** Time scale transformation: Coordinated Universal Time, UTC, to ** International Atomic Time, TAI. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** utc1,utc2 double UTC as a 2-part quasi Julian Date (Notes 1-4) ** ** Returned: ** tai1,tai2 double TAI as a 2-part Julian Date (Note 5) ** ** Returned (function value): ** int status: +1 = dubious year (Note 3) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any ** convenient way between the two arguments, for example where utc1 ** is the Julian Day Number and utc2 is the fraction of a day. ** ** 2) JD cannot unambiguously represent UTC during a leap second unless ** special measures are taken. The convention in the present ** function is that the JD day represents UTC days whether the ** length is 86399, 86400 or 86401 SI seconds. In the 1960-1972 era ** there were smaller jumps (in either direction) each time the ** linear UTC(TAI) expression was changed, and these "mini-leaps" ** are also included in the SOFA convention. ** ** 3) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the future ** to be trusted. See iauDat for further details. ** ** 4) The function iauDtf2d converts from calendar date and time of day ** into 2-part Julian Date, and in the case of UTC implements the ** leap-second-ambiguity convention described above. ** ** 5) The returned TAI1,TAI2 are such that their sum is the TAI Julian ** Date. ** ** Called: ** iauJd2cal JD to Gregorian calendar ** iauDat delta(AT) = TAI-UTC ** iauCal2jd Gregorian calendar to JD ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** ** This revision: 2013 July 26 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. ** */ { int big1; int iy, im, id, j, iyt, imt, idt; double u1, u2, fd, dat0, dat12, w, dat24, dlod, dleap, z1, z2, a2; /* Put the two parts of the UTC into big-first order. */ big1 = ( utc1 >= utc2 ); if ( big1 ) { u1 = utc1; u2 = utc2; } else { u1 = utc2; u2 = utc1; } /* Get TAI-UTC at 0h today. */ j = iauJd2cal(u1, u2, &iy, &im, &id, &fd); if ( j ) return j; j = iauDat(iy, im, id, 0.0, &dat0); if ( j < 0 ) return j; /* Get TAI-UTC at 12h today (to detect drift). */ j = iauDat(iy, im, id, 0.5, &dat12); if ( j < 0 ) return j; /* Get TAI-UTC at 0h tomorrow (to detect jumps). */ j = iauJd2cal(u1+1.5, u2-fd, &iyt, &imt, &idt, &w); if ( j ) return j; j = iauDat(iyt, imt, idt, 0.0, &dat24); if ( j < 0 ) return j; /* Separate TAI-UTC change into per-day (DLOD) and any jump (DLEAP). */ dlod = 2.0 * (dat12 - dat0); dleap = dat24 - (dat0 + dlod); /* Remove any scaling applied to spread leap into preceding day. */ fd *= (DAYSEC+dleap)/DAYSEC; /* Scale from (pre-1972) UTC seconds to SI seconds. */ fd *= (DAYSEC+dlod)/DAYSEC; /* Today's calendar date to 2-part JD. */ if ( iauCal2jd(iy, im, id, &z1, &z2) ) return -1; /* Assemble the TAI result, preserving the UTC split and order. */ a2 = z1 - u1; a2 += z2; a2 += fd + dat0/DAYSEC; if ( big1 ) { *tai1 = u1; *tai2 = a2; } else { *tai1 = a2; *tai2 = u1; } /* Status. */ return j; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/utcut1.c0000644000113000011300000001644112507252057014271 0ustar bellsbells#include "sofa.h" int iauUtcut1(double utc1, double utc2, double dut1, double *ut11, double *ut12) /* ** - - - - - - - - - - ** i a u U t c u t 1 ** - - - - - - - - - - ** ** Time scale transformation: Coordinated Universal Time, UTC, to ** Universal Time, UT1. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** utc1,utc2 double UTC as a 2-part quasi Julian Date (Notes 1-4) ** dut1 double Delta UT1 = UT1-UTC in seconds (Note 5) ** ** Returned: ** ut11,ut12 double UT1 as a 2-part Julian Date (Note 6) ** ** Returned (function value): ** int status: +1 = dubious year (Note 3) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any ** convenient way between the two arguments, for example where utc1 ** is the Julian Day Number and utc2 is the fraction of a day. ** ** 2) JD cannot unambiguously represent UTC during a leap second unless ** special measures are taken. The convention in the present ** function is that the JD day represents UTC days whether the ** length is 86399, 86400 or 86401 SI seconds. ** ** 3) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the future ** to be trusted. See iauDat for further details. ** ** 4) The function iauDtf2d converts from calendar date and time of ** day into 2-part Julian Date, and in the case of UTC implements ** the leap-second-ambiguity convention described above. ** ** 5) Delta UT1 can be obtained from tabulations provided by the ** International Earth Rotation and Reference Systems Service. ** It is the caller's responsibility to supply a dut1 argument ** containing the UT1-UTC value that matches the given UTC. ** ** 6) The returned ut11,ut12 are such that their sum is the UT1 Julian ** Date. ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** ** Called: ** iauJd2cal JD to Gregorian calendar ** iauDat delta(AT) = TAI-UTC ** iauUtctai UTC to TAI ** iauTaiut1 TAI to UT1 ** ** This revision: 2013 August 12 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { int iy, im, id, js, jw; double w, dat, dta, tai1, tai2; /* Look up TAI-UTC. */ if ( iauJd2cal(utc1, utc2, &iy, &im, &id, &w) ) return -1; js = iauDat ( iy, im, id, 0.0, &dat); if ( js < 0 ) return -1; /* Form UT1-TAI. */ dta = dut1 - dat; /* UTC to TAI to UT1. */ jw = iauUtctai(utc1, utc2, &tai1, &tai2); if ( jw < 0 ) { return -1; } else if ( jw > 0 ) { js = jw; } if ( iauTaiut1(tai1, tai2, dta, ut11, ut12) ) return -1; /* Status. */ return js; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/xy06.c0000644000113000011300000040505412507252057013654 0ustar bellsbells#include "sofa.h" void iauXy06(double date1, double date2, double *x, double *y) /* ** - - - - - - - - ** i a u X y 0 6 ** - - - - - - - - ** ** X,Y coordinates of celestial intermediate pole from series based ** on IAU 2006 precession and IAU 2000A nutation. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** x,y double CIP X,Y coordinates (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The X,Y coordinates are those of the unit vector towards the ** celestial intermediate pole. They represent the combined effects ** of frame bias, precession and nutation. ** ** 3) The fundamental arguments used are as adopted in IERS Conventions ** (2003) and are from Simon et al. (1994) and Souchay et al. ** (1999). ** ** 4) This is an alternative to the angles-based method, via the SOFA ** function iauFw2xy and as used in iauXys06a for example. The two ** methods agree at the 1 microarcsecond level (at present), a ** negligible amount compared with the intrinsic accuracy of the ** models. However, it would be unwise to mix the two methods ** (angles-based and series-based) in a single application. ** ** Called: ** iauFal03 mean anomaly of the Moon ** iauFalp03 mean anomaly of the Sun ** iauFaf03 mean argument of the latitude of the Moon ** iauFad03 mean elongation of the Moon from the Sun ** iauFaom03 mean longitude of the Moon's ascending node ** iauFame03 mean longitude of Mercury ** iauFave03 mean longitude of Venus ** iauFae03 mean longitude of Earth ** iauFama03 mean longitude of Mars ** iauFaju03 mean longitude of Jupiter ** iauFasa03 mean longitude of Saturn ** iauFaur03 mean longitude of Uranus ** iauFane03 mean longitude of Neptune ** iauFapa03 general accumulated precession in longitude ** ** References: ** ** Capitaine, N., Wallace, P.T. & Chapront, J., 2003, ** Astron.Astrophys., 412, 567 ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 ** ** McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), ** IERS Technical Note No. 32, BKG ** ** Simon, J.L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G. & Laskar, J., Astron.Astrophys., 1994, 282, 663 ** ** Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M., 1999, ** Astron.Astrophys.Supp.Ser. 135, 111 ** ** Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** ** This revision: 2013 August 21 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { /* Maximum power of T in the polynomials for X and Y */ enum { MAXPT = 5 }; /* Polynomial coefficients (arcsec, X then Y). */ static const double xyp[2][MAXPT+1] = { { -0.016617, 2004.191898, -0.4297829, -0.19861834, 0.000007578, 0.0000059285 }, { -0.006951, -0.025896, -22.4072747, 0.00190059, 0.001112526, 0.0000001358 } }; /* Fundamental-argument multipliers: luni-solar terms */ static const int mfals[][5] = { /* 1-10 */ { 0, 0, 0, 0, 1 }, { 0, 0, 2, -2, 2 }, { 0, 0, 2, 0, 2 }, { 0, 0, 0, 0, 2 }, { 0, 1, 0, 0, 0 }, { 0, 1, 2, -2, 2 }, { 1, 0, 0, 0, 0 }, { 0, 0, 2, 0, 1 }, { 1, 0, 2, 0, 2 }, { 0, 1, -2, 2, -2 }, /* 11-20 */ { 0, 0, 2, -2, 1 }, { 1, 0, -2, 0, -2 }, { 1, 0, 0, -2, 0 }, { 1, 0, 0, 0, 1 }, { 1, 0, 0, 0, -1 }, { 1, 0, -2, -2, -2 }, { 1, 0, 2, 0, 1 }, { 2, 0, -2, 0, -1 }, { 0, 0, 0, 2, 0 }, { 0, 0, 2, 2, 2 }, /* 21-30 */ { 2, 0, 0, -2, 0 }, { 0, 2, -2, 2, -2 }, { 2, 0, 2, 0, 2 }, { 1, 0, 2, -2, 2 }, { 1, 0, -2, 0, -1 }, { 2, 0, 0, 0, 0 }, { 0, 0, 2, 0, 0 }, { 0, 1, 0, 0, 1 }, { 1, 0, 0, -2, -1 }, { 0, 2, 2, -2, 2 }, /* 31-40 */ { 0, 0, 2, -2, 0 }, { 1, 0, 0, -2, 1 }, { 0, 1, 0, 0, -1 }, { 0, 2, 0, 0, 0 }, { 1, 0, -2, -2, -1 }, { 1, 0, 2, 2, 2 }, { 0, 1, 2, 0, 2 }, { 2, 0, -2, 0, 0 }, { 0, 0, 2, 2, 1 }, { 0, 1, -2, 0, -2 }, /* 41-50 */ { 0, 0, 0, 2, 1 }, { 1, 0, 2, -2, 1 }, { 2, 0, 0, -2, -1 }, { 2, 0, 2, -2, 2 }, { 2, 0, 2, 0, 1 }, { 0, 0, 0, 2, -1 }, { 0, 1, -2, 2, -1 }, { 1, 1, 0, -2, 0 }, { 2, 0, 0, -2, 1 }, { 1, 0, 0, 2, 0 }, /* 51-60 */ { 0, 1, 2, -2, 1 }, { 1, -1, 0, 0, 0 }, { 0, 1, -1, 1, -1 }, { 2, 0, -2, 0, -2 }, { 0, 1, 0, -2, 0 }, { 1, 0, 0, -1, 0 }, { 3, 0, 2, 0, 2 }, { 0, 0, 0, 1, 0 }, { 1, -1, 2, 0, 2 }, { 1, 1, -2, -2, -2 }, /* 61-70 */ { 1, 0, -2, 0, 0 }, { 2, 0, 0, 0, -1 }, { 0, 1, -2, -2, -2 }, { 1, 1, 2, 0, 2 }, { 2, 0, 0, 0, 1 }, { 1, 1, 0, 0, 0 }, { 1, 0, -2, 2, -1 }, { 1, 0, 2, 0, 0 }, { 1, -1, 0, -1, 0 }, { 1, 0, 0, 0, 2 }, /* 71-80 */ { 1, 0, -1, 0, -1 }, { 0, 0, 2, 1, 2 }, { 1, 0, -2, -4, -2 }, { 1, -1, 0, -1, -1 }, { 1, 0, 2, 2, 1 }, { 0, 2, -2, 2, -1 }, { 1, 0, 0, 0, -2 }, { 2, 0, -2, -2, -2 }, { 1, 1, 2, -2, 2 }, { 2, 0, -2, -4, -2 }, /* 81-90 */ { 1, 0, -4, 0, -2 }, { 2, 0, 2, -2, 1 }, { 1, 0, 0, -1, -1 }, { 2, 0, 2, 2, 2 }, { 3, 0, 0, 0, 0 }, { 1, 0, 0, 2, 1 }, { 0, 0, 2, -2, -1 }, { 3, 0, 2, -2, 2 }, { 0, 0, 4, -2, 2 }, { 1, 0, 0, -4, 0 }, /* 91-100 */ { 0, 1, 2, 0, 1 }, { 2, 0, 0, -4, 0 }, { 1, 1, 0, -2, -1 }, { 2, 0, -2, 0, 1 }, { 0, 0, 2, 0, -1 }, { 0, 1, -2, 0, -1 }, { 0, 1, 0, 0, 2 }, { 0, 0, 2, -1, 2 }, { 0, 0, 2, 4, 2 }, { 2, 1, 0, -2, 0 }, /* 101-110 */ { 1, 1, 0, -2, 1 }, { 1, -1, 0, -2, 0 }, { 1, -1, 0, -1, -2 }, { 1, -1, 0, 0, 1 }, { 0, 1, -2, 2, 0 }, { 0, 1, 0, 0, -2 }, { 1, -1, 2, 2, 2 }, { 1, 0, 0, 2, -1 }, { 1, -1, -2, -2, -2 }, { 3, 0, 2, 0, 1 }, /* 111-120 */ { 0, 1, 2, 2, 2 }, { 1, 0, 2, -2, 0 }, { 1, 1, -2, -2, -1 }, { 1, 0, 2, -4, 1 }, { 0, 1, -2, -2, -1 }, { 2, -1, 2, 0, 2 }, { 0, 0, 0, 2, 2 }, { 1, -1, 2, 0, 1 }, { 1, -1, -2, 0, -2 }, { 0, 1, 0, 2, 0 }, /* 121-130 */ { 0, 1, 2, -2, 0 }, { 0, 0, 0, 1, 1 }, { 1, 0, -2, -2, 0 }, { 0, 3, 2, -2, 2 }, { 2, 1, 2, 0, 2 }, { 1, 1, 0, 0, 1 }, { 2, 0, 0, 2, 0 }, { 1, 1, 2, 0, 1 }, { 1, 0, 0, -2, -2 }, { 1, 0, -2, 2, 0 }, /* 131-140 */ { 1, 0, -1, 0, -2 }, { 0, 1, 0, -2, 1 }, { 0, 1, 0, 1, 0 }, { 0, 0, 0, 1, -1 }, { 1, 0, -2, 2, -2 }, { 1, -1, 0, 0, -1 }, { 0, 0, 0, 4, 0 }, { 1, -1, 0, 2, 0 }, { 1, 0, 2, 1, 2 }, { 1, 0, 2, -1, 2 }, /* 141-150 */ { 0, 0, 2, 1, 1 }, { 1, 0, 0, -2, 2 }, { 1, 0, -2, 0, 1 }, { 1, 0, -2, -4, -1 }, { 0, 0, 2, 2, 0 }, { 1, 1, 2, -2, 1 }, { 1, 0, -2, 1, -1 }, { 0, 0, 1, 0, 1 }, { 2, 0, -2, -2, -1 }, { 4, 0, 2, 0, 2 }, /* 151-160 */ { 2, -1, 0, 0, 0 }, { 2, 1, 2, -2, 2 }, { 0, 1, 2, 1, 2 }, { 1, 0, 4, -2, 2 }, { 1, 1, 0, 0, -1 }, { 2, 0, 2, 0, 0 }, { 2, 0, -2, -4, -1 }, { 1, 0, -1, 0, 0 }, { 1, 0, 0, 1, 0 }, { 0, 1, 0, 2, 1 }, /* 161-170 */ { 1, 0, -4, 0, -1 }, { 1, 0, 0, -4, -1 }, { 2, 0, 2, 2, 1 }, { 2, 1, 0, 0, 0 }, { 0, 0, 2, -3, 2 }, { 1, 2, 0, -2, 0 }, { 0, 3, 0, 0, 0 }, { 0, 0, 4, 0, 2 }, { 0, 0, 2, -4, 1 }, { 2, 0, 0, -2, -2 }, /* 171-180 */ { 1, 1, -2, -4, -2 }, { 0, 1, 0, -2, -1 }, { 0, 0, 0, 4, 1 }, { 3, 0, 2, -2, 1 }, { 1, 0, 2, 4, 2 }, { 1, 1, -2, 0, -2 }, { 0, 0, 4, -2, 1 }, { 2, -2, 0, -2, 0 }, { 2, 1, 0, -2, -1 }, { 0, 2, 0, -2, 0 }, /* 181-190 */ { 1, 0, 0, -1, 1 }, { 1, 1, 2, 2, 2 }, { 3, 0, 0, 0, -1 }, { 2, 0, 0, -4, -1 }, { 3, 0, 2, 2, 2 }, { 0, 0, 2, 4, 1 }, { 0, 2, -2, -2, -2 }, { 1, -1, 0, -2, -1 }, { 0, 0, 2, -1, 1 }, { 2, 0, 0, 2, 1 }, /* 191-200 */ { 1, -1, -2, 2, -1 }, { 0, 0, 0, 2, -2 }, { 2, 0, 0, -4, 1 }, { 1, 0, 0, -4, 1 }, { 2, 0, 2, -4, 1 }, { 4, 0, 2, -2, 2 }, { 2, 1, -2, 0, -1 }, { 2, 1, -2, -4, -2 }, { 3, 0, 0, -4, 0 }, { 1, -1, 2, 2, 1 }, /* 201-210 */ { 1, -1, -2, 0, -1 }, { 0, 2, 0, 0, 1 }, { 1, 2, -2, -2, -2 }, { 1, 1, 0, -4, 0 }, { 2, 0, 0, -2, 2 }, { 0, 2, 2, -2, 1 }, { 1, 0, 2, 0, -1 }, { 2, 1, 0, -2, 1 }, { 2, -1, -2, 0, -1 }, { 1, -1, -2, -2, -1 }, /* 211-220 */ { 0, 1, -2, 1, -2 }, { 1, 0, -4, 2, -2 }, { 0, 1, 2, 2, 1 }, { 3, 0, 0, 0, 1 }, { 2, -1, 2, 2, 2 }, { 0, 1, -2, -4, -2 }, { 1, 0, -2, -3, -2 }, { 2, 0, 0, 0, 2 }, { 1, -1, 0, -2, -2 }, { 2, 0, -2, 2, -1 }, /* 221-230 */ { 0, 2, -2, 0, -2 }, { 3, 0, -2, 0, -1 }, { 2, -1, 2, 0, 1 }, { 1, 0, -2, -1, -2 }, { 0, 0, 2, 0, 3 }, { 2, 0, -4, 0, -2 }, { 2, 1, 0, -4, 0 }, { 1, 1, -2, 1, -1 }, { 0, 2, 2, 0, 2 }, { 1, -1, 2, -2, 2 }, /* 231-240 */ { 1, -1, 0, -2, 1 }, { 2, 1, 2, 0, 1 }, { 1, 0, 2, -4, 2 }, { 1, 1, -2, 0, -1 }, { 1, 1, 0, 2, 0 }, { 1, 0, 0, -3, 0 }, { 2, 0, 2, -1, 2 }, { 0, 2, 0, 0, -1 }, { 2, -1, 0, -2, 0 }, { 4, 0, 0, 0, 0 }, /* 241-250 */ { 2, 1, -2, -2, -2 }, { 0, 2, -2, 2, 0 }, { 1, 0, 2, 1, 1 }, { 1, 0, -1, 0, -3 }, { 3, -1, 2, 0, 2 }, { 2, 0, 2, -2, 0 }, { 1, -2, 0, 0, 0 }, { 2, 0, 0, 0, -2 }, { 1, 0, 0, 4, 0 }, { 0, 1, 0, 1, 1 }, /* 251-260 */ { 1, 0, 2, 2, 0 }, { 0, 1, 0, 2, -1 }, { 0, 1, 0, 1, -1 }, { 0, 0, 2, -2, 3 }, { 3, 1, 2, 0, 2 }, { 1, 1, 2, 1, 2 }, { 1, 1, -2, 2, -1 }, { 2, -1, 2, -2, 2 }, { 1, -2, 2, 0, 2 }, { 1, 0, 2, -4, 0 }, /* 261-270 */ { 0, 0, 1, 0, 0 }, { 1, 0, 2, -3, 1 }, { 1, -2, 0, -2, 0 }, { 2, 0, 0, 2, -1 }, { 1, 1, 2, -4, 1 }, { 4, 0, 2, 0, 1 }, { 0, 1, 2, 1, 1 }, { 1, 2, 2, -2, 2 }, { 2, 0, 2, 1, 2 }, { 2, 1, 2, -2, 1 }, /* 271-280 */ { 1, 0, 2, -1, 1 }, { 1, 0, 4, -2, 1 }, { 1, -1, 2, -2, 1 }, { 0, 1, 0, -4, 0 }, { 3, 0, -2, -2, -2 }, { 0, 0, 4, -4, 2 }, { 2, 0, -4, -2, -2 }, { 2, -2, 0, -2, -1 }, { 1, 0, 2, -2, -1 }, { 2, 0, -2, -6, -2 }, /* 281-290 */ { 1, 0, -2, 1, -2 }, { 1, 0, -2, 2, 1 }, { 1, -1, 0, 2, -1 }, { 1, 0, -2, 1, 0 }, { 2, -1, 0, -2, 1 }, { 1, -1, 0, 2, 1 }, { 2, 0, -2, -2, 0 }, { 1, 0, 2, -3, 2 }, { 0, 0, 0, 4, -1 }, { 2, -1, 0, 0, 1 }, /* 291-300 */ { 2, 0, 4, -2, 2 }, { 0, 0, 2, 3, 2 }, { 0, 1, 4, -2, 2 }, { 0, 1, -2, 2, 1 }, { 1, 1, 0, 2, 1 }, { 1, 0, 0, 4, 1 }, { 0, 0, 4, 0, 1 }, { 2, 0, 0, -3, 0 }, { 1, 0, 0, -1, -2 }, { 1, -2, -2, -2, -2 }, /* 301-310 */ { 3, 0, 0, 2, 0 }, { 2, 0, 2, -4, 2 }, { 1, 1, -2, -4, -1 }, { 1, 0, -2, -6, -2 }, { 2, -1, 0, 0, -1 }, { 2, -1, 0, 2, 0 }, { 0, 1, 2, -2, -1 }, { 1, 1, 0, 1, 0 }, { 1, 2, 0, -2, -1 }, { 1, 0, 0, 1, -1 }, /* 311-320 */ { 0, 0, 1, 0, 2 }, { 3, 1, 2, -2, 2 }, { 1, 0, -4, -2, -2 }, { 1, 0, 2, 4, 1 }, { 1, -2, 2, 2, 2 }, { 1, -1, -2, -4, -2 }, { 0, 0, 2, -4, 2 }, { 0, 0, 2, -3, 1 }, { 2, 1, -2, 0, 0 }, { 3, 0, -2, -2, -1 }, /* 321-330 */ { 2, 0, 2, 4, 2 }, { 0, 0, 0, 0, 3 }, { 2, -1, -2, -2, -2 }, { 2, 0, 0, -1, 0 }, { 3, 0, 2, -4, 2 }, { 2, 1, 2, 2, 2 }, { 0, 0, 3, 0, 3 }, { 1, 1, 2, 2, 1 }, { 2, 1, 0, 0, -1 }, { 1, 2, 0, -2, 1 }, /* 331-340 */ { 3, 0, 2, 2, 1 }, { 1, -1, -2, 2, -2 }, { 1, 1, 0, -1, 0 }, { 1, 2, 0, 0, 0 }, { 1, 0, 4, 0, 2 }, { 1, -1, 2, 4, 2 }, { 2, 1, 0, 0, 1 }, { 1, 0, 0, 2, 2 }, { 1, -1, -2, 2, 0 }, { 0, 2, -2, -2, -1 }, /* 341-350 */ { 2, 0, -2, 0, 2 }, { 5, 0, 2, 0, 2 }, { 3, 0, -2, -6, -2 }, { 1, -1, 2, -1, 2 }, { 3, 0, 0, -4, -1 }, { 1, 0, 0, 1, 1 }, { 1, 0, -4, 2, -1 }, { 0, 1, 2, -4, 1 }, { 1, 2, 2, 0, 2 }, { 0, 1, 0, -2, -2 }, /* 351-360 */ { 0, 0, 2, -1, 0 }, { 1, 0, 1, 0, 1 }, { 0, 2, 0, -2, 1 }, { 3, 0, 2, 0, 0 }, { 1, 1, -2, 1, 0 }, { 2, 1, -2, -4, -1 }, { 3, -1, 0, 0, 0 }, { 2, -1, -2, 0, 0 }, { 4, 0, 2, -2, 1 }, { 2, 0, -2, 2, 0 }, /* 361-370 */ { 1, 1, 2, -2, 0 }, { 1, 0, -2, 4, -1 }, { 1, 0, -2, -2, 1 }, { 2, 0, 2, -4, 0 }, { 1, 1, 0, -2, -2 }, { 1, 1, -2, -2, 0 }, { 1, 0, 1, -2, 1 }, { 2, -1, -2, -4, -2 }, { 3, 0, -2, 0, -2 }, { 0, 1, -2, -2, 0 }, /* 371-380 */ { 3, 0, 0, -2, -1 }, { 1, 0, -2, -3, -1 }, { 0, 1, 0, -4, -1 }, { 1, -2, 2, -2, 1 }, { 0, 1, -2, 1, -1 }, { 1, -1, 0, 0, 2 }, { 2, 0, 0, 1, 0 }, { 1, -2, 0, 2, 0 }, { 1, 2, -2, -2, -1 }, { 0, 0, 4, -4, 1 }, /* 381-390 */ { 0, 1, 2, 4, 2 }, { 0, 1, -4, 2, -2 }, { 3, 0, -2, 0, 0 }, { 2, -1, 2, 2, 1 }, { 0, 1, -2, -4, -1 }, { 4, 0, 2, 2, 2 }, { 2, 0, -2, -3, -2 }, { 2, 0, 0, -6, 0 }, { 1, 0, 2, 0, 3 }, { 3, 1, 0, 0, 0 }, /* 391-400 */ { 3, 0, 0, -4, 1 }, { 1, -1, 2, 0, 0 }, { 1, -1, 0, -4, 0 }, { 2, 0, -2, 2, -2 }, { 1, 1, 0, -2, 2 }, { 4, 0, 0, -2, 0 }, { 2, 2, 0, -2, 0 }, { 0, 1, 2, 0, 0 }, { 1, 1, 0, -4, 1 }, { 1, 0, 0, -4, -2 }, /* 401-410 */ { 0, 0, 0, 1, 2 }, { 3, 0, 0, 2, 1 }, { 1, 1, 0, -4, -1 }, { 0, 0, 2, 2, -1 }, { 1, 1, 2, 0, 0 }, { 1, -1, 2, -4, 1 }, { 1, 1, 0, 0, 2 }, { 0, 0, 2, 6, 2 }, { 4, 0, -2, -2, -1 }, { 2, 1, 0, -4, -1 }, /* 411-420 */ { 0, 0, 0, 3, 1 }, { 1, -1, -2, 0, 0 }, { 0, 0, 2, 1, 0 }, { 1, 0, 0, 2, -2 }, { 3, -1, 2, 2, 2 }, { 3, -1, 2, -2, 2 }, { 1, 0, 0, -1, 2 }, { 1, -2, 2, -2, 2 }, { 0, 1, 0, 2, 2 }, { 0, 1, -2, -1, -2 }, /* 421-430 */ { 1, 1, -2, 0, 0 }, { 0, 2, 2, -2, 0 }, { 3, -1, -2, -1, -2 }, { 1, 0, 0, -6, 0 }, { 1, 0, -2, -4, 0 }, { 2, 1, 0, -4, 1 }, { 2, 0, 2, 0, -1 }, { 2, 0, -4, 0, -1 }, { 0, 0, 3, 0, 2 }, { 2, 1, -2, -2, -1 }, /* 431-440 */ { 1, -2, 0, 0, 1 }, { 2, -1, 0, -4, 0 }, { 0, 0, 0, 3, 0 }, { 5, 0, 2, -2, 2 }, { 1, 2, -2, -4, -2 }, { 1, 0, 4, -4, 2 }, { 0, 0, 4, -1, 2 }, { 3, 1, 0, -4, 0 }, { 3, 0, 0, -6, 0 }, { 2, 0, 0, 2, 2 }, /* 441-450 */ { 2, -2, 2, 0, 2 }, { 1, 0, 0, -3, 1 }, { 1, -2, -2, 0, -2 }, { 1, -1, -2, -3, -2 }, { 0, 0, 2, -2, -2 }, { 2, 0, -2, -4, 0 }, { 1, 0, -4, 0, 0 }, { 0, 1, 0, -1, 0 }, { 4, 0, 0, 0, -1 }, { 3, 0, 2, -1, 2 }, /* 451-460 */ { 3, -1, 2, 0, 1 }, { 2, 0, 2, -1, 1 }, { 1, 2, 2, -2, 1 }, { 1, 1, 0, 2, -1 }, { 0, 2, 2, 0, 1 }, { 3, 1, 2, 0, 1 }, { 1, 1, 2, 1, 1 }, { 1, 1, 0, -1, 1 }, { 1, -2, 0, -2, -1 }, { 4, 0, 0, -4, 0 }, /* 461-470 */ { 2, 1, 0, 2, 0 }, { 1, -1, 0, 4, 0 }, { 0, 1, 0, -2, 2 }, { 0, 0, 2, 0, -2 }, { 1, 0, -1, 0, 1 }, { 3, 0, 2, -2, 0 }, { 2, 0, 2, 2, 0 }, { 1, 2, 0, -4, 0 }, { 1, -1, 0, -3, 0 }, { 0, 1, 0, 4, 0 }, /* 471 - 480 */ { 0, 1, -2, 0, 0 }, { 2, 2, 2, -2, 2 }, { 0, 0, 0, 1, -2 }, { 0, 2, -2, 0, -1 }, { 4, 0, 2, -4, 2 }, { 2, 0, -4, 2, -2 }, { 2, -1, -2, 0, -2 }, { 1, 1, 4, -2, 2 }, { 1, 1, 2, -4, 2 }, { 1, 0, 2, 3, 2 }, /* 481-490 */ { 1, 0, 0, 4, -1 }, { 0, 0, 0, 4, 2 }, { 2, 0, 0, 4, 0 }, { 1, 1, -2, 2, 0 }, { 2, 1, 2, 1, 2 }, { 2, 1, 2, -4, 1 }, { 2, 0, 2, 1, 1 }, { 2, 0, -4, -2, -1 }, { 2, 0, -2, -6, -1 }, { 2, -1, 2, -1, 2 }, /* 491-500 */ { 1, -2, 2, 0, 1 }, { 1, -2, 0, -2, 1 }, { 1, -1, 0, -4, -1 }, { 0, 2, 2, 2, 2 }, { 0, 2, -2, -4, -2 }, { 0, 1, 2, 3, 2 }, { 0, 1, 0, -4, 1 }, { 3, 0, 0, -2, 1 }, { 2, 1, -2, 0, 1 }, { 2, 0, 4, -2, 1 }, /* 501-510 */ { 2, 0, 0, -3, -1 }, { 2, -2, 0, -2, 1 }, { 2, -1, 2, -2, 1 }, { 1, 0, 0, -6, -1 }, { 1, -2, 0, 0, -1 }, { 1, -2, -2, -2, -1 }, { 0, 1, 4, -2, 1 }, { 0, 0, 2, 3, 1 }, { 2, -1, 0, -1, 0 }, { 1, 3, 0, -2, 0 }, /* 511-520 */ { 0, 3, 0, -2, 0 }, { 2, -2, 2, -2, 2 }, { 0, 0, 4, -2, 0 }, { 4, -1, 2, 0, 2 }, { 2, 2, -2, -4, -2 }, { 4, 1, 2, 0, 2 }, { 4, -1, -2, -2, -2 }, { 2, 1, 0, -2, -2 }, { 2, 1, -2, -6, -2 }, { 2, 0, 0, -1, 1 }, /* 521-530 */ { 2, -1, -2, 2, -1 }, { 1, 1, -2, 2, -2 }, { 1, 1, -2, -3, -2 }, { 1, 0, 3, 0, 3 }, { 1, 0, -2, 1, 1 }, { 1, 0, -2, 0, 2 }, { 1, -1, 2, 1, 2 }, { 1, -1, 0, 0, -2 }, { 1, -1, -4, 2, -2 }, { 0, 3, -2, -2, -2 }, /* 531-540 */ { 0, 1, 0, 4, 1 }, { 0, 0, 4, 2, 2 }, { 3, 0, -2, -2, 0 }, { 2, -2, 0, 0, 0 }, { 1, 1, 2, -4, 0 }, { 1, 1, 0, -3, 0 }, { 1, 0, 2, -3, 0 }, { 1, -1, 2, -2, 0 }, { 0, 2, 0, 2, 0 }, { 0, 0, 2, 4, 0 }, /* 541-550 */ { 1, 0, 1, 0, 0 }, { 3, 1, 2, -2, 1 }, { 3, 0, 4, -2, 2 }, { 3, 0, 2, 1, 2 }, { 3, 0, 0, 2, -1 }, { 3, 0, 0, 0, 2 }, { 3, 0, -2, 2, -1 }, { 2, 0, 4, -4, 2 }, { 2, 0, 2, -3, 2 }, { 2, 0, 0, 4, 1 }, /* 551-560 */ { 2, 0, 0, -3, 1 }, { 2, 0, -4, 2, -1 }, { 2, 0, -2, -2, 1 }, { 2, -2, 2, 2, 2 }, { 2, -2, 0, -2, -2 }, { 2, -1, 0, 2, 1 }, { 2, -1, 0, 2, -1 }, { 1, 1, 2, 4, 2 }, { 1, 1, 0, 1, 1 }, { 1, 1, 0, 1, -1 }, /* 561-570 */ { 1, 1, -2, -6, -2 }, { 1, 0, 0, -3, -1 }, { 1, 0, -4, -2, -1 }, { 1, 0, -2, -6, -1 }, { 1, -2, 2, 2, 1 }, { 1, -2, -2, 2, -1 }, { 1, -1, -2, -4, -1 }, { 0, 2, 0, 0, 2 }, { 0, 1, 2, -4, 2 }, { 0, 1, -2, 4, -1 }, /* 571-580 */ { 5, 0, 0, 0, 0 }, { 3, 0, 0, -3, 0 }, { 2, 2, 0, -4, 0 }, { 1, -1, 2, 2, 0 }, { 0, 1, 0, 3, 0 }, { 4, 0, -2, 0, -1 }, { 3, 0, -2, -6, -1 }, { 3, 0, -2, -1, -1 }, { 2, 1, 2, 2, 1 }, { 2, 1, 0, 2, 1 }, /* 581-590 */ { 2, 0, 2, 4, 1 }, { 2, 0, 2, -6, 1 }, { 2, 0, 2, -2, -1 }, { 2, 0, 0, -6, -1 }, { 2, -1, -2, -2, -1 }, { 1, 2, 2, 0, 1 }, { 1, 2, 0, 0, 1 }, { 1, 0, 4, 0, 1 }, { 1, 0, 2, -6, 1 }, { 1, 0, 2, -4, -1 }, /* 591-600 */ { 1, 0, -1, -2, -1 }, { 1, -1, 2, 4, 1 }, { 1, -1, 2, -3, 1 }, { 1, -1, 0, 4, 1 }, { 1, -1, -2, 1, -1 }, { 0, 1, 2, -2, 3 }, { 3, 0, 0, -2, 0 }, { 1, 0, 1, -2, 0 }, { 0, 2, 0, -4, 0 }, { 0, 0, 2, -4, 0 }, /* 601-610 */ { 0, 0, 1, -1, 0 }, { 0, 0, 0, 6, 0 }, { 0, 2, 0, 0, -2 }, { 0, 1, -2, 2, -3 }, { 4, 0, 0, 2, 0 }, { 3, 0, 0, -1, 0 }, { 3, -1, 0, 2, 0 }, { 2, 1, 0, 1, 0 }, { 2, 1, 0, -6, 0 }, { 2, -1, 2, 0, 0 }, /* 611-620 */ { 1, 0, 2, -1, 0 }, { 1, -1, 0, 1, 0 }, { 1, -1, -2, -2, 0 }, { 0, 1, 2, 2, 0 }, { 0, 0, 2, -3, 0 }, { 2, 2, 0, -2, -1 }, { 2, -1, -2, 0, 1 }, { 1, 2, 2, -4, 1 }, { 0, 1, 4, -4, 2 }, { 0, 0, 0, 3, 2 }, /* 621-630 */ { 5, 0, 2, 0, 1 }, { 4, 1, 2, -2, 2 }, { 4, 0, -2, -2, 0 }, { 3, 1, 2, 2, 2 }, { 3, 1, 0, -2, 0 }, { 3, 1, -2, -6, -2 }, { 3, 0, 0, 0, -2 }, { 3, 0, -2, -4, -2 }, { 3, -1, 0, -3, 0 }, { 3, -1, 0, -2, 0 }, /* 631-640 */ { 2, 1, 2, 0, 0 }, { 2, 1, 2, -4, 2 }, { 2, 1, 2, -2, 0 }, { 2, 1, 0, -3, 0 }, { 2, 1, -2, 0, -2 }, { 2, 0, 0, -4, 2 }, { 2, 0, 0, -4, -2 }, { 2, 0, -2, -5, -2 }, { 2, -1, 2, 4, 2 }, { 2, -1, 0, -2, 2 }, /* 641-650 */ { 1, 3, -2, -2, -2 }, { 1, 1, 0, 0, -2 }, { 1, 1, 0, -6, 0 }, { 1, 1, -2, 1, -2 }, { 1, 1, -2, -1, -2 }, { 1, 0, 2, 1, 0 }, { 1, 0, 0, 3, 0 }, { 1, 0, 0, -4, 2 }, { 1, 0, -2, 4, -2 }, { 1, -2, 0, -1, 0 }, /* 651-NFLS */ { 0, 1, -4, 2, -1 }, { 1, 0, -2, 0, -3 }, { 0, 0, 4, -4, 4 } }; /* Number of frequencies: luni-solar */ static const int NFLS = (int) (sizeof mfals / sizeof (int) / 5); /* Fundamental-argument multipliers: planetary terms */ static const int mfapl[][14] = { /* 1-10 */ { 0, 0, 1, -1, 1, 0, 0, -1, 0, -2, 5, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -5, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, -2 }, { 0, 0, 1, -1, 1, 0, -8, 12, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 4, -8, 3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 8,-16, 4, 5, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, -1, 2, 0, 0, 0, 0, 0 }, /* 11-20 */ { 0, 0, 0, 0, 0, 0, 8,-13, 0, 0, 0, 0, 0, -1 }, { 0, 0, 1, -1, 1, 0, 0, -1, 0, 2, -5, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, -5, 6, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 4, -6, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 3, 0, -1, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 2, -8, 3, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 6, -8, 3, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 0, 0, 0 }, /* 21-30 */ { 0, 0, 0, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 1, 0, 0, -4, 8, -3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 4, -8, 3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -5, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 2 }, { 0, 0, 1, -1, 1, 0, 0, 0, -2, 0, 0, 0, 0, 0 }, { 2, 0, 0, -2, -1, 0, 0, -2, 0, 2, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1 }, { 2, 0, 0, -2, 0, 0, 0, -2, 0, 2, 0, 0, 0, 0 }, /* 31-40 */ { 0, 0, 0, 0, 0, 0, 0, 2, 0, -2, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 8,-13, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 5, -8, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -5, 0, 0, 1 }, { 2, 0, 0, -2, 0, 0, 0, -2, 0, 3, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, 0, -1, 0, -1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 3, -4, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, 0, -1, 0, 0, -1, 0, 0, 0 }, /* 41-50 */ { 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 5, -7, 0, 0, 0, 0, 0, -2 }, { 0, 0, 1, -1, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 4, 0, -2, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 8,-13, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 2, -1, 0, 0, 0, 0, 0, 2 }, { 1, 0, 0, 0, 0, 0,-18, 16, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, 0, -1, 0, 2, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 2 }, /* 51-60 */ { 0, 0, 1, -1, 1, 0, -5, 7, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0,-10, 3, 0, 0, 0, 0, 0, 0 }, { 0, 0, 2, -2, 0, 0, -5, 6, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 2, 0, -1, 0, 0, 0, 2 }, { 1, 0, 2, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 4, -2, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1 }, { 1, 0, -2, 0, -2, 0, 0, 4, -8, 3, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, 0, -1, 0, 0, 2, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, -3, 3, 0, 0, 0, 0, 0, 0 }, /* 61-70 */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 8,-16, 4, 5, 0, 0, -2 }, { 0, 0, 1, -1, 1, 0, 0, 3, -8, 3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 8,-11, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 8,-16, 4, 5, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 4, -6, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, -3, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, 0 }, /* 71-80 */ { 0, 0, 0, 0, 0, 0, 6, -8, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 3, -2, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 8,-15, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 2, -5, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 1, -3, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 3, 0, -2, 0, 0, 0, 2 }, { 0, 0, 1, -1, 1, 0, 0, -5, 8, -3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 3, -2, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, 0 }, /* 81-90 */ { 2, 0, 0, -2, 1, 0, 0, -2, 0, 3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 5, -8, 0, 0, 0, 0, 0, -1 }, { 2, 0, 0, -2, 0, 0, -3, 3, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 8,-13, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, -2, 5, 0, 0, 0 }, { 1, 0, 0, -1, 0, 0, -3, 4, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2 }, { 1, 0, 0, 0, -1, 0,-18, 16, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, -5, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, /* 91-100 */ { 1, 0, 0, -2, 0, 0, 19,-21, 3, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, -8, 13, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, 0, -1, 0, 0, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 7, -9, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2 }, { 1, 0, 0, 0, 1, 0,-18, 16, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 6,-16, 4, 5, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 4, -7, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 3, -7, 0, 0, 0, 0, 0, -2 }, /* 101-110 */ { 0, 0, 0, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1 }, { 2, 0, 0, -2, 1, 0, 0, -2, 0, 2, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 3, -4, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 0 }, { 2, 0, 0, -2, -1, 0, 0, -2, 0, 3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2 }, /* 111-120 */ { 0, 0, 0, 0, 1, 0, 0, 1, -2, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2 }, { 0, 0, 2, -2, 1, 0, 0, -2, 0, 2, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 2, 0, -3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 0, 0, 0, -1, 0, -1, 0, 0, 0, 0 }, { 2, 0, 0, -2, 0, 0, -6, 8, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, 0, -2, 2, 0, 0, 0, 0, 0 }, /* 121-130 */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1 }, { 0, 0, 1, -1, 1, 0, 0, -1, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 8,-10, 0, 0, 0, 0, 0, -2 }, { 0, 0, 1, -1, 1, 0, -3, 4, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 6, -9, 0, 0, 0, 0, 0, -2 }, { 1, 0, 0, -1, 1, 0, 0, -1, 0, 2, 0, 0, 0, 0 }, /* 131-140 */ { 0, 0, 0, 0, 0, 0, 5, -7, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 5, -5, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 4, 0, -3, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 1 }, { 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1 }, { 0, 0, 0, 0, 1, 0, 2, -3, 0, 0, 0, 0, 0, 0 }, /* 141-150 */ { 1, 0, 0, -1, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, -3, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 5, -4, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 9,-11, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 8,-15, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, -4, 5, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 4, -6, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 4, 0, -1, 0, 0, 0, 2 }, /* 151-160 */ { 1, 0, 0, -1, 1, 0, -3, 4, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, 0, -1, 0, -4, 10, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 1, -1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, -3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, -4, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -5, 0, 0, -2 }, { 0, 0, 2, -2, 1, 0, -4, 4, 0, 0, 0, 0, 0, 0 }, /* 161-170 */ { 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, -1, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 4, -3, 0, 0, 0, 0, 2 }, { 0, 0, 1, -1, 1, 0, 0, -1, 0, 0, 0, 0, 2, 0 }, { 0, 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 5, -8, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 1 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, 0, -9, 13, 0, 0, 0, 0, 0 }, { 2, 0, 2, 0, 2, 0, 0, 2, 0, -3, 0, 0, 0, 0 }, /* 171-180 */ { 0, 0, 0, 0, 0, 0, 3, -6, 0, 0, 0, 0, 0, -2 }, { 0, 0, 1, -1, 2, 0, 0, -1, 0, 0, 2, 0, 0, 0 }, { 1, 0, 0, -1, -1, 0, -3, 4, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 3, -6, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 6, -6, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1 }, { 1, 0, 2, 0, 1, 0, 0, -2, 0, 3, 0, 0, 0, 0 }, { 1, 0, -2, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, -2, 4, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0 }, /* 181-190 */ { 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1 }, { 0, 0, 2, 0, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, -8, 3, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 6,-10, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 7, -8, 3, 0, 0, 0, 2 }, { 0, 0, 0, 0, 1, 0, -3, 5, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 0, 0, -5, 7, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 2, 0, -2, 0, 0, 0, 1 }, /* 191-200 */ { 0, 0, 0, 0, 0, 0, 0, 2, 0, -1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 7,-10, 0, 0, 0, 0, 0, -2 }, { 1, 0, 0, -2, 0, 0, 0, -2, 0, 2, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, -5, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 6, -8, 0, 0, 0, 0, 0, -1 }, { 0, 0, 1, -1, 1, 0, 0, -9, 15, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, -2, 3, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, -1, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 3, -6, 0, 0, 0, 0, 0 }, /* 201-210 */ { 0, 0, 0, 0, 0, 0, 0, 1, -4, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, -1, 0, 0, 2 }, { 2, 0, 0, -2, 1, 0, -6, 8, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 5, -5, 0, 0, 0, 0, 0, -1 }, { 0, 0, 1, -1, 1, 0, 3, -6, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, -2, 2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, 8,-14, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, /* 211-220 */ { 0, 0, 0, 0, 1, 0, 0, 8,-15, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 4, -6, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 7, -7, 0, 0, 0, 0, 0, 0 }, { 2, 0, 0, -2, 1, 0, -3, 3, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 0, 2 }, { 2, 0, -1, -1, 0, 0, 0, 3, -7, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 4, -7, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, 0, -3, 4, 0, 0, 0, 0, 0 }, /* 221-230 */ { 2, 0, 0, -2, 0, 0, 0, -6, 8, 0, 0, 0, 0, 0 }, { 2, 0, 0, -2, 0, 0, 0, -5, 6, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 1 }, { 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 1 }, { 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 1, 0, 0, 1, 0, -1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 3, -9, 4, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, -2 }, /* 231-240 */ { 0, 0, 0, 0, 0, 0, 0, 2, 0, -4, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1 }, { 0, 0, 0, 0, 0, 0, 7,-11, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 3, -5, 4, 0, 0, 0, 0, 2 }, { 0, 0, 1, -1, 0, 0, 0, -1, 0, -1, 1, 0, 0, 0 }, { 2, 0, 0, 0, 0, 0, 0, -2, 0, 3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 8,-15, 0, 0, 0, 0, -2 }, { 0, 0, 1, -1, 2, 0, 0, -2, 2, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 6, -6, 0, 0, 0, 0, 0, -1 }, /* 241-250 */ { 0, 0, 1, -1, 1, 0, 0, -1, 0, -1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 2, -2, 0, 0, 0, 0, 0, 1 }, { 0, 0, 0, 0, 0, 0, 0, 4, -7, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 3, -8, 3, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, 2, -4, 0, -3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 3, -5, 0, 2, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 3, 0, -3, 0, 0, 0, 2 }, { 0, 0, 2, -2, 2, 0, -8, 11, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 5, -8, 3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -2, 0, 0, 0 }, /* 251-260 */ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 5, -9, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 5, -5, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 7, -9, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 4, -7, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 2, -1, 0, 0, 0, 0, 0, 0 }, { 1, 0, -2, -2, -2, 0, 0, -2, 0, 2, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 2, 0, -2, 5, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 3, -3, 0, 0, 0, 0, 0, 1 }, /* 261-270 */ { 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, -5, 0, 0, 2 }, { 2, 0, 0, -2, -1, 0, 0, -2, 0, 0, 5, 0, 0, 0 }, { 2, 0, 0, -2, -1, 0, -6, 8, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, -2, 0, 0, -3, 3, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 8, -8, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, -5, 0, 0, 2 }, { 0, 0, 0, 0, 1, 0, 3, -7, 4, 0, 0, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, -2, 2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, -1, 0, 1, 0, 0, 0, 0 }, /* 271-280 */ { 0, 0, 1, -1, 0, 0, 0, -1, 0, -2, 5, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 3, 0, -3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 0, 1 }, { 0, 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 6,-15, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 2 }, { 1, 0, 0, -1, 0, 0, 0, -3, 4, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, -3, 7, -4, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 5, 0, -2, 0, 0, 0, 2 }, /* 281-290 */ { 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, 0, 1 }, { 0, 0, 2, -2, 2, 0, -5, 6, 0, 0, 0, 0, 0, 0 }, { 0, 0, 2, -2, 2, 0, -3, 3, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 4, -8, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 4, -5, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 5, -7, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 6,-11, 0, 0, 0, 0, -2 }, /* 291-300 */ { 0, 0, 0, 0, 0, 0, 0, 1, -3, 0, 0, 0, 0, -2 }, { 0, 0, 1, -1, 1, 0, 0, -1, 0, 3, 0, 0, 0, 0 }, { 0, 0, 1, -1, 0, 0, 0, -1, 0, 2, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, 1 }, { 0, 0, 0, 0, 0, 0, 9,-12, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0, 1 }, { 0, 0, 1, -1, 0, 0, -8, 12, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, -2, 3, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 7, -7, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 3, -6, 0, 0, 0, 0, -1 }, /* 301-310 */ { 0, 0, 0, 0, 0, 0, 0, 6, -6, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 1, 0, -4, 0, 0, 0, 0, 0, -2 }, { 0, 0, 1, -1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 6, -9, 0, 0, 0, 0, 0, -1 }, { 0, 0, 1, -1, -1, 0, 0, 0, -2, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, -5, 0, 0, 0, 0, -2 }, { 2, 0, 0, -2, 0, 0, 0, -2, 0, 3, -1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, -2, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 5, -9, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 0, 2 }, /* 311-320 */ { 0, 0, 0, 0, 0, 0, 9, -9, 0, 0, 0, 0, 0, -1 }, { 0, 0, 1, -1, 1, 0, 0, -1, 0, 0, 3, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 2, -4, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 5, -3, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1 }, { 0, 0, 1, -1, 2, 0, 0, -1, 0, 2, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 5, -9, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 5, -3, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 2 }, { 0, 0, 2, 0, 2, 0, 0, 4, -8, 3, 0, 0, 0, 0 }, /* 321-330 */ { 0, 0, 2, 0, 2, 0, 0, -4, 8, -3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 5, 0, -3, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0 }, { 2, 0, -1, -1, -1, 0, 0, -1, 0, 3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 4, -3, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 4, -2, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 5,-10, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 8,-13, 0, 0, 0, 0, 0, 1 }, { 0, 0, 2, -2, 1, -1, 0, 2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, 0, -1, 0, 0, 0, 2, 0, 0 }, /* 331-340 */ { 0, 0, 0, 0, 1, 0, 3, -5, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, -2, 0, 0, 0, -2, 0, 3, 0, 0, 0, 0 }, { 0, 0, 2, -2, 0, 0, -3, 3, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 9, -9, 0, 0, 0, 0, 0, 0 }, { 0, 0, 2, 0, 2, 0, 1, -1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, 0, -8, 11, 0, 0, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, 0, -2, 0, 0, 2, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, 0, -1, 0, -1, 2, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 5, -5, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 2, -6, 0, 0, 0, 0, 0, -2 }, /* 341-350 */ { 0, 0, 0, 0, 0, 0, 0, 8,-15, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 5, -2, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 7,-13, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 3, 0, -2, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 2 }, { 0, 0, 2, -2, 1, 0, 0, -2, 0, 3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 8, -8, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 8,-10, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 4, -2, 0, 0, 0, 0, 0, 1 }, /* 351-360 */ { 0, 0, 0, 0, 0, 0, 3, -6, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 3, -4, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -5, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 2, 0, -4, 0, 0, 0, 0 }, { 2, 0, 0, -2, -1, 0, 0, -5, 6, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 2, -5, 0, 0, 0, 0, -2 }, { 2, 0, -1, -1, -1, 0, 0, 3, -7, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 5, -8, 0, 0, 0, 0, 0 }, { 0, 0, 2, 0, 2, 0, -1, 1, 0, 0, 0, 0, 0, 0 }, /* 361-370 */ { 2, 0, 0, -2, 0, 0, 0, -2, 0, 4, -3, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 6,-11, 0, 0, 0, 0, 0 }, { 2, 0, 0, -2, 1, 0, 0, -6, 8, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 4, -8, 1, 5, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 6, -5, 0, 0, 0, 0, 2 }, { 1, 0, -2, -2, -2, 0, -3, 3, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 2, 0, 0, 0, -2, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 2, 0, 0, 4, -8, 3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 2, 0, 0, -4, 8, -3, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 1 }, /* 371-380 */ { 0, 0, 0, 0, 0, 0, 0, 6, -7, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, -2, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, -2, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 1 }, { 0, 0, 0, 0, 0, 0, 0, 1, -6, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, -5, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2 }, { 0, 0, 0, 0, 0, 0, 3, -5, 0, 2, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 7,-13, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 2, 0, -2, 0, 0, 0, 2 }, /* 381-390 */ { 0, 0, 1, -1, 0, 0, 0, -1, 0, 0, 2, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, -8, 15, 0, 0, 0, 0, 0 }, { 2, 0, 0, -2, -2, 0, -3, 3, 0, 0, 0, 0, 0, 0 }, { 2, 0, -1, -1, -1, 0, 0, -1, 0, 2, 0, 0, 0, 0 }, { 1, 0, 2, -2, 2, 0, 0, -2, 0, 2, 0, 0, 0, 0 }, { 1, 0, -1, 1, -1, 0,-18, 17, 0, 0, 0, 0, 0, 0 }, { 0, 0, 2, 0, 2, 0, 0, 1, 0, -1, 0, 0, 0, 0 }, { 0, 0, 2, 0, 2, 0, 0, -1, 0, 1, 0, 0, 0, 0 }, { 0, 0, 2, -2, -1, 0, -5, 6, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 2, 0, 0, -1, 0, 1, 0, 0, 0, 0 }, /* 391-400 */ { 0, 0, 0, 0, 1, 0, 2, -2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 8,-16, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2 }, { 0, 0, 0, 0, 2, 0, 0, -1, 2, 0, 0, 0, 0, 0 }, { 2, 0, -1, -1, -2, 0, 0, -1, 0, 2, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 6,-10, 0, 0, 0, 0, 0, -1 }, { 0, 0, 1, -1, 1, 0, 0, -1, 0, -2, 4, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2 }, { 2, 0, 0, -2, -1, 0, 0, -2, 0, 4, -5, 0, 0, 0 }, /* 401-410 */ { 2, 0, 0, -2, -1, 0, -3, 3, 0, 0, 0, 0, 0, 0 }, { 2, 0, -1, -1, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0 }, { 1, 0, 1, -1, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, -1, -1, 0, 0, -2, 2, 0, 0, 0, 0, 0 }, { 1, 0, -1, -1, -1, 0, 20,-20, 0, 0, 0, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, 0, -1, 0, 1, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, 1, -2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, -2, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 5, -8, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1, 0, 0, 0 }, /* 411-420 */ { 0, 0, 0, 0, 0, 0, 9,-11, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 5, -3, 0, 0, 0, 0, 0, 1 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, -3, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1 }, { 0, 0, 0, 0, 0, 0, 6, -7, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 3, -2, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, -2 }, { 0, 0, 1, -1, 1, 0, 0, -1, 0, 0, -2, 0, 0, 0 }, { 0, 0, 1, -1, 2, 0, 0, -1, 0, -2, 5, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 5, -7, 0, 0, 0, 0, 0 }, /* 421-430 */ { 0, 0, 0, 0, 0, 0, 1, -3, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 5, -8, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 2, -6, 0, 0, 0, 0, -2 }, { 1, 0, 0, -2, 0, 0, 20,-21, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 8,-12, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 4, -4, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 2, 0, 0, -1, 0, -1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 8,-12, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 9,-17, 0, 0, 0, 0, 0 }, /* 431-440 */ { 0, 0, 0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 4, -8, 1, 5, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 4, -6, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 2, -7, 0, 0, 0, 0, -2 }, { 1, 0, 0, -1, 1, 0, 0, -3, 4, 0, 0, 0, 0, 0 }, { 1, 0, -2, 0, -2, 0,-10, 3, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, -9, 17, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, -4, 0, 0, 0, 0, 0, -2 }, { 1, 0, -2, -2, -2, 0, 0, -2, 0, 3, 0, 0, 0, 0 }, { 1, 0, -1, 1, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, /* 441-450 */ { 0, 0, 2, -2, 2, 0, 0, -2, 0, 2, 0, 0, 0, 0 }, { 0, 0, 1, -1, 2, 0, 0, -1, 0, 0, 1, 0, 0, 0 }, { 0, 0, 1, -1, 2, 0, -5, 7, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 2, -2, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 4, -5, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 3, -4, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 5,-10, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 4, 0, -4, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 2, 0, -5, 0, 0, 0, -2 }, /* 451-460 */ { 0, 0, 0, 0, 0, 0, 0, 1, 0, -5, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, 5, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, -2, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 2, -3, 0, 0, 0, 0, 0, 1 }, { 1, 0, 0, -2, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 3, -7, 4, 0, 0, 0, 0, 0 }, { 2, 0, 2, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, -1, 0, 0, -1, 0, -1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 1, 0, -2, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 6,-10, 0, 0, 0, 0, -2 }, /* 461-470 */ { 1, 0, 0, -1, 1, 0, 0, -1, 0, 1, 0, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, 0, 4, -8, 3, 0, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, 0, 1, 0, -1, 0, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, 0, -4, 8, -3, 0, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, 0, -3, 0, 3, 0, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, -5, 5, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, 1, -3, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, 0, -4, 6, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, 0, -1, 0, 0, 0, -1, 0, 0 }, { 0, 0, 1, -1, 1, 0, -5, 6, 0, 0, 0, 0, 0, 0 }, /* 471-480 */ { 0, 0, 0, 0, 1, 0, 3, -4, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, -2, 2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 7,-10, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 5, -5, 0, 0, 0, 0, 0, 1 }, { 0, 0, 0, 0, 0, 0, 4, -5, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 3, -8, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 2, -5, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 7, -9, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 7, -8, 0, 0, 0, 0, 2 }, /* 481-490 */ { 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 3, -8, 3, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, -2, 0, 0, 1 }, { 0, 0, 0, 0, 0, 0, 0, 2, -4, 0, 0, 0, 0, 1 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, -1 }, { 2, 0, 0, -2, -1, 0, 0, -6, 8, 0, 0, 0, 0, 0 }, { 2, 0, -1, -1, 1, 0, 0, 3, -7, 0, 0, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, 0, -7, 9, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0, 0, -1 }, /* 491-500 */ { 0, 0, 1, -1, 2, 0, -8, 12, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0, 0, -2, 0, 2, 0, 0, 0, 0 }, { 1, 0, 0, -2, 0, 0, 2, -2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 7, -8, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0 }, { 2, 0, 0, -2, 1, 0, 0, -5, 6, 0, 0, 0, 0, 0 }, { 2, 0, 0, -2, -1, 0, 0, -2, 0, 3, -1, 0, 0, 0 }, { 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, -2, 1, 0, 0, -2, 0, 2, 0, 0, 0, 0 }, { 1, 0, 0, -2, -1, 0, 0, -2, 0, 2, 0, 0, 0, 0 }, /* 501-510 */ { 1, 0, 0, -1, -1, 0, 0, -3, 4, 0, 0, 0, 0, 0 }, { 1, 0, -1, 0, -1, 0, -3, 5, 0, 0, 0, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, 0, -4, 4, 0, 0, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, 0, -2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, -8, 11, 0, 0, 0, 0, 0, 0 }, { 0, 0, 2, -2, 0, 0, 0, -9, 13, 0, 0, 0, 0, 0 }, { 0, 0, 1, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, 0, 1, -4, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, 0, -1, 0, 1, -3, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, 7,-13, 0, 0, 0, 0, 0 }, /* 511-520 */ { 0, 0, 0, 0, 1, 0, 0, 2, 0, -2, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, -2, 2, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, -3, 4, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 1, 0, -4, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 7,-11, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 6, -6, 0, 0, 0, 0, 0, 1 }, { 0, 0, 0, 0, 0, 0, 6, -4, 0, 0, 0, 0, 0, 1 }, { 0, 0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 4, -2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 3, -4, 0, 0, 0, 0, 0, 1 }, /* 521-530 */ { 0, 0, 0, 0, 0, 0, 1, -4, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 9,-17, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 7, -7, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 4, -8, 3, 0, 0, 0, 1 }, { 0, 0, 0, 0, 0, 0, 0, 4, -8, 3, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 4, -8, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 4, -7, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, -4, 0, 0, 0, 0 }, { 2, 0, 0, -2, 0, 0, 0, -4, 8, -3, 0, 0, 0, 0 }, /* 531-540 */ { 2, 0, 0, -2, 0, 0, -2, 2, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0, 0, 4, -8, 3, 0, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0, 0, -4, 8, -3, 0, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, -2, 0, 0, 17,-16, 0, -2, 0, 0, 0, 0 }, { 1, 0, 0, -1, 0, 0, 0, -2, 2, 0, 0, 0, 0, 0 }, { 0, 0, 2, -2, 0, 0, 0, -2, 0, 2, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 6, -9, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 3, 0, -4, 0, 0, 0, 0 }, /* 541-550 */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, -2 }, { 0, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 2 }, { 2, 0, 0, -2, 0, 0, 0, -4, 4, 0, 0, 0, 0, 0 }, { 2, 0, 0, -2, 0, 0, 0, -2, 0, 2, 2, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0, -3, 3, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, -2, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, -2, 0, 0, 0, 4, -8, 3, 0, 0, 0, 0 }, { 1, 0, 0, -2, 0, 0, 0, -4, 8, -3, 0, 0, 0, 0 }, /* 551-560 */ { 1, 0, 0, -2, 0, 0, -2, 2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 2, -2, 0, 0, -4, 4, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 0, 0, 3, -6, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 0, 0, 0, -2, 2, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0 }, { 0, 0, 1, -1, 0, 0, 0, -1, 0, 0, 1, 0, 0, 0 }, { 0, 0, 1, -1, 0, 0, -4, 5, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 0, 0, -3, 4, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 2, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0 }, /* 561-570 */ { 0, 0, 0, 0, 0, 0, 8, -9, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 3, -6, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, -5, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -2, 0, 0, 0 }, { 2, 0, -2, -2, -2, 0, 0, -2, 0, 2, 0, 0, 0, 0 }, { 1, 0, 0, 0, 1, 0,-10, 3, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, -1, 0,-10, 3, 0, 0, 0, 0, 0, 0 }, { 0, 0, 2, 0, 2, 0, 2, -3, 0, 0, 0, 0, 0, 0 }, { 0, 0, 2, 0, 2, 0, 2, -2, 0, 0, 0, 0, 0, 0 }, /* 571-580 */ { 0, 0, 2, 0, 2, 0, -2, 3, 0, 0, 0, 0, 0, 0 }, { 0, 0, 2, 0, 2, 0, -2, 2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, 0, -1, 0, 2, 0, 0, 0, 0 }, { 2, 0, 2, -2, 2, 0, 0, -2, 0, 3, 0, 0, 0, 0 }, { 2, 0, 1, -3, 1, 0, -6, 7, 0, 0, 0, 0, 0, 0 }, { 2, 0, 0, -2, 0, 0, 2, -5, 0, 0, 0, 0, 0, 0 }, { 2, 0, 0, -2, 0, 0, 0, -2, 0, 5, -5, 0, 0, 0 }, { 2, 0, 0, -2, 0, 0, 0, -2, 0, 1, 5, 0, 0, 0 }, { 2, 0, 0, -2, 0, 0, 0, -2, 0, 0, 5, 0, 0, 0 }, /* 581-590 */ { 2, 0, 0, -2, 0, 0, 0, -2, 0, 0, 2, 0, 0, 0 }, { 2, 0, 0, -2, 0, 0, -4, 4, 0, 0, 0, 0, 0, 0 }, { 2, 0, -2, 0, -2, 0, 0, 5, -9, 0, 0, 0, 0, 0 }, { 2, 0, -1, -1, 0, 0, 0, -1, 0, 3, 0, 0, 0, 0 }, { 1, 0, 2, 0, 2, 0, 1, -1, 0, 0, 0, 0, 0, 0 }, { 1, 0, 2, 0, 2, 0, 0, 4, -8, 3, 0, 0, 0, 0 }, { 1, 0, 2, 0, 2, 0, 0, -4, 8, -3, 0, 0, 0, 0 }, { 1, 0, 2, 0, 2, 0, -1, 1, 0, 0, 0, 0, 0, 0 }, { 1, 0, 2, -2, 2, 0, -3, 3, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0 }, /* 591-600 */ { 1, 0, 0, 0, 0, 0, 0, -2, 0, 3, 0, 0, 0, 0 }, { 1, 0, 0, -2, 0, 0, 0, 2, 0, -2, 0, 0, 0, 0 }, { 1, 0, -2, -2, -2, 0, 0, 1, 0, -1, 0, 0, 0, 0 }, { 1, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 1, 0, -1, -1, 0, 0, 0, 8,-15, 0, 0, 0, 0, 0 }, { 0, 0, 2, 2, 2, 0, 0, 2, 0, -2, 0, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, 1, -1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, 0, -2, 0, 1, 0, 0, 0, 0 }, { 0, 0, 2, -2, 1, 0, 0,-10, 15, 0, 0, 0, 0, 0 }, { 0, 0, 2, -2, 0, -1, 0, 2, 0, 0, 0, 0, 0, 0 }, /* 601-610 */ { 0, 0, 1, -1, 2, 0, 0, -1, 0, 0, -1, 0, 0, 0 }, { 0, 0, 1, -1, 2, 0, -3, 4, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, -4, 6, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 1, 0, -1, 2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 0, 0, 0, -1, 0, 0, -2, 0, 0, 0 }, { 0, 0, 1, -1, 0, 0, -2, 2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, -1, -1, 0, -5, 7, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 2, 0, 0, 0, 2, 0, -2, 0, 0, 0, 0 }, /* 611-620 */ { 0, 0, 0, 2, 0, 0, -2, 2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 2, 0, -3, 5, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 1, 0, -1, 2, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 9,-13, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 8,-14, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 8,-11, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 6, -9, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 6, -8, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 6, -7, 0, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 0, -2 }, /* 621-630 */ { 0, 0, 0, 0, 0, 0, 5, -6, -4, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 5, -4, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 4, -8, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 4, -5, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 3, -3, 0, 2, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 3, -1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 7,-12, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 6, -9, 0, 0, 0, 0, -2 }, /* 631-640 */ { 0, 0, 0, 0, 0, 0, 0, 6, -8, 1, 5, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 6, -4, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 6,-10, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 5, 0, -4, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 5, -9, 0, 0, 0, 0, -1 }, { 0, 0, 0, 0, 0, 0, 0, 5, -8, 3, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 5, -7, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 5, -6, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 5,-16, 4, 5, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 5,-13, 0, 0, 0, 0, -2 }, /* 641-650 */ { 0, 0, 0, 0, 0, 0, 0, 3, 0, -5, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 3, -9, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 3, -7, 0, 0, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, -3, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 2, -8, 1, 5, 0, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, -5, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -3, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, -3, 5, 0, 0, 0 }, /* 651-NFPL */ { 0, 0, 0, 0, 0, 0, 0, 1, -3, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -6, 3, 0, -2 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -2, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2 }, { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 } }; /* Number of frequencies: planetary */ static const int NFPL = (int) (sizeof mfapl / sizeof (int) / 14); /* Pointers into amplitudes array, one pointer per frequency */ static const int nc[] = { /* 1-100 */ 1, 21, 37, 51, 65, 79, 91, 103, 115, 127, 139, 151, 163, 172, 184, 196, 207, 219, 231, 240, 252, 261, 273, 285, 297, 309, 318, 327, 339, 351, 363, 372, 384, 396, 405, 415, 423, 435, 444, 452, 460, 467, 474, 482, 490, 498, 506, 513, 521, 528, 536, 543, 551, 559, 566, 574, 582, 590, 597, 605, 613, 620, 628, 636, 644, 651, 658, 666, 674, 680, 687, 695, 702, 710, 717, 725, 732, 739, 746, 753, 760, 767, 774, 782, 790, 798, 805, 812, 819, 826, 833, 840, 846, 853, 860, 867, 874, 881, 888, 895, /* 101-200 */ 901, 908, 914, 921, 928, 934, 941, 948, 955, 962, 969, 976, 982, 989, 996, 1003, 1010, 1017, 1024, 1031, 1037, 1043, 1050, 1057, 1064, 1071, 1078, 1084, 1091, 1098, 1104, 1112, 1118, 1124, 1131, 1138, 1145, 1151, 1157, 1164, 1171, 1178, 1185, 1192, 1199, 1205, 1212, 1218, 1226, 1232, 1239, 1245, 1252, 1259, 1266, 1272, 1278, 1284, 1292, 1298, 1304, 1310, 1316, 1323, 1329, 1335, 1341, 1347, 1353, 1359, 1365, 1371, 1377, 1383, 1389, 1396, 1402, 1408, 1414, 1420, 1426, 1434, 1440, 1446, 1452, 1459, 1465, 1471, 1477, 1482, 1488, 1493, 1499, 1504, 1509, 1514, 1520, 1527, 1532, 1538, /* 201-300 */ 1543, 1548, 1553, 1558, 1564, 1569, 1574, 1579, 1584, 1589, 1594, 1596, 1598, 1600, 1602, 1605, 1608, 1610, 1612, 1617, 1619, 1623, 1625, 1627, 1629, 1632, 1634, 1640, 1642, 1644, 1646, 1648, 1650, 1652, 1654, 1658, 1660, 1662, 1664, 1668, 1670, 1672, 1673, 1675, 1679, 1681, 1683, 1684, 1686, 1688, 1690, 1693, 1695, 1697, 1701, 1703, 1705, 1707, 1709, 1711, 1712, 1715, 1717, 1721, 1723, 1725, 1727, 1729, 1731, 1733, 1735, 1737, 1739, 1741, 1743, 1745, 1747, 1749, 1751, 1753, 1755, 1757, 1759, 1761, 1762, 1764, 1766, 1768, 1769, 1771, 1773, 1775, 1777, 1779, 1781, 1783, 1785, 1787, 1788, 1790, /* 301-400 */ 1792, 1794, 1796, 1798, 1800, 1802, 1804, 1806, 1807, 1809, 1811, 1815, 1817, 1819, 1821, 1823, 1825, 1827, 1829, 1831, 1833, 1835, 1837, 1839, 1840, 1842, 1844, 1848, 1850, 1852, 1854, 1856, 1858, 1859, 1860, 1862, 1864, 1866, 1868, 1869, 1871, 1873, 1875, 1877, 1879, 1881, 1883, 1885, 1887, 1889, 1891, 1892, 1896, 1898, 1900, 1901, 1903, 1905, 1907, 1909, 1910, 1911, 1913, 1915, 1919, 1921, 1923, 1927, 1929, 1931, 1933, 1935, 1937, 1939, 1943, 1945, 1947, 1948, 1949, 1951, 1953, 1955, 1957, 1958, 1960, 1962, 1964, 1966, 1968, 1970, 1971, 1973, 1974, 1975, 1977, 1979, 1980, 1981, 1982, 1984, /* 401-500 */ 1986, 1988, 1990, 1992, 1994, 1995, 1997, 1999, 2001, 2003, 2005, 2007, 2008, 2009, 2011, 2013, 2015, 2017, 2019, 2021, 2023, 2024, 2025, 2027, 2029, 2031, 2033, 2035, 2037, 2041, 2043, 2045, 2046, 2047, 2049, 2051, 2053, 2055, 2056, 2057, 2059, 2061, 2063, 2065, 2067, 2069, 2070, 2071, 2072, 2074, 2076, 2078, 2080, 2082, 2084, 2086, 2088, 2090, 2092, 2094, 2095, 2096, 2097, 2099, 2101, 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2113, 2115, 2119, 2121, 2123, 2125, 2127, 2129, 2131, 2133, 2135, 2136, 2137, 2139, 2141, 2143, 2145, 2147, 2149, 2151, 2153, 2155, 2157, 2159, 2161, 2163, 2165, 2167, /* 501-600 */ 2169, 2171, 2173, 2175, 2177, 2179, 2181, 2183, 2185, 2186, 2187, 2188, 2192, 2193, 2195, 2197, 2199, 2201, 2203, 2205, 2207, 2209, 2211, 2213, 2217, 2219, 2221, 2223, 2225, 2227, 2229, 2231, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2244, 2246, 2248, 2250, 2252, 2254, 2256, 2258, 2260, 2262, 2264, 2266, 2268, 2270, 2272, 2274, 2276, 2278, 2280, 2282, 2284, 2286, 2288, 2290, 2292, 2294, 2296, 2298, 2300, 2302, 2303, 2304, 2305, 2306, 2307, 2309, 2311, 2313, 2315, 2317, 2319, 2321, 2323, 2325, 2327, 2329, 2331, 2333, 2335, 2337, 2341, 2343, 2345, 2347, 2349, 2351, 2352, 2355, 2356, /* 601-700 */ 2357, 2358, 2359, 2361, 2363, 2364, 2365, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2376, 2378, 2380, 2382, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2417, 2418, 2430, 2438, 2445, 2453, 2460, 2468, 2474, 2480, 2488, 2496, 2504, 2512, 2520, 2527, 2535, 2543, 2550, 2558, 2566, 2574, 2580, 2588, 2596, 2604, 2612, 2619, 2627, 2634, 2642, 2648, 2656, 2664, 2671, 2679, 2685, 2693, 2701, 2709, 2717, 2725, 2733, 2739, 2747, 2753, 2761, 2769, /* 701-800 */ 2777, 2785, 2793, 2801, 2809, 2817, 2825, 2833, 2841, 2848, 2856, 2864, 2872, 2878, 2884, 2892, 2898, 2906, 2914, 2922, 2930, 2938, 2944, 2952, 2958, 2966, 2974, 2982, 2988, 2996, 3001, 3009, 3017, 3025, 3032, 3039, 3045, 3052, 3059, 3067, 3069, 3076, 3083, 3090, 3098, 3105, 3109, 3111, 3113, 3120, 3124, 3128, 3132, 3136, 3140, 3144, 3146, 3150, 3158, 3161, 3165, 3166, 3168, 3172, 3176, 3180, 3182, 3185, 3189, 3193, 3194, 3197, 3200, 3204, 3208, 3212, 3216, 3219, 3221, 3222, 3226, 3230, 3234, 3238, 3242, 3243, 3247, 3251, 3254, 3258, 3262, 3266, 3270, 3274, 3275, 3279, 3283, 3287, 3289, 3293, /* 801-900 */ 3296, 3300, 3303, 3307, 3311, 3315, 3319, 3321, 3324, 3327, 3330, 3334, 3338, 3340, 3342, 3346, 3350, 3354, 3358, 3361, 3365, 3369, 3373, 3377, 3381, 3385, 3389, 3393, 3394, 3398, 3402, 3406, 3410, 3413, 3417, 3421, 3425, 3429, 3433, 3435, 3439, 3443, 3446, 3450, 3453, 3457, 3458, 3461, 3464, 3468, 3472, 3476, 3478, 3481, 3485, 3489, 3493, 3497, 3501, 3505, 3507, 3511, 3514, 3517, 3521, 3524, 3525, 3527, 3529, 3533, 3536, 3540, 3541, 3545, 3548, 3551, 3555, 3559, 3563, 3567, 3569, 3570, 3574, 3576, 3578, 3582, 3586, 3590, 3593, 3596, 3600, 3604, 3608, 3612, 3616, 3620, 3623, 3626, 3630, 3632, /* 901-1000 */ 3636, 3640, 3643, 3646, 3648, 3652, 3656, 3660, 3664, 3667, 3669, 3671, 3675, 3679, 3683, 3687, 3689, 3693, 3694, 3695, 3699, 3703, 3705, 3707, 3710, 3713, 3717, 3721, 3725, 3729, 3733, 3736, 3740, 3744, 3748, 3752, 3754, 3757, 3759, 3763, 3767, 3770, 3773, 3777, 3779, 3783, 3786, 3790, 3794, 3798, 3801, 3805, 3809, 3813, 3817, 3821, 3825, 3827, 3831, 3835, 3836, 3837, 3840, 3844, 3848, 3852, 3856, 3859, 3863, 3867, 3869, 3871, 3875, 3879, 3883, 3887, 3890, 3894, 3898, 3901, 3905, 3909, 3913, 3917, 3921, 3922, 3923, 3924, 3926, 3930, 3932, 3936, 3938, 3940, 3944, 3948, 3952, 3956, 3959, 3963, /* 1001-1100 */ 3965, 3969, 3973, 3977, 3979, 3981, 3982, 3986, 3989, 3993, 3997, 4001, 4004, 4006, 4009, 4012, 4016, 4020, 4024, 4026, 4028, 4032, 4036, 4040, 4044, 4046, 4050, 4054, 4058, 4060, 4062, 4063, 4064, 4068, 4071, 4075, 4077, 4081, 4083, 4087, 4089, 4091, 4095, 4099, 4101, 4103, 4105, 4107, 4111, 4115, 4119, 4123, 4127, 4129, 4131, 4135, 4139, 4141, 4143, 4145, 4149, 4153, 4157, 4161, 4165, 4169, 4173, 4177, 4180, 4183, 4187, 4191, 4195, 4198, 4201, 4205, 4209, 4212, 4213, 4216, 4217, 4221, 4223, 4226, 4230, 4234, 4236, 4240, 4244, 4248, 4252, 4256, 4258, 4262, 4264, 4266, 4268, 4270, 4272, 4276, /* 1101-1200 */ 4279, 4283, 4285, 4287, 4289, 4293, 4295, 4299, 4300, 4301, 4305, 4309, 4313, 4317, 4319, 4323, 4325, 4329, 4331, 4333, 4335, 4337, 4341, 4345, 4349, 4351, 4353, 4357, 4361, 4365, 4367, 4369, 4373, 4377, 4381, 4383, 4387, 4389, 4391, 4395, 4399, 4403, 4407, 4411, 4413, 4414, 4415, 4418, 4419, 4421, 4423, 4427, 4429, 4431, 4433, 4435, 4437, 4439, 4443, 4446, 4450, 4452, 4456, 4458, 4460, 4462, 4466, 4469, 4473, 4477, 4481, 4483, 4487, 4489, 4491, 4493, 4497, 4499, 4501, 4504, 4506, 4510, 4513, 4514, 4515, 4518, 4521, 4522, 4525, 4526, 4527, 4530, 4533, 4534, 4537, 4541, 4542, 4543, 4544, 4545, /* 1201-1300 */ 4546, 4547, 4550, 4553, 4554, 4555, 4558, 4561, 4564, 4567, 4568, 4571, 4574, 4575, 4578, 4581, 4582, 4585, 4586, 4588, 4590, 4592, 4596, 4598, 4602, 4604, 4608, 4612, 4613, 4616, 4619, 4622, 4623, 4624, 4625, 4626, 4629, 4632, 4633, 4636, 4639, 4640, 4641, 4642, 4643, 4644, 4645, 4648, 4649, 4650, 4651, 4652, 4653, 4656, 4657, 4660, 4661, 4664, 4667, 4670, 4671, 4674, 4675, 4676, 4677, 4678, 4681, 4682, 4683, 4684, 4687, 4688, 4689, 4692, 4693, 4696, 4697, 4700, 4701, 4702, 4703, 4704, 4707, 4708, 4711, 4712, 4715, 4716, 4717, 4718, 4719, 4720, 4721, 4722, 4723, 4726, 4729, 4730, 4733, 4736, /* 1301-(NFLS+NFPL) */ 4737, 4740, 4741, 4742, 4745, 4746, 4749, 4752, 4753 }; /* Amplitude coefficients (microarcsec); indexed using the nc array. */ static const double a[] = { /* 1-105 */ -6844318.44, 9205236.26,1328.67,1538.18, 205833.11, 153041.79, -3309.73, 853.32,2037.98, -2301.27, 81.46, 120.56, -20.39, -15.22, 1.73, -1.61, -0.10, 0.11, -0.02, -0.02, -523908.04, 573033.42,-544.75,-458.66, 12814.01, 11714.49, 198.97,-290.91, 155.74,-143.27, -2.75, -1.03, -1.27, -1.16, 0.00, -0.01, -90552.22, 97846.69, 111.23, 137.41,2187.91,2024.68, 41.44, -51.26, 26.92, -24.46, -0.46, -0.28, -0.22, -0.20, 82168.76, -89618.24, -27.64, -29.05, -2004.36, -1837.32, -36.07, 48.00, -24.43, 22.41, 0.47, 0.24, 0.20, 0.18, 58707.02,7387.02, 470.05,-192.40, 164.33, -1312.21, -179.73, -28.93, -17.36, -1.83, -0.50, 3.57, 0.00, 0.13, -20557.78, 22438.42, -20.84, -17.40, 501.82, 459.68, 59.20, -67.30, 6.08, -5.61, -1.36, -1.19, 28288.28, -674.99, -34.69, 35.80, -15.07,-632.54, -11.19, 0.78, -8.41, 0.17, 0.01, 0.07, -15406.85, 20069.50, 15.12, /* 106-219 */ 31.80, 448.76, 344.50, -5.77, 1.41, 4.59, -5.02, 0.17, 0.24, -11991.74, 12902.66, 32.46, 36.70, 288.49, 268.14, 5.70, -7.06, 3.57, -3.23, -0.06, -0.04, -8584.95, -9592.72, 4.42, -13.20,-214.50, 192.06, 23.87, 29.83, 2.54, 2.40, 0.60, -0.48,5095.50, -6918.22, 7.19, 3.92,-154.91,-113.94, 2.86, -1.04, -1.52, 1.73, -0.07, -0.10, -4910.93, -5331.13, 0.76, 0.40,-119.21, 109.81, 2.16, 3.20, 1.46, 1.33, 0.04, -0.02, -6245.02,-123.48, -6.68, -8.20, -2.76, 139.64, 2.71, 0.15, 1.86,2511.85, -3323.89, 1.07, -0.90, -74.33, -56.17, 1.16, -0.01, -0.75, 0.83, -0.02, -0.04,2307.58,3143.98, -7.52, 7.50, 70.31, -51.60, 1.46, 0.16, -0.69, -0.79, 0.02, -0.05,2372.58,2554.51, 5.93, -6.60, 57.12, -53.05, -0.96, -1.24, -0.71, -0.64, -0.01, -2053.16,2636.13, 5.13, 7.80, 58.94, 45.91, -0.42, -0.12, 0.61, -0.66, 0.02, 0.03, -1825.49, /* 220-339 */ -2423.59, 1.23, -2.00, -54.19, 40.82, -1.07, -1.02, 0.54, 0.61, -0.04, 0.04,2521.07,-122.28, -5.97, 2.90, -2.73, -56.37, -0.82, 0.13, -0.75, -1534.09,1645.01, 6.29, 6.80, 36.78, 34.30, 0.92, -1.25, 0.46, -0.41, -0.02, -0.01,1898.27, 47.70, -0.72, 2.50, 1.07, -42.45, -0.94, 0.02, -0.56, -1292.02, -1387.00, 0.00, 0.00, -31.01, 28.89, 0.68, 0.00, 0.38, 0.35, -0.01, -0.01, -1234.96,1323.81, 5.21, 5.90, 29.60, 27.61, 0.74, -1.22, 0.37, -0.33, -0.02, -0.01,1137.48, -1233.89, -0.04, -0.30, -27.59, -25.43, -0.61, 1.00, -0.34, 0.31, 0.01, 0.01,-813.13, -1075.60, 0.40, 0.30, -24.05, 18.18, -0.40, -0.01, 0.24, 0.27, -0.01, 0.01,1163.22, -60.90, -2.94, 1.30, -1.36, -26.01, -0.58, 0.07, -0.35,1029.70, -55.55, -2.63, 1.10, -1.25, -23.02, -0.52, 0.06, -0.31,-556.26, 852.85, 3.16, -4.48, 19.06, 12.44, -0.81, -0.27, 0.17, -0.21, 0.00, 0.02,-603.52, /* 340-467 */ -800.34, 0.44, 0.10, -17.90, 13.49, -0.08, -0.01, 0.18, 0.20, -0.01, 0.01,-628.24, 684.99, -0.64, -0.50, 15.32, 14.05, 3.18, -4.19, 0.19, -0.17, -0.09, -0.07,-866.48, -16.26, 0.52, -1.30, -0.36, 19.37, 0.43, -0.01, 0.26, -512.37, 695.54, -1.47, -1.40, 15.55, 11.46, -0.16, 0.03, 0.15, -0.17, 0.01, 0.01, 506.65, 643.75, 2.54, -2.62, 14.40, -11.33, -0.77, -0.06, -0.15, -0.16, 0.00, 0.01, 664.57, 16.81, -0.40, 1.00, 0.38, -14.86, -3.71, -0.09, -0.20, 405.91, 522.11, 0.99, -1.50, 11.67, -9.08, -0.25, -0.02, -0.12, -0.13,-305.78, 326.60, 1.75, 1.90, 7.30, 6.84, 0.20, -0.04, 300.99,-325.03, -0.44, -0.50, -7.27, -6.73, -1.01, 0.01, 0.00, 0.08, 0.00, 0.02, 438.51, 10.47, -0.56, -0.20, 0.24, -9.81, -0.24, 0.01, -0.13, -264.02, 335.24, 0.99, 1.40, 7.49, 5.90, -0.27, -0.02, 284.09, 307.03, 0.32, -0.40, 6.87, -6.35, -0.99, -0.01, -250.54, 327.11, 0.08, 0.40, 7.31, 5.60, -0.30, 230.72, /* 468-595 */ -304.46, 0.08, -0.10, -6.81, -5.16, 0.27, 229.78, 304.17, -0.60, 0.50, 6.80, -5.14, 0.33, 0.01, 256.30,-276.81, -0.28, -0.40, -6.19, -5.73, -0.14, 0.01,-212.82, 269.45, 0.84, 1.20, 6.02, 4.76, 0.14, -0.02, 196.64, 272.05, -0.84, 0.90, 6.08, -4.40, 0.35, 0.02, 188.95, 272.22, -0.12, 0.30, 6.09, -4.22, 0.34,-292.37, -5.10, -0.32, -0.40, -0.11, 6.54, 0.14, 0.01, 161.79,-220.67, 0.24, 0.10, -4.93, -3.62, -0.08, 261.54, -19.94, -0.95, 0.20, -0.45, -5.85, -0.13, 0.02, 142.16,-190.79, 0.20, 0.10, -4.27, -3.18, -0.07, 187.95, -4.11, -0.24, 0.30, -0.09, -4.20, -0.09, 0.01, 0.00, 0.00, -79.08, 167.90, 0.04, 0.00, 3.75, 1.77, 121.98, 131.04, -0.08, 0.10, 2.93, -2.73, -0.06,-172.95, -8.11, -0.40, -0.20, -0.18, 3.87, 0.09, 0.01,-160.15, -55.30, -14.04, 13.90, -1.23, 3.58, 0.40, 0.31,-115.40, 123.20, 0.60, 0.70, 2.75, 2.58, 0.08, -0.01,-168.26, -2.00, 0.20, -0.20, -0.04, 3.76, /* 596-723 */ 0.08,-114.49, 123.20, 0.32, 0.40, 2.75, 2.56, 0.07, -0.01, 112.14, 120.70, 0.28, -0.30, 2.70, -2.51, -0.07, -0.01, 161.34, 4.03, 0.20, 0.20, 0.09, -3.61, -0.08, 91.31, 126.64, -0.40, 0.40, 2.83, -2.04, -0.04, 0.01, 105.29, 112.90, 0.44, -0.50, 2.52, -2.35, -0.07, -0.01, 98.69,-106.20, -0.28, -0.30, -2.37, -2.21, -0.06, 0.01, 86.74,-112.94, -0.08, -0.20, -2.53, -1.94, -0.05,-134.81, 3.51, 0.20, -0.20, 0.08, 3.01, 0.07, 79.03, 107.31, -0.24, 0.20, 2.40, -1.77, -0.04, 0.01, 132.81, -10.77, -0.52, 0.10, -0.24, -2.97, -0.07, 0.01,-130.31, -0.90, 0.04, 0.00, 0.00, 2.91, -78.56, 85.32, 0.00, 0.00, 1.91, 1.76, 0.04, 0.00, 0.00, -41.53, 89.10, 0.02, 0.00, 1.99, 0.93, 66.03, -71.00, -0.20, -0.20, -1.59, -1.48, -0.04, 60.50, 64.70, 0.36, -0.40, 1.45, -1.35, -0.04, -0.01, -52.27, -70.01, 0.00, 0.00, -1.57, 1.17, 0.03, -52.95, 66.29, 0.32, 0.40, 1.48, 1.18, 0.04, /* 724-851 */ -0.01, 51.02, 67.25, 0.00, 0.00, 1.50, -1.14, -0.03, -55.66, -60.92, 0.16, -0.20, -1.36, 1.24, 0.03, -54.81, -59.20, -0.08, 0.20, -1.32, 1.23, 0.03, 51.32, -55.60, 0.00, 0.00, -1.24, -1.15, -0.03, 48.29, 51.80, 0.20, -0.20, 1.16, -1.08, -0.03, -45.59, -49.00, -0.12, 0.10, -1.10, 1.02, 0.03, 40.54, -52.69, -0.04, -0.10, -1.18, -0.91, -0.02, -40.58, -49.51, -1.00, 1.00, -1.11, 0.91, 0.04, 0.02, -43.76, 46.50, 0.36, 0.40, 1.04, 0.98, 0.03, -0.01, 62.65, -5.00, -0.24, 0.00, -0.11, -1.40, -0.03, 0.01, -38.57, 49.59, 0.08, 0.10, 1.11, 0.86, 0.02, -33.22, -44.04, 0.08, -0.10, -0.98, 0.74, 0.02, 37.15, -39.90, -0.12, -0.10, -0.89, -0.83, -0.02, 36.68, -39.50, -0.04, -0.10, -0.88, -0.82, -0.02, -53.22, -3.91, -0.20, 0.00, -0.09, 1.19, 0.03, 32.43, -42.19, -0.04, -0.10, -0.94, -0.73, -0.02, -51.00, -2.30, -0.12, -0.10, 0.00, 1.14, -29.53, -39.11, 0.04, 0.00, -0.87, 0.66, /* 852-979 */ 0.02, 28.50, -38.92, -0.08, -0.10, -0.87, -0.64, -0.02, 26.54, 36.95, -0.12, 0.10, 0.83, -0.59, -0.01, 26.54, 34.59, 0.04, -0.10, 0.77, -0.59, -0.02, 28.35, -32.55, -0.16, 0.20, -0.73, -0.63, -0.01, -28.00, 30.40, 0.00, 0.00, 0.68, 0.63, 0.01, -27.61, 29.40, 0.20, 0.20, 0.66, 0.62, 0.02, 40.33, 0.40, -0.04, 0.10, 0.00, -0.90, -23.28, 31.61, -0.08, -0.10, 0.71, 0.52, 0.01, 37.75, 0.80, 0.04, 0.10, 0.00, -0.84, 23.66, 25.80, 0.00, 0.00, 0.58, -0.53, -0.01, 21.01, -27.91, 0.00, 0.00, -0.62, -0.47, -0.01, -34.81, 2.89, 0.04, 0.00, 0.00, 0.78, -23.49, -25.31, 0.00, 0.00, -0.57, 0.53, 0.01, -23.47, 25.20, 0.16, 0.20, 0.56, 0.52, 0.02, 19.58, 27.50, -0.12, 0.10, 0.62, -0.44, -0.01, -22.67, -24.40, -0.08, 0.10, -0.55, 0.51, 0.01, -19.97, 25.00, 0.12, 0.20, 0.56, 0.45, 0.01, 21.28, -22.80, -0.08, -0.10, -0.51, -0.48, -0.01, -30.47, 0.91, 0.04, 0.00, /* 980-1107 */ 0.00, 0.68, 18.58, 24.00, 0.04, -0.10, 0.54, -0.42, -0.01, -18.02, 24.40, -0.04, -0.10, 0.55, 0.40, 0.01, 17.74, 22.50, 0.08, -0.10, 0.50, -0.40, -0.01, -19.41, 20.70, 0.08, 0.10, 0.46, 0.43, 0.01, -18.64, 20.11, 0.00, 0.00, 0.45, 0.42, 0.01, -16.75, 21.60, 0.04, 0.10, 0.48, 0.37, 0.01, -18.42, -20.00, 0.00, 0.00, -0.45, 0.41, 0.01, -26.77, 1.41, 0.08, 0.00, 0.00, 0.60, -26.17, -0.19, 0.00, 0.00, 0.00, 0.59, -15.52, 20.51, 0.00, 0.00, 0.46, 0.35, 0.01, -25.42, -1.91, -0.08, 0.00, -0.04, 0.57, 0.45, -17.42, 18.10, 0.00, 0.00, 0.40, 0.39, 0.01, 16.39, -17.60, -0.08, -0.10, -0.39, -0.37, -0.01, -14.37, 18.91, 0.00, 0.00, 0.42, 0.32, 0.01, 23.39, -2.40, -0.12, 0.00, 0.00, -0.52, 14.32, -18.50, -0.04, -0.10, -0.41, -0.32, -0.01, 15.69, 17.08, 0.00, 0.00, 0.38, -0.35, -0.01, -22.99, 0.50, 0.04, 0.00, 0.00, 0.51, 0.00, 0.00, 14.47, -17.60, /* 1108-1235 */ -0.01, 0.00, -0.39, -0.32, -13.33, 18.40, -0.04, -0.10, 0.41, 0.30, 22.47, -0.60, -0.04, 0.00, 0.00, -0.50, -12.78, -17.41, 0.04, 0.00, -0.39, 0.29, 0.01, -14.10, -15.31, 0.04, 0.00, -0.34, 0.32, 0.01, 11.98, 16.21, -0.04, 0.00, 0.36, -0.27, -0.01, 19.65, -1.90, -0.08, 0.00, 0.00, -0.44, 19.61, -1.50, -0.08, 0.00, 0.00, -0.44, 13.41, -14.30, -0.04, -0.10, -0.32, -0.30, -0.01, -13.29, 14.40, 0.00, 0.00, 0.32, 0.30, 0.01, 11.14, -14.40, -0.04, 0.00, -0.32, -0.25, -0.01, 12.24, -13.38, 0.04, 0.00, -0.30, -0.27, -0.01, 10.07, -13.81, 0.04, 0.00, -0.31, -0.23, -0.01, 10.46, 13.10, 0.08, -0.10, 0.29, -0.23, -0.01, 16.55, -1.71, -0.08, 0.00, 0.00, -0.37, 9.75, -12.80, 0.00, 0.00, -0.29, -0.22, -0.01, 9.11, 12.80, 0.00, 0.00, 0.29, -0.20, 0.00, 0.00, -6.44, -13.80, 0.00, 0.00, -0.31, 0.14, -9.19, -12.00, 0.00, 0.00, -0.27, 0.21, -10.30, 10.90, 0.08, 0.10, /* 1236-1363 */ 0.24, 0.23, 0.01, 14.92, -0.80, -0.04, 0.00, 0.00, -0.33, 10.02, -10.80, 0.00, 0.00, -0.24, -0.22, -0.01, -9.75, 10.40, 0.04, 0.00, 0.23, 0.22, 0.01, 9.67, -10.40, -0.04, 0.00, -0.23, -0.22, -0.01, -8.28, -11.20, 0.04, 0.00, -0.25, 0.19, 13.32, -1.41, -0.08, 0.00, 0.00, -0.30, 8.27, 10.50, 0.04, 0.00, 0.23, -0.19, 0.00, 0.00, 13.13, 0.00, 0.00, 0.00, 0.00, -0.29, -12.93, 0.70, 0.04, 0.00, 0.00, 0.29, 7.91, -10.20, 0.00, 0.00, -0.23, -0.18, -7.84, -10.00, -0.04, 0.00, -0.22, 0.18, 7.44, 9.60, 0.00, 0.00, 0.21, -0.17, -7.64, 9.40, 0.08, 0.10, 0.21, 0.17, 0.01, -11.38, 0.60, 0.04, 0.00, 0.00, 0.25, -7.48, 8.30, 0.00, 0.00, 0.19, 0.17, -10.98, -0.20, 0.00, 0.00, 0.00, 0.25, 10.98, 0.20, 0.00, 0.00, 0.00, -0.25, 7.40, -7.90, -0.04, 0.00, -0.18, -0.17, -6.09, 8.40, -0.04, 0.00, 0.19, 0.14, -6.94, -7.49, 0.00, 0.00, -0.17, /* 1364-1491 */ 0.16, 6.92, 7.50, 0.04, 0.00, 0.17, -0.15, 6.20, 8.09, 0.00, 0.00, 0.18, -0.14, -6.12, 7.80, 0.04, 0.00, 0.17, 0.14, 5.85, -7.50, 0.00, 0.00, -0.17, -0.13, -6.48, 6.90, 0.08, 0.10, 0.15, 0.14, 0.01, 6.32, 6.90, 0.00, 0.00, 0.15, -0.14, 5.61, -7.20, 0.00, 0.00, -0.16, -0.13, 9.07, 0.00, 0.00, 0.00, 0.00, -0.20, 5.25, 6.90, 0.00, 0.00, 0.15, -0.12, -8.47, -0.40, 0.00, 0.00, 0.00, 0.19, 6.32, -5.39, -1.11, 1.10, -0.12, -0.14, 0.02, 0.02, 5.73, -6.10, -0.04, 0.00, -0.14, -0.13, 4.70, 6.60, -0.04, 0.00, 0.15, -0.11, -4.90, -6.40, 0.00, 0.00, -0.14, 0.11, -5.33, 5.60, 0.04, 0.10, 0.13, 0.12, 0.01, -4.81, 6.00, 0.04, 0.00, 0.13, 0.11, 5.13, 5.50, 0.04, 0.00, 0.12, -0.11, 4.50, 5.90, 0.00, 0.00, 0.13, -0.10, -4.22, 6.10, 0.00, 0.00, 0.14, -4.53, 5.70, 0.00, 0.00, 0.13, 0.10, 4.18, 5.70, 0.00, 0.00, /* 1492-1619 */ 0.13, -4.75, -5.19, 0.00, 0.00, -0.12, 0.11, -4.06, 5.60, 0.00, 0.00, 0.13, -3.98, 5.60, -0.04, 0.00, 0.13, 4.02, -5.40, 0.00, 0.00, -0.12, 4.49, -4.90, -0.04, 0.00, -0.11, -0.10, -3.62, -5.40, -0.16, 0.20, -0.12, 0.00, 0.01, 4.38, 4.80, 0.00, 0.00, 0.11, -6.40, -0.10, 0.00, 0.00, 0.00, 0.14, -3.98, 5.00, 0.04, 0.00, 0.11, -3.82, -5.00, 0.00, 0.00, -0.11, -3.71, 5.07, 0.00, 0.00, 0.11, 4.14, 4.40, 0.00, 0.00, 0.10, -6.01, -0.50, -0.04, 0.00, 0.00, 0.13, -4.04, 4.39, 0.00, 0.00, 0.10, 3.45, -4.72, 0.00, 0.00, -0.11, 3.31, 4.71, 0.00, 0.00, 0.11, 3.26, -4.50, 0.00, 0.00, -0.10, -3.26, -4.50, 0.00, 0.00, -0.10, -3.34, -4.40, 0.00, 0.00, -0.10, -3.74, -4.00, 3.70, 4.00, 3.34, -4.30, 3.30, -4.30, -3.66, 3.90, 0.04, 3.66, 3.90, 0.04, -3.62, -3.90, -3.61, 3.90, -0.20, 5.30, 0.00, 0.00, 0.12, 3.06, 4.30, 3.30, /* 1620-1747 */ 4.00, 0.40, 0.20, 3.10, 4.10, -3.06, 3.90, -3.30, -3.60, -3.30, 3.36, 0.01, 3.14, 3.40, -4.57, -0.20, 0.00, 0.00, 0.00, 0.10, -2.70, -3.60, 2.94, -3.20, -2.90, 3.20, 2.47, -3.40, 2.55, -3.30, 2.80, -3.08, 2.51, 3.30, -4.10, 0.30, -0.12, -0.10, 4.10, 0.20, -2.74, 3.00, 2.46, 3.23, -3.66, 1.20, -0.20, 0.20, 3.74, -0.40, -2.51, -2.80, -3.74, 2.27, -2.90, 0.00, 0.00, -2.50, 2.70, -2.51, 2.60, -3.50, 0.20, 3.38, -2.22, -2.50, 3.26, -0.40, 1.95, -2.60, 3.22, -0.40, -0.04, -1.79, -2.60, 1.91, 2.50, 0.74, 3.05, -0.04, 0.08, 2.11, -2.30, -2.11, 2.20, -1.87, -2.40, 2.03, -2.20, -2.03, 2.20, 2.98, 0.00, 0.00, 2.98, -1.71, 2.40, 2.94, -0.10, -0.12, 0.10, 1.67, 2.40, -1.79, 2.30, -1.79, 2.20, -1.67, 2.20, 1.79, -2.00, 1.87, -1.90, 1.63, -2.10, -1.59, 2.10, 1.55, -2.10, -1.55, 2.10, -2.59, -0.20, -1.75, -1.90, -1.75, 1.90, -1.83, /* 1748-1875 */ -1.80, 1.51, 2.00, -1.51, -2.00, 1.71, 1.80, 1.31, 2.10, -1.43, 2.00, 1.43, 2.00, -2.43, -1.51, 1.90, -1.47, 1.90, 2.39, 0.20, -2.39, 1.39, 1.90, 1.39, -1.80, 1.47, -1.60, 1.47, -1.60, 1.43, -1.50, -1.31, 1.60, 1.27, -1.60, -1.27, 1.60, 1.27, -1.60, 2.03, 1.35, 1.50, -1.39, -1.40, 1.95, -0.20, -1.27, 1.49, 1.19, 1.50, 1.27, 1.40, 1.15, 1.50, 1.87, -0.10, -1.12, -1.50, 1.87, -1.11, -1.50, -1.11, -1.50, 0.00, 0.00, 1.19, 1.40, 1.27, -1.30, -1.27, -1.30, -1.15, 1.40, -1.23, 1.30, -1.23, -1.30, 1.22, -1.29, 1.07, -1.40, 1.75, -0.20, -1.03, -1.40, -1.07, 1.20, -1.03, 1.15, 1.07, 1.10, 1.51, -1.03, 1.10, 1.03, -1.10, 0.00, 0.00, -1.03, -1.10, 0.91, -1.20, -0.88, -1.20, -0.88, 1.20, -0.95, 1.10, -0.95, -1.10, 1.43, -1.39, 0.95, -1.00, -0.95, 1.00, -0.80, 1.10, 0.91, -1.00, -1.35, 0.88, 1.00, -0.83, 1.00, -0.91, 0.90, 0.91, /* 1876-2003 */ 0.90, 0.88, -0.90, -0.76, -1.00, -0.76, 1.00, 0.76, 1.00, -0.72, 1.00, 0.84, -0.90, 0.84, 0.90, 1.23, 0.00, 0.00, -0.52, -1.10, -0.68, 1.00, 1.19, -0.20, 1.19, 0.76, 0.90, 1.15, -0.10, 1.15, -0.10, 0.72, -0.90, -1.15, -1.15, 0.68, 0.90, -0.68, 0.90, -1.11, 0.00, 0.00, 0.20, 0.79, 0.80, -1.11, -0.10, 0.00, 0.00, -0.48, -1.00, -0.76, -0.80, -0.72, -0.80, -1.07, -0.10, 0.64, 0.80, -0.64, -0.80, 0.64, 0.80, 0.40, 0.60, 0.52, -0.50, -0.60, -0.80, -0.71, 0.70, -0.99, 0.99, 0.56, 0.80, -0.56, 0.80, 0.68, -0.70, 0.68, 0.70, -0.95, -0.64, 0.70, 0.64, 0.70, -0.60, 0.70, -0.60, -0.70, -0.91, -0.10, -0.51, 0.76, -0.91, -0.56, 0.70, 0.88, 0.88, -0.63, -0.60, 0.55, -0.60, -0.80, 0.80, -0.80, -0.52, 0.60, 0.52, 0.60, 0.52, -0.60, -0.48, 0.60, 0.48, 0.60, 0.48, 0.60, -0.76, 0.44, -0.60, 0.52, -0.50, -0.52, 0.50, 0.40, 0.60, -0.40, /* 2004-2131 */ -0.60, 0.40, -0.60, 0.72, -0.72, -0.51, -0.50, -0.48, 0.50, 0.48, -0.50, -0.48, 0.50, -0.48, 0.50, 0.48, -0.50, -0.48, -0.50, -0.68, -0.68, 0.44, 0.50, -0.64, -0.10, -0.64, -0.10, -0.40, 0.50, 0.40, 0.50, 0.40, 0.50, 0.00, 0.00, -0.40, -0.50, -0.36, -0.50, 0.36, -0.50, 0.60, -0.60, 0.40, -0.40, 0.40, 0.40, -0.40, 0.40, -0.40, 0.40, -0.56, -0.56, 0.36, -0.40, -0.36, 0.40, 0.36, -0.40, -0.36, -0.40, 0.36, 0.40, 0.36, 0.40, -0.52, 0.52, 0.52, 0.32, 0.40, -0.32, 0.40, -0.32, 0.40, -0.32, 0.40, 0.32, -0.40, -0.32, -0.40, 0.32, -0.40, 0.28, -0.40, -0.28, 0.40, 0.28, -0.40, 0.28, 0.40, 0.48, -0.48, 0.48, 0.36, -0.30, -0.36, -0.30, 0.00, 0.00, 0.20, 0.40, -0.44, 0.44, -0.44, -0.44, -0.44, -0.44, 0.32, -0.30, 0.32, 0.30, 0.24, 0.30, -0.12, -0.10, -0.28, 0.30, 0.28, 0.30, 0.28, 0.30, 0.28, -0.30, 0.28, -0.30, 0.28, -0.30, 0.28, /* 2132-2259 */ 0.30, -0.28, 0.30, 0.40, 0.40, -0.24, 0.30, 0.24, -0.30, 0.24, -0.30, -0.24, -0.30, 0.24, 0.30, 0.24, -0.30, -0.24, 0.30, 0.24, -0.30, -0.24, -0.30, 0.24, -0.30, 0.24, 0.30, -0.24, 0.30, -0.24, 0.30, 0.20, -0.30, 0.20, -0.30, 0.20, -0.30, 0.20, 0.30, 0.20, -0.30, 0.20, -0.30, 0.20, 0.30, 0.20, 0.30, -0.20, -0.30, 0.20, -0.30, 0.20, -0.30, -0.36, -0.36, -0.36, -0.04, 0.30, 0.12, -0.10, -0.32, -0.24, 0.20, 0.24, 0.20, 0.20, -0.20, -0.20, -0.20, -0.20, -0.20, 0.20, 0.20, 0.20, -0.20, 0.20, 0.20, 0.20, 0.20, -0.20, -0.20, 0.00, 0.00, -0.20, -0.20, -0.20, 0.20, -0.20, 0.20, 0.20, -0.20, -0.20, -0.20, 0.20, 0.20, 0.20, 0.20, 0.20, -0.20, 0.20, -0.20, 0.28, 0.28, 0.28, 0.28, 0.28, 0.28, -0.28, 0.28, 0.12, 0.00, 0.24, 0.16, -0.20, 0.16, -0.20, 0.16, -0.20, 0.16, 0.20, -0.16, 0.20, 0.16, 0.20, -0.16, 0.20, -0.16, 0.20, /* 2260-2387 */ -0.16, 0.20, 0.16, -0.20, 0.16, 0.20, 0.16, -0.20, -0.16, 0.20, -0.16, -0.20, -0.16, 0.20, 0.16, 0.20, 0.16, -0.20, 0.16, -0.20, 0.16, 0.20, 0.16, 0.20, 0.16, 0.20, -0.16, -0.20, 0.16, 0.20, -0.16, 0.20, 0.16, 0.20, -0.16, -0.20, 0.16, -0.20, 0.16, -0.20, -0.16, -0.20, 0.24, -0.24, -0.24, 0.24, 0.24, 0.12, 0.20, 0.12, 0.20, -0.12, -0.20, 0.12, -0.20, 0.12, -0.20, -0.12, 0.20, -0.12, 0.20, -0.12, -0.20, 0.12, 0.20, 0.12, 0.20, 0.12, -0.20, -0.12, 0.20, 0.12, -0.20, -0.12, 0.20, 0.12, 0.20, 0.00, 0.00, -0.12, 0.20, -0.12, 0.20, 0.12, -0.20, -0.12, 0.20, 0.12, 0.20, 0.00, -0.21, -0.20, 0.00, 0.00, 0.20, -0.20, -0.20, -0.20, 0.20, -0.16, -0.10, 0.00, 0.17, 0.16, 0.16, 0.16, 0.16, -0.16, 0.16, 0.16, -0.16, 0.16, -0.16, 0.16, 0.12, 0.10, 0.12, -0.10, -0.12, 0.10, -0.12, 0.10, 0.12, -0.10, -0.12, 0.12, -0.12, 0.12, /* 2388-2515 */ -0.12, 0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, -0.12, 0.12, 0.12, 0.12, 0.12, -0.12, -0.12, 0.12, 0.12, 0.12, -0.12, 0.12, -0.12, -0.12, -0.12, 0.12, -0.12, -0.12, 0.12, 0.00, 0.11, 0.11,-122.67, 164.70, 203.78, 273.50, 3.58, 2.74, 6.18, -4.56, 0.00, -0.04, 0.00, -0.07, 57.44, -77.10, 95.82, 128.60, -1.77, -1.28, 2.85, -2.14, 82.14, 89.50, 0.00, 0.00, 2.00, -1.84, -0.04, 47.73, -64.10, 23.79, 31.90, -1.45, -1.07, 0.69, -0.53, -46.38, 50.50, 0.00, 0.00, 1.13, 1.04, 0.02, -18.38, 0.00, 63.80, 0.00, 0.00, 0.41, 0.00, -1.43, 59.07, 0.00, 0.00, 0.00, 0.00, -1.32, 57.28, 0.00, 0.00, 0.00, 0.00, -1.28, -48.65, 0.00, -1.15, 0.00, 0.00, 1.09, 0.00, 0.03, -18.30, 24.60, -17.30, -23.20, 0.56, 0.41, -0.51, 0.39, -16.91, 26.90, 8.43, 13.30, 0.60, 0.38, 0.31, -0.19, 1.23, -1.70, -19.13, -25.70, -0.03, -0.03, -0.58, 0.43, -0.72, 0.90, -17.34, -23.30, /* 2516-2643 */ 0.03, 0.02, -0.52, 0.39, -19.49, -21.30, 0.00, 0.00, -0.48, 0.44, 0.01, 20.57, -20.10, 0.64, 0.70, -0.45, -0.46, 0.00, -0.01, 4.89, 5.90, -16.55, 19.90, 0.14, -0.11, 0.44, 0.37, 18.22, 19.80, 0.00, 0.00, 0.44, -0.41, -0.01, 4.89, -5.30, -16.51, -18.00, -0.11, -0.11, -0.41, 0.37, -17.86, 0.00, 17.10, 0.00, 0.00, 0.40, 0.00, -0.38, 0.32, 0.00, 24.42, 0.00, 0.00, -0.01, 0.00, -0.55, -23.79, 0.00, 0.00, 0.00, 0.00, 0.53, 14.72, -16.00, -0.32, 0.00, -0.36, -0.33, -0.01, 0.01, 3.34, -4.50, 11.86, 15.90, -0.11, -0.07, 0.35, -0.27, -3.26, 4.40, 11.62, 15.60, 0.09, 0.07, 0.35, -0.26, -19.53, 0.00, 5.09, 0.00, 0.00, 0.44, 0.00, -0.11, -13.48, 14.70, 0.00, 0.00, 0.33, 0.30, 0.01, 10.86, -14.60, 3.18, 4.30, -0.33, -0.24, 0.09, -0.07, -11.30, -15.10, 0.00, 0.00, -0.34, 0.25, 0.01, 2.03, -2.70, 10.82, 14.50, -0.07, -0.05, 0.32, -0.24, 17.46, 0.00, /* 2644-2771 */ 0.00, 0.00, 0.00, -0.39, 16.43, 0.00, 0.52, 0.00, 0.00, -0.37, 0.00, -0.01, 9.35, 0.00, 13.29, 0.00, 0.00, -0.21, 0.00, -0.30, -10.42, 11.40, 0.00, 0.00, 0.25, 0.23, 0.01, 0.44, 0.50, -10.38, 11.30, 0.02, -0.01, 0.25, 0.23, -14.64, 0.00, 0.00, 0.00, 0.00, 0.33, 0.56, 0.80, -8.67, 11.70, 0.02, -0.01, 0.26, 0.19, 13.88, 0.00, -2.47, 0.00, 0.00, -0.31, 0.00, 0.06, -1.99, 2.70, 7.72, 10.30, 0.06, 0.04, 0.23, -0.17, -0.20, 0.00, 13.05, 0.00, 0.00, 0.00, 0.00, -0.29, 6.92, -9.30, 3.34, 4.50, -0.21, -0.15, 0.10, -0.07, -6.60, 0.00, 10.70, 0.00, 0.00, 0.15, 0.00, -0.24, -8.04, -8.70, 0.00, 0.00, -0.19, 0.18, -10.58, 0.00, -3.10, 0.00, 0.00, 0.24, 0.00, 0.07, -7.32, 8.00, -0.12, -0.10, 0.18, 0.16, 1.63, 1.70, 6.96, -7.60, 0.03, -0.04, -0.17, -0.16, -3.62, 0.00, 9.86, 0.00, 0.00, 0.08, 0.00, -0.22, 0.20, -0.20, -6.88, /* 2772-2899 */ -7.50, 0.00, 0.00, -0.17, 0.15, -8.99, 0.00, 4.02, 0.00, 0.00, 0.20, 0.00, -0.09, -1.07, 1.40, -5.69, -7.70, 0.03, 0.02, -0.17, 0.13, 6.48, -7.20, -0.48, -0.50, -0.16, -0.14, -0.01, 0.01, 5.57, -7.50, 1.07, 1.40, -0.17, -0.12, 0.03, -0.02, 8.71, 0.00, 3.54, 0.00, 0.00, -0.19, 0.00, -0.08, 0.40, 0.00, 9.27, 0.00, 0.00, -0.01, 0.00, -0.21, -6.13, 6.70, -1.19, -1.30, 0.15, 0.14, -0.03, 0.03, 5.21, -5.70, -2.51, -2.60, -0.13, -0.12, -0.06, 0.06, 5.69, -6.20, -0.12, -0.10, -0.14, -0.13, -0.01, 2.03, -2.70, 4.53, 6.10, -0.06, -0.05, 0.14, -0.10, 5.01, 5.50, -2.51, 2.70, 0.12, -0.11, 0.06, 0.06, -1.91, 2.60, -4.38, -5.90, 0.06, 0.04, -0.13, 0.10, 4.65, -6.30, 0.00, 0.00, -0.14, -0.10, -5.29, 5.70, 0.00, 0.00, 0.13, 0.12, -2.23, -4.00, -4.65, 4.20, -0.09, 0.05, 0.10, 0.10, -4.53, 6.10, 0.00, 0.00, 0.14, 0.10, 2.47, 2.70, /* 2900-3027 */ -4.46, 4.90, 0.06, -0.06, 0.11, 0.10, -5.05, 5.50, 0.84, 0.90, 0.12, 0.11, 0.02, -0.02, 4.97, -5.40, -1.71, 0.00, -0.12, -0.11, 0.00, 0.04, -0.99, -1.30, 4.22, -5.70, -0.03, 0.02, -0.13, -0.09, 0.99, 1.40, 4.22, -5.60, 0.03, -0.02, -0.13, -0.09, -4.69, -5.20, 0.00, 0.00, -0.12, 0.10, -3.42, 0.00, 6.09, 0.00, 0.00, 0.08, 0.00, -0.14, -4.65, -5.10, 0.00, 0.00, -0.11, 0.10, 0.00, 0.00, -4.53, -5.00, 0.00, 0.00, -0.11, 0.10, -2.43, -2.70, -3.82, 4.20, -0.06, 0.05, 0.10, 0.09, 0.00, 0.00, -4.53, 4.90, 0.00, 0.00, 0.11, 0.10, -4.49, -4.90, 0.00, 0.00, -0.11, 0.10, 2.67, -2.90, -3.62, -3.90, -0.06, -0.06, -0.09, 0.08, 3.94, -5.30, 0.00, 0.00, -0.12, -3.38, 3.70, -2.78, -3.10, 0.08, 0.08, -0.07, 0.06, 3.18, -3.50, -2.82, -3.10, -0.08, -0.07, -0.07, 0.06, -5.77, 0.00, 1.87, 0.00, 0.00, 0.13, 0.00, -0.04, 3.54, -4.80, -0.64, /* 3028-3155 */ -0.90, -0.11, 0.00, -0.02, -3.50, -4.70, 0.68, -0.90, -0.11, 0.00, -0.02, 5.49, 0.00, 0.00, 0.00, 0.00, -0.12, 1.83, -2.50, 2.63, 3.50, -0.06, 0.00, 0.08, 3.02, -4.10, 0.68, 0.90, -0.09, 0.00, 0.02, 0.00, 0.00, 5.21, 0.00, 0.00, 0.00, 0.00, -0.12, -3.54, 3.80, 2.70, 3.60, -1.35, 1.80, 0.08, 0.00, 0.04, -2.90, 3.90, 0.68, 0.90, 0.09, 0.00, 0.02, 0.80, -1.10, -2.78, -3.70, -0.02, 0.00, -0.08, 4.10, 0.00, -2.39, 0.00, 0.00, -0.09, 0.00, 0.05, -1.59, 2.10, 2.27, 3.00, 0.05, 0.00, 0.07, -2.63, 3.50, -0.48, -0.60, -2.94, -3.20, -2.94, 3.20, 2.27, -3.00, -1.11, -1.50, -0.07, 0.00, -0.03, -0.56, -0.80, -2.35, 3.10, 0.00, -0.60, -3.42, 1.90, -0.12, -0.10, 2.63, -2.90, 2.51, 2.80, -0.64, 0.70, -0.48, -0.60, 2.19, -2.90, 0.24, -0.30, 2.15, 2.90, 2.15, -2.90, 0.52, 0.70, 2.07, -2.80, -3.10, 0.00, 1.79, 0.00, 0.00, 0.07, /* 3156-3283 */ 0.00, -0.04, 0.88, 0.00, -3.46, 2.11, 2.80, -0.36, 0.50, 3.54, -0.20, -3.50, -1.39, 1.50, -1.91, -2.10, -1.47, 2.00, 1.39, 1.90, 2.07, -2.30, 0.91, 1.00, 1.99, -2.70, 3.30, 0.00, 0.60, -0.44, -0.70, -1.95, 2.60, 2.15, -2.40, -0.60, -0.70, 3.30, 0.84, 0.00, -3.10, -3.10, 0.00, -0.72, -0.32, 0.40, -1.87, -2.50, 1.87, -2.50, 0.32, 0.40, -0.24, 0.30, -1.87, -2.50, -0.24, -0.30, 1.87, -2.50, -2.70, 0.00, 1.55, 2.03, 2.20, -2.98, -1.99, -2.20, 0.12, -0.10, -0.40, 0.50, 1.59, 2.10, 0.00, 0.00, -1.79, 2.00, -1.03, 1.40, -1.15, -1.60, 0.32, 0.50, 1.39, -1.90, 2.35, -1.27, 1.70, 0.60, 0.80, -0.32, -0.40, 1.35, -1.80, 0.44, 0.00, 2.23, -0.84, 0.90, -1.27, -1.40, -1.47, 1.60, -0.28, -0.30, -0.28, 0.40, -1.27, -1.70, 0.28, -0.40, -1.43, -1.50, 0.00, 0.00, -1.27, -1.70, 2.11, -0.32, -0.40, -1.23, 1.60, 1.19, -1.30, -0.72, -0.80, 0.72, /* 3284-3411 */ -0.80, -1.15, -1.30, -1.35, -1.50, -1.19, -1.60, -0.12, 0.20, 1.79, 0.00, -0.88, -0.28, 0.40, 1.11, 1.50, -1.83, 0.00, 0.56, -0.12, 0.10, -1.27, -1.40, 0.00, 0.00, 1.15, 1.50, -0.12, 0.20, 1.11, 1.50, 0.36, -0.50, -1.07, -1.40, -1.11, 1.50, 1.67, 0.00, 0.80, -1.11, 0.00, 1.43, 1.23, -1.30, -0.24, -1.19, -1.30, -0.24, 0.20, -0.44, -0.90, -0.95, 1.10, 1.07, -1.40, 1.15, -1.30, 1.03, -1.10, -0.56, -0.60, -0.68, 0.90, -0.76, -1.00, -0.24, -0.30, 0.95, -1.30, 0.56, 0.70, 0.84, -1.10, -0.56, 0.00, -1.55, 0.91, -1.30, 0.28, 0.30, 0.16, -0.20, 0.95, 1.30, 0.40, -0.50, -0.88, -1.20, 0.95, -1.10, -0.48, -0.50, 0.00, 0.00, -1.07, 1.20, 0.44, -0.50, 0.95, 1.10, 0.00, 0.00, 0.92, -1.30, 0.95, 1.00, -0.52, 0.60, 1.59, 0.24, -0.40, 0.91, 1.20, 0.84, -1.10, -0.44, -0.60, 0.84, 1.10, -0.44, 0.60, -0.44, 0.60, -0.84, -1.10, -0.80, 0.00, /* 3412-3539 */ 1.35, 0.76, 0.20, -0.91, -1.00, 0.20, -0.30, -0.91, -1.20, -0.95, 1.00, -0.48, -0.50, 0.88, 1.00, 0.48, -0.50, -0.95, -1.10, 0.20, -0.20, -0.99, 1.10, -0.84, 1.10, -0.24, -0.30, 0.20, -0.30, 0.84, 1.10, -1.39, 0.00, -0.28, -0.16, 0.20, 0.84, 1.10, 0.00, 0.00, 1.39, 0.00, 0.00, -0.95, 1.00, 1.35, -0.99, 0.00, 0.88, -0.52, 0.00, -1.19, 0.20, 0.20, 0.76, -1.00, 0.00, 0.00, 0.76, 1.00, 0.00, 0.00, 0.76, 1.00, -0.76, 1.00, 0.00, 0.00, 1.23, 0.76, 0.80, -0.32, 0.40, -0.72, 0.80, -0.40, -0.40, 0.00, 0.00, -0.80, -0.90, -0.68, 0.90, -0.16, -0.20, -0.16, -0.20, 0.68, -0.90, -0.36, 0.50, -0.56, -0.80, 0.72, -0.90, 0.44, -0.60, -0.48, -0.70, -0.16, 0.00, -1.11, 0.32, 0.00, -1.07, 0.60, -0.80, -0.28, -0.40, -0.64, 0.00, 0.91, 1.11, 0.64, -0.90, 0.76, -0.80, 0.00, 0.00, -0.76, -0.80, 1.03, 0.00, -0.36, -0.64, -0.70, 0.36, -0.40, /* 3540-3667 */ 1.07, 0.36, -0.50, -0.52, -0.70, 0.60, 0.00, 0.88, 0.95, 0.00, 0.48, 0.16, -0.20, 0.60, 0.80, 0.16, -0.20, -0.60, -0.80, 0.00, -1.00, 0.12, 0.20, 0.16, -0.20, 0.68, 0.70, 0.59, -0.80, -0.99, -0.56, -0.60, 0.36, -0.40, -0.68, -0.70, -0.68, -0.70, -0.36, -0.50, -0.44, 0.60, 0.64, 0.70, -0.12, 0.10, -0.52, 0.60, 0.36, 0.40, 0.00, 0.00, 0.95, -0.84, 0.00, 0.44, 0.56, 0.60, 0.32, -0.30, 0.00, 0.00, 0.60, 0.70, 0.00, 0.00, 0.60, 0.70, -0.12, -0.20, 0.52, -0.70, 0.00, 0.00, 0.56, 0.70, -0.12, 0.10, -0.52, -0.70, 0.00, 0.00, 0.88, -0.76, 0.00, -0.44, 0.00, 0.00, -0.52, -0.70, 0.52, -0.70, 0.36, -0.40, -0.44, -0.50, 0.00, 0.00, 0.60, 0.60, 0.84, 0.00, 0.12, -0.24, 0.00, 0.80, -0.56, 0.60, -0.32, -0.30, 0.48, -0.50, 0.28, -0.30, -0.48, -0.50, 0.12, 0.20, 0.48, -0.60, 0.48, 0.60, -0.12, 0.20, 0.24, 0.00, 0.76, -0.52, /* 3668-3795 */ -0.60, -0.52, 0.60, 0.48, -0.50, -0.24, -0.30, 0.12, -0.10, 0.48, 0.60, 0.52, -0.20, 0.36, 0.40, -0.44, 0.50, -0.24, -0.30, -0.48, -0.60, -0.44, -0.60, -0.12, 0.10, 0.76, 0.76, 0.20, -0.20, 0.48, 0.50, 0.40, -0.50, -0.24, -0.30, 0.44, -0.60, 0.44, -0.60, 0.36, 0.00, -0.64, 0.72, 0.00, -0.12, 0.00, -0.10, -0.40, -0.60, -0.20, -0.20, -0.44, 0.50, -0.44, 0.50, 0.20, 0.20, -0.44, -0.50, 0.20, -0.20, -0.20, 0.20, -0.44, -0.50, 0.64, 0.00, 0.32, -0.36, 0.50, -0.20, -0.30, 0.12, -0.10, 0.48, 0.50, -0.12, 0.30, -0.36, -0.50, 0.00, 0.00, 0.48, 0.50, -0.48, 0.50, 0.68, 0.00, -0.12, 0.56, -0.40, 0.44, -0.50, -0.12, -0.10, 0.24, 0.30, -0.40, 0.40, 0.64, 0.00, -0.24, 0.64, 0.00, -0.20, 0.00, 0.00, 0.44, -0.50, 0.44, 0.50, -0.12, 0.20, -0.36, -0.50, 0.12, 0.00, 0.64, -0.40, 0.50, 0.00, 0.10, 0.00, 0.00, -0.40, 0.50, 0.00, 0.00, /* 3796-3923 */ -0.40, -0.50, 0.56, 0.00, 0.28, 0.00, 0.10, 0.36, 0.50, 0.00, -0.10, 0.36, -0.50, 0.36, 0.50, 0.00, -0.10, 0.24, -0.20, -0.36, -0.40, 0.16, 0.20, 0.40, -0.40, 0.00, 0.00, -0.36, -0.50, -0.36, -0.50, -0.32, -0.50, -0.12, 0.10, 0.20, 0.20, -0.36, 0.40, -0.60, 0.60, 0.28, 0.00, 0.52, 0.12, -0.10, 0.40, 0.40, 0.00, -0.50, 0.20, -0.20, -0.32, 0.40, 0.16, 0.20, -0.16, 0.20, 0.32, 0.40, 0.56, 0.00, -0.12, 0.32, -0.40, -0.16, -0.20, 0.00, 0.00, 0.40, 0.40, -0.40, -0.40, -0.40, 0.40, -0.36, 0.40, 0.12, 0.10, 0.00, 0.10, 0.36, 0.40, 0.00, -0.10, 0.36, 0.40, -0.36, 0.40, 0.00, 0.10, 0.32, 0.00, 0.44, 0.12, 0.20, 0.28, -0.40, 0.00, 0.00, 0.36, 0.40, 0.32, -0.40, -0.16, 0.12, 0.10, 0.32, -0.40, 0.20, 0.30, -0.24, 0.30, 0.00, 0.10, 0.32, 0.40, 0.00, -0.10, -0.32, -0.40, -0.32, 0.40, 0.00, 0.10, -0.52, -0.52, 0.52, /* 3924-4051 */ 0.32, -0.40, 0.00, 0.00, 0.32, 0.40, 0.32, -0.40, 0.00, 0.00, -0.32, -0.40, -0.32, 0.40, 0.32, 0.40, 0.00, 0.00, 0.32, 0.40, 0.00, 0.00, -0.32, -0.40, 0.00, 0.00, 0.32, 0.40, 0.16, 0.20, 0.32, -0.30, -0.16, 0.00, -0.48, -0.20, 0.20, -0.28, -0.30, 0.28, -0.40, 0.00, 0.00, 0.28, -0.40, 0.00, 0.00, 0.28, -0.40, 0.00, 0.00, -0.28, -0.40, 0.28, 0.40, -0.28, -0.40, -0.48, -0.20, 0.20, 0.24, 0.30, 0.44, 0.00, 0.16, 0.24, 0.30, 0.16, -0.20, 0.24, 0.30, -0.12, 0.20, 0.20, 0.30, -0.16, 0.20, 0.00, 0.00, 0.44, -0.32, 0.30, 0.24, 0.00, -0.36, 0.36, 0.00, 0.24, 0.12, -0.20, 0.20, 0.30, -0.12, 0.00, -0.28, 0.30, -0.24, 0.30, 0.12, 0.10, -0.28, -0.30, -0.28, 0.30, 0.00, 0.00, -0.28, -0.30, 0.00, 0.00, -0.28, -0.30, 0.00, 0.00, 0.28, 0.30, 0.00, 0.00, -0.28, -0.30, -0.28, 0.30, 0.00, 0.00, -0.28, -0.30, 0.00, 0.00, /* 4052-4179 */ 0.28, 0.30, 0.00, 0.00, -0.28, 0.30, 0.28, -0.30, -0.28, 0.30, 0.40, 0.40, -0.24, 0.30, 0.00, -0.10, 0.16, 0.00, 0.36, -0.20, 0.30, -0.12, -0.10, -0.24, -0.30, 0.00, 0.00, -0.24, 0.30, -0.24, 0.30, 0.00, 0.00, -0.24, 0.30, -0.24, 0.30, 0.24, -0.30, 0.00, 0.00, 0.24, -0.30, 0.00, 0.00, 0.24, 0.30, 0.24, -0.30, 0.24, 0.30, -0.24, 0.30, -0.24, 0.30, -0.20, 0.20, -0.16, -0.20, 0.00, 0.00, -0.32, 0.20, 0.00, 0.10, 0.20, -0.30, 0.20, -0.20, 0.12, 0.20, -0.16, 0.20, 0.16, 0.20, 0.20, 0.30, 0.20, 0.30, 0.00, 0.00, -0.20, 0.30, 0.00, 0.00, 0.20, 0.30, -0.20, -0.30, -0.20, -0.30, 0.20, -0.30, 0.00, 0.00, 0.20, 0.30, 0.00, 0.00, 0.20, 0.30, 0.00, 0.00, 0.20, 0.30, 0.00, 0.00, 0.20, 0.30, 0.00, 0.00, 0.20, -0.30, 0.00, 0.00, -0.20, -0.30, 0.00, 0.00, -0.20, 0.30, 0.00, 0.00, -0.20, 0.30, 0.00, 0.00, 0.36, /* 4180-4307 */ 0.00, 0.00, 0.36, 0.12, 0.10, -0.24, 0.20, 0.12, -0.20, -0.16, -0.20, -0.13, 0.10, 0.22, 0.21, 0.20, 0.00, -0.28, 0.32, 0.00, -0.12, -0.20, -0.20, 0.12, -0.10, 0.12, 0.10, -0.20, 0.20, 0.00, 0.00, -0.32, 0.32, 0.00, 0.00, 0.32, 0.32, 0.00, 0.00, -0.24, -0.20, 0.24, 0.20, 0.20, 0.00, -0.24, 0.00, 0.00, -0.24, -0.20, 0.00, 0.00, 0.24, 0.20, -0.24, -0.20, 0.00, 0.00, -0.24, 0.20, 0.16, -0.20, 0.12, 0.10, 0.20, 0.20, 0.00, -0.10, -0.12, 0.10, -0.16, -0.20, -0.12, -0.10, -0.16, 0.20, 0.20, 0.20, 0.00, 0.00, -0.20, 0.20, -0.20, 0.20, -0.20, 0.20, -0.20, 0.20, 0.20, -0.20, -0.20, -0.20, 0.00, 0.00, -0.20, 0.20, 0.20, 0.00, -0.20, 0.00, 0.00, -0.20, 0.20, -0.20, 0.20, -0.20, -0.20, -0.20, -0.20, 0.00, 0.00, 0.20, 0.20, 0.20, 0.20, 0.12, -0.20, -0.12, -0.10, 0.28, -0.28, 0.16, -0.20, 0.00, -0.10, 0.00, 0.10, -0.16, /* 4308-4435 */ 0.20, 0.00, -0.10, -0.16, -0.20, 0.00, -0.10, 0.16, -0.20, 0.16, -0.20, 0.00, 0.00, 0.16, 0.20, -0.16, 0.20, 0.00, 0.00, 0.16, 0.20, 0.16, -0.20, 0.16, -0.20, -0.16, 0.20, 0.16, -0.20, 0.00, 0.00, 0.16, 0.20, 0.00, 0.00, 0.16, 0.20, 0.00, 0.00, -0.16, -0.20, 0.16, -0.20, -0.16, -0.20, 0.00, 0.00, -0.16, -0.20, 0.00, 0.00, -0.16, 0.20, 0.00, 0.00, 0.16, -0.20, 0.16, 0.20, 0.16, 0.20, 0.00, 0.00, -0.16, -0.20, 0.00, 0.00, -0.16, -0.20, 0.00, 0.00, 0.16, 0.20, 0.16, 0.20, 0.00, 0.00, 0.16, 0.20, 0.16, -0.20, 0.16, 0.20, 0.00, 0.00, -0.16, 0.20, 0.00, 0.10, 0.12, -0.20, 0.12, -0.20, 0.00, -0.10, 0.00, -0.10, 0.12, 0.20, 0.00, -0.10, -0.12, 0.20, -0.15, 0.20, -0.24, 0.24, 0.00, 0.00, 0.24, 0.24, 0.12, -0.20, -0.12, -0.20, 0.00, 0.00, 0.12, 0.20, 0.12, -0.20, 0.12, 0.20, 0.12, 0.20, 0.12, 0.20, 0.12, /* 4436-4563 */ -0.20, -0.12, 0.20, 0.00, 0.00, 0.12, 0.20, 0.12, 0.00, -0.20, 0.00, 0.00, -0.12, -0.20, 0.12, -0.20, 0.00, 0.00, 0.12, 0.20, -0.12, 0.20, -0.12, 0.20, 0.12, -0.20, 0.00, 0.00, 0.12, 0.20, 0.20, 0.00, 0.12, 0.00, 0.00, -0.12, 0.20, 0.00, 0.00, -0.12, -0.20, 0.00, 0.00, -0.12, -0.20, -0.12, -0.20, 0.00, 0.00, 0.12, -0.20, 0.12, -0.20, 0.12, 0.20, -0.12, -0.20, 0.00, 0.00, 0.12, -0.20, 0.12, -0.20, 0.12, 0.20, 0.12, 0.00, 0.20, -0.12, -0.20, 0.00, 0.00, 0.12, 0.20, -0.16, 0.00, 0.16, -0.20, 0.20, 0.00, 0.00, -0.20, 0.00, 0.00, -0.20, 0.20, 0.00, 0.00, 0.20, 0.20, -0.20, 0.00, 0.00, -0.20, 0.12, 0.00, -0.16, 0.20, 0.00, 0.00, 0.20, 0.12, -0.10, 0.00, 0.10, 0.16, -0.16, -0.16, -0.16, -0.16, -0.16, 0.00, 0.00, -0.16, 0.00, 0.00, -0.16, -0.16, -0.16, 0.00, 0.00, -0.16, 0.00, 0.00, 0.16, 0.00, 0.00, 0.16, /* 4564-4691 */ 0.00, 0.00, 0.16, 0.16, 0.00, 0.00, -0.16, 0.00, 0.00, -0.16, -0.16, 0.00, 0.00, 0.16, 0.00, 0.00, -0.16, -0.16, 0.00, 0.00, -0.16, -0.16, 0.12, 0.10, 0.12, -0.10, 0.12, 0.10, 0.00, 0.00, 0.12, 0.10, -0.12, 0.10, 0.00, 0.00, 0.12, 0.10, 0.12, -0.10, 0.00, 0.00, -0.12, -0.10, 0.00, 0.00, 0.12, 0.10, 0.12, 0.00, 0.00, 0.12, 0.00, 0.00, -0.12, 0.00, 0.00, 0.12, 0.12, 0.12, 0.12, 0.12, 0.00, 0.00, 0.12, 0.00, 0.00, 0.12, 0.12, 0.00, 0.00, 0.12, 0.00, 0.00, 0.12, -0.12, -0.12, 0.12, 0.12, -0.12, -0.12, 0.00, 0.00, 0.12, -0.12, 0.12, 0.12, -0.12, -0.12, 0.00, 0.00, -0.12, -0.12, 0.00, 0.00, -0.12, 0.12, 0.00, 0.00, 0.12, 0.00, 0.00, 0.12, 0.00, 0.00, 0.12, -0.12, 0.00, 0.00, -0.12, 0.12, -0.12, -0.12, 0.12, 0.00, 0.00, 0.12, 0.12, 0.12, -0.12, 0.00, 0.00, -0.12, -0.12, -0.12, 0.00, 0.00, -0.12, /* 4692-NA */ -0.12, 0.00, 0.00, 0.12, 0.12, 0.00, 0.00, -0.12, -0.12, -0.12, -0.12, 0.12, 0.00, 0.00, 0.12, -0.12, 0.00, 0.00, -0.12, -0.12, 0.00, 0.00, 0.12, -0.12, -0.12, -0.12, -0.12, 0.12, 0.12, -0.12, -0.12, 0.00, 0.00, -0.12, 0.00, 0.00, -0.12, 0.12, 0.00, 0.00, 0.12, 0.00, 0.00, -0.12, -0.12, 0.00, 0.00, -0.12, -0.12, 0.12, 0.00, 0.00, 0.12, 0.12, 0.00, 0.00, 0.12, 0.00, 0.00, 0.12, 0.12, 0.08, 0.00, 0.04 }; /* Number of amplitude coefficients */ static const int NA = (int) (sizeof a / sizeof (double)); /* Amplitude usage: X or Y, sin or cos, power of T. */ static const int jaxy[] = {0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1}; static const int jasc[] = {0,1,1,0,1,0,0,1,0,1,1,0,1,0,0,1,0,1,1,0}; static const int japt[] = {0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4}; /* Miscellaneous */ double t, w, pt[MAXPT+1], fa[14], xypr[2], xypl[2], xyls[2], arg, sc[2]; int jpt, i, j, jxy, ialast, ifreq, m, ia, jsc; /*--------------------------------------------------------------------*/ /* Interval between fundamental date J2000.0 and given date (JC). */ t = ((date1 - DJ00) + date2) / DJC; /* Powers of T. */ w = 1.0; for (jpt = 0; jpt <= MAXPT; jpt++) { pt[jpt] = w; w *= t; } /* Initialize totals in X and Y: polynomial, luni-solar, planetary. */ for (jxy = 0; jxy < 2; jxy++) { xypr[jxy] = 0.0; xyls[jxy] = 0.0; xypl[jxy] = 0.0; } /* --------------------------------- */ /* Fundamental arguments (IERS 2003) */ /* --------------------------------- */ /* Mean anomaly of the Moon. */ fa[0] = iauFal03(t); /* Mean anomaly of the Sun. */ fa[1] = iauFalp03(t); /* Mean argument of the latitude of the Moon. */ fa[2] = iauFaf03(t); /* Mean elongation of the Moon from the Sun. */ fa[3] = iauFad03(t); /* Mean longitude of the ascending node of the Moon. */ fa[4] = iauFaom03(t); /* Planetary longitudes, Mercury through Neptune. */ fa[5] = iauFame03(t); fa[6] = iauFave03(t); fa[7] = iauFae03(t); fa[8] = iauFama03(t); fa[9] = iauFaju03(t); fa[10] = iauFasa03(t); fa[11] = iauFaur03(t); fa[12] = iauFane03(t); /* General accumulated precession in longitude. */ fa[13] = iauFapa03(t); /* -------------------------------------- */ /* Polynomial part of precession-nutation */ /* -------------------------------------- */ for (jxy = 0; jxy < 2; jxy++) { for (j = MAXPT; j >= 0; j--) { xypr[jxy] += xyp[jxy][j] * pt[j]; } } /* ---------------------------------- */ /* Nutation periodic terms, planetary */ /* ---------------------------------- */ /* Work backwards through the coefficients per frequency list. */ ialast = NA; for (ifreq = NFPL-1; ifreq >= 0; ifreq--) { /* Obtain the argument functions. */ arg = 0.0; for (i = 0; i < 14; i++) { m = mfapl[ifreq][i]; if (m != 0) arg += (double)m * fa[i]; } sc[0] = sin(arg); sc[1] = cos(arg); /* Work backwards through the amplitudes at this frequency. */ ia = nc[ifreq+NFLS]; for (i = ialast; i >= ia; i--) { /* Coefficient number (0 = 1st). */ j = i-ia; /* X or Y. */ jxy = jaxy[j]; /* Sin or cos. */ jsc = jasc[j]; /* Power of T. */ jpt = japt[j]; /* Accumulate the component. */ xypl[jxy] += a[i-1] * sc[jsc] * pt[jpt]; } ialast = ia-1; } /* ----------------------------------- */ /* Nutation periodic terms, luni-solar */ /* ----------------------------------- */ /* Continue working backwards through the number of coefficients list. */ for (ifreq = NFLS-1; ifreq >= 0; ifreq--) { /* Obtain the argument functions. */ arg = 0.0; for (i = 0; i < 5; i++) { m = mfals[ifreq][i]; if (m != 0) arg += (double)m * fa[i]; } sc[0] = sin(arg); sc[1] = cos(arg); /* Work backwards through the amplitudes at this frequency. */ ia = nc[ifreq]; for (i = ialast; i >= ia; i--) { /* Coefficient number (0 = 1st). */ j = i-ia; /* X or Y. */ jxy = jaxy[j]; /* Sin or cos. */ jsc = jasc[j]; /* Power of T. */ jpt = japt[j]; /* Accumulate the component. */ xyls[jxy] += a[i-1] * sc[jsc] * pt[jpt]; } ialast = ia-1; } /* ------------------------------------ */ /* Results: CIP unit vector components */ /* ------------------------------------ */ *x = DAS2R * (xypr[0] + (xyls[0] + xypl[0]) / 1e6); *y = DAS2R * (xypr[1] + (xyls[1] + xypl[1]) / 1e6); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/xys00a.c0000644000113000011300000001555712507252057014177 0ustar bellsbells#include "sofa.h" void iauXys00a(double date1, double date2, double *x, double *y, double *s) /* ** - - - - - - - - - - ** i a u X y s 0 0 a ** - - - - - - - - - - ** ** For a given TT date, compute the X,Y coordinates of the Celestial ** Intermediate Pole and the CIO locator s, using the IAU 2000A ** precession-nutation model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** x,y double Celestial Intermediate Pole (Note 2) ** s double the CIO locator s (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The Celestial Intermediate Pole coordinates are the x,y ** components of the unit vector in the Geocentric Celestial ** Reference System. ** ** 3) The CIO locator s (in radians) positions the Celestial ** Intermediate Origin on the equator of the CIP. ** ** 4) A faster, but slightly less accurate result (about 1 mas for ** X,Y), can be obtained by using instead the iauXys00b function. ** ** Called: ** iauPnm00a classical NPB matrix, IAU 2000A ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauS00 the CIO locator s, given X,Y, IAU 2000A ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double rbpn[3][3]; /* Form the bias-precession-nutation matrix, IAU 2000A. */ iauPnm00a(date1, date2, rbpn); /* Extract X,Y. */ iauBpn2xy(rbpn, x, y); /* Obtain s. */ *s = iauS00(date1, date2, *x, *y); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/xys00b.c0000644000113000011300000001554112507252057014171 0ustar bellsbells#include "sofa.h" void iauXys00b(double date1, double date2, double *x, double *y, double *s) /* ** - - - - - - - - - - ** i a u X y s 0 0 b ** - - - - - - - - - - ** ** For a given TT date, compute the X,Y coordinates of the Celestial ** Intermediate Pole and the CIO locator s, using the IAU 2000B ** precession-nutation model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** x,y double Celestial Intermediate Pole (Note 2) ** s double the CIO locator s (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The Celestial Intermediate Pole coordinates are the x,y ** components of the unit vector in the Geocentric Celestial ** Reference System. ** ** 3) The CIO locator s (in radians) positions the Celestial ** Intermediate Origin on the equator of the CIP. ** ** 4) The present function is faster, but slightly less accurate (about ** 1 mas in X,Y), than the iauXys00a function. ** ** Called: ** iauPnm00b classical NPB matrix, IAU 2000B ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauS00 the CIO locator s, given X,Y, IAU 2000A ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double rbpn[3][3]; /* Form the bias-precession-nutation matrix, IAU 2000A. */ iauPnm00b(date1, date2, rbpn); /* Extract X,Y. */ iauBpn2xy(rbpn, x, y); /* Obtain s. */ *s = iauS00(date1, date2, *x, *y); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/xys06a.c0000644000113000011300000001561712507252057014202 0ustar bellsbells#include "sofa.h" void iauXys06a(double date1, double date2, double *x, double *y, double *s) /* ** - - - - - - - - - - ** i a u X y s 0 6 a ** - - - - - - - - - - ** ** For a given TT date, compute the X,Y coordinates of the Celestial ** Intermediate Pole and the CIO locator s, using the IAU 2006 ** precession and IAU 2000A nutation models. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** x,y double Celestial Intermediate Pole (Note 2) ** s double the CIO locator s (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The Celestial Intermediate Pole coordinates are the x,y components ** of the unit vector in the Geocentric Celestial Reference System. ** ** 3) The CIO locator s (in radians) positions the Celestial ** Intermediate Origin on the equator of the CIP. ** ** 4) Series-based solutions for generating X and Y are also available: ** see Capitaine & Wallace (2006) and iauXy06. ** ** Called: ** iauPnm06a classical NPB matrix, IAU 2006/2000A ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauS06 the CIO locator s, given X,Y, IAU 2006 ** ** References: ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 ** ** Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { double rbpn[3][3]; /* Form the bias-precession-nutation matrix, IAU 2006/2000A. */ iauPnm06a(date1, date2, rbpn); /* Extract X,Y. */ iauBpn2xy(rbpn, x, y); /* Obtain s. */ *s = iauS06(date1, date2, *x, *y); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/zp.c0000644000113000011300000001132412507252057013470 0ustar bellsbells#include "sofa.h" void iauZp(double p[3]) /* ** - - - - - - ** i a u Z p ** - - - - - - ** ** Zero a p-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Returned: ** p double[3] p-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { p[0] = 0.0; p[1] = 0.0; p[2] = 0.0; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/zpv.c0000644000113000011300000001141212507252057013654 0ustar bellsbells#include "sofa.h" void iauZpv(double pv[2][3]) /* ** - - - - - - - ** i a u Z p v ** - - - - - - - ** ** Zero a pv-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Returned: ** pv double[2][3] pv-vector ** ** Called: ** iauZp zero p-vector ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { iauZp(pv[0]); iauZp(pv[1]); return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/zr.c0000644000113000011300000001154712507252057013501 0ustar bellsbells#include "sofa.h" void iauZr(double r[3][3]) /* ** - - - - - - ** i a u Z r ** - - - - - - ** ** Initialize an r-matrix to the null matrix. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Returned: ** r double[3][3] r-matrix ** ** This revision: 2013 June 18 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ { r[0][0] = 0.0; r[0][1] = 0.0; r[0][2] = 0.0; r[1][0] = 0.0; r[1][1] = 0.0; r[1][2] = 0.0; r[2][0] = 0.0; r[2][1] = 0.0; r[2][2] = 0.0; return; /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ } sofa/20150209/c/src/sofa.h0000644000113000011300000006002412507252057013775 0ustar bellsbells#ifndef SOFAHDEF #define SOFAHDEF /* ** - - - - - - - ** s o f a . h ** - - - - - - - ** ** Prototype function declarations for SOFA library. ** ** This file is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** This revision: 2015 January 28 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ #include "sofam.h" #include "math.h" #ifdef __cplusplus extern "C" { #endif /* Astronomy/Calendars */ int iauCal2jd(int iy, int im, int id, double *djm0, double *djm); double iauEpb(double dj1, double dj2); void iauEpb2jd(double epb, double *djm0, double *djm); double iauEpj(double dj1, double dj2); void iauEpj2jd(double epj, double *djm0, double *djm); int iauJd2cal(double dj1, double dj2, int *iy, int *im, int *id, double *fd); int iauJdcalf(int ndp, double dj1, double dj2, int iymdf[4]); /* Astronomy/Astrometry */ void iauAb(double pnat[3], double v[3], double s, double bm1, double ppr[3]); void iauApcg(double date1, double date2, double ebpv[2][3], double ehp[3], iauASTROM *astrom); void iauApcg13(double date1, double date2, iauASTROM *astrom); void iauApci(double date1, double date2, double ebpv[2][3], double ehp[3], double x, double y, double s, iauASTROM *astrom); void iauApci13(double date1, double date2, iauASTROM *astrom, double *eo); void iauApco(double date1, double date2, double ebpv[2][3], double ehp[3], double x, double y, double s, double theta, double elong, double phi, double hm, double xp, double yp, double sp, double refa, double refb, iauASTROM *astrom); int iauApco13(double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, iauASTROM *astrom, double *eo); void iauApcs(double date1, double date2, double pv[2][3], double ebpv[2][3], double ehp[3], iauASTROM *astrom); void iauApcs13(double date1, double date2, double pv[2][3], iauASTROM *astrom); void iauAper(double theta, iauASTROM *astrom); void iauAper13(double ut11, double ut12, iauASTROM *astrom); void iauApio(double sp, double theta, double elong, double phi, double hm, double xp, double yp, double refa, double refb, iauASTROM *astrom); int iauApio13(double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, iauASTROM *astrom); void iauAtci13(double rc, double dc, double pr, double pd, double px, double rv, double date1, double date2, double *ri, double *di, double *eo); void iauAtciq(double rc, double dc, double pr, double pd, double px, double rv, iauASTROM *astrom, double *ri, double *di); void iauAtciqn(double rc, double dc, double pr, double pd, double px, double rv, iauASTROM *astrom, int n, iauLDBODY b[], double *ri, double *di); void iauAtciqz(double rc, double dc, iauASTROM *astrom, double *ri, double *di); int iauAtco13(double rc, double dc, double pr, double pd, double px, double rv, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *aob, double *zob, double *hob, double *dob, double *rob, double *eo); void iauAtic13(double ri, double di, double date1, double date2, double *rc, double *dc, double *eo); void iauAticq(double ri, double di, iauASTROM *astrom, double *rc, double *dc); void iauAticqn(double ri, double di, iauASTROM *astrom, int n, iauLDBODY b[], double *rc, double *dc); int iauAtio13(double ri, double di, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *aob, double *zob, double *hob, double *dob, double *rob); void iauAtioq(double ri, double di, iauASTROM *astrom, double *aob, double *zob, double *hob, double *dob, double *rob); int iauAtoc13(const char *type, double ob1, double ob2, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *rc, double *dc); int iauAtoi13(const char *type, double ob1, double ob2, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *ri, double *di); void iauAtoiq(const char *type, double ob1, double ob2, iauASTROM *astrom, double *ri, double *di); void iauLd(double bm, double p[3], double q[3], double e[3], double em, double dlim, double p1[3]); void iauLdn(int n, iauLDBODY b[], double ob[3], double sc[3], double sn[3]); void iauLdsun(double p[3], double e[3], double em, double p1[3]); void iauPmpx(double rc, double dc, double pr, double pd, double px, double rv, double pmt, double pob[3], double pco[3]); int iauPmsafe(double ra1, double dec1, double pmr1, double pmd1, double px1, double rv1, double ep1a, double ep1b, double ep2a, double ep2b, double *ra2, double *dec2, double *pmr2, double *pmd2, double *px2, double *rv2); void iauPvtob(double elong, double phi, double height, double xp, double yp, double sp, double theta, double pv[2][3]); void iauRefco(double phpa, double tc, double rh, double wl, double *refa, double *refb); /* Astronomy/Ephemerides */ int iauEpv00(double date1, double date2, double pvh[2][3], double pvb[2][3]); int iauPlan94(double date1, double date2, int np, double pv[2][3]); /* Astronomy/FundamentalArgs */ double iauFad03(double t); double iauFae03(double t); double iauFaf03(double t); double iauFaju03(double t); double iauFal03(double t); double iauFalp03(double t); double iauFama03(double t); double iauFame03(double t); double iauFane03(double t); double iauFaom03(double t); double iauFapa03(double t); double iauFasa03(double t); double iauFaur03(double t); double iauFave03(double t); /* Astronomy/PrecNutPolar */ void iauBi00(double *dpsibi, double *depsbi, double *dra); void iauBp00(double date1, double date2, double rb[3][3], double rp[3][3], double rbp[3][3]); void iauBp06(double date1, double date2, double rb[3][3], double rp[3][3], double rbp[3][3]); void iauBpn2xy(double rbpn[3][3], double *x, double *y); void iauC2i00a(double date1, double date2, double rc2i[3][3]); void iauC2i00b(double date1, double date2, double rc2i[3][3]); void iauC2i06a(double date1, double date2, double rc2i[3][3]); void iauC2ibpn(double date1, double date2, double rbpn[3][3], double rc2i[3][3]); void iauC2ixy(double date1, double date2, double x, double y, double rc2i[3][3]); void iauC2ixys(double x, double y, double s, double rc2i[3][3]); void iauC2t00a(double tta, double ttb, double uta, double utb, double xp, double yp, double rc2t[3][3]); void iauC2t00b(double tta, double ttb, double uta, double utb, double xp, double yp, double rc2t[3][3]); void iauC2t06a(double tta, double ttb, double uta, double utb, double xp, double yp, double rc2t[3][3]); void iauC2tcio(double rc2i[3][3], double era, double rpom[3][3], double rc2t[3][3]); void iauC2teqx(double rbpn[3][3], double gst, double rpom[3][3], double rc2t[3][3]); void iauC2tpe(double tta, double ttb, double uta, double utb, double dpsi, double deps, double xp, double yp, double rc2t[3][3]); void iauC2txy(double tta, double ttb, double uta, double utb, double x, double y, double xp, double yp, double rc2t[3][3]); double iauEo06a(double date1, double date2); double iauEors(double rnpb[3][3], double s); void iauFw2m(double gamb, double phib, double psi, double eps, double r[3][3]); void iauFw2xy(double gamb, double phib, double psi, double eps, double *x, double *y); void iauNum00a(double date1, double date2, double rmatn[3][3]); void iauNum00b(double date1, double date2, double rmatn[3][3]); void iauNum06a(double date1, double date2, double rmatn[3][3]); void iauNumat(double epsa, double dpsi, double deps, double rmatn[3][3]); void iauNut00a(double date1, double date2, double *dpsi, double *deps); void iauNut00b(double date1, double date2, double *dpsi, double *deps); void iauNut06a(double date1, double date2, double *dpsi, double *deps); void iauNut80(double date1, double date2, double *dpsi, double *deps); void iauNutm80(double date1, double date2, double rmatn[3][3]); double iauObl06(double date1, double date2); double iauObl80(double date1, double date2); void iauP06e(double date1, double date2, double *eps0, double *psia, double *oma, double *bpa, double *bqa, double *pia, double *bpia, double *epsa, double *chia, double *za, double *zetaa, double *thetaa, double *pa, double *gam, double *phi, double *psi); void iauPb06(double date1, double date2, double *bzeta, double *bz, double *btheta); void iauPfw06(double date1, double date2, double *gamb, double *phib, double *psib, double *epsa); void iauPmat00(double date1, double date2, double rbp[3][3]); void iauPmat06(double date1, double date2, double rbp[3][3]); void iauPmat76(double date1, double date2, double rmatp[3][3]); void iauPn00(double date1, double date2, double dpsi, double deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3]); void iauPn00a(double date1, double date2, double *dpsi, double *deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3]); void iauPn00b(double date1, double date2, double *dpsi, double *deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3]); void iauPn06(double date1, double date2, double dpsi, double deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3]); void iauPn06a(double date1, double date2, double *dpsi, double *deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3]); void iauPnm00a(double date1, double date2, double rbpn[3][3]); void iauPnm00b(double date1, double date2, double rbpn[3][3]); void iauPnm06a(double date1, double date2, double rnpb[3][3]); void iauPnm80(double date1, double date2, double rmatpn[3][3]); void iauPom00(double xp, double yp, double sp, double rpom[3][3]); void iauPr00(double date1, double date2, double *dpsipr, double *depspr); void iauPrec76(double date01, double date02, double date11, double date12, double *zeta, double *z, double *theta); double iauS00(double date1, double date2, double x, double y); double iauS00a(double date1, double date2); double iauS00b(double date1, double date2); double iauS06(double date1, double date2, double x, double y); double iauS06a(double date1, double date2); double iauSp00(double date1, double date2); void iauXy06(double date1, double date2, double *x, double *y); void iauXys00a(double date1, double date2, double *x, double *y, double *s); void iauXys00b(double date1, double date2, double *x, double *y, double *s); void iauXys06a(double date1, double date2, double *x, double *y, double *s); /* Astronomy/RotationAndTime */ double iauEe00(double date1, double date2, double epsa, double dpsi); double iauEe00a(double date1, double date2); double iauEe00b(double date1, double date2); double iauEe06a(double date1, double date2); double iauEect00(double date1, double date2); double iauEqeq94(double date1, double date2); double iauEra00(double dj1, double dj2); double iauGmst00(double uta, double utb, double tta, double ttb); double iauGmst06(double uta, double utb, double tta, double ttb); double iauGmst82(double dj1, double dj2); double iauGst00a(double uta, double utb, double tta, double ttb); double iauGst00b(double uta, double utb); double iauGst06(double uta, double utb, double tta, double ttb, double rnpb[3][3]); double iauGst06a(double uta, double utb, double tta, double ttb); double iauGst94(double uta, double utb); /* Astronomy/SpaceMotion */ int iauPvstar(double pv[2][3], double *ra, double *dec, double *pmr, double *pmd, double *px, double *rv); int iauStarpv(double ra, double dec, double pmr, double pmd, double px, double rv, double pv[2][3]); /* Astronomy/StarCatalogs */ void iauFk52h(double r5, double d5, double dr5, double dd5, double px5, double rv5, double *rh, double *dh, double *drh, double *ddh, double *pxh, double *rvh); void iauFk5hip(double r5h[3][3], double s5h[3]); void iauFk5hz(double r5, double d5, double date1, double date2, double *rh, double *dh); void iauH2fk5(double rh, double dh, double drh, double ddh, double pxh, double rvh, double *r5, double *d5, double *dr5, double *dd5, double *px5, double *rv5); void iauHfk5z(double rh, double dh, double date1, double date2, double *r5, double *d5, double *dr5, double *dd5); int iauStarpm(double ra1, double dec1, double pmr1, double pmd1, double px1, double rv1, double ep1a, double ep1b, double ep2a, double ep2b, double *ra2, double *dec2, double *pmr2, double *pmd2, double *px2, double *rv2); /* Astronomy/GalacticCoordinates */ void iauG2icrs ( double dl, double db, double *dr, double *dd ); void iauIcrs2g ( double dr, double dd, double *dl, double *db ); /* Astronomy/GeodeticGeocentric */ int iauEform(int n, double *a, double *f); int iauGc2gd(int n, double xyz[3], double *elong, double *phi, double *height); int iauGc2gde(double a, double f, double xyz[3], double *elong, double *phi, double *height); int iauGd2gc(int n, double elong, double phi, double height, double xyz[3]); int iauGd2gce(double a, double f, double elong, double phi, double height, double xyz[3]); /* Astronomy/Timescales */ int iauD2dtf(const char *scale, int ndp, double d1, double d2, int *iy, int *im, int *id, int ihmsf[4]); int iauDat(int iy, int im, int id, double fd, double *deltat); double iauDtdb(double date1, double date2, double ut, double elong, double u, double v); int iauDtf2d(const char *scale, int iy, int im, int id, int ihr, int imn, double sec, double *d1, double *d2); int iauTaitt(double tai1, double tai2, double *tt1, double *tt2); int iauTaiut1(double tai1, double tai2, double dta, double *ut11, double *ut12); int iauTaiutc(double tai1, double tai2, double *utc1, double *utc2); int iauTcbtdb(double tcb1, double tcb2, double *tdb1, double *tdb2); int iauTcgtt(double tcg1, double tcg2, double *tt1, double *tt2); int iauTdbtcb(double tdb1, double tdb2, double *tcb1, double *tcb2); int iauTdbtt(double tdb1, double tdb2, double dtr, double *tt1, double *tt2); int iauTttai(double tt1, double tt2, double *tai1, double *tai2); int iauTttcg(double tt1, double tt2, double *tcg1, double *tcg2); int iauTttdb(double tt1, double tt2, double dtr, double *tdb1, double *tdb2); int iauTtut1(double tt1, double tt2, double dt, double *ut11, double *ut12); int iauUt1tai(double ut11, double ut12, double dta, double *tai1, double *tai2); int iauUt1tt(double ut11, double ut12, double dt, double *tt1, double *tt2); int iauUt1utc(double ut11, double ut12, double dut1, double *utc1, double *utc2); int iauUtctai(double utc1, double utc2, double *tai1, double *tai2); int iauUtcut1(double utc1, double utc2, double dut1, double *ut11, double *ut12); /* VectorMatrix/AngleOps */ void iauA2af(int ndp, double angle, char *sign, int idmsf[4]); void iauA2tf(int ndp, double angle, char *sign, int ihmsf[4]); int iauAf2a(char s, int ideg, int iamin, double asec, double *rad); double iauAnp(double a); double iauAnpm(double a); void iauD2tf(int ndp, double days, char *sign, int ihmsf[4]); int iauTf2a(char s, int ihour, int imin, double sec, double *rad); int iauTf2d(char s, int ihour, int imin, double sec, double *days); /* VectorMatrix/BuildRotations */ void iauRx(double phi, double r[3][3]); void iauRy(double theta, double r[3][3]); void iauRz(double psi, double r[3][3]); /* VectorMatrix/CopyExtendExtract */ void iauCp(double p[3], double c[3]); void iauCpv(double pv[2][3], double c[2][3]); void iauCr(double r[3][3], double c[3][3]); void iauP2pv(double p[3], double pv[2][3]); void iauPv2p(double pv[2][3], double p[3]); /* VectorMatrix/Initialization */ void iauIr(double r[3][3]); void iauZp(double p[3]); void iauZpv(double pv[2][3]); void iauZr(double r[3][3]); /* VectorMatrix/MatrixOps */ void iauRxr(double a[3][3], double b[3][3], double atb[3][3]); void iauTr(double r[3][3], double rt[3][3]); /* VectorMatrix/MatrixVectorProducts */ void iauRxp(double r[3][3], double p[3], double rp[3]); void iauRxpv(double r[3][3], double pv[2][3], double rpv[2][3]); void iauTrxp(double r[3][3], double p[3], double trp[3]); void iauTrxpv(double r[3][3], double pv[2][3], double trpv[2][3]); /* VectorMatrix/RotationVectors */ void iauRm2v(double r[3][3], double w[3]); void iauRv2m(double w[3], double r[3][3]); /* VectorMatrix/SeparationAndAngle */ double iauPap(double a[3], double b[3]); double iauPas(double al, double ap, double bl, double bp); double iauSepp(double a[3], double b[3]); double iauSeps(double al, double ap, double bl, double bp); /* VectorMatrix/SphericalCartesian */ void iauC2s(double p[3], double *theta, double *phi); void iauP2s(double p[3], double *theta, double *phi, double *r); void iauPv2s(double pv[2][3], double *theta, double *phi, double *r, double *td, double *pd, double *rd); void iauS2c(double theta, double phi, double c[3]); void iauS2p(double theta, double phi, double r, double p[3]); void iauS2pv(double theta, double phi, double r, double td, double pd, double rd, double pv[2][3]); /* VectorMatrix/VectorOps */ double iauPdp(double a[3], double b[3]); double iauPm(double p[3]); void iauPmp(double a[3], double b[3], double amb[3]); void iauPn(double p[3], double *r, double u[3]); void iauPpp(double a[3], double b[3], double apb[3]); void iauPpsp(double a[3], double s, double b[3], double apsb[3]); void iauPvdpv(double a[2][3], double b[2][3], double adb[2]); void iauPvm(double pv[2][3], double *r, double *s); void iauPvmpv(double a[2][3], double b[2][3], double amb[2][3]); void iauPvppv(double a[2][3], double b[2][3], double apb[2][3]); void iauPvu(double dt, double pv[2][3], double upv[2][3]); void iauPvup(double dt, double pv[2][3], double p[3]); void iauPvxpv(double a[2][3], double b[2][3], double axb[2][3]); void iauPxp(double a[3], double b[3], double axb[3]); void iauS2xpv(double s1, double s2, double pv[2][3], double spv[2][3]); void iauSxp(double s, double p[3], double sp[3]); void iauSxpv(double s, double pv[2][3], double spv[2][3]); #ifdef __cplusplus } #endif #endif /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ sofa/20150209/c/src/sofam.h0000644000113000011300000002101012507252057014142 0ustar bellsbells#ifndef SOFAMHDEF #define SOFAMHDEF /* ** - - - - - - - - ** s o f a m . h ** - - - - - - - - ** ** Macros used by SOFA library. ** ** This file is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Please note that the constants defined below are to be used only in ** the context of the SOFA software, and have no other official IAU ** status. In addition, self consistency is not guaranteed. ** ** This revision: 2013 August 27 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ /* Star-independent astrometry parameters */ typedef struct { double pmt; /* PM time interval (SSB, Julian years) */ double eb[3]; /* SSB to observer (vector, au) */ double eh[3]; /* Sun to observer (unit vector) */ double em; /* distance from Sun to observer (au) */ double v[3]; /* barycentric observer velocity (vector, c) */ double bm1; /* sqrt(1-|v|^2): reciprocal of Lorenz factor */ double bpn[3][3]; /* bias-precession-nutation matrix */ double along; /* longitude + s' + dERA(DUT) (radians) */ double phi; /* geodetic latitude (radians) */ double xpl; /* polar motion xp wrt local meridian (radians) */ double ypl; /* polar motion yp wrt local meridian (radians) */ double sphi; /* sine of geodetic latitude */ double cphi; /* cosine of geodetic latitude */ double diurab; /* magnitude of diurnal aberration vector */ double eral; /* "local" Earth rotation angle (radians) */ double refa; /* refraction constant A (radians) */ double refb; /* refraction constant B (radians) */ } iauASTROM; /* (Vectors eb, eh, em and v are all with respect to BCRS axes.) */ /* Body parameters for light deflection */ typedef struct { double bm; /* mass of the body (solar masses) */ double dl; /* deflection limiter (radians^2/2) */ double pv[2][3]; /* barycentric PV of the body (au, au/day) */ } iauLDBODY; /* Pi */ #define DPI (3.141592653589793238462643) /* 2Pi */ #define D2PI (6.283185307179586476925287) /* Radians to degrees */ #define DR2D (57.29577951308232087679815) /* Degrees to radians */ #define DD2R (1.745329251994329576923691e-2) /* Radians to arcseconds */ #define DR2AS (206264.8062470963551564734) /* Arcseconds to radians */ #define DAS2R (4.848136811095359935899141e-6) /* Seconds of time to radians */ #define DS2R (7.272205216643039903848712e-5) /* Arcseconds in a full circle */ #define TURNAS (1296000.0) /* Milliarcseconds to radians */ #define DMAS2R (DAS2R / 1e3) /* Length of tropical year B1900 (days) */ #define DTY (365.242198781) /* Seconds per day. */ #define DAYSEC (86400.0) /* Days per Julian year */ #define DJY (365.25) /* Days per Julian century */ #define DJC (36525.0) /* Days per Julian millennium */ #define DJM (365250.0) /* Reference epoch (J2000.0), Julian Date */ #define DJ00 (2451545.0) /* Julian Date of Modified Julian Date zero */ #define DJM0 (2400000.5) /* Reference epoch (J2000.0), Modified Julian Date */ #define DJM00 (51544.5) /* 1977 Jan 1.0 as MJD */ #define DJM77 (43144.0) /* TT minus TAI (s) */ #define TTMTAI (32.184) /* Astronomical unit (m) */ #define DAU (149597870e3) /* Speed of light (m/s) */ #define CMPS 299792458.0 /* Light time for 1 au (s) */ #define AULT 499.004782 /* Speed of light (AU per day) */ #define DC (DAYSEC / AULT) /* L_G = 1 - d(TT)/d(TCG) */ #define ELG (6.969290134e-10) /* L_B = 1 - d(TDB)/d(TCB), and TDB (s) at TAI 1977/1/1.0 */ #define ELB (1.550519768e-8) #define TDB0 (-6.55e-5) /* Schwarzschild radius of the Sun (au) */ /* = 2 * 1.32712440041e20 / (2.99792458e8)^2 / 1.49597870700e11 */ #define SRS 1.97412574336e-8 /* dint(A) - truncate to nearest whole number towards zero (double) */ #define dint(A) ((A)<0.0?ceil(A):floor(A)) /* dnint(A) - round to nearest whole number (double) */ #define dnint(A) ((A)<0.0?ceil((A)-0.5):floor((A)+0.5)) /* dsign(A,B) - magnitude of A with sign of B (double) */ #define dsign(A,B) ((B)<0.0?-fabs(A):fabs(A)) /* max(A,B) - larger (most +ve) of two numbers (generic) */ #define gmax(A,B) (((A)>(B))?(A):(B)) /* min(A,B) - smaller (least +ve) of two numbers (generic) */ #define gmin(A,B) (((A)<(B))?(A):(B)) /* Reference ellipsoids */ #define WGS84 1 #define GRS80 2 #define WGS72 3 #endif /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ sofa/20150209/c/src/makefile0000644000113000011300000006167212507252057014406 0ustar bellsbells#----------------------------------------------------------------------- # # Description: make file for the ANSI-C version of SOFA. This # make file creates a Unix .a library. Designed for Linux/gcc but # can be adapted for other platforms or run in an appropriate way # by means of the macros CCOMPC (compiler command), CFLAGF (qualifiers # for compiling functions) and CFLAGX (qualifiers for compiling # executables). # # Usage: # # To build the library: # # make # # To install the library and include files: # # make install # # To delete all object files: # # make clean # # To build and run the test program using the installed library: # # make test # # Also: # make all same as make # make uninstall deinstall the library and header files # make check test the build # make installcheck same as make test # make distclean delete all generated binaries # make realclean same as distclean # # Last revision: 2015 February 9 # # Copyright International Astronomical Union. All rights reserved. # #----------------------------------------------------------------------- #----------------------------------------------------------------------- # # DEFINITIONS # #----------------------------------------------------------------------- #----YOU MAY HAVE TO MODIFY THE NEXT FEW DEFINITIONS----- # Specify the installation home directory. INSTALL_DIR = $(HOME) # Specify the installation directory for the library. SOFA_LIB_DIR = $(INSTALL_DIR)/lib/ # Specify the installation directory for the include files. SOFA_INC_DIR = $(INSTALL_DIR)/include/ # This software is compilable only by ANSI C compilers - give the name # of your preferred C compiler (CCOMPC) and compilation flags (CFLAGF # for functions, CFLAGX for executables) here. CCOMPC = gcc CFLAGF = -c -pedantic -Wall -W -O CFLAGX = -pedantic -Wall -W -O #----YOU SHOULDN'T HAVE TO MODIFY ANYTHING BELOW THIS LINE--------- SHELL = /bin/sh # The list of installation directories. INSTALL_DIRS = $(SOFA_LIB_DIR) $(SOFA_INC_DIR) # Name the SOFA/C library in its source and target locations. SOFA_LIB_NAME = libsofa_c.a SOFA_LIB = $(SOFA_LIB_DIR)$(SOFA_LIB_NAME) # Name the SOFA/C testbed in its source and target locations. SOFA_TEST_NAME = t_sofa_c.c SOFA_TEST = t_sofa_c # Name the SOFA/C includes in their source and target locations. SOFA_INC_NAMES = sofa.h sofam.h SOFA_INC = $(SOFA_INC_DIR)sofa.h $(SOFA_INC_DIR)sofam.h # The list of SOFA/C library object files. SOFA_OBS = iauA2af.o \ iauA2tf.o \ iauAb.o \ iauAf2a.o \ iauAnp.o \ iauAnpm.o \ iauApcg.o \ iauApcg13.o \ iauApci.o \ iauApci13.o \ iauApco.o \ iauApco13.o \ iauApcs.o \ iauApcs13.o \ iauAper.o \ iauAper13.o \ iauApio.o \ iauApio13.o \ iauAtci13.o \ iauAtciq.o \ iauAtciqn.o \ iauAtciqz.o \ iauAtco13.o \ iauAtic13.o \ iauAticq.o \ iauAticqn.o \ iauAtio13.o \ iauAtioq.o \ iauAtoc13.o \ iauAtoi13.o \ iauAtoiq.o \ iauBi00.o \ iauBp00.o \ iauBp06.o \ iauBpn2xy.o \ iauC2i00a.o \ iauC2i00b.o \ iauC2i06a.o \ iauC2ibpn.o \ iauC2ixy.o \ iauC2ixys.o \ iauC2s.o \ iauC2t00a.o \ iauC2t00b.o \ iauC2t06a.o \ iauC2tcio.o \ iauC2teqx.o \ iauC2tpe.o \ iauC2txy.o \ iauCal2jd.o \ iauCp.o \ iauCpv.o \ iauCr.o \ iauD2dtf.o \ iauD2tf.o \ iauDat.o \ iauDtdb.o \ iauDtf2d.o \ iauEe00.o \ iauEe00a.o \ iauEe00b.o \ iauEe06a.o \ iauEect00.o \ iauEform.o \ iauEo06a.o \ iauEors.o \ iauEpb.o \ iauEpb2jd.o \ iauEpj.o \ iauEpj2jd.o \ iauEpv00.o \ iauEqeq94.o \ iauEra00.o \ iauFad03.o \ iauFae03.o \ iauFaf03.o \ iauFaju03.o \ iauFal03.o \ iauFalp03.o \ iauFama03.o \ iauFame03.o \ iauFane03.o \ iauFaom03.o \ iauFapa03.o \ iauFasa03.o \ iauFaur03.o \ iauFave03.o \ iauFk52h.o \ iauFk5hip.o \ iauFk5hz.o \ iauFw2m.o \ iauFw2xy.o \ iauG2icrs.o \ iauGc2gd.o \ iauGc2gde.o \ iauGd2gc.o \ iauGd2gce.o \ iauGmst00.o \ iauGmst06.o \ iauGmst82.o \ iauGst00a.o \ iauGst00b.o \ iauGst06.o \ iauGst06a.o \ iauGst94.o \ iauH2fk5.o \ iauHfk5z.o \ iauIcrs2g.o \ iauIr.o \ iauJd2cal.o \ iauJdcalf.o \ iauLd.o \ iauLdn.o \ iauLdsun.o \ iauNum00a.o \ iauNum00b.o \ iauNum06a.o \ iauNumat.o \ iauNut00a.o \ iauNut00b.o \ iauNut06a.o \ iauNut80.o \ iauNutm80.o \ iauObl06.o \ iauObl80.o \ iauP06e.o \ iauP2pv.o \ iauP2s.o \ iauPap.o \ iauPas.o \ iauPb06.o \ iauPdp.o \ iauPfw06.o \ iauPlan94.o \ iauPm.o \ iauPmat00.o \ iauPmat06.o \ iauPmat76.o \ iauPmp.o \ iauPmpx.o \ iauPmsafe.o \ iauPn.o \ iauPn00.o \ iauPn00a.o \ iauPn00b.o \ iauPn06.o \ iauPn06a.o \ iauPnm00a.o \ iauPnm00b.o \ iauPnm06a.o \ iauPnm80.o \ iauPom00.o \ iauPpp.o \ iauPpsp.o \ iauPr00.o \ iauPrec76.o \ iauPv2p.o \ iauPv2s.o \ iauPvdpv.o \ iauPvm.o \ iauPvmpv.o \ iauPvppv.o \ iauPvstar.o \ iauPvtob.o \ iauPvu.o \ iauPvup.o \ iauPvxpv.o \ iauPxp.o \ iauRefco.o \ iauRm2v.o \ iauRv2m.o \ iauRx.o \ iauRxp.o \ iauRxpv.o \ iauRxr.o \ iauRy.o \ iauRz.o \ iauS00.o \ iauS00a.o \ iauS00b.o \ iauS06.o \ iauS06a.o \ iauS2c.o \ iauS2p.o \ iauS2pv.o \ iauS2xpv.o \ iauSepp.o \ iauSeps.o \ iauSp00.o \ iauStarpm.o \ iauStarpv.o \ iauSxp.o \ iauSxpv.o \ iauTaitt.o \ iauTaiut1.o \ iauTaiutc.o \ iauTcbtdb.o \ iauTcgtt.o \ iauTdbtcb.o \ iauTdbtt.o \ iauTf2a.o \ iauTf2d.o \ iauTr.o \ iauTrxp.o \ iauTrxpv.o \ iauTttai.o \ iauTttcg.o \ iauTttdb.o \ iauTtut1.o \ iauUt1tai.o \ iauUt1tt.o \ iauUt1utc.o \ iauUtctai.o \ iauUtcut1.o \ iauXy06.o \ iauXys00a.o \ iauXys00b.o \ iauXys06a.o \ iauZp.o \ iauZpv.o \ iauZr.o #----------------------------------------------------------------------- # # TARGETS # #----------------------------------------------------------------------- # Build (but do not install) the library. all : $(SOFA_LIB_NAME) -@ echo "" -@ echo "*** Now type 'make test'" \ " to install the library and run tests ***" -@ echo "" # Install the library and header files. install $(SOFA_LIB) : $(INSTALL_DIRS) $(SOFA_LIB_NAME) $(SOFA_INC) cp $(SOFA_LIB_NAME) $(SOFA_LIB_DIR) # Deinstall the library and header files. uninstall: - $(RM) $(SOFA_LIB) $(SOFA_INC) # Test the build. check: $(SOFA_TEST_NAME) $(SOFA_INC_NAMES) $(SOFA_LIB_NAME) $(CCOMPC) $(CFLAGX) $(SOFA_TEST_NAME) $(SOFA_LIB_NAME) \ -lm -o $(SOFA_TEST) ./$(SOFA_TEST) # Test the installed library. installcheck test: $(SOFA_TEST_NAME) $(SOFA_INC) $(SOFA_LIB) $(CCOMPC) $(CFLAGX) $(SOFA_TEST_NAME) -I$(SOFA_INC_DIR) \ -L$(SOFA_LIB_DIR) -lsofa_c -lm -o $(SOFA_TEST) ./$(SOFA_TEST) # Delete object files. clean : - $(RM) $(SOFA_OBS) # Delete all generated binaries in the current directory. realclean distclean : clean - $(RM) $(SOFA_LIB_NAME) $(SOFA_TEST) # Create the installation directories if not already present. $(INSTALL_DIRS): mkdir -p $@ # Build the library. $(SOFA_LIB_NAME): $(SOFA_OBS) ar ru $(SOFA_LIB_NAME) $? # Install the header files. $(SOFA_INC) : $(INSTALL_DIRS) $(SOFA_INC_NAMES) cp $(SOFA_INC_NAMES) $(SOFA_INC_DIR) #----------------------------------------------------------------------- # The list of object file dependencies iauA2af.o : a2af.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ a2af.c iauA2tf.o : a2tf.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ a2tf.c iauAb.o : ab.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ ab.c iauAf2a.o : af2a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ af2a.c iauAnp.o : anp.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ anp.c iauAnpm.o : anpm.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ anpm.c iauApcg.o : apcg.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ apcg.c iauApcg13.o : apcg13.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ apcg13.c iauApci.o : apci.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ apci.c iauApci13.o : apci13.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ apci13.c iauApco.o : apco.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ apco.c iauApco13.o : apco13.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ apco13.c iauApcs.o : apcs.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ apcs.c iauApcs13.o : apcs13.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ apcs13.c iauAper.o : aper.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ aper.c iauAper13.o : aper13.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ aper13.c iauApio.o : apio.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ apio.c iauApio13.o : apio13.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ apio13.c iauAtci13.o : atci13.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ atci13.c iauAtciq.o : atciq.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ atciq.c iauAtciqn.o : atciqn.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ atciqn.c iauAtciqz.o : atciqz.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ atciqz.c iauAtco13.o : atco13.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ atco13.c iauAtic13.o : atic13.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ atic13.c iauAticq.o : aticq.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ aticq.c iauAticqn.o : aticqn.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ aticqn.c iauAtio13.o : atio13.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ atio13.c iauAtioq.o : atioq.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ atioq.c iauAtoc13.o : atoc13.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ atoc13.c iauAtoi13.o : atoi13.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ atoi13.c iauAtoiq.o : atoiq.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ atoiq.c iauBi00.o : bi00.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ bi00.c iauBp00.o : bp00.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ bp00.c iauBp06.o : bp06.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ bp06.c iauBpn2xy.o : bpn2xy.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ bpn2xy.c iauC2i00a.o : c2i00a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ c2i00a.c iauC2i00b.o : c2i00b.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ c2i00b.c iauC2i06a.o : c2i06a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ c2i06a.c iauC2ibpn.o : c2ibpn.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ c2ibpn.c iauC2ixy.o : c2ixy.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ c2ixy.c iauC2ixys.o : c2ixys.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ c2ixys.c iauC2s.o : c2s.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ c2s.c iauC2t00a.o : c2t00a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ c2t00a.c iauC2t00b.o : c2t00b.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ c2t00b.c iauC2t06a.o : c2t06a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ c2t06a.c iauC2tcio.o : c2tcio.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ c2tcio.c iauC2teqx.o : c2teqx.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ c2teqx.c iauC2tpe.o : c2tpe.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ c2tpe.c iauC2txy.o : c2txy.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ c2txy.c iauCal2jd.o : cal2jd.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ cal2jd.c iauCp.o : cp.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ cp.c iauCpv.o : cpv.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ cpv.c iauCr.o : cr.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ cr.c iauD2dtf.o : d2dtf.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ d2dtf.c iauD2tf.o : d2tf.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ d2tf.c iauDat.o : dat.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ dat.c iauDtdb.o : dtdb.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ dtdb.c iauDtf2d.o : dtf2d.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ dtf2d.c iauEe00.o : ee00.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ ee00.c iauEe00a.o : ee00a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ ee00a.c iauEe00b.o : ee00b.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ ee00b.c iauEe06a.o : ee06a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ ee06a.c iauEect00.o : eect00.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ eect00.c iauEform.o : eform.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ eform.c iauEo06a.o : eo06a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ eo06a.c iauEors.o : eors.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ eors.c iauEpb.o : epb.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ epb.c iauEpb2jd.o : epb2jd.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ epb2jd.c iauEpj.o : epj.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ epj.c iauEpj2jd.o : epj2jd.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ epj2jd.c iauEpv00.o : epv00.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ epv00.c iauEqeq94.o : eqeq94.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ eqeq94.c iauEra00.o : era00.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ era00.c iauFad03.o : fad03.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ fad03.c iauFae03.o : fae03.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ fae03.c iauFaf03.o : faf03.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ faf03.c iauFaju03.o : faju03.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ faju03.c iauFal03.o : fal03.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ fal03.c iauFalp03.o : falp03.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ falp03.c iauFama03.o : fama03.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ fama03.c iauFame03.o : fame03.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ fame03.c iauFane03.o : fane03.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ fane03.c iauFaom03.o : faom03.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ faom03.c iauFapa03.o : fapa03.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ fapa03.c iauFasa03.o : fasa03.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ fasa03.c iauFaur03.o : faur03.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ faur03.c iauFave03.o : fave03.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ fave03.c iauFk52h.o : fk52h.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ fk52h.c iauFk5hip.o : fk5hip.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ fk5hip.c iauFk5hz.o : fk5hz.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ fk5hz.c iauFw2m.o : fw2m.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ fw2m.c iauFw2xy.o : fw2xy.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ fw2xy.c iauG2icrs.o : g2icrs.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ g2icrs.c iauGc2gd.o : gc2gd.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ gc2gd.c iauGc2gde.o : gc2gde.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ gc2gde.c iauGd2gc.o : gd2gc.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ gd2gc.c iauGd2gce.o : gd2gce.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ gd2gce.c iauGmst00.o : gmst00.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ gmst00.c iauGmst06.o : gmst06.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ gmst06.c iauGmst82.o : gmst82.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ gmst82.c iauGst00a.o : gst00a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ gst00a.c iauGst00b.o : gst00b.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ gst00b.c iauGst06.o : gst06.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ gst06.c iauGst06a.o : gst06a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ gst06a.c iauGst94.o : gst94.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ gst94.c iauH2fk5.o : h2fk5.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ h2fk5.c iauHfk5z.o : hfk5z.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ hfk5z.c iauIcrs2g.o : icrs2g.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ icrs2g.c iauIr.o : ir.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ ir.c iauJd2cal.o : jd2cal.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ jd2cal.c iauJdcalf.o : jdcalf.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ jdcalf.c iauLd.o : ld.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ ld.c iauLdn.o : ldn.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ ldn.c iauLdsun.o : ldsun.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ ldsun.c iauNum00a.o : num00a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ num00a.c iauNum00b.o : num00b.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ num00b.c iauNum06a.o : num06a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ num06a.c iauNumat.o : numat.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ numat.c iauNut00a.o : nut00a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ nut00a.c iauNut00b.o : nut00b.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ nut00b.c iauNut06a.o : nut06a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ nut06a.c iauNut80.o : nut80.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ nut80.c iauNutm80.o : nutm80.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ nutm80.c iauObl06.o : obl06.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ obl06.c iauObl80.o : obl80.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ obl80.c iauP06e.o : p06e.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ p06e.c iauP2pv.o : p2pv.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ p2pv.c iauP2s.o : p2s.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ p2s.c iauPap.o : pap.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pap.c iauPas.o : pas.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pas.c iauPb06.o : pb06.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pb06.c iauPdp.o : pdp.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pdp.c iauPfw06.o : pfw06.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pfw06.c iauPlan94.o : plan94.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ plan94.c iauPm.o : pm.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pm.c iauPmat00.o : pmat00.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pmat00.c iauPmat06.o : pmat06.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pmat06.c iauPmat76.o : pmat76.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pmat76.c iauPmp.o : pmp.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pmp.c iauPmpx.o : pmpx.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pmpx.c iauPmsafe.o : pmsafe.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pmsafe.c iauPn.o : pn.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pn.c iauPn00.o : pn00.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pn00.c iauPn00a.o : pn00a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pn00a.c iauPn00b.o : pn00b.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pn00b.c iauPn06.o : pn06.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pn06.c iauPn06a.o : pn06a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pn06a.c iauPnm00a.o : pnm00a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pnm00a.c iauPnm00b.o : pnm00b.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pnm00b.c iauPnm06a.o : pnm06a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pnm06a.c iauPnm80.o : pnm80.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pnm80.c iauPom00.o : pom00.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pom00.c iauPpp.o : ppp.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ ppp.c iauPpsp.o : ppsp.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ ppsp.c iauPr00.o : pr00.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pr00.c iauPrec76.o : prec76.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ prec76.c iauPv2p.o : pv2p.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pv2p.c iauPv2s.o : pv2s.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pv2s.c iauPvdpv.o : pvdpv.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pvdpv.c iauPvm.o : pvm.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pvm.c iauPvmpv.o : pvmpv.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pvmpv.c iauPvppv.o : pvppv.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pvppv.c iauPvstar.o : pvstar.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pvstar.c iauPvtob.o : pvtob.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pvtob.c iauPvu.o : pvu.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pvu.c iauPvup.o : pvup.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pvup.c iauPvxpv.o : pvxpv.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pvxpv.c iauPxp.o : pxp.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ pxp.c iauRefco.o : refco.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ refco.c iauRm2v.o : rm2v.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ rm2v.c iauRv2m.o : rv2m.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ rv2m.c iauRx.o : rx.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ rx.c iauRxp.o : rxp.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ rxp.c iauRxpv.o : rxpv.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ rxpv.c iauRxr.o : rxr.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ rxr.c iauRy.o : ry.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ ry.c iauRz.o : rz.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ rz.c iauS00.o : s00.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ s00.c iauS00a.o : s00a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ s00a.c iauS00b.o : s00b.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ s00b.c iauS06.o : s06.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ s06.c iauS06a.o : s06a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ s06a.c iauS2c.o : s2c.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ s2c.c iauS2p.o : s2p.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ s2p.c iauS2pv.o : s2pv.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ s2pv.c iauS2xpv.o : s2xpv.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ s2xpv.c iauSepp.o : sepp.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ sepp.c iauSeps.o : seps.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ seps.c iauSp00.o : sp00.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ sp00.c iauStarpm.o : starpm.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ starpm.c iauStarpv.o : starpv.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ starpv.c iauSxp.o : sxp.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ sxp.c iauSxpv.o : sxpv.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ sxpv.c iauTaitt.o : taitt.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ taitt.c iauTaiut1.o : taiut1.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ taiut1.c iauTaiutc.o : taiutc.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ taiutc.c iauTcbtdb.o : tcbtdb.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ tcbtdb.c iauTcgtt.o : tcgtt.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ tcgtt.c iauTdbtcb.o : tdbtcb.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ tdbtcb.c iauTdbtt.o : tdbtt.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ tdbtt.c iauTf2a.o : tf2a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ tf2a.c iauTf2d.o : tf2d.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ tf2d.c iauTr.o : tr.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ tr.c iauTrxp.o : trxp.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ trxp.c iauTrxpv.o : trxpv.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ trxpv.c iauTttai.o : tttai.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ tttai.c iauTttcg.o : tttcg.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ tttcg.c iauTttdb.o : tttdb.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ tttdb.c iauTtut1.o : ttut1.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ ttut1.c iauUt1tai.o : ut1tai.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ ut1tai.c iauUt1tt.o : ut1tt.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ ut1tt.c iauUt1utc.o : ut1utc.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ ut1utc.c iauUtctai.o : utctai.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ utctai.c iauUtcut1.o : utcut1.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ utcut1.c iauXy06.o : xy06.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ xy06.c iauXys00a.o : xys00a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ xys00a.c iauXys00b.o : xys00b.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ xys00b.c iauXys06a.o : xys06a.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ xys06a.c iauZp.o : zp.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ zp.c iauZpv.o : zpv.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ zpv.c iauZr.o : zr.c sofa.h sofam.h $(CCOMPC) $(CFLAGF) -o $@ zr.c #----------------------------------------------------------------------- sofa/20150209/c/doc/0000775000113000011300000000000012507252065012651 5ustar bellsbellssofa/20150209/c/doc/board.pdf0000644000113000011300000000340312507252057014432 0ustar bellsbells%PDF-1.2 %쏢 6 0 obj <> stream xTr@ }+V2Ӹ1Po5$Rn0E6o%5O&>x]IGz3DžbQZy|4`U_Q vnӭC0l\Swj9s>J+P9Rd٧v6GѬ$xl6!WsYՋmߋm=7 ^x F=~p9 >x~0 GɗRdX,4r:VA cS |2 %Œ 6` C2v[ZClj&|̮cz2EsCiIť( hBG,vקBJ)L=dal2 jslE)uL*!|(W1 sJ (Ï9|tzBd<=6 rHJ^&B=s.eY샠КL$ _+(EZeBH[ T>>DYg ΄>Ŀ~%1Z#(%FjÄ_c}c1f$"r(1dL{_^UIA#!9wS#<ʙ Fh9O):eBJ++v}KW͢kϩQ/CĥDU?/H)&6hl% )XxG`JWڪh[ڳ8eb:MQHk)>DE taȓX; r/U)?Gܒendstream endobj 7 0 obj 721 endobj 5 0 obj <> /Contents 6 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 5 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 4 0 obj <> endobj 10 0 obj <> endobj 11 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 12 0 obj <> endobj 2 0 obj <>endobj xref 0 13 0000000000 65535 f 0000001044 00000 n 0000001407 00000 n 0000000985 00000 n 0000001092 00000 n 0000000825 00000 n 0000000015 00000 n 0000000806 00000 n 0000001207 00000 n 0000001264 00000 n 0000001147 00000 n 0000001177 00000 n 0000001349 00000 n trailer << /Size 13 /Root 1 0 R /Info 2 0 R >> startxref 1457 %%EOF sofa/20150209/c/doc/board.lis0000644000113000011300000000244612507252057014456 0ustar bellsbellsboard.lis 2014 February 20 IAU STANDARDS OF FUNDAMENTAL ASTRONOMY BOARD Current Membership John Bangert United States Naval Observatory, retired Steven Bell Her Majesty's Nautical Almanac Office Nicole Capitaine Paris Observatory William Folkner Jet Propulsion Laboratory Catherine Hohenkerk Her Majesty's Nautical Almanac Office (Chair) Jinling Li Shanghai Astronomical Observatory Brian Luzum United States Naval Observatory (IERS) Zinovy Malkin Pulkovo Observatory, St Petersburg Jeffrey Percival University of Wisconsin Scott Ransom National Radio Astronomy Observatory Patrick Wallace RAL Space, retired Past Members Mark Calabretta Australia Telescope National Facility, retired Wim Brouw University of Groningen Anne-Marie Gontier Paris Observatory George Hobbs Australia Telescope National Facility George Kaplan United States Naval Observatory Dennis McCarthy United States Naval Observatory Skip Newhall Jet Propulsion Laboratory Jin Wen-Jing Shanghai Observatory The e-mail for the Board chair is Catherine.Hohenkerk@ukho.gov.uk sofa/20150209/c/doc/changes.lis0000644000113000011300000001176112507252057014777 0ustar bellsbells Updates for SOFA Release 11 : 2015 February 2 - - - - - - - - - - - - - - - - - - - - - - - Changes/updates fall into the following categories: 1. A leap second at the end of June 2015, requires updates to the iau_DAT (dat.for) and iauDat (dat.c) routines. 2. Introduction of two new routines, G2ICRS and ICRS2G (both Fortran and C), creating a new category entitled "Galactic coordinates". 3. A few minor changes to a few routines to remove some compiler warnings; (1) Changes in the test for zero in C2IXYZ, GC2GDE, RM2V, RV2M, and multithread precaution in CAL2JD in the Fortan version only. 4. Updated test programs t_sofa_f.for and t_sofa_c.c. Updated the include header file sofa.h. 5. Documentation revision, moving the routines STARPV and PVSTAR (category Star Space Motion) and PMSAFE and STARPM (category Star Catalog Conversions) into Astrometry. This results in the removal of the category Star Space Motion. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fortran: -------- iau_C2IXYS there was a test for zero that could potentially cause compiler warnings. The test has been changed. iau_CAL2JD a value in a DATA-initialized array was being changed during execution. This had consequences for multi-thread code. The algorithm has been changed to avoid the difficulty. iau_DAT a leap second is now required in UTC for 2015 June 30. iau_G2ICRS transformation from Galactic Coordinates to ICRS. A new routine. iau_GC2GDE there was a test for zero that could potentially cause compiler warnings. The test has been changed. iau_ICRS2G transformation from ICRS to Galactic Coordinates. A new routine. iau_RM2V there was a test for zero that could potentially cause compiler warnings. The test has been changed. iau_RV2M there was a test for zero that could potentially cause compiler warnings. The test has been changed. t_sofa_f program updated with the two new Galactic Coordinate tansformations. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ANSI C: ------- iauC2ixys there was a test for zero that could potentially cause compiler warnings. The test has been changed. iauDat a leap second is now required in UTC for 2015 June 30. iauG2icrs transformation from Galactic Coordinates to ICRS. A new routine. iauGc2gde there was a test for zero that could potentially cause compiler warnings. The test has been changed. iauIcrs2g transformation from Galactic Coordinates to ICRS. A new routine. iauRm2v there was a test for zero that could potentially cause compiler warnings. The test has been changed. iauRv2m there was a test for zero that could potentially cause compiler warnings. The test has been changed. sofa.h addition of the new functions, removal of duplicate functions. All functions are listed in the categories that are given on the website and in the manual. t_sofa_c program updated with the two new Galactic Coordinate tansformations. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Documentation: -------------- intro.lis Minor change. sofa_lib.lis New routines added. The routines STARPV, PVSTA, PMSAFE and STARPM into Astrometry. Category Star Space Motion deleted. This list harmonised with sofa.h and the website. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + End of Updates 2015 February 9 CYH/SAB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Updates for SOFA Release 11a : 2015 March 4 - - - - - - - - - - - - - - - - - - - - - - This minor release (11a) contains a change to suppress a warning message given by one C compiler. The change does not affect the behaviour of the routine and it is not essential that you update your libraries (particularly if you are a Fortran user). The change had already been made in the 2014 September 9 (10c) release, but due to an oversight was not present in the current release. The Fortran code has also been modified for harmony. Summary of Changes iauDat A change has been made to the ANSI C version to suppress an array bounds warning produced by recent gcc versions. iau_DAT A change has been made to the Fortran version to ensure equivalence between the Fortran and ANSI C versions. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + End of Updates 2015 March 4 CYH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sofa/20150209/c/doc/consts.lis0000644000113000011300000000247312507252057014700 0ustar bellsbellsconsts.lis 2008 September 30 SOFA Fortran constants ---------------------- These must be used exactly as presented below. * Pi DOUBLE PRECISION DPI PARAMETER ( DPI = 3.141592653589793238462643D0 ) * 2Pi DOUBLE PRECISION D2PI PARAMETER ( D2PI = 6.283185307179586476925287D0 ) * Radians to hours DOUBLE PRECISION DR2H PARAMETER ( DR2H = 3.819718634205488058453210D0 ) * Radians to seconds DOUBLE PRECISION DR2S PARAMETER ( DR2S = 13750.98708313975701043156D0 ) * Radians to degrees DOUBLE PRECISION DR2D PARAMETER ( DR2D = 57.29577951308232087679815D0 ) * Radians to arc seconds DOUBLE PRECISION DR2AS PARAMETER ( DR2AS = 206264.8062470963551564734D0 ) * Hours to radians DOUBLE PRECISION DH2R PARAMETER ( DH2R = 0.2617993877991494365385536D0 ) * Seconds to radians DOUBLE PRECISION DS2R PARAMETER ( DS2R = 7.272205216643039903848712D-5 ) * Degrees to radians DOUBLE PRECISION DD2R PARAMETER ( DD2R = 1.745329251994329576923691D-2 ) * Arc seconds to radians DOUBLE PRECISION DAS2R PARAMETER ( DAS2R = 4.848136811095359935899141D-6 ) SOFA C constants ---------------- The constants used by the C version of SOFA are defined in the header file sofam.h. sofa/20150209/c/doc/contents.lis0000644000113000011300000000077412507252057015226 0ustar bellsbellscontents.lis 2008 October 8 -------- CONTENTS -------- 1) Introduction 2) The SOFA Astronomy Library 3) The SOFA Vector/Matrix Library 4) The individual routines A1 The SOFA copyright notice A2 Constants A3 SOFA Board membership sofa/20150209/c/doc/copyr.lis0000644000113000011300000001050712507252057014520 0ustar bellsbellscopyr.lis 2015 January 5 COPYRIGHT NOTICE Text equivalent to the following appears at the end of every SOFA routine. (There are small formatting differences between the Fortran and C versions.) *+---------------------------------------------------------------------- * * Copyright (C) 2015 * Standards Of Fundamental Astronomy Board * of the International Astronomical Union. * * ===================== * SOFA Software License * ===================== * * NOTICE TO USER: * * BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND * CONDITIONS WHICH APPLY TO ITS USE. * * 1. The Software is owned by the IAU SOFA Board ("SOFA"). * * 2. Permission is granted to anyone to use the SOFA software for any * purpose, including commercial applications, free of charge and * without payment of royalties, subject to the conditions and * restrictions listed below. * * 3. You (the user) may copy and distribute SOFA source code to others, * and use and adapt its code and algorithms in your own software, * on a world-wide, royalty-free basis. That portion of your * distribution that does not consist of intact and unchanged copies * of SOFA source code files is a "derived work" that must comply * with the following requirements: * * a) Your work shall be marked or carry a statement that it * (i) uses routines and computations derived by you from * software provided by SOFA under license to you; and * (ii) does not itself constitute software provided by and/or * endorsed by SOFA. * * b) The source code of your derived work must contain descriptions * of how the derived work is based upon, contains and/or differs * from the original SOFA software. * * c) The names of all routines in your derived work shall not * include the prefix "iau" or "sofa" or trivial modifications * thereof such as changes of case. * * d) The origin of the SOFA components of your derived work must * not be misrepresented; you must not claim that you wrote the * original software, nor file a patent application for SOFA * software or algorithms embedded in the SOFA software. * * e) These requirements must be reproduced intact in any source * distribution and shall apply to anyone to whom you have * granted a further right to modify the source code of your * derived work. * * Note that, as originally distributed, the SOFA software is * intended to be a definitive implementation of the IAU standards, * and consequently third-party modifications are discouraged. All * variations, no matter how minor, must be explicitly marked as * such, as explained above. * * 4. You shall not cause the SOFA software to be brought into * disrepute, either by misuse, or use for inappropriate tasks, or * by inappropriate modification. * * 5. The SOFA software is provided "as is" and SOFA makes no warranty * as to its use or performance. SOFA does not and cannot warrant * the performance or results which the user may obtain by using the * SOFA software. SOFA makes no warranties, express or implied, as * to non-infringement of third party rights, merchantability, or * fitness for any particular purpose. In no event will SOFA be * liable to the user for any consequential, incidental, or special * damages, including any lost profits or lost savings, even if a * SOFA representative has been advised of such damages, or for any * claim by any third party. * * 6. The provision of any version of the SOFA software under the terms * and conditions specified herein does not imply that future * versions will also be made available under the same terms and * conditions. * * In any published work or commercial product which uses the SOFA * software directly, acknowledgement (see www.iausofa.org) is * appreciated. * * Correspondence concerning SOFA software should be addressed as * follows: * * By email: sofa@ukho.gov.uk * By post: IAU SOFA Center * HM Nautical Almanac Office * UK Hydrographic Office * Admiralty Way, Taunton * Somerset, TA1 2DN * United Kingdom * *----------------------------------------------------------------------- sofa/20150209/c/doc/intro.lis0000644000113000011300000002255612507252057014526 0ustar bellsbellsintro.lis 2015 January 29 ------------------------------- THE IAU-SOFA SOFTWARE LIBRARIES ------------------------------- SOFA stands for "Standards Of Fundamental Astronomy". The SOFA software libraries are a collection of subprograms, in source- code form, which implement official IAU algorithms for fundamental- astronomy computations. The subprograms at present comprise 166 "astronomy" routines supported by 55 "vector/matrix" routines, available in both Fortran77 and C implementations. THE SOFA INITIATIVE SOFA is an IAU Service which operates as a Standing Working Group under Division A (Fundamental Astronomy). The IAU set up the SOFA initiative at the 1994 General Assembly, to promulgate an authoritative set of fundamental-astronomy constants and algorithms. At the subsequent General Assembly, in 1997, the appointment of a review board and the selection of a site for the SOFA Center (the outlet for SOFA products) were announced. The SOFA initiative was originally proposed by the IAU Working Group on Astronomical Standards (WGAS), under the chairmanship of Toshio Fukushima. The proposal was for "...new arrangements to establish and maintain an accessible and authoritative set of constants, algorithms and procedures that implement standard models used in fundamental astronomy". The SOFA Software Libraries implement the "algorithms" part of the SOFA initiative. They were developed under the supervision of an international panel called the SOFA Board. The current membership of this panel is listed in an appendix. A feature of the original SOFA software proposals was that the products would be self-contained and not depend on other software. This includes basic documentation, which, like the present file, will mostly be plain ASCII text. It should also be noted that there is no assumption that the software will be used on a particular computer and Operating System. Although OS-related facilities may be present (Unix make files for instance, use by the SOFA Center of automatic code management systems, HTML versions of some documentation), the routines themselves will be visible as individual text files and will run on a variety of platforms. ALGORITHMS The SOFA Board's initial goal has been to create a set of callable subprograms. Whether "subroutines" or "functions", they are all referred to simply as "routines". They are designed for use by software developers wishing to write complete applications; no runnable, free- standing applications are included in SOFA's present plans. The algorithms are drawn from a variety of sources. Because most of the routines so far developed have either been standard "text-book" operations or implement well-documented standard algorithms, it has not been necessary to invite the whole community to submit algorithms, though consultation with authorities has occurred where necessary. It should also be noted that consistency with the conventions published by the International Earth Rotation Service was a stipulation in the original SOFA proposals, further constraining the software designs. This state of affairs will continue to exist for some time, as there is a large backlog of agreed extensions to work on. However, in the future the Board may decide to call for proposals, and is in the meantime willing to look into any suggestions that are received by the SOFA Center. SCOPE The routines currently available are listed in the next two chapters of this document. The "astronomy" library comprises 164 routines (plus one obsolete Fortran routine that now appears under a revised name). The areas addressed include calendars, astrometry, time scales, Earth rotation, ephemerides, precession-nutation, star catalog transformations, and geodetic/geocentric transformations. The "vector-matrix" library, comprising 55 routines, contains a collection of simple tools for manipulating the vectors, matrices and angles used by the astronomy routines. There is no explicit commitment by SOFA to support historical models, though as time goes on a legacy of superseded models will naturally accumulate. There is, for example, no support of B1950/FK4 star coordinates, or pre-1976 precession models, though these capabilities could be added were there significant demand. Though the SOFA software libraries are rather limited in scope, and are likely to remain so for a considerable time, they do offer distinct advantages to prospective users. In particular, the routines are: * authoritative: they are IAU-backed and have been constructed with great care; * practical: they are straightforward to use in spite of being precise and rigorous (to some stated degree); * accessible and supported: they are downloadable from an easy-to- find place, they are in an integrated and consistent form, they come with adequate internal documentation, and help for users is available. VERSIONS Once it has been published, an issue is never revised or updated, and remains accessible indefinitely. Subsequent issues may, however, include corrected versions under the original routine name and filenames. However, where a different model is introduced, it will have a different name. The issues will be referred to by the date when they were announced. The frequency of re-issue will be decided by the Board, taking into account the importance of the changes and the impact on the user community. DOCUMENTATION At present there is little free-standing documentation about individual routines. However, each routine has preamble comments which specify in detail what the routine does and how it is used. The file sofa_pn.pdf describes the SOFA tools for precession-nutation and other aspects of Earth attitude and includes example code and (see the appendix) diagrams showing the interrelationships between the routines supporting the latest (IAU 2006/2000A) models. Four other documents introduce time scale transformations (sofa_ts_f.pdf and sofa_ts_c.pdf for Fortran and C users respectively) and astrometric transformations (sofa_ast_f.pdf and sofa_ast_c.pdf). PROGRAMMING LANGUAGES AND STANDARDS The SOFA routines are available in two programming languages at present: Fortran77 and ANSI C. Related software in other languages is under consideration. The Fortran code conforms to ANSI X3.9-1978 in all but two minor respects: each has an IMPLICIT NONE declaration, and its name has a prefix of "iau_" and may be longer than 6 characters. A global edit to erase both of these will produce ANSI-compliant code with no change in its function. Coding style, and restrictions on the range of language features, have been much debated by the Board, and the results comply with the majority view. There is (at present) no document that defines the standards, but the code itself offers a wide range of examples of what is acceptable. The Fortran routines contain explicit numerical constants (the INCLUDE statement is not part of ANSI Fortran77). These are drawn from the file consts.lis, which is listed in an appendix. Constants for the SOFA/C functions are defined in a header file sofam.h. The naming convention is such that a SOFA routine referred to generically as "EXAMPL" exists as a Fortran subprogram iau_EXAMPL and a C function iauExampl. The calls for the two versions are very similar, with the same arguments in the same order. In a few cases, the C equivalent of a Fortran SUBROUTINE subprogram uses a return value rather than an argument. Each language version includes a "testbed" main-program that can be used to verify that the SOFA routines have been correctly compiled on the end user's system. The Fortran and C versions are called t_sofa_f.for and t_sofa_c.c respectively. The testbeds execute every SOFA routine and check that the results are within expected accuracy margins. It is not possible to guarantee that all platforms will meet the rather stringent criteria that have been used, and an occasional warning message may be encountered on some systems. COPYRIGHT ISSUES Copyright for all of the SOFA software and documentation is owned by the IAU SOFA Board. The Software is made available free of charge for all classes of user, including commercial. However, there are strict rules designed to avoid unauthorized variants coming into circulation. It is permissible to distribute derived works and other modifications, but they must be clearly marked to avoid confusion with the SOFA originals. Further details are included in the block of comments which concludes every routine. The text is also set out in an appendix to the present document. ACCURACY The SOFA policy is to organize the calculations so that the machine accuracy is fully exploited. The gap between the precision of the underlying model or theory and the computational resolution has to be kept as large as possible, hopefully leaving several orders of magnitude of headroom. The SOFA routines in some cases involve design compromises between rigor and ease of use (and also speed, though nowadays this is seldom a major concern). ACKNOWLEDGEMENTS The Board is indebted to a number of contributors, who are acknowledged in the preamble comments of the routines concerned. The Board's effort is provided by the members' individual institutes. Resources for operating the SOFA Center are provided by Her Majesty's Nautical Almanac Office, operated by the United Kingdom Hydrographic Office. sofa/20150209/c/doc/manual.lis0000644000113000011300000220575712507252057014660 0ustar bellsbells T H E SSSSS OOOOOO FFFFFFFFFFFFF AAAAAAA SSSSSSSSSS OOOOOOOOOOOO FFFFFFFFFFFF AAAAAAAA SSSSSSSSSSS OOOOOOOOOOOOOO FFFFFFFFFFFF AAAA AAAA SSSS S OOOOOO OOOOO FFFF AAAA AAAA SSSSS OOOOO OOOO FFFFF AAAA AAAA SSSSSSSSSS OOOO OOOOO FFFFFFFFFFFF AAAA AAAA SSSSSSSSS OOOOO OOOO FFFFFFFFFFFF AAAAAAAAAAAAA SSSSS OOOO OOOO FFFF AAAAAAAAAAAAAA S SSSS OOOOO OOOOO FFFF AAAAAAAAAAAAAAA SSSSSSSSSSS OOOOOOOOOOOOO FFFF AAAA AAAAA SSSSSSSSS OOOOOOOOOO FFFF AAAA AAAAA SSSS OOOOO FFFF AAAA AAAAA S O F T W A R E L I B R A R I E S International Astronomical Union Division A: Fundamental Astronomy Standards Of Fundamental Astronomy Board Release 11 2015 February 09 contents.lis 2008 October 8 -------- CONTENTS -------- 1) Introduction 2) The SOFA Astronomy Library 3) The SOFA Vector/Matrix Library 4) The individual routines A1 The SOFA copyright notice A2 Constants A3 SOFA Board membership intro.lis 2015 January 29 ------------------------------- THE IAU-SOFA SOFTWARE LIBRARIES ------------------------------- SOFA stands for "Standards Of Fundamental Astronomy". The SOFA software libraries are a collection of subprograms, in source- code form, which implement official IAU algorithms for fundamental- astronomy computations. The subprograms at present comprise 166 "astronomy" routines supported by 55 "vector/matrix" routines, available in both Fortran77 and C implementations. THE SOFA INITIATIVE SOFA is an IAU Service which operates as a Standing Working Group under Division A (Fundamental Astronomy). The IAU set up the SOFA initiative at the 1994 General Assembly, to promulgate an authoritative set of fundamental-astronomy constants and algorithms. At the subsequent General Assembly, in 1997, the appointment of a review board and the selection of a site for the SOFA Center (the outlet for SOFA products) were announced. The SOFA initiative was originally proposed by the IAU Working Group on Astronomical Standards (WGAS), under the chairmanship of Toshio Fukushima. The proposal was for "...new arrangements to establish and maintain an accessible and authoritative set of constants, algorithms and procedures that implement standard models used in fundamental astronomy". The SOFA Software Libraries implement the "algorithms" part of the SOFA initiative. They were developed under the supervision of an international panel called the SOFA Board. The current membership of this panel is listed in an appendix. A feature of the original SOFA software proposals was that the products would be self-contained and not depend on other software. This includes basic documentation, which, like the present file, will mostly be plain ASCII text. It should also be noted that there is no assumption that the software will be used on a particular computer and Operating System. Although OS-related facilities may be present (Unix make files for instance, use by the SOFA Center of automatic code management systems, HTML versions of some documentation), the routines themselves will be visible as individual text files and will run on a variety of platforms. ALGORITHMS The SOFA Board's initial goal has been to create a set of callable subprograms. Whether "subroutines" or "functions", they are all referred to simply as "routines". They are designed for use by software developers wishing to write complete applications; no runnable, free- standing applications are included in SOFA's present plans. The algorithms are drawn from a variety of sources. Because most of the routines so far developed have either been standard "text-book" operations or implement well-documented standard algorithms, it has not been necessary to invite the whole community to submit algorithms, though consultation with authorities has occurred where necessary. It should also be noted that consistency with the conventions published by the International Earth Rotation Service was a stipulation in the original SOFA proposals, further constraining the software designs. This state of affairs will continue to exist for some time, as there is a large backlog of agreed extensions to work on. However, in the future the Board may decide to call for proposals, and is in the meantime willing to look into any suggestions that are received by the SOFA Center. SCOPE The routines currently available are listed in the next two chapters of this document. The "astronomy" library comprises 164 routines (plus one obsolete Fortran routine that now appears under a revised name). The areas addressed include calendars, astrometry, time scales, Earth rotation, ephemerides, precession-nutation, star catalog transformations, and geodetic/geocentric transformations. The "vector-matrix" library, comprising 55 routines, contains a collection of simple tools for manipulating the vectors, matrices and angles used by the astronomy routines. There is no explicit commitment by SOFA to support historical models, though as time goes on a legacy of superseded models will naturally accumulate. There is, for example, no support of B1950/FK4 star coordinates, or pre-1976 precession models, though these capabilities could be added were there significant demand. Though the SOFA software libraries are rather limited in scope, and are likely to remain so for a considerable time, they do offer distinct advantages to prospective users. In particular, the routines are: * authoritative: they are IAU-backed and have been constructed with great care; * practical: they are straightforward to use in spite of being precise and rigorous (to some stated degree); * accessible and supported: they are downloadable from an easy-to- find place, they are in an integrated and consistent form, they come with adequate internal documentation, and help for users is available. VERSIONS Once it has been published, an issue is never revised or updated, and remains accessible indefinitely. Subsequent issues may, however, include corrected versions under the original routine name and filenames. However, where a different model is introduced, it will have a different name. The issues will be referred to by the date when they were announced. The frequency of re-issue will be decided by the Board, taking into account the importance of the changes and the impact on the user community. DOCUMENTATION At present there is little free-standing documentation about individual routines. However, each routine has preamble comments which specify in detail what the routine does and how it is used. The file sofa_pn.pdf describes the SOFA tools for precession-nutation and other aspects of Earth attitude and includes example code and (see the appendix) diagrams showing the interrelationships between the routines supporting the latest (IAU 2006/2000A) models. Four other documents introduce time scale transformations (sofa_ts_f.pdf and sofa_ts_c.pdf for Fortran and C users respectively) and astrometric transformations (sofa_ast_f.pdf and sofa_ast_c.pdf). PROGRAMMING LANGUAGES AND STANDARDS The SOFA routines are available in two programming languages at present: Fortran77 and ANSI C. Related software in other languages is under consideration. The Fortran code conforms to ANSI X3.9-1978 in all but two minor respects: each has an IMPLICIT NONE declaration, and its name has a prefix of "iau_" and may be longer than 6 characters. A global edit to erase both of these will produce ANSI-compliant code with no change in its function. Coding style, and restrictions on the range of language features, have been much debated by the Board, and the results comply with the majority view. There is (at present) no document that defines the standards, but the code itself offers a wide range of examples of what is acceptable. The Fortran routines contain explicit numerical constants (the INCLUDE statement is not part of ANSI Fortran77). These are drawn from the file consts.lis, which is listed in an appendix. Constants for the SOFA/C functions are defined in a header file sofam.h. The naming convention is such that a SOFA routine referred to generically as "EXAMPL" exists as a Fortran subprogram iau_EXAMPL and a C function iauExampl. The calls for the two versions are very similar, with the same arguments in the same order. In a few cases, the C equivalent of a Fortran SUBROUTINE subprogram uses a return value rather than an argument. Each language version includes a "testbed" main-program that can be used to verify that the SOFA routines have been correctly compiled on the end user's system. The Fortran and C versions are called t_sofa_f.for and t_sofa_c.c respectively. The testbeds execute every SOFA routine and check that the results are within expected accuracy margins. It is not possible to guarantee that all platforms will meet the rather stringent criteria that have been used, and an occasional warning message may be encountered on some systems. COPYRIGHT ISSUES Copyright for all of the SOFA software and documentation is owned by the IAU SOFA Board. The Software is made available free of charge for all classes of user, including commercial. However, there are strict rules designed to avoid unauthorized variants coming into circulation. It is permissible to distribute derived works and other modifications, but they must be clearly marked to avoid confusion with the SOFA originals. Further details are included in the block of comments which concludes every routine. The text is also set out in an appendix to the present document. ACCURACY The SOFA policy is to organize the calculations so that the machine accuracy is fully exploited. The gap between the precision of the underlying model or theory and the computational resolution has to be kept as large as possible, hopefully leaving several orders of magnitude of headroom. The SOFA routines in some cases involve design compromises between rigor and ease of use (and also speed, though nowadays this is seldom a major concern). ACKNOWLEDGEMENTS The Board is indebted to a number of contributors, who are acknowledged in the preamble comments of the routines concerned. The Board's effort is provided by the members' individual institutes. Resources for operating the SOFA Center are provided by Her Majesty's Nautical Almanac Office, operated by the United Kingdom Hydrographic Office. sofa_lib.lis 2015 January 30 ---------------------- SOFA Astronomy Library ---------------------- PREFACE The routines described here comprise the SOFA astronomy library. Their general appearance and coding style conforms to conventions agreed by the SOFA Board, and their functions, names and algorithms have been ratified by the Board. Procedures for soliciting and agreeing additions to the library are still evolving. PROGRAMMING LANGUAGES The SOFA routines are available in two programming languages at present: Fortran 77 and ANSI C. Except for a single obsolete Fortran routine, which has no C equivalent, there is a one-to-one relationship between the two language versions. The naming convention is such that a SOFA routine referred to generically as "EXAMPL" exists as a Fortran subprogram iau_EXAMPL and a C function iauExampl. The calls for the two versions are very similar, with the same arguments in the same order. In a few cases, the C equivalent of a Fortran SUBROUTINE subprogram uses a return value rather than an argument. GENERAL PRINCIPLES The principal function of the SOFA Astronomy Library is to provide definitive algorithms. A secondary function is to provide software suitable for convenient direct use by writers of astronomical applications. The astronomy routines call on the SOFA vector/matrix library routines, which are separately listed. The routines are designed to exploit the full floating-point accuracy of the machines on which they run, and not to rely on compiler optimizations. Within these constraints, the intention is that the code corresponds to the published formulation (if any). Dates are always Julian Dates (except in calendar conversion routines) and are expressed as two double precision numbers which sum to the required value. A distinction is made between routines that implement IAU-approved models and those that use those models to create other results. The former are referred to as "canonical models" in the preamble comments; the latter are described as "support routines". Using the library requires knowledge of positional astronomy and time-scales. These topics are covered in "Explanatory Supplement to the Astronomical Almanac", 3rd Edition, Sean E. Urban & P. Kenneth Seidelmann (eds.), University Science Books, 2013. Recent developments are documented in the scientific journals, and references to the relevant papers are given in the SOFA code as required. The IERS Conventions are also an essential reference. The routines concerned with Earth attitude (precession-nutation etc.) are described in the SOFA document sofa_pn.pdf. Those concerned with transformations between different time scales are described in sofa_ts_f.pdf (Fortran) and sofa_ts_c.pdf (C). Those concerned with astrometric transformations are described in sofa_ast_f.pdf (Fortran) and sofa_ast_c (C). ROUTINES Calendars CAL2JD Gregorian calendar to Julian Day number EPB Julian Date to Besselian Epoch EPB2JD Besselian Epoch to Julian Date EPJ Julian Date to Julian Epoch EPJ2JD Julian Epoch to Julian Date JD2CAL Julian Date to Gregorian year, month, day, fraction JDCALF Julian Date to Gregorian date for formatted output Astrometry AB apply stellar aberration APCG prepare for ICRS <-> GCRS, geocentric, special APCG13 prepare for ICRS <-> GCRS, geocentric APCI prepare for ICRS <-> CIRS, terrestrial, special APCI13 prepare for ICRS <-> CIRS, terrestrial APCO prepare for ICRS <-> observed, terrestrial, special APCO13 prepare for ICRS <-> observed, terrestrial APCS prepare for ICRS <-> CIRS, space, special APCS13 prepare for ICRS <-> CIRS, space APER insert ERA into context APER13 update context for Earth rotation APIO prepare for CIRS <-> observed, terrestrial, special APIO13 prepare for CIRS <-> observed, terrestrial ATCI13 catalog -> CIRS ATCIQ quick ICRS -> CIRS ATCIQN quick ICRS -> CIRS, multiple deflections ATCIQZ quick astrometric ICRS -> CIRS ATCO13 ICRS -> observed ATIC13 CIRS -> ICRS ATICQ quick CIRS -> ICRS ATCIQN quick CIRS -> ICRS, multiple deflections ATIO13 CIRS -> observed ATIOQ quick CIRS -> observed ATOC13 observed -> astrometric ICRS ATOI13 observed -> CIRS ATOIQ quick observed -> CIRS LD light deflection by a single solar-system body LDN light deflection by multiple solar-system bodies LDSUN light deflection by the Sun PMPX apply proper motion and parallax PMSAFE apply proper motion, with zero-parallax precautions PVTOB observatory position and velocity PVSTAR space motion pv-vector to star catalog data REFCO refraction constants STARPM apply proper motion STARPV star catalog data to space motion pv-vector Time scales D2DTF format 2-part JD for output DAT Delta(AT) (=TAI-UTC) for a given UTC date DTDB TDB-TT DTF2D encode time and date fields into 2-part JD TAITT TAI to TT TAIUT1 TAI to UT1 TAIUTC TAI to UTC TCBTDB TCB to TDB TCGTT TCG to TT TDBTCB TDB to TCB TDBTT TDB to TT TTTAI TT to TAI TTTCG TT to TCG TTTDB TT to TDB TTUT1 TT to UT1 UT1TAI UT1 to TAI UT1TT UT1 to TT UT1UTC UT1 to UTC UTCTAI UTC to TAI UTCUT1 UTC to UT1 Earth rotation angle and sidereal time EE00 equation of the equinoxes, IAU 2000 EE00A equation of the equinoxes, IAU 2000A EE00B equation of the equinoxes, IAU 2000B EE06A equation of the equinoxes, IAU 2006/2000A EECT00 equation of the equinoxes complementary terms, IAU 2000 EQEQ94 equation of the equinoxes, IAU 1994 ERA00 Earth rotation angle, IAU 2000 GMST00 Greenwich mean sidereal time, IAU 2000 GMST06 Greenwich mean sidereal time, IAU 2006 GMST82 Greenwich mean sidereal time, IAU 1982 GST00A Greenwich apparent sidereal time, IAU 2000A GST00B Greenwich apparent sidereal time, IAU 2000B GST06 Greenwich apparent ST, IAU 2006, given NPB matrix GST06A Greenwich apparent sidereal time, IAU 2006/2000A GST94 Greenwich apparent sidereal time, IAU 1994 Ephemerides (limited precision) EPV00 Earth position and velocity PLAN94 major-planet position and velocity Precession, nutation, polar motion BI00 frame bias components, IAU 2000 BP00 frame bias and precession matrices, IAU 2000 BP06 frame bias and precession matrices, IAU 2006 BPN2XY extract CIP X,Y coordinates from NPB matrix C2I00A celestial-to-intermediate matrix, IAU 2000A C2I00B celestial-to-intermediate matrix, IAU 2000B C2I06A celestial-to-intermediate matrix, IAU 2006/2000A C2IBPN celestial-to-intermediate matrix, given NPB matrix, IAU 2000 C2IXY celestial-to-intermediate matrix, given X,Y, IAU 2000 C2IXYS celestial-to-intermediate matrix, given X,Y and s C2T00A celestial-to-terrestrial matrix, IAU 2000A C2T00B celestial-to-terrestrial matrix, IAU 2000B C2T06A celestial-to-terrestrial matrix, IAU 2006/2000A C2TCIO form CIO-based celestial-to-terrestrial matrix C2TEQX form equinox-based celestial-to-terrestrial matrix C2TPE celestial-to-terrestrial matrix given nutation, IAU 2000 C2TXY celestial-to-terrestrial matrix given CIP, IAU 2000 EO06A equation of the origins, IAU 2006/2000A EORS equation of the origins, given NPB matrix and s FW2M Fukushima-Williams angles to r-matrix FW2XY Fukushima-Williams angles to X,Y NUM00A nutation matrix, IAU 2000A NUM00B nutation matrix, IAU 2000B NUM06A nutation matrix, IAU 2006/2000A NUMAT form nutation matrix NUT00A nutation, IAU 2000A NUT00B nutation, IAU 2000B NUT06A nutation, IAU 2006/2000A NUT80 nutation, IAU 1980 NUTM80 nutation matrix, IAU 1980 OBL06 mean obliquity, IAU 2006 OBL80 mean obliquity, IAU 1980 PB06 zeta,z,theta precession angles, IAU 2006, including bias PFW06 bias-precession Fukushima-Williams angles, IAU 2006 PMAT00 precession matrix (including frame bias), IAU 2000 PMAT06 PB matrix, IAU 2006 PMAT76 precession matrix, IAU 1976 PN00 bias/precession/nutation results, IAU 2000 PN00A bias/precession/nutation, IAU 2000A PN00B bias/precession/nutation, IAU 2000B PN06 bias/precession/nutation results, IAU 2006 PN06A bias/precession/nutation results, IAU 2006/2000A PNM00A classical NPB matrix, IAU 2000A PNM00B classical NPB matrix, IAU 2000B PNM06A classical NPB matrix, IAU 2006/2000A PNM80 precession/nutation matrix, IAU 1976/1980 P06E precession angles, IAU 2006, equinox based POM00 polar motion matrix PR00 IAU 2000 precession adjustments PREC76 accumulated precession angles, IAU 1976 S00 the CIO locator s, given X,Y, IAU 2000A S00A the CIO locator s, IAU 2000A S00B the CIO locator s, IAU 2000B S06 the CIO locator s, given X,Y, IAU 2006 S06A the CIO locator s, IAU 2006/2000A SP00 the TIO locator s', IERS 2003 XY06 CIP, IAU 2006/2000A, from series XYS00A CIP and s, IAU 2000A XYS00B CIP and s, IAU 2000B XYS06A CIP and s, IAU 2006/2000A Fundamental arguments for nutation etc. FAD03 mean elongation of the Moon from the Sun FAE03 mean longitude of Earth FAF03 mean argument of the latitude of the Moon FAJU03 mean longitude of Jupiter FAL03 mean anomaly of the Moon FALP03 mean anomaly of the Sun FAMA03 mean longitude of Mars FAME03 mean longitude of Mercury FANE03 mean longitude of Neptune FAOM03 mean longitude of the Moon's ascending node FAPA03 general accumulated precession in longitude FASA03 mean longitude of Saturn FAUR03 mean longitude of Uranus FAVE03 mean longitude of Venus Star catalog conversions FK52H transform FK5 star data into the Hipparcos system FK5HIP FK5 to Hipparcos rotation and spin FK5HZ FK5 to Hipparcos assuming zero Hipparcos proper motion H2FK5 transform Hipparcos star data into the FK5 system HFK5Z Hipparcos to FK5 assuming zero Hipparcos proper motion Galactic coordinates G2ICRS transform IAU 1958 galactic coordinates to ICRS ICRS2G transform ICRS coordinates to IAU 1958 Galactic Geodetic/geocentric EFORM a,f for a nominated Earth reference ellipsoid GC2GD geocentric to geodetic for a nominated ellipsoid GC2GDE geocentric to geodetic given ellipsoid a,f GD2GC geodetic to geocentric for a nominated ellipsoid GD2GCE geodetic to geocentric given ellipsoid a,f Obsolete C2TCEO former name of C2TCIO CALLS: FORTRAN VERSION CALL iau_AB ( PNAT, V, S, BM1, PPR ) CALL iau_APCG ( DATE1, DATE2, EB, EH, ASTROM ) CALL iau_APCG13 ( DATE1, DATE2, ASTROM ) CALL iau_APCI ( DATE1, DATE2, EB, EH, X, Y, S, ASTROM ) CALL iau_APCI13 ( DATE1, DATE2, ASTROM, EO ) CALL iau_APCO ( DATE1, DATE2, EB, EH, X, Y, S, : THETA, ELONG, PHI, HM, XP, YP, SP, : REFA, REFB, ASTROM ) CALL iau_APCO13 ( UTC1, UTC2, DUT1, ELONG, PHI, HM, XP, YP, : PHPA, TC, RH, WL, ASTROM, EO, J ) CALL iau_APCS ( DATE1, DATE2, PV, EB, EH, ASTROM ) CALL iau_APCS13 ( DATE1, DATE2, PV, ASTROM ) CALL iau_APER ( THETA, ASTROM ) CALL iau_APER13 ( UT11, UT12, ASTROM ) CALL iau_APIO ( SP, THETA, ELONG, PHI, HM, XP, YP, : REFA, REFB, ASTROM ) CALL iau_APIO13 ( UTC1, UTC2, DUT1, ELONG, PHI, HM, XP, YP, : PHPA, TC, RH, WL, ASTROM, J ) CALL iau_ATCI13 ( RC, DC, PR, PD, PX, RV, DATE1, DATE2, RI, DI, EO ) CALL iau_ATCIQ ( RC, DC, PR, PD, PX, RV, ASTROM, RI, DI ) CALL iau_ATCIQN ( RC, DC, PR, PD, PX, RV, ASTROM, N, B, RI, DI ) CALL iau_ATCIQZ ( RC, DC, ASTROM, RI, DI ) CALL iau_ATCO13 ( RC, DC, PR, PD, PX, RV, UTC1, UTC2, DUT1, ELONG, : PHI, HM, XP, YP, PHPA, TC, RH, WL, : AOB, ZOB, HOB, DOB, ROB, EO, J ) CALL iau_ATIC13 ( RI, DI, DATE1, DATE2, RC, DC, EO ) CALL iau_ATICQ ( RI, DI, ASTROM, RC, DC ) CALL iau_ATCIQN ( RI, DI, ASTROM, N, B, RC, DC ) CALL iau_ATIO13 ( RI, DI, UTC1, UTC2, DUT1, ELONG, PHI, HM, XP, YP, PHPA, TC, RH, WL, AOB, ZOB, HOB, DOB, ROB, J ) CALL iau_ATIOQ ( RI, DI, ASTROM, AOB, ZOB, HOB, DOB, ROB ) CALL iau_ATOC13 ( TYPE, OB1, OB2, UTC1, UTC2, DUT1, : ELONG, PHI, HM, XP, YP, PHPA, TC, RH, WL, : RC, DC, J ) CALL iau_ATOI13 ( TYPE, OB1, OB2, UTC1, UTC2, DUT1, : ELONG, PHI, HM, XP, YP, PHPA, TC, RH, WL, : RI, DI, J ) CALL iau_ATOIQ ( TYPE, OB1, OB2, ASTROM, RI, DI ) CALL iau_BI00 ( DPSIBI, DEPSBI, DRA ) CALL iau_BP00 ( DATE1, DATE2, RB, RP, RBP ) CALL iau_BP06 ( DATE1, DATE2, RB, RP, RBP ) CALL iau_BPN2XY ( RBPN, X, Y ) CALL iau_C2I00A ( DATE1, DATE2, RC2I ) CALL iau_C2I00B ( DATE1, DATE2, RC2I ) CALL iau_C2I06A ( DATE1, DATE2, RC2I ) CALL iau_C2IBPN ( DATE1, DATE2, RBPN, RC2I ) CALL iau_C2IXY ( DATE1, DATE2, X, Y, RC2I ) CALL iau_C2IXYS ( X, Y, S, RC2I ) CALL iau_C2T00A ( TTA, TTB, UTA, UTB, XP, YP, RC2T ) CALL iau_C2T00B ( TTA, TTB, UTA, UTB, XP, YP, RC2T ) CALL iau_C2T06A ( TTA, TTB, UTA, UTB, XP, YP, RC2T ) CALL iau_C2TCEO ( RC2I, ERA, RPOM, RC2T ) CALL iau_C2TCIO ( RC2I, ERA, RPOM, RC2T ) CALL iau_C2TEQX ( RBPN, GST, RPOM, RC2T ) CALL iau_C2TPE ( TTA, TTB, UTA, UTB, DPSI, DEPS, XP, YP, RC2T ) CALL iau_C2TXY ( TTA, TTB, UTA, UTB, X, Y, XP, YP, RC2T ) CALL iau_CAL2JD ( IY, IM, ID, DJM0, DJM, J ) CALL iau_D2DTF ( SCALE, NDP, D1, D2, IY, IM, ID, IHMSF, J ) CALL iau_DAT ( IY, IM, ID, FD, DELTAT, J ) D = iau_DTDB ( DATE1, DATE2, UT, ELONG, U, V ) CALL iau_DTF2D ( SCALE, IY, IM, ID, IHR, IMN, SEC, D1, D2, J ) D = iau_EE00 ( DATE1, DATE2, EPSA, DPSI ) D = iau_EE00A ( DATE1, DATE2 ) D = iau_EE00B ( DATE1, DATE2 ) D = iau_EE06A ( DATE1, DATE2 ) D = iau_EECT00 ( DATE1, DATE2 ) CALL iau_EFORM ( N, A, F, J ) D = iau_EO06A ( DATE1, DATE2 ) D = iau_EORS ( RNPB, S ) D = iau_EPB ( DJ1, DJ2 ) CALL iau_EPB2JD ( EPB, DJM0, DJM ) D = iau_EPJ ( DJ1, DJ2 ) CALL iau_EPJ2JD ( EPJ, DJM0, DJM ) CALL iau_EPV00 ( DJ1, DJ2, PVH, PVB, J ) D = iau_EQEQ94 ( DATE1, DATE2 ) D = iau_ERA00 ( DJ1, DJ2 ) D = iau_FAD03 ( T ) D = iau_FAE03 ( T ) D = iau_FAF03 ( T ) D = iau_FAJU03 ( T ) D = iau_FAL03 ( T ) D = iau_FALP03 ( T ) D = iau_FAMA03 ( T ) D = iau_FAME03 ( T ) D = iau_FANE03 ( T ) D = iau_FAOM03 ( T ) D = iau_FAPA03 ( T ) D = iau_FASA03 ( T ) D = iau_FAUR03 ( T ) D = iau_FAVE03 ( T ) CALL iau_FK52H ( R5, D5, DR5, DD5, PX5, RV5, : RH, DH, DRH, DDH, PXH, RVH ) CALL iau_FK5HIP ( R5H, S5H ) CALL iau_FK5HZ ( R5, D5, DATE1, DATE2, RH, DH ) CALL iau_FW2M ( GAMB, PHIB, PSI, EPS, R ) CALL iau_FW2XY ( GAMB, PHIB, PSI, EPS, X, Y ) CALL iau_G2ICRS ( DL, DB, DR, DD ) CALL iau_GC2GD ( N, XYZ, ELONG, PHI, HEIGHT, J ) CALL iau_GC2GDE ( A, F, XYZ, ELONG, PHI, HEIGHT, J ) CALL iau_GD2GC ( N, ELONG, PHI, HEIGHT, XYZ, J ) CALL iau_GD2GCE ( A, F, ELONG, PHI, HEIGHT, XYZ, J ) D = iau_GMST00 ( UTA, UTB, TTA, TTB ) D = iau_GMST06 ( UTA, UTB, TTA, TTB ) D = iau_GMST82 ( UTA, UTB ) D = iau_GST00A ( UTA, UTB, TTA, TTB ) D = iau_GST00B ( UTA, UTB ) D = iau_GST06 ( UTA, UTB, TTA, TTB, RNPB ) D = iau_GST06A ( UTA, UTB, TTA, TTB ) D = iau_GST94 ( UTA, UTB ) CALL iau_H2FK5 ( RH, DH, DRH, DDH, PXH, RVH, : R5, D5, DR5, DD5, PX5, RV5 ) CALL iau_HFK5Z ( RH, DH, DATE1, DATE2, R5, D5, DR5, DD5 ) CALL iau_ICRS2G ( DR, DD, DL, DB ) CALL iau_JD2CAL ( DJ1, DJ2, IY, IM, ID, FD, J ) CALL iau_JDCALF ( NDP, DJ1, DJ2, IYMDF, J ) CALL iau_LD ( BM, P, Q, E, EM, DLIM, P1 ) CALL iau_LDN ( N, B, OB, SC, SN ) CALL iau_LDSUN ( P, E, EM, P1 ) CALL iau_NUM00A ( DATE1, DATE2, RMATN ) CALL iau_NUM00B ( DATE1, DATE2, RMATN ) CALL iau_NUM06A ( DATE1, DATE2, RMATN ) CALL iau_NUMAT ( EPSA, DPSI, DEPS, RMATN ) CALL iau_NUT00A ( DATE1, DATE2, DPSI, DEPS ) CALL iau_NUT00B ( DATE1, DATE2, DPSI, DEPS ) CALL iau_NUT06A ( DATE1, DATE2, DPSI, DEPS ) CALL iau_NUT80 ( DATE1, DATE2, DPSI, DEPS ) CALL iau_NUTM80 ( DATE1, DATE2, RMATN ) D = iau_OBL06 ( DATE1, DATE2 ) D = iau_OBL80 ( DATE1, DATE2 ) CALL iau_PB06 ( DATE1, DATE2, BZETA, BZ, BTHETA ) CALL iau_PFW06 ( DATE1, DATE2, GAMB, PHIB, PSIB, EPSA ) CALL iau_PLAN94 ( DATE1, DATE2, NP, PV, J ) CALL iau_PMAT00 ( DATE1, DATE2, RBP ) CALL iau_PMAT06 ( DATE1, DATE2, RBP ) CALL iau_PMAT76 ( DATE1, DATE2, RMATP ) CALL iau_PMPX ( RC, DC, PR, PD, PX, RV, PMT, POB, PCO ) CALL iau_PMSAFE ( RA1, DEC1, PMR1, PMD1, PX1, RV1, : EP1A, EP1B, EP2A, EP2B, : RA2, DEC2, PMR2, PMD2, PX2, RV2, J ) CALL iau_PN00 ( DATE1, DATE2, DPSI, DEPS, : EPSA, RB, RP, RBP, RN, RBPN ) CALL iau_PN00A ( DATE1, DATE2, : DPSI, DEPS, EPSA, RB, RP, RBP, RN, RBPN ) CALL iau_PN00B ( DATE1, DATE2, : DPSI, DEPS, EPSA, RB, RP, RBP, RN, RBPN ) CALL iau_PN06 ( DATE1, DATE2, DPSI, DEPS, : EPSA, RB, RP, RBP, RN, RBPN ) CALL iau_PN06A ( DATE1, DATE2, : DPSI, DEPS, RB, RP, RBP, RN, RBPN ) CALL iau_PNM00A ( DATE1, DATE2, RBPN ) CALL iau_PNM00B ( DATE1, DATE2, RBPN ) CALL iau_PNM06A ( DATE1, DATE2, RNPB ) CALL iau_PNM80 ( DATE1, DATE2, RMATPN ) CALL iau_P06E ( DATE1, DATE2, : EPS0, PSIA, OMA, BPA, BQA, PIA, BPIA, : EPSA, CHIA, ZA, ZETAA, THETAA, PA, GAM, PHI, PSI ) CALL iau_POM00 ( XP, YP, SP, RPOM ) CALL iau_PR00 ( DATE1, DATE2, DPSIPR, DEPSPR ) CALL iau_PREC76 ( DATE01, DATE02, DATE11, DATE12, ZETA, Z, THETA ) CALL iau_PVSTAR ( PV, RA, DEC, PMR, PMD, PX, RV, J ) CALL iau_PVTOB ( ELONG, PHI, HM, XP, YP, SP, THETA, PV ) CALL iau_REFCO ( PHPA, TC, RH, WL, REFA, REFB ) D = iau_S00 ( DATE1, DATE2, X, Y ) D = iau_S00A ( DATE1, DATE2 ) D = iau_S00B ( DATE1, DATE2 ) D = iau_S06 ( DATE1, DATE2, X, Y ) D = iau_S06A ( DATE1, DATE2 ) D = iau_SP00 ( DATE1, DATE2 ) CALL iau_STARPM ( RA1, DEC1, PMR1, PMD1, PX1, RV1, : EP1A, EP1B, EP2A, EP2B, : RA2, DEC2, PMR2, PMD2, PX2, RV2, J ) CALL iau_STARPV ( RA, DEC, PMR, PMD, PX, RV, PV, J ) CALL iau_TAITT ( TAI1, TAI2, TT1, TT2, J ) CALL iau_TAIUT1 ( TAI1, TAI2, DTA, UT11, UT12, J ) CALL iau_TAIUTC ( TAI1, TAI2, UTC1, UTC2, J ) CALL iau_TCBTDB ( TCB1, TCB2, TDB1, TDB2, J ) CALL iau_TCGTT ( TCG1, TCG2, TT1, TT2, J ) CALL iau_TDBTCB ( TDB1, TDB2, TCB1, TCB2, J ) CALL iau_TDBTT ( TDB1, TDB2, DTR, TT1, TT2, J ) CALL iau_TTTAI ( TT1, TT2, TAI1, TAI2, J ) CALL iau_TTTCG ( TT1, TT2, TCG1, TCG2, J ) CALL iau_TTTDB ( TT1, TT2, DTR, TDB1, TDB2, J ) CALL iau_TTUT1 ( TT1, TT2, DT, UT11, UT12, J ) CALL iau_UT1TAI ( UT11, UT12, TAI1, TAI2, J ) CALL iau_UT1TT ( UT11, UT12, DT, TT1, TT2, J ) CALL iau_UT1UTC ( UT11, UT12, DUT, UTC1, UTC2, J ) CALL iau_UTCTAI ( UTC1, UTC2, DTA, TAI1, TAI2, J ) CALL iau_UTCUT1 ( UTC1, UTC2, DUT, UT11, UT12, J ) CALL iau_XY06 ( DATE1, DATE2, X, Y ) CALL iau_XYS00A ( DATE1, DATE2, X, Y, S ) CALL iau_XYS00B ( DATE1, DATE2, X, Y, S ) CALL iau_XYS06A ( DATE1, DATE2, X, Y, S ) CALLS: C VERSION iauAb ( pnat, v, s, bm1, ppr ); iauApcg ( date1, date2, eb, eh, &astrom ); iauApcg13 ( date1, date2, &astrom ); iauApci ( date1, date2, eb, eh, x, y, s, &astrom ); iauApci13 ( date1, date2, &astrom, &eo ); iauApco ( date1, date2, eb, eh, x, y, s, theta, elong, phi, hm, xp, yp, sp, refa, refb, &astrom ); i = iauApco13 ( utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &astrom, &eo ); iauApcs ( date1, date2, pv, eb, eh, &astrom ); iauApcs13 ( date1, date2, pv, &astrom ); iauAper ( theta, &astrom ); iauAper13 ( ut11, ut12, &astrom ); iauApio ( sp, theta, elong, phi, hm, xp, yp, refa, refb, &astrom ); i = iauApio13 ( utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &astrom ); iauAtci13 ( rc, dc, pr, pd, px, rv, date1, date2, &ri, &di, &eo ); iauAtciq ( rc, dc, pr, pd, px, rv, &astrom, &ri, &di ); iauAtciqn ( rc, dc, pr, pd, px, rv, astrom, n, b, &ri, &di ); iauAtciqz ( rc, dc, &astrom, &ri, &di ); i = iauAtco13 ( rc, dc, pr, pd, px, rv, utc1, utc2, dut1, elong phi, hm, xp, yp, phpa, tc, rh, wl, aob, zob, hob, dob, rob, eo ); iauAtic13 ( ri, di, date1, date2, &rc, &dc, &eo ); iauAticq ( ri, di, &astrom, &rc, &dc ); iauAtciqn ( ri, di, astrom, n, b, &rc, &dc ); i = iauAtio13 ( ri, di, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, aob, zob, hob, dob, rob ); iauAtioq ( ri, di, &astrom, &aob, &zob, &hob, &dob, &rob ); i = iauAtoc13 ( type, ob1, ob2, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &rc, &dc ); i = iauAtoi13 ( type, ob1, ob2, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &ri, &di ); iauAtoiq ( type, ob1, ob2, &astrom, &ri, &di ); iauBi00 ( &dpsibi, &depsbi, &dra ); iauBp00 ( date1, date2, rb, rp, rbp ); iauBp06 ( date1, date2, rb, rp, rbp ); iauBpn2xy ( rbpn, &x, &y ); iauC2i00a ( date1, date2, rc2i ); iauC2i00b ( date1, date2, rc2i ); iauC2i06a ( date1, date2, rc2i ); iauC2ibpn ( date1, date2, rbpn, rc2i ); iauC2ixy ( date1, date2, x, y, rc2i ); iauC2ixys ( x, y, s, rc2i ); iauC2t00a ( tta, ttb, uta, utb, xp, yp, rc2t ); iauC2t00b ( tta, ttb, uta, utb, xp, yp, rc2t ); iauC2t06a ( tta, ttb, uta, utb, xp, yp, rc2t ); iauC2tcio ( rc2i, era, rpom, rc2t ); iauC2teqx ( rbpn, gst, rpom, rc2t ); iauC2tpe ( tta, ttb, uta, utb, dpsi, deps, xp, yp, rc2t ); iauC2txy ( tta, ttb, uta, utb, x, y, xp, yp, rc2t ); i = iauCal2jd ( iy, im, id, &djm0, &djm ); i = iauD2dtf ( scale, ndp, d1, d2, &iy, &im, &id, ihmsf ); i = iauDat ( iy, im, id, fd, &deltat ); d = iauDtdb ( date1, date2, ut, elong, u, v ); i = iauDtf2d ( scale, iy, im, id, ihr, imn, sec, &d1, &d2 ); d = iauEe00 ( date1, date2, epsa, dpsi ); d = iauEe00a ( date1, date2 ); d = iauEe00b ( date1, date2 ); d = iauEe06 ( date1, date2 ); d = iauEect00 ( date1, date2 ); i = iauEform ( n, &a, &f ); d = iauEo06 ( date1, date2 ); d = iauEors ( rnpb, s ); d = iauEpb ( dj1, dj2 ); iauEpb2jd ( epb, &djm0, &djm ); d = iauEpj ( dj1, dj2 ); iauEpj2jd ( epj, &djm0, &djm ); i = iauEpv00 ( dj1, dj2, pvh, pvb ); d = iauEqeq94 ( date1, date2 ); d = iauEra00 ( dj1, dj2 ); d = iauFad03 ( t ); d = iauFae03 ( t ); d = iauFaf03 ( t ); d = iauFaju03 ( t ); d = iauFal03 ( t ); d = iauFalp03 ( t ); d = iauFama03 ( t ); d = iauFame03 ( t ); d = iauFane03 ( t ); d = iauFaom03 ( t ); d = iauFapa03 ( t ); d = iauFasa03 ( t ); d = iauFaur03 ( t ); d = iauFave03 ( t ); iauFk52h ( r5, d5, dr5, dd5, px5, rv5, &rh, &dh, &drh, &ddh, &pxh, &rvh ); iauFk5hip ( r5h, s5h ); iauFk5hz ( r5, d5, date1, date2, &rh, &dh ); iauFw2m ( gamb, phib, psi, eps, r ); iauFw2xy ( gamb, phib, psi, eps, &x, &y ); iauG2icrs ( dl, db, &dr, &dd ); i = iauGc2gd ( n, xyz, &elong, &phi, &height ); i = iauGc2gde ( a, f, xyz, &elong, &phi, &height ); i = iauGd2gc ( n, elong, phi, height, xyz ); i = iauGd2gce ( a, f, elong, phi, height, xyz ); d = iauGmst00 ( uta, utb, tta, ttb ); d = iauGmst06 ( uta, utb, tta, ttb ); d = iauGmst82 ( uta, utb ); d = iauGst00a ( uta, utb, tta, ttb ); d = iauGst00b ( uta, utb ); d = iauGst06 ( uta, utb, tta, ttb, rnpb ); d = iauGst06a ( uta, utb, tta, ttb ); d = iauGst94 ( uta, utb ); iauH2fk5 ( rh, dh, drh, ddh, pxh, rvh, &r5, &d5, &dr5, &dd5, &px5, &rv5 ); iauHfk5z ( rh, dh, date1, date2, &r5, &d5, &dr5, &dd5 ); iauIcrs2g ( dr, dd, &dl, &db ); i = iauJd2cal ( dj1, dj2, &iy, &im, &id, &fd ); i = iauJdcalf ( ndp, dj1, dj2, iymdf ); iauLd ( bm, p, q, e, em, dlim, p1 ); iauLdn ( n, b, ob, sc, sn ); iauLdsun ( p, e, em, p1 ); iauNum00a ( date1, date2, rmatn ); iauNum00b ( date1, date2, rmatn ); iauNum06a ( date1, date2, rmatn ); iauNumat ( epsa, dpsi, deps, rmatn ); iauNut00a ( date1, date2, &dpsi, &deps ); iauNut00b ( date1, date2, &dpsi, &deps ); iauNut06a ( date1, date2, &dpsi, &deps ); iauNut80 ( date1, date2, &dpsi, &deps ); iauNutm80 ( date1, date2, rmatn ); d = iauObl06 ( date1, date2 ); d = iauObl80 ( date1, date2 ); iauPb06 ( date1, date2, &bzeta, &bz, &btheta ); iauPfw06 ( date1, date2, &gamb, &phib, &psib, &epsa ); i = iauPlan94 ( date1, date2, np, pv ); iauPmat00 ( date1, date2, rbp ); iauPmat06 ( date1, date2, rbp ); iauPmat76 ( date1, date2, rmatp ); iauPmpx ( rc, dc, pr, pd, px, rv, pmt, pob, pco ); i = iauPmsafe ( ra1, dec1, pmr1, pmd1, px1, rv1, ep1a, ep1b, ep2a, ep2b, &ra2, &dec2, &pmr2, &pmd2, &px2, &rv2); iauPn00 ( date1, date2, dpsi, deps, &epsa, rb, rp, rbp, rn, rbpn ); iauPn00a ( date1, date2, &dpsi, &deps, &epsa, rb, rp, rbp, rn, rbpn ); iauPn00b ( date1, date2, &dpsi, &deps, &epsa, rb, rp, rbp, rn, rbpn ); iauPn06 ( date1, date2, dpsi, deps, &epsa, rb, rp, rbp, rn, rbpn ); iauPn06a ( date1, date2, &dpsi, &deps, &epsa, rb, rp, rbp, rn, rbpn ); iauPnm00a ( date1, date2, rbpn ); iauPnm00b ( date1, date2, rbpn ); iauPnm06a ( date1, date2, rnpb ); iauPnm80 ( date1, date2, rmatpn ); iauP06e ( date1, date2, &eps0, &psia, &oma, &bpa, &bqa, &pia, &bpia, &epsa, &chia, &za, &zetaa, &thetaa, &pa, &gam, &phi, &psi ); iauPom00 ( xp, yp, sp, rpom ); iauPr00 ( date1, date2, &dpsipr, &depspr ); iauPrec76 ( date01, date02, date11, date12, &zeta, &z, &theta ); i = iauPvstar ( pv, &ra, &dec, &pmr, &pmd, &px, &rv ); iauPvtob ( elong, phi, hm, xp, yp, sp, theta, pv ); iauRefco ( phpa, tc, rh, wl, refa, refb ); d = iauS00 ( date1, date2, x, y ); d = iauS00a ( date1, date2 ); d = iauS00b ( date1, date2 ); d = iauS06 ( date1, date2, x, y ); d = iauS06a ( date1, date2 ); d = iauSp00 ( date1, date2 ); i = iauStarpm ( ra1, dec1, pmr1, pmd1, px1, rv1, ep1a, ep1b, ep2a, ep2b, &ra2, &dec2, &pmr2, &pmd2, &px2, &rv2 ); i = iauStarpv ( ra, dec, pmr, pmd, px, rv, pv ); i = iauTaitt ( tai1, tai2, &tt1, &tt2 ); i = iauTaiut1 ( tai1, tai2, dta, &ut11, &ut12 ); i = iauTaiutc ( tai1, tai2, &utc1, &utc2 ); i = iauTcbtdb ( tcb1, tcb2, &tdb1, &tdb2 ); i = iauTcgtt ( tcg1, tcg2, &tt1, &tt2 ); i = iauTdbtcb ( tdb1, tdb2, &tcb1, &tcb2 ); i = iauTdbtt ( tdb1, tdb2, dtr, &tt1, &tt2 ); i = iauTttai ( tt1, tt2, &tai1, &tai2 ); i = iauTttcg ( tt1, tt2, &tcg1, &tcg2 ); i = iauTttdb ( tt1, tt2, dtr, &tdb1, &tdb2 ); i = iauTtut1 ( tt1, tt2, dt, &ut11, &ut12 ); i = iauUt1tai ( ut11, ut12, &tai1, &tai2 ); i = iauUt1tt ( ut11, ut12, dt, &tt1, &tt2 ); i = iauUt1utc ( ut11, ut12, dut, &utc1, &utc2 ); i = iauUtctai ( utc1, utc2, dta, &tai1, &tai2 ); i = iauUtcut1 ( utc1, utc2, dut, &ut11, &ut12 ); iauXy06 ( date1, date2, &x, &y ); iauXys00a ( date1, date2, &x, &y, &s ); iauXys00b ( date1, date2, &x, &y, &s ); iauXys06a ( date1, date2, &x, &y, &s ); sofa_vml.lis 2013 October 8 -------------------------- SOFA Vector/Matrix Library -------------------------- PREFACE The routines described here comprise the SOFA vector/matrix library. Their general appearance and coding style conforms to conventions agreed by the SOFA Board, and their functions, names and algorithms have been ratified by the Board. Procedures for soliciting and agreeing additions to the library are still evolving. PROGRAMMING LANGUAGES The SOFA routines are available in two programming languages at present: Fortran 77 and ANSI C. There is a one-to-one relationship between the two language versions. The naming convention is such that a SOFA routine referred to generically as "EXAMPL" exists as a Fortran subprogram iau_EXAMPL and a C function iauExampl. The calls for the two versions are very similar, with the same arguments in the same order. In a few cases, the C equivalent of a Fortran SUBROUTINE subprogram uses a return value rather than an argument. GENERAL PRINCIPLES The library consists mostly of routines which operate on ordinary Cartesian vectors (x,y,z) and 3x3 rotation matrices. However, there is also support for vectors which represent velocity as well as position and vectors which represent rotation instead of position. The vectors which represent both position and velocity may be considered still to have dimensions (3), but to comprise elements each of which is two numbers, representing the value itself and the time derivative. Thus: * "Position" or "p" vectors (or just plain 3-vectors) have dimension (3) in Fortran and [3] in C. * "Position/velocity" or "pv" vectors have dimensions (3,2) in Fortran and [2][3] in C. * "Rotation" or "r" matrices have dimensions (3,3) in Fortran and [3][3] in C. When used for rotation, they are "orthogonal"; the inverse of such a matrix is equal to the transpose. Most of the routines in this library do not assume that r-matrices are necessarily orthogonal and in fact work on any 3x3 matrix. * "Rotation" or "r" vectors have dimensions (3) in Fortran and [3] in C. Such vectors are a combination of the Euler axis and angle and are convertible to and from r-matrices. The direction is the axis of rotation and the magnitude is the angle of rotation, in radians. Because the amount of rotation can be scaled up and down simply by multiplying the vector by a scalar, r-vectors are useful for representing spins about an axis which is fixed. * The above rules mean that in terms of memory address, the three velocity components of a pv-vector follow the three position components. Application code is permitted to exploit this and all other knowledge of the internal layouts: that x, y and z appear in that order and are in a right-handed Cartesian coordinate system etc. For example, the cp function (copy a p-vector) can be used to copy the velocity component of a pv-vector (indeed, this is how the CPV routine is coded). * The routines provided do not completely fill the range of operations that link all the various vector and matrix options, but are confined to functions that are required by other parts of the SOFA software or which are likely to prove useful. In addition to the vector/matrix routines, the library contains some routines related to spherical angles, including conversions to and from sexagesimal format. Using the library requires knowledge of vector/matrix methods, spherical trigonometry, and methods of attitude representation. These topics are covered in many textbooks, including "Spacecraft Attitude Determination and Control", James R. Wertz (ed.), Astrophysics and Space Science Library, Vol. 73, D. Reidel Publishing Company, 1986. OPERATIONS INVOLVING P-VECTORS AND R-MATRICES Initialize ZP zero p-vector ZR initialize r-matrix to null IR initialize r-matrix to identity Copy/extend/extract CP copy p-vector CR copy r-matrix Build rotations RX rotate r-matrix about x RY rotate r-matrix about y RZ rotate r-matrix about z Spherical/Cartesian conversions S2C spherical to unit vector C2S unit vector to spherical S2P spherical to p-vector P2S p-vector to spherical Operations on vectors PPP p-vector plus p-vector PMP p-vector minus p-vector PPSP p-vector plus scaled p-vector PDP inner (=scalar=dot) product of two p-vectors PXP outer (=vector=cross) product of two p-vectors PM modulus of p-vector PN normalize p-vector returning modulus SXP multiply p-vector by scalar Operations on matrices RXR r-matrix multiply TR transpose r-matrix Matrix-vector products RXP product of r-matrix and p-vector TRXP product of transpose of r-matrix and p-vector Separation and position-angle SEPP angular separation from p-vectors SEPS angular separation from spherical coordinates PAP position-angle from p-vectors PAS position-angle from spherical coordinates Rotation vectors RV2M r-vector to r-matrix RM2V r-matrix to r-vector OPERATIONS INVOLVING PV-VECTORS Initialize ZPV zero pv-vector Copy/extend/extract CPV copy pv-vector P2PV append zero velocity to p-vector PV2P discard velocity component of pv-vector Spherical/Cartesian conversions S2PV spherical to pv-vector PV2S pv-vector to spherical Operations on vectors PVPPV pv-vector plus pv-vector PVMPV pv-vector minus pv-vector PVDPV inner (=scalar=dot) product of two pv-vectors PVXPV outer (=vector=cross) product of two pv-vectors PVM modulus of pv-vector SXPV multiply pv-vector by scalar S2XPV multiply pv-vector by two scalars PVU update pv-vector PVUP update pv-vector discarding velocity Matrix-vector products RXPV product of r-matrix and pv-vector TRXPV product of transpose of r-matrix and pv-vector OPERATIONS ON ANGLES ANP normalize radians to range 0 to 2pi ANPM normalize radians to range -pi to +pi A2TF decompose radians into hours, minutes, seconds A2AF decompose radians into degrees, arcminutes, arcseconds AF2A degrees, arcminutes, arcseconds to radians D2TF decompose days into hours, minutes, seconds TF2A hours, minutes, seconds to radians TF2D hours, minutes, seconds to days CALLS: FORTRAN VERSION CALL iau_A2AF ( NDP, ANGLE, SIGN, IDMSF ) CALL iau_A2TF ( NDP, ANGLE, SIGN, IHMSF ) CALL iau_AF2A ( S, IDEG, IAMIN, ASEC, RAD, J ) D = iau_ANP ( A ) D = iau_ANPM ( A ) CALL iau_C2S ( P, THETA, PHI ) CALL iau_CP ( P, C ) CALL iau_CPV ( PV, C ) CALL iau_CR ( R, C ) CALL iau_D2TF ( NDP, DAYS, SIGN, IHMSF ) CALL iau_IR ( R ) CALL iau_P2PV ( P, PV ) CALL iau_P2S ( P, THETA, PHI, R ) CALL iau_PAP ( A, B, THETA ) CALL iau_PAS ( AL, AP, BL, BP, THETA ) CALL iau_PDP ( A, B, ADB ) CALL iau_PM ( P, R ) CALL iau_PMP ( A, B, AMB ) CALL iau_PN ( P, R, U ) CALL iau_PPP ( A, B, APB ) CALL iau_PPSP ( A, S, B, APSB ) CALL iau_PV2P ( PV, P ) CALL iau_PV2S ( PV, THETA, PHI, R, TD, PD, RD ) CALL iau_PVDPV ( A, B, ADB ) CALL iau_PVM ( PV, R, S ) CALL iau_PVMPV ( A, B, AMB ) CALL iau_PVPPV ( A, B, APB ) CALL iau_PVU ( DT, PV, UPV ) CALL iau_PVUP ( DT, PV, P ) CALL iau_PVXPV ( A, B, AXB ) CALL iau_PXP ( A, B, AXB ) CALL iau_RM2V ( R, P ) CALL iau_RV2M ( P, R ) CALL iau_RX ( PHI, R ) CALL iau_RXP ( R, P, RP ) CALL iau_RXPV ( R, PV, RPV ) CALL iau_RXR ( A, B, ATB ) CALL iau_RY ( THETA, R ) CALL iau_RZ ( PSI, R ) CALL iau_S2C ( THETA, PHI, C ) CALL iau_S2P ( THETA, PHI, R, P ) CALL iau_S2PV ( THETA, PHI, R, TD, PD, RD, PV ) CALL iau_S2XPV ( S1, S2, PV ) CALL iau_SEPP ( A, B, S ) CALL iau_SEPS ( AL, AP, BL, BP, S ) CALL iau_SXP ( S, P, SP ) CALL iau_SXPV ( S, PV, SPV ) CALL iau_TF2A ( S, IHOUR, IMIN, SEC, RAD, J ) CALL iau_TF2D ( S, IHOUR, IMIN, SEC, DAYS, J ) CALL iau_TR ( R, RT ) CALL iau_TRXP ( R, P, TRP ) CALL iau_TRXPV ( R, PV, TRPV ) CALL iau_ZP ( P ) CALL iau_ZPV ( PV ) CALL iau_ZR ( R ) CALLS: C VERSION iauA2af ( ndp, angle, &sign, idmsf ); iauA2tf ( ndp, angle, &sign, ihmsf ); i = iauAf2a ( s, ideg, iamin, asec, &rad ); d = iauAnp ( a ); d = iauAnpm ( a ); iauC2s ( p, &theta, &phi ); iauCp ( p, c ); iauCpv ( pv, c ); iauCr ( r, c ); iauD2tf ( ndp, days, &sign, ihmsf ); iauIr ( r ); iauP2pv ( p, pv ); iauP2s ( p, &theta, &phi, &r ); d = iauPap ( a, b ); d = iauPas ( al, ap, bl, bp ); d = iauPdp ( a, b ); d = iauPm ( p ); iauPmp ( a, b, amb ); iauPn ( p, &r, u ); iauPpp ( a, b, apb ); iauPpsp ( a, s, b, apsb ); iauPv2p ( pv, p ); iauPv2s ( pv, &theta, &phi, &r, &td, &pd, &rd ); iauPvdpv ( a, b, adb ); iauPvm ( pv, &r, &s ); iauPvmpv ( a, b, amb ); iauPvppv ( a, b, apb ); iauPvu ( dt, pv, upv ); iauPvup ( dt, pv, p ); iauPvxpv ( a, b, axb ); iauPxp ( a, b, axb ); iauRm2v ( r, p ); iauRv2m ( p, r ); iauRx ( phi, r ); iauRxp ( r, p, rp ); iauRxpv ( r, pv, rpv ); iauRxr ( a, b, atb ); iauRy ( theta, r ); iauRz ( psi, r ); iauS2c ( theta, phi, c ); iauS2p ( theta, phi, r, p ); iauS2pv ( theta, phi, r, td, pd, rd, pV ); iauS2xpv ( s1, s2, pv ); d = iauSepp ( a, b ); d = iauSeps ( al, ap, bl, bp ); iauSxp ( s, p, sp ); iauSxpv ( s, pv, spv ); i = iauTf2a ( s, ihour, imin, sec, &rad ); i = iauTf2d ( s, ihour, imin, sec, &days ); iauTr ( r, rt ); iauTrxp ( r, p, trp ); iauTrxpv ( r, pv, trpv ); iauZp ( p ); iauZpv ( pv ); iauZr ( r ); void iauA2af(int ndp, double angle, char *sign, int idmsf[4]) /* ** - - - - - - - - ** i a u A 2 a f ** - - - - - - - - ** ** Decompose radians into degrees, arcminutes, arcseconds, fraction. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** ndp int resolution (Note 1) ** angle double angle in radians ** ** Returned: ** sign char '+' or '-' ** idmsf int[4] degrees, arcminutes, arcseconds, fraction ** ** Called: ** iauD2tf decompose days to hms ** ** Notes: ** ** 1) The argument ndp is interpreted as follows: ** ** ndp resolution ** : ...0000 00 00 ** -7 1000 00 00 ** -6 100 00 00 ** -5 10 00 00 ** -4 1 00 00 ** -3 0 10 00 ** -2 0 01 00 ** -1 0 00 10 ** 0 0 00 01 ** 1 0 00 00.1 ** 2 0 00 00.01 ** 3 0 00 00.001 ** : 0 00 00.000... ** ** 2) The largest positive useful value for ndp is determined by the ** size of angle, the format of doubles on the target platform, and ** the risk of overflowing idmsf[3]. On a typical platform, for ** angle up to 2pi, the available floating-point precision might ** correspond to ndp=12. However, the practical limit is typically ** ndp=9, set by the capacity of a 32-bit int, or ndp=4 if int is ** only 16 bits. ** ** 3) The absolute value of angle may exceed 2pi. In cases where it ** does not, it is up to the caller to test for and handle the ** case where angle is very nearly 2pi and rounds up to 360 degrees, ** by testing for idmsf[0]=360 and setting idmsf[0-3] to zero. ** */ void iauA2tf(int ndp, double angle, char *sign, int ihmsf[4]) /* ** - - - - - - - - ** i a u A 2 t f ** - - - - - - - - ** ** Decompose radians into hours, minutes, seconds, fraction. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** ndp int resolution (Note 1) ** angle double angle in radians ** ** Returned: ** sign char '+' or '-' ** ihmsf int[4] hours, minutes, seconds, fraction ** ** Called: ** iauD2tf decompose days to hms ** ** Notes: ** ** 1) The argument ndp is interpreted as follows: ** ** ndp resolution ** : ...0000 00 00 ** -7 1000 00 00 ** -6 100 00 00 ** -5 10 00 00 ** -4 1 00 00 ** -3 0 10 00 ** -2 0 01 00 ** -1 0 00 10 ** 0 0 00 01 ** 1 0 00 00.1 ** 2 0 00 00.01 ** 3 0 00 00.001 ** : 0 00 00.000... ** ** 2) The largest positive useful value for ndp is determined by the ** size of angle, the format of doubles on the target platform, and ** the risk of overflowing ihmsf[3]. On a typical platform, for ** angle up to 2pi, the available floating-point precision might ** correspond to ndp=12. However, the practical limit is typically ** ndp=9, set by the capacity of a 32-bit int, or ndp=4 if int is ** only 16 bits. ** ** 3) The absolute value of angle may exceed 2pi. In cases where it ** does not, it is up to the caller to test for and handle the ** case where angle is very nearly 2pi and rounds up to 24 hours, ** by testing for ihmsf[0]=24 and setting ihmsf[0-3] to zero. ** */ void iauAb(double pnat[3], double v[3], double s, double bm1, double ppr[3]) /* ** - - - - - - ** i a u A b ** - - - - - - ** ** Apply aberration to transform natural direction into proper ** direction. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** pnat double[3] natural direction to the source (unit vector) ** v double[3] observer barycentric velocity in units of c ** s double distance between the Sun and the observer (au) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** ** Returned: ** ppr double[3] proper direction to source (unit vector) ** ** Notes: ** ** 1) The algorithm is based on Expr. (7.40) in the Explanatory ** Supplement (Urban & Seidelmann 2013), but with the following ** changes: ** ** o Rigorous rather than approximate normalization is applied. ** ** o The gravitational potential term from Expr. (7) in ** Klioner (2003) is added, taking into account only the Sun's ** contribution. This has a maximum effect of about ** 0.4 microarcsecond. ** ** 2) In almost all cases, the maximum accuracy will be limited by the ** supplied velocity. For example, if the SOFA iauEpv00 function is ** used, errors of up to 5 microarcseconds could occur. ** ** References: ** ** Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to ** the Astronomical Almanac, 3rd ed., University Science Books ** (2013). ** ** Klioner, Sergei A., "A practical relativistic model for micro- ** arcsecond astrometry in space", Astr. J. 125, 1580-1597 (2003). ** ** Called: ** iauPdp scalar product of two p-vectors ** */ int iauAf2a(char s, int ideg, int iamin, double asec, double *rad) /* ** - - - - - - - - ** i a u A f 2 a ** - - - - - - - - ** ** Convert degrees, arcminutes, arcseconds to radians. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** s char sign: '-' = negative, otherwise positive ** ideg int degrees ** iamin int arcminutes ** asec double arcseconds ** ** Returned: ** rad double angle in radians ** ** Returned (function value): ** int status: 0 = OK ** 1 = ideg outside range 0-359 ** 2 = iamin outside range 0-59 ** 3 = asec outside range 0-59.999... ** ** Notes: ** ** 1) The result is computed even if any of the range checks fail. ** ** 2) Negative ideg, iamin and/or asec produce a warning status, but ** the absolute value is used in the conversion. ** ** 3) If there are multiple errors, the status value reflects only the ** first, the smallest taking precedence. ** */ double iauAnp(double a) /* ** - - - - - - - ** i a u A n p ** - - - - - - - ** ** Normalize angle into the range 0 <= a < 2pi. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double angle (radians) ** ** Returned (function value): ** double angle in range 0-2pi ** */ double iauAnpm(double a) /* ** - - - - - - - - ** i a u A n p m ** - - - - - - - - ** ** Normalize angle into the range -pi <= a < +pi. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double angle (radians) ** ** Returned (function value): ** double angle in range +/-pi ** */ void iauApcg(double date1, double date2, double ebpv[2][3], double ehp[3], iauASTROM *astrom) /* ** - - - - - - - - ** i a u A p c g ** - - - - - - - - ** ** For a geocentric observer, prepare star-independent astrometry ** parameters for transformations between ICRS and GCRS coordinates. ** The Earth ephemeris is supplied by the caller. ** ** The parameters produced by this function are required in the ** parallax, light deflection and aberration parts of the astrometric ** transformation chain. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1 double TDB as a 2-part... ** date2 double ...Julian Date (Note 1) ** ebpv double[2][3] Earth barycentric pos/vel (au, au/day) ** ehp double[3] Earth heliocentric position (au) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double unchanged ** xpl double unchanged ** ypl double unchanged ** sphi double unchanged ** cphi double unchanged ** diurab double unchanged ** eral double unchanged ** refa double unchanged ** refb double unchanged ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. For most ** applications of this function the choice will not be at all ** critical. ** ** TT can be used instead of TDB without any significant impact on ** accuracy. ** ** 2) All the vectors are with respect to BCRS axes. ** ** 3) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 4) The context structure astrom produced by this function is used by ** iauAtciq* and iauAticq*. ** ** Called: ** iauApcs astrometry parameters, ICRS-GCRS, space observer ** */ void iauApcg13(double date1, double date2, iauASTROM *astrom) /* ** - - - - - - - - - - ** i a u A p c g 1 3 ** - - - - - - - - - - ** ** For a geocentric observer, prepare star-independent astrometry ** parameters for transformations between ICRS and GCRS coordinates. ** The caller supplies the date, and SOFA models are used to predict ** the Earth ephemeris. ** ** The parameters produced by this function are required in the ** parallax, light deflection and aberration parts of the astrometric ** transformation chain. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1 double TDB as a 2-part... ** date2 double ...Julian Date (Note 1) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double unchanged ** xpl double unchanged ** ypl double unchanged ** sphi double unchanged ** cphi double unchanged ** diurab double unchanged ** eral double unchanged ** refa double unchanged ** refb double unchanged ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. For most ** applications of this function the choice will not be at all ** critical. ** ** TT can be used instead of TDB without any significant impact on ** accuracy. ** ** 2) All the vectors are with respect to BCRS axes. ** ** 3) In cases where the caller wishes to supply his own Earth ** ephemeris, the function iauApcg can be used instead of the present ** function. ** ** 4) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 5) The context structure astrom produced by this function is used by ** iauAtciq* and iauAticq*. ** ** Called: ** iauEpv00 Earth position and velocity ** iauApcg astrometry parameters, ICRS-GCRS, geocenter ** */ void iauApci(double date1, double date2, double ebpv[2][3], double ehp[3], double x, double y, double s, iauASTROM *astrom) /* ** - - - - - - - - ** i a u A p c i ** - - - - - - - - ** ** For a terrestrial observer, prepare star-independent astrometry ** parameters for transformations between ICRS and geocentric CIRS ** coordinates. The Earth ephemeris and CIP/CIO are supplied by the ** caller. ** ** The parameters produced by this function are required in the ** parallax, light deflection, aberration, and bias-precession-nutation ** parts of the astrometric transformation chain. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1 double TDB as a 2-part... ** date2 double ...Julian Date (Note 1) ** ebpv double[2][3] Earth barycentric position/velocity (au, au/day) ** ehp double[3] Earth heliocentric position (au) ** x,y double CIP X,Y (components of unit vector) ** s double the CIO locator s (radians) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double unchanged ** xpl double unchanged ** ypl double unchanged ** sphi double unchanged ** cphi double unchanged ** diurab double unchanged ** eral double unchanged ** refa double unchanged ** refb double unchanged ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. For most ** applications of this function the choice will not be at all ** critical. ** ** TT can be used instead of TDB without any significant impact on ** accuracy. ** ** 2) All the vectors are with respect to BCRS axes. ** ** 3) In cases where the caller does not wish to provide the Earth ** ephemeris and CIP/CIO, the function iauApci13 can be used instead ** of the present function. This computes the required quantities ** using other SOFA functions. ** ** 4) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 5) The context structure astrom produced by this function is used by ** iauAtciq* and iauAticq*. ** ** Called: ** iauApcg astrometry parameters, ICRS-GCRS, geocenter ** iauC2ixys celestial-to-intermediate matrix, given X,Y and s ** */ void iauApci13(double date1, double date2, iauASTROM *astrom, double *eo) /* ** - - - - - - - - - - ** i a u A p c i 1 3 ** - - - - - - - - - - ** ** For a terrestrial observer, prepare star-independent astrometry ** parameters for transformations between ICRS and geocentric CIRS ** coordinates. The caller supplies the date, and SOFA models are used ** to predict the Earth ephemeris and CIP/CIO. ** ** The parameters produced by this function are required in the ** parallax, light deflection, aberration, and bias-precession-nutation ** parts of the astrometric transformation chain. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1 double TDB as a 2-part... ** date2 double ...Julian Date (Note 1) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double unchanged ** xpl double unchanged ** ypl double unchanged ** sphi double unchanged ** cphi double unchanged ** diurab double unchanged ** eral double unchanged ** refa double unchanged ** refb double unchanged ** eo double* equation of the origins (ERA-GST) ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. For most ** applications of this function the choice will not be at all ** critical. ** ** TT can be used instead of TDB without any significant impact on ** accuracy. ** ** 2) All the vectors are with respect to BCRS axes. ** ** 3) In cases where the caller wishes to supply his own Earth ** ephemeris and CIP/CIO, the function iauApci can be used instead ** of the present function. ** ** 4) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 5) The context structure astrom produced by this function is used by ** iauAtciq* and iauAticq*. ** ** Called: ** iauEpv00 Earth position and velocity ** iauPnm06a classical NPB matrix, IAU 2006/2000A ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauS06 the CIO locator s, given X,Y, IAU 2006 ** iauApci astrometry parameters, ICRS-CIRS ** iauEors equation of the origins, given NPB matrix and s ** */ void iauApco(double date1, double date2, double ebpv[2][3], double ehp[3], double x, double y, double s, double theta, double elong, double phi, double hm, double xp, double yp, double sp, double refa, double refb, iauASTROM *astrom) /* ** - - - - - - - - ** i a u A p c o ** - - - - - - - - ** ** For a terrestrial observer, prepare star-independent astrometry ** parameters for transformations between ICRS and observed ** coordinates. The caller supplies the Earth ephemeris, the Earth ** rotation information and the refraction constants as well as the ** site coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1 double TDB as a 2-part... ** date2 double ...Julian Date (Note 1) ** ebpv double[2][3] Earth barycentric PV (au, au/day, Note 2) ** ehp double[3] Earth heliocentric P (au, Note 2) ** x,y double CIP X,Y (components of unit vector) ** s double the CIO locator s (radians) ** theta double Earth rotation angle (radians) ** elong double longitude (radians, east +ve, Note 3) ** phi double latitude (geodetic, radians, Note 3) ** hm double height above ellipsoid (m, geodetic, Note 3) ** xp,yp double polar motion coordinates (radians, Note 4) ** sp double the TIO locator s' (radians, Note 4) ** refa double refraction constant A (radians, Note 5) ** refb double refraction constant B (radians, Note 5) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. For most ** applications of this function the choice will not be at all ** critical. ** ** TT can be used instead of TDB without any significant impact on ** accuracy. ** ** 2) The vectors eb, eh, and all the astrom vectors, are with respect ** to BCRS axes. ** ** 3) The geographical coordinates are with respect to the WGS84 ** reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN ** CONVENTION: the longitude required by the present function is ** right-handed, i.e. east-positive, in accordance with geographical ** convention. ** ** 4) xp and yp are the coordinates (in radians) of the Celestial ** Intermediate Pole with respect to the International Terrestrial ** Reference System (see IERS Conventions), measured along the ** meridians 0 and 90 deg west respectively. sp is the TIO locator ** s', in radians, which positions the Terrestrial Intermediate ** Origin on the equator. For many applications, xp, yp and ** (especially) sp can be set to zero. ** ** Internally, the polar motion is stored in a form rotated onto the ** local meridian. ** ** 5) The refraction constants refa and refb are for use in a ** dZ = A*tan(Z)+B*tan^3(Z) model, where Z is the observed ** (i.e. refracted) zenith distance and dZ is the amount of ** refraction. ** ** 6) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** 7) In cases where the caller does not wish to provide the Earth ** Ephemeris, the Earth rotation information and refraction ** constants, the function iauApco13 can be used instead of the ** present function. This starts from UTC and weather readings etc. ** and computes suitable values using other SOFA functions. ** ** 8) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 9) The context structure astrom produced by this function is used by ** iauAtioq, iauAtoiq, iauAtciq* and iauAticq*. ** ** Called: ** iauAper astrometry parameters: update ERA ** iauC2ixys celestial-to-intermediate matrix, given X,Y and s ** iauPvtob position/velocity of terrestrial station ** iauTrxpv product of transpose of r-matrix and pv-vector ** iauApcs astrometry parameters, ICRS-GCRS, space observer ** iauCr copy r-matrix ** */ int iauApco13(double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, iauASTROM *astrom, double *eo) /* ** - - - - - - - - - - ** i a u A p c o 1 3 ** - - - - - - - - - - ** ** For a terrestrial observer, prepare star-independent astrometry ** parameters for transformations between ICRS and observed ** coordinates. The caller supplies UTC, site coordinates, ambient air ** conditions and observing wavelength, and SOFA models are used to ** obtain the Earth ephemeris, CIP/CIO and refraction constants. ** ** The parameters produced by this function are required in the ** parallax, light deflection, aberration, and bias-precession-nutation ** parts of the ICRS/CIRS transformations. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** utc1 double UTC as a 2-part... ** utc2 double ...quasi Julian Date (Notes 1,2) ** dut1 double UT1-UTC (seconds, Note 3) ** elong double longitude (radians, east +ve, Note 4) ** phi double latitude (geodetic, radians, Note 4) ** hm double height above ellipsoid (m, geodetic, Notes 4,6) ** xp,yp double polar motion coordinates (radians, Note 5) ** phpa double pressure at the observer (hPa = mB, Note 6) ** tc double ambient temperature at the observer (deg C) ** rh double relative humidity at the observer (range 0-1) ** wl double wavelength (micrometers, Note 7) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** eo double* equation of the origins (ERA-GST) ** ** Returned (function value): ** int status: +1 = dubious year (Note 2) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any ** convenient way between the two arguments, for example where utc1 ** is the Julian Day Number and utc2 is the fraction of a day. ** ** However, JD cannot unambiguously represent UTC during a leap ** second unless special measures are taken. The convention in the ** present function is that the JD day represents UTC days whether ** the length is 86399, 86400 or 86401 SI seconds. ** ** Applications should use the function iauDtf2d to convert from ** calendar date and time of day into 2-part quasi Julian Date, as ** it implements the leap-second-ambiguity convention just ** described. ** ** 2) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the ** future to be trusted. See iauDat for further details. ** ** 3) UT1-UTC is tabulated in IERS bulletins. It increases by exactly ** one second at the end of each positive UTC leap second, ** introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This ** practice is under review, and in the future UT1-UTC may grow ** essentially without limit. ** ** 4) The geographical coordinates are with respect to the WGS84 ** reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the ** longitude required by the present function is east-positive ** (i.e. right-handed), in accordance with geographical convention. ** ** 5) The polar motion xp,yp can be obtained from IERS bulletins. The ** values are the coordinates (in radians) of the Celestial ** Intermediate Pole with respect to the International Terrestrial ** Reference System (see IERS Conventions 2003), measured along the ** meridians 0 and 90 deg west respectively. For many ** applications, xp and yp can be set to zero. ** ** Internally, the polar motion is stored in a form rotated onto ** the local meridian. ** ** 6) If hm, the height above the ellipsoid of the observing station ** in meters, is not known but phpa, the pressure in hPa (=mB), is ** available, an adequate estimate of hm can be obtained from the ** expression ** ** hm = -29.3 * tsl * log ( phpa / 1013.25 ); ** ** where tsl is the approximate sea-level air temperature in K ** (See Astrophysical Quantities, C.W.Allen, 3rd edition, section ** 52). Similarly, if the pressure phpa is not known, it can be ** estimated from the height of the observing station, hm, as ** follows: ** ** phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) ); ** ** Note, however, that the refraction is nearly proportional to ** the pressure and that an accurate phpa value is important for ** precise work. ** ** 7) The argument wl specifies the observing wavelength in ** micrometers. The transition from optical to radio is assumed to ** occur at 100 micrometers (about 3000 GHz). ** ** 8) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** 9) In cases where the caller wishes to supply his own Earth ** ephemeris, Earth rotation information and refraction constants, ** the function iauApco can be used instead of the present function. ** ** 10) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 11) The context structure astrom produced by this function is used ** by iauAtioq, iauAtoiq, iauAtciq* and iauAticq*. ** ** Called: ** iauUtctai UTC to TAI ** iauTaitt TAI to TT ** iauUtcut1 UTC to UT1 ** iauEpv00 Earth position and velocity ** iauPnm06a classical NPB matrix, IAU 2006/2000A ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauS06 the CIO locator s, given X,Y, IAU 2006 ** iauEra00 Earth rotation angle, IAU 2000 ** iauSp00 the TIO locator s', IERS 2000 ** iauRefco refraction constants for given ambient conditions ** iauApco astrometry parameters, ICRS-observed ** iauEors equation of the origins, given NPB matrix and s ** */ void iauApcs(double date1, double date2, double pv[2][3], double ebpv[2][3], double ehp[3], iauASTROM *astrom) /* ** - - - - - - - - ** i a u A p c s ** - - - - - - - - ** ** For an observer whose geocentric position and velocity are known, ** prepare star-independent astrometry parameters for transformations ** between ICRS and GCRS. The Earth ephemeris is supplied by the ** caller. ** ** The parameters produced by this function are required in the space ** motion, parallax, light deflection and aberration parts of the ** astrometric transformation chain. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1 double TDB as a 2-part... ** date2 double ...Julian Date (Note 1) ** pv double[2][3] observer's geocentric pos/vel (m, m/s) ** ebpv double[2][3] Earth barycentric PV (au, au/day) ** ehp double[3] Earth heliocentric P (au) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double unchanged ** xpl double unchanged ** ypl double unchanged ** sphi double unchanged ** cphi double unchanged ** diurab double unchanged ** eral double unchanged ** refa double unchanged ** refb double unchanged ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. For most ** applications of this function the choice will not be at all ** critical. ** ** TT can be used instead of TDB without any significant impact on ** accuracy. ** ** 2) All the vectors are with respect to BCRS axes. ** ** 3) Providing separate arguments for (i) the observer's geocentric ** position and velocity and (ii) the Earth ephemeris is done for ** convenience in the geocentric, terrestrial and Earth orbit cases. ** For deep space applications it maybe more convenient to specify ** zero geocentric position and velocity and to supply the ** observer's position and velocity information directly instead of ** with respect to the Earth. However, note the different units: ** m and m/s for the geocentric vectors, au and au/day for the ** heliocentric and barycentric vectors. ** ** 4) In cases where the caller does not wish to provide the Earth ** ephemeris, the function iauApcs13 can be used instead of the ** present function. This computes the Earth ephemeris using the ** SOFA function iauEpv00. ** ** 5) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 6) The context structure astrom produced by this function is used by ** iauAtciq* and iauAticq*. ** ** Called: ** iauCp copy p-vector ** iauPm modulus of p-vector ** iauPn decompose p-vector into modulus and direction ** iauIr initialize r-matrix to identity ** */ void iauApcs13(double date1, double date2, double pv[2][3], iauASTROM *astrom) /* ** - - - - - - - - - - ** i a u A p c s 1 3 ** - - - - - - - - - - ** ** For an observer whose geocentric position and velocity are known, ** prepare star-independent astrometry parameters for transformations ** between ICRS and GCRS. The Earth ephemeris is from SOFA models. ** ** The parameters produced by this function are required in the space ** motion, parallax, light deflection and aberration parts of the ** astrometric transformation chain. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1 double TDB as a 2-part... ** date2 double ...Julian Date (Note 1) ** pv double[2][3] observer's geocentric pos/vel (Note 3) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double unchanged ** xpl double unchanged ** ypl double unchanged ** sphi double unchanged ** cphi double unchanged ** diurab double unchanged ** eral double unchanged ** refa double unchanged ** refb double unchanged ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. For most ** applications of this function the choice will not be at all ** critical. ** ** TT can be used instead of TDB without any significant impact on ** accuracy. ** ** 2) All the vectors are with respect to BCRS axes. ** ** 3) The observer's position and velocity pv are geocentric but with ** respect to BCRS axes, and in units of m and m/s. No assumptions ** are made about proximity to the Earth, and the function can be ** used for deep space applications as well as Earth orbit and ** terrestrial. ** ** 4) In cases where the caller wishes to supply his own Earth ** ephemeris, the function iauApcs can be used instead of the present ** function. ** ** 5) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 6) The context structure astrom produced by this function is used by ** iauAtciq* and iauAticq*. ** ** Called: ** iauEpv00 Earth position and velocity ** iauApcs astrometry parameters, ICRS-GCRS, space observer ** */ void iauAper(double theta, iauASTROM *astrom) /* ** - - - - - - - - ** i a u A p e r ** - - - - - - - - ** ** In the star-independent astrometry parameters, update only the ** Earth rotation angle, supplied by the caller explicitly. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** theta double Earth rotation angle (radians, Note 2) ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double not used ** eb double[3] not used ** eh double[3] not used ** em double not used ** v double[3] not used ** bm1 double not used ** bpn double[3][3] not used ** along double longitude + s' (radians) ** xpl double not used ** ypl double not used ** sphi double not used ** cphi double not used ** diurab double not used ** eral double not used ** refa double not used ** refb double not used ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double unchanged ** eb double[3] unchanged ** eh double[3] unchanged ** em double unchanged ** v double[3] unchanged ** bm1 double unchanged ** bpn double[3][3] unchanged ** along double unchanged ** xpl double unchanged ** ypl double unchanged ** sphi double unchanged ** cphi double unchanged ** diurab double unchanged ** eral double "local" Earth rotation angle (radians) ** refa double unchanged ** refb double unchanged ** ** Notes: ** ** 1) This function exists to enable sidereal-tracking applications to ** avoid wasteful recomputation of the bulk of the astrometry ** parameters: only the Earth rotation is updated. ** ** 2) For targets expressed as equinox based positions, such as ** classical geocentric apparent (RA,Dec), the supplied theta can be ** Greenwich apparent sidereal time rather than Earth rotation ** angle. ** ** 3) The function iauAper13 can be used instead of the present ** function, and starts from UT1 rather than ERA itself. ** ** 4) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** */ void iauAper13(double ut11, double ut12, iauASTROM *astrom) /* ** - - - - - - - - - - ** i a u A p e r 1 3 ** - - - - - - - - - - ** ** In the star-independent astrometry parameters, update only the ** Earth rotation angle. The caller provides UT1, (n.b. not UTC). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** ut11 double UT1 as a 2-part... ** ut12 double ...Julian Date (Note 1) ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double not used ** eb double[3] not used ** eh double[3] not used ** em double not used ** v double[3] not used ** bm1 double not used ** bpn double[3][3] not used ** along double longitude + s' (radians) ** xpl double not used ** ypl double not used ** sphi double not used ** cphi double not used ** diurab double not used ** eral double not used ** refa double not used ** refb double not used ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double unchanged ** eb double[3] unchanged ** eh double[3] unchanged ** em double unchanged ** v double[3] unchanged ** bm1 double unchanged ** bpn double[3][3] unchanged ** along double unchanged ** xpl double unchanged ** ypl double unchanged ** sphi double unchanged ** cphi double unchanged ** diurab double unchanged ** eral double "local" Earth rotation angle (radians) ** refa double unchanged ** refb double unchanged ** ** Notes: ** ** 1) The UT1 date (n.b. not UTC) ut11+ut12 is a Julian Date, ** apportioned in any convenient way between the arguments ut11 and ** ut12. For example, JD(UT1)=2450123.7 could be expressed in any ** of these ways, among others: ** ** ut11 ut12 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. The date & time method is ** best matched to the algorithm used: maximum precision is ** delivered when the ut11 argument is for 0hrs UT1 on the day in ** question and the ut12 argument lies in the range 0 to 1, or vice ** versa. ** ** 2) If the caller wishes to provide the Earth rotation angle itself, ** the function iauAper can be used instead. One use of this ** technique is to substitute Greenwich apparent sidereal time and ** thereby to support equinox based transformations directly. ** ** 3) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** Called: ** iauAper astrometry parameters: update ERA ** iauEra00 Earth rotation angle, IAU 2000 ** */ void iauApio(double sp, double theta, double elong, double phi, double hm, double xp, double yp, double refa, double refb, iauASTROM *astrom) /* ** - - - - - - - - ** i a u A p i o ** - - - - - - - - ** ** For a terrestrial observer, prepare star-independent astrometry ** parameters for transformations between CIRS and observed ** coordinates. The caller supplies the Earth orientation information ** and the refraction constants as well as the site coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** sp double the TIO locator s' (radians, Note 1) ** theta double Earth rotation angle (radians) ** elong double longitude (radians, east +ve, Note 2) ** phi double geodetic latitude (radians, Note 2) ** hm double height above ellipsoid (m, geodetic Note 2) ** xp,yp double polar motion coordinates (radians, Note 3) ** refa double refraction constant A (radians, Note 4) ** refb double refraction constant B (radians, Note 4) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double unchanged ** eb double[3] unchanged ** eh double[3] unchanged ** em double unchanged ** v double[3] unchanged ** bm1 double unchanged ** bpn double[3][3] unchanged ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** ** Notes: ** ** 1) sp, the TIO locator s', is a tiny quantity needed only by the ** most precise applications. It can either be set to zero or ** predicted using the SOFA function iauSp00. ** ** 2) The geographical coordinates are with respect to the WGS84 ** reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the ** longitude required by the present function is east-positive ** (i.e. right-handed), in accordance with geographical convention. ** ** 3) The polar motion xp,yp can be obtained from IERS bulletins. The ** values are the coordinates (in radians) of the Celestial ** Intermediate Pole with respect to the International Terrestrial ** Reference System (see IERS Conventions 2003), measured along the ** meridians 0 and 90 deg west respectively. For many applications, ** xp and yp can be set to zero. ** ** Internally, the polar motion is stored in a form rotated onto the ** local meridian. ** ** 4) The refraction constants refa and refb are for use in a ** dZ = A*tan(Z)+B*tan^3(Z) model, where Z is the observed ** (i.e. refracted) zenith distance and dZ is the amount of ** refraction. ** ** 5) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** 6) In cases where the caller does not wish to provide the Earth ** rotation information and refraction constants, the function ** iauApio13 can be used instead of the present function. This ** starts from UTC and weather readings etc. and computes suitable ** values using other SOFA functions. ** ** 7) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 8) The context structure astrom produced by this function is used by ** iauAtioq and iauAtoiq. ** ** Called: ** iauPvtob position/velocity of terrestrial station ** iauAper astrometry parameters: update ERA ** */ int iauApio13(double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, iauASTROM *astrom) /* ** - - - - - - - - - - ** i a u A p i o 1 3 ** - - - - - - - - - - ** ** For a terrestrial observer, prepare star-independent astrometry ** parameters for transformations between CIRS and observed ** coordinates. The caller supplies UTC, site coordinates, ambient air ** conditions and observing wavelength. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** utc1 double UTC as a 2-part... ** utc2 double ...quasi Julian Date (Notes 1,2) ** dut1 double UT1-UTC (seconds) ** elong double longitude (radians, east +ve, Note 3) ** phi double geodetic latitude (radians, Note 3) ** hm double height above ellipsoid (m, geodetic Notes 4,6) ** xp,yp double polar motion coordinates (radians, Note 5) ** phpa double pressure at the observer (hPa = mB, Note 6) ** tc double ambient temperature at the observer (deg C) ** rh double relative humidity at the observer (range 0-1) ** wl double wavelength (micrometers, Note 7) ** ** Returned: ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double unchanged ** eb double[3] unchanged ** eh double[3] unchanged ** em double unchanged ** v double[3] unchanged ** bm1 double unchanged ** bpn double[3][3] unchanged ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** ** Returned (function value): ** int status: +1 = dubious year (Note 2) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any ** convenient way between the two arguments, for example where utc1 ** is the Julian Day Number and utc2 is the fraction of a day. ** ** However, JD cannot unambiguously represent UTC during a leap ** second unless special measures are taken. The convention in the ** present function is that the JD day represents UTC days whether ** the length is 86399, 86400 or 86401 SI seconds. ** ** Applications should use the function iauDtf2d to convert from ** calendar date and time of day into 2-part quasi Julian Date, as ** it implements the leap-second-ambiguity convention just ** described. ** ** 2) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the future ** to be trusted. See iauDat for further details. ** ** 3) UT1-UTC is tabulated in IERS bulletins. It increases by exactly ** one second at the end of each positive UTC leap second, ** introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This ** practice is under review, and in the future UT1-UTC may grow ** essentially without limit. ** ** 4) The geographical coordinates are with respect to the WGS84 ** reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the ** longitude required by the present function is east-positive ** (i.e. right-handed), in accordance with geographical convention. ** ** 5) The polar motion xp,yp can be obtained from IERS bulletins. The ** values are the coordinates (in radians) of the Celestial ** Intermediate Pole with respect to the International Terrestrial ** Reference System (see IERS Conventions 2003), measured along the ** meridians 0 and 90 deg west respectively. For many applications, ** xp and yp can be set to zero. ** ** Internally, the polar motion is stored in a form rotated onto ** the local meridian. ** ** 6) If hm, the height above the ellipsoid of the observing station ** in meters, is not known but phpa, the pressure in hPa (=mB), is ** available, an adequate estimate of hm can be obtained from the ** expression ** ** hm = -29.3 * tsl * log ( phpa / 1013.25 ); ** ** where tsl is the approximate sea-level air temperature in K ** (See Astrophysical Quantities, C.W.Allen, 3rd edition, section ** 52). Similarly, if the pressure phpa is not known, it can be ** estimated from the height of the observing station, hm, as ** follows: ** ** phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) ); ** ** Note, however, that the refraction is nearly proportional to the ** pressure and that an accurate phpa value is important for ** precise work. ** ** 7) The argument wl specifies the observing wavelength in ** micrometers. The transition from optical to radio is assumed to ** occur at 100 micrometers (about 3000 GHz). ** ** 8) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** 9) In cases where the caller wishes to supply his own Earth ** rotation information and refraction constants, the function ** iauApc can be used instead of the present function. ** ** 10) This is one of several functions that inserts into the astrom ** structure star-independent parameters needed for the chain of ** astrometric transformations ICRS <-> GCRS <-> CIRS <-> observed. ** ** The various functions support different classes of observer and ** portions of the transformation chain: ** ** functions observer transformation ** ** iauApcg iauApcg13 geocentric ICRS <-> GCRS ** iauApci iauApci13 terrestrial ICRS <-> CIRS ** iauApco iauApco13 terrestrial ICRS <-> observed ** iauApcs iauApcs13 space ICRS <-> GCRS ** iauAper iauAper13 terrestrial update Earth rotation ** iauApio iauApio13 terrestrial CIRS <-> observed ** ** Those with names ending in "13" use contemporary SOFA models to ** compute the various ephemerides. The others accept ephemerides ** supplied by the caller. ** ** The transformation from ICRS to GCRS covers space motion, ** parallax, light deflection, and aberration. From GCRS to CIRS ** comprises frame bias and precession-nutation. From CIRS to ** observed takes account of Earth rotation, polar motion, diurnal ** aberration and parallax (unless subsumed into the ICRS <-> GCRS ** transformation), and atmospheric refraction. ** ** 11) The context structure astrom produced by this function is used ** by iauAtioq and iauAtoiq. ** ** Called: ** iauUtctai UTC to TAI ** iauTaitt TAI to TT ** iauUtcut1 UTC to UT1 ** iauSp00 the TIO locator s', IERS 2000 ** iauEra00 Earth rotation angle, IAU 2000 ** iauRefco refraction constants for given ambient conditions ** iauApio astrometry parameters, CIRS-observed ** */ void iauAtci13(double rc, double dc, double pr, double pd, double px, double rv, double date1, double date2, double *ri, double *di, double *eo) /* ** - - - - - - - - - - ** i a u A t c i 1 3 ** - - - - - - - - - - ** ** Transform ICRS star data, epoch J2000.0, to CIRS. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rc double ICRS right ascension at J2000.0 (radians, Note 1) ** dc double ICRS declination at J2000.0 (radians, Note 1) ** pr double RA proper motion (radians/year; Note 2) ** pd double Dec proper motion (radians/year) ** px double parallax (arcsec) ** rv double radial velocity (km/s, +ve if receding) ** date1 double TDB as a 2-part... ** date2 double ...Julian Date (Note 3) ** ** Returned: ** ri,di double* CIRS geocentric RA,Dec (radians) ** eo double* equation of the origins (ERA-GST, Note 5) ** ** Notes: ** ** 1) Star data for an epoch other than J2000.0 (for example from the ** Hipparcos catalog, which has an epoch of J1991.25) will require a ** preliminary call to iauPmsafe before use. ** ** 2) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt. ** ** 3) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.8g could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.8g 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. For most ** applications of this function the choice will not be at all ** critical. ** ** TT can be used instead of TDB without any significant impact on ** accuracy. ** ** 4) The available accuracy is better than 1 milliarcsecond, limited ** mainly by the precession-nutation model that is used, namely ** IAU 2000A/2006. Very close to solar system bodies, additional ** errors of up to several milliarcseconds can occur because of ** unmodeled light deflection; however, the Sun's contribution is ** taken into account, to first order. The accuracy limitations of ** the SOFA function iauEpv00 (used to compute Earth position and ** velocity) can contribute aberration errors of up to ** 5 microarcseconds. Light deflection at the Sun's limb is ** uncertain at the 0.4 mas level. ** ** 5) Should the transformation to (equinox based) apparent place be ** required rather than (CIO based) intermediate place, subtract the ** equation of the origins from the returned right ascension: ** RA = RI - EO. (The iauAnp function can then be applied, as ** required, to keep the result in the conventional 0-2pi range.) ** ** Called: ** iauApci13 astrometry parameters, ICRS-CIRS, 2013 ** iauAtciq quick ICRS to CIRS ** */ void iauAtciq(double rc, double dc, double pr, double pd, double px, double rv, iauASTROM *astrom, double *ri, double *di) /* ** - - - - - - - - - ** i a u A t c i q ** - - - - - - - - - ** ** Quick ICRS, epoch J2000.0, to CIRS transformation, given precomputed ** star-independent astrometry parameters. ** ** Use of this function is appropriate when efficiency is important and ** where many star positions are to be transformed for one date. The ** star-independent parameters can be obtained by calling one of the ** functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13]. ** ** If the parallax and proper motions are zero the iauAtciqz function ** can be used instead. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rc,dc double ICRS RA,Dec at J2000.0 (radians) ** pr double RA proper motion (radians/year; Note 3) ** pd double Dec proper motion (radians/year) ** px double parallax (arcsec) ** rv double radial velocity (km/s, +ve if receding) ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** ** Returned: ** ri,di double CIRS RA,Dec (radians) ** ** Notes: ** ** 1) All the vectors are with respect to BCRS axes. ** ** 2) Star data for an epoch other than J2000.0 (for example from the ** Hipparcos catalog, which has an epoch of J1991.25) will require a ** preliminary call to iauPmsafe before use. ** ** 3) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt. ** ** Called: ** iauPmpx proper motion and parallax ** iauLdsun light deflection by the Sun ** iauAb stellar aberration ** iauRxp product of r-matrix and pv-vector ** iauC2s p-vector to spherical ** iauAnp normalize angle into range 0 to 2pi ** */ void iauAtciqn(double rc, double dc, double pr, double pd, double px, double rv, iauASTROM *astrom, int n, iauLDBODY b[], double *ri, double *di) /* ** - - - - - - - - - - ** i a u A t c i q n ** - - - - - - - - - - ** ** Quick ICRS, epoch J2000.0, to CIRS transformation, given precomputed ** star-independent astrometry parameters plus a list of light- ** deflecting bodies. ** ** Use of this function is appropriate when efficiency is important and ** where many star positions are to be transformed for one date. The ** star-independent parameters can be obtained by calling one of the ** functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13]. ** ** If the only light-deflecting body to be taken into account is the ** Sun, the iauAtciq function can be used instead. If in addition the ** parallax and proper motions are zero, the iauAtciqz function can be ** used. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rc,dc double ICRS RA,Dec at J2000.0 (radians) ** pr double RA proper motion (radians/year; Note 3) ** pd double Dec proper motion (radians/year) ** px double parallax (arcsec) ** rv double radial velocity (km/s, +ve if receding) ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** n int number of bodies (Note 3) ** b iauLDBODY[n] data for each of the n bodies (Notes 3,4): ** bm double mass of the body (solar masses, Note 5) ** dl double deflection limiter (Note 6) ** pv [2][3] barycentric PV of the body (au, au/day) ** ** Returned: ** ri,di double CIRS RA,Dec (radians) ** ** Notes: ** ** 1) Star data for an epoch other than J2000.0 (for example from the ** Hipparcos catalog, which has an epoch of J1991.25) will require a ** preliminary call to iauPmsafe before use. ** ** 2) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt. ** ** 3) The struct b contains n entries, one for each body to be ** considered. If n = 0, no gravitational light deflection will be ** applied, not even for the Sun. ** ** 4) The struct b should include an entry for the Sun as well as for ** any planet or other body to be taken into account. The entries ** should be in the order in which the light passes the body. ** ** 5) In the entry in the b struct for body i, the mass parameter ** b[i].bm can, as required, be adjusted in order to allow for such ** effects as quadrupole field. ** ** 6) The deflection limiter parameter b[i].dl is phi^2/2, where phi is ** the angular separation (in radians) between star and body at ** which limiting is applied. As phi shrinks below the chosen ** threshold, the deflection is artificially reduced, reaching zero ** for phi = 0. Example values suitable for a terrestrial ** observer, together with masses, are as follows: ** ** body i b[i].bm b[i].dl ** ** Sun 1.0 6e-6 ** Jupiter 0.00095435 3e-9 ** Saturn 0.00028574 3e-10 ** ** 7) For efficiency, validation of the contents of the b array is ** omitted. The supplied masses must be greater than zero, the ** position and velocity vectors must be right, and the deflection ** limiter greater than zero. ** ** Called: ** iauPmpx proper motion and parallax ** iauLdn light deflection by n bodies ** iauAb stellar aberration ** iauRxp product of r-matrix and pv-vector ** iauC2s p-vector to spherical ** iauAnp normalize angle into range 0 to 2pi ** */ void iauAtciqz(double rc, double dc, iauASTROM *astrom, double *ri, double *di) /* ** - - - - - - - - - - ** i a u A t c i q z ** - - - - - - - - - - ** ** Quick ICRS to CIRS transformation, given precomputed star- ** independent astrometry parameters, and assuming zero parallax and ** proper motion. ** ** Use of this function is appropriate when efficiency is important and ** where many star positions are to be transformed for one date. The ** star-independent parameters can be obtained by calling one of the ** functions iauApci[13], iauApcg[13], iauApco[13] or iauApcs[13]. ** ** The corresponding function for the case of non-zero parallax and ** proper motion is iauAtciq. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rc,dc double ICRS astrometric RA,Dec (radians) ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** ** Returned: ** ri,di double CIRS RA,Dec (radians) ** ** Note: ** ** All the vectors are with respect to BCRS axes. ** ** References: ** ** Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to ** the Astronomical Almanac, 3rd ed., University Science Books ** (2013). ** ** Klioner, Sergei A., "A practical relativistic model for micro- ** arcsecond astrometry in space", Astr. J. 125, 1580-1597 (2003). ** ** Called: ** iauS2c spherical coordinates to unit vector ** iauLdsun light deflection due to Sun ** iauAb stellar aberration ** iauRxp product of r-matrix and p-vector ** iauC2s p-vector to spherical ** iauAnp normalize angle into range +/- pi ** */ int iauAtco13(double rc, double dc, double pr, double pd, double px, double rv, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *aob, double *zob, double *hob, double *dob, double *rob, double *eo) /* ** - - - - - - - - - - ** i a u A t c o 1 3 ** - - - - - - - - - - ** ** ICRS RA,Dec to observed place. The caller supplies UTC, site ** coordinates, ambient air conditions and observing wavelength. ** ** SOFA models are used for the Earth ephemeris, bias-precession- ** nutation, Earth orientation and refraction. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rc,dc double ICRS right ascension at J2000.0 (radians, Note 1) ** pr double RA proper motion (radians/year; Note 2) ** pd double Dec proper motion (radians/year) ** px double parallax (arcsec) ** rv double radial velocity (km/s, +ve if receding) ** utc1 double UTC as a 2-part... ** utc2 double ...quasi Julian Date (Notes 3-4) ** dut1 double UT1-UTC (seconds, Note 5) ** elong double longitude (radians, east +ve, Note 6) ** phi double latitude (geodetic, radians, Note 6) ** hm double height above ellipsoid (m, geodetic, Notes 6,8) ** xp,yp double polar motion coordinates (radians, Note 7) ** phpa double pressure at the observer (hPa = mB, Note 8) ** tc double ambient temperature at the observer (deg C) ** rh double relative humidity at the observer (range 0-1) ** wl double wavelength (micrometers, Note 9) ** ** Returned: ** aob double* observed azimuth (radians: N=0,E=90) ** zob double* observed zenith distance (radians) ** hob double* observed hour angle (radians) ** dob double* observed declination (radians) ** rob double* observed right ascension (CIO-based, radians) ** eo double* equation of the origins (ERA-GST) ** ** Returned (function value): ** int status: +1 = dubious year (Note 4) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) Star data for an epoch other than J2000.0 (for example from the ** Hipparcos catalog, which has an epoch of J1991.25) will require ** a preliminary call to iauPmsafe before use. ** ** 2) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt. ** ** 3) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any ** convenient way between the two arguments, for example where utc1 ** is the Julian Day Number and utc2 is the fraction of a day. ** ** However, JD cannot unambiguously represent UTC during a leap ** second unless special measures are taken. The convention in the ** present function is that the JD day represents UTC days whether ** the length is 86399, 86400 or 86401 SI seconds. ** ** Applications should use the function iauDtf2d to convert from ** calendar date and time of day into 2-part quasi Julian Date, as ** it implements the leap-second-ambiguity convention just ** described. ** ** 4) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the ** future to be trusted. See iauDat for further details. ** ** 5) UT1-UTC is tabulated in IERS bulletins. It increases by exactly ** one second at the end of each positive UTC leap second, ** introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This ** practice is under review, and in the future UT1-UTC may grow ** essentially without limit. ** ** 6) The geographical coordinates are with respect to the WGS84 ** reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the ** longitude required by the present function is east-positive ** (i.e. right-handed), in accordance with geographical convention. ** ** 7) The polar motion xp,yp can be obtained from IERS bulletins. The ** values are the coordinates (in radians) of the Celestial ** Intermediate Pole with respect to the International Terrestrial ** Reference System (see IERS Conventions 2003), measured along the ** meridians 0 and 90 deg west respectively. For many ** applications, xp and yp can be set to zero. ** ** 8) If hm, the height above the ellipsoid of the observing station ** in meters, is not known but phpa, the pressure in hPa (=mB), ** is available, an adequate estimate of hm can be obtained from ** the expression ** ** hm = -29.3 * tsl * log ( phpa / 1013.25 ); ** ** where tsl is the approximate sea-level air temperature in K ** (See Astrophysical Quantities, C.W.Allen, 3rd edition, section ** 52). Similarly, if the pressure phpa is not known, it can be ** estimated from the height of the observing station, hm, as ** follows: ** ** phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) ); ** ** Note, however, that the refraction is nearly proportional to ** the pressure and that an accurate phpa value is important for ** precise work. ** ** 9) The argument wl specifies the observing wavelength in ** micrometers. The transition from optical to radio is assumed to ** occur at 100 micrometers (about 3000 GHz). ** ** 10) The accuracy of the result is limited by the corrections for ** refraction, which use a simple A*tan(z) + B*tan^3(z) model. ** Providing the meteorological parameters are known accurately and ** there are no gross local effects, the predicted observed ** coordinates should be within 0.05 arcsec (optical) or 1 arcsec ** (radio) for a zenith distance of less than 70 degrees, better ** than 30 arcsec (optical or radio) at 85 degrees and better ** than 20 arcmin (optical) or 30 arcmin (radio) at the horizon. ** ** Without refraction, the complementary functions iauAtco13 and ** iauAtoc13 are self-consistent to better than 1 microarcsecond ** all over the celestial sphere. With refraction included, ** consistency falls off at high zenith distances, but is still ** better than 0.05 arcsec at 85 degrees. ** ** 11) "Observed" Az,ZD means the position that would be seen by a ** perfect geodetically aligned theodolite. (Zenith distance is ** used rather than altitude in order to reflect the fact that no ** allowance is made for depression of the horizon.) This is ** related to the observed HA,Dec via the standard rotation, using ** the geodetic latitude (corrected for polar motion), while the ** observed HA and RA are related simply through the Earth rotation ** angle and the site longitude. "Observed" RA,Dec or HA,Dec thus ** means the position that would be seen by a perfect equatorial ** with its polar axis aligned to the Earth's axis of rotation. ** ** 12) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** Called: ** iauApco13 astrometry parameters, ICRS-observed, 2013 ** iauAtciq quick ICRS to CIRS ** iauAtioq quick ICRS to observed ** */ void iauAtic13(double ri, double di, double date1, double date2, double *rc, double *dc, double *eo) /* ** - - - - - - - - - - ** i a u A t i c 1 3 ** - - - - - - - - - - ** ** Transform star RA,Dec from geocentric CIRS to ICRS astrometric. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** ri,di double CIRS geocentric RA,Dec (radians) ** date1 double TDB as a 2-part... ** date2 double ...Julian Date (Note 1) ** ** Returned: ** rc,dc double ICRS astrometric RA,Dec (radians) ** eo double equation of the origins (ERA-GST, Note 4) ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. For most ** applications of this function the choice will not be at all ** critical. ** ** TT can be used instead of TDB without any significant impact on ** accuracy. ** ** 2) Iterative techniques are used for the aberration and light ** deflection corrections so that the functions iauAtic13 (or ** iauAticq) and iauAtci13 (or iauAtciq) are accurate inverses; ** even at the edge of the Sun's disk the discrepancy is only about ** 1 nanoarcsecond. ** ** 3) The available accuracy is better than 1 milliarcsecond, limited ** mainly by the precession-nutation model that is used, namely ** IAU 2000A/2006. Very close to solar system bodies, additional ** errors of up to several milliarcseconds can occur because of ** unmodeled light deflection; however, the Sun's contribution is ** taken into account, to first order. The accuracy limitations of ** the SOFA function iauEpv00 (used to compute Earth position and ** velocity) can contribute aberration errors of up to ** 5 microarcseconds. Light deflection at the Sun's limb is ** uncertain at the 0.4 mas level. ** ** 4) Should the transformation to (equinox based) J2000.0 mean place ** be required rather than (CIO based) ICRS coordinates, subtract the ** equation of the origins from the returned right ascension: ** RA = RI - EO. (The iauAnp function can then be applied, as ** required, to keep the result in the conventional 0-2pi range.) ** ** Called: ** iauApci13 astrometry parameters, ICRS-CIRS, 2013 ** iauAticq quick CIRS to ICRS astrometric ** */ void iauAticq(double ri, double di, iauASTROM *astrom, double *rc, double *dc) /* ** - - - - - - - - - ** i a u A t i c q ** - - - - - - - - - ** ** Quick CIRS RA,Dec to ICRS astrometric place, given the star- ** independent astrometry parameters. ** ** Use of this function is appropriate when efficiency is important and ** where many star positions are all to be transformed for one date. ** The star-independent astrometry parameters can be obtained by ** calling one of the functions iauApci[13], iauApcg[13], iauApco[13] ** or iauApcs[13]. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** ri,di double CIRS RA,Dec (radians) ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** ** Returned: ** rc,dc double ICRS astrometric RA,Dec (radians) ** ** Notes: ** ** 1) Only the Sun is taken into account in the light deflection ** correction. ** ** 2) Iterative techniques are used for the aberration and light ** deflection corrections so that the functions iauAtic13 (or ** iauAticq) and iauAtci13 (or iauAtciq) are accurate inverses; ** even at the edge of the Sun's disk the discrepancy is only about ** 1 nanoarcsecond. ** ** Called: ** iauS2c spherical coordinates to unit vector ** iauTrxp product of transpose of r-matrix and p-vector ** iauZp zero p-vector ** iauAb stellar aberration ** iauLdsun light deflection by the Sun ** iauC2s p-vector to spherical ** iauAnp normalize angle into range +/- pi ** */ void iauAticqn(double ri, double di, iauASTROM *astrom, int n, iauLDBODY b[], double *rc, double *dc) /* ** - - - - - - - - - ** i a u A t i c q n ** - - - - - - - - - ** ** Quick CIRS to ICRS astrometric place transformation, given the star- ** independent astrometry parameters plus a list of light-deflecting ** bodies. ** ** Use of this function is appropriate when efficiency is important and ** where many star positions are all to be transformed for one date. ** The star-independent astrometry parameters can be obtained by ** calling one of the functions iauApci[13], iauApcg[13], iauApco[13] ** or iauApcs[13]. * * If the only light-deflecting body to be taken into account is the * Sun, the iauAticq function can be used instead. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** ri,di double CIRS RA,Dec (radians) ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** n int number of bodies (Note 3) ** b iauLDBODY[n] data for each of the n bodies (Notes 3,4): ** bm double mass of the body (solar masses, Note 5) ** dl double deflection limiter (Note 6) ** pv [2][3] barycentric PV of the body (au, au/day) ** ** Returned: ** rc,dc double ICRS astrometric RA,Dec (radians) ** ** Notes: ** ** 1) Iterative techniques are used for the aberration and light ** deflection corrections so that the functions iauAticqn and ** iauAtciqn are accurate inverses; even at the edge of the Sun's ** disk the discrepancy is only about 1 nanoarcsecond. ** ** 2) If the only light-deflecting body to be taken into account is the ** Sun, the iauAticq function can be used instead. ** ** 3) The struct b contains n entries, one for each body to be ** considered. If n = 0, no gravitational light deflection will be ** applied, not even for the Sun. ** ** 4) The struct b should include an entry for the Sun as well as for ** any planet or other body to be taken into account. The entries ** should be in the order in which the light passes the body. ** ** 5) In the entry in the b struct for body i, the mass parameter ** b[i].bm can, as required, be adjusted in order to allow for such ** effects as quadrupole field. ** ** 6) The deflection limiter parameter b[i].dl is phi^2/2, where phi is ** the angular separation (in radians) between star and body at ** which limiting is applied. As phi shrinks below the chosen ** threshold, the deflection is artificially reduced, reaching zero ** for phi = 0. Example values suitable for a terrestrial ** observer, together with masses, are as follows: ** ** body i b[i].bm b[i].dl ** ** Sun 1.0 6e-6 ** Jupiter 0.00095435 3e-9 ** Saturn 0.00028574 3e-10 ** ** 7) For efficiency, validation of the contents of the b array is ** omitted. The supplied masses must be greater than zero, the ** position and velocity vectors must be right, and the deflection ** limiter greater than zero. ** ** Called: ** iauS2c spherical coordinates to unit vector ** iauTrxp product of transpose of r-matrix and p-vector ** iauZp zero p-vector ** iauAb stellar aberration ** iauLdn light deflection by n bodies ** iauC2s p-vector to spherical ** iauAnp normalize angle into range +/- pi ** */ int iauAtio13(double ri, double di, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *aob, double *zob, double *hob, double *dob, double *rob) /* ** - - - - - - - - - - ** i a u A t i o 1 3 ** - - - - - - - - - - ** ** CIRS RA,Dec to observed place. The caller supplies UTC, site ** coordinates, ambient air conditions and observing wavelength. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** ri double CIRS right ascension (CIO-based, radians) ** di double CIRS declination (radians) ** utc1 double UTC as a 2-part... ** utc2 double ...quasi Julian Date (Notes 1,2) ** dut1 double UT1-UTC (seconds, Note 3) ** elong double longitude (radians, east +ve, Note 4) ** phi double geodetic latitude (radians, Note 4) ** hm double height above ellipsoid (m, geodetic Notes 4,6) ** xp,yp double polar motion coordinates (radians, Note 5) ** phpa double pressure at the observer (hPa = mB, Note 6) ** tc double ambient temperature at the observer (deg C) ** rh double relative humidity at the observer (range 0-1) ** wl double wavelength (micrometers, Note 7) ** ** Returned: ** aob double* observed azimuth (radians: N=0,E=90) ** zob double* observed zenith distance (radians) ** hob double* observed hour angle (radians) ** dob double* observed declination (radians) ** rob double* observed right ascension (CIO-based, radians) ** ** Returned (function value): ** int status: +1 = dubious year (Note 2) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any ** convenient way between the two arguments, for example where utc1 ** is the Julian Day Number and utc2 is the fraction of a day. ** ** However, JD cannot unambiguously represent UTC during a leap ** second unless special measures are taken. The convention in the ** present function is that the JD day represents UTC days whether ** the length is 86399, 86400 or 86401 SI seconds. ** ** Applications should use the function iauDtf2d to convert from ** calendar date and time of day into 2-part quasi Julian Date, as ** it implements the leap-second-ambiguity convention just ** described. ** ** 2) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the ** future to be trusted. See iauDat for further details. ** ** 3) UT1-UTC is tabulated in IERS bulletins. It increases by exactly ** one second at the end of each positive UTC leap second, ** introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This ** practice is under review, and in the future UT1-UTC may grow ** essentially without limit. ** ** 4) The geographical coordinates are with respect to the WGS84 ** reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the ** longitude required by the present function is east-positive ** (i.e. right-handed), in accordance with geographical convention. ** ** 5) The polar motion xp,yp can be obtained from IERS bulletins. The ** values are the coordinates (in radians) of the Celestial ** Intermediate Pole with respect to the International Terrestrial ** Reference System (see IERS Conventions 2003), measured along the ** meridians 0 and 90 deg west respectively. For many ** applications, xp and yp can be set to zero. ** ** 6) If hm, the height above the ellipsoid of the observing station ** in meters, is not known but phpa, the pressure in hPa (=mB), is ** available, an adequate estimate of hm can be obtained from the ** expression ** ** hm = -29.3 * tsl * log ( phpa / 1013.25 ); ** ** where tsl is the approximate sea-level air temperature in K ** (See Astrophysical Quantities, C.W.Allen, 3rd edition, section ** 52). Similarly, if the pressure phpa is not known, it can be ** estimated from the height of the observing station, hm, as ** follows: ** ** phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) ); ** ** Note, however, that the refraction is nearly proportional to ** the pressure and that an accurate phpa value is important for ** precise work. ** ** 7) The argument wl specifies the observing wavelength in ** micrometers. The transition from optical to radio is assumed to ** occur at 100 micrometers (about 3000 GHz). ** ** 8) "Observed" Az,ZD means the position that would be seen by a ** perfect geodetically aligned theodolite. (Zenith distance is ** used rather than altitude in order to reflect the fact that no ** allowance is made for depression of the horizon.) This is ** related to the observed HA,Dec via the standard rotation, using ** the geodetic latitude (corrected for polar motion), while the ** observed HA and RA are related simply through the Earth rotation ** angle and the site longitude. "Observed" RA,Dec or HA,Dec thus ** means the position that would be seen by a perfect equatorial ** with its polar axis aligned to the Earth's axis of rotation. ** ** 9) The accuracy of the result is limited by the corrections for ** refraction, which use a simple A*tan(z) + B*tan^3(z) model. ** Providing the meteorological parameters are known accurately and ** there are no gross local effects, the predicted astrometric ** coordinates should be within 0.05 arcsec (optical) or 1 arcsec ** (radio) for a zenith distance of less than 70 degrees, better ** than 30 arcsec (optical or radio) at 85 degrees and better ** than 20 arcmin (optical) or 30 arcmin (radio) at the horizon. ** ** 10) The complementary functions iauAtio13 and iauAtoi13 are self- ** consistent to better than 1 microarcsecond all over the ** celestial sphere. ** ** 11) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** Called: ** iauApio13 astrometry parameters, CIRS-observed, 2013 ** iauAtioq quick ICRS to observed ** */ void iauAtioq(double ri, double di, iauASTROM *astrom, double *aob, double *zob, double *hob, double *dob, double *rob) /* ** - - - - - - - - - ** i a u A t i o q ** - - - - - - - - - ** ** Quick CIRS to observed place transformation. ** ** Use of this function is appropriate when efficiency is important and ** where many star positions are all to be transformed for one date. ** The star-independent astrometry parameters can be obtained by ** calling iauApio[13] or iauApco[13]. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** ri double CIRS right ascension ** di double CIRS declination ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** ** Returned: ** aob double* observed azimuth (radians: N=0,E=90) ** zob double* observed zenith distance (radians) ** hob double* observed hour angle (radians) ** dob double* observed declination (radians) ** rob double* observed right ascension (CIO-based, radians) ** ** Notes: ** ** 1) This function returns zenith distance rather than altitude in ** order to reflect the fact that no allowance is made for ** depression of the horizon. ** ** 2) The accuracy of the result is limited by the corrections for ** refraction, which use a simple A*tan(z) + B*tan^3(z) model. ** Providing the meteorological parameters are known accurately and ** there are no gross local effects, the predicted observed ** coordinates should be within 0.05 arcsec (optical) or 1 arcsec ** (radio) for a zenith distance of less than 70 degrees, better ** than 30 arcsec (optical or radio) at 85 degrees and better ** than 20 arcmin (optical) or 30 arcmin (radio) at the horizon. ** ** Without refraction, the complementary functions iauAtioq and ** iauAtoiq are self-consistent to better than 1 microarcsecond all ** over the celestial sphere. With refraction included, consistency ** falls off at high zenith distances, but is still better than ** 0.05 arcsec at 85 degrees. ** ** 3) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** 4) The CIRS RA,Dec is obtained from a star catalog mean place by ** allowing for space motion, parallax, the Sun's gravitational lens ** effect, annual aberration and precession-nutation. For star ** positions in the ICRS, these effects can be applied by means of ** the iauAtci13 (etc.) functions. Starting from classical "mean ** place" systems, additional transformations will be needed first. ** ** 5) "Observed" Az,El means the position that would be seen by a ** perfect geodetically aligned theodolite. This is obtained from ** the CIRS RA,Dec by allowing for Earth orientation and diurnal ** aberration, rotating from equator to horizon coordinates, and ** then adjusting for refraction. The HA,Dec is obtained by ** rotating back into equatorial coordinates, and is the position ** that would be seen by a perfect equatorial with its polar axis ** aligned to the Earth's axis of rotation. Finally, the RA is ** obtained by subtracting the HA from the local ERA. ** ** 6) The star-independent CIRS-to-observed-place parameters in ASTROM ** may be computed with iauApio[13] or iauApco[13]. If nothing has ** changed significantly except the time, iauAper[13] may be used to ** perform the requisite adjustment to the astrom structure. ** ** Called: ** iauS2c spherical coordinates to unit vector ** iauC2s p-vector to spherical ** iauAnp normalize angle into range 0 to 2pi ** */ int iauAtoc13(const char *type, double ob1, double ob2, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *rc, double *dc) /* ** - - - - - - - - - - ** i a u A t o c 1 3 ** - - - - - - - - - - ** ** Observed place at a groundbased site to to ICRS astrometric RA,Dec. ** The caller supplies UTC, site coordinates, ambient air conditions ** and observing wavelength. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** type char[] type of coordinates - "R", "H" or "A" (Notes 1,2) ** ob1 double observed Az, HA or RA (radians; Az is N=0,E=90) ** ob2 double observed ZD or Dec (radians) ** utc1 double UTC as a 2-part... ** utc2 double ...quasi Julian Date (Notes 3,4) ** dut1 double UT1-UTC (seconds, Note 5) ** elong double longitude (radians, east +ve, Note 6) ** phi double geodetic latitude (radians, Note 6) ** hm double height above ellipsoid (m, geodetic Notes 6,8) ** xp,yp double polar motion coordinates (radians, Note 7) ** phpa double pressure at the observer (hPa = mB, Note 8) ** tc double ambient temperature at the observer (deg C) ** rh double relative humidity at the observer (range 0-1) ** wl double wavelength (micrometers, Note 9) ** ** Returned: ** rc,dc double ICRS astrometric RA,Dec (radians) ** ** Returned (function value): ** int status: +1 = dubious year (Note 4) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) "Observed" Az,ZD means the position that would be seen by a ** perfect geodetically aligned theodolite. (Zenith distance is ** used rather than altitude in order to reflect the fact that no ** allowance is made for depression of the horizon.) This is ** related to the observed HA,Dec via the standard rotation, using ** the geodetic latitude (corrected for polar motion), while the ** observed HA and RA are related simply through the Earth rotation ** angle and the site longitude. "Observed" RA,Dec or HA,Dec thus ** means the position that would be seen by a perfect equatorial ** with its polar axis aligned to the Earth's axis of rotation. ** ** 2) Only the first character of the type argument is significant. ** "R" or "r" indicates that ob1 and ob2 are the observed right ** ascension and declination; "H" or "h" indicates that they are ** hour angle (west +ve) and declination; anything else ("A" or ** "a" is recommended) indicates that ob1 and ob2 are azimuth ** (north zero, east 90 deg) and zenith distance. ** ** 3) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any ** convenient way between the two arguments, for example where utc1 ** is the Julian Day Number and utc2 is the fraction of a day. ** ** However, JD cannot unambiguously represent UTC during a leap ** second unless special measures are taken. The convention in the ** present function is that the JD day represents UTC days whether ** the length is 86399, 86400 or 86401 SI seconds. ** ** Applications should use the function iauDtf2d to convert from ** calendar date and time of day into 2-part quasi Julian Date, as ** it implements the leap-second-ambiguity convention just ** described. ** ** 4) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the ** future to be trusted. See iauDat for further details. ** ** 5) UT1-UTC is tabulated in IERS bulletins. It increases by exactly ** one second at the end of each positive UTC leap second, ** introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This ** practice is under review, and in the future UT1-UTC may grow ** essentially without limit. ** ** 6) The geographical coordinates are with respect to the WGS84 ** reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the ** longitude required by the present function is east-positive ** (i.e. right-handed), in accordance with geographical convention. ** ** 7) The polar motion xp,yp can be obtained from IERS bulletins. The ** values are the coordinates (in radians) of the Celestial ** Intermediate Pole with respect to the International Terrestrial ** Reference System (see IERS Conventions 2003), measured along the ** meridians 0 and 90 deg west respectively. For many ** applications, xp and yp can be set to zero. ** ** 8) If hm, the height above the ellipsoid of the observing station ** in meters, is not known but phpa, the pressure in hPa (=mB), is ** available, an adequate estimate of hm can be obtained from the ** expression ** ** hm = -29.3 * tsl * log ( phpa / 1013.25 ); ** ** where tsl is the approximate sea-level air temperature in K ** (See Astrophysical Quantities, C.W.Allen, 3rd edition, section ** 52). Similarly, if the pressure phpa is not known, it can be ** estimated from the height of the observing station, hm, as ** follows: ** ** phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) ); ** ** Note, however, that the refraction is nearly proportional to ** the pressure and that an accurate phpa value is important for ** precise work. ** ** 9) The argument wl specifies the observing wavelength in ** micrometers. The transition from optical to radio is assumed to ** occur at 100 micrometers (about 3000 GHz). ** ** 10) The accuracy of the result is limited by the corrections for ** refraction, which use a simple A*tan(z) + B*tan^3(z) model. ** Providing the meteorological parameters are known accurately and ** there are no gross local effects, the predicted astrometric ** coordinates should be within 0.05 arcsec (optical) or 1 arcsec ** (radio) for a zenith distance of less than 70 degrees, better ** than 30 arcsec (optical or radio) at 85 degrees and better ** than 20 arcmin (optical) or 30 arcmin (radio) at the horizon. ** ** Without refraction, the complementary functions iauAtco13 and ** iauAtoc13 are self-consistent to better than 1 microarcsecond ** all over the celestial sphere. With refraction included, ** consistency falls off at high zenith distances, but is still ** better than 0.05 arcsec at 85 degrees. ** ** 11) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** Called: ** iauApco13 astrometry parameters, ICRS-observed ** iauAtoiq quick observed to CIRS ** iauAticq quick CIRS to ICRS ** */ int iauAtoi13(const char *type, double ob1, double ob2, double utc1, double utc2, double dut1, double elong, double phi, double hm, double xp, double yp, double phpa, double tc, double rh, double wl, double *ri, double *di) /* ** - - - - - - - - - - ** i a u A t o i 1 3 ** - - - - - - - - - - ** ** Observed place to CIRS. The caller supplies UTC, site coordinates, ** ambient air conditions and observing wavelength. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** type char[] type of coordinates - "R", "H" or "A" (Notes 1,2) ** ob1 double observed Az, HA or RA (radians; Az is N=0,E=90) ** ob2 double observed ZD or Dec (radians) ** utc1 double UTC as a 2-part... ** utc2 double ...quasi Julian Date (Notes 3,4) ** dut1 double UT1-UTC (seconds, Note 5) ** elong double longitude (radians, east +ve, Note 6) ** phi double geodetic latitude (radians, Note 6) ** hm double height above the ellipsoid (meters, Notes 6,8) ** xp,yp double polar motion coordinates (radians, Note 7) ** phpa double pressure at the observer (hPa = mB, Note 8) ** tc double ambient temperature at the observer (deg C) ** rh double relative humidity at the observer (range 0-1) ** wl double wavelength (micrometers, Note 9) ** ** Returned: ** ri double* CIRS right ascension (CIO-based, radians) ** di double* CIRS declination (radians) ** ** Returned (function value): ** int status: +1 = dubious year (Note 2) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) "Observed" Az,ZD means the position that would be seen by a ** perfect geodetically aligned theodolite. (Zenith distance is ** used rather than altitude in order to reflect the fact that no ** allowance is made for depression of the horizon.) This is ** related to the observed HA,Dec via the standard rotation, using ** the geodetic latitude (corrected for polar motion), while the ** observed HA and RA are related simply through the Earth rotation ** angle and the site longitude. "Observed" RA,Dec or HA,Dec thus ** means the position that would be seen by a perfect equatorial ** with its polar axis aligned to the Earth's axis of rotation. ** ** 2) Only the first character of the type argument is significant. ** "R" or "r" indicates that ob1 and ob2 are the observed right ** ascension and declination; "H" or "h" indicates that they are ** hour angle (west +ve) and declination; anything else ("A" or ** "a" is recommended) indicates that ob1 and ob2 are azimuth ** (north zero, east 90 deg) and zenith distance. ** ** 3) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any ** convenient way between the two arguments, for example where utc1 ** is the Julian Day Number and utc2 is the fraction of a day. ** ** However, JD cannot unambiguously represent UTC during a leap ** second unless special measures are taken. The convention in the ** present function is that the JD day represents UTC days whether ** the length is 86399, 86400 or 86401 SI seconds. ** ** Applications should use the function iauDtf2d to convert from ** calendar date and time of day into 2-part quasi Julian Date, as ** it implements the leap-second-ambiguity convention just ** described. ** ** 4) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the ** future to be trusted. See iauDat for further details. ** ** 5) UT1-UTC is tabulated in IERS bulletins. It increases by exactly ** one second at the end of each positive UTC leap second, ** introduced in order to keep UT1-UTC within +/- 0.9s. n.b. This ** practice is under review, and in the future UT1-UTC may grow ** essentially without limit. ** ** 6) The geographical coordinates are with respect to the WGS84 ** reference ellipsoid. TAKE CARE WITH THE LONGITUDE SIGN: the ** longitude required by the present function is east-positive ** (i.e. right-handed), in accordance with geographical convention. ** ** 7) The polar motion xp,yp can be obtained from IERS bulletins. The ** values are the coordinates (in radians) of the Celestial ** Intermediate Pole with respect to the International Terrestrial ** Reference System (see IERS Conventions 2003), measured along the ** meridians 0 and 90 deg west respectively. For many ** applications, xp and yp can be set to zero. ** ** 8) If hm, the height above the ellipsoid of the observing station ** in meters, is not known but phpa, the pressure in hPa (=mB), is ** available, an adequate estimate of hm can be obtained from the ** expression ** ** hm = -29.3 * tsl * log ( phpa / 1013.25 ); ** ** where tsl is the approximate sea-level air temperature in K ** (See Astrophysical Quantities, C.W.Allen, 3rd edition, section ** 52). Similarly, if the pressure phpa is not known, it can be ** estimated from the height of the observing station, hm, as ** follows: ** ** phpa = 1013.25 * exp ( -hm / ( 29.3 * tsl ) ); ** ** Note, however, that the refraction is nearly proportional to ** the pressure and that an accurate phpa value is important for ** precise work. ** ** 9) The argument wl specifies the observing wavelength in ** micrometers. The transition from optical to radio is assumed to ** occur at 100 micrometers (about 3000 GHz). ** ** 10) The accuracy of the result is limited by the corrections for ** refraction, which use a simple A*tan(z) + B*tan^3(z) model. ** Providing the meteorological parameters are known accurately and ** there are no gross local effects, the predicted astrometric ** coordinates should be within 0.05 arcsec (optical) or 1 arcsec ** (radio) for a zenith distance of less than 70 degrees, better ** than 30 arcsec (optical or radio) at 85 degrees and better ** than 20 arcmin (optical) or 30 arcmin (radio) at the horizon. ** ** Without refraction, the complementary functions iauAtio13 and ** iauAtoi13 are self-consistent to better than 1 microarcsecond ** all over the celestial sphere. With refraction included, ** consistency falls off at high zenith distances, but is still ** better than 0.05 arcsec at 85 degrees. ** ** 12) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** Called: ** iauApio13 astrometry parameters, CIRS-observed, 2013 ** iauAtoiq quick observed to CIRS ** */ void iauAtoiq(const char *type, double ob1, double ob2, iauASTROM *astrom, double *ri, double *di) /* ** - - - - - - - - - ** i a u A t o i q ** - - - - - - - - - ** ** Quick observed place to CIRS, given the star-independent astrometry ** parameters. ** ** Use of this function is appropriate when efficiency is important and ** where many star positions are all to be transformed for one date. ** The star-independent astrometry parameters can be obtained by ** calling iauApio[13] or iauApco[13]. ** ** Status: support function. ** ** Given: ** type char[] type of coordinates: "R", "H" or "A" (Note 1) ** ob1 double observed Az, HA or RA (radians; Az is N=0,E=90) ** ob2 double observed ZD or Dec (radians) ** astrom iauASTROM* star-independent astrometry parameters: ** pmt double PM time interval (SSB, Julian years) ** eb double[3] SSB to observer (vector, au) ** eh double[3] Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** v double[3] barycentric observer velocity (vector, c) ** bm1 double sqrt(1-|v|^2): reciprocal of Lorenz factor ** bpn double[3][3] bias-precession-nutation matrix ** along double longitude + s' (radians) ** xpl double polar motion xp wrt local meridian (radians) ** ypl double polar motion yp wrt local meridian (radians) ** sphi double sine of geodetic latitude ** cphi double cosine of geodetic latitude ** diurab double magnitude of diurnal aberration vector ** eral double "local" Earth rotation angle (radians) ** refa double refraction constant A (radians) ** refb double refraction constant B (radians) ** ** Returned: ** ri double* CIRS right ascension (CIO-based, radians) ** di double* CIRS declination (radians) ** ** Notes: ** ** 1) "Observed" Az,El means the position that would be seen by a ** perfect geodetically aligned theodolite. This is related to ** the observed HA,Dec via the standard rotation, using the geodetic ** latitude (corrected for polar motion), while the observed HA and ** RA are related simply through the Earth rotation angle and the ** site longitude. "Observed" RA,Dec or HA,Dec thus means the ** position that would be seen by a perfect equatorial with its ** polar axis aligned to the Earth's axis of rotation. By removing ** from the observed place the effects of atmospheric refraction and ** diurnal aberration, the CIRS RA,Dec is obtained. ** ** 2) Only the first character of the type argument is significant. ** "R" or "r" indicates that ob1 and ob2 are the observed right ** ascension and declination; "H" or "h" indicates that they are ** hour angle (west +ve) and declination; anything else ("A" or ** "a" is recommended) indicates that ob1 and ob2 are azimuth (north ** zero, east 90 deg) and zenith distance. (Zenith distance is used ** rather than altitude in order to reflect the fact that no ** allowance is made for depression of the horizon.) ** ** 3) The accuracy of the result is limited by the corrections for ** refraction, which use a simple A*tan(z) + B*tan^3(z) model. ** Providing the meteorological parameters are known accurately and ** there are no gross local effects, the predicted observed ** coordinates should be within 0.05 arcsec (optical) or 1 arcsec ** (radio) for a zenith distance of less than 70 degrees, better ** than 30 arcsec (optical or radio) at 85 degrees and better than ** 20 arcmin (optical) or 30 arcmin (radio) at the horizon. ** ** Without refraction, the complementary functions iauAtioq and ** iauAtoiq are self-consistent to better than 1 microarcsecond all ** over the celestial sphere. With refraction included, consistency ** falls off at high zenith distances, but is still better than ** 0.05 arcsec at 85 degrees. ** ** 4) It is advisable to take great care with units, as even unlikely ** values of the input parameters are accepted and processed in ** accordance with the models used. ** ** Called: ** iauS2c spherical coordinates to unit vector ** iauC2s p-vector to spherical ** iauAnp normalize angle into range 0 to 2pi ** */ void iauBi00(double *dpsibi, double *depsbi, double *dra) /* ** - - - - - - - - ** i a u B i 0 0 ** - - - - - - - - ** ** Frame bias components of IAU 2000 precession-nutation models (part ** of MHB2000 with additions). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Returned: ** dpsibi,depsbi double longitude and obliquity corrections ** dra double the ICRS RA of the J2000.0 mean equinox ** ** Notes: ** ** 1) The frame bias corrections in longitude and obliquity (radians) ** are required in order to correct for the offset between the GCRS ** pole and the mean J2000.0 pole. They define, with respect to the ** GCRS frame, a J2000.0 mean pole that is consistent with the rest ** of the IAU 2000A precession-nutation model. ** ** 2) In addition to the displacement of the pole, the complete ** description of the frame bias requires also an offset in right ** ascension. This is not part of the IAU 2000A model, and is from ** Chapront et al. (2002). It is returned in radians. ** ** 3) This is a supplemented implementation of one aspect of the IAU ** 2000A nutation model, formally adopted by the IAU General ** Assembly in 2000, namely MHB2000 (Mathews et al. 2002). ** ** References: ** ** Chapront, J., Chapront-Touze, M. & Francou, G., Astron. ** Astrophys., 387, 700, 2002. ** ** Mathews, P.M., Herring, T.A., Buffet, B.A., "Modeling of nutation ** and precession New nutation series for nonrigid Earth and ** insights into the Earth's interior", J.Geophys.Res., 107, B4, ** 2002. The MHB2000 code itself was obtained on 9th September 2002 ** from ftp://maia.usno.navy.mil/conv2000/chapter5/IAU2000A. ** */ void iauBp00(double date1, double date2, double rb[3][3], double rp[3][3], double rbp[3][3]) /* ** - - - - - - - - ** i a u B p 0 0 ** - - - - - - - - ** ** Frame bias and precession, IAU 2000. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rb double[3][3] frame bias matrix (Note 2) ** rp double[3][3] precession matrix (Note 3) ** rbp double[3][3] bias-precession matrix (Note 4) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix rb transforms vectors from GCRS to mean J2000.0 by ** applying frame bias. ** ** 3) The matrix rp transforms vectors from J2000.0 mean equator and ** equinox to mean equator and equinox of date by applying ** precession. ** ** 4) The matrix rbp transforms vectors from GCRS to mean equator and ** equinox of date by applying frame bias then precession. It is ** the product rp x rb. ** ** 5) It is permissible to re-use the same array in the returned ** arguments. The arrays are filled in the order given. ** ** Called: ** iauBi00 frame bias components, IAU 2000 ** iauPr00 IAU 2000 precession adjustments ** iauIr initialize r-matrix to identity ** iauRx rotate around X-axis ** iauRy rotate around Y-axis ** iauRz rotate around Z-axis ** iauCr copy r-matrix ** iauRxr product of two r-matrices ** ** Reference: ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** */ void iauBp06(double date1, double date2, double rb[3][3], double rp[3][3], double rbp[3][3]) /* ** - - - - - - - - ** i a u B p 0 6 ** - - - - - - - - ** ** Frame bias and precession, IAU 2006. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rb double[3][3] frame bias matrix (Note 2) ** rp double[3][3] precession matrix (Note 3) ** rbp double[3][3] bias-precession matrix (Note 4) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix rb transforms vectors from GCRS to mean J2000.0 by ** applying frame bias. ** ** 3) The matrix rp transforms vectors from mean J2000.0 to mean of ** date by applying precession. ** ** 4) The matrix rbp transforms vectors from GCRS to mean of date by ** applying frame bias then precession. It is the product rp x rb. ** ** 5) It is permissible to re-use the same array in the returned ** arguments. The arrays are filled in the order given. ** ** Called: ** iauPfw06 bias-precession F-W angles, IAU 2006 ** iauFw2m F-W angles to r-matrix ** iauPmat06 PB matrix, IAU 2006 ** iauTr transpose r-matrix ** iauRxr product of two r-matrices ** iauCr copy r-matrix ** ** References: ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 ** ** Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** */ void iauBpn2xy(double rbpn[3][3], double *x, double *y) /* ** - - - - - - - - - - ** i a u B p n 2 x y ** - - - - - - - - - - ** ** Extract from the bias-precession-nutation matrix the X,Y coordinates ** of the Celestial Intermediate Pole. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rbpn double[3][3] celestial-to-true matrix (Note 1) ** ** Returned: ** x,y double Celestial Intermediate Pole (Note 2) ** ** Notes: ** ** 1) The matrix rbpn transforms vectors from GCRS to true equator (and ** CIO or equinox) of date, and therefore the Celestial Intermediate ** Pole unit vector is the bottom row of the matrix. ** ** 2) The arguments x,y are components of the Celestial Intermediate ** Pole unit vector in the Geocentric Celestial Reference System. ** ** Reference: ** ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 ** (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** */ void iauC2i00a(double date1, double date2, double rc2i[3][3]) /* ** - - - - - - - - - - ** i a u C 2 i 0 0 a ** - - - - - - - - - - ** ** Form the celestial-to-intermediate matrix for a given date using the ** IAU 2000A precession-nutation model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rc2i double[3][3] celestial-to-intermediate matrix (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix rc2i is the first stage in the transformation from ** celestial to terrestrial coordinates: ** ** [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] ** ** = rc2t * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), ERA is the Earth ** Rotation Angle and RPOM is the polar motion matrix. ** ** 3) A faster, but slightly less accurate result (about 1 mas), can be ** obtained by using instead the iauC2i00b function. ** ** Called: ** iauPnm00a classical NPB matrix, IAU 2000A ** iauC2ibpn celestial-to-intermediate matrix, given NPB matrix ** ** References: ** ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 ** (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ void iauC2i00b(double date1, double date2, double rc2i[3][3]) /* ** - - - - - - - - - - ** i a u C 2 i 0 0 b ** - - - - - - - - - - ** ** Form the celestial-to-intermediate matrix for a given date using the ** IAU 2000B precession-nutation model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rc2i double[3][3] celestial-to-intermediate matrix (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix rc2i is the first stage in the transformation from ** celestial to terrestrial coordinates: ** ** [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] ** ** = rc2t * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), ERA is the Earth ** Rotation Angle and RPOM is the polar motion matrix. ** ** 3) The present function is faster, but slightly less accurate (about ** 1 mas), than the iauC2i00a function. ** ** Called: ** iauPnm00b classical NPB matrix, IAU 2000B ** iauC2ibpn celestial-to-intermediate matrix, given NPB matrix ** ** References: ** ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 ** (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ void iauC2i06a(double date1, double date2, double rc2i[3][3]) /* ** - - - - - - - - - - ** i a u C 2 i 0 6 a ** - - - - - - - - - - ** ** Form the celestial-to-intermediate matrix for a given date using the ** IAU 2006 precession and IAU 2000A nutation models. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rc2i double[3][3] celestial-to-intermediate matrix (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix rc2i is the first stage in the transformation from ** celestial to terrestrial coordinates: ** ** [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] ** ** = RC2T * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), ERA is the Earth ** Rotation Angle and RPOM is the polar motion matrix. ** ** Called: ** iauPnm06a classical NPB matrix, IAU 2006/2000A ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauS06 the CIO locator s, given X,Y, IAU 2006 ** iauC2ixys celestial-to-intermediate matrix, given X,Y and s ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), ** IERS Technical Note No. 32, BKG ** */ void iauC2ibpn(double date1, double date2, double rbpn[3][3], double rc2i[3][3]) /* ** - - - - - - - - - - ** i a u C 2 i b p n ** - - - - - - - - - - ** ** Form the celestial-to-intermediate matrix for a given date given ** the bias-precession-nutation matrix. IAU 2000. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** rbpn double[3][3] celestial-to-true matrix (Note 2) ** ** Returned: ** rc2i double[3][3] celestial-to-intermediate matrix (Note 3) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix rbpn transforms vectors from GCRS to true equator (and ** CIO or equinox) of date. Only the CIP (bottom row) is used. ** ** 3) The matrix rc2i is the first stage in the transformation from ** celestial to terrestrial coordinates: ** ** [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] ** ** = RC2T * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), ERA is the Earth ** Rotation Angle and RPOM is the polar motion matrix. ** ** 4) Although its name does not include "00", This function is in fact ** specific to the IAU 2000 models. ** ** Called: ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauC2ixy celestial-to-intermediate matrix, given X,Y ** ** References: ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ void iauC2ixy(double date1, double date2, double x, double y, double rc2i[3][3]) /* ** - - - - - - - - - ** i a u C 2 i x y ** - - - - - - - - - ** ** Form the celestial to intermediate-frame-of-date matrix for a given ** date when the CIP X,Y coordinates are known. IAU 2000. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** x,y double Celestial Intermediate Pole (Note 2) ** ** Returned: ** rc2i double[3][3] celestial-to-intermediate matrix (Note 3) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The Celestial Intermediate Pole coordinates are the x,y components ** of the unit vector in the Geocentric Celestial Reference System. ** ** 3) The matrix rc2i is the first stage in the transformation from ** celestial to terrestrial coordinates: ** ** [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] ** ** = RC2T * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), ERA is the Earth ** Rotation Angle and RPOM is the polar motion matrix. ** ** 4) Although its name does not include "00", This function is in fact ** specific to the IAU 2000 models. ** ** Called: ** iauC2ixys celestial-to-intermediate matrix, given X,Y and s ** iauS00 the CIO locator s, given X,Y, IAU 2000A ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ void iauC2ixys(double x, double y, double s, double rc2i[3][3]) /* ** - - - - - - - - - - ** i a u C 2 i x y s ** - - - - - - - - - - ** ** Form the celestial to intermediate-frame-of-date matrix given the CIP ** X,Y and the CIO locator s. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** x,y double Celestial Intermediate Pole (Note 1) ** s double the CIO locator s (Note 2) ** ** Returned: ** rc2i double[3][3] celestial-to-intermediate matrix (Note 3) ** ** Notes: ** ** 1) The Celestial Intermediate Pole coordinates are the x,y ** components of the unit vector in the Geocentric Celestial ** Reference System. ** ** 2) The CIO locator s (in radians) positions the Celestial ** Intermediate Origin on the equator of the CIP. ** ** 3) The matrix rc2i is the first stage in the transformation from ** celestial to terrestrial coordinates: ** ** [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] ** ** = RC2T * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), ERA is the Earth ** Rotation Angle and RPOM is the polar motion matrix. ** ** Called: ** iauIr initialize r-matrix to identity ** iauRz rotate around Z-axis ** iauRy rotate around Y-axis ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ void iauC2s(double p[3], double *theta, double *phi) /* ** - - - - - - - ** i a u C 2 s ** - - - - - - - ** ** P-vector to spherical coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** p double[3] p-vector ** ** Returned: ** theta double longitude angle (radians) ** phi double latitude angle (radians) ** ** Notes: ** ** 1) The vector p can have any magnitude; only its direction is used. ** ** 2) If p is null, zero theta and phi are returned. ** ** 3) At either pole, zero theta is returned. ** */ void iauC2t00a(double tta, double ttb, double uta, double utb, double xp, double yp, double rc2t[3][3]) /* ** - - - - - - - - - - ** i a u C 2 t 0 0 a ** - - - - - - - - - - ** ** Form the celestial to terrestrial matrix given the date, the UT1 and ** the polar motion, using the IAU 2000A nutation model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** tta,ttb double TT as a 2-part Julian Date (Note 1) ** uta,utb double UT1 as a 2-part Julian Date (Note 1) ** xp,yp double coordinates of the pole (radians, Note 2) ** ** Returned: ** rc2t double[3][3] celestial-to-terrestrial matrix (Note 3) ** ** Notes: ** ** 1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, ** apportioned in any convenient way between the arguments uta and ** utb. For example, JD(UT1)=2450123.7 could be expressed in any of ** these ways, among others: ** ** uta utb ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution is ** acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. In the case of uta,utb, the ** date & time method is best matched to the Earth rotation angle ** algorithm used: maximum precision is delivered when the uta ** argument is for 0hrs UT1 on the day in question and the utb ** argument lies in the range 0 to 1, or vice versa. ** ** 2) The arguments xp and yp are the coordinates (in radians) of the ** Celestial Intermediate Pole with respect to the International ** Terrestrial Reference System (see IERS Conventions 2003), ** measured along the meridians to 0 and 90 deg west respectively. ** ** 3) The matrix rc2t transforms from celestial to terrestrial ** coordinates: ** ** [TRS] = RPOM * R_3(ERA) * RC2I * [CRS] ** ** = rc2t * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), RC2I is the ** celestial-to-intermediate matrix, ERA is the Earth rotation ** angle and RPOM is the polar motion matrix. ** ** 4) A faster, but slightly less accurate result (about 1 mas), can ** be obtained by using instead the iauC2t00b function. ** ** Called: ** iauC2i00a celestial-to-intermediate matrix, IAU 2000A ** iauEra00 Earth rotation angle, IAU 2000 ** iauSp00 the TIO locator s', IERS 2000 ** iauPom00 polar motion matrix ** iauC2tcio form CIO-based celestial-to-terrestrial matrix ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ void iauC2t00b(double tta, double ttb, double uta, double utb, double xp, double yp, double rc2t[3][3]) /* ** - - - - - - - - - - ** i a u C 2 t 0 0 b ** - - - - - - - - - - ** ** Form the celestial to terrestrial matrix given the date, the UT1 and ** the polar motion, using the IAU 2000B nutation model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** tta,ttb double TT as a 2-part Julian Date (Note 1) ** uta,utb double UT1 as a 2-part Julian Date (Note 1) ** xp,yp double coordinates of the pole (radians, Note 2) ** ** Returned: ** rc2t double[3][3] celestial-to-terrestrial matrix (Note 3) ** ** Notes: ** ** 1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, ** apportioned in any convenient way between the arguments uta and ** utb. For example, JD(UT1)=2450123.7 could be expressed in any of ** these ways, among others: ** ** uta utb ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution is ** acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. In the case of uta,utb, the ** date & time method is best matched to the Earth rotation angle ** algorithm used: maximum precision is delivered when the uta ** argument is for 0hrs UT1 on the day in question and the utb ** argument lies in the range 0 to 1, or vice versa. ** ** 2) The arguments xp and yp are the coordinates (in radians) of the ** Celestial Intermediate Pole with respect to the International ** Terrestrial Reference System (see IERS Conventions 2003), ** measured along the meridians to 0 and 90 deg west respectively. ** ** 3) The matrix rc2t transforms from celestial to terrestrial ** coordinates: ** ** [TRS] = RPOM * R_3(ERA) * RC2I * [CRS] ** ** = rc2t * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), RC2I is the ** celestial-to-intermediate matrix, ERA is the Earth rotation ** angle and RPOM is the polar motion matrix. ** ** 4) The present function is faster, but slightly less accurate (about ** 1 mas), than the iauC2t00a function. ** ** Called: ** iauC2i00b celestial-to-intermediate matrix, IAU 2000B ** iauEra00 Earth rotation angle, IAU 2000 ** iauPom00 polar motion matrix ** iauC2tcio form CIO-based celestial-to-terrestrial matrix ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ void iauC2t06a(double tta, double ttb, double uta, double utb, double xp, double yp, double rc2t[3][3]) /* ** - - - - - - - - - - ** i a u C 2 t 0 6 a ** - - - - - - - - - - ** ** Form the celestial to terrestrial matrix given the date, the UT1 and ** the polar motion, using the IAU 2006 precession and IAU 2000A ** nutation models. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** tta,ttb double TT as a 2-part Julian Date (Note 1) ** uta,utb double UT1 as a 2-part Julian Date (Note 1) ** xp,yp double coordinates of the pole (radians, Note 2) ** ** Returned: ** rc2t double[3][3] celestial-to-terrestrial matrix (Note 3) ** ** Notes: ** ** 1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, ** apportioned in any convenient way between the arguments uta and ** utb. For example, JD(UT1)=2450123.7 could be expressed in any of ** these ways, among others: ** ** uta utb ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution is ** acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. In the case of uta,utb, the ** date & time method is best matched to the Earth rotation angle ** algorithm used: maximum precision is delivered when the uta ** argument is for 0hrs UT1 on the day in question and the utb ** argument lies in the range 0 to 1, or vice versa. ** ** 2) The arguments xp and yp are the coordinates (in radians) of the ** Celestial Intermediate Pole with respect to the International ** Terrestrial Reference System (see IERS Conventions 2003), ** measured along the meridians to 0 and 90 deg west respectively. ** ** 3) The matrix rc2t transforms from celestial to terrestrial ** coordinates: ** ** [TRS] = RPOM * R_3(ERA) * RC2I * [CRS] ** ** = rc2t * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), RC2I is the ** celestial-to-intermediate matrix, ERA is the Earth rotation ** angle and RPOM is the polar motion matrix. ** ** Called: ** iauC2i06a celestial-to-intermediate matrix, IAU 2006/2000A ** iauEra00 Earth rotation angle, IAU 2000 ** iauSp00 the TIO locator s', IERS 2000 ** iauPom00 polar motion matrix ** iauC2tcio form CIO-based celestial-to-terrestrial matrix ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), ** IERS Technical Note No. 32, BKG ** */ void iauC2tcio(double rc2i[3][3], double era, double rpom[3][3], double rc2t[3][3]) /* ** - - - - - - - - - - ** i a u C 2 t c i o ** - - - - - - - - - - ** ** Assemble the celestial to terrestrial matrix from CIO-based ** components (the celestial-to-intermediate matrix, the Earth Rotation ** Angle and the polar motion matrix). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rc2i double[3][3] celestial-to-intermediate matrix ** era double Earth rotation angle (radians) ** rpom double[3][3] polar-motion matrix ** ** Returned: ** rc2t double[3][3] celestial-to-terrestrial matrix ** ** Notes: ** ** 1) This function constructs the rotation matrix that transforms ** vectors in the celestial system into vectors in the terrestrial ** system. It does so starting from precomputed components, namely ** the matrix which rotates from celestial coordinates to the ** intermediate frame, the Earth rotation angle and the polar motion ** matrix. One use of the present function is when generating a ** series of celestial-to-terrestrial matrices where only the Earth ** Rotation Angle changes, avoiding the considerable overhead of ** recomputing the precession-nutation more often than necessary to ** achieve given accuracy objectives. ** ** 2) The relationship between the arguments is as follows: ** ** [TRS] = RPOM * R_3(ERA) * rc2i * [CRS] ** ** = rc2t * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003). ** ** Called: ** iauCr copy r-matrix ** iauRz rotate around Z-axis ** iauRxr product of two r-matrices ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), ** IERS Technical Note No. 32, BKG ** */ void iauC2teqx(double rbpn[3][3], double gst, double rpom[3][3], double rc2t[3][3]) /* ** - - - - - - - - - - ** i a u C 2 t e q x ** - - - - - - - - - - ** ** Assemble the celestial to terrestrial matrix from equinox-based ** components (the celestial-to-true matrix, the Greenwich Apparent ** Sidereal Time and the polar motion matrix). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rbpn double[3][3] celestial-to-true matrix ** gst double Greenwich (apparent) Sidereal Time (radians) ** rpom double[3][3] polar-motion matrix ** ** Returned: ** rc2t double[3][3] celestial-to-terrestrial matrix (Note 2) ** ** Notes: ** ** 1) This function constructs the rotation matrix that transforms ** vectors in the celestial system into vectors in the terrestrial ** system. It does so starting from precomputed components, namely ** the matrix which rotates from celestial coordinates to the ** true equator and equinox of date, the Greenwich Apparent Sidereal ** Time and the polar motion matrix. One use of the present function ** is when generating a series of celestial-to-terrestrial matrices ** where only the Sidereal Time changes, avoiding the considerable ** overhead of recomputing the precession-nutation more often than ** necessary to achieve given accuracy objectives. ** ** 2) The relationship between the arguments is as follows: ** ** [TRS] = rpom * R_3(gst) * rbpn * [CRS] ** ** = rc2t * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003). ** ** Called: ** iauCr copy r-matrix ** iauRz rotate around Z-axis ** iauRxr product of two r-matrices ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ void iauC2tpe(double tta, double ttb, double uta, double utb, double dpsi, double deps, double xp, double yp, double rc2t[3][3]) /* ** - - - - - - - - - ** i a u C 2 t p e ** - - - - - - - - - ** ** Form the celestial to terrestrial matrix given the date, the UT1, ** the nutation and the polar motion. IAU 2000. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** tta,ttb double TT as a 2-part Julian Date (Note 1) ** uta,utb double UT1 as a 2-part Julian Date (Note 1) ** dpsi,deps double nutation (Note 2) ** xp,yp double coordinates of the pole (radians, Note 3) ** ** Returned: ** rc2t double[3][3] celestial-to-terrestrial matrix (Note 4) ** ** Notes: ** ** 1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, ** apportioned in any convenient way between the arguments uta and ** utb. For example, JD(UT1)=2450123.7 could be expressed in any of ** these ways, among others: ** ** uta utb ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution is ** acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. In the case of uta,utb, the ** date & time method is best matched to the Earth rotation angle ** algorithm used: maximum precision is delivered when the uta ** argument is for 0hrs UT1 on the day in question and the utb ** argument lies in the range 0 to 1, or vice versa. ** ** 2) The caller is responsible for providing the nutation components; ** they are in longitude and obliquity, in radians and are with ** respect to the equinox and ecliptic of date. For high-accuracy ** applications, free core nutation should be included as well as ** any other relevant corrections to the position of the CIP. ** ** 3) The arguments xp and yp are the coordinates (in radians) of the ** Celestial Intermediate Pole with respect to the International ** Terrestrial Reference System (see IERS Conventions 2003), ** measured along the meridians to 0 and 90 deg west respectively. ** ** 4) The matrix rc2t transforms from celestial to terrestrial ** coordinates: ** ** [TRS] = RPOM * R_3(GST) * RBPN * [CRS] ** ** = rc2t * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), RBPN is the ** bias-precession-nutation matrix, GST is the Greenwich (apparent) ** Sidereal Time and RPOM is the polar motion matrix. ** ** 5) Although its name does not include "00", This function is in fact ** specific to the IAU 2000 models. ** ** Called: ** iauPn00 bias/precession/nutation results, IAU 2000 ** iauGmst00 Greenwich mean sidereal time, IAU 2000 ** iauSp00 the TIO locator s', IERS 2000 ** iauEe00 equation of the equinoxes, IAU 2000 ** iauPom00 polar motion matrix ** iauC2teqx form equinox-based celestial-to-terrestrial matrix ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ void iauC2txy(double tta, double ttb, double uta, double utb, double x, double y, double xp, double yp, double rc2t[3][3]) /* ** - - - - - - - - - ** i a u C 2 t x y ** - - - - - - - - - ** ** Form the celestial to terrestrial matrix given the date, the UT1, ** the CIP coordinates and the polar motion. IAU 2000. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** tta,ttb double TT as a 2-part Julian Date (Note 1) ** uta,utb double UT1 as a 2-part Julian Date (Note 1) ** x,y double Celestial Intermediate Pole (Note 2) ** xp,yp double coordinates of the pole (radians, Note 3) ** ** Returned: ** rc2t double[3][3] celestial-to-terrestrial matrix (Note 4) ** ** Notes: ** ** 1) The TT and UT1 dates tta+ttb and uta+utb are Julian Dates, ** apportioned in any convenient way between the arguments uta and ** utb. For example, JD(UT1)=2450123.7 could be expressed in any o ** these ways, among others: ** ** uta utb ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution is ** acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. In the case of uta,utb, the ** date & time method is best matched to the Earth rotation angle ** algorithm used: maximum precision is delivered when the uta ** argument is for 0hrs UT1 on the day in question and the utb ** argument lies in the range 0 to 1, or vice versa. ** ** 2) The Celestial Intermediate Pole coordinates are the x,y ** components of the unit vector in the Geocentric Celestial ** Reference System. ** ** 3) The arguments xp and yp are the coordinates (in radians) of the ** Celestial Intermediate Pole with respect to the International ** Terrestrial Reference System (see IERS Conventions 2003), ** measured along the meridians to 0 and 90 deg west respectively. ** ** 4) The matrix rc2t transforms from celestial to terrestrial ** coordinates: ** ** [TRS] = RPOM * R_3(ERA) * RC2I * [CRS] ** ** = rc2t * [CRS] ** ** where [CRS] is a vector in the Geocentric Celestial Reference ** System and [TRS] is a vector in the International Terrestrial ** Reference System (see IERS Conventions 2003), ERA is the Earth ** Rotation Angle and RPOM is the polar motion matrix. ** ** 5) Although its name does not include "00", This function is in fact ** specific to the IAU 2000 models. ** ** Called: ** iauC2ixy celestial-to-intermediate matrix, given X,Y ** iauEra00 Earth rotation angle, IAU 2000 ** iauSp00 the TIO locator s', IERS 2000 ** iauPom00 polar motion matrix ** iauC2tcio form CIO-based celestial-to-terrestrial matrix ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ int iauCal2jd(int iy, int im, int id, double *djm0, double *djm) /* ** - - - - - - - - - - ** i a u C a l 2 j d ** - - - - - - - - - - ** ** Gregorian Calendar to Julian Date. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** iy,im,id int year, month, day in Gregorian calendar (Note 1) ** ** Returned: ** djm0 double MJD zero-point: always 2400000.5 ** djm double Modified Julian Date for 0 hrs ** ** Returned (function value): ** int status: ** 0 = OK ** -1 = bad year (Note 3: JD not computed) ** -2 = bad month (JD not computed) ** -3 = bad day (JD computed) ** ** Notes: ** ** 1) The algorithm used is valid from -4800 March 1, but this ** implementation rejects dates before -4799 January 1. ** ** 2) The Julian Date is returned in two pieces, in the usual SOFA ** manner, which is designed to preserve time resolution. The ** Julian Date is available as a single number by adding djm0 and ** djm. ** ** 3) In early eras the conversion is from the "Proleptic Gregorian ** Calendar"; no account is taken of the date(s) of adoption of ** the Gregorian Calendar, nor is the AD/BC numbering convention ** observed. ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 12.92 (p604). ** */ void iauCp(double p[3], double c[3]) /* ** - - - - - - ** i a u C p ** - - - - - - ** ** Copy a p-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** p double[3] p-vector to be copied ** ** Returned: ** c double[3] copy ** */ void iauCpv(double pv[2][3], double c[2][3]) /* ** - - - - - - - ** i a u C p v ** - - - - - - - ** ** Copy a position/velocity vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** pv double[2][3] position/velocity vector to be copied ** ** Returned: ** c double[2][3] copy ** ** Called: ** iauCp copy p-vector ** */ void iauCr(double r[3][3], double c[3][3]) /* ** - - - - - - ** i a u C r ** - - - - - - ** ** Copy an r-matrix. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** r double[3][3] r-matrix to be copied ** ** Returned: ** char[] double[3][3] copy ** ** Called: ** iauCp copy p-vector ** */ int iauD2dtf(const char *scale, int ndp, double d1, double d2, int *iy, int *im, int *id, int ihmsf[4]) /* ** - - - - - - - - - ** i a u D 2 d t f ** - - - - - - - - - ** ** Format for output a 2-part Julian Date (or in the case of UTC a ** quasi-JD form that includes special provision for leap seconds). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** scale char[] time scale ID (Note 1) ** ndp int resolution (Note 2) ** d1,d2 double time as a 2-part Julian Date (Notes 3,4) ** ** Returned: ** iy,im,id int year, month, day in Gregorian calendar (Note 5) ** ihmsf int[4] hours, minutes, seconds, fraction (Note 1) ** ** Returned (function value): ** int status: +1 = dubious year (Note 5) ** 0 = OK ** -1 = unacceptable date (Note 6) ** ** Notes: ** ** 1) scale identifies the time scale. Only the value "UTC" (in upper ** case) is significant, and enables handling of leap seconds (see ** Note 4). ** ** 2) ndp is the number of decimal places in the seconds field, and can ** have negative as well as positive values, such as: ** ** ndp resolution ** -4 1 00 00 ** -3 0 10 00 ** -2 0 01 00 ** -1 0 00 10 ** 0 0 00 01 ** 1 0 00 00.1 ** 2 0 00 00.01 ** 3 0 00 00.001 ** ** The limits are platform dependent, but a safe range is -5 to +9. ** ** 3) d1+d2 is Julian Date, apportioned in any convenient way between ** the two arguments, for example where d1 is the Julian Day Number ** and d2 is the fraction of a day. In the case of UTC, where the ** use of JD is problematical, special conventions apply: see the ** next note. ** ** 4) JD cannot unambiguously represent UTC during a leap second unless ** special measures are taken. The SOFA internal convention is that ** the quasi-JD day represents UTC days whether the length is 86399, ** 86400 or 86401 SI seconds. In the 1960-1972 era there were ** smaller jumps (in either direction) each time the linear UTC(TAI) ** expression was changed, and these "mini-leaps" are also included ** in the SOFA convention. ** ** 5) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the future ** to be trusted. See iauDat for further details. ** ** 6) For calendar conventions and limitations, see iauCal2jd. ** ** Called: ** iauJd2cal JD to Gregorian calendar ** iauD2tf decompose days to hms ** iauDat delta(AT) = TAI-UTC ** */ void iauD2tf(int ndp, double days, char *sign, int ihmsf[4]) /* ** - - - - - - - - ** i a u D 2 t f ** - - - - - - - - ** ** Decompose days to hours, minutes, seconds, fraction. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** ndp int resolution (Note 1) ** days double interval in days ** ** Returned: ** sign char '+' or '-' ** ihmsf int[4] hours, minutes, seconds, fraction ** ** Notes: ** ** 1) The argument ndp is interpreted as follows: ** ** ndp resolution ** : ...0000 00 00 ** -7 1000 00 00 ** -6 100 00 00 ** -5 10 00 00 ** -4 1 00 00 ** -3 0 10 00 ** -2 0 01 00 ** -1 0 00 10 ** 0 0 00 01 ** 1 0 00 00.1 ** 2 0 00 00.01 ** 3 0 00 00.001 ** : 0 00 00.000... ** ** 2) The largest positive useful value for ndp is determined by the ** size of days, the format of double on the target platform, and ** the risk of overflowing ihmsf[3]. On a typical platform, for ** days up to 1.0, the available floating-point precision might ** correspond to ndp=12. However, the practical limit is typically ** ndp=9, set by the capacity of a 32-bit int, or ndp=4 if int is ** only 16 bits. ** ** 3) The absolute value of days may exceed 1.0. In cases where it ** does not, it is up to the caller to test for and handle the ** case where days is very nearly 1.0 and rounds up to 24 hours, ** by testing for ihmsf[0]=24 and setting ihmsf[0-3] to zero. ** */ int iauDat(int iy, int im, int id, double fd, double *deltat ) /* ** - - - - - - - ** i a u D a t ** - - - - - - - ** ** For a given UTC date, calculate delta(AT) = TAI-UTC. ** ** :------------------------------------------: ** : : ** : IMPORTANT : ** : : ** : A new version of this function must be : ** : produced whenever a new leap second is : ** : announced. There are four items to : ** : change on each such occasion: : ** : : ** : 1) A new line must be added to the set : ** : of statements that initialize the : ** : array "changes". : ** : : ** : 2) The constant IYV must be set to the : ** : current year. : ** : : ** : 3) The "Latest leap second" comment : ** : below must be set to the new leap : ** : second date. : ** : : ** : 4) The "This revision" comment, later, : ** : must be set to the current date. : ** : : ** : Change (2) must also be carried out : ** : whenever the function is re-issued, : ** : even if no leap seconds have been : ** : added. : ** : : ** : Latest leap second: 2015 June 30 : ** : : ** :__________________________________________: ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** iy int UTC: year (Notes 1 and 2) ** im int month (Note 2) ** id int day (Notes 2 and 3) ** fd double fraction of day (Note 4) ** ** Returned: ** deltat double TAI minus UTC, seconds ** ** Returned (function value): ** int status (Note 5): ** 1 = dubious year (Note 1) ** 0 = OK ** -1 = bad year ** -2 = bad month ** -3 = bad day (Note 3) ** -4 = bad fraction (Note 4) ** -5 = internal error (Note 5) ** ** Notes: ** ** 1) UTC began at 1960 January 1.0 (JD 2436934.5) and it is improper ** to call the function with an earlier date. If this is attempted, ** zero is returned together with a warning status. ** ** Because leap seconds cannot, in principle, be predicted in ** advance, a reliable check for dates beyond the valid range is ** impossible. To guard against gross errors, a year five or more ** after the release year of the present function (see the constant ** IYV) is considered dubious. In this case a warning status is ** returned but the result is computed in the normal way. ** ** For both too-early and too-late years, the warning status is +1. ** This is distinct from the error status -1, which signifies a year ** so early that JD could not be computed. ** ** 2) If the specified date is for a day which ends with a leap second, ** the UTC-TAI value returned is for the period leading up to the ** leap second. If the date is for a day which begins as a leap ** second ends, the UTC-TAI returned is for the period following the ** leap second. ** ** 3) The day number must be in the normal calendar range, for example ** 1 through 30 for April. The "almanac" convention of allowing ** such dates as January 0 and December 32 is not supported in this ** function, in order to avoid confusion near leap seconds. ** ** 4) The fraction of day is used only for dates before the ** introduction of leap seconds, the first of which occurred at the ** end of 1971. It is tested for validity (0 to 1 is the valid ** range) even if not used; if invalid, zero is used and status -4 ** is returned. For many applications, setting fd to zero is ** acceptable; the resulting error is always less than 3 ms (and ** occurs only pre-1972). ** ** 5) The status value returned in the case where there are multiple ** errors refers to the first error detected. For example, if the ** month and day are 13 and 32 respectively, status -2 (bad month) ** will be returned. The "internal error" status refers to a ** case that is impossible but causes some compilers to issue a ** warning. ** ** 6) In cases where a valid result is not available, zero is returned. ** ** References: ** ** 1) For dates from 1961 January 1 onwards, the expressions from the ** file ftp://maia.usno.navy.mil/ser7/tai-utc.dat are used. ** ** 2) The 5ms timestep at 1961 January 1 is taken from 2.58.1 (p87) of ** the 1992 Explanatory Supplement. ** ** Called: ** iauCal2jd Gregorian calendar to JD ** */ double iauDtdb(double date1, double date2, double ut, double elong, double u, double v) /* ** - - - - - - - - ** i a u D t d b ** - - - - - - - - ** ** An approximation to TDB-TT, the difference between barycentric ** dynamical time and terrestrial time, for an observer on the Earth. ** ** The different time scales - proper, coordinate and realized - are ** related to each other: ** ** TAI <- physically realized ** : ** offset <- observed (nominally +32.184s) ** : ** TT <- terrestrial time ** : ** rate adjustment (L_G) <- definition of TT ** : ** TCG <- time scale for GCRS ** : ** "periodic" terms <- iauDtdb is an implementation ** : ** rate adjustment (L_C) <- function of solar-system ephemeris ** : ** TCB <- time scale for BCRS ** : ** rate adjustment (-L_B) <- definition of TDB ** : ** TDB <- TCB scaled to track TT ** : ** "periodic" terms <- -iauDtdb is an approximation ** : ** TT <- terrestrial time ** ** Adopted values for the various constants can be found in the IERS ** Conventions (McCarthy & Petit 2003). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support routine. ** ** Given: ** date1,date2 double date, TDB (Notes 1-3) ** ut double universal time (UT1, fraction of one day) ** elong double longitude (east positive, radians) ** u double distance from Earth spin axis (km) ** v double distance north of equatorial plane (km) ** ** Returned (function value): ** double TDB-TT (seconds) ** ** Notes: ** ** 1) The date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** Although the date is, formally, barycentric dynamical time (TDB), ** the terrestrial dynamical time (TT) can be used with no practical ** effect on the accuracy of the prediction. ** ** 2) TT can be regarded as a coordinate time that is realized as an ** offset of 32.184s from International Atomic Time, TAI. TT is a ** specific linear transformation of geocentric coordinate time TCG, ** which is the time scale for the Geocentric Celestial Reference ** System, GCRS. ** ** 3) TDB is a coordinate time, and is a specific linear transformation ** of barycentric coordinate time TCB, which is the time scale for ** the Barycentric Celestial Reference System, BCRS. ** ** 4) The difference TCG-TCB depends on the masses and positions of the ** bodies of the solar system and the velocity of the Earth. It is ** dominated by a rate difference, the residual being of a periodic ** character. The latter, which is modeled by the present function, ** comprises a main (annual) sinusoidal term of amplitude ** approximately 0.00166 seconds, plus planetary terms up to about ** 20 microseconds, and lunar and diurnal terms up to 2 microseconds. ** These effects come from the changing transverse Doppler effect ** and gravitational red-shift as the observer (on the Earth's ** surface) experiences variations in speed (with respect to the ** BCRS) and gravitational potential. ** ** 5) TDB can be regarded as the same as TCB but with a rate adjustment ** to keep it close to TT, which is convenient for many applications. ** The history of successive attempts to define TDB is set out in ** Resolution 3 adopted by the IAU General Assembly in 2006, which ** defines a fixed TDB(TCB) transformation that is consistent with ** contemporary solar-system ephemerides. Future ephemerides will ** imply slightly changed transformations between TCG and TCB, which ** could introduce a linear drift between TDB and TT; however, any ** such drift is unlikely to exceed 1 nanosecond per century. ** ** 6) The geocentric TDB-TT model used in the present function is that of ** Fairhead & Bretagnon (1990), in its full form. It was originally ** supplied by Fairhead (private communications with P.T.Wallace, ** 1990) as a Fortran subroutine. The present C function contains an ** adaptation of the Fairhead code. The numerical results are ** essentially unaffected by the changes, the differences with ** respect to the Fairhead & Bretagnon original being at the 1e-20 s ** level. ** ** The topocentric part of the model is from Moyer (1981) and ** Murray (1983), with fundamental arguments adapted from ** Simon et al. 1994. It is an approximation to the expression ** ( v / c ) . ( r / c ), where v is the barycentric velocity of ** the Earth, r is the geocentric position of the observer and ** c is the speed of light. ** ** By supplying zeroes for u and v, the topocentric part of the ** model can be nullified, and the function will return the Fairhead ** & Bretagnon result alone. ** ** 7) During the interval 1950-2050, the absolute accuracy is better ** than +/- 3 nanoseconds relative to time ephemerides obtained by ** direct numerical integrations based on the JPL DE405 solar system ** ephemeris. ** ** 8) It must be stressed that the present function is merely a model, ** and that numerical integration of solar-system ephemerides is the ** definitive method for predicting the relationship between TCG and ** TCB and hence between TT and TDB. ** ** References: ** ** Fairhead, L., & Bretagnon, P., Astron.Astrophys., 229, 240-247 ** (1990). ** ** IAU 2006 Resolution 3. ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Moyer, T.D., Cel.Mech., 23, 33 (1981). ** ** Murray, C.A., Vectorial Astrometry, Adam Hilger (1983). ** ** Seidelmann, P.K. et al., Explanatory Supplement to the ** Astronomical Almanac, Chapter 2, University Science Books (1992). ** ** Simon, J.L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G. & Laskar, J., Astron.Astrophys., 282, 663-683 (1994). ** */ int iauDtf2d(const char *scale, int iy, int im, int id, int ihr, int imn, double sec, double *d1, double *d2) /* ** - - - - - - - - - ** i a u D t f 2 d ** - - - - - - - - - ** ** Encode date and time fields into 2-part Julian Date (or in the case ** of UTC a quasi-JD form that includes special provision for leap ** seconds). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** scale char[] time scale ID (Note 1) ** iy,im,id int year, month, day in Gregorian calendar (Note 2) ** ihr,imn int hour, minute ** sec double seconds ** ** Returned: ** d1,d2 double 2-part Julian Date (Notes 3,4) ** ** Returned (function value): ** int status: +3 = both of next two ** +2 = time is after end of day (Note 5) ** +1 = dubious year (Note 6) ** 0 = OK ** -1 = bad year ** -2 = bad month ** -3 = bad day ** -4 = bad hour ** -5 = bad minute ** -6 = bad second (<0) ** ** Notes: ** ** 1) scale identifies the time scale. Only the value "UTC" (in upper ** case) is significant, and enables handling of leap seconds (see ** Note 4). ** ** 2) For calendar conventions and limitations, see iauCal2jd. ** ** 3) The sum of the results, d1+d2, is Julian Date, where normally d1 ** is the Julian Day Number and d2 is the fraction of a day. In the ** case of UTC, where the use of JD is problematical, special ** conventions apply: see the next note. ** ** 4) JD cannot unambiguously represent UTC during a leap second unless ** special measures are taken. The SOFA internal convention is that ** the quasi-JD day represents UTC days whether the length is 86399, ** 86400 or 86401 SI seconds. In the 1960-1972 era there were ** smaller jumps (in either direction) each time the linear UTC(TAI) ** expression was changed, and these "mini-leaps" are also included ** in the SOFA convention. ** ** 5) The warning status "time is after end of day" usually means that ** the sec argument is greater than 60.0. However, in a day ending ** in a leap second the limit changes to 61.0 (or 59.0 in the case ** of a negative leap second). ** ** 6) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the future ** to be trusted. See iauDat for further details. ** ** 7) Only in the case of continuous and regular time scales (TAI, TT, ** TCG, TCB and TDB) is the result d1+d2 a Julian Date, strictly ** speaking. In the other cases (UT1 and UTC) the result must be ** used with circumspection; in particular the difference between ** two such results cannot be interpreted as a precise time ** interval. ** ** Called: ** iauCal2jd Gregorian calendar to JD ** iauDat delta(AT) = TAI-UTC ** iauJd2cal JD to Gregorian calendar ** */ double iauEe00(double date1, double date2, double epsa, double dpsi) /* ** - - - - - - - - ** i a u E e 0 0 ** - - - - - - - - ** ** The equation of the equinoxes, compatible with IAU 2000 resolutions, ** given the nutation in longitude and the mean obliquity. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** epsa double mean obliquity (Note 2) ** dpsi double nutation in longitude (Note 3) ** ** Returned (function value): ** double equation of the equinoxes (Note 4) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The obliquity, in radians, is mean of date. ** ** 3) The result, which is in radians, operates in the following sense: ** ** Greenwich apparent ST = GMST + equation of the equinoxes ** ** 4) The result is compatible with the IAU 2000 resolutions. For ** further details, see IERS Conventions 2003 and Capitaine et al. ** (2002). ** ** Called: ** iauEect00 equation of the equinoxes complementary terms ** ** References: ** ** Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to ** implement the IAU 2000 definition of UT1", Astronomy & ** Astrophysics, 406, 1135-1149 (2003) ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ double iauEe00a(double date1, double date2) /* ** - - - - - - - - - ** i a u E e 0 0 a ** - - - - - - - - - ** ** Equation of the equinoxes, compatible with IAU 2000 resolutions. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double equation of the equinoxes (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The result, which is in radians, operates in the following sense: ** ** Greenwich apparent ST = GMST + equation of the equinoxes ** ** 3) The result is compatible with the IAU 2000 resolutions. For ** further details, see IERS Conventions 2003 and Capitaine et al. ** (2002). ** ** Called: ** iauPr00 IAU 2000 precession adjustments ** iauObl80 mean obliquity, IAU 1980 ** iauNut00a nutation, IAU 2000A ** iauEe00 equation of the equinoxes, IAU 2000 ** ** References: ** ** Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to ** implement the IAU 2000 definition of UT1", Astronomy & ** Astrophysics, 406, 1135-1149 (2003). ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004). ** */ double iauEe00b(double date1, double date2) /* ** - - - - - - - - - ** i a u E e 0 0 b ** - - - - - - - - - ** ** Equation of the equinoxes, compatible with IAU 2000 resolutions but ** using the truncated nutation model IAU 2000B. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double equation of the equinoxes (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The result, which is in radians, operates in the following sense: ** ** Greenwich apparent ST = GMST + equation of the equinoxes ** ** 3) The result is compatible with the IAU 2000 resolutions except ** that accuracy has been compromised for the sake of speed. For ** further details, see McCarthy & Luzum (2001), IERS Conventions ** 2003 and Capitaine et al. (2003). ** ** Called: ** iauPr00 IAU 2000 precession adjustments ** iauObl80 mean obliquity, IAU 1980 ** iauNut00b nutation, IAU 2000B ** iauEe00 equation of the equinoxes, IAU 2000 ** ** References: ** ** Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to ** implement the IAU 2000 definition of UT1", Astronomy & ** Astrophysics, 406, 1135-1149 (2003) ** ** McCarthy, D.D. & Luzum, B.J., "An abridged model of the ** precession-nutation of the celestial pole", Celestial Mechanics & ** Dynamical Astronomy, 85, 37-49 (2003) ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ double iauEe06a(double date1, double date2) /* ** - - - - - - - - - ** i a u E e 0 6 a ** - - - - - - - - - ** ** Equation of the equinoxes, compatible with IAU 2000 resolutions and ** IAU 2006/2000A precession-nutation. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double equation of the equinoxes (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The result, which is in radians, operates in the following sense: ** ** Greenwich apparent ST = GMST + equation of the equinoxes ** ** Called: ** iauAnpm normalize angle into range +/- pi ** iauGst06a Greenwich apparent sidereal time, IAU 2006/2000A ** iauGmst06 Greenwich mean sidereal time, IAU 2006 ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), ** IERS Technical Note No. 32, BKG ** */ double iauEect00(double date1, double date2) /* ** - - - - - - - - - - ** i a u E e c t 0 0 ** - - - - - - - - - - ** ** Equation of the equinoxes complementary terms, consistent with ** IAU 2000 resolutions. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double complementary terms (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The "complementary terms" are part of the equation of the ** equinoxes (EE), classically the difference between apparent and ** mean Sidereal Time: ** ** GAST = GMST + EE ** ** with: ** ** EE = dpsi * cos(eps) ** ** where dpsi is the nutation in longitude and eps is the obliquity ** of date. However, if the rotation of the Earth were constant in ** an inertial frame the classical formulation would lead to ** apparent irregularities in the UT1 timescale traceable to side- ** effects of precession-nutation. In order to eliminate these ** effects from UT1, "complementary terms" were introduced in 1994 ** (IAU, 1994) and took effect from 1997 (Capitaine and Gontier, ** 1993): ** ** GAST = GMST + CT + EE ** ** By convention, the complementary terms are included as part of ** the equation of the equinoxes rather than as part of the mean ** Sidereal Time. This slightly compromises the "geometrical" ** interpretation of mean sidereal time but is otherwise ** inconsequential. ** ** The present function computes CT in the above expression, ** compatible with IAU 2000 resolutions (Capitaine et al., 2002, and ** IERS Conventions 2003). ** ** Called: ** iauFal03 mean anomaly of the Moon ** iauFalp03 mean anomaly of the Sun ** iauFaf03 mean argument of the latitude of the Moon ** iauFad03 mean elongation of the Moon from the Sun ** iauFaom03 mean longitude of the Moon's ascending node ** iauFave03 mean longitude of Venus ** iauFae03 mean longitude of Earth ** iauFapa03 general accumulated precession in longitude ** ** References: ** ** Capitaine, N. & Gontier, A.-M., Astron. Astrophys., 275, ** 645-650 (1993) ** ** Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to ** implement the IAU 2000 definition of UT1", Astronomy & ** Astrophysics, 406, 1135-1149 (2003) ** ** IAU Resolution C7, Recommendation 3 (1994) ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ int iauEform ( int n, double *a, double *f ) /* ** - - - - - - - - - ** i a u E f o r m ** - - - - - - - - - ** ** Earth reference ellipsoids. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** n int ellipsoid identifier (Note 1) ** ** Returned: ** a double equatorial radius (meters, Note 2) ** f double flattening (Note 2) ** ** Returned (function value): ** int status: 0 = OK ** -1 = illegal identifier (Note 3) ** ** Notes: ** ** 1) The identifier n is a number that specifies the choice of ** reference ellipsoid. The following are supported: ** ** n ellipsoid ** ** 1 WGS84 ** 2 GRS80 ** 3 WGS72 ** ** The n value has no significance outside the SOFA software. For ** convenience, symbols WGS84 etc. are defined in sofam.h. ** ** 2) The ellipsoid parameters are returned in the form of equatorial ** radius in meters (a) and flattening (f). The latter is a number ** around 0.00335, i.e. around 1/298. ** ** 3) For the case where an unsupported n value is supplied, zero a and ** f are returned, as well as error status. ** ** References: ** ** Department of Defense World Geodetic System 1984, National ** Imagery and Mapping Agency Technical Report 8350.2, Third ** Edition, p3-2. ** ** Moritz, H., Bull. Geodesique 66-2, 187 (1992). ** ** The Department of Defense World Geodetic System 1972, World ** Geodetic System Committee, May 1974. ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** p220. ** */ double iauEo06a(double date1, double date2) /* ** - - - - - - - - - ** i a u E o 0 6 a ** - - - - - - - - - ** ** Equation of the origins, IAU 2006 precession and IAU 2000A nutation. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double equation of the origins in radians ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The equation of the origins is the distance between the true ** equinox and the celestial intermediate origin and, equivalently, ** the difference between Earth rotation angle and Greenwich ** apparent sidereal time (ERA-GST). It comprises the precession ** (since J2000.0) in right ascension plus the equation of the ** equinoxes (including the small correction terms). ** ** Called: ** iauPnm06a classical NPB matrix, IAU 2006/2000A ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauS06 the CIO locator s, given X,Y, IAU 2006 ** iauEors equation of the origins, given NPB matrix and s ** ** References: ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 ** ** Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** */ double iauEors(double rnpb[3][3], double s) /* ** - - - - - - - - ** i a u E o r s ** - - - - - - - - ** ** Equation of the origins, given the classical NPB matrix and the ** quantity s. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rnpb double[3][3] classical nutation x precession x bias matrix ** s double the quantity s (the CIO locator) ** ** Returned (function value): ** double the equation of the origins in radians. ** ** Notes: ** ** 1) The equation of the origins is the distance between the true ** equinox and the celestial intermediate origin and, equivalently, ** the difference between Earth rotation angle and Greenwich ** apparent sidereal time (ERA-GST). It comprises the precession ** (since J2000.0) in right ascension plus the equation of the ** equinoxes (including the small correction terms). ** ** 2) The algorithm is from Wallace & Capitaine (2006). ** ** References: ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 ** ** Wallace, P. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** */ double iauEpb(double dj1, double dj2) /* ** - - - - - - - ** i a u E p b ** - - - - - - - ** ** Julian Date to Besselian Epoch. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** dj1,dj2 double Julian Date (see note) ** ** Returned (function value): ** double Besselian Epoch. ** ** Note: ** ** The Julian Date is supplied in two pieces, in the usual SOFA ** manner, which is designed to preserve time resolution. The ** Julian Date is available as a single number by adding dj1 and ** dj2. The maximum resolution is achieved if dj1 is 2451545.0 ** (J2000.0). ** ** Reference: ** ** Lieske, J.H., 1979. Astron.Astrophys., 73, 282. ** */ void iauEpb2jd(double epb, double *djm0, double *djm) /* ** - - - - - - - - - - ** i a u E p b 2 j d ** - - - - - - - - - - ** ** Besselian Epoch to Julian Date. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** epb double Besselian Epoch (e.g. 1957.3) ** ** Returned: ** djm0 double MJD zero-point: always 2400000.5 ** djm double Modified Julian Date ** ** Note: ** ** The Julian Date is returned in two pieces, in the usual SOFA ** manner, which is designed to preserve time resolution. The ** Julian Date is available as a single number by adding djm0 and ** djm. ** ** Reference: ** ** Lieske, J.H., 1979, Astron.Astrophys. 73, 282. ** */ double iauEpj(double dj1, double dj2) /* ** - - - - - - - ** i a u E p j ** - - - - - - - ** ** Julian Date to Julian Epoch. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** dj1,dj2 double Julian Date (see note) ** ** Returned (function value): ** double Julian Epoch ** ** Note: ** ** The Julian Date is supplied in two pieces, in the usual SOFA ** manner, which is designed to preserve time resolution. The ** Julian Date is available as a single number by adding dj1 and ** dj2. The maximum resolution is achieved if dj1 is 2451545.0 ** (J2000.0). ** ** Reference: ** ** Lieske, J.H., 1979, Astron.Astrophys. 73, 282. ** */ void iauEpj2jd(double epj, double *djm0, double *djm) /* ** - - - - - - - - - - ** i a u E p j 2 j d ** - - - - - - - - - - ** ** Julian Epoch to Julian Date. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** epj double Julian Epoch (e.g. 1996.8) ** ** Returned: ** djm0 double MJD zero-point: always 2400000.5 ** djm double Modified Julian Date ** ** Note: ** ** The Julian Date is returned in two pieces, in the usual SOFA ** manner, which is designed to preserve time resolution. The ** Julian Date is available as a single number by adding djm0 and ** djm. ** ** Reference: ** ** Lieske, J.H., 1979, Astron.Astrophys. 73, 282. ** */ int iauEpv00(double date1, double date2, double pvh[2][3], double pvb[2][3]) /* ** - - - - - - - - - ** i a u E p v 0 0 ** - - - - - - - - - ** ** Earth position and velocity, heliocentric and barycentric, with ** respect to the Barycentric Celestial Reference System. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TDB date (Note 1) ** ** Returned: ** pvh double[2][3] heliocentric Earth position/velocity ** pvb double[2][3] barycentric Earth position/velocity ** ** Returned (function value): ** int status: 0 = OK ** +1 = warning: date outside ** the range 1900-2100 AD ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, among ** others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. However, ** the accuracy of the result is more likely to be limited by the ** algorithm itself than the way the date has been expressed. ** ** n.b. TT can be used instead of TDB in most applications. ** ** 2) On return, the arrays pvh and pvb contain the following: ** ** pvh[0][0] x } ** pvh[0][1] y } heliocentric position, AU ** pvh[0][2] z } ** ** pvh[1][0] xdot } ** pvh[1][1] ydot } heliocentric velocity, AU/d ** pvh[1][2] zdot } ** ** pvb[0][0] x } ** pvb[0][1] y } barycentric position, AU ** pvb[0][2] z } ** ** pvb[1][0] xdot } ** pvb[1][1] ydot } barycentric velocity, AU/d ** pvb[1][2] zdot } ** ** The vectors are with respect to the Barycentric Celestial ** Reference System. The time unit is one day in TDB. ** ** 3) The function is a SIMPLIFIED SOLUTION from the planetary theory ** VSOP2000 (X. Moisson, P. Bretagnon, 2001, Celes. Mechanics & ** Dyn. Astron., 80, 3/4, 205-213) and is an adaptation of original ** Fortran code supplied by P. Bretagnon (private comm., 2000). ** ** 4) Comparisons over the time span 1900-2100 with this simplified ** solution and the JPL DE405 ephemeris give the following results: ** ** RMS max ** Heliocentric: ** position error 3.7 11.2 km ** velocity error 1.4 5.0 mm/s ** ** Barycentric: ** position error 4.6 13.4 km ** velocity error 1.4 4.9 mm/s ** ** Comparisons with the JPL DE406 ephemeris show that by 1800 and ** 2200 the position errors are approximately double their 1900-2100 ** size. By 1500 and 2500 the deterioration is a factor of 10 and ** by 1000 and 3000 a factor of 60. The velocity accuracy falls off ** at about half that rate. ** ** 5) It is permissible to use the same array for pvh and pvb, which ** will receive the barycentric values. ** */ double iauEqeq94(double date1, double date2) /* ** - - - - - - - - - - ** i a u E q e q 9 4 ** - - - - - - - - - - ** ** Equation of the equinoxes, IAU 1994 model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TDB date (Note 1) ** ** Returned (function value): ** double equation of the equinoxes (Note 2) ** ** Notes: ** ** 1) The date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The result, which is in radians, operates in the following sense: ** ** Greenwich apparent ST = GMST + equation of the equinoxes ** ** Called: ** iauAnpm normalize angle into range +/- pi ** iauNut80 nutation, IAU 1980 ** iauObl80 mean obliquity, IAU 1980 ** ** References: ** ** IAU Resolution C7, Recommendation 3 (1994). ** ** Capitaine, N. & Gontier, A.-M., 1993, Astron. Astrophys., 275, ** 645-650. ** */ double iauEra00(double dj1, double dj2) /* ** - - - - - - - - - ** i a u E r a 0 0 ** - - - - - - - - - ** ** Earth rotation angle (IAU 2000 model). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** dj1,dj2 double UT1 as a 2-part Julian Date (see note) ** ** Returned (function value): ** double Earth rotation angle (radians), range 0-2pi ** ** Notes: ** ** 1) The UT1 date dj1+dj2 is a Julian Date, apportioned in any ** convenient way between the arguments dj1 and dj2. For example, ** JD(UT1)=2450123.7 could be expressed in any of these ways, ** among others: ** ** dj1 dj2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. The date & time method is ** best matched to the algorithm used: maximum precision is ** delivered when the dj1 argument is for 0hrs UT1 on the day in ** question and the dj2 argument lies in the range 0 to 1, or vice ** versa. ** ** 2) The algorithm is adapted from Expression 22 of Capitaine et al. ** 2000. The time argument has been expressed in days directly, ** and, to retain precision, integer contributions have been ** eliminated. The same formulation is given in IERS Conventions ** (2003), Chap. 5, Eq. 14. ** ** Called: ** iauAnp normalize angle into range 0 to 2pi ** ** References: ** ** Capitaine N., Guinot B. and McCarthy D.D, 2000, Astron. ** Astrophys., 355, 398-405. ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ double iauFad03(double t) /* ** - - - - - - - - - ** i a u F a d 0 3 ** - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean elongation of the Moon from the Sun. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double D, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** is from Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** */ double iauFae03(double t) /* ** - - - - - - - - - ** i a u F a e 0 3 ** - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of Earth. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double mean longitude of Earth, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** comes from Souchay et al. (1999) after Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, ** Astron.Astrophys.Supp.Ser. 135, 111 ** */ double iauFaf03(double t) /* ** - - - - - - - - - ** i a u F a f 0 3 ** - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of the Moon minus mean longitude of the ascending ** node. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double F, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** is from Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** */ double iauFaju03(double t) /* ** - - - - - - - - - - ** i a u F a j u 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of Jupiter. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double mean longitude of Jupiter, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** comes from Souchay et al. (1999) after Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, ** Astron.Astrophys.Supp.Ser. 135, 111 ** */ double iauFal03(double t) /* ** - - - - - - - - - ** i a u F a l 0 3 ** - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean anomaly of the Moon. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double l, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** is from Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** */ double iauFalp03(double t) /* ** - - - - - - - - - - ** i a u F a l p 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean anomaly of the Sun. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double l', radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** is from Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** */ double iauFama03(double t) /* ** - - - - - - - - - - ** i a u F a m a 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of Mars. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double mean longitude of Mars, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** comes from Souchay et al. (1999) after Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, ** Astron.Astrophys.Supp.Ser. 135, 111 ** */ double iauFame03(double t) /* ** - - - - - - - - - - ** i a u F a m e 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of Mercury. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double mean longitude of Mercury, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** comes from Souchay et al. (1999) after Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, ** Astron.Astrophys.Supp.Ser. 135, 111 ** */ double iauFane03(double t) /* ** - - - - - - - - - - ** i a u F a n e 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of Neptune. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double mean longitude of Neptune, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** is adapted from Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** */ double iauFaom03(double t) /* ** - - - - - - - - - - ** i a u F a o m 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of the Moon's ascending node. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double Omega, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** is from Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** */ double iauFapa03(double t) /* ** - - - - - - - - - - ** i a u F a p a 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** general accumulated precession in longitude. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double general precession in longitude, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003). It ** is taken from Kinoshita & Souchay (1990) and comes originally ** from Lieske et al. (1977). ** ** References: ** ** Kinoshita, H. and Souchay J. 1990, Celest.Mech. and Dyn.Astron. ** 48, 187 ** ** Lieske, J.H., Lederle, T., Fricke, W. & Morando, B. 1977, ** Astron.Astrophys. 58, 1-16 ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ double iauFasa03(double t) /* ** - - - - - - - - - - ** i a u F a s a 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of Saturn. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double mean longitude of Saturn, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** comes from Souchay et al. (1999) after Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, ** Astron.Astrophys.Supp.Ser. 135, 111 ** */ double iauFaur03(double t) /* ** - - - - - - - - - - ** i a u F a u r 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of Uranus. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double mean longitude of Uranus, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** is adapted from Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** */ double iauFave03(double t) /* ** - - - - - - - - - - ** i a u F a v e 0 3 ** - - - - - - - - - - ** ** Fundamental argument, IERS Conventions (2003): ** mean longitude of Venus. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** t double TDB, Julian centuries since J2000.0 (Note 1) ** ** Returned (function value): ** double mean longitude of Venus, radians (Note 2) ** ** Notes: ** ** 1) Though t is strictly TDB, it is usually more convenient to use ** TT, which makes no significant difference. ** ** 2) The expression used is as adopted in IERS Conventions (2003) and ** comes from Souchay et al. (1999) after Simon et al. (1994). ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, ** Astron.Astrophys.Supp.Ser. 135, 111 ** */ void iauFk52h(double r5, double d5, double dr5, double dd5, double px5, double rv5, double *rh, double *dh, double *drh, double *ddh, double *pxh, double *rvh) /* ** - - - - - - - - - ** i a u F k 5 2 h ** - - - - - - - - - ** ** Transform FK5 (J2000.0) star data into the Hipparcos system. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given (all FK5, equinox J2000.0, epoch J2000.0): ** r5 double RA (radians) ** d5 double Dec (radians) ** dr5 double proper motion in RA (dRA/dt, rad/Jyear) ** dd5 double proper motion in Dec (dDec/dt, rad/Jyear) ** px5 double parallax (arcsec) ** rv5 double radial velocity (km/s, positive = receding) ** ** Returned (all Hipparcos, epoch J2000.0): ** rh double RA (radians) ** dh double Dec (radians) ** drh double proper motion in RA (dRA/dt, rad/Jyear) ** ddh double proper motion in Dec (dDec/dt, rad/Jyear) ** pxh double parallax (arcsec) ** rvh double radial velocity (km/s, positive = receding) ** ** Notes: ** ** 1) This function transforms FK5 star positions and proper motions ** into the system of the Hipparcos catalog. ** ** 2) The proper motions in RA are dRA/dt rather than ** cos(Dec)*dRA/dt, and are per year rather than per century. ** ** 3) The FK5 to Hipparcos transformation is modeled as a pure ** rotation and spin; zonal errors in the FK5 catalog are not ** taken into account. ** ** 4) See also iauH2fk5, iauFk5hz, iauHfk5z. ** ** Called: ** iauStarpv star catalog data to space motion pv-vector ** iauFk5hip FK5 to Hipparcos rotation and spin ** iauRxp product of r-matrix and p-vector ** iauPxp vector product of two p-vectors ** iauPpp p-vector plus p-vector ** iauPvstar space motion pv-vector to star catalog data ** ** Reference: ** ** F.Mignard & M.Froeschle, Astron. Astrophys. 354, 732-739 (2000). ** */ void iauFk5hip(double r5h[3][3], double s5h[3]) /* ** - - - - - - - - - - ** i a u F k 5 h i p ** - - - - - - - - - - ** ** FK5 to Hipparcos rotation and spin. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Returned: ** r5h double[3][3] r-matrix: FK5 rotation wrt Hipparcos (Note 2) ** s5h double[3] r-vector: FK5 spin wrt Hipparcos (Note 3) ** ** Notes: ** ** 1) This function models the FK5 to Hipparcos transformation as a ** pure rotation and spin; zonal errors in the FK5 catalogue are ** not taken into account. ** ** 2) The r-matrix r5h operates in the sense: ** ** P_Hipparcos = r5h x P_FK5 ** ** where P_FK5 is a p-vector in the FK5 frame, and P_Hipparcos is ** the equivalent Hipparcos p-vector. ** ** 3) The r-vector s5h represents the time derivative of the FK5 to ** Hipparcos rotation. The units are radians per year (Julian, ** TDB). ** ** Called: ** iauRv2m r-vector to r-matrix ** ** Reference: ** ** F.Mignard & M.Froeschle, Astron. Astrophys. 354, 732-739 (2000). ** */ void iauFk5hz(double r5, double d5, double date1, double date2, double *rh, double *dh) /* ** - - - - - - - - - ** i a u F k 5 h z ** - - - - - - - - - ** ** Transform an FK5 (J2000.0) star position into the system of the ** Hipparcos catalogue, assuming zero Hipparcos proper motion. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** r5 double FK5 RA (radians), equinox J2000.0, at date ** d5 double FK5 Dec (radians), equinox J2000.0, at date ** date1,date2 double TDB date (Notes 1,2) ** ** Returned: ** rh double Hipparcos RA (radians) ** dh double Hipparcos Dec (radians) ** ** Notes: ** ** 1) This function converts a star position from the FK5 system to ** the Hipparcos system, in such a way that the Hipparcos proper ** motion is zero. Because such a star has, in general, a non-zero ** proper motion in the FK5 system, the function requires the date ** at which the position in the FK5 system was determined. ** ** 2) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 3) The FK5 to Hipparcos transformation is modeled as a pure ** rotation and spin; zonal errors in the FK5 catalogue are not ** taken into account. ** ** 4) The position returned by this function is in the Hipparcos ** reference system but at date date1+date2. ** ** 5) See also iauFk52h, iauH2fk5, iauHfk5z. ** ** Called: ** iauS2c spherical coordinates to unit vector ** iauFk5hip FK5 to Hipparcos rotation and spin ** iauSxp multiply p-vector by scalar ** iauRv2m r-vector to r-matrix ** iauTrxp product of transpose of r-matrix and p-vector ** iauPxp vector product of two p-vectors ** iauC2s p-vector to spherical ** iauAnp normalize angle into range 0 to 2pi ** ** Reference: ** ** F.Mignard & M.Froeschle, 2000, Astron.Astrophys. 354, 732-739. ** */ void iauFw2m(double gamb, double phib, double psi, double eps, double r[3][3]) /* ** - - - - - - - - ** i a u F w 2 m ** - - - - - - - - ** ** Form rotation matrix given the Fukushima-Williams angles. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** gamb double F-W angle gamma_bar (radians) ** phib double F-W angle phi_bar (radians) ** psi double F-W angle psi (radians) ** eps double F-W angle epsilon (radians) ** ** Returned: ** r double[3][3] rotation matrix ** ** Notes: ** ** 1) Naming the following points: ** ** e = J2000.0 ecliptic pole, ** p = GCRS pole, ** E = ecliptic pole of date, ** and P = CIP, ** ** the four Fukushima-Williams angles are as follows: ** ** gamb = gamma = epE ** phib = phi = pE ** psi = psi = pEP ** eps = epsilon = EP ** ** 2) The matrix representing the combined effects of frame bias, ** precession and nutation is: ** ** NxPxB = R_1(-eps).R_3(-psi).R_1(phib).R_3(gamb) ** ** 3) Three different matrices can be constructed, depending on the ** supplied angles: ** ** o To obtain the nutation x precession x frame bias matrix, ** generate the four precession angles, generate the nutation ** components and add them to the psi_bar and epsilon_A angles, ** and call the present function. ** ** o To obtain the precession x frame bias matrix, generate the ** four precession angles and call the present function. ** ** o To obtain the frame bias matrix, generate the four precession ** angles for date J2000.0 and call the present function. ** ** The nutation-only and precession-only matrices can if necessary ** be obtained by combining these three appropriately. ** ** Called: ** iauIr initialize r-matrix to identity ** iauRz rotate around Z-axis ** iauRx rotate around X-axis ** ** Reference: ** ** Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351 ** */ void iauFw2xy(double gamb, double phib, double psi, double eps, double *x, double *y) /* ** - - - - - - - - - ** i a u F w 2 x y ** - - - - - - - - - ** ** CIP X,Y given Fukushima-Williams bias-precession-nutation angles. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** gamb double F-W angle gamma_bar (radians) ** phib double F-W angle phi_bar (radians) ** psi double F-W angle psi (radians) ** eps double F-W angle epsilon (radians) ** ** Returned: ** x,y double CIP unit vector X,Y ** ** Notes: ** ** 1) Naming the following points: ** ** e = J2000.0 ecliptic pole, ** p = GCRS pole ** E = ecliptic pole of date, ** and P = CIP, ** ** the four Fukushima-Williams angles are as follows: ** ** gamb = gamma = epE ** phib = phi = pE ** psi = psi = pEP ** eps = epsilon = EP ** ** 2) The matrix representing the combined effects of frame bias, ** precession and nutation is: ** ** NxPxB = R_1(-epsA).R_3(-psi).R_1(phib).R_3(gamb) ** ** The returned values x,y are elements [2][0] and [2][1] of the ** matrix. Near J2000.0, they are essentially angles in radians. ** ** Called: ** iauFw2m F-W angles to r-matrix ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** ** Reference: ** ** Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351 ** */ void iauG2icrs ( double dl, double db, double *dr, double *dd ) /* ** - - - - - - - - - - ** i a u G 2 i c r s ** - - - - - - - - - - ** ** Transformation from Galactic Coordinates to ICRS. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support routine. ** ** Given: ** dl double galactic longitude (radians) ** db double galactic latitude (radians) ** ** Returned: ** dr double ICRS right ascension (radians) ** dd double ICRS declination (radians) ** ** Notes: ** ** 1) The IAU 1958 system of Galactic coordinates was defined with ** respect to the now obsolete reference system FK4 B1950.0. When ** interpreting the system in a modern context, several factors have ** to be taken into account: ** ** . The inclusion in FK4 positions of the E-terms of aberration. ** ** . The distortion of the FK4 proper motion system by differential ** Galactic rotation. ** ** . The use of the B1950.0 equinox rather than the now-standard ** J2000.0. ** ** . The frame bias between ICRS and the J2000.0 mean place system. ** ** The Hipparcos Catalogue (Perryman & ESA 1997) provides a rotation ** matrix that transforms directly between ICRS and Galactic ** coordinates with the above factors taken into account. The ** matrix is derived from three angles, namely the ICRS coordinates ** of the Galactic pole and the longitude of the ascending node of ** the galactic equator on the ICRS equator. They are given in ** degrees to five decimal places and for canonical purposes are ** regarded as exact. In the Hipparcos Catalogue the matrix ** elements are given to 10 decimal places (about 20 microarcsec). ** In the present SOFA function the matrix elements have been ** recomputed from the canonical three angles and are given to 30 ** decimal places. ** ** 2) The inverse transformation is performed by the function iauIcrs2g. ** ** Called: ** iauAnp normalize angle into range 0 to 2pi ** iauAnpm normalize angle into range +/- pi ** iauS2c spherical coordinates to unit vector ** iauTrxp product of transpose of r-matrix and p-vector ** iauC2s p-vector to spherical ** ** Reference: ** Perryman M.A.C. & ESA, 1997, ESA SP-1200, The Hipparcos and Tycho ** catalogues. Astrometric and photometric star catalogues ** derived from the ESA Hipparcos Space Astrometry Mission. ESA ** Publications Division, Noordwijk, Netherlands. ** */ int iauGc2gd ( int n, double xyz[3], double *elong, double *phi, double *height ) /* ** - - - - - - - - - ** i a u G c 2 g d ** - - - - - - - - - ** ** Transform geocentric coordinates to geodetic using the specified ** reference ellipsoid. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical transformation. ** ** Given: ** n int ellipsoid identifier (Note 1) ** xyz double[3] geocentric vector (Note 2) ** ** Returned: ** elong double longitude (radians, east +ve, Note 3) ** phi double latitude (geodetic, radians, Note 3) ** height double height above ellipsoid (geodetic, Notes 2,3) ** ** Returned (function value): ** int status: 0 = OK ** -1 = illegal identifier (Note 3) ** -2 = internal error (Note 3) ** ** Notes: ** ** 1) The identifier n is a number that specifies the choice of ** reference ellipsoid. The following are supported: ** ** n ellipsoid ** ** 1 WGS84 ** 2 GRS80 ** 3 WGS72 ** ** The n value has no significance outside the SOFA software. For ** convenience, symbols WGS84 etc. are defined in sofam.h. ** ** 2) The geocentric vector (xyz, given) and height (height, returned) ** are in meters. ** ** 3) An error status -1 means that the identifier n is illegal. An ** error status -2 is theoretically impossible. In all error cases, ** all three results are set to -1e9. ** ** 4) The inverse transformation is performed in the function iauGd2gc. ** ** Called: ** iauEform Earth reference ellipsoids ** iauGc2gde geocentric to geodetic transformation, general ** */ int iauGc2gde ( double a, double f, double xyz[3], double *elong, double *phi, double *height ) /* ** - - - - - - - - - - ** i a u G c 2 g d e ** - - - - - - - - - - ** ** Transform geocentric coordinates to geodetic for a reference ** ellipsoid of specified form. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** a double equatorial radius (Notes 2,4) ** f double flattening (Note 3) ** xyz double[3] geocentric vector (Note 4) ** ** Returned: ** elong double longitude (radians, east +ve) ** phi double latitude (geodetic, radians) ** height double height above ellipsoid (geodetic, Note 4) ** ** Returned (function value): ** int status: 0 = OK ** -1 = illegal f ** -2 = illegal a ** ** Notes: ** ** 1) This function is based on the GCONV2H Fortran subroutine by ** Toshio Fukushima (see reference). ** ** 2) The equatorial radius, a, can be in any units, but meters is ** the conventional choice. ** ** 3) The flattening, f, is (for the Earth) a value around 0.00335, ** i.e. around 1/298. ** ** 4) The equatorial radius, a, and the geocentric vector, xyz, ** must be given in the same units, and determine the units of ** the returned height, height. ** ** 5) If an error occurs (status < 0), elong, phi and height are ** unchanged. ** ** 6) The inverse transformation is performed in the function ** iauGd2gce. ** ** 7) The transformation for a standard ellipsoid (such as WGS84) can ** more conveniently be performed by calling iauGc2gd, which uses a ** numerical code to identify the required A and F values. ** ** Reference: ** ** Fukushima, T., "Transformation from Cartesian to geodetic ** coordinates accelerated by Halley's method", J.Geodesy (2006) ** 79: 689-693 ** */ int iauGd2gc ( int n, double elong, double phi, double height, double xyz[3] ) /* ** - - - - - - - - - ** i a u G d 2 g c ** - - - - - - - - - ** ** Transform geodetic coordinates to geocentric using the specified ** reference ellipsoid. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical transformation. ** ** Given: ** n int ellipsoid identifier (Note 1) ** elong double longitude (radians, east +ve) ** phi double latitude (geodetic, radians, Note 3) ** height double height above ellipsoid (geodetic, Notes 2,3) ** ** Returned: ** xyz double[3] geocentric vector (Note 2) ** ** Returned (function value): ** int status: 0 = OK ** -1 = illegal identifier (Note 3) ** -2 = illegal case (Note 3) ** ** Notes: ** ** 1) The identifier n is a number that specifies the choice of ** reference ellipsoid. The following are supported: ** ** n ellipsoid ** ** 1 WGS84 ** 2 GRS80 ** 3 WGS72 ** ** The n value has no significance outside the SOFA software. For ** convenience, symbols WGS84 etc. are defined in sofam.h. ** ** 2) The height (height, given) and the geocentric vector (xyz, ** returned) are in meters. ** ** 3) No validation is performed on the arguments elong, phi and ** height. An error status -1 means that the identifier n is ** illegal. An error status -2 protects against cases that would ** lead to arithmetic exceptions. In all error cases, xyz is set ** to zeros. ** ** 4) The inverse transformation is performed in the function iauGc2gd. ** ** Called: ** iauEform Earth reference ellipsoids ** iauGd2gce geodetic to geocentric transformation, general ** iauZp zero p-vector ** */ int iauGd2gce ( double a, double f, double elong, double phi, double height, double xyz[3] ) /* ** - - - - - - - - - - ** i a u G d 2 g c e ** - - - - - - - - - - ** ** Transform geodetic coordinates to geocentric for a reference ** ellipsoid of specified form. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** a double equatorial radius (Notes 1,4) ** f double flattening (Notes 2,4) ** elong double longitude (radians, east +ve) ** phi double latitude (geodetic, radians, Note 4) ** height double height above ellipsoid (geodetic, Notes 3,4) ** ** Returned: ** xyz double[3] geocentric vector (Note 3) ** ** Returned (function value): ** int status: 0 = OK ** -1 = illegal case (Note 4) ** Notes: ** ** 1) The equatorial radius, a, can be in any units, but meters is ** the conventional choice. ** ** 2) The flattening, f, is (for the Earth) a value around 0.00335, ** i.e. around 1/298. ** ** 3) The equatorial radius, a, and the height, height, must be ** given in the same units, and determine the units of the ** returned geocentric vector, xyz. ** ** 4) No validation is performed on individual arguments. The error ** status -1 protects against (unrealistic) cases that would lead ** to arithmetic exceptions. If an error occurs, xyz is unchanged. ** ** 5) The inverse transformation is performed in the function ** iauGc2gde. ** ** 6) The transformation for a standard ellipsoid (such as WGS84) can ** more conveniently be performed by calling iauGd2gc, which uses a ** numerical code to identify the required a and f values. ** ** References: ** ** Green, R.M., Spherical Astronomy, Cambridge University Press, ** (1985) Section 4.5, p96. ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 4.22, p202. ** */ double iauGmst00(double uta, double utb, double tta, double ttb) /* ** - - - - - - - - - - ** i a u G m s t 0 0 ** - - - - - - - - - - ** ** Greenwich mean sidereal time (model consistent with IAU 2000 ** resolutions). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** uta,utb double UT1 as a 2-part Julian Date (Notes 1,2) ** tta,ttb double TT as a 2-part Julian Date (Notes 1,2) ** ** Returned (function value): ** double Greenwich mean sidereal time (radians) ** ** Notes: ** ** 1) The UT1 and TT dates uta+utb and tta+ttb respectively, are both ** Julian Dates, apportioned in any convenient way between the ** argument pairs. For example, JD=2450123.7 could be expressed in ** any of these ways, among others: ** ** Part A Part B ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable (in the case of UT; the TT is not at all critical ** in this respect). The J2000 and MJD methods are good compromises ** between resolution and convenience. For UT, the date & time ** method is best matched to the algorithm that is used by the Earth ** Rotation Angle function, called internally: maximum precision is ** delivered when the uta argument is for 0hrs UT1 on the day in ** question and the utb argument lies in the range 0 to 1, or vice ** versa. ** ** 2) Both UT1 and TT are required, UT1 to predict the Earth rotation ** and TT to predict the effects of precession. If UT1 is used for ** both purposes, errors of order 100 microarcseconds result. ** ** 3) This GMST is compatible with the IAU 2000 resolutions and must be ** used only in conjunction with other IAU 2000 compatible ** components such as precession-nutation and equation of the ** equinoxes. ** ** 4) The result is returned in the range 0 to 2pi. ** ** 5) The algorithm is from Capitaine et al. (2003) and IERS ** Conventions 2003. ** ** Called: ** iauEra00 Earth rotation angle, IAU 2000 ** iauAnp normalize angle into range 0 to 2pi ** ** References: ** ** Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to ** implement the IAU 2000 definition of UT1", Astronomy & ** Astrophysics, 406, 1135-1149 (2003) ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ double iauGmst06(double uta, double utb, double tta, double ttb) /* ** - - - - - - - - - - ** i a u G m s t 0 6 ** - - - - - - - - - - ** ** Greenwich mean sidereal time (consistent with IAU 2006 precession). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** uta,utb double UT1 as a 2-part Julian Date (Notes 1,2) ** tta,ttb double TT as a 2-part Julian Date (Notes 1,2) ** ** Returned (function value): ** double Greenwich mean sidereal time (radians) ** ** Notes: ** ** 1) The UT1 and TT dates uta+utb and tta+ttb respectively, are both ** Julian Dates, apportioned in any convenient way between the ** argument pairs. For example, JD=2450123.7 could be expressed in ** any of these ways, among others: ** ** Part A Part B ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable (in the case of UT; the TT is not at all critical ** in this respect). The J2000 and MJD methods are good compromises ** between resolution and convenience. For UT, the date & time ** method is best matched to the algorithm that is used by the Earth ** rotation angle function, called internally: maximum precision is ** delivered when the uta argument is for 0hrs UT1 on the day in ** question and the utb argument lies in the range 0 to 1, or vice ** versa. ** ** 2) Both UT1 and TT are required, UT1 to predict the Earth rotation ** and TT to predict the effects of precession. If UT1 is used for ** both purposes, errors of order 100 microarcseconds result. ** ** 3) This GMST is compatible with the IAU 2006 precession and must not ** be used with other precession models. ** ** 4) The result is returned in the range 0 to 2pi. ** ** Called: ** iauEra00 Earth rotation angle, IAU 2000 ** iauAnp normalize angle into range 0 to 2pi ** ** Reference: ** ** Capitaine, N., Wallace, P.T. & Chapront, J., 2005, ** Astron.Astrophys. 432, 355 ** */ double iauGmst82(double dj1, double dj2) /* ** - - - - - - - - - - ** i a u G m s t 8 2 ** - - - - - - - - - - ** ** Universal Time to Greenwich mean sidereal time (IAU 1982 model). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** dj1,dj2 double UT1 Julian Date (see note) ** ** Returned (function value): ** double Greenwich mean sidereal time (radians) ** ** Notes: ** ** 1) The UT1 date dj1+dj2 is a Julian Date, apportioned in any ** convenient way between the arguments dj1 and dj2. For example, ** JD(UT1)=2450123.7 could be expressed in any of these ways, ** among others: ** ** dj1 dj2 ** ** 2450123.7 0 (JD method) ** 2451545 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. The date & time method is ** best matched to the algorithm used: maximum accuracy (or, at ** least, minimum noise) is delivered when the dj1 argument is for ** 0hrs UT1 on the day in question and the dj2 argument lies in the ** range 0 to 1, or vice versa. ** ** 2) The algorithm is based on the IAU 1982 expression. This is ** always described as giving the GMST at 0 hours UT1. In fact, it ** gives the difference between the GMST and the UT, the steady ** 4-minutes-per-day drawing-ahead of ST with respect to UT. When ** whole days are ignored, the expression happens to equal the GMST ** at 0 hours UT1 each day. ** ** 3) In this function, the entire UT1 (the sum of the two arguments ** dj1 and dj2) is used directly as the argument for the standard ** formula, the constant term of which is adjusted by 12 hours to ** take account of the noon phasing of Julian Date. The UT1 is then ** added, but omitting whole days to conserve accuracy. ** ** Called: ** iauAnp normalize angle into range 0 to 2pi ** ** References: ** ** Transactions of the International Astronomical Union, ** XVIII B, 67 (1983). ** ** Aoki et al., Astron. Astrophys. 105, 359-361 (1982). ** */ double iauGst00a(double uta, double utb, double tta, double ttb) /* ** - - - - - - - - - - ** i a u G s t 0 0 a ** - - - - - - - - - - ** ** Greenwich apparent sidereal time (consistent with IAU 2000 ** resolutions). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** uta,utb double UT1 as a 2-part Julian Date (Notes 1,2) ** tta,ttb double TT as a 2-part Julian Date (Notes 1,2) ** ** Returned (function value): ** double Greenwich apparent sidereal time (radians) ** ** Notes: ** ** 1) The UT1 and TT dates uta+utb and tta+ttb respectively, are both ** Julian Dates, apportioned in any convenient way between the ** argument pairs. For example, JD=2450123.7 could be expressed in ** any of these ways, among others: ** ** Part A Part B ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable (in the case of UT; the TT is not at all critical ** in this respect). The J2000 and MJD methods are good compromises ** between resolution and convenience. For UT, the date & time ** method is best matched to the algorithm that is used by the Earth ** Rotation Angle function, called internally: maximum precision is ** delivered when the uta argument is for 0hrs UT1 on the day in ** question and the utb argument lies in the range 0 to 1, or vice ** versa. ** ** 2) Both UT1 and TT are required, UT1 to predict the Earth rotation ** and TT to predict the effects of precession-nutation. If UT1 is ** used for both purposes, errors of order 100 microarcseconds ** result. ** ** 3) This GAST is compatible with the IAU 2000 resolutions and must be ** used only in conjunction with other IAU 2000 compatible ** components such as precession-nutation. ** ** 4) The result is returned in the range 0 to 2pi. ** ** 5) The algorithm is from Capitaine et al. (2003) and IERS ** Conventions 2003. ** ** Called: ** iauGmst00 Greenwich mean sidereal time, IAU 2000 ** iauEe00a equation of the equinoxes, IAU 2000A ** iauAnp normalize angle into range 0 to 2pi ** ** References: ** ** Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to ** implement the IAU 2000 definition of UT1", Astronomy & ** Astrophysics, 406, 1135-1149 (2003) ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ double iauGst00b(double uta, double utb) /* ** - - - - - - - - - - ** i a u G s t 0 0 b ** - - - - - - - - - - ** ** Greenwich apparent sidereal time (consistent with IAU 2000 ** resolutions but using the truncated nutation model IAU 2000B). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** uta,utb double UT1 as a 2-part Julian Date (Notes 1,2) ** ** Returned (function value): ** double Greenwich apparent sidereal time (radians) ** ** Notes: ** ** 1) The UT1 date uta+utb is a Julian Date, apportioned in any ** convenient way between the argument pair. For example, ** JD=2450123.7 could be expressed in any of these ways, among ** others: ** ** uta utb ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. For UT, the date & time ** method is best matched to the algorithm that is used by the Earth ** Rotation Angle function, called internally: maximum precision is ** delivered when the uta argument is for 0hrs UT1 on the day in ** question and the utb argument lies in the range 0 to 1, or vice ** versa. ** ** 2) The result is compatible with the IAU 2000 resolutions, except ** that accuracy has been compromised for the sake of speed and ** convenience in two respects: ** ** . UT is used instead of TDB (or TT) to compute the precession ** component of GMST and the equation of the equinoxes. This ** results in errors of order 0.1 mas at present. ** ** . The IAU 2000B abridged nutation model (McCarthy & Luzum, 2001) ** is used, introducing errors of up to 1 mas. ** ** 3) This GAST is compatible with the IAU 2000 resolutions and must be ** used only in conjunction with other IAU 2000 compatible ** components such as precession-nutation. ** ** 4) The result is returned in the range 0 to 2pi. ** ** 5) The algorithm is from Capitaine et al. (2003) and IERS ** Conventions 2003. ** ** Called: ** iauGmst00 Greenwich mean sidereal time, IAU 2000 ** iauEe00b equation of the equinoxes, IAU 2000B ** iauAnp normalize angle into range 0 to 2pi ** ** References: ** ** Capitaine, N., Wallace, P.T. and McCarthy, D.D., "Expressions to ** implement the IAU 2000 definition of UT1", Astronomy & ** Astrophysics, 406, 1135-1149 (2003) ** ** McCarthy, D.D. & Luzum, B.J., "An abridged model of the ** precession-nutation of the celestial pole", Celestial Mechanics & ** Dynamical Astronomy, 85, 37-49 (2003) ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ double iauGst06(double uta, double utb, double tta, double ttb, double rnpb[3][3]) /* ** - - - - - - - - - ** i a u G s t 0 6 ** - - - - - - - - - ** ** Greenwich apparent sidereal time, IAU 2006, given the NPB matrix. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** uta,utb double UT1 as a 2-part Julian Date (Notes 1,2) ** tta,ttb double TT as a 2-part Julian Date (Notes 1,2) ** rnpb double[3][3] nutation x precession x bias matrix ** ** Returned (function value): ** double Greenwich apparent sidereal time (radians) ** ** Notes: ** ** 1) The UT1 and TT dates uta+utb and tta+ttb respectively, are both ** Julian Dates, apportioned in any convenient way between the ** argument pairs. For example, JD=2450123.7 could be expressed in ** any of these ways, among others: ** ** Part A Part B ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable (in the case of UT; the TT is not at all critical ** in this respect). The J2000 and MJD methods are good compromises ** between resolution and convenience. For UT, the date & time ** method is best matched to the algorithm that is used by the Earth ** rotation angle function, called internally: maximum precision is ** delivered when the uta argument is for 0hrs UT1 on the day in ** question and the utb argument lies in the range 0 to 1, or vice ** versa. ** ** 2) Both UT1 and TT are required, UT1 to predict the Earth rotation ** and TT to predict the effects of precession-nutation. If UT1 is ** used for both purposes, errors of order 100 microarcseconds ** result. ** ** 3) Although the function uses the IAU 2006 series for s+XY/2, it is ** otherwise independent of the precession-nutation model and can in ** practice be used with any equinox-based NPB matrix. ** ** 4) The result is returned in the range 0 to 2pi. ** ** Called: ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauS06 the CIO locator s, given X,Y, IAU 2006 ** iauAnp normalize angle into range 0 to 2pi ** iauEra00 Earth rotation angle, IAU 2000 ** iauEors equation of the origins, given NPB matrix and s ** ** Reference: ** ** Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** */ double iauGst06a(double uta, double utb, double tta, double ttb) /* ** - - - - - - - - - - ** i a u G s t 0 6 a ** - - - - - - - - - - ** ** Greenwich apparent sidereal time (consistent with IAU 2000 and 2006 ** resolutions). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** uta,utb double UT1 as a 2-part Julian Date (Notes 1,2) ** tta,ttb double TT as a 2-part Julian Date (Notes 1,2) ** ** Returned (function value): ** double Greenwich apparent sidereal time (radians) ** ** Notes: ** ** 1) The UT1 and TT dates uta+utb and tta+ttb respectively, are both ** Julian Dates, apportioned in any convenient way between the ** argument pairs. For example, JD=2450123.7 could be expressed in ** any of these ways, among others: ** ** Part A Part B ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable (in the case of UT; the TT is not at all critical ** in this respect). The J2000 and MJD methods are good compromises ** between resolution and convenience. For UT, the date & time ** method is best matched to the algorithm that is used by the Earth ** rotation angle function, called internally: maximum precision is ** delivered when the uta argument is for 0hrs UT1 on the day in ** question and the utb argument lies in the range 0 to 1, or vice ** versa. ** ** 2) Both UT1 and TT are required, UT1 to predict the Earth rotation ** and TT to predict the effects of precession-nutation. If UT1 is ** used for both purposes, errors of order 100 microarcseconds ** result. ** ** 3) This GAST is compatible with the IAU 2000/2006 resolutions and ** must be used only in conjunction with IAU 2006 precession and ** IAU 2000A nutation. ** ** 4) The result is returned in the range 0 to 2pi. ** ** Called: ** iauPnm06a classical NPB matrix, IAU 2006/2000A ** iauGst06 Greenwich apparent ST, IAU 2006, given NPB matrix ** ** Reference: ** ** Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** */ double iauGst94(double uta, double utb) /* ** - - - - - - - - - ** i a u G s t 9 4 ** - - - - - - - - - ** ** Greenwich apparent sidereal time (consistent with IAU 1982/94 ** resolutions). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** uta,utb double UT1 as a 2-part Julian Date (Notes 1,2) ** ** Returned (function value): ** double Greenwich apparent sidereal time (radians) ** ** Notes: ** ** 1) The UT1 date uta+utb is a Julian Date, apportioned in any ** convenient way between the argument pair. For example, ** JD=2450123.7 could be expressed in any of these ways, among ** others: ** ** uta utb ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 and MJD methods are good compromises ** between resolution and convenience. For UT, the date & time ** method is best matched to the algorithm that is used by the Earth ** Rotation Angle function, called internally: maximum precision is ** delivered when the uta argument is for 0hrs UT1 on the day in ** question and the utb argument lies in the range 0 to 1, or vice ** versa. ** ** 2) The result is compatible with the IAU 1982 and 1994 resolutions, ** except that accuracy has been compromised for the sake of ** convenience in that UT is used instead of TDB (or TT) to compute ** the equation of the equinoxes. ** ** 3) This GAST must be used only in conjunction with contemporaneous ** IAU standards such as 1976 precession, 1980 obliquity and 1982 ** nutation. It is not compatible with the IAU 2000 resolutions. ** ** 4) The result is returned in the range 0 to 2pi. ** ** Called: ** iauGmst82 Greenwich mean sidereal time, IAU 1982 ** iauEqeq94 equation of the equinoxes, IAU 1994 ** iauAnp normalize angle into range 0 to 2pi ** ** References: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** ** IAU Resolution C7, Recommendation 3 (1994) ** */ void iauH2fk5(double rh, double dh, double drh, double ddh, double pxh, double rvh, double *r5, double *d5, double *dr5, double *dd5, double *px5, double *rv5) /* ** - - - - - - - - - ** i a u H 2 f k 5 ** - - - - - - - - - ** ** Transform Hipparcos star data into the FK5 (J2000.0) system. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given (all Hipparcos, epoch J2000.0): ** rh double RA (radians) ** dh double Dec (radians) ** drh double proper motion in RA (dRA/dt, rad/Jyear) ** ddh double proper motion in Dec (dDec/dt, rad/Jyear) ** pxh double parallax (arcsec) ** rvh double radial velocity (km/s, positive = receding) ** ** Returned (all FK5, equinox J2000.0, epoch J2000.0): ** r5 double RA (radians) ** d5 double Dec (radians) ** dr5 double proper motion in RA (dRA/dt, rad/Jyear) ** dd5 double proper motion in Dec (dDec/dt, rad/Jyear) ** px5 double parallax (arcsec) ** rv5 double radial velocity (km/s, positive = receding) ** ** Notes: ** ** 1) This function transforms Hipparcos star positions and proper ** motions into FK5 J2000.0. ** ** 2) The proper motions in RA are dRA/dt rather than ** cos(Dec)*dRA/dt, and are per year rather than per century. ** ** 3) The FK5 to Hipparcos transformation is modeled as a pure ** rotation and spin; zonal errors in the FK5 catalog are not ** taken into account. ** ** 4) See also iauFk52h, iauFk5hz, iauHfk5z. ** ** Called: ** iauStarpv star catalog data to space motion pv-vector ** iauFk5hip FK5 to Hipparcos rotation and spin ** iauRv2m r-vector to r-matrix ** iauRxp product of r-matrix and p-vector ** iauTrxp product of transpose of r-matrix and p-vector ** iauPxp vector product of two p-vectors ** iauPmp p-vector minus p-vector ** iauPvstar space motion pv-vector to star catalog data ** ** Reference: ** ** F.Mignard & M.Froeschle, Astron. Astrophys. 354, 732-739 (2000). ** */ void iauHfk5z(double rh, double dh, double date1, double date2, double *r5, double *d5, double *dr5, double *dd5) /* ** - - - - - - - - - ** i a u H f k 5 z ** - - - - - - - - - ** ** Transform a Hipparcos star position into FK5 J2000.0, assuming ** zero Hipparcos proper motion. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rh double Hipparcos RA (radians) ** dh double Hipparcos Dec (radians) ** date1,date2 double TDB date (Note 1) ** ** Returned (all FK5, equinox J2000.0, date date1+date2): ** r5 double RA (radians) ** d5 double Dec (radians) ** dr5 double FK5 RA proper motion (rad/year, Note 4) ** dd5 double Dec proper motion (rad/year, Note 4) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt. ** ** 3) The FK5 to Hipparcos transformation is modeled as a pure rotation ** and spin; zonal errors in the FK5 catalogue are not taken into ** account. ** ** 4) It was the intention that Hipparcos should be a close ** approximation to an inertial frame, so that distant objects have ** zero proper motion; such objects have (in general) non-zero ** proper motion in FK5, and this function returns those fictitious ** proper motions. ** ** 5) The position returned by this function is in the FK5 J2000.0 ** reference system but at date date1+date2. ** ** 6) See also iauFk52h, iauH2fk5, iauFk5zhz. ** ** Called: ** iauS2c spherical coordinates to unit vector ** iauFk5hip FK5 to Hipparcos rotation and spin ** iauRxp product of r-matrix and p-vector ** iauSxp multiply p-vector by scalar ** iauRxr product of two r-matrices ** iauTrxp product of transpose of r-matrix and p-vector ** iauPxp vector product of two p-vectors ** iauPv2s pv-vector to spherical ** iauAnp normalize angle into range 0 to 2pi ** ** Reference: ** ** F.Mignard & M.Froeschle, 2000, Astron.Astrophys. 354, 732-739. ** */ void iauIcrs2g ( double dr, double dd, double *dl, double *db ) /* ** - - - - - - - - - - ** i a u I c r s 2 g ** - - - - - - - - - - ** ** Transformation from ICRS to Galactic Coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support routine. ** ** Given: ** dr double ICRS right ascension (radians) ** dd double ICRS declination (radians) ** ** Returned: ** dl double galactic longitude (radians) ** db double galactic latitude (radians) ** ** Notes: ** ** 1) The IAU 1958 system of Galactic coordinates was defined with ** respect to the now obsolete reference system FK4 B1950.0. When ** interpreting the system in a modern context, several factors have ** to be taken into account: ** ** . The inclusion in FK4 positions of the E-terms of aberration. ** ** . The distortion of the FK4 proper motion system by differential ** Galactic rotation. ** ** . The use of the B1950.0 equinox rather than the now-standard ** J2000.0. ** ** . The frame bias between ICRS and the J2000.0 mean place system. ** ** The Hipparcos Catalogue (Perryman & ESA 1997) provides a rotation ** matrix that transforms directly between ICRS and Galactic ** coordinates with the above factors taken into account. The ** matrix is derived from three angles, namely the ICRS coordinates ** of the Galactic pole and the longitude of the ascending node of ** the galactic equator on the ICRS equator. They are given in ** degrees to five decimal places and for canonical purposes are ** regarded as exact. In the Hipparcos Catalogue the matrix ** elements are given to 10 decimal places (about 20 microarcsec). ** In the present SOFA function the matrix elements have been ** recomputed from the canonical three angles and are given to 30 ** decimal places. ** ** 2) The inverse transformation is performed by the function iauG2icrs. ** ** Called: ** iauAnp normalize angle into range 0 to 2pi ** iauAnpm normalize angle into range +/- pi ** iauS2c spherical coordinates to unit vector ** iauRxp product of r-matrix and p-vector ** iauC2s p-vector to spherical ** ** Reference: ** Perryman M.A.C. & ESA, 1997, ESA SP-1200, The Hipparcos and Tycho ** catalogues. Astrometric and photometric star catalogues ** derived from the ESA Hipparcos Space Astrometry Mission. ESA ** Publications Division, Noordwijk, Netherlands. ** */ void iauIr(double r[3][3]) /* ** - - - - - - ** i a u I r ** - - - - - - ** ** Initialize an r-matrix to the identity matrix. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Returned: ** r double[3][3] r-matrix ** */ int iauJd2cal(double dj1, double dj2, int *iy, int *im, int *id, double *fd) /* ** - - - - - - - - - - ** i a u J d 2 c a l ** - - - - - - - - - - ** ** Julian Date to Gregorian year, month, day, and fraction of a day. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** dj1,dj2 double Julian Date (Notes 1, 2) ** ** Returned (arguments): ** iy int year ** im int month ** id int day ** fd double fraction of day ** ** Returned (function value): ** int status: ** 0 = OK ** -1 = unacceptable date (Note 3) ** ** Notes: ** ** 1) The earliest valid date is -68569.5 (-4900 March 1). The ** largest value accepted is 1e9. ** ** 2) The Julian Date is apportioned in any convenient way between ** the arguments dj1 and dj2. For example, JD=2450123.7 could ** be expressed in any of these ways, among others: ** ** dj1 dj2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** 3) In early eras the conversion is from the "proleptic Gregorian ** calendar"; no account is taken of the date(s) of adoption of ** the Gregorian calendar, nor is the AD/BC numbering convention ** observed. ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 12.92 (p604). ** */ int iauJdcalf(int ndp, double dj1, double dj2, int iymdf[4]) /* ** - - - - - - - - - - ** i a u J d c a l f ** - - - - - - - - - - ** ** Julian Date to Gregorian Calendar, expressed in a form convenient ** for formatting messages: rounded to a specified precision. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** ndp int number of decimal places of days in fraction ** dj1,dj2 double dj1+dj2 = Julian Date (Note 1) ** ** Returned: ** iymdf int[4] year, month, day, fraction in Gregorian ** calendar ** ** Returned (function value): ** int status: ** -1 = date out of range ** 0 = OK ** +1 = NDP not 0-9 (interpreted as 0) ** ** Notes: ** ** 1) The Julian Date is apportioned in any convenient way between ** the arguments dj1 and dj2. For example, JD=2450123.7 could ** be expressed in any of these ways, among others: ** ** dj1 dj2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** 2) In early eras the conversion is from the "Proleptic Gregorian ** Calendar"; no account is taken of the date(s) of adoption of ** the Gregorian Calendar, nor is the AD/BC numbering convention ** observed. ** ** 3) Refer to the function iauJd2cal. ** ** 4) NDP should be 4 or less if internal overflows are to be ** avoided on machines which use 16-bit integers. ** ** Called: ** iauJd2cal JD to Gregorian calendar ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 12.92 (p604). ** */ void iauLd(double bm, double p[3], double q[3], double e[3], double em, double dlim, double p1[3]) /* ** - - - - - - ** i a u L d ** - - - - - - ** ** Apply light deflection by a solar-system body, as part of ** transforming coordinate direction into natural direction. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** bm double mass of the gravitating body (solar masses) ** p double[3] direction from observer to source (unit vector) ** q double[3] direction from body to source (unit vector) ** e double[3] direction from body to observer (unit vector) ** em double distance from body to observer (au) ** dlim double deflection limiter (Note 4) ** ** Returned: ** p1 double[3] observer to deflected source (unit vector) ** ** Notes: ** ** 1) The algorithm is based on Expr. (70) in Klioner (2003) and ** Expr. (7.63) in the Explanatory Supplement (Urban & Seidelmann ** 2013), with some rearrangement to minimize the effects of machine ** precision. ** ** 2) The mass parameter bm can, as required, be adjusted in order to ** allow for such effects as quadrupole field. ** ** 3) The barycentric position of the deflecting body should ideally ** correspond to the time of closest approach of the light ray to ** the body. ** ** 4) The deflection limiter parameter dlim is phi^2/2, where phi is ** the angular separation (in radians) between source and body at ** which limiting is applied. As phi shrinks below the chosen ** threshold, the deflection is artificially reduced, reaching zero ** for phi = 0. ** ** 5) The returned vector p1 is not normalized, but the consequential ** departure from unit magnitude is always negligible. ** ** 6) The arguments p and p1 can be the same array. ** ** 7) To accumulate total light deflection taking into account the ** contributions from several bodies, call the present function for ** each body in succession, in decreasing order of distance from the ** observer. ** ** 8) For efficiency, validation is omitted. The supplied vectors must ** be of unit magnitude, and the deflection limiter non-zero and ** positive. ** ** References: ** ** Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to ** the Astronomical Almanac, 3rd ed., University Science Books ** (2013). ** ** Klioner, Sergei A., "A practical relativistic model for micro- ** arcsecond astrometry in space", Astr. J. 125, 1580-1597 (2003). ** ** Called: ** iauPdp scalar product of two p-vectors ** iauPxp vector product of two p-vectors ** */ void iauLdn(int n, iauLDBODY b[], double ob[3], double sc[3], double sn[3]) /*+ ** - - - - - - - ** i a u L d n ** - - - - - - - ** ** For a star, apply light deflection by multiple solar-system bodies, ** as part of transforming coordinate direction into natural direction. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** n int number of bodies (note 1) ** b iauLDBODY[n] data for each of the n bodies (Notes 1,2): ** bm double mass of the body (solar masses, Note 3) ** dl double deflection limiter (Note 4) ** pv [2][3] barycentric PV of the body (au, au/day) ** ob double[3] barycentric position of the observer (au) ** sc double[3] observer to star coord direction (unit vector) ** ** Returned: ** sn double[3] observer to deflected star (unit vector) ** ** 1) The array b contains n entries, one for each body to be ** considered. If n = 0, no gravitational light deflection will be ** applied, not even for the Sun. ** ** 2) The array b should include an entry for the Sun as well as for ** any planet or other body to be taken into account. The entries ** should be in the order in which the light passes the body. ** ** 3) In the entry in the b array for body i, the mass parameter ** b[i].bm can, as required, be adjusted in order to allow for such ** effects as quadrupole field. ** ** 4) The deflection limiter parameter b[i].dl is phi^2/2, where phi is ** the angular separation (in radians) between star and body at ** which limiting is applied. As phi shrinks below the chosen ** threshold, the deflection is artificially reduced, reaching zero ** for phi = 0. Example values suitable for a terrestrial ** observer, together with masses, are as follows: ** ** body i b[i].bm b[i].dl ** ** Sun 1.0 6e-6 ** Jupiter 0.00095435 3e-9 ** Saturn 0.00028574 3e-10 ** ** 5) For cases where the starlight passes the body before reaching the ** observer, the body is placed back along its barycentric track by ** the light time from that point to the observer. For cases where ** the body is "behind" the observer no such shift is applied. If ** a different treatment is preferred, the user has the option of ** instead using the iauLd function. Similarly, iauLd can be used ** for cases where the source is nearby, not a star. ** ** 6) The returned vector sn is not normalized, but the consequential ** departure from unit magnitude is always negligible. ** ** 7) The arguments sc and sn can be the same array. ** ** 8) For efficiency, validation is omitted. The supplied masses must ** be greater than zero, the position and velocity vectors must be ** right, and the deflection limiter greater than zero. ** ** Reference: ** ** Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to ** the Astronomical Almanac, 3rd ed., University Science Books ** (2013), Section 7.2.4. ** ** Called: ** iauCp copy p-vector ** iauPdp scalar product of two p-vectors ** iauPmp p-vector minus p-vector ** iauPpsp p-vector plus scaled p-vector ** iauPn decompose p-vector into modulus and direction ** iauLd light deflection by a solar-system body ** */ void iauLdsun(double p[3], double e[3], double em, double p1[3]) /* ** - - - - - - - - - ** i a u L d s u n ** - - - - - - - - - ** ** Deflection of starlight by the Sun. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** p double[3] direction from observer to star (unit vector) ** e double[3] direction from Sun to observer (unit vector) ** em double distance from Sun to observer (au) ** ** Returned: ** p1 double[3] observer to deflected star (unit vector) ** ** Notes: ** ** 1) The source is presumed to be sufficiently distant that its ** directions seen from the Sun and the observer are essentially ** the same. ** ** 2) The deflection is restrained when the angle between the star and ** the center of the Sun is less than about 9 arcsec, falling to ** zero for zero separation. (The chosen threshold is within the ** solar limb for all solar-system applications.) ** ** 3) The arguments p and p1 can be the same array. ** ** Called: ** iauLd light deflection by a solar-system body ** */ void iauNum00a(double date1, double date2, double rmatn[3][3]) /* ** - - - - - - - - - - ** i a u N u m 0 0 a ** - - - - - - - - - - ** ** Form the matrix of nutation for a given date, IAU 2000A model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rmatn double[3][3] nutation matrix ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(true) = rmatn * V(mean), where ** the p-vector V(true) is with respect to the true equatorial triad ** of date and the p-vector V(mean) is with respect to the mean ** equatorial triad of date. ** ** 3) A faster, but slightly less accurate result (about 1 mas), can be ** obtained by using instead the iauNum00b function. ** ** Called: ** iauPn00a bias/precession/nutation, IAU 2000A ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 3.222-3 (p114). ** */ void iauNum00b(double date1, double date2, double rmatn[3][3]) /* ** - - - - - - - - - - ** i a u N u m 0 0 b ** - - - - - - - - - - ** ** Form the matrix of nutation for a given date, IAU 2000B model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rmatn double[3][3] nutation matrix ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(true) = rmatn * V(mean), where ** the p-vector V(true) is with respect to the true equatorial triad ** of date and the p-vector V(mean) is with respect to the mean ** equatorial triad of date. ** ** 3) The present function is faster, but slightly less accurate (about ** 1 mas), than the iauNum00a function. ** ** Called: ** iauPn00b bias/precession/nutation, IAU 2000B ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 3.222-3 (p114). ** */ void iauNum06a(double date1, double date2, double rmatn[3][3]) /* ** - - - - - - - - - - ** i a u N u m 0 6 a ** - - - - - - - - - - ** ** Form the matrix of nutation for a given date, IAU 2006/2000A model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rmatn double[3][3] nutation matrix ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(true) = rmatn * V(mean), where ** the p-vector V(true) is with respect to the true equatorial triad ** of date and the p-vector V(mean) is with respect to the mean ** equatorial triad of date. ** ** Called: ** iauObl06 mean obliquity, IAU 2006 ** iauNut06a nutation, IAU 2006/2000A ** iauNumat form nutation matrix ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 3.222-3 (p114). ** */ void iauNumat(double epsa, double dpsi, double deps, double rmatn[3][3]) /* ** - - - - - - - - - ** i a u N u m a t ** - - - - - - - - - ** ** Form the matrix of nutation. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** epsa double mean obliquity of date (Note 1) ** dpsi,deps double nutation (Note 2) ** ** Returned: ** rmatn double[3][3] nutation matrix (Note 3) ** ** Notes: ** ** 1) The supplied mean obliquity epsa, must be consistent with the ** precession-nutation models from which dpsi and deps were obtained. ** ** 2) The caller is responsible for providing the nutation components; ** they are in longitude and obliquity, in radians and are with ** respect to the equinox and ecliptic of date. ** ** 3) The matrix operates in the sense V(true) = rmatn * V(mean), ** where the p-vector V(true) is with respect to the true ** equatorial triad of date and the p-vector V(mean) is with ** respect to the mean equatorial triad of date. ** ** Called: ** iauIr initialize r-matrix to identity ** iauRx rotate around X-axis ** iauRz rotate around Z-axis ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 3.222-3 (p114). ** */ void iauNut00a(double date1, double date2, double *dpsi, double *deps) /* ** - - - - - - - - - - ** i a u N u t 0 0 a ** - - - - - - - - - - ** ** Nutation, IAU 2000A model (MHB2000 luni-solar and planetary nutation ** with free core nutation omitted). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** dpsi,deps double nutation, luni-solar + planetary (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The nutation components in longitude and obliquity are in radians ** and with respect to the equinox and ecliptic of date. The ** obliquity at J2000.0 is assumed to be the Lieske et al. (1977) ** value of 84381.448 arcsec. ** ** Both the luni-solar and planetary nutations are included. The ** latter are due to direct planetary nutations and the ** perturbations of the lunar and terrestrial orbits. ** ** 3) The function computes the MHB2000 nutation series with the ** associated corrections for planetary nutations. It is an ** implementation of the nutation part of the IAU 2000A precession- ** nutation model, formally adopted by the IAU General Assembly in ** 2000, namely MHB2000 (Mathews et al. 2002), but with the free ** core nutation (FCN - see Note 4) omitted. ** ** 4) The full MHB2000 model also contains contributions to the ** nutations in longitude and obliquity due to the free-excitation ** of the free-core-nutation during the period 1979-2000. These FCN ** terms, which are time-dependent and unpredictable, are NOT ** included in the present function and, if required, must be ** independently computed. With the FCN corrections included, the ** present function delivers a pole which is at current epochs ** accurate to a few hundred microarcseconds. The omission of FCN ** introduces further errors of about that size. ** ** 5) The present function provides classical nutation. The MHB2000 ** algorithm, from which it is adapted, deals also with (i) the ** offsets between the GCRS and mean poles and (ii) the adjustments ** in longitude and obliquity due to the changed precession rates. ** These additional functions, namely frame bias and precession ** adjustments, are supported by the SOFA functions iauBi00 and ** iauPr00. ** ** 6) The MHB2000 algorithm also provides "total" nutations, comprising ** the arithmetic sum of the frame bias, precession adjustments, ** luni-solar nutation and planetary nutation. These total ** nutations can be used in combination with an existing IAU 1976 ** precession implementation, such as iauPmat76, to deliver GCRS- ** to-true predictions of sub-mas accuracy at current dates. ** However, there are three shortcomings in the MHB2000 model that ** must be taken into account if more accurate or definitive results ** are required (see Wallace 2002): ** ** (i) The MHB2000 total nutations are simply arithmetic sums, ** yet in reality the various components are successive Euler ** rotations. This slight lack of rigor leads to cross terms ** that exceed 1 mas after a century. The rigorous procedure ** is to form the GCRS-to-true rotation matrix by applying the ** bias, precession and nutation in that order. ** ** (ii) Although the precession adjustments are stated to be with ** respect to Lieske et al. (1977), the MHB2000 model does ** not specify which set of Euler angles are to be used and ** how the adjustments are to be applied. The most literal ** and straightforward procedure is to adopt the 4-rotation ** epsilon_0, psi_A, omega_A, xi_A option, and to add DPSIPR ** to psi_A and DEPSPR to both omega_A and eps_A. ** ** (iii) The MHB2000 model predates the determination by Chapront ** et al. (2002) of a 14.6 mas displacement between the ** J2000.0 mean equinox and the origin of the ICRS frame. It ** should, however, be noted that neglecting this displacement ** when calculating star coordinates does not lead to a ** 14.6 mas change in right ascension, only a small second- ** order distortion in the pattern of the precession-nutation ** effect. ** ** For these reasons, the SOFA functions do not generate the "total ** nutations" directly, though they can of course easily be ** generated by calling iauBi00, iauPr00 and the present function ** and adding the results. ** ** 7) The MHB2000 model contains 41 instances where the same frequency ** appears multiple times, of which 38 are duplicates and three are ** triplicates. To keep the present code close to the original MHB ** algorithm, this small inefficiency has not been corrected. ** ** Called: ** iauFal03 mean anomaly of the Moon ** iauFaf03 mean argument of the latitude of the Moon ** iauFaom03 mean longitude of the Moon's ascending node ** iauFame03 mean longitude of Mercury ** iauFave03 mean longitude of Venus ** iauFae03 mean longitude of Earth ** iauFama03 mean longitude of Mars ** iauFaju03 mean longitude of Jupiter ** iauFasa03 mean longitude of Saturn ** iauFaur03 mean longitude of Uranus ** iauFapa03 general accumulated precession in longitude ** ** References: ** ** Chapront, J., Chapront-Touze, M. & Francou, G. 2002, ** Astron.Astrophys. 387, 700 ** ** Lieske, J.H., Lederle, T., Fricke, W. & Morando, B. 1977, ** Astron.Astrophys. 58, 1-16 ** ** Mathews, P.M., Herring, T.A., Buffet, B.A. 2002, J.Geophys.Res. ** 107, B4. The MHB_2000 code itself was obtained on 9th September ** 2002 from ftp//maia.usno.navy.mil/conv2000/chapter5/IAU2000A. ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, ** Astron.Astrophys.Supp.Ser. 135, 111 ** ** Wallace, P.T., "Software for Implementing the IAU 2000 ** Resolutions", in IERS Workshop 5.1 (2002) ** */ void iauNut00b(double date1, double date2, double *dpsi, double *deps) /* ** - - - - - - - - - - ** i a u N u t 0 0 b ** - - - - - - - - - - ** ** Nutation, IAU 2000B model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** dpsi,deps double nutation, luni-solar + planetary (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The nutation components in longitude and obliquity are in radians ** and with respect to the equinox and ecliptic of date. The ** obliquity at J2000.0 is assumed to be the Lieske et al. (1977) ** value of 84381.448 arcsec. (The errors that result from using ** this function with the IAU 2006 value of 84381.406 arcsec can be ** neglected.) ** ** The nutation model consists only of luni-solar terms, but ** includes also a fixed offset which compensates for certain long- ** period planetary terms (Note 7). ** ** 3) This function is an implementation of the IAU 2000B abridged ** nutation model formally adopted by the IAU General Assembly in ** 2000. The function computes the MHB_2000_SHORT luni-solar ** nutation series (Luzum 2001), but without the associated ** corrections for the precession rate adjustments and the offset ** between the GCRS and J2000.0 mean poles. ** ** 4) The full IAU 2000A (MHB2000) nutation model contains nearly 1400 ** terms. The IAU 2000B model (McCarthy & Luzum 2003) contains only ** 77 terms, plus additional simplifications, yet still delivers ** results of 1 mas accuracy at present epochs. This combination of ** accuracy and size makes the IAU 2000B abridged nutation model ** suitable for most practical applications. ** ** The function delivers a pole accurate to 1 mas from 1900 to 2100 ** (usually better than 1 mas, very occasionally just outside ** 1 mas). The full IAU 2000A model, which is implemented in the ** function iauNut00a (q.v.), delivers considerably greater accuracy ** at current dates; however, to realize this improved accuracy, ** corrections for the essentially unpredictable free-core-nutation ** (FCN) must also be included. ** ** 5) The present function provides classical nutation. The ** MHB_2000_SHORT algorithm, from which it is adapted, deals also ** with (i) the offsets between the GCRS and mean poles and (ii) the ** adjustments in longitude and obliquity due to the changed ** precession rates. These additional functions, namely frame bias ** and precession adjustments, are supported by the SOFA functions ** iauBi00 and iauPr00. ** ** 6) The MHB_2000_SHORT algorithm also provides "total" nutations, ** comprising the arithmetic sum of the frame bias, precession ** adjustments, and nutation (luni-solar + planetary). These total ** nutations can be used in combination with an existing IAU 1976 ** precession implementation, such as iauPmat76, to deliver GCRS- ** to-true predictions of mas accuracy at current epochs. However, ** for symmetry with the iauNut00a function (q.v. for the reasons), ** the SOFA functions do not generate the "total nutations" ** directly. Should they be required, they could of course easily ** be generated by calling iauBi00, iauPr00 and the present function ** and adding the results. ** ** 7) The IAU 2000B model includes "planetary bias" terms that are ** fixed in size but compensate for long-period nutations. The ** amplitudes quoted in McCarthy & Luzum (2003), namely ** Dpsi = -1.5835 mas and Depsilon = +1.6339 mas, are optimized for ** the "total nutations" method described in Note 6. The Luzum ** (2001) values used in this SOFA implementation, namely -0.135 mas ** and +0.388 mas, are optimized for the "rigorous" method, where ** frame bias, precession and nutation are applied separately and in ** that order. During the interval 1995-2050, the SOFA ** implementation delivers a maximum error of 1.001 mas (not ** including FCN). ** ** References: ** ** Lieske, J.H., Lederle, T., Fricke, W., Morando, B., "Expressions ** for the precession quantities based upon the IAU /1976/ system of ** astronomical constants", Astron.Astrophys. 58, 1-2, 1-16. (1977) ** ** Luzum, B., private communication, 2001 (Fortran code ** MHB_2000_SHORT) ** ** McCarthy, D.D. & Luzum, B.J., "An abridged model of the ** precession-nutation of the celestial pole", Cel.Mech.Dyn.Astron. ** 85, 37-49 (2003) ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J., Astron.Astrophys. 282, 663-683 (1994) ** */ void iauNut06a(double date1, double date2, double *dpsi, double *deps) /* ** - - - - - - - - - - ** i a u N u t 0 6 a ** - - - - - - - - - - ** ** IAU 2000A nutation with adjustments to match the IAU 2006 ** precession. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** dpsi,deps double nutation, luni-solar + planetary (Note 2) ** ** Status: canonical model. ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The nutation components in longitude and obliquity are in radians ** and with respect to the mean equinox and ecliptic of date, ** IAU 2006 precession model (Hilton et al. 2006, Capitaine et al. ** 2005). ** ** 3) The function first computes the IAU 2000A nutation, then applies ** adjustments for (i) the consequences of the change in obliquity ** from the IAU 1980 ecliptic to the IAU 2006 ecliptic and (ii) the ** secular variation in the Earth's dynamical form factor J2. ** ** 4) The present function provides classical nutation, complementing ** the IAU 2000 frame bias and IAU 2006 precession. It delivers a ** pole which is at current epochs accurate to a few tens of ** microarcseconds, apart from the free core nutation. ** ** Called: ** iauNut00a nutation, IAU 2000A ** ** References: ** ** Chapront, J., Chapront-Touze, M. & Francou, G. 2002, ** Astron.Astrophys. 387, 700 ** ** Lieske, J.H., Lederle, T., Fricke, W. & Morando, B. 1977, ** Astron.Astrophys. 58, 1-16 ** ** Mathews, P.M., Herring, T.A., Buffet, B.A. 2002, J.Geophys.Res. ** 107, B4. The MHB_2000 code itself was obtained on 9th September ** 2002 from ftp//maia.usno.navy.mil/conv2000/chapter5/IAU2000A. ** ** Simon, J.-L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G., Laskar, J. 1994, Astron.Astrophys. 282, 663-683 ** ** Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M. 1999, ** Astron.Astrophys.Supp.Ser. 135, 111 ** ** Wallace, P.T., "Software for Implementing the IAU 2000 ** Resolutions", in IERS Workshop 5.1 (2002) ** */ void iauNut80(double date1, double date2, double *dpsi, double *deps) /* ** - - - - - - - - - ** i a u N u t 8 0 ** - - - - - - - - - ** ** Nutation, IAU 1980 model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** dpsi double nutation in longitude (radians) ** deps double nutation in obliquity (radians) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The nutation components are with respect to the ecliptic of ** date. ** ** Called: ** iauAnpm normalize angle into range +/- pi ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 3.222 (p111). ** */ void iauNutm80(double date1, double date2, double rmatn[3][3]) /* ** - - - - - - - - - - ** i a u N u t m 8 0 ** - - - - - - - - - - ** ** Form the matrix of nutation for a given date, IAU 1980 model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TDB date (Note 1) ** ** Returned: ** rmatn double[3][3] nutation matrix ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(true) = rmatn * V(mean), ** where the p-vector V(true) is with respect to the true ** equatorial triad of date and the p-vector V(mean) is with ** respect to the mean equatorial triad of date. ** ** Called: ** iauNut80 nutation, IAU 1980 ** iauObl80 mean obliquity, IAU 1980 ** iauNumat form nutation matrix ** */ double iauObl06(double date1, double date2) /* ** - - - - - - - - - ** i a u O b l 0 6 ** - - - - - - - - - ** ** Mean obliquity of the ecliptic, IAU 2006 precession model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double obliquity of the ecliptic (radians, Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The result is the angle between the ecliptic and mean equator of ** date date1+date2. ** ** Reference: ** ** Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351 ** */ double iauObl80(double date1, double date2) /* ** - - - - - - - - - ** i a u O b l 8 0 ** - - - - - - - - - ** ** Mean obliquity of the ecliptic, IAU 1980 model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double obliquity of the ecliptic (radians, Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The result is the angle between the ecliptic and mean equator of ** date date1+date2. ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Expression 3.222-1 (p114). ** */ void iauP06e(double date1, double date2, double *eps0, double *psia, double *oma, double *bpa, double *bqa, double *pia, double *bpia, double *epsa, double *chia, double *za, double *zetaa, double *thetaa, double *pa, double *gam, double *phi, double *psi) /* ** - - - - - - - - ** i a u P 0 6 e ** - - - - - - - - ** ** Precession angles, IAU 2006, equinox based. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical models. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (see Note 2): ** eps0 double epsilon_0 ** psia double psi_A ** oma double omega_A ** bpa double P_A ** bqa double Q_A ** pia double pi_A ** bpia double Pi_A ** epsa double obliquity epsilon_A ** chia double chi_A ** za double z_A ** zetaa double zeta_A ** thetaa double theta_A ** pa double p_A ** gam double F-W angle gamma_J2000 ** phi double F-W angle phi_J2000 ** psi double F-W angle psi_J2000 ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) This function returns the set of equinox based angles for the ** Capitaine et al. "P03" precession theory, adopted by the IAU in ** 2006. The angles are set out in Table 1 of Hilton et al. (2006): ** ** eps0 epsilon_0 obliquity at J2000.0 ** psia psi_A luni-solar precession ** oma omega_A inclination of equator wrt J2000.0 ecliptic ** bpa P_A ecliptic pole x, J2000.0 ecliptic triad ** bqa Q_A ecliptic pole -y, J2000.0 ecliptic triad ** pia pi_A angle between moving and J2000.0 ecliptics ** bpia Pi_A longitude of ascending node of the ecliptic ** epsa epsilon_A obliquity of the ecliptic ** chia chi_A planetary precession ** za z_A equatorial precession: -3rd 323 Euler angle ** zetaa zeta_A equatorial precession: -1st 323 Euler angle ** thetaa theta_A equatorial precession: 2nd 323 Euler angle ** pa p_A general precession ** gam gamma_J2000 J2000.0 RA difference of ecliptic poles ** phi phi_J2000 J2000.0 codeclination of ecliptic pole ** psi psi_J2000 longitude difference of equator poles, J2000.0 ** ** The returned values are all radians. ** ** 3) Hilton et al. (2006) Table 1 also contains angles that depend on ** models distinct from the P03 precession theory itself, namely the ** IAU 2000A frame bias and nutation. The quoted polynomials are ** used in other SOFA functions: ** ** . iauXy06 contains the polynomial parts of the X and Y series. ** ** . iauS06 contains the polynomial part of the s+XY/2 series. ** ** . iauPfw06 implements the series for the Fukushima-Williams ** angles that are with respect to the GCRS pole (i.e. the variants ** that include frame bias). ** ** 4) The IAU resolution stipulated that the choice of parameterization ** was left to the user, and so an IAU compliant precession ** implementation can be constructed using various combinations of ** the angles returned by the present function. ** ** 5) The parameterization used by SOFA is the version of the Fukushima- ** Williams angles that refers directly to the GCRS pole. These ** angles may be calculated by calling the function iauPfw06. SOFA ** also supports the direct computation of the CIP GCRS X,Y by ** series, available by calling iauXy06. ** ** 6) The agreement between the different parameterizations is at the ** 1 microarcsecond level in the present era. ** ** 7) When constructing a precession formulation that refers to the GCRS ** pole rather than the dynamical pole, it may (depending on the ** choice of angles) be necessary to introduce the frame bias ** explicitly. ** ** 8) It is permissible to re-use the same variable in the returned ** arguments. The quantities are stored in the stated order. ** ** Reference: ** ** Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351 ** ** Called: ** iauObl06 mean obliquity, IAU 2006 ** */ void iauP2pv(double p[3], double pv[2][3]) /* ** - - - - - - - - ** i a u P 2 p v ** - - - - - - - - ** ** Extend a p-vector to a pv-vector by appending a zero velocity. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** p double[3] p-vector ** ** Returned: ** pv double[2][3] pv-vector ** ** Called: ** iauCp copy p-vector ** iauZp zero p-vector ** */ void iauP2s(double p[3], double *theta, double *phi, double *r) /* ** - - - - - - - ** i a u P 2 s ** - - - - - - - ** ** P-vector to spherical polar coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** p double[3] p-vector ** ** Returned: ** theta double longitude angle (radians) ** phi double latitude angle (radians) ** r double radial distance ** ** Notes: ** ** 1) If P is null, zero theta, phi and r are returned. ** ** 2) At either pole, zero theta is returned. ** ** Called: ** iauC2s p-vector to spherical ** iauPm modulus of p-vector ** */ double iauPap(double a[3], double b[3]) /* ** - - - - - - - ** i a u P a p ** - - - - - - - ** ** Position-angle from two p-vectors. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[3] direction of reference point ** b double[3] direction of point whose PA is required ** ** Returned (function value): ** double position angle of b with respect to a (radians) ** ** Notes: ** ** 1) The result is the position angle, in radians, of direction b with ** respect to direction a. It is in the range -pi to +pi. The ** sense is such that if b is a small distance "north" of a the ** position angle is approximately zero, and if b is a small ** distance "east" of a the position angle is approximately +pi/2. ** ** 2) The vectors a and b need not be of unit length. ** ** 3) Zero is returned if the two directions are the same or if either ** vector is null. ** ** 4) If vector a is at a pole, the result is ill-defined. ** ** Called: ** iauPn decompose p-vector into modulus and direction ** iauPm modulus of p-vector ** iauPxp vector product of two p-vectors ** iauPmp p-vector minus p-vector ** iauPdp scalar product of two p-vectors ** */ double iauPas(double al, double ap, double bl, double bp) /* ** - - - - - - - ** i a u P a s ** - - - - - - - ** ** Position-angle from spherical coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** al double longitude of point A (e.g. RA) in radians ** ap double latitude of point A (e.g. Dec) in radians ** bl double longitude of point B ** bp double latitude of point B ** ** Returned (function value): ** double position angle of B with respect to A ** ** Notes: ** ** 1) The result is the bearing (position angle), in radians, of point ** B with respect to point A. It is in the range -pi to +pi. The ** sense is such that if B is a small distance "east" of point A, ** the bearing is approximately +pi/2. ** ** 2) Zero is returned if the two points are coincident. ** */ void iauPb06(double date1, double date2, double *bzeta, double *bz, double *btheta) /* ** - - - - - - - - ** i a u P b 0 6 ** - - - - - - - - ** ** This function forms three Euler angles which implement general ** precession from epoch J2000.0, using the IAU 2006 model. Frame ** bias (the offset between ICRS and mean J2000.0) is included. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** bzeta double 1st rotation: radians cw around z ** bz double 3rd rotation: radians cw around z ** btheta double 2nd rotation: radians ccw around y ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The traditional accumulated precession angles zeta_A, z_A, ** theta_A cannot be obtained in the usual way, namely through ** polynomial expressions, because of the frame bias. The latter ** means that two of the angles undergo rapid changes near this ** date. They are instead the results of decomposing the ** precession-bias matrix obtained by using the Fukushima-Williams ** method, which does not suffer from the problem. The ** decomposition returns values which can be used in the ** conventional formulation and which include frame bias. ** ** 3) The three angles are returned in the conventional order, which ** is not the same as the order of the corresponding Euler ** rotations. The precession-bias matrix is ** R_3(-z) x R_2(+theta) x R_3(-zeta). ** ** 4) Should zeta_A, z_A, theta_A angles be required that do not ** contain frame bias, they are available by calling the SOFA ** function iauP06e. ** ** Called: ** iauPmat06 PB matrix, IAU 2006 ** iauRz rotate around Z-axis ** */ double iauPdp(double a[3], double b[3]) /* ** - - - - - - - ** i a u P d p ** - - - - - - - ** ** p-vector inner (=scalar=dot) product. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[3] first p-vector ** b double[3] second p-vector ** ** Returned (function value): ** double a . b ** */ void iauPfw06(double date1, double date2, double *gamb, double *phib, double *psib, double *epsa) /* ** - - - - - - - - - ** i a u P f w 0 6 ** - - - - - - - - - ** ** Precession angles, IAU 2006 (Fukushima-Williams 4-angle formulation). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** gamb double F-W angle gamma_bar (radians) ** phib double F-W angle phi_bar (radians) ** psib double F-W angle psi_bar (radians) ** epsa double F-W angle epsilon_A (radians) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) Naming the following points: ** ** e = J2000.0 ecliptic pole, ** p = GCRS pole, ** E = mean ecliptic pole of date, ** and P = mean pole of date, ** ** the four Fukushima-Williams angles are as follows: ** ** gamb = gamma_bar = epE ** phib = phi_bar = pE ** psib = psi_bar = pEP ** epsa = epsilon_A = EP ** ** 3) The matrix representing the combined effects of frame bias and ** precession is: ** ** PxB = R_1(-epsa).R_3(-psib).R_1(phib).R_3(gamb) ** ** 4) The matrix representing the combined effects of frame bias, ** precession and nutation is simply: ** ** NxPxB = R_1(-epsa-dE).R_3(-psib-dP).R_1(phib).R_3(gamb) ** ** where dP and dE are the nutation components with respect to the ** ecliptic of date. ** ** Reference: ** ** Hilton, J. et al., 2006, Celest.Mech.Dyn.Astron. 94, 351 ** ** Called: ** iauObl06 mean obliquity, IAU 2006 ** */ int iauPlan94(double date1, double date2, int np, double pv[2][3]) /* ** - - - - - - - - - - ** i a u P l a n 9 4 ** - - - - - - - - - - ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Approximate heliocentric position and velocity of a nominated major ** planet: Mercury, Venus, EMB, Mars, Jupiter, Saturn, Uranus or ** Neptune (but not the Earth itself). ** ** Given: ** date1 double TDB date part A (Note 1) ** date2 double TDB date part B (Note 1) ** np int planet (1=Mercury, 2=Venus, 3=EMB, 4=Mars, ** 5=Jupiter, 6=Saturn, 7=Uranus, 8=Neptune) ** ** Returned (argument): ** pv double[2][3] planet p,v (heliocentric, J2000.0, AU,AU/d) ** ** Returned (function value): ** int status: -1 = illegal NP (outside 1-8) ** 0 = OK ** +1 = warning: year outside 1000-3000 ** +2 = warning: failed to converge ** ** Notes: ** ** 1) The date date1+date2 is in the TDB time scale (in practice TT can ** be used) and is a Julian Date, apportioned in any convenient way ** between the two arguments. For example, JD(TDB)=2450123.7 could ** be expressed in any of these ways, among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. The limited ** accuracy of the present algorithm is such that any of the methods ** is satisfactory. ** ** 2) If an np value outside the range 1-8 is supplied, an error status ** (function value -1) is returned and the pv vector set to zeroes. ** ** 3) For np=3 the result is for the Earth-Moon Barycenter. To obtain ** the heliocentric position and velocity of the Earth, use instead ** the SOFA function iauEpv00. ** ** 4) On successful return, the array pv contains the following: ** ** pv[0][0] x } ** pv[0][1] y } heliocentric position, AU ** pv[0][2] z } ** ** pv[1][0] xdot } ** pv[1][1] ydot } heliocentric velocity, AU/d ** pv[1][2] zdot } ** ** The reference frame is equatorial and is with respect to the ** mean equator and equinox of epoch J2000.0. ** ** 5) The algorithm is due to J.L. Simon, P. Bretagnon, J. Chapront, ** M. Chapront-Touze, G. Francou and J. Laskar (Bureau des ** Longitudes, Paris, France). From comparisons with JPL ** ephemeris DE102, they quote the following maximum errors ** over the interval 1800-2050: ** ** L (arcsec) B (arcsec) R (km) ** ** Mercury 4 1 300 ** Venus 5 1 800 ** EMB 6 1 1000 ** Mars 17 1 7700 ** Jupiter 71 5 76000 ** Saturn 81 13 267000 ** Uranus 86 7 712000 ** Neptune 11 1 253000 ** ** Over the interval 1000-3000, they report that the accuracy is no ** worse than 1.5 times that over 1800-2050. Outside 1000-3000 the ** accuracy declines. ** ** Comparisons of the present function with the JPL DE200 ephemeris ** give the following RMS errors over the interval 1960-2025: ** ** position (km) velocity (m/s) ** ** Mercury 334 0.437 ** Venus 1060 0.855 ** EMB 2010 0.815 ** Mars 7690 1.98 ** Jupiter 71700 7.70 ** Saturn 199000 19.4 ** Uranus 564000 16.4 ** Neptune 158000 14.4 ** ** Comparisons against DE200 over the interval 1800-2100 gave the ** following maximum absolute differences. (The results using ** DE406 were essentially the same.) ** ** L (arcsec) B (arcsec) R (km) Rdot (m/s) ** ** Mercury 7 1 500 0.7 ** Venus 7 1 1100 0.9 ** EMB 9 1 1300 1.0 ** Mars 26 1 9000 2.5 ** Jupiter 78 6 82000 8.2 ** Saturn 87 14 263000 24.6 ** Uranus 86 7 661000 27.4 ** Neptune 11 2 248000 21.4 ** ** 6) The present SOFA re-implementation of the original Simon et al. ** Fortran code differs from the original in the following respects: ** ** * C instead of Fortran. ** ** * The date is supplied in two parts. ** ** * The result is returned only in equatorial Cartesian form; ** the ecliptic longitude, latitude and radius vector are not ** returned. ** ** * The result is in the J2000.0 equatorial frame, not ecliptic. ** ** * More is done in-line: there are fewer calls to subroutines. ** ** * Different error/warning status values are used. ** ** * A different Kepler's-equation-solver is used (avoiding ** use of double precision complex). ** ** * Polynomials in t are nested to minimize rounding errors. ** ** * Explicit double constants are used to avoid mixed-mode ** expressions. ** ** None of the above changes affects the result significantly. ** ** 7) The returned status indicates the most serious condition ** encountered during execution of the function. Illegal np is ** considered the most serious, overriding failure to converge, ** which in turn takes precedence over the remote date warning. ** ** Called: ** iauAnp normalize angle into range 0 to 2pi ** ** Reference: Simon, J.L, Bretagnon, P., Chapront, J., ** Chapront-Touze, M., Francou, G., and Laskar, J., ** Astron. Astrophys. 282, 663 (1994). ** */ double iauPm(double p[3]) /* ** - - - - - - ** i a u P m ** - - - - - - ** ** Modulus of p-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** p double[3] p-vector ** ** Returned (function value): ** double modulus ** */ void iauPmat00(double date1, double date2, double rbp[3][3]) /* ** - - - - - - - - - - ** i a u P m a t 0 0 ** - - - - - - - - - - ** ** Precession matrix (including frame bias) from GCRS to a specified ** date, IAU 2000 model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rbp double[3][3] bias-precession matrix (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(date) = rbp * V(GCRS), where ** the p-vector V(GCRS) is with respect to the Geocentric Celestial ** Reference System (IAU, 2000) and the p-vector V(date) is with ** respect to the mean equatorial triad of the given date. ** ** Called: ** iauBp00 frame bias and precession matrices, IAU 2000 ** ** Reference: ** ** IAU: Trans. International Astronomical Union, Vol. XXIVB; Proc. ** 24th General Assembly, Manchester, UK. Resolutions B1.3, B1.6. ** (2000) ** */ void iauPmat06(double date1, double date2, double rbp[3][3]) /* ** - - - - - - - - - - ** i a u P m a t 0 6 ** - - - - - - - - - - ** ** Precession matrix (including frame bias) from GCRS to a specified ** date, IAU 2006 model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rbp double[3][3] bias-precession matrix (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(date) = rbp * V(GCRS), where ** the p-vector V(GCRS) is with respect to the Geocentric Celestial ** Reference System (IAU, 2000) and the p-vector V(date) is with ** respect to the mean equatorial triad of the given date. ** ** Called: ** iauPfw06 bias-precession F-W angles, IAU 2006 ** iauFw2m F-W angles to r-matrix ** ** References: ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 ** ** Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** */ void iauPmat76(double date1, double date2, double rmatp[3][3]) /* ** - - - - - - - - - - ** i a u P m a t 7 6 ** - - - - - - - - - - ** ** Precession matrix from J2000.0 to a specified date, IAU 1976 model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double ending date, TT (Note 1) ** ** Returned: ** rmatp double[3][3] precession matrix, J2000.0 -> date1+date2 ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(date) = RMATP * V(J2000), ** where the p-vector V(J2000) is with respect to the mean ** equatorial triad of epoch J2000.0 and the p-vector V(date) ** is with respect to the mean equatorial triad of the given ** date. ** ** 3) Though the matrix method itself is rigorous, the precession ** angles are expressed through canonical polynomials which are ** valid only for a limited time span. In addition, the IAU 1976 ** precession rate is known to be imperfect. The absolute accuracy ** of the present formulation is better than 0.1 arcsec from ** 1960AD to 2040AD, better than 1 arcsec from 1640AD to 2360AD, ** and remains below 3 arcsec for the whole of the period ** 500BC to 3000AD. The errors exceed 10 arcsec outside the ** range 1200BC to 3900AD, exceed 100 arcsec outside 4200BC to ** 5600AD and exceed 1000 arcsec outside 6800BC to 8200AD. ** ** Called: ** iauPrec76 accumulated precession angles, IAU 1976 ** iauIr initialize r-matrix to identity ** iauRz rotate around Z-axis ** iauRy rotate around Y-axis ** iauCr copy r-matrix ** ** References: ** ** Lieske, J.H., 1979, Astron.Astrophys. 73, 282. ** equations (6) & (7), p283. ** ** Kaplan,G.H., 1981. USNO circular no. 163, pA2. ** */ void iauPmp(double a[3], double b[3], double amb[3]) /* ** - - - - - - - ** i a u P m p ** - - - - - - - ** ** P-vector subtraction. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[3] first p-vector ** b double[3] second p-vector ** ** Returned: ** amb double[3] a - b ** ** Note: ** It is permissible to re-use the same array for any of the ** arguments. ** */ void iauPmpx(double rc, double dc, double pr, double pd, double px, double rv, double pmt, double pob[3], double pco[3]) /* ** - - - - - - - - ** i a u P m p x ** - - - - - - - - ** ** Proper motion and parallax. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** rc,dc double ICRS RA,Dec at catalog epoch (radians) ** pr double RA proper motion (radians/year; Note 1) ** pd double Dec proper motion (radians/year) ** px double parallax (arcsec) ** rv double radial velocity (km/s, +ve if receding) ** pmt double proper motion time interval (SSB, Julian years) ** pob double[3] SSB to observer vector (au) ** ** Returned: ** pco double[3] coordinate direction (BCRS unit vector) ** ** Notes: ** ** 1) The proper motion in RA is dRA/dt rather than cos(Dec)*dRA/dt. ** ** 2) The proper motion time interval is for when the starlight ** reaches the solar system barycenter. ** ** 3) To avoid the need for iteration, the Roemer effect (i.e. the ** small annual modulation of the proper motion coming from the ** changing light time) is applied approximately, using the ** direction of the star at the catalog epoch. ** ** References: ** ** 1984 Astronomical Almanac, pp B39-B41. ** ** Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to ** the Astronomical Almanac, 3rd ed., University Science Books ** (2013), Section 7.2. ** ** Called: ** iauPdp scalar product of two p-vectors ** iauPn decompose p-vector into modulus and direction ** */ int iauPmsafe(double ra1, double dec1, double pmr1, double pmd1, double px1, double rv1, double ep1a, double ep1b, double ep2a, double ep2b, double *ra2, double *dec2, double *pmr2, double *pmd2, double *px2, double *rv2) /* ** - - - - - - - - - - ** i a u P m s a f e ** - - - - - - - - - - ** ** Star proper motion: update star catalog data for space motion, with ** special handling to handle the zero parallax case. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** ra1 double right ascension (radians), before ** dec1 double declination (radians), before ** pmr1 double RA proper motion (radians/year), before ** pmd1 double Dec proper motion (radians/year), before ** px1 double parallax (arcseconds), before ** rv1 double radial velocity (km/s, +ve = receding), before ** ep1a double "before" epoch, part A (Note 1) ** ep1b double "before" epoch, part B (Note 1) ** ep2a double "after" epoch, part A (Note 1) ** ep2b double "after" epoch, part B (Note 1) ** ** Returned: ** ra2 double right ascension (radians), after ** dec2 double declination (radians), after ** pmr2 double RA proper motion (radians/year), after ** pmd2 double Dec proper motion (radians/year), after ** px2 double parallax (arcseconds), after ** rv2 double radial velocity (km/s, +ve = receding), after ** ** Returned (function value): ** int status: ** -1 = system error (should not occur) ** 0 = no warnings or errors ** 1 = distance overridden (Note 6) ** 2 = excessive velocity (Note 7) ** 4 = solution didn't converge (Note 8) ** else = binary logical OR of the above warnings ** ** Notes: ** ** 1) The starting and ending TDB epochs ep1a+ep1b and ep2a+ep2b are ** Julian Dates, apportioned in any convenient way between the two ** parts (A and B). For example, JD(TDB)=2450123.7 could be ** expressed in any of these ways, among others: ** ** epNa epNb ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** resolution. The MJD method and the date & time methods are both ** good compromises between resolution and convenience. ** ** 2) In accordance with normal star-catalog conventions, the object's ** right ascension and declination are freed from the effects of ** secular aberration. The frame, which is aligned to the catalog ** equator and equinox, is Lorentzian and centered on the SSB. ** ** The proper motions are the rate of change of the right ascension ** and declination at the catalog epoch and are in radians per TDB ** Julian year. ** ** The parallax and radial velocity are in the same frame. ** ** 3) Care is needed with units. The star coordinates are in radians ** and the proper motions in radians per Julian year, but the ** parallax is in arcseconds. ** ** 4) The RA proper motion is in terms of coordinate angle, not true ** angle. If the catalog uses arcseconds for both RA and Dec proper ** motions, the RA proper motion will need to be divided by cos(Dec) ** before use. ** ** 5) Straight-line motion at constant speed, in the inertial frame, is ** assumed. ** ** 6) An extremely small (or zero or negative) parallax is overridden ** to ensure that the object is at a finite but very large distance, ** but not so large that the proper motion is equivalent to a large ** but safe speed (about 0.1c using the chosen constant). A warning ** status of 1 is added to the status if this action has been taken. ** ** 7) If the space velocity is a significant fraction of c (see the ** constant VMAX in the function iauStarpv), it is arbitrarily set ** to zero. When this action occurs, 2 is added to the status. ** ** 8) The relativistic adjustment carried out in the iauStarpv function ** involves an iterative calculation. If the process fails to ** converge within a set number of iterations, 4 is added to the ** status. ** ** Called: ** iauSeps angle between two points ** iauStarpm update star catalog data for space motion ** */ void iauPn(double p[3], double *r, double u[3]) /* ** - - - - - - ** i a u P n ** - - - - - - ** ** Convert a p-vector into modulus and unit vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** p double[3] p-vector ** ** Returned: ** r double modulus ** u double[3] unit vector ** ** Notes: ** ** 1) If p is null, the result is null. Otherwise the result is a unit ** vector. ** ** 2) It is permissible to re-use the same array for any of the ** arguments. ** ** Called: ** iauPm modulus of p-vector ** iauZp zero p-vector ** iauSxp multiply p-vector by scalar ** */ void iauPn00(double date1, double date2, double dpsi, double deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3]) /* ** - - - - - - - - ** i a u P n 0 0 ** - - - - - - - - ** ** Precession-nutation, IAU 2000 model: a multi-purpose function, ** supporting classical (equinox-based) use directly and CIO-based ** use indirectly. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** dpsi,deps double nutation (Note 2) ** ** Returned: ** epsa double mean obliquity (Note 3) ** rb double[3][3] frame bias matrix (Note 4) ** rp double[3][3] precession matrix (Note 5) ** rbp double[3][3] bias-precession matrix (Note 6) ** rn double[3][3] nutation matrix (Note 7) ** rbpn double[3][3] GCRS-to-true matrix (Note 8) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The caller is responsible for providing the nutation components; ** they are in longitude and obliquity, in radians and are with ** respect to the equinox and ecliptic of date. For high-accuracy ** applications, free core nutation should be included as well as ** any other relevant corrections to the position of the CIP. ** ** 3) The returned mean obliquity is consistent with the IAU 2000 ** precession-nutation models. ** ** 4) The matrix rb transforms vectors from GCRS to J2000.0 mean ** equator and equinox by applying frame bias. ** ** 5) The matrix rp transforms vectors from J2000.0 mean equator and ** equinox to mean equator and equinox of date by applying ** precession. ** ** 6) The matrix rbp transforms vectors from GCRS to mean equator and ** equinox of date by applying frame bias then precession. It is ** the product rp x rb. ** ** 7) The matrix rn transforms vectors from mean equator and equinox of ** date to true equator and equinox of date by applying the nutation ** (luni-solar + planetary). ** ** 8) The matrix rbpn transforms vectors from GCRS to true equator and ** equinox of date. It is the product rn x rbp, applying frame ** bias, precession and nutation in that order. ** ** 9) It is permissible to re-use the same array in the returned ** arguments. The arrays are filled in the order given. ** ** Called: ** iauPr00 IAU 2000 precession adjustments ** iauObl80 mean obliquity, IAU 1980 ** iauBp00 frame bias and precession matrices, IAU 2000 ** iauCr copy r-matrix ** iauNumat form nutation matrix ** iauRxr product of two r-matrices ** ** Reference: ** ** Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** */ void iauPn00a(double date1, double date2, double *dpsi, double *deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3]) /* ** - - - - - - - - - ** i a u P n 0 0 a ** - - - - - - - - - ** ** Precession-nutation, IAU 2000A model: a multi-purpose function, ** supporting classical (equinox-based) use directly and CIO-based ** use indirectly. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** dpsi,deps double nutation (Note 2) ** epsa double mean obliquity (Note 3) ** rb double[3][3] frame bias matrix (Note 4) ** rp double[3][3] precession matrix (Note 5) ** rbp double[3][3] bias-precession matrix (Note 6) ** rn double[3][3] nutation matrix (Note 7) ** rbpn double[3][3] GCRS-to-true matrix (Notes 8,9) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The nutation components (luni-solar + planetary, IAU 2000A) in ** longitude and obliquity are in radians and with respect to the ** equinox and ecliptic of date. Free core nutation is omitted; ** for the utmost accuracy, use the iauPn00 function, where the ** nutation components are caller-specified. For faster but ** slightly less accurate results, use the iauPn00b function. ** ** 3) The mean obliquity is consistent with the IAU 2000 precession. ** ** 4) The matrix rb transforms vectors from GCRS to J2000.0 mean ** equator and equinox by applying frame bias. ** ** 5) The matrix rp transforms vectors from J2000.0 mean equator and ** equinox to mean equator and equinox of date by applying ** precession. ** ** 6) The matrix rbp transforms vectors from GCRS to mean equator and ** equinox of date by applying frame bias then precession. It is ** the product rp x rb. ** ** 7) The matrix rn transforms vectors from mean equator and equinox ** of date to true equator and equinox of date by applying the ** nutation (luni-solar + planetary). ** ** 8) The matrix rbpn transforms vectors from GCRS to true equator and ** equinox of date. It is the product rn x rbp, applying frame ** bias, precession and nutation in that order. ** ** 9) The X,Y,Z coordinates of the IAU 2000A Celestial Intermediate ** Pole are elements (3,1-3) of the GCRS-to-true matrix, ** i.e. rbpn[2][0-2]. ** ** 10) It is permissible to re-use the same array in the returned ** arguments. The arrays are filled in the order given. ** ** Called: ** iauNut00a nutation, IAU 2000A ** iauPn00 bias/precession/nutation results, IAU 2000 ** ** Reference: ** ** Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** */ void iauPn00b(double date1, double date2, double *dpsi, double *deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3]) /* ** - - - - - - - - - ** i a u P n 0 0 b ** - - - - - - - - - ** ** Precession-nutation, IAU 2000B model: a multi-purpose function, ** supporting classical (equinox-based) use directly and CIO-based ** use indirectly. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** dpsi,deps double nutation (Note 2) ** epsa double mean obliquity (Note 3) ** rb double[3][3] frame bias matrix (Note 4) ** rp double[3][3] precession matrix (Note 5) ** rbp double[3][3] bias-precession matrix (Note 6) ** rn double[3][3] nutation matrix (Note 7) ** rbpn double[3][3] GCRS-to-true matrix (Notes 8,9) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The nutation components (luni-solar + planetary, IAU 2000B) in ** longitude and obliquity are in radians and with respect to the ** equinox and ecliptic of date. For more accurate results, but ** at the cost of increased computation, use the iauPn00a function. ** For the utmost accuracy, use the iauPn00 function, where the ** nutation components are caller-specified. ** ** 3) The mean obliquity is consistent with the IAU 2000 precession. ** ** 4) The matrix rb transforms vectors from GCRS to J2000.0 mean ** equator and equinox by applying frame bias. ** ** 5) The matrix rp transforms vectors from J2000.0 mean equator and ** equinox to mean equator and equinox of date by applying ** precession. ** ** 6) The matrix rbp transforms vectors from GCRS to mean equator and ** equinox of date by applying frame bias then precession. It is ** the product rp x rb. ** ** 7) The matrix rn transforms vectors from mean equator and equinox ** of date to true equator and equinox of date by applying the ** nutation (luni-solar + planetary). ** ** 8) The matrix rbpn transforms vectors from GCRS to true equator and ** equinox of date. It is the product rn x rbp, applying frame ** bias, precession and nutation in that order. ** ** 9) The X,Y,Z coordinates of the IAU 2000B Celestial Intermediate ** Pole are elements (3,1-3) of the GCRS-to-true matrix, ** i.e. rbpn[2][0-2]. ** ** 10) It is permissible to re-use the same array in the returned ** arguments. The arrays are filled in the stated order. ** ** Called: ** iauNut00b nutation, IAU 2000B ** iauPn00 bias/precession/nutation results, IAU 2000 ** ** Reference: ** ** Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 (2003). ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** */ void iauPn06(double date1, double date2, double dpsi, double deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3]) /* ** - - - - - - - - ** i a u P n 0 6 ** - - - - - - - - ** ** Precession-nutation, IAU 2006 model: a multi-purpose function, ** supporting classical (equinox-based) use directly and CIO-based use ** indirectly. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** dpsi,deps double nutation (Note 2) ** ** Returned: ** epsa double mean obliquity (Note 3) ** rb double[3][3] frame bias matrix (Note 4) ** rp double[3][3] precession matrix (Note 5) ** rbp double[3][3] bias-precession matrix (Note 6) ** rn double[3][3] nutation matrix (Note 7) ** rbpn double[3][3] GCRS-to-true matrix (Note 8) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The caller is responsible for providing the nutation components; ** they are in longitude and obliquity, in radians and are with ** respect to the equinox and ecliptic of date. For high-accuracy ** applications, free core nutation should be included as well as ** any other relevant corrections to the position of the CIP. ** ** 3) The returned mean obliquity is consistent with the IAU 2006 ** precession. ** ** 4) The matrix rb transforms vectors from GCRS to J2000.0 mean ** equator and equinox by applying frame bias. ** ** 5) The matrix rp transforms vectors from J2000.0 mean equator and ** equinox to mean equator and equinox of date by applying ** precession. ** ** 6) The matrix rbp transforms vectors from GCRS to mean equator and ** equinox of date by applying frame bias then precession. It is ** the product rp x rb. ** ** 7) The matrix rn transforms vectors from mean equator and equinox ** of date to true equator and equinox of date by applying the ** nutation (luni-solar + planetary). ** ** 8) The matrix rbpn transforms vectors from GCRS to true equator and ** equinox of date. It is the product rn x rbp, applying frame ** bias, precession and nutation in that order. ** ** 9) The X,Y,Z coordinates of the Celestial Intermediate Pole are ** elements (3,1-3) of the GCRS-to-true matrix, i.e. rbpn[2][0-2]. ** ** 10) It is permissible to re-use the same array in the returned ** arguments. The arrays are filled in the stated order. ** ** Called: ** iauPfw06 bias-precession F-W angles, IAU 2006 ** iauFw2m F-W angles to r-matrix ** iauCr copy r-matrix ** iauTr transpose r-matrix ** iauRxr product of two r-matrices ** ** References: ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 ** ** Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** */ void iauPn06a(double date1, double date2, double *dpsi, double *deps, double *epsa, double rb[3][3], double rp[3][3], double rbp[3][3], double rn[3][3], double rbpn[3][3]) /* ** - - - - - - - - - ** i a u P n 0 6 a ** - - - - - - - - - ** ** Precession-nutation, IAU 2006/2000A models: a multi-purpose function, ** supporting classical (equinox-based) use directly and CIO-based use ** indirectly. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** dpsi,deps double nutation (Note 2) ** epsa double mean obliquity (Note 3) ** rb double[3][3] frame bias matrix (Note 4) ** rp double[3][3] precession matrix (Note 5) ** rbp double[3][3] bias-precession matrix (Note 6) ** rn double[3][3] nutation matrix (Note 7) ** rbpn double[3][3] GCRS-to-true matrix (Notes 8,9) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The nutation components (luni-solar + planetary, IAU 2000A) in ** longitude and obliquity are in radians and with respect to the ** equinox and ecliptic of date. Free core nutation is omitted; ** for the utmost accuracy, use the iauPn06 function, where the ** nutation components are caller-specified. ** ** 3) The mean obliquity is consistent with the IAU 2006 precession. ** ** 4) The matrix rb transforms vectors from GCRS to mean J2000.0 by ** applying frame bias. ** ** 5) The matrix rp transforms vectors from mean J2000.0 to mean of ** date by applying precession. ** ** 6) The matrix rbp transforms vectors from GCRS to mean of date by ** applying frame bias then precession. It is the product rp x rb. ** ** 7) The matrix rn transforms vectors from mean of date to true of ** date by applying the nutation (luni-solar + planetary). ** ** 8) The matrix rbpn transforms vectors from GCRS to true of date ** (CIP/equinox). It is the product rn x rbp, applying frame bias, ** precession and nutation in that order. ** ** 9) The X,Y,Z coordinates of the IAU 2006/2000A Celestial ** Intermediate Pole are elements (3,1-3) of the GCRS-to-true ** matrix, i.e. rbpn[2][0-2]. ** ** 10) It is permissible to re-use the same array in the returned ** arguments. The arrays are filled in the stated order. ** ** Called: ** iauNut06a nutation, IAU 2006/2000A ** iauPn06 bias/precession/nutation results, IAU 2006 ** ** Reference: ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 ** */ void iauPnm00a(double date1, double date2, double rbpn[3][3]) /* ** - - - - - - - - - - ** i a u P n m 0 0 a ** - - - - - - - - - - ** ** Form the matrix of precession-nutation for a given date (including ** frame bias), equinox-based, IAU 2000A model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rbpn double[3][3] classical NPB matrix (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(date) = rbpn * V(GCRS), where ** the p-vector V(date) is with respect to the true equatorial triad ** of date date1+date2 and the p-vector V(GCRS) is with respect to ** the Geocentric Celestial Reference System (IAU, 2000). ** ** 3) A faster, but slightly less accurate result (about 1 mas), can be ** obtained by using instead the iauPnm00b function. ** ** Called: ** iauPn00a bias/precession/nutation, IAU 2000A ** ** Reference: ** ** IAU: Trans. International Astronomical Union, Vol. XXIVB; Proc. ** 24th General Assembly, Manchester, UK. Resolutions B1.3, B1.6. ** (2000) ** */ void iauPnm00b(double date1, double date2, double rbpn[3][3]) /* ** - - - - - - - - - - ** i a u P n m 0 0 b ** - - - - - - - - - - ** ** Form the matrix of precession-nutation for a given date (including ** frame bias), equinox-based, IAU 2000B model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rbpn double[3][3] bias-precession-nutation matrix (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(date) = rbpn * V(GCRS), where ** the p-vector V(date) is with respect to the true equatorial triad ** of date date1+date2 and the p-vector V(GCRS) is with respect to ** the Geocentric Celestial Reference System (IAU, 2000). ** ** 3) The present function is faster, but slightly less accurate (about ** 1 mas), than the iauPnm00a function. ** ** Called: ** iauPn00b bias/precession/nutation, IAU 2000B ** ** Reference: ** ** IAU: Trans. International Astronomical Union, Vol. XXIVB; Proc. ** 24th General Assembly, Manchester, UK. Resolutions B1.3, B1.6. ** (2000) ** */ void iauPnm06a(double date1, double date2, double rnpb[3][3]) /* ** - - - - - - - - - - ** i a u P n m 0 6 a ** - - - - - - - - - - ** ** Form the matrix of precession-nutation for a given date (including ** frame bias), IAU 2006 precession and IAU 2000A nutation models. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** rnpb double[3][3] bias-precession-nutation matrix (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(date) = rnpb * V(GCRS), where ** the p-vector V(date) is with respect to the true equatorial triad ** of date date1+date2 and the p-vector V(GCRS) is with respect to ** the Geocentric Celestial Reference System (IAU, 2000). ** ** Called: ** iauPfw06 bias-precession F-W angles, IAU 2006 ** iauNut06a nutation, IAU 2006/2000A ** iauFw2m F-W angles to r-matrix ** ** Reference: ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855. ** */ void iauPnm80(double date1, double date2, double rmatpn[3][3]) /* ** - - - - - - - - - ** i a u P n m 8 0 ** - - - - - - - - - ** ** Form the matrix of precession/nutation for a given date, IAU 1976 ** precession model, IAU 1980 nutation model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TDB date (Note 1) ** ** Returned: ** rmatpn double[3][3] combined precession/nutation matrix ** ** Notes: ** ** 1) The TDB date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TDB)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The matrix operates in the sense V(date) = rmatpn * V(J2000), ** where the p-vector V(date) is with respect to the true equatorial ** triad of date date1+date2 and the p-vector V(J2000) is with ** respect to the mean equatorial triad of epoch J2000.0. ** ** Called: ** iauPmat76 precession matrix, IAU 1976 ** iauNutm80 nutation matrix, IAU 1980 ** iauRxr product of two r-matrices ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992), ** Section 3.3 (p145). ** */ void iauPom00(double xp, double yp, double sp, double rpom[3][3]) /* ** - - - - - - - - - - ** i a u P o m 0 0 ** - - - - - - - - - - ** ** Form the matrix of polar motion for a given date, IAU 2000. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** xp,yp double coordinates of the pole (radians, Note 1) ** sp double the TIO locator s' (radians, Note 2) ** ** Returned: ** rpom double[3][3] polar-motion matrix (Note 3) ** ** Notes: ** ** 1) The arguments xp and yp are the coordinates (in radians) of the ** Celestial Intermediate Pole with respect to the International ** Terrestrial Reference System (see IERS Conventions 2003), ** measured along the meridians to 0 and 90 deg west respectively. ** ** 2) The argument sp is the TIO locator s', in radians, which ** positions the Terrestrial Intermediate Origin on the equator. It ** is obtained from polar motion observations by numerical ** integration, and so is in essence unpredictable. However, it is ** dominated by a secular drift of about 47 microarcseconds per ** century, and so can be taken into account by using s' = -47*t, ** where t is centuries since J2000.0. The function iauSp00 ** implements this approximation. ** ** 3) The matrix operates in the sense V(TRS) = rpom * V(CIP), meaning ** that it is the final rotation when computing the pointing ** direction to a celestial source. ** ** Called: ** iauIr initialize r-matrix to identity ** iauRz rotate around Z-axis ** iauRy rotate around Y-axis ** iauRx rotate around X-axis ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ void iauPpp(double a[3], double b[3], double apb[3]) /* ** - - - - - - - ** i a u P p p ** - - - - - - - ** ** P-vector addition. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[3] first p-vector ** b double[3] second p-vector ** ** Returned: ** apb double[3] a + b ** ** Note: ** It is permissible to re-use the same array for any of the ** arguments. ** */ void iauPpsp(double a[3], double s, double b[3], double apsb[3]) /* ** - - - - - - - - ** i a u P p s p ** - - - - - - - - ** ** P-vector plus scaled p-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[3] first p-vector ** s double scalar (multiplier for b) ** b double[3] second p-vector ** ** Returned: ** apsb double[3] a + s*b ** ** Note: ** It is permissible for any of a, b and apsb to be the same array. ** ** Called: ** iauSxp multiply p-vector by scalar ** iauPpp p-vector plus p-vector ** */ void iauPr00(double date1, double date2, double *dpsipr, double *depspr) /* ** - - - - - - - - ** i a u P r 0 0 ** - - - - - - - - ** ** Precession-rate part of the IAU 2000 precession-nutation models ** (part of MHB2000). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** dpsipr,depspr double precession corrections (Notes 2,3) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The precession adjustments are expressed as "nutation ** components", corrections in longitude and obliquity with respect ** to the J2000.0 equinox and ecliptic. ** ** 3) Although the precession adjustments are stated to be with respect ** to Lieske et al. (1977), the MHB2000 model does not specify which ** set of Euler angles are to be used and how the adjustments are to ** be applied. The most literal and straightforward procedure is to ** adopt the 4-rotation epsilon_0, psi_A, omega_A, xi_A option, and ** to add dpsipr to psi_A and depspr to both omega_A and eps_A. ** ** 4) This is an implementation of one aspect of the IAU 2000A nutation ** model, formally adopted by the IAU General Assembly in 2000, ** namely MHB2000 (Mathews et al. 2002). ** ** References: ** ** Lieske, J.H., Lederle, T., Fricke, W. & Morando, B., "Expressions ** for the precession quantities based upon the IAU (1976) System of ** Astronomical Constants", Astron.Astrophys., 58, 1-16 (1977) ** ** Mathews, P.M., Herring, T.A., Buffet, B.A., "Modeling of nutation ** and precession New nutation series for nonrigid Earth and ** insights into the Earth's interior", J.Geophys.Res., 107, B4, ** 2002. The MHB2000 code itself was obtained on 9th September 2002 ** from ftp://maia.usno.navy.mil/conv2000/chapter5/IAU2000A. ** ** Wallace, P.T., "Software for Implementing the IAU 2000 ** Resolutions", in IERS Workshop 5.1 (2002). ** */ void iauPrec76(double date01, double date02, double date11, double date12, double *zeta, double *z, double *theta) /* ** - - - - - - - - - - ** i a u P r e c 7 6 ** - - - - - - - - - - ** ** IAU 1976 precession model. ** ** This function forms the three Euler angles which implement general ** precession between two dates, using the IAU 1976 model (as for the ** FK5 catalog). ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date01,date02 double TDB starting date (Note 1) ** date11,date12 double TDB ending date (Note 1) ** ** Returned: ** zeta double 1st rotation: radians cw around z ** z double 3rd rotation: radians cw around z ** theta double 2nd rotation: radians ccw around y ** ** Notes: ** ** 1) The dates date01+date02 and date11+date12 are Julian Dates, ** apportioned in any convenient way between the arguments daten1 ** and daten2. For example, JD(TDB)=2450123.7 could be expressed in ** any of these ways, among others: ** ** daten1 daten2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in cases ** where the loss of several decimal digits of resolution is ** acceptable. The J2000 method is best matched to the way the ** argument is handled internally and will deliver the optimum ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** The two dates may be expressed using different methods, but at ** the risk of losing some resolution. ** ** 2) The accumulated precession angles zeta, z, theta are expressed ** through canonical polynomials which are valid only for a limited ** time span. In addition, the IAU 1976 precession rate is known to ** be imperfect. The absolute accuracy of the present formulation ** is better than 0.1 arcsec from 1960AD to 2040AD, better than ** 1 arcsec from 1640AD to 2360AD, and remains below 3 arcsec for ** the whole of the period 500BC to 3000AD. The errors exceed ** 10 arcsec outside the range 1200BC to 3900AD, exceed 100 arcsec ** outside 4200BC to 5600AD and exceed 1000 arcsec outside 6800BC to ** 8200AD. ** ** 3) The three angles are returned in the conventional order, which ** is not the same as the order of the corresponding Euler ** rotations. The precession matrix is ** R_3(-z) x R_2(+theta) x R_3(-zeta). ** ** Reference: ** ** Lieske, J.H., 1979, Astron.Astrophys. 73, 282, equations ** (6) & (7), p283. ** */ void iauPv2p(double pv[2][3], double p[3]) /* ** - - - - - - - - ** i a u P v 2 p ** - - - - - - - - ** ** Discard velocity component of a pv-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** pv double[2][3] pv-vector ** ** Returned: ** p double[3] p-vector ** ** Called: ** iauCp copy p-vector ** */ void iauPv2s(double pv[2][3], double *theta, double *phi, double *r, double *td, double *pd, double *rd) /* ** - - - - - - - - ** i a u P v 2 s ** - - - - - - - - ** ** Convert position/velocity from Cartesian to spherical coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** pv double[2][3] pv-vector ** ** Returned: ** theta double longitude angle (radians) ** phi double latitude angle (radians) ** r double radial distance ** td double rate of change of theta ** pd double rate of change of phi ** rd double rate of change of r ** ** Notes: ** ** 1) If the position part of pv is null, theta, phi, td and pd ** are indeterminate. This is handled by extrapolating the ** position through unit time by using the velocity part of ** pv. This moves the origin without changing the direction ** of the velocity component. If the position and velocity ** components of pv are both null, zeroes are returned for all ** six results. ** ** 2) If the position is a pole, theta, td and pd are indeterminate. ** In such cases zeroes are returned for all three. ** */ void iauPvdpv(double a[2][3], double b[2][3], double adb[2]) /* ** - - - - - - - - - ** i a u P v d p v ** - - - - - - - - - ** ** Inner (=scalar=dot) product of two pv-vectors. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[2][3] first pv-vector ** b double[2][3] second pv-vector ** ** Returned: ** adb double[2] a . b (see note) ** ** Note: ** ** If the position and velocity components of the two pv-vectors are ** ( ap, av ) and ( bp, bv ), the result, a . b, is the pair of ** numbers ( ap . bp , ap . bv + av . bp ). The two numbers are the ** dot-product of the two p-vectors and its derivative. ** ** Called: ** iauPdp scalar product of two p-vectors ** */ void iauPvm(double pv[2][3], double *r, double *s) /* ** - - - - - - - ** i a u P v m ** - - - - - - - ** ** Modulus of pv-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** pv double[2][3] pv-vector ** ** Returned: ** r double modulus of position component ** s double modulus of velocity component ** ** Called: ** iauPm modulus of p-vector ** */ void iauPvmpv(double a[2][3], double b[2][3], double amb[2][3]) /* ** - - - - - - - - - ** i a u P v m p v ** - - - - - - - - - ** ** Subtract one pv-vector from another. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[2][3] first pv-vector ** b double[2][3] second pv-vector ** ** Returned: ** amb double[2][3] a - b ** ** Note: ** It is permissible to re-use the same array for any of the ** arguments. ** ** Called: ** iauPmp p-vector minus p-vector ** */ void iauPvppv(double a[2][3], double b[2][3], double apb[2][3]) /* ** - - - - - - - - - ** i a u P v p p v ** - - - - - - - - - ** ** Add one pv-vector to another. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[2][3] first pv-vector ** b double[2][3] second pv-vector ** ** Returned: ** apb double[2][3] a + b ** ** Note: ** It is permissible to re-use the same array for any of the ** arguments. ** ** Called: ** iauPpp p-vector plus p-vector ** */ int iauPvstar(double pv[2][3], double *ra, double *dec, double *pmr, double *pmd, double *px, double *rv) /* ** - - - - - - - - - - ** i a u P v s t a r ** - - - - - - - - - - ** ** Convert star position+velocity vector to catalog coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given (Note 1): ** pv double[2][3] pv-vector (AU, AU/day) ** ** Returned (Note 2): ** ra double right ascension (radians) ** dec double declination (radians) ** pmr double RA proper motion (radians/year) ** pmd double Dec proper motion (radians/year) ** px double parallax (arcsec) ** rv double radial velocity (km/s, positive = receding) ** ** Returned (function value): ** int status: ** 0 = OK ** -1 = superluminal speed (Note 5) ** -2 = null position vector ** ** Notes: ** ** 1) The specified pv-vector is the coordinate direction (and its rate ** of change) for the date at which the light leaving the star ** reached the solar-system barycenter. ** ** 2) The star data returned by this function are "observables" for an ** imaginary observer at the solar-system barycenter. Proper motion ** and radial velocity are, strictly, in terms of barycentric ** coordinate time, TCB. For most practical applications, it is ** permissible to neglect the distinction between TCB and ordinary ** "proper" time on Earth (TT/TAI). The result will, as a rule, be ** limited by the intrinsic accuracy of the proper-motion and ** radial-velocity data; moreover, the supplied pv-vector is likely ** to be merely an intermediate result (for example generated by the ** function iauStarpv), so that a change of time unit will cancel ** out overall. ** ** In accordance with normal star-catalog conventions, the object's ** right ascension and declination are freed from the effects of ** secular aberration. The frame, which is aligned to the catalog ** equator and equinox, is Lorentzian and centered on the SSB. ** ** Summarizing, the specified pv-vector is for most stars almost ** identical to the result of applying the standard geometrical ** "space motion" transformation to the catalog data. The ** differences, which are the subject of the Stumpff paper cited ** below, are: ** ** (i) In stars with significant radial velocity and proper motion, ** the constantly changing light-time distorts the apparent proper ** motion. Note that this is a classical, not a relativistic, ** effect. ** ** (ii) The transformation complies with special relativity. ** ** 3) Care is needed with units. The star coordinates are in radians ** and the proper motions in radians per Julian year, but the ** parallax is in arcseconds; the radial velocity is in km/s, but ** the pv-vector result is in AU and AU/day. ** ** 4) The proper motions are the rate of change of the right ascension ** and declination at the catalog epoch and are in radians per Julian ** year. The RA proper motion is in terms of coordinate angle, not ** true angle, and will thus be numerically larger at high ** declinations. ** ** 5) Straight-line motion at constant speed in the inertial frame is ** assumed. If the speed is greater than or equal to the speed of ** light, the function aborts with an error status. ** ** 6) The inverse transformation is performed by the function iauStarpv. ** ** Called: ** iauPn decompose p-vector into modulus and direction ** iauPdp scalar product of two p-vectors ** iauSxp multiply p-vector by scalar ** iauPmp p-vector minus p-vector ** iauPm modulus of p-vector ** iauPpp p-vector plus p-vector ** iauPv2s pv-vector to spherical ** iauAnp normalize angle into range 0 to 2pi ** ** Reference: ** ** Stumpff, P., 1985, Astron.Astrophys. 144, 232-240. ** */ void iauPvtob(double elong, double phi, double hm, double xp, double yp, double sp, double theta, double pv[2][3]) /* ** - - - - - - - - - ** i a u P v t o b ** - - - - - - - - - ** ** Position and velocity of a terrestrial observing station. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** elong double longitude (radians, east +ve, Note 1) ** phi double latitude (geodetic, radians, Note 1) ** hm double height above ref. ellipsoid (geodetic, m) ** xp,yp double coordinates of the pole (radians, Note 2) ** sp double the TIO locator s' (radians, Note 2) ** theta double Earth rotation angle (radians, Note 3) ** ** Returned: ** pv double[2][3] position/velocity vector (m, m/s, CIRS) ** ** Notes: ** ** 1) The terrestrial coordinates are with respect to the WGS84 ** reference ellipsoid. ** ** 2) xp and yp are the coordinates (in radians) of the Celestial ** Intermediate Pole with respect to the International Terrestrial ** Reference System (see IERS Conventions), measured along the ** meridians 0 and 90 deg west respectively. sp is the TIO locator ** s', in radians, which positions the Terrestrial Intermediate ** Origin on the equator. For many applications, xp, yp and ** (especially) sp can be set to zero. ** ** 3) If theta is Greenwich apparent sidereal time instead of Earth ** rotation angle, the result is with respect to the true equator ** and equinox of date, i.e. with the x-axis at the equinox rather ** than the celestial intermediate origin. ** ** 4) The velocity units are meters per UT1 second, not per SI second. ** This is unlikely to have any practical consequences in the modern ** era. ** ** 5) No validation is performed on the arguments. Error cases that ** could lead to arithmetic exceptions are trapped by the iauGd2gc ** function, and the result set to zeros. ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Urban, S. & Seidelmann, P. K. (eds), Explanatory Supplement to ** the Astronomical Almanac, 3rd ed., University Science Books ** (2013), Section 7.4.3.3. ** ** Called: ** iauGd2gc geodetic to geocentric transformation ** iauPom00 polar motion matrix ** iauTrxp product of transpose of r-matrix and p-vector ** */ void iauPvu(double dt, double pv[2][3], double upv[2][3]) /* ** - - - - - - - ** i a u P v u ** - - - - - - - ** ** Update a pv-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** dt double time interval ** pv double[2][3] pv-vector ** ** Returned: ** upv double[2][3] p updated, v unchanged ** ** Notes: ** ** 1) "Update" means "refer the position component of the vector ** to a new date dt time units from the existing date". ** ** 2) The time units of dt must match those of the velocity. ** ** 3) It is permissible for pv and upv to be the same array. ** ** Called: ** iauPpsp p-vector plus scaled p-vector ** iauCp copy p-vector ** */ void iauPvup(double dt, double pv[2][3], double p[3]) /* ** - - - - - - - - ** i a u P v u p ** - - - - - - - - ** ** Update a pv-vector, discarding the velocity component. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** dt double time interval ** pv double[2][3] pv-vector ** ** Returned: ** p double[3] p-vector ** ** Notes: ** ** 1) "Update" means "refer the position component of the vector to a ** new date dt time units from the existing date". ** ** 2) The time units of dt must match those of the velocity. ** */ void iauPvxpv(double a[2][3], double b[2][3], double axb[2][3]) /* ** - - - - - - - - - ** i a u P v x p v ** - - - - - - - - - ** ** Outer (=vector=cross) product of two pv-vectors. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[2][3] first pv-vector ** b double[2][3] second pv-vector ** ** Returned: ** axb double[2][3] a x b ** ** Notes: ** ** 1) If the position and velocity components of the two pv-vectors are ** ( ap, av ) and ( bp, bv ), the result, a x b, is the pair of ** vectors ( ap x bp, ap x bv + av x bp ). The two vectors are the ** cross-product of the two p-vectors and its derivative. ** ** 2) It is permissible to re-use the same array for any of the ** arguments. ** ** Called: ** iauCpv copy pv-vector ** iauPxp vector product of two p-vectors ** iauPpp p-vector plus p-vector ** */ void iauPxp(double a[3], double b[3], double axb[3]) /* ** - - - - - - - ** i a u P x p ** - - - - - - - ** ** p-vector outer (=vector=cross) product. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[3] first p-vector ** b double[3] second p-vector ** ** Returned: ** axb double[3] a x b ** ** Note: ** It is permissible to re-use the same array for any of the ** arguments. ** */ void iauRefco(double phpa, double tc, double rh, double wl, double *refa, double *refb) /* ** - - - - - - - - - ** i a u R e f c o ** - - - - - - - - - ** ** Determine the constants A and B in the atmospheric refraction model ** dZ = A tan Z + B tan^3 Z. ** ** Z is the "observed" zenith distance (i.e. affected by refraction) ** and dZ is what to add to Z to give the "topocentric" (i.e. in vacuo) ** zenith distance. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** phpa double pressure at the observer (hPa = millibar) ** tc double ambient temperature at the observer (deg C) ** rh double relative humidity at the observer (range 0-1) ** wl double wavelength (micrometers) ** ** Returned: ** refa double* tan Z coefficient (radians) ** refb double* tan^3 Z coefficient (radians) ** ** Notes: ** ** 1) The model balances speed and accuracy to give good results in ** applications where performance at low altitudes is not paramount. ** Performance is maintained across a range of conditions, and ** applies to both optical/IR and radio. ** ** 2) The model omits the effects of (i) height above sea level (apart ** from the reduced pressure itself), (ii) latitude (i.e. the ** flattening of the Earth), (iii) variations in tropospheric lapse ** rate and (iv) dispersive effects in the radio. ** ** The model was tested using the following range of conditions: ** ** lapse rates 0.0055, 0.0065, 0.0075 deg/meter ** latitudes 0, 25, 50, 75 degrees ** heights 0, 2500, 5000 meters ASL ** pressures mean for height -10% to +5% in steps of 5% ** temperatures -10 deg to +20 deg with respect to 280 deg at SL ** relative humidity 0, 0.5, 1 ** wavelengths 0.4, 0.6, ... 2 micron, + radio ** zenith distances 15, 45, 75 degrees ** ** The accuracy with respect to raytracing through a model ** atmosphere was as follows: ** ** worst RMS ** ** optical/IR 62 mas 8 mas ** radio 319 mas 49 mas ** ** For this particular set of conditions: ** ** lapse rate 0.0065 K/meter ** latitude 50 degrees ** sea level ** pressure 1005 mb ** temperature 280.15 K ** humidity 80% ** wavelength 5740 Angstroms ** ** the results were as follows: ** ** ZD raytrace iauRefco Saastamoinen ** ** 10 10.27 10.27 10.27 ** 20 21.19 21.20 21.19 ** 30 33.61 33.61 33.60 ** 40 48.82 48.83 48.81 ** 45 58.16 58.18 58.16 ** 50 69.28 69.30 69.27 ** 55 82.97 82.99 82.95 ** 60 100.51 100.54 100.50 ** 65 124.23 124.26 124.20 ** 70 158.63 158.68 158.61 ** 72 177.32 177.37 177.31 ** 74 200.35 200.38 200.32 ** 76 229.45 229.43 229.42 ** 78 267.44 267.29 267.41 ** 80 319.13 318.55 319.10 ** ** deg arcsec arcsec arcsec ** ** The values for Saastamoinen's formula (which includes terms ** up to tan^5) are taken from Hohenkerk and Sinclair (1985). ** ** 3) A wl value in the range 0-100 selects the optical/IR case and is ** wavelength in micrometers. Any value outside this range selects ** the radio case. ** ** 4) Outlandish input parameters are silently limited to ** mathematically safe values. Zero pressure is permissible, and ** causes zeroes to be returned. ** ** 5) The algorithm draws on several sources, as follows: ** ** a) The formula for the saturation vapour pressure of water as ** a function of temperature and temperature is taken from ** Equations (A4.5-A4.7) of Gill (1982). ** ** b) The formula for the water vapour pressure, given the ** saturation pressure and the relative humidity, is from ** Crane (1976), Equation (2.5.5). ** ** c) The refractivity of air is a function of temperature, ** total pressure, water-vapour pressure and, in the case ** of optical/IR, wavelength. The formulae for the two cases are ** developed from Hohenkerk & Sinclair (1985) and Rueger (2002). ** ** d) The formula for beta, the ratio of the scale height of the ** atmosphere to the geocentric distance of the observer, is ** an adaption of Equation (9) from Stone (1996). The ** adaptations, arrived at empirically, consist of (i) a small ** adjustment to the coefficient and (ii) a humidity term for the ** radio case only. ** ** e) The formulae for the refraction constants as a function of ** n-1 and beta are from Green (1987), Equation (4.31). ** ** References: ** ** Crane, R.K., Meeks, M.L. (ed), "Refraction Effects in the Neutral ** Atmosphere", Methods of Experimental Physics: Astrophysics 12B, ** Academic Press, 1976. ** ** Gill, Adrian E., "Atmosphere-Ocean Dynamics", Academic Press, ** 1982. ** ** Green, R.M., "Spherical Astronomy", Cambridge University Press, ** 1987. ** ** Hohenkerk, C.Y., & Sinclair, A.T., NAO Technical Note No. 63, ** 1985. ** ** Rueger, J.M., "Refractive Index Formulae for Electronic Distance ** Measurement with Radio and Millimetre Waves", in Unisurv Report ** S-68, School of Surveying and Spatial Information Systems, ** University of New South Wales, Sydney, Australia, 2002. ** ** Stone, Ronald C., P.A.S.P. 108, 1051-1058, 1996. ** */ void iauRm2v(double r[3][3], double w[3]) /* ** - - - - - - - - ** i a u R m 2 v ** - - - - - - - - ** ** Express an r-matrix as an r-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** r double[3][3] rotation matrix ** ** Returned: ** w double[3] rotation vector (Note 1) ** ** Notes: ** ** 1) A rotation matrix describes a rotation through some angle about ** some arbitrary axis called the Euler axis. The "rotation vector" ** returned by this function has the same direction as the Euler axis, ** and its magnitude is the angle in radians. (The magnitude and ** direction can be separated by means of the function iauPn.) ** ** 2) If r is null, so is the result. If r is not a rotation matrix ** the result is undefined; r must be proper (i.e. have a positive ** determinant) and real orthogonal (inverse = transpose). ** ** 3) The reference frame rotates clockwise as seen looking along ** the rotation vector from the origin. ** */ void iauRv2m(double w[3], double r[3][3]) /* ** - - - - - - - - ** i a u R v 2 m ** - - - - - - - - ** ** Form the r-matrix corresponding to a given r-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** w double[3] rotation vector (Note 1) ** ** Returned: ** r double[3][3] rotation matrix ** ** Notes: ** ** 1) A rotation matrix describes a rotation through some angle about ** some arbitrary axis called the Euler axis. The "rotation vector" ** supplied to This function has the same direction as the Euler ** axis, and its magnitude is the angle in radians. ** ** 2) If w is null, the unit matrix is returned. ** ** 3) The reference frame rotates clockwise as seen looking along the ** rotation vector from the origin. ** */ void iauRx(double phi, double r[3][3]) /* ** - - - - - - ** i a u R x ** - - - - - - ** ** Rotate an r-matrix about the x-axis. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** phi double angle (radians) ** ** Given and returned: ** r double[3][3] r-matrix, rotated ** ** Notes: ** ** 1) Calling this function with positive phi incorporates in the ** supplied r-matrix r an additional rotation, about the x-axis, ** anticlockwise as seen looking towards the origin from positive x. ** ** 2) The additional rotation can be represented by this matrix: ** ** ( 1 0 0 ) ** ( ) ** ( 0 + cos(phi) + sin(phi) ) ** ( ) ** ( 0 - sin(phi) + cos(phi) ) ** */ void iauRxp(double r[3][3], double p[3], double rp[3]) /* ** - - - - - - - ** i a u R x p ** - - - - - - - ** ** Multiply a p-vector by an r-matrix. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** r double[3][3] r-matrix ** p double[3] p-vector ** ** Returned: ** rp double[3] r * p ** ** Note: ** It is permissible for p and rp to be the same array. ** ** Called: ** iauCp copy p-vector ** */ void iauRxpv(double r[3][3], double pv[2][3], double rpv[2][3]) /* ** - - - - - - - - ** i a u R x p v ** - - - - - - - - ** ** Multiply a pv-vector by an r-matrix. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** r double[3][3] r-matrix ** pv double[2][3] pv-vector ** ** Returned: ** rpv double[2][3] r * pv ** ** Note: ** It is permissible for pv and rpv to be the same array. ** ** Called: ** iauRxp product of r-matrix and p-vector ** */ void iauRxr(double a[3][3], double b[3][3], double atb[3][3]) /* ** - - - - - - - ** i a u R x r ** - - - - - - - ** ** Multiply two r-matrices. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[3][3] first r-matrix ** b double[3][3] second r-matrix ** ** Returned: ** atb double[3][3] a * b ** ** Note: ** It is permissible to re-use the same array for any of the ** arguments. ** ** Called: ** iauCr copy r-matrix ** */ void iauRy(double theta, double r[3][3]) /* ** - - - - - - ** i a u R y ** - - - - - - ** ** Rotate an r-matrix about the y-axis. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** theta double angle (radians) ** ** Given and returned: ** r double[3][3] r-matrix, rotated ** ** Notes: ** ** 1) Calling this function with positive theta incorporates in the ** supplied r-matrix r an additional rotation, about the y-axis, ** anticlockwise as seen looking towards the origin from positive y. ** ** 2) The additional rotation can be represented by this matrix: ** ** ( + cos(theta) 0 - sin(theta) ) ** ( ) ** ( 0 1 0 ) ** ( ) ** ( + sin(theta) 0 + cos(theta) ) ** */ void iauRz(double psi, double r[3][3]) /* ** - - - - - - ** i a u R z ** - - - - - - ** ** Rotate an r-matrix about the z-axis. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** psi double angle (radians) ** ** Given and returned: ** r double[3][3] r-matrix, rotated ** ** Notes: ** ** 1) Calling this function with positive psi incorporates in the ** supplied r-matrix r an additional rotation, about the z-axis, ** anticlockwise as seen looking towards the origin from positive z. ** ** 2) The additional rotation can be represented by this matrix: ** ** ( + cos(psi) + sin(psi) 0 ) ** ( ) ** ( - sin(psi) + cos(psi) 0 ) ** ( ) ** ( 0 0 1 ) ** */ double iauS00(double date1, double date2, double x, double y) /* ** - - - - - - - ** i a u S 0 0 ** - - - - - - - ** ** The CIO locator s, positioning the Celestial Intermediate Origin on ** the equator of the Celestial Intermediate Pole, given the CIP's X,Y ** coordinates. Compatible with IAU 2000A precession-nutation. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** x,y double CIP coordinates (Note 3) ** ** Returned (function value): ** double the CIO locator s in radians (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The CIO locator s is the difference between the right ascensions ** of the same point in two systems: the two systems are the GCRS ** and the CIP,CIO, and the point is the ascending node of the ** CIP equator. The quantity s remains below 0.1 arcsecond ** throughout 1900-2100. ** ** 3) The series used to compute s is in fact for s+XY/2, where X and Y ** are the x and y components of the CIP unit vector; this series ** is more compact than a direct series for s would be. This ** function requires X,Y to be supplied by the caller, who is ** responsible for providing values that are consistent with the ** supplied date. ** ** 4) The model is consistent with the IAU 2000A precession-nutation. ** ** Called: ** iauFal03 mean anomaly of the Moon ** iauFalp03 mean anomaly of the Sun ** iauFaf03 mean argument of the latitude of the Moon ** iauFad03 mean elongation of the Moon from the Sun ** iauFaom03 mean longitude of the Moon's ascending node ** iauFave03 mean longitude of Venus ** iauFae03 mean longitude of Earth ** iauFapa03 general accumulated precession in longitude ** ** References: ** ** Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ double iauS00a(double date1, double date2) /* ** - - - - - - - - ** i a u S 0 0 a ** - - - - - - - - ** ** The CIO locator s, positioning the Celestial Intermediate Origin on ** the equator of the Celestial Intermediate Pole, using the IAU 2000A ** precession-nutation model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double the CIO locator s in radians (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The CIO locator s is the difference between the right ascensions ** of the same point in two systems. The two systems are the GCRS ** and the CIP,CIO, and the point is the ascending node of the ** CIP equator. The CIO locator s remains a small fraction of ** 1 arcsecond throughout 1900-2100. ** ** 3) The series used to compute s is in fact for s+XY/2, where X and Y ** are the x and y components of the CIP unit vector; this series ** is more compact than a direct series for s would be. The present ** function uses the full IAU 2000A nutation model when predicting ** the CIP position. Faster results, with no significant loss of ** accuracy, can be obtained via the function iauS00b, which uses ** instead the IAU 2000B truncated model. ** ** Called: ** iauPnm00a classical NPB matrix, IAU 2000A ** iauBnp2xy extract CIP X,Y from the BPN matrix ** iauS00 the CIO locator s, given X,Y, IAU 2000A ** ** References: ** ** Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ double iauS00b(double date1, double date2) /* ** - - - - - - - - ** i a u S 0 0 b ** - - - - - - - - ** ** The CIO locator s, positioning the Celestial Intermediate Origin on ** the equator of the Celestial Intermediate Pole, using the IAU 2000B ** precession-nutation model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double the CIO locator s in radians (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The CIO locator s is the difference between the right ascensions ** of the same point in two systems. The two systems are the GCRS ** and the CIP,CIO, and the point is the ascending node of the ** CIP equator. The CIO locator s remains a small fraction of ** 1 arcsecond throughout 1900-2100. ** ** 3) The series used to compute s is in fact for s+XY/2, where X and Y ** are the x and y components of the CIP unit vector; this series ** is more compact than a direct series for s would be. The present ** function uses the IAU 2000B truncated nutation model when ** predicting the CIP position. The function iauS00a uses instead ** the full IAU 2000A model, but with no significant increase in ** accuracy and at some cost in speed. ** ** Called: ** iauPnm00b classical NPB matrix, IAU 2000B ** iauBnp2xy extract CIP X,Y from the BPN matrix ** iauS00 the CIO locator s, given X,Y, IAU 2000A ** ** References: ** ** Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ double iauS06(double date1, double date2, double x, double y) /* ** - - - - - - - ** i a u S 0 6 ** - - - - - - - ** ** The CIO locator s, positioning the Celestial Intermediate Origin on ** the equator of the Celestial Intermediate Pole, given the CIP's X,Y ** coordinates. Compatible with IAU 2006/2000A precession-nutation. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** x,y double CIP coordinates (Note 3) ** ** Returned (function value): ** double the CIO locator s in radians (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The CIO locator s is the difference between the right ascensions ** of the same point in two systems: the two systems are the GCRS ** and the CIP,CIO, and the point is the ascending node of the ** CIP equator. The quantity s remains below 0.1 arcsecond ** throughout 1900-2100. ** ** 3) The series used to compute s is in fact for s+XY/2, where X and Y ** are the x and y components of the CIP unit vector; this series ** is more compact than a direct series for s would be. This ** function requires X,Y to be supplied by the caller, who is ** responsible for providing values that are consistent with the ** supplied date. ** ** 4) The model is consistent with the "P03" precession (Capitaine et ** al. 2003), adopted by IAU 2006 Resolution 1, 2006, and the ** IAU 2000A nutation (with P03 adjustments). ** ** Called: ** iauFal03 mean anomaly of the Moon ** iauFalp03 mean anomaly of the Sun ** iauFaf03 mean argument of the latitude of the Moon ** iauFad03 mean elongation of the Moon from the Sun ** iauFaom03 mean longitude of the Moon's ascending node ** iauFave03 mean longitude of Venus ** iauFae03 mean longitude of Earth ** iauFapa03 general accumulated precession in longitude ** ** References: ** ** Capitaine, N., Wallace, P.T. & Chapront, J., 2003, Astron. ** Astrophys. 432, 355 ** ** McCarthy, D.D., Petit, G. (eds.) 2004, IERS Conventions (2003), ** IERS Technical Note No. 32, BKG ** */ double iauS06a(double date1, double date2) /* ** - - - - - - - - ** i a u S 0 6 a ** - - - - - - - - ** ** The CIO locator s, positioning the Celestial Intermediate Origin on ** the equator of the Celestial Intermediate Pole, using the IAU 2006 ** precession and IAU 2000A nutation models. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double the CIO locator s in radians (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The CIO locator s is the difference between the right ascensions ** of the same point in two systems. The two systems are the GCRS ** and the CIP,CIO, and the point is the ascending node of the ** CIP equator. The CIO locator s remains a small fraction of ** 1 arcsecond throughout 1900-2100. ** ** 3) The series used to compute s is in fact for s+XY/2, where X and Y ** are the x and y components of the CIP unit vector; this series is ** more compact than a direct series for s would be. The present ** function uses the full IAU 2000A nutation model when predicting ** the CIP position. ** ** Called: ** iauPnm06a classical NPB matrix, IAU 2006/2000A ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauS06 the CIO locator s, given X,Y, IAU 2006 ** ** References: ** ** Capitaine, N., Chapront, J., Lambert, S. and Wallace, P., ** "Expressions for the Celestial Intermediate Pole and Celestial ** Ephemeris Origin consistent with the IAU 2000A precession- ** nutation model", Astron.Astrophys. 400, 1145-1154 (2003) ** ** n.b. The celestial ephemeris origin (CEO) was renamed "celestial ** intermediate origin" (CIO) by IAU 2006 Resolution 2. ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 ** ** McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), ** IERS Technical Note No. 32, BKG ** ** Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** */ void iauS2c(double theta, double phi, double c[3]) /* ** - - - - - - - ** i a u S 2 c ** - - - - - - - ** ** Convert spherical coordinates to Cartesian. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** theta double longitude angle (radians) ** phi double latitude angle (radians) ** ** Returned: ** c double[3] direction cosines ** */ void iauS2p(double theta, double phi, double r, double p[3]) /* ** - - - - - - - ** i a u S 2 p ** - - - - - - - ** ** Convert spherical polar coordinates to p-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** theta double longitude angle (radians) ** phi double latitude angle (radians) ** r double radial distance ** ** Returned: ** p double[3] Cartesian coordinates ** ** Called: ** iauS2c spherical coordinates to unit vector ** iauSxp multiply p-vector by scalar ** */ void iauS2pv(double theta, double phi, double r, double td, double pd, double rd, double pv[2][3]) /* ** - - - - - - - - ** i a u S 2 p v ** - - - - - - - - ** ** Convert position/velocity from spherical to Cartesian coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** theta double longitude angle (radians) ** phi double latitude angle (radians) ** r double radial distance ** td double rate of change of theta ** pd double rate of change of phi ** rd double rate of change of r ** ** Returned: ** pv double[2][3] pv-vector ** */ void iauS2xpv(double s1, double s2, double pv[2][3], double spv[2][3]) /* ** - - - - - - - - - ** i a u S 2 x p v ** - - - - - - - - - ** ** Multiply a pv-vector by two scalars. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** s1 double scalar to multiply position component by ** s2 double scalar to multiply velocity component by ** pv double[2][3] pv-vector ** ** Returned: ** spv double[2][3] pv-vector: p scaled by s1, v scaled by s2 ** ** Note: ** It is permissible for pv and spv to be the same array. ** ** Called: ** iauSxp multiply p-vector by scalar ** */ double iauSepp(double a[3], double b[3]) /* ** - - - - - - - - ** i a u S e p p ** - - - - - - - - ** ** Angular separation between two p-vectors. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** a double[3] first p-vector (not necessarily unit length) ** b double[3] second p-vector (not necessarily unit length) ** ** Returned (function value): ** double angular separation (radians, always positive) ** ** Notes: ** ** 1) If either vector is null, a zero result is returned. ** ** 2) The angular separation is most simply formulated in terms of ** scalar product. However, this gives poor accuracy for angles ** near zero and pi. The present algorithm uses both cross product ** and dot product, to deliver full accuracy whatever the size of ** the angle. ** ** Called: ** iauPxp vector product of two p-vectors ** iauPm modulus of p-vector ** iauPdp scalar product of two p-vectors ** */ double iauSeps(double al, double ap, double bl, double bp) /* ** - - - - - - - - ** i a u S e p s ** - - - - - - - - ** ** Angular separation between two sets of spherical coordinates. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** al double first longitude (radians) ** ap double first latitude (radians) ** bl double second longitude (radians) ** bp double second latitude (radians) ** ** Returned (function value): ** double angular separation (radians) ** ** Called: ** iauS2c spherical coordinates to unit vector ** iauSepp angular separation between two p-vectors ** */ double iauSp00(double date1, double date2) /* ** - - - - - - - - ** i a u S p 0 0 ** - - - - - - - - ** ** The TIO locator s', positioning the Terrestrial Intermediate Origin ** on the equator of the Celestial Intermediate Pole. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned (function value): ** double the TIO locator s' in radians (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The TIO locator s' is obtained from polar motion observations by ** numerical integration, and so is in essence unpredictable. ** However, it is dominated by a secular drift of about ** 47 microarcseconds per century, which is the approximation ** evaluated by the present function. ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ int iauStarpm(double ra1, double dec1, double pmr1, double pmd1, double px1, double rv1, double ep1a, double ep1b, double ep2a, double ep2b, double *ra2, double *dec2, double *pmr2, double *pmd2, double *px2, double *rv2) /* ** - - - - - - - - - - ** i a u S t a r p m ** - - - - - - - - - - ** ** Star proper motion: update star catalog data for space motion. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** ra1 double right ascension (radians), before ** dec1 double declination (radians), before ** pmr1 double RA proper motion (radians/year), before ** pmd1 double Dec proper motion (radians/year), before ** px1 double parallax (arcseconds), before ** rv1 double radial velocity (km/s, +ve = receding), before ** ep1a double "before" epoch, part A (Note 1) ** ep1b double "before" epoch, part B (Note 1) ** ep2a double "after" epoch, part A (Note 1) ** ep2b double "after" epoch, part B (Note 1) ** ** Returned: ** ra2 double right ascension (radians), after ** dec2 double declination (radians), after ** pmr2 double RA proper motion (radians/year), after ** pmd2 double Dec proper motion (radians/year), after ** px2 double parallax (arcseconds), after ** rv2 double radial velocity (km/s, +ve = receding), after ** ** Returned (function value): ** int status: ** -1 = system error (should not occur) ** 0 = no warnings or errors ** 1 = distance overridden (Note 6) ** 2 = excessive velocity (Note 7) ** 4 = solution didn't converge (Note 8) ** else = binary logical OR of the above warnings ** ** Notes: ** ** 1) The starting and ending TDB dates ep1a+ep1b and ep2a+ep2b are ** Julian Dates, apportioned in any convenient way between the two ** parts (A and B). For example, JD(TDB)=2450123.7 could be ** expressed in any of these ways, among others: ** ** epna epnb ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) In accordance with normal star-catalog conventions, the object's ** right ascension and declination are freed from the effects of ** secular aberration. The frame, which is aligned to the catalog ** equator and equinox, is Lorentzian and centered on the SSB. ** ** The proper motions are the rate of change of the right ascension ** and declination at the catalog epoch and are in radians per TDB ** Julian year. ** ** The parallax and radial velocity are in the same frame. ** ** 3) Care is needed with units. The star coordinates are in radians ** and the proper motions in radians per Julian year, but the ** parallax is in arcseconds. ** ** 4) The RA proper motion is in terms of coordinate angle, not true ** angle. If the catalog uses arcseconds for both RA and Dec proper ** motions, the RA proper motion will need to be divided by cos(Dec) ** before use. ** ** 5) Straight-line motion at constant speed, in the inertial frame, ** is assumed. ** ** 6) An extremely small (or zero or negative) parallax is interpreted ** to mean that the object is on the "celestial sphere", the radius ** of which is an arbitrary (large) value (see the iauStarpv ** function for the value used). When the distance is overridden in ** this way, the status, initially zero, has 1 added to it. ** ** 7) If the space velocity is a significant fraction of c (see the ** constant VMAX in the function iauStarpv), it is arbitrarily set ** to zero. When this action occurs, 2 is added to the status. ** ** 8) The relativistic adjustment carried out in the iauStarpv function ** involves an iterative calculation. If the process fails to ** converge within a set number of iterations, 4 is added to the ** status. ** ** Called: ** iauStarpv star catalog data to space motion pv-vector ** iauPvu update a pv-vector ** iauPdp scalar product of two p-vectors ** iauPvstar space motion pv-vector to star catalog data ** */ int iauStarpv(double ra, double dec, double pmr, double pmd, double px, double rv, double pv[2][3]) /* ** - - - - - - - - - - ** i a u S t a r p v ** - - - - - - - - - - ** ** Convert star catalog coordinates to position+velocity vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given (Note 1): ** ra double right ascension (radians) ** dec double declination (radians) ** pmr double RA proper motion (radians/year) ** pmd double Dec proper motion (radians/year) ** px double parallax (arcseconds) ** rv double radial velocity (km/s, positive = receding) ** ** Returned (Note 2): ** pv double[2][3] pv-vector (AU, AU/day) ** ** Returned (function value): ** int status: ** 0 = no warnings ** 1 = distance overridden (Note 6) ** 2 = excessive speed (Note 7) ** 4 = solution didn't converge (Note 8) ** else = binary logical OR of the above ** ** Notes: ** ** 1) The star data accepted by this function are "observables" for an ** imaginary observer at the solar-system barycenter. Proper motion ** and radial velocity are, strictly, in terms of barycentric ** coordinate time, TCB. For most practical applications, it is ** permissible to neglect the distinction between TCB and ordinary ** "proper" time on Earth (TT/TAI). The result will, as a rule, be ** limited by the intrinsic accuracy of the proper-motion and ** radial-velocity data; moreover, the pv-vector is likely to be ** merely an intermediate result, so that a change of time unit ** would cancel out overall. ** ** In accordance with normal star-catalog conventions, the object's ** right ascension and declination are freed from the effects of ** secular aberration. The frame, which is aligned to the catalog ** equator and equinox, is Lorentzian and centered on the SSB. ** ** 2) The resulting position and velocity pv-vector is with respect to ** the same frame and, like the catalog coordinates, is freed from ** the effects of secular aberration. Should the "coordinate ** direction", where the object was located at the catalog epoch, be ** required, it may be obtained by calculating the magnitude of the ** position vector pv[0][0-2] dividing by the speed of light in ** AU/day to give the light-time, and then multiplying the space ** velocity pv[1][0-2] by this light-time and adding the result to ** pv[0][0-2]. ** ** Summarizing, the pv-vector returned is for most stars almost ** identical to the result of applying the standard geometrical ** "space motion" transformation. The differences, which are the ** subject of the Stumpff paper referenced below, are: ** ** (i) In stars with significant radial velocity and proper motion, ** the constantly changing light-time distorts the apparent proper ** motion. Note that this is a classical, not a relativistic, ** effect. ** ** (ii) The transformation complies with special relativity. ** ** 3) Care is needed with units. The star coordinates are in radians ** and the proper motions in radians per Julian year, but the ** parallax is in arcseconds; the radial velocity is in km/s, but ** the pv-vector result is in AU and AU/day. ** ** 4) The RA proper motion is in terms of coordinate angle, not true ** angle. If the catalog uses arcseconds for both RA and Dec proper ** motions, the RA proper motion will need to be divided by cos(Dec) ** before use. ** ** 5) Straight-line motion at constant speed, in the inertial frame, ** is assumed. ** ** 6) An extremely small (or zero or negative) parallax is interpreted ** to mean that the object is on the "celestial sphere", the radius ** of which is an arbitrary (large) value (see the constant PXMIN). ** When the distance is overridden in this way, the status, ** initially zero, has 1 added to it. ** ** 7) If the space velocity is a significant fraction of c (see the ** constant VMAX), it is arbitrarily set to zero. When this action ** occurs, 2 is added to the status. ** ** 8) The relativistic adjustment involves an iterative calculation. ** If the process fails to converge within a set number (IMAX) of ** iterations, 4 is added to the status. ** ** 9) The inverse transformation is performed by the function ** iauPvstar. ** ** Called: ** iauS2pv spherical coordinates to pv-vector ** iauPm modulus of p-vector ** iauZp zero p-vector ** iauPn decompose p-vector into modulus and direction ** iauPdp scalar product of two p-vectors ** iauSxp multiply p-vector by scalar ** iauPmp p-vector minus p-vector ** iauPpp p-vector plus p-vector ** ** Reference: ** ** Stumpff, P., 1985, Astron.Astrophys. 144, 232-240. ** */ void iauSxp(double s, double p[3], double sp[3]) /* ** - - - - - - - ** i a u S x p ** - - - - - - - ** ** Multiply a p-vector by a scalar. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** s double scalar ** p double[3] p-vector ** ** Returned: ** sp double[3] s * p ** ** Note: ** It is permissible for p and sp to be the same array. ** */ void iauSxpv(double s, double pv[2][3], double spv[2][3]) /* ** - - - - - - - - ** i a u S x p v ** - - - - - - - - ** ** Multiply a pv-vector by a scalar. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** s double scalar ** pv double[2][3] pv-vector ** ** Returned: ** spv double[2][3] s * pv ** ** Note: ** It is permissible for pv and spv to be the same array ** ** Called: ** iauS2xpv multiply pv-vector by two scalars ** */ int iauTaitt(double tai1, double tai2, double *tt1, double *tt2) /* ** - - - - - - - - - ** i a u T a i t t ** - - - - - - - - - ** ** Time scale transformation: International Atomic Time, TAI, to ** Terrestrial Time, TT. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tai1,tai2 double TAI as a 2-part Julian Date ** ** Returned: ** tt1,tt2 double TT as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Note: ** ** tai1+tai2 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where tai1 is the Julian ** Day Number and tai2 is the fraction of a day. The returned ** tt1,tt2 follow suit. ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** */ int iauTaiut1(double tai1, double tai2, double dta, double *ut11, double *ut12) /* ** - - - - - - - - - - ** i a u T a i u t 1 ** - - - - - - - - - - ** ** Time scale transformation: International Atomic Time, TAI, to ** Universal Time, UT1. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tai1,tai2 double TAI as a 2-part Julian Date ** dta double UT1-TAI in seconds ** ** Returned: ** ut11,ut12 double UT1 as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Notes: ** ** 1) tai1+tai2 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where tai1 is the Julian ** Day Number and tai2 is the fraction of a day. The returned ** UT11,UT12 follow suit. ** ** 2) The argument dta, i.e. UT1-TAI, is an observed quantity, and is ** available from IERS tabulations. ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** */ int iauTaiutc(double tai1, double tai2, double *utc1, double *utc2) /* ** - - - - - - - - - - ** i a u T a i u t c ** - - - - - - - - - - ** ** Time scale transformation: International Atomic Time, TAI, to ** Coordinated Universal Time, UTC. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tai1,tai2 double TAI as a 2-part Julian Date (Note 1) ** ** Returned: ** utc1,utc2 double UTC as a 2-part quasi Julian Date (Notes 1-3) ** ** Returned (function value): ** int status: +1 = dubious year (Note 4) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) tai1+tai2 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where tai1 is the Julian ** Day Number and tai2 is the fraction of a day. The returned utc1 ** and utc2 form an analogous pair, except that a special convention ** is used, to deal with the problem of leap seconds - see the next ** note. ** ** 2) JD cannot unambiguously represent UTC during a leap second unless ** special measures are taken. The convention in the present ** function is that the JD day represents UTC days whether the ** length is 86399, 86400 or 86401 SI seconds. In the 1960-1972 era ** there were smaller jumps (in either direction) each time the ** linear UTC(TAI) expression was changed, and these "mini-leaps" ** are also included in the SOFA convention. ** ** 3) The function iauD2dtf can be used to transform the UTC quasi-JD ** into calendar date and clock time, including UTC leap second ** handling. ** ** 4) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the future ** to be trusted. See iauDat for further details. ** ** Called: ** iauUtctai UTC to TAI ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** */ int iauTcbtdb(double tcb1, double tcb2, double *tdb1, double *tdb2) /* ** - - - - - - - - - - ** i a u T c b t d b ** - - - - - - - - - - ** ** Time scale transformation: Barycentric Coordinate Time, TCB, to ** Barycentric Dynamical Time, TDB. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tcb1,tcb2 double TCB as a 2-part Julian Date ** ** Returned: ** tdb1,tdb2 double TDB as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Notes: ** ** 1) tcb1+tcb2 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where tcb1 is the Julian ** Day Number and tcb2 is the fraction of a day. The returned ** tdb1,tdb2 follow suit. ** ** 2) The 2006 IAU General Assembly introduced a conventional linear ** transformation between TDB and TCB. This transformation ** compensates for the drift between TCB and terrestrial time TT, ** and keeps TDB approximately centered on TT. Because the ** relationship between TT and TCB depends on the adopted solar ** system ephemeris, the degree of alignment between TDB and TT over ** long intervals will vary according to which ephemeris is used. ** Former definitions of TDB attempted to avoid this problem by ** stipulating that TDB and TT should differ only by periodic ** effects. This is a good description of the nature of the ** relationship but eluded precise mathematical formulation. The ** conventional linear relationship adopted in 2006 sidestepped ** these difficulties whilst delivering a TDB that in practice was ** consistent with values before that date. ** ** 3) TDB is essentially the same as Teph, the time argument for the ** JPL solar system ephemerides. ** ** Reference: ** ** IAU 2006 Resolution B3 ** */ int iauTcgtt(double tcg1, double tcg2, double *tt1, double *tt2) /* ** - - - - - - - - - ** i a u T c g t t ** - - - - - - - - - ** ** Time scale transformation: Geocentric Coordinate Time, TCG, to ** Terrestrial Time, TT. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tcg1,tcg2 double TCG as a 2-part Julian Date ** ** Returned: ** tt1,tt2 double TT as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Note: ** ** tcg1+tcg2 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where tcg1 is the Julian ** Day Number and tcg22 is the fraction of a day. The returned ** tt1,tt2 follow suit. ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003),. ** IERS Technical Note No. 32, BKG (2004) ** ** IAU 2000 Resolution B1.9 ** */ int iauTdbtcb(double tdb1, double tdb2, double *tcb1, double *tcb2) /* ** - - - - - - - - - - ** i a u T d b t c b ** - - - - - - - - - - ** ** Time scale transformation: Barycentric Dynamical Time, TDB, to ** Barycentric Coordinate Time, TCB. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tdb1,tdb2 double TDB as a 2-part Julian Date ** ** Returned: ** tcb1,tcb2 double TCB as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Notes: ** ** 1) tdb1+tdb2 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where tdb1 is the Julian ** Day Number and tdb2 is the fraction of a day. The returned ** tcb1,tcb2 follow suit. ** ** 2) The 2006 IAU General Assembly introduced a conventional linear ** transformation between TDB and TCB. This transformation ** compensates for the drift between TCB and terrestrial time TT, ** and keeps TDB approximately centered on TT. Because the ** relationship between TT and TCB depends on the adopted solar ** system ephemeris, the degree of alignment between TDB and TT over ** long intervals will vary according to which ephemeris is used. ** Former definitions of TDB attempted to avoid this problem by ** stipulating that TDB and TT should differ only by periodic ** effects. This is a good description of the nature of the ** relationship but eluded precise mathematical formulation. The ** conventional linear relationship adopted in 2006 sidestepped ** these difficulties whilst delivering a TDB that in practice was ** consistent with values before that date. ** ** 3) TDB is essentially the same as Teph, the time argument for the ** JPL solar system ephemerides. ** ** Reference: ** ** IAU 2006 Resolution B3 ** */ int iauTdbtt(double tdb1, double tdb2, double dtr, double *tt1, double *tt2 ) /* ** - - - - - - - - - ** i a u T d b t t ** - - - - - - - - - ** ** Time scale transformation: Barycentric Dynamical Time, TDB, to ** Terrestrial Time, TT. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tdb1,tdb2 double TDB as a 2-part Julian Date ** dtr double TDB-TT in seconds ** ** Returned: ** tt1,tt2 double TT as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Notes: ** ** 1) tdb1+tdb2 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where tdb1 is the Julian ** Day Number and tdb2 is the fraction of a day. The returned ** tt1,tt2 follow suit. ** ** 2) The argument dtr represents the quasi-periodic component of the ** GR transformation between TT and TCB. It is dependent upon the ** adopted solar-system ephemeris, and can be obtained by numerical ** integration, by interrogating a precomputed time ephemeris or by ** evaluating a model such as that implemented in the SOFA function ** iauDtdb. The quantity is dominated by an annual term of 1.7 ms ** amplitude. ** ** 3) TDB is essentially the same as Teph, the time argument for the ** JPL solar system ephemerides. ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** IAU 2006 Resolution 3 ** */ int iauTf2a(char s, int ihour, int imin, double sec, double *rad) /* ** - - - - - - - - ** i a u T f 2 a ** - - - - - - - - ** ** Convert hours, minutes, seconds to radians. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** s char sign: '-' = negative, otherwise positive ** ihour int hours ** imin int minutes ** sec double seconds ** ** Returned: ** rad double angle in radians ** ** Returned (function value): ** int status: 0 = OK ** 1 = ihour outside range 0-23 ** 2 = imin outside range 0-59 ** 3 = sec outside range 0-59.999... ** ** Notes: ** ** 1) The result is computed even if any of the range checks fail. ** ** 2) Negative ihour, imin and/or sec produce a warning status, but ** the absolute value is used in the conversion. ** ** 3) If there are multiple errors, the status value reflects only the ** first, the smallest taking precedence. ** */ int iauTf2d(char s, int ihour, int imin, double sec, double *days) /* ** - - - - - - - - ** i a u T f 2 d ** - - - - - - - - ** ** Convert hours, minutes, seconds to days. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** s char sign: '-' = negative, otherwise positive ** ihour int hours ** imin int minutes ** sec double seconds ** ** Returned: ** days double interval in days ** ** Returned (function value): ** int status: 0 = OK ** 1 = ihour outside range 0-23 ** 2 = imin outside range 0-59 ** 3 = sec outside range 0-59.999... ** ** Notes: ** ** 1) The result is computed even if any of the range checks fail. ** ** 2) Negative ihour, imin and/or sec produce a warning status, but ** the absolute value is used in the conversion. ** ** 3) If there are multiple errors, the status value reflects only the ** first, the smallest taking precedence. ** */ void iauTr(double r[3][3], double rt[3][3]) /* ** - - - - - - ** i a u T r ** - - - - - - ** ** Transpose an r-matrix. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** r double[3][3] r-matrix ** ** Returned: ** rt double[3][3] transpose ** ** Note: ** It is permissible for r and rt to be the same array. ** ** Called: ** iauCr copy r-matrix ** */ void iauTrxp(double r[3][3], double p[3], double trp[3]) /* ** - - - - - - - - ** i a u T r x p ** - - - - - - - - ** ** Multiply a p-vector by the transpose of an r-matrix. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** r double[3][3] r-matrix ** p double[3] p-vector ** ** Returned: ** trp double[3] r * p ** ** Note: ** It is permissible for p and trp to be the same array. ** ** Called: ** iauTr transpose r-matrix ** iauRxp product of r-matrix and p-vector ** */ void iauTrxpv(double r[3][3], double pv[2][3], double trpv[2][3]) /* ** - - - - - - - - - ** i a u T r x p v ** - - - - - - - - - ** ** Multiply a pv-vector by the transpose of an r-matrix. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Given: ** r double[3][3] r-matrix ** pv double[2][3] pv-vector ** ** Returned: ** trpv double[2][3] r * pv ** ** Note: ** It is permissible for pv and trpv to be the same array. ** ** Called: ** iauTr transpose r-matrix ** iauRxpv product of r-matrix and pv-vector ** */ int iauTttai(double tt1, double tt2, double *tai1, double *tai2) /* ** - - - - - - - - - ** i a u T t t a i ** - - - - - - - - - ** ** Time scale transformation: Terrestrial Time, TT, to International ** Atomic Time, TAI. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tt1,tt2 double TT as a 2-part Julian Date ** ** Returned: ** tai1,tai2 double TAI as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Note: ** ** tt1+tt2 is Julian Date, apportioned in any convenient way between ** the two arguments, for example where tt1 is the Julian Day Number ** and tt2 is the fraction of a day. The returned tai1,tai2 follow ** suit. ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** */ int iauTttcg(double tt1, double tt2, double *tcg1, double *tcg2) /* ** - - - - - - - - - ** i a u T t t c g ** - - - - - - - - - ** ** Time scale transformation: Terrestrial Time, TT, to Geocentric ** Coordinate Time, TCG. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tt1,tt2 double TT as a 2-part Julian Date ** ** Returned: ** tcg1,tcg2 double TCG as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Note: ** ** tt1+tt2 is Julian Date, apportioned in any convenient way between ** the two arguments, for example where tt1 is the Julian Day Number ** and tt2 is the fraction of a day. The returned tcg1,tcg2 follow ** suit. ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** IAU 2000 Resolution B1.9 ** */ int iauTttdb(double tt1, double tt2, double dtr, double *tdb1, double *tdb2) /* ** - - - - - - - - - ** i a u T t t d b ** - - - - - - - - - ** ** Time scale transformation: Terrestrial Time, TT, to Barycentric ** Dynamical Time, TDB. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tt1,tt2 double TT as a 2-part Julian Date ** dtr double TDB-TT in seconds ** ** Returned: ** tdb1,tdb2 double TDB as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Notes: ** ** 1) tt1+tt2 is Julian Date, apportioned in any convenient way between ** the two arguments, for example where tt1 is the Julian Day Number ** and tt2 is the fraction of a day. The returned tdb1,tdb2 follow ** suit. ** ** 2) The argument dtr represents the quasi-periodic component of the ** GR transformation between TT and TCB. It is dependent upon the ** adopted solar-system ephemeris, and can be obtained by numerical ** integration, by interrogating a precomputed time ephemeris or by ** evaluating a model such as that implemented in the SOFA function ** iauDtdb. The quantity is dominated by an annual term of 1.7 ms ** amplitude. ** ** 3) TDB is essentially the same as Teph, the time argument for the JPL ** solar system ephemerides. ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** IAU 2006 Resolution 3 ** */ int iauTtut1(double tt1, double tt2, double dt, double *ut11, double *ut12) /* ** - - - - - - - - - ** i a u T t u t 1 ** - - - - - - - - - ** ** Time scale transformation: Terrestrial Time, TT, to Universal Time, ** UT1. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** tt1,tt2 double TT as a 2-part Julian Date ** dt double TT-UT1 in seconds ** ** Returned: ** ut11,ut12 double UT1 as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Notes: ** ** 1) tt1+tt2 is Julian Date, apportioned in any convenient way between ** the two arguments, for example where tt1 is the Julian Day Number ** and tt2 is the fraction of a day. The returned ut11,ut12 follow ** suit. ** ** 2) The argument dt is classical Delta T. ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** */ int iauUt1tai(double ut11, double ut12, double dta, double *tai1, double *tai2) /* ** - - - - - - - - - - ** i a u U t 1 t a i ** - - - - - - - - - - ** ** Time scale transformation: Universal Time, UT1, to International ** Atomic Time, TAI. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** ut11,ut12 double UT1 as a 2-part Julian Date ** dta double UT1-TAI in seconds ** ** Returned: ** tai1,tai2 double TAI as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Notes: ** ** 1) ut11+ut12 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where ut11 is the Julian ** Day Number and ut12 is the fraction of a day. The returned ** tai1,tai2 follow suit. ** ** 2) The argument dta, i.e. UT1-TAI, is an observed quantity, and is ** available from IERS tabulations. ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** */ int iauUt1tt(double ut11, double ut12, double dt, double *tt1, double *tt2) /* ** - - - - - - - - - ** i a u U t 1 t t ** - - - - - - - - - ** ** Time scale transformation: Universal Time, UT1, to Terrestrial ** Time, TT. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** ut11,ut12 double UT1 as a 2-part Julian Date ** dt double TT-UT1 in seconds ** ** Returned: ** tt1,tt2 double TT as a 2-part Julian Date ** ** Returned (function value): ** int status: 0 = OK ** ** Notes: ** ** 1) ut11+ut12 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where ut11 is the Julian ** Day Number and ut12 is the fraction of a day. The returned ** tt1,tt2 follow suit. ** ** 2) The argument dt is classical Delta T. ** ** Reference: ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** */ int iauUt1utc(double ut11, double ut12, double dut1, double *utc1, double *utc2) /* ** - - - - - - - - - - ** i a u U t 1 u t c ** - - - - - - - - - - ** ** Time scale transformation: Universal Time, UT1, to Coordinated ** Universal Time, UTC. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** ut11,ut12 double UT1 as a 2-part Julian Date (Note 1) ** dut1 double Delta UT1: UT1-UTC in seconds (Note 2) ** ** Returned: ** utc1,utc2 double UTC as a 2-part quasi Julian Date (Notes 3,4) ** ** Returned (function value): ** int status: +1 = dubious year (Note 5) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) ut11+ut12 is Julian Date, apportioned in any convenient way ** between the two arguments, for example where ut11 is the Julian ** Day Number and ut12 is the fraction of a day. The returned utc1 ** and utc2 form an analogous pair, except that a special convention ** is used, to deal with the problem of leap seconds - see Note 3. ** ** 2) Delta UT1 can be obtained from tabulations provided by the ** International Earth Rotation and Reference Systems Service. The ** value changes abruptly by 1s at a leap second; however, close to ** a leap second the algorithm used here is tolerant of the "wrong" ** choice of value being made. ** ** 3) JD cannot unambiguously represent UTC during a leap second unless ** special measures are taken. The convention in the present ** function is that the returned quasi JD day UTC1+UTC2 represents ** UTC days whether the length is 86399, 86400 or 86401 SI seconds. ** ** 4) The function iauD2dtf can be used to transform the UTC quasi-JD ** into calendar date and clock time, including UTC leap second ** handling. ** ** 5) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the future ** to be trusted. See iauDat for further details. ** ** Called: ** iauJd2cal JD to Gregorian calendar ** iauDat delta(AT) = TAI-UTC ** iauCal2jd Gregorian calendar to JD ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** */ int iauUtctai(double utc1, double utc2, double *tai1, double *tai2) /* ** - - - - - - - - - - ** i a u U t c t a i ** - - - - - - - - - - ** ** Time scale transformation: Coordinated Universal Time, UTC, to ** International Atomic Time, TAI. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** utc1,utc2 double UTC as a 2-part quasi Julian Date (Notes 1-4) ** ** Returned: ** tai1,tai2 double TAI as a 2-part Julian Date (Note 5) ** ** Returned (function value): ** int status: +1 = dubious year (Note 3) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any ** convenient way between the two arguments, for example where utc1 ** is the Julian Day Number and utc2 is the fraction of a day. ** ** 2) JD cannot unambiguously represent UTC during a leap second unless ** special measures are taken. The convention in the present ** function is that the JD day represents UTC days whether the ** length is 86399, 86400 or 86401 SI seconds. In the 1960-1972 era ** there were smaller jumps (in either direction) each time the ** linear UTC(TAI) expression was changed, and these "mini-leaps" ** are also included in the SOFA convention. ** ** 3) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the future ** to be trusted. See iauDat for further details. ** ** 4) The function iauDtf2d converts from calendar date and time of day ** into 2-part Julian Date, and in the case of UTC implements the ** leap-second-ambiguity convention described above. ** ** 5) The returned TAI1,TAI2 are such that their sum is the TAI Julian ** Date. ** ** Called: ** iauJd2cal JD to Gregorian calendar ** iauDat delta(AT) = TAI-UTC ** iauCal2jd Gregorian calendar to JD ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** */ int iauUtcut1(double utc1, double utc2, double dut1, double *ut11, double *ut12) /* ** - - - - - - - - - - ** i a u U t c u t 1 ** - - - - - - - - - - ** ** Time scale transformation: Coordinated Universal Time, UTC, to ** Universal Time, UT1. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards of Fundamental Astronomy) software collection. ** ** Status: canonical. ** ** Given: ** utc1,utc2 double UTC as a 2-part quasi Julian Date (Notes 1-4) ** dut1 double Delta UT1 = UT1-UTC in seconds (Note 5) ** ** Returned: ** ut11,ut12 double UT1 as a 2-part Julian Date (Note 6) ** ** Returned (function value): ** int status: +1 = dubious year (Note 3) ** 0 = OK ** -1 = unacceptable date ** ** Notes: ** ** 1) utc1+utc2 is quasi Julian Date (see Note 2), apportioned in any ** convenient way between the two arguments, for example where utc1 ** is the Julian Day Number and utc2 is the fraction of a day. ** ** 2) JD cannot unambiguously represent UTC during a leap second unless ** special measures are taken. The convention in the present ** function is that the JD day represents UTC days whether the ** length is 86399, 86400 or 86401 SI seconds. ** ** 3) The warning status "dubious year" flags UTCs that predate the ** introduction of the time scale or that are too far in the future ** to be trusted. See iauDat for further details. ** ** 4) The function iauDtf2d converts from calendar date and time of ** day into 2-part Julian Date, and in the case of UTC implements ** the leap-second-ambiguity convention described above. ** ** 5) Delta UT1 can be obtained from tabulations provided by the ** International Earth Rotation and Reference Systems Service. ** It is the caller's responsibility to supply a dut1 argument ** containing the UT1-UTC value that matches the given UTC. ** ** 6) The returned ut11,ut12 are such that their sum is the UT1 Julian ** Date. ** ** References: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** ** Explanatory Supplement to the Astronomical Almanac, ** P. Kenneth Seidelmann (ed), University Science Books (1992) ** ** Called: ** iauJd2cal JD to Gregorian calendar ** iauDat delta(AT) = TAI-UTC ** iauUtctai UTC to TAI ** iauTaiut1 TAI to UT1 ** */ void iauXy06(double date1, double date2, double *x, double *y) /* ** - - - - - - - - ** i a u X y 0 6 ** - - - - - - - - ** ** X,Y coordinates of celestial intermediate pole from series based ** on IAU 2006 precession and IAU 2000A nutation. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: canonical model. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** x,y double CIP X,Y coordinates (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The X,Y coordinates are those of the unit vector towards the ** celestial intermediate pole. They represent the combined effects ** of frame bias, precession and nutation. ** ** 3) The fundamental arguments used are as adopted in IERS Conventions ** (2003) and are from Simon et al. (1994) and Souchay et al. ** (1999). ** ** 4) This is an alternative to the angles-based method, via the SOFA ** function iauFw2xy and as used in iauXys06a for example. The two ** methods agree at the 1 microarcsecond level (at present), a ** negligible amount compared with the intrinsic accuracy of the ** models. However, it would be unwise to mix the two methods ** (angles-based and series-based) in a single application. ** ** Called: ** iauFal03 mean anomaly of the Moon ** iauFalp03 mean anomaly of the Sun ** iauFaf03 mean argument of the latitude of the Moon ** iauFad03 mean elongation of the Moon from the Sun ** iauFaom03 mean longitude of the Moon's ascending node ** iauFame03 mean longitude of Mercury ** iauFave03 mean longitude of Venus ** iauFae03 mean longitude of Earth ** iauFama03 mean longitude of Mars ** iauFaju03 mean longitude of Jupiter ** iauFasa03 mean longitude of Saturn ** iauFaur03 mean longitude of Uranus ** iauFane03 mean longitude of Neptune ** iauFapa03 general accumulated precession in longitude ** ** References: ** ** Capitaine, N., Wallace, P.T. & Chapront, J., 2003, ** Astron.Astrophys., 412, 567 ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 ** ** McCarthy, D. D., Petit, G. (eds.), 2004, IERS Conventions (2003), ** IERS Technical Note No. 32, BKG ** ** Simon, J.L., Bretagnon, P., Chapront, J., Chapront-Touze, M., ** Francou, G. & Laskar, J., Astron.Astrophys., 1994, 282, 663 ** ** Souchay, J., Loysel, B., Kinoshita, H., Folgueira, M., 1999, ** Astron.Astrophys.Supp.Ser. 135, 111 ** ** Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** */ void iauXys00a(double date1, double date2, double *x, double *y, double *s) /* ** - - - - - - - - - - ** i a u X y s 0 0 a ** - - - - - - - - - - ** ** For a given TT date, compute the X,Y coordinates of the Celestial ** Intermediate Pole and the CIO locator s, using the IAU 2000A ** precession-nutation model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** x,y double Celestial Intermediate Pole (Note 2) ** s double the CIO locator s (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The Celestial Intermediate Pole coordinates are the x,y ** components of the unit vector in the Geocentric Celestial ** Reference System. ** ** 3) The CIO locator s (in radians) positions the Celestial ** Intermediate Origin on the equator of the CIP. ** ** 4) A faster, but slightly less accurate result (about 1 mas for ** X,Y), can be obtained by using instead the iauXys00b function. ** ** Called: ** iauPnm00a classical NPB matrix, IAU 2000A ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauS00 the CIO locator s, given X,Y, IAU 2000A ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ void iauXys00b(double date1, double date2, double *x, double *y, double *s) /* ** - - - - - - - - - - ** i a u X y s 0 0 b ** - - - - - - - - - - ** ** For a given TT date, compute the X,Y coordinates of the Celestial ** Intermediate Pole and the CIO locator s, using the IAU 2000B ** precession-nutation model. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** x,y double Celestial Intermediate Pole (Note 2) ** s double the CIO locator s (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The Celestial Intermediate Pole coordinates are the x,y ** components of the unit vector in the Geocentric Celestial ** Reference System. ** ** 3) The CIO locator s (in radians) positions the Celestial ** Intermediate Origin on the equator of the CIP. ** ** 4) The present function is faster, but slightly less accurate (about ** 1 mas in X,Y), than the iauXys00a function. ** ** Called: ** iauPnm00b classical NPB matrix, IAU 2000B ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauS00 the CIO locator s, given X,Y, IAU 2000A ** ** Reference: ** ** McCarthy, D. D., Petit, G. (eds.), IERS Conventions (2003), ** IERS Technical Note No. 32, BKG (2004) ** */ void iauXys06a(double date1, double date2, double *x, double *y, double *s) /* ** - - - - - - - - - - ** i a u X y s 0 6 a ** - - - - - - - - - - ** ** For a given TT date, compute the X,Y coordinates of the Celestial ** Intermediate Pole and the CIO locator s, using the IAU 2006 ** precession and IAU 2000A nutation models. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: support function. ** ** Given: ** date1,date2 double TT as a 2-part Julian Date (Note 1) ** ** Returned: ** x,y double Celestial Intermediate Pole (Note 2) ** s double the CIO locator s (Note 2) ** ** Notes: ** ** 1) The TT date date1+date2 is a Julian Date, apportioned in any ** convenient way between the two arguments. For example, ** JD(TT)=2450123.7 could be expressed in any of these ways, ** among others: ** ** date1 date2 ** ** 2450123.7 0.0 (JD method) ** 2451545.0 -1421.3 (J2000 method) ** 2400000.5 50123.2 (MJD method) ** 2450123.5 0.2 (date & time method) ** ** The JD method is the most natural and convenient to use in ** cases where the loss of several decimal digits of resolution ** is acceptable. The J2000 method is best matched to the way ** the argument is handled internally and will deliver the ** optimum resolution. The MJD method and the date & time methods ** are both good compromises between resolution and convenience. ** ** 2) The Celestial Intermediate Pole coordinates are the x,y components ** of the unit vector in the Geocentric Celestial Reference System. ** ** 3) The CIO locator s (in radians) positions the Celestial ** Intermediate Origin on the equator of the CIP. ** ** 4) Series-based solutions for generating X and Y are also available: ** see Capitaine & Wallace (2006) and iauXy06. ** ** Called: ** iauPnm06a classical NPB matrix, IAU 2006/2000A ** iauBpn2xy extract CIP X,Y coordinates from NPB matrix ** iauS06 the CIO locator s, given X,Y, IAU 2006 ** ** References: ** ** Capitaine, N. & Wallace, P.T., 2006, Astron.Astrophys. 450, 855 ** ** Wallace, P.T. & Capitaine, N., 2006, Astron.Astrophys. 459, 981 ** */ void iauZp(double p[3]) /* ** - - - - - - ** i a u Z p ** - - - - - - ** ** Zero a p-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Returned: ** p double[3] p-vector ** */ void iauZpv(double pv[2][3]) /* ** - - - - - - - ** i a u Z p v ** - - - - - - - ** ** Zero a pv-vector. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Returned: ** pv double[2][3] pv-vector ** ** Called: ** iauZp zero p-vector ** */ void iauZr(double r[3][3]) /* ** - - - - - - ** i a u Z r ** - - - - - - ** ** Initialize an r-matrix to the null matrix. ** ** This function is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Status: vector/matrix support function. ** ** Returned: ** r double[3][3] r-matrix ** */ copyr.lis 2015 January 5 COPYRIGHT NOTICE Text equivalent to the following appears at the end of every SOFA routine. (There are small formatting differences between the Fortran and C versions.) *+---------------------------------------------------------------------- * * Copyright (C) 2015 * Standards Of Fundamental Astronomy Board * of the International Astronomical Union. * * ===================== * SOFA Software License * ===================== * * NOTICE TO USER: * * BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND * CONDITIONS WHICH APPLY TO ITS USE. * * 1. The Software is owned by the IAU SOFA Board ("SOFA"). * * 2. Permission is granted to anyone to use the SOFA software for any * purpose, including commercial applications, free of charge and * without payment of royalties, subject to the conditions and * restrictions listed below. * * 3. You (the user) may copy and distribute SOFA source code to others, * and use and adapt its code and algorithms in your own software, * on a world-wide, royalty-free basis. That portion of your * distribution that does not consist of intact and unchanged copies * of SOFA source code files is a "derived work" that must comply * with the following requirements: * * a) Your work shall be marked or carry a statement that it * (i) uses routines and computations derived by you from * software provided by SOFA under license to you; and * (ii) does not itself constitute software provided by and/or * endorsed by SOFA. * * b) The source code of your derived work must contain descriptions * of how the derived work is based upon, contains and/or differs * from the original SOFA software. * * c) The names of all routines in your derived work shall not * include the prefix "iau" or "sofa" or trivial modifications * thereof such as changes of case. * * d) The origin of the SOFA components of your derived work must * not be misrepresented; you must not claim that you wrote the * original software, nor file a patent application for SOFA * software or algorithms embedded in the SOFA software. * * e) These requirements must be reproduced intact in any source * distribution and shall apply to anyone to whom you have * granted a further right to modify the source code of your * derived work. * * Note that, as originally distributed, the SOFA software is * intended to be a definitive implementation of the IAU standards, * and consequently third-party modifications are discouraged. All * variations, no matter how minor, must be explicitly marked as * such, as explained above. * * 4. You shall not cause the SOFA software to be brought into * disrepute, either by misuse, or use for inappropriate tasks, or * by inappropriate modification. * * 5. The SOFA software is provided "as is" and SOFA makes no warranty * as to its use or performance. SOFA does not and cannot warrant * the performance or results which the user may obtain by using the * SOFA software. SOFA makes no warranties, express or implied, as * to non-infringement of third party rights, merchantability, or * fitness for any particular purpose. In no event will SOFA be * liable to the user for any consequential, incidental, or special * damages, including any lost profits or lost savings, even if a * SOFA representative has been advised of such damages, or for any * claim by any third party. * * 6. The provision of any version of the SOFA software under the terms * and conditions specified herein does not imply that future * versions will also be made available under the same terms and * conditions. * * In any published work or commercial product which uses the SOFA * software directly, acknowledgement (see www.iausofa.org) is * appreciated. * * Correspondence concerning SOFA software should be addressed as * follows: * * By email: sofa@ukho.gov.uk * By post: IAU SOFA Center * HM Nautical Almanac Office * UK Hydrographic Office * Admiralty Way, Taunton * Somerset, TA1 2DN * United Kingdom * *----------------------------------------------------------------------- consts.lis 2008 September 30 SOFA Fortran constants ---------------------- These must be used exactly as presented below. * Pi DOUBLE PRECISION DPI PARAMETER ( DPI = 3.141592653589793238462643D0 ) * 2Pi DOUBLE PRECISION D2PI PARAMETER ( D2PI = 6.283185307179586476925287D0 ) * Radians to hours DOUBLE PRECISION DR2H PARAMETER ( DR2H = 3.819718634205488058453210D0 ) * Radians to seconds DOUBLE PRECISION DR2S PARAMETER ( DR2S = 13750.98708313975701043156D0 ) * Radians to degrees DOUBLE PRECISION DR2D PARAMETER ( DR2D = 57.29577951308232087679815D0 ) * Radians to arc seconds DOUBLE PRECISION DR2AS PARAMETER ( DR2AS = 206264.8062470963551564734D0 ) * Hours to radians DOUBLE PRECISION DH2R PARAMETER ( DH2R = 0.2617993877991494365385536D0 ) * Seconds to radians DOUBLE PRECISION DS2R PARAMETER ( DS2R = 7.272205216643039903848712D-5 ) * Degrees to radians DOUBLE PRECISION DD2R PARAMETER ( DD2R = 1.745329251994329576923691D-2 ) * Arc seconds to radians DOUBLE PRECISION DAS2R PARAMETER ( DAS2R = 4.848136811095359935899141D-6 ) SOFA C constants ---------------- The constants used by the C version of SOFA are defined in the header file sofam.h. #ifndef SOFAMHDEF #define SOFAMHDEF /* ** - - - - - - - - ** s o f a m . h ** - - - - - - - - ** ** Macros used by SOFA library. ** ** This file is part of the International Astronomical Union's ** SOFA (Standards Of Fundamental Astronomy) software collection. ** ** Please note that the constants defined below are to be used only in ** the context of the SOFA software, and have no other official IAU ** status. In addition, self consistency is not guaranteed. ** ** This revision: 2013 August 27 ** ** SOFA release 2015-02-09 ** ** Copyright (C) 2015 IAU SOFA Board. See notes at end. */ /* Star-independent astrometry parameters */ typedef struct { double pmt; /* PM time interval (SSB, Julian years) */ double eb[3]; /* SSB to observer (vector, au) */ double eh[3]; /* Sun to observer (unit vector) */ double em; /* distance from Sun to observer (au) */ double v[3]; /* barycentric observer velocity (vector, c) */ double bm1; /* sqrt(1-|v|^2): reciprocal of Lorenz factor */ double bpn[3][3]; /* bias-precession-nutation matrix */ double along; /* longitude + s' + dERA(DUT) (radians) */ double phi; /* geodetic latitude (radians) */ double xpl; /* polar motion xp wrt local meridian (radians) */ double ypl; /* polar motion yp wrt local meridian (radians) */ double sphi; /* sine of geodetic latitude */ double cphi; /* cosine of geodetic latitude */ double diurab; /* magnitude of diurnal aberration vector */ double eral; /* "local" Earth rotation angle (radians) */ double refa; /* refraction constant A (radians) */ double refb; /* refraction constant B (radians) */ } iauASTROM; /* (Vectors eb, eh, em and v are all with respect to BCRS axes.) */ /* Body parameters for light deflection */ typedef struct { double bm; /* mass of the body (solar masses) */ double dl; /* deflection limiter (radians^2/2) */ double pv[2][3]; /* barycentric PV of the body (au, au/day) */ } iauLDBODY; /* Pi */ #define DPI (3.141592653589793238462643) /* 2Pi */ #define D2PI (6.283185307179586476925287) /* Radians to degrees */ #define DR2D (57.29577951308232087679815) /* Degrees to radians */ #define DD2R (1.745329251994329576923691e-2) /* Radians to arcseconds */ #define DR2AS (206264.8062470963551564734) /* Arcseconds to radians */ #define DAS2R (4.848136811095359935899141e-6) /* Seconds of time to radians */ #define DS2R (7.272205216643039903848712e-5) /* Arcseconds in a full circle */ #define TURNAS (1296000.0) /* Milliarcseconds to radians */ #define DMAS2R (DAS2R / 1e3) /* Length of tropical year B1900 (days) */ #define DTY (365.242198781) /* Seconds per day. */ #define DAYSEC (86400.0) /* Days per Julian year */ #define DJY (365.25) /* Days per Julian century */ #define DJC (36525.0) /* Days per Julian millennium */ #define DJM (365250.0) /* Reference epoch (J2000.0), Julian Date */ #define DJ00 (2451545.0) /* Julian Date of Modified Julian Date zero */ #define DJM0 (2400000.5) /* Reference epoch (J2000.0), Modified Julian Date */ #define DJM00 (51544.5) /* 1977 Jan 1.0 as MJD */ #define DJM77 (43144.0) /* TT minus TAI (s) */ #define TTMTAI (32.184) /* Astronomical unit (m) */ #define DAU (149597870e3) /* Speed of light (m/s) */ #define CMPS 299792458.0 /* Light time for 1 au (s) */ #define AULT 499.004782 /* Speed of light (AU per day) */ #define DC (DAYSEC / AULT) /* L_G = 1 - d(TT)/d(TCG) */ #define ELG (6.969290134e-10) /* L_B = 1 - d(TDB)/d(TCB), and TDB (s) at TAI 1977/1/1.0 */ #define ELB (1.550519768e-8) #define TDB0 (-6.55e-5) /* Schwarzschild radius of the Sun (au) */ /* = 2 * 1.32712440041e20 / (2.99792458e8)^2 / 1.49597870700e11 */ #define SRS 1.97412574336e-8 /* dint(A) - truncate to nearest whole number towards zero (double) */ #define dint(A) ((A)<0.0?ceil(A):floor(A)) /* dnint(A) - round to nearest whole number (double) */ #define dnint(A) ((A)<0.0?ceil((A)-0.5):floor((A)+0.5)) /* dsign(A,B) - magnitude of A with sign of B (double) */ #define dsign(A,B) ((B)<0.0?-fabs(A):fabs(A)) /* max(A,B) - larger (most +ve) of two numbers (generic) */ #define gmax(A,B) (((A)>(B))?(A):(B)) /* min(A,B) - smaller (least +ve) of two numbers (generic) */ #define gmin(A,B) (((A)<(B))?(A):(B)) /* Reference ellipsoids */ #define WGS84 1 #define GRS80 2 #define WGS72 3 #endif /*---------------------------------------------------------------------- ** ** Copyright (C) 2015 ** Standards Of Fundamental Astronomy Board ** of the International Astronomical Union. ** ** ===================== ** SOFA Software License ** ===================== ** ** NOTICE TO USER: ** ** BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING SIX TERMS AND ** CONDITIONS WHICH APPLY TO ITS USE. ** ** 1. The Software is owned by the IAU SOFA Board ("SOFA"). ** ** 2. Permission is granted to anyone to use the SOFA software for any ** purpose, including commercial applications, free of charge and ** without payment of royalties, subject to the conditions and ** restrictions listed below. ** ** 3. You (the user) may copy and distribute SOFA source code to others, ** and use and adapt its code and algorithms in your own software, ** on a world-wide, royalty-free basis. That portion of your ** distribution that does not consist of intact and unchanged copies ** of SOFA source code files is a "derived work" that must comply ** with the following requirements: ** ** a) Your work shall be marked or carry a statement that it ** (i) uses routines and computations derived by you from ** software provided by SOFA under license to you; and ** (ii) does not itself constitute software provided by and/or ** endorsed by SOFA. ** ** b) The source code of your derived work must contain descriptions ** of how the derived work is based upon, contains and/or differs ** from the original SOFA software. ** ** c) The names of all routines in your derived work shall not ** include the prefix "iau" or "sofa" or trivial modifications ** thereof such as changes of case. ** ** d) The origin of the SOFA components of your derived work must ** not be misrepresented; you must not claim that you wrote the ** original software, nor file a patent application for SOFA ** software or algorithms embedded in the SOFA software. ** ** e) These requirements must be reproduced intact in any source ** distribution and shall apply to anyone to whom you have ** granted a further right to modify the source code of your ** derived work. ** ** Note that, as originally distributed, the SOFA software is ** intended to be a definitive implementation of the IAU standards, ** and consequently third-party modifications are discouraged. All ** variations, no matter how minor, must be explicitly marked as ** such, as explained above. ** ** 4. You shall not cause the SOFA software to be brought into ** disrepute, either by misuse, or use for inappropriate tasks, or ** by inappropriate modification. ** ** 5. The SOFA software is provided "as is" and SOFA makes no warranty ** as to its use or performance. SOFA does not and cannot warrant ** the performance or results which the user may obtain by using the ** SOFA software. SOFA makes no warranties, express or implied, as ** to non-infringement of third party rights, merchantability, or ** fitness for any particular purpose. In no event will SOFA be ** liable to the user for any consequential, incidental, or special ** damages, including any lost profits or lost savings, even if a ** SOFA representative has been advised of such damages, or for any ** claim by any third party. ** ** 6. The provision of any version of the SOFA software under the terms ** and conditions specified herein does not imply that future ** versions will also be made available under the same terms and ** conditions. * ** In any published work or commercial product which uses the SOFA ** software directly, acknowledgement (see www.iausofa.org) is ** appreciated. ** ** Correspondence concerning SOFA software should be addressed as ** follows: ** ** By email: sofa@ukho.gov.uk ** By post: IAU SOFA Center ** HM Nautical Almanac Office ** UK Hydrographic Office ** Admiralty Way, Taunton ** Somerset, TA1 2DN ** United Kingdom ** **--------------------------------------------------------------------*/ board.lis 2014 February 20 IAU STANDARDS OF FUNDAMENTAL ASTRONOMY BOARD Current Membership John Bangert United States Naval Observatory, retired Steven Bell Her Majesty's Nautical Almanac Office Nicole Capitaine Paris Observatory William Folkner Jet Propulsion Laboratory Catherine Hohenkerk Her Majesty's Nautical Almanac Office (Chair) Jinling Li Shanghai Astronomical Observatory Brian Luzum United States Naval Observatory (IERS) Zinovy Malkin Pulkovo Observatory, St Petersburg Jeffrey Percival University of Wisconsin Scott Ransom National Radio Astronomy Observatory Patrick Wallace RAL Space, retired Past Members Mark Calabretta Australia Telescope National Facility, retired Wim Brouw University of Groningen Anne-Marie Gontier Paris Observatory George Hobbs Australia Telescope National Facility George Kaplan United States Naval Observatory Dennis McCarthy United States Naval Observatory Skip Newhall Jet Propulsion Laboratory Jin Wen-Jing Shanghai Observatory The e-mail for the Board chair is Catherine.Hohenkerk@ukho.gov.uk sofa/20150209/c/doc/sofa_lib.lis0000644000113000011300000007107712507252057015153 0ustar bellsbellssofa_lib.lis 2015 January 30 ---------------------- SOFA Astronomy Library ---------------------- PREFACE The routines described here comprise the SOFA astronomy library. Their general appearance and coding style conforms to conventions agreed by the SOFA Board, and their functions, names and algorithms have been ratified by the Board. Procedures for soliciting and agreeing additions to the library are still evolving. PROGRAMMING LANGUAGES The SOFA routines are available in two programming languages at present: Fortran 77 and ANSI C. Except for a single obsolete Fortran routine, which has no C equivalent, there is a one-to-one relationship between the two language versions. The naming convention is such that a SOFA routine referred to generically as "EXAMPL" exists as a Fortran subprogram iau_EXAMPL and a C function iauExampl. The calls for the two versions are very similar, with the same arguments in the same order. In a few cases, the C equivalent of a Fortran SUBROUTINE subprogram uses a return value rather than an argument. GENERAL PRINCIPLES The principal function of the SOFA Astronomy Library is to provide definitive algorithms. A secondary function is to provide software suitable for convenient direct use by writers of astronomical applications. The astronomy routines call on the SOFA vector/matrix library routines, which are separately listed. The routines are designed to exploit the full floating-point accuracy of the machines on which they run, and not to rely on compiler optimizations. Within these constraints, the intention is that the code corresponds to the published formulation (if any). Dates are always Julian Dates (except in calendar conversion routines) and are expressed as two double precision numbers which sum to the required value. A distinction is made between routines that implement IAU-approved models and those that use those models to create other results. The former are referred to as "canonical models" in the preamble comments; the latter are described as "support routines". Using the library requires knowledge of positional astronomy and time-scales. These topics are covered in "Explanatory Supplement to the Astronomical Almanac", 3rd Edition, Sean E. Urban & P. Kenneth Seidelmann (eds.), University Science Books, 2013. Recent developments are documented in the scientific journals, and references to the relevant papers are given in the SOFA code as required. The IERS Conventions are also an essential reference. The routines concerned with Earth attitude (precession-nutation etc.) are described in the SOFA document sofa_pn.pdf. Those concerned with transformations between different time scales are described in sofa_ts_f.pdf (Fortran) and sofa_ts_c.pdf (C). Those concerned with astrometric transformations are described in sofa_ast_f.pdf (Fortran) and sofa_ast_c (C). ROUTINES Calendars CAL2JD Gregorian calendar to Julian Day number EPB Julian Date to Besselian Epoch EPB2JD Besselian Epoch to Julian Date EPJ Julian Date to Julian Epoch EPJ2JD Julian Epoch to Julian Date JD2CAL Julian Date to Gregorian year, month, day, fraction JDCALF Julian Date to Gregorian date for formatted output Astrometry AB apply stellar aberration APCG prepare for ICRS <-> GCRS, geocentric, special APCG13 prepare for ICRS <-> GCRS, geocentric APCI prepare for ICRS <-> CIRS, terrestrial, special APCI13 prepare for ICRS <-> CIRS, terrestrial APCO prepare for ICRS <-> observed, terrestrial, special APCO13 prepare for ICRS <-> observed, terrestrial APCS prepare for ICRS <-> CIRS, space, special APCS13 prepare for ICRS <-> CIRS, space APER insert ERA into context APER13 update context for Earth rotation APIO prepare for CIRS <-> observed, terrestrial, special APIO13 prepare for CIRS <-> observed, terrestrial ATCI13 catalog -> CIRS ATCIQ quick ICRS -> CIRS ATCIQN quick ICRS -> CIRS, multiple deflections ATCIQZ quick astrometric ICRS -> CIRS ATCO13 ICRS -> observed ATIC13 CIRS -> ICRS ATICQ quick CIRS -> ICRS ATCIQN quick CIRS -> ICRS, multiple deflections ATIO13 CIRS -> observed ATIOQ quick CIRS -> observed ATOC13 observed -> astrometric ICRS ATOI13 observed -> CIRS ATOIQ quick observed -> CIRS LD light deflection by a single solar-system body LDN light deflection by multiple solar-system bodies LDSUN light deflection by the Sun PMPX apply proper motion and parallax PMSAFE apply proper motion, with zero-parallax precautions PVTOB observatory position and velocity PVSTAR space motion pv-vector to star catalog data REFCO refraction constants STARPM apply proper motion STARPV star catalog data to space motion pv-vector Time scales D2DTF format 2-part JD for output DAT Delta(AT) (=TAI-UTC) for a given UTC date DTDB TDB-TT DTF2D encode time and date fields into 2-part JD TAITT TAI to TT TAIUT1 TAI to UT1 TAIUTC TAI to UTC TCBTDB TCB to TDB TCGTT TCG to TT TDBTCB TDB to TCB TDBTT TDB to TT TTTAI TT to TAI TTTCG TT to TCG TTTDB TT to TDB TTUT1 TT to UT1 UT1TAI UT1 to TAI UT1TT UT1 to TT UT1UTC UT1 to UTC UTCTAI UTC to TAI UTCUT1 UTC to UT1 Earth rotation angle and sidereal time EE00 equation of the equinoxes, IAU 2000 EE00A equation of the equinoxes, IAU 2000A EE00B equation of the equinoxes, IAU 2000B EE06A equation of the equinoxes, IAU 2006/2000A EECT00 equation of the equinoxes complementary terms, IAU 2000 EQEQ94 equation of the equinoxes, IAU 1994 ERA00 Earth rotation angle, IAU 2000 GMST00 Greenwich mean sidereal time, IAU 2000 GMST06 Greenwich mean sidereal time, IAU 2006 GMST82 Greenwich mean sidereal time, IAU 1982 GST00A Greenwich apparent sidereal time, IAU 2000A GST00B Greenwich apparent sidereal time, IAU 2000B GST06 Greenwich apparent ST, IAU 2006, given NPB matrix GST06A Greenwich apparent sidereal time, IAU 2006/2000A GST94 Greenwich apparent sidereal time, IAU 1994 Ephemerides (limited precision) EPV00 Earth position and velocity PLAN94 major-planet position and velocity Precession, nutation, polar motion BI00 frame bias components, IAU 2000 BP00 frame bias and precession matrices, IAU 2000 BP06 frame bias and precession matrices, IAU 2006 BPN2XY extract CIP X,Y coordinates from NPB matrix C2I00A celestial-to-intermediate matrix, IAU 2000A C2I00B celestial-to-intermediate matrix, IAU 2000B C2I06A celestial-to-intermediate matrix, IAU 2006/2000A C2IBPN celestial-to-intermediate matrix, given NPB matrix, IAU 2000 C2IXY celestial-to-intermediate matrix, given X,Y, IAU 2000 C2IXYS celestial-to-intermediate matrix, given X,Y and s C2T00A celestial-to-terrestrial matrix, IAU 2000A C2T00B celestial-to-terrestrial matrix, IAU 2000B C2T06A celestial-to-terrestrial matrix, IAU 2006/2000A C2TCIO form CIO-based celestial-to-terrestrial matrix C2TEQX form equinox-based celestial-to-terrestrial matrix C2TPE celestial-to-terrestrial matrix given nutation, IAU 2000 C2TXY celestial-to-terrestrial matrix given CIP, IAU 2000 EO06A equation of the origins, IAU 2006/2000A EORS equation of the origins, given NPB matrix and s FW2M Fukushima-Williams angles to r-matrix FW2XY Fukushima-Williams angles to X,Y NUM00A nutation matrix, IAU 2000A NUM00B nutation matrix, IAU 2000B NUM06A nutation matrix, IAU 2006/2000A NUMAT form nutation matrix NUT00A nutation, IAU 2000A NUT00B nutation, IAU 2000B NUT06A nutation, IAU 2006/2000A NUT80 nutation, IAU 1980 NUTM80 nutation matrix, IAU 1980 OBL06 mean obliquity, IAU 2006 OBL80 mean obliquity, IAU 1980 PB06 zeta,z,theta precession angles, IAU 2006, including bias PFW06 bias-precession Fukushima-Williams angles, IAU 2006 PMAT00 precession matrix (including frame bias), IAU 2000 PMAT06 PB matrix, IAU 2006 PMAT76 precession matrix, IAU 1976 PN00 bias/precession/nutation results, IAU 2000 PN00A bias/precession/nutation, IAU 2000A PN00B bias/precession/nutation, IAU 2000B PN06 bias/precession/nutation results, IAU 2006 PN06A bias/precession/nutation results, IAU 2006/2000A PNM00A classical NPB matrix, IAU 2000A PNM00B classical NPB matrix, IAU 2000B PNM06A classical NPB matrix, IAU 2006/2000A PNM80 precession/nutation matrix, IAU 1976/1980 P06E precession angles, IAU 2006, equinox based POM00 polar motion matrix PR00 IAU 2000 precession adjustments PREC76 accumulated precession angles, IAU 1976 S00 the CIO locator s, given X,Y, IAU 2000A S00A the CIO locator s, IAU 2000A S00B the CIO locator s, IAU 2000B S06 the CIO locator s, given X,Y, IAU 2006 S06A the CIO locator s, IAU 2006/2000A SP00 the TIO locator s', IERS 2003 XY06 CIP, IAU 2006/2000A, from series XYS00A CIP and s, IAU 2000A XYS00B CIP and s, IAU 2000B XYS06A CIP and s, IAU 2006/2000A Fundamental arguments for nutation etc. FAD03 mean elongation of the Moon from the Sun FAE03 mean longitude of Earth FAF03 mean argument of the latitude of the Moon FAJU03 mean longitude of Jupiter FAL03 mean anomaly of the Moon FALP03 mean anomaly of the Sun FAMA03 mean longitude of Mars FAME03 mean longitude of Mercury FANE03 mean longitude of Neptune FAOM03 mean longitude of the Moon's ascending node FAPA03 general accumulated precession in longitude FASA03 mean longitude of Saturn FAUR03 mean longitude of Uranus FAVE03 mean longitude of Venus Star catalog conversions FK52H transform FK5 star data into the Hipparcos system FK5HIP FK5 to Hipparcos rotation and spin FK5HZ FK5 to Hipparcos assuming zero Hipparcos proper motion H2FK5 transform Hipparcos star data into the FK5 system HFK5Z Hipparcos to FK5 assuming zero Hipparcos proper motion Galactic coordinates G2ICRS transform IAU 1958 galactic coordinates to ICRS ICRS2G transform ICRS coordinates to IAU 1958 Galactic Geodetic/geocentric EFORM a,f for a nominated Earth reference ellipsoid GC2GD geocentric to geodetic for a nominated ellipsoid GC2GDE geocentric to geodetic given ellipsoid a,f GD2GC geodetic to geocentric for a nominated ellipsoid GD2GCE geodetic to geocentric given ellipsoid a,f Obsolete C2TCEO former name of C2TCIO CALLS: FORTRAN VERSION CALL iau_AB ( PNAT, V, S, BM1, PPR ) CALL iau_APCG ( DATE1, DATE2, EB, EH, ASTROM ) CALL iau_APCG13 ( DATE1, DATE2, ASTROM ) CALL iau_APCI ( DATE1, DATE2, EB, EH, X, Y, S, ASTROM ) CALL iau_APCI13 ( DATE1, DATE2, ASTROM, EO ) CALL iau_APCO ( DATE1, DATE2, EB, EH, X, Y, S, : THETA, ELONG, PHI, HM, XP, YP, SP, : REFA, REFB, ASTROM ) CALL iau_APCO13 ( UTC1, UTC2, DUT1, ELONG, PHI, HM, XP, YP, : PHPA, TC, RH, WL, ASTROM, EO, J ) CALL iau_APCS ( DATE1, DATE2, PV, EB, EH, ASTROM ) CALL iau_APCS13 ( DATE1, DATE2, PV, ASTROM ) CALL iau_APER ( THETA, ASTROM ) CALL iau_APER13 ( UT11, UT12, ASTROM ) CALL iau_APIO ( SP, THETA, ELONG, PHI, HM, XP, YP, : REFA, REFB, ASTROM ) CALL iau_APIO13 ( UTC1, UTC2, DUT1, ELONG, PHI, HM, XP, YP, : PHPA, TC, RH, WL, ASTROM, J ) CALL iau_ATCI13 ( RC, DC, PR, PD, PX, RV, DATE1, DATE2, RI, DI, EO ) CALL iau_ATCIQ ( RC, DC, PR, PD, PX, RV, ASTROM, RI, DI ) CALL iau_ATCIQN ( RC, DC, PR, PD, PX, RV, ASTROM, N, B, RI, DI ) CALL iau_ATCIQZ ( RC, DC, ASTROM, RI, DI ) CALL iau_ATCO13 ( RC, DC, PR, PD, PX, RV, UTC1, UTC2, DUT1, ELONG, : PHI, HM, XP, YP, PHPA, TC, RH, WL, : AOB, ZOB, HOB, DOB, ROB, EO, J ) CALL iau_ATIC13 ( RI, DI, DATE1, DATE2, RC, DC, EO ) CALL iau_ATICQ ( RI, DI, ASTROM, RC, DC ) CALL iau_ATCIQN ( RI, DI, ASTROM, N, B, RC, DC ) CALL iau_ATIO13 ( RI, DI, UTC1, UTC2, DUT1, ELONG, PHI, HM, XP, YP, PHPA, TC, RH, WL, AOB, ZOB, HOB, DOB, ROB, J ) CALL iau_ATIOQ ( RI, DI, ASTROM, AOB, ZOB, HOB, DOB, ROB ) CALL iau_ATOC13 ( TYPE, OB1, OB2, UTC1, UTC2, DUT1, : ELONG, PHI, HM, XP, YP, PHPA, TC, RH, WL, : RC, DC, J ) CALL iau_ATOI13 ( TYPE, OB1, OB2, UTC1, UTC2, DUT1, : ELONG, PHI, HM, XP, YP, PHPA, TC, RH, WL, : RI, DI, J ) CALL iau_ATOIQ ( TYPE, OB1, OB2, ASTROM, RI, DI ) CALL iau_BI00 ( DPSIBI, DEPSBI, DRA ) CALL iau_BP00 ( DATE1, DATE2, RB, RP, RBP ) CALL iau_BP06 ( DATE1, DATE2, RB, RP, RBP ) CALL iau_BPN2XY ( RBPN, X, Y ) CALL iau_C2I00A ( DATE1, DATE2, RC2I ) CALL iau_C2I00B ( DATE1, DATE2, RC2I ) CALL iau_C2I06A ( DATE1, DATE2, RC2I ) CALL iau_C2IBPN ( DATE1, DATE2, RBPN, RC2I ) CALL iau_C2IXY ( DATE1, DATE2, X, Y, RC2I ) CALL iau_C2IXYS ( X, Y, S, RC2I ) CALL iau_C2T00A ( TTA, TTB, UTA, UTB, XP, YP, RC2T ) CALL iau_C2T00B ( TTA, TTB, UTA, UTB, XP, YP, RC2T ) CALL iau_C2T06A ( TTA, TTB, UTA, UTB, XP, YP, RC2T ) CALL iau_C2TCEO ( RC2I, ERA, RPOM, RC2T ) CALL iau_C2TCIO ( RC2I, ERA, RPOM, RC2T ) CALL iau_C2TEQX ( RBPN, GST, RPOM, RC2T ) CALL iau_C2TPE ( TTA, TTB, UTA, UTB, DPSI, DEPS, XP, YP, RC2T ) CALL iau_C2TXY ( TTA, TTB, UTA, UTB, X, Y, XP, YP, RC2T ) CALL iau_CAL2JD ( IY, IM, ID, DJM0, DJM, J ) CALL iau_D2DTF ( SCALE, NDP, D1, D2, IY, IM, ID, IHMSF, J ) CALL iau_DAT ( IY, IM, ID, FD, DELTAT, J ) D = iau_DTDB ( DATE1, DATE2, UT, ELONG, U, V ) CALL iau_DTF2D ( SCALE, IY, IM, ID, IHR, IMN, SEC, D1, D2, J ) D = iau_EE00 ( DATE1, DATE2, EPSA, DPSI ) D = iau_EE00A ( DATE1, DATE2 ) D = iau_EE00B ( DATE1, DATE2 ) D = iau_EE06A ( DATE1, DATE2 ) D = iau_EECT00 ( DATE1, DATE2 ) CALL iau_EFORM ( N, A, F, J ) D = iau_EO06A ( DATE1, DATE2 ) D = iau_EORS ( RNPB, S ) D = iau_EPB ( DJ1, DJ2 ) CALL iau_EPB2JD ( EPB, DJM0, DJM ) D = iau_EPJ ( DJ1, DJ2 ) CALL iau_EPJ2JD ( EPJ, DJM0, DJM ) CALL iau_EPV00 ( DJ1, DJ2, PVH, PVB, J ) D = iau_EQEQ94 ( DATE1, DATE2 ) D = iau_ERA00 ( DJ1, DJ2 ) D = iau_FAD03 ( T ) D = iau_FAE03 ( T ) D = iau_FAF03 ( T ) D = iau_FAJU03 ( T ) D = iau_FAL03 ( T ) D = iau_FALP03 ( T ) D = iau_FAMA03 ( T ) D = iau_FAME03 ( T ) D = iau_FANE03 ( T ) D = iau_FAOM03 ( T ) D = iau_FAPA03 ( T ) D = iau_FASA03 ( T ) D = iau_FAUR03 ( T ) D = iau_FAVE03 ( T ) CALL iau_FK52H ( R5, D5, DR5, DD5, PX5, RV5, : RH, DH, DRH, DDH, PXH, RVH ) CALL iau_FK5HIP ( R5H, S5H ) CALL iau_FK5HZ ( R5, D5, DATE1, DATE2, RH, DH ) CALL iau_FW2M ( GAMB, PHIB, PSI, EPS, R ) CALL iau_FW2XY ( GAMB, PHIB, PSI, EPS, X, Y ) CALL iau_G2ICRS ( DL, DB, DR, DD ) CALL iau_GC2GD ( N, XYZ, ELONG, PHI, HEIGHT, J ) CALL iau_GC2GDE ( A, F, XYZ, ELONG, PHI, HEIGHT, J ) CALL iau_GD2GC ( N, ELONG, PHI, HEIGHT, XYZ, J ) CALL iau_GD2GCE ( A, F, ELONG, PHI, HEIGHT, XYZ, J ) D = iau_GMST00 ( UTA, UTB, TTA, TTB ) D = iau_GMST06 ( UTA, UTB, TTA, TTB ) D = iau_GMST82 ( UTA, UTB ) D = iau_GST00A ( UTA, UTB, TTA, TTB ) D = iau_GST00B ( UTA, UTB ) D = iau_GST06 ( UTA, UTB, TTA, TTB, RNPB ) D = iau_GST06A ( UTA, UTB, TTA, TTB ) D = iau_GST94 ( UTA, UTB ) CALL iau_H2FK5 ( RH, DH, DRH, DDH, PXH, RVH, : R5, D5, DR5, DD5, PX5, RV5 ) CALL iau_HFK5Z ( RH, DH, DATE1, DATE2, R5, D5, DR5, DD5 ) CALL iau_ICRS2G ( DR, DD, DL, DB ) CALL iau_JD2CAL ( DJ1, DJ2, IY, IM, ID, FD, J ) CALL iau_JDCALF ( NDP, DJ1, DJ2, IYMDF, J ) CALL iau_LD ( BM, P, Q, E, EM, DLIM, P1 ) CALL iau_LDN ( N, B, OB, SC, SN ) CALL iau_LDSUN ( P, E, EM, P1 ) CALL iau_NUM00A ( DATE1, DATE2, RMATN ) CALL iau_NUM00B ( DATE1, DATE2, RMATN ) CALL iau_NUM06A ( DATE1, DATE2, RMATN ) CALL iau_NUMAT ( EPSA, DPSI, DEPS, RMATN ) CALL iau_NUT00A ( DATE1, DATE2, DPSI, DEPS ) CALL iau_NUT00B ( DATE1, DATE2, DPSI, DEPS ) CALL iau_NUT06A ( DATE1, DATE2, DPSI, DEPS ) CALL iau_NUT80 ( DATE1, DATE2, DPSI, DEPS ) CALL iau_NUTM80 ( DATE1, DATE2, RMATN ) D = iau_OBL06 ( DATE1, DATE2 ) D = iau_OBL80 ( DATE1, DATE2 ) CALL iau_PB06 ( DATE1, DATE2, BZETA, BZ, BTHETA ) CALL iau_PFW06 ( DATE1, DATE2, GAMB, PHIB, PSIB, EPSA ) CALL iau_PLAN94 ( DATE1, DATE2, NP, PV, J ) CALL iau_PMAT00 ( DATE1, DATE2, RBP ) CALL iau_PMAT06 ( DATE1, DATE2, RBP ) CALL iau_PMAT76 ( DATE1, DATE2, RMATP ) CALL iau_PMPX ( RC, DC, PR, PD, PX, RV, PMT, POB, PCO ) CALL iau_PMSAFE ( RA1, DEC1, PMR1, PMD1, PX1, RV1, : EP1A, EP1B, EP2A, EP2B, : RA2, DEC2, PMR2, PMD2, PX2, RV2, J ) CALL iau_PN00 ( DATE1, DATE2, DPSI, DEPS, : EPSA, RB, RP, RBP, RN, RBPN ) CALL iau_PN00A ( DATE1, DATE2, : DPSI, DEPS, EPSA, RB, RP, RBP, RN, RBPN ) CALL iau_PN00B ( DATE1, DATE2, : DPSI, DEPS, EPSA, RB, RP, RBP, RN, RBPN ) CALL iau_PN06 ( DATE1, DATE2, DPSI, DEPS, : EPSA, RB, RP, RBP, RN, RBPN ) CALL iau_PN06A ( DATE1, DATE2, : DPSI, DEPS, RB, RP, RBP, RN, RBPN ) CALL iau_PNM00A ( DATE1, DATE2, RBPN ) CALL iau_PNM00B ( DATE1, DATE2, RBPN ) CALL iau_PNM06A ( DATE1, DATE2, RNPB ) CALL iau_PNM80 ( DATE1, DATE2, RMATPN ) CALL iau_P06E ( DATE1, DATE2, : EPS0, PSIA, OMA, BPA, BQA, PIA, BPIA, : EPSA, CHIA, ZA, ZETAA, THETAA, PA, GAM, PHI, PSI ) CALL iau_POM00 ( XP, YP, SP, RPOM ) CALL iau_PR00 ( DATE1, DATE2, DPSIPR, DEPSPR ) CALL iau_PREC76 ( DATE01, DATE02, DATE11, DATE12, ZETA, Z, THETA ) CALL iau_PVSTAR ( PV, RA, DEC, PMR, PMD, PX, RV, J ) CALL iau_PVTOB ( ELONG, PHI, HM, XP, YP, SP, THETA, PV ) CALL iau_REFCO ( PHPA, TC, RH, WL, REFA, REFB ) D = iau_S00 ( DATE1, DATE2, X, Y ) D = iau_S00A ( DATE1, DATE2 ) D = iau_S00B ( DATE1, DATE2 ) D = iau_S06 ( DATE1, DATE2, X, Y ) D = iau_S06A ( DATE1, DATE2 ) D = iau_SP00 ( DATE1, DATE2 ) CALL iau_STARPM ( RA1, DEC1, PMR1, PMD1, PX1, RV1, : EP1A, EP1B, EP2A, EP2B, : RA2, DEC2, PMR2, PMD2, PX2, RV2, J ) CALL iau_STARPV ( RA, DEC, PMR, PMD, PX, RV, PV, J ) CALL iau_TAITT ( TAI1, TAI2, TT1, TT2, J ) CALL iau_TAIUT1 ( TAI1, TAI2, DTA, UT11, UT12, J ) CALL iau_TAIUTC ( TAI1, TAI2, UTC1, UTC2, J ) CALL iau_TCBTDB ( TCB1, TCB2, TDB1, TDB2, J ) CALL iau_TCGTT ( TCG1, TCG2, TT1, TT2, J ) CALL iau_TDBTCB ( TDB1, TDB2, TCB1, TCB2, J ) CALL iau_TDBTT ( TDB1, TDB2, DTR, TT1, TT2, J ) CALL iau_TTTAI ( TT1, TT2, TAI1, TAI2, J ) CALL iau_TTTCG ( TT1, TT2, TCG1, TCG2, J ) CALL iau_TTTDB ( TT1, TT2, DTR, TDB1, TDB2, J ) CALL iau_TTUT1 ( TT1, TT2, DT, UT11, UT12, J ) CALL iau_UT1TAI ( UT11, UT12, TAI1, TAI2, J ) CALL iau_UT1TT ( UT11, UT12, DT, TT1, TT2, J ) CALL iau_UT1UTC ( UT11, UT12, DUT, UTC1, UTC2, J ) CALL iau_UTCTAI ( UTC1, UTC2, DTA, TAI1, TAI2, J ) CALL iau_UTCUT1 ( UTC1, UTC2, DUT, UT11, UT12, J ) CALL iau_XY06 ( DATE1, DATE2, X, Y ) CALL iau_XYS00A ( DATE1, DATE2, X, Y, S ) CALL iau_XYS00B ( DATE1, DATE2, X, Y, S ) CALL iau_XYS06A ( DATE1, DATE2, X, Y, S ) CALLS: C VERSION iauAb ( pnat, v, s, bm1, ppr ); iauApcg ( date1, date2, eb, eh, &astrom ); iauApcg13 ( date1, date2, &astrom ); iauApci ( date1, date2, eb, eh, x, y, s, &astrom ); iauApci13 ( date1, date2, &astrom, &eo ); iauApco ( date1, date2, eb, eh, x, y, s, theta, elong, phi, hm, xp, yp, sp, refa, refb, &astrom ); i = iauApco13 ( utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &astrom, &eo ); iauApcs ( date1, date2, pv, eb, eh, &astrom ); iauApcs13 ( date1, date2, pv, &astrom ); iauAper ( theta, &astrom ); iauAper13 ( ut11, ut12, &astrom ); iauApio ( sp, theta, elong, phi, hm, xp, yp, refa, refb, &astrom ); i = iauApio13 ( utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &astrom ); iauAtci13 ( rc, dc, pr, pd, px, rv, date1, date2, &ri, &di, &eo ); iauAtciq ( rc, dc, pr, pd, px, rv, &astrom, &ri, &di ); iauAtciqn ( rc, dc, pr, pd, px, rv, astrom, n, b, &ri, &di ); iauAtciqz ( rc, dc, &astrom, &ri, &di ); i = iauAtco13 ( rc, dc, pr, pd, px, rv, utc1, utc2, dut1, elong phi, hm, xp, yp, phpa, tc, rh, wl, aob, zob, hob, dob, rob, eo ); iauAtic13 ( ri, di, date1, date2, &rc, &dc, &eo ); iauAticq ( ri, di, &astrom, &rc, &dc ); iauAtciqn ( ri, di, astrom, n, b, &rc, &dc ); i = iauAtio13 ( ri, di, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, aob, zob, hob, dob, rob ); iauAtioq ( ri, di, &astrom, &aob, &zob, &hob, &dob, &rob ); i = iauAtoc13 ( type, ob1, ob2, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &rc, &dc ); i = iauAtoi13 ( type, ob1, ob2, utc1, utc2, dut1, elong, phi, hm, xp, yp, phpa, tc, rh, wl, &ri, &di ); iauAtoiq ( type, ob1, ob2, &astrom, &ri, &di ); iauBi00 ( &dpsibi, &depsbi, &dra ); iauBp00 ( date1, date2, rb, rp, rbp ); iauBp06 ( date1, date2, rb, rp, rbp ); iauBpn2xy ( rbpn, &x, &y ); iauC2i00a ( date1, date2, rc2i ); iauC2i00b ( date1, date2, rc2i ); iauC2i06a ( date1, date2, rc2i ); iauC2ibpn ( date1, date2, rbpn, rc2i ); iauC2ixy ( date1, date2, x, y, rc2i ); iauC2ixys ( x, y, s, rc2i ); iauC2t00a ( tta, ttb, uta, utb, xp, yp, rc2t ); iauC2t00b ( tta, ttb, uta, utb, xp, yp, rc2t ); iauC2t06a ( tta, ttb, uta, utb, xp, yp, rc2t ); iauC2tcio ( rc2i, era, rpom, rc2t ); iauC2teqx ( rbpn, gst, rpom, rc2t ); iauC2tpe ( tta, ttb, uta, utb, dpsi, deps, xp, yp, rc2t ); iauC2txy ( tta, ttb, uta, utb, x, y, xp, yp, rc2t ); i = iauCal2jd ( iy, im, id, &djm0, &djm ); i = iauD2dtf ( scale, ndp, d1, d2, &iy, &im, &id, ihmsf ); i = iauDat ( iy, im, id, fd, &deltat ); d = iauDtdb ( date1, date2, ut, elong, u, v ); i = iauDtf2d ( scale, iy, im, id, ihr, imn, sec, &d1, &d2 ); d = iauEe00 ( date1, date2, epsa, dpsi ); d = iauEe00a ( date1, date2 ); d = iauEe00b ( date1, date2 ); d = iauEe06 ( date1, date2 ); d = iauEect00 ( date1, date2 ); i = iauEform ( n, &a, &f ); d = iauEo06 ( date1, date2 ); d = iauEors ( rnpb, s ); d = iauEpb ( dj1, dj2 ); iauEpb2jd ( epb, &djm0, &djm ); d = iauEpj ( dj1, dj2 ); iauEpj2jd ( epj, &djm0, &djm ); i = iauEpv00 ( dj1, dj2, pvh, pvb ); d = iauEqeq94 ( date1, date2 ); d = iauEra00 ( dj1, dj2 ); d = iauFad03 ( t ); d = iauFae03 ( t ); d = iauFaf03 ( t ); d = iauFaju03 ( t ); d = iauFal03 ( t ); d = iauFalp03 ( t ); d = iauFama03 ( t ); d = iauFame03 ( t ); d = iauFane03 ( t ); d = iauFaom03 ( t ); d = iauFapa03 ( t ); d = iauFasa03 ( t ); d = iauFaur03 ( t ); d = iauFave03 ( t ); iauFk52h ( r5, d5, dr5, dd5, px5, rv5, &rh, &dh, &drh, &ddh, &pxh, &rvh ); iauFk5hip ( r5h, s5h ); iauFk5hz ( r5, d5, date1, date2, &rh, &dh ); iauFw2m ( gamb, phib, psi, eps, r ); iauFw2xy ( gamb, phib, psi, eps, &x, &y ); iauG2icrs ( dl, db, &dr, &dd ); i = iauGc2gd ( n, xyz, &elong, &phi, &height ); i = iauGc2gde ( a, f, xyz, &elong, &phi, &height ); i = iauGd2gc ( n, elong, phi, height, xyz ); i = iauGd2gce ( a, f, elong, phi, height, xyz ); d = iauGmst00 ( uta, utb, tta, ttb ); d = iauGmst06 ( uta, utb, tta, ttb ); d = iauGmst82 ( uta, utb ); d = iauGst00a ( uta, utb, tta, ttb ); d = iauGst00b ( uta, utb ); d = iauGst06 ( uta, utb, tta, ttb, rnpb ); d = iauGst06a ( uta, utb, tta, ttb ); d = iauGst94 ( uta, utb ); iauH2fk5 ( rh, dh, drh, ddh, pxh, rvh, &r5, &d5, &dr5, &dd5, &px5, &rv5 ); iauHfk5z ( rh, dh, date1, date2, &r5, &d5, &dr5, &dd5 ); iauIcrs2g ( dr, dd, &dl, &db ); i = iauJd2cal ( dj1, dj2, &iy, &im, &id, &fd ); i = iauJdcalf ( ndp, dj1, dj2, iymdf ); iauLd ( bm, p, q, e, em, dlim, p1 ); iauLdn ( n, b, ob, sc, sn ); iauLdsun ( p, e, em, p1 ); iauNum00a ( date1, date2, rmatn ); iauNum00b ( date1, date2, rmatn ); iauNum06a ( date1, date2, rmatn ); iauNumat ( epsa, dpsi, deps, rmatn ); iauNut00a ( date1, date2, &dpsi, &deps ); iauNut00b ( date1, date2, &dpsi, &deps ); iauNut06a ( date1, date2, &dpsi, &deps ); iauNut80 ( date1, date2, &dpsi, &deps ); iauNutm80 ( date1, date2, rmatn ); d = iauObl06 ( date1, date2 ); d = iauObl80 ( date1, date2 ); iauPb06 ( date1, date2, &bzeta, &bz, &btheta ); iauPfw06 ( date1, date2, &gamb, &phib, &psib, &epsa ); i = iauPlan94 ( date1, date2, np, pv ); iauPmat00 ( date1, date2, rbp ); iauPmat06 ( date1, date2, rbp ); iauPmat76 ( date1, date2, rmatp ); iauPmpx ( rc, dc, pr, pd, px, rv, pmt, pob, pco ); i = iauPmsafe ( ra1, dec1, pmr1, pmd1, px1, rv1, ep1a, ep1b, ep2a, ep2b, &ra2, &dec2, &pmr2, &pmd2, &px2, &rv2); iauPn00 ( date1, date2, dpsi, deps, &epsa, rb, rp, rbp, rn, rbpn ); iauPn00a ( date1, date2, &dpsi, &deps, &epsa, rb, rp, rbp, rn, rbpn ); iauPn00b ( date1, date2, &dpsi, &deps, &epsa, rb, rp, rbp, rn, rbpn ); iauPn06 ( date1, date2, dpsi, deps, &epsa, rb, rp, rbp, rn, rbpn ); iauPn06a ( date1, date2, &dpsi, &deps, &epsa, rb, rp, rbp, rn, rbpn ); iauPnm00a ( date1, date2, rbpn ); iauPnm00b ( date1, date2, rbpn ); iauPnm06a ( date1, date2, rnpb ); iauPnm80 ( date1, date2, rmatpn ); iauP06e ( date1, date2, &eps0, &psia, &oma, &bpa, &bqa, &pia, &bpia, &epsa, &chia, &za, &zetaa, &thetaa, &pa, &gam, &phi, &psi ); iauPom00 ( xp, yp, sp, rpom ); iauPr00 ( date1, date2, &dpsipr, &depspr ); iauPrec76 ( date01, date02, date11, date12, &zeta, &z, &theta ); i = iauPvstar ( pv, &ra, &dec, &pmr, &pmd, &px, &rv ); iauPvtob ( elong, phi, hm, xp, yp, sp, theta, pv ); iauRefco ( phpa, tc, rh, wl, refa, refb ); d = iauS00 ( date1, date2, x, y ); d = iauS00a ( date1, date2 ); d = iauS00b ( date1, date2 ); d = iauS06 ( date1, date2, x, y ); d = iauS06a ( date1, date2 ); d = iauSp00 ( date1, date2 ); i = iauStarpm ( ra1, dec1, pmr1, pmd1, px1, rv1, ep1a, ep1b, ep2a, ep2b, &ra2, &dec2, &pmr2, &pmd2, &px2, &rv2 ); i = iauStarpv ( ra, dec, pmr, pmd, px, rv, pv ); i = iauTaitt ( tai1, tai2, &tt1, &tt2 ); i = iauTaiut1 ( tai1, tai2, dta, &ut11, &ut12 ); i = iauTaiutc ( tai1, tai2, &utc1, &utc2 ); i = iauTcbtdb ( tcb1, tcb2, &tdb1, &tdb2 ); i = iauTcgtt ( tcg1, tcg2, &tt1, &tt2 ); i = iauTdbtcb ( tdb1, tdb2, &tcb1, &tcb2 ); i = iauTdbtt ( tdb1, tdb2, dtr, &tt1, &tt2 ); i = iauTttai ( tt1, tt2, &tai1, &tai2 ); i = iauTttcg ( tt1, tt2, &tcg1, &tcg2 ); i = iauTttdb ( tt1, tt2, dtr, &tdb1, &tdb2 ); i = iauTtut1 ( tt1, tt2, dt, &ut11, &ut12 ); i = iauUt1tai ( ut11, ut12, &tai1, &tai2 ); i = iauUt1tt ( ut11, ut12, dt, &tt1, &tt2 ); i = iauUt1utc ( ut11, ut12, dut, &utc1, &utc2 ); i = iauUtctai ( utc1, utc2, dta, &tai1, &tai2 ); i = iauUtcut1 ( utc1, utc2, dut, &ut11, &ut12 ); iauXy06 ( date1, date2, &x, &y ); iauXys00a ( date1, date2, &x, &y, &s ); iauXys00b ( date1, date2, &x, &y, &s ); iauXys06a ( date1, date2, &x, &y, &s ); sofa/20150209/c/doc/sofa_vml.lis0000644000113000011300000002444212507252057015175 0ustar bellsbellssofa_vml.lis 2013 October 8 -------------------------- SOFA Vector/Matrix Library -------------------------- PREFACE The routines described here comprise the SOFA vector/matrix library. Their general appearance and coding style conforms to conventions agreed by the SOFA Board, and their functions, names and algorithms have been ratified by the Board. Procedures for soliciting and agreeing additions to the library are still evolving. PROGRAMMING LANGUAGES The SOFA routines are available in two programming languages at present: Fortran 77 and ANSI C. There is a one-to-one relationship between the two language versions. The naming convention is such that a SOFA routine referred to generically as "EXAMPL" exists as a Fortran subprogram iau_EXAMPL and a C function iauExampl. The calls for the two versions are very similar, with the same arguments in the same order. In a few cases, the C equivalent of a Fortran SUBROUTINE subprogram uses a return value rather than an argument. GENERAL PRINCIPLES The library consists mostly of routines which operate on ordinary Cartesian vectors (x,y,z) and 3x3 rotation matrices. However, there is also support for vectors which represent velocity as well as position and vectors which represent rotation instead of position. The vectors which represent both position and velocity may be considered still to have dimensions (3), but to comprise elements each of which is two numbers, representing the value itself and the time derivative. Thus: * "Position" or "p" vectors (or just plain 3-vectors) have dimension (3) in Fortran and [3] in C. * "Position/velocity" or "pv" vectors have dimensions (3,2) in Fortran and [2][3] in C. * "Rotation" or "r" matrices have dimensions (3,3) in Fortran and [3][3] in C. When used for rotation, they are "orthogonal"; the inverse of such a matrix is equal to the transpose. Most of the routines in this library do not assume that r-matrices are necessarily orthogonal and in fact work on any 3x3 matrix. * "Rotation" or "r" vectors have dimensions (3) in Fortran and [3] in C. Such vectors are a combination of the Euler axis and angle and are convertible to and from r-matrices. The direction is the axis of rotation and the magnitude is the angle of rotation, in radians. Because the amount of rotation can be scaled up and down simply by multiplying the vector by a scalar, r-vectors are useful for representing spins about an axis which is fixed. * The above rules mean that in terms of memory address, the three velocity components of a pv-vector follow the three position components. Application code is permitted to exploit this and all other knowledge of the internal layouts: that x, y and z appear in that order and are in a right-handed Cartesian coordinate system etc. For example, the cp function (copy a p-vector) can be used to copy the velocity component of a pv-vector (indeed, this is how the CPV routine is coded). * The routines provided do not completely fill the range of operations that link all the various vector and matrix options, but are confined to functions that are required by other parts of the SOFA software or which are likely to prove useful. In addition to the vector/matrix routines, the library contains some routines related to spherical angles, including conversions to and from sexagesimal format. Using the library requires knowledge of vector/matrix methods, spherical trigonometry, and methods of attitude representation. These topics are covered in many textbooks, including "Spacecraft Attitude Determination and Control", James R. Wertz (ed.), Astrophysics and Space Science Library, Vol. 73, D. Reidel Publishing Company, 1986. OPERATIONS INVOLVING P-VECTORS AND R-MATRICES Initialize ZP zero p-vector ZR initialize r-matrix to null IR initialize r-matrix to identity Copy/extend/extract CP copy p-vector CR copy r-matrix Build rotations RX rotate r-matrix about x RY rotate r-matrix about y RZ rotate r-matrix about z Spherical/Cartesian conversions S2C spherical to unit vector C2S unit vector to spherical S2P spherical to p-vector P2S p-vector to spherical Operations on vectors PPP p-vector plus p-vector PMP p-vector minus p-vector PPSP p-vector plus scaled p-vector PDP inner (=scalar=dot) product of two p-vectors PXP outer (=vector=cross) product of two p-vectors PM modulus of p-vector PN normalize p-vector returning modulus SXP multiply p-vector by scalar Operations on matrices RXR r-matrix multiply TR transpose r-matrix Matrix-vector products RXP product of r-matrix and p-vector TRXP product of transpose of r-matrix and p-vector Separation and position-angle SEPP angular separation from p-vectors SEPS angular separation from spherical coordinates PAP position-angle from p-vectors PAS position-angle from spherical coordinates Rotation vectors RV2M r-vector to r-matrix RM2V r-matrix to r-vector OPERATIONS INVOLVING PV-VECTORS Initialize ZPV zero pv-vector Copy/extend/extract CPV copy pv-vector P2PV append zero velocity to p-vector PV2P discard velocity component of pv-vector Spherical/Cartesian conversions S2PV spherical to pv-vector PV2S pv-vector to spherical Operations on vectors PVPPV pv-vector plus pv-vector PVMPV pv-vector minus pv-vector PVDPV inner (=scalar=dot) product of two pv-vectors PVXPV outer (=vector=cross) product of two pv-vectors PVM modulus of pv-vector SXPV multiply pv-vector by scalar S2XPV multiply pv-vector by two scalars PVU update pv-vector PVUP update pv-vector discarding velocity Matrix-vector products RXPV product of r-matrix and pv-vector TRXPV product of transpose of r-matrix and pv-vector OPERATIONS ON ANGLES ANP normalize radians to range 0 to 2pi ANPM normalize radians to range -pi to +pi A2TF decompose radians into hours, minutes, seconds A2AF decompose radians into degrees, arcminutes, arcseconds AF2A degrees, arcminutes, arcseconds to radians D2TF decompose days into hours, minutes, seconds TF2A hours, minutes, seconds to radians TF2D hours, minutes, seconds to days CALLS: FORTRAN VERSION CALL iau_A2AF ( NDP, ANGLE, SIGN, IDMSF ) CALL iau_A2TF ( NDP, ANGLE, SIGN, IHMSF ) CALL iau_AF2A ( S, IDEG, IAMIN, ASEC, RAD, J ) D = iau_ANP ( A ) D = iau_ANPM ( A ) CALL iau_C2S ( P, THETA, PHI ) CALL iau_CP ( P, C ) CALL iau_CPV ( PV, C ) CALL iau_CR ( R, C ) CALL iau_D2TF ( NDP, DAYS, SIGN, IHMSF ) CALL iau_IR ( R ) CALL iau_P2PV ( P, PV ) CALL iau_P2S ( P, THETA, PHI, R ) CALL iau_PAP ( A, B, THETA ) CALL iau_PAS ( AL, AP, BL, BP, THETA ) CALL iau_PDP ( A, B, ADB ) CALL iau_PM ( P, R ) CALL iau_PMP ( A, B, AMB ) CALL iau_PN ( P, R, U ) CALL iau_PPP ( A, B, APB ) CALL iau_PPSP ( A, S, B, APSB ) CALL iau_PV2P ( PV, P ) CALL iau_PV2S ( PV, THETA, PHI, R, TD, PD, RD ) CALL iau_PVDPV ( A, B, ADB ) CALL iau_PVM ( PV, R, S ) CALL iau_PVMPV ( A, B, AMB ) CALL iau_PVPPV ( A, B, APB ) CALL iau_PVU ( DT, PV, UPV ) CALL iau_PVUP ( DT, PV, P ) CALL iau_PVXPV ( A, B, AXB ) CALL iau_PXP ( A, B, AXB ) CALL iau_RM2V ( R, P ) CALL iau_RV2M ( P, R ) CALL iau_RX ( PHI, R ) CALL iau_RXP ( R, P, RP ) CALL iau_RXPV ( R, PV, RPV ) CALL iau_RXR ( A, B, ATB ) CALL iau_RY ( THETA, R ) CALL iau_RZ ( PSI, R ) CALL iau_S2C ( THETA, PHI, C ) CALL iau_S2P ( THETA, PHI, R, P ) CALL iau_S2PV ( THETA, PHI, R, TD, PD, RD, PV ) CALL iau_S2XPV ( S1, S2, PV ) CALL iau_SEPP ( A, B, S ) CALL iau_SEPS ( AL, AP, BL, BP, S ) CALL iau_SXP ( S, P, SP ) CALL iau_SXPV ( S, PV, SPV ) CALL iau_TF2A ( S, IHOUR, IMIN, SEC, RAD, J ) CALL iau_TF2D ( S, IHOUR, IMIN, SEC, DAYS, J ) CALL iau_TR ( R, RT ) CALL iau_TRXP ( R, P, TRP ) CALL iau_TRXPV ( R, PV, TRPV ) CALL iau_ZP ( P ) CALL iau_ZPV ( PV ) CALL iau_ZR ( R ) CALLS: C VERSION iauA2af ( ndp, angle, &sign, idmsf ); iauA2tf ( ndp, angle, &sign, ihmsf ); i = iauAf2a ( s, ideg, iamin, asec, &rad ); d = iauAnp ( a ); d = iauAnpm ( a ); iauC2s ( p, &theta, &phi ); iauCp ( p, c ); iauCpv ( pv, c ); iauCr ( r, c ); iauD2tf ( ndp, days, &sign, ihmsf ); iauIr ( r ); iauP2pv ( p, pv ); iauP2s ( p, &theta, &phi, &r ); d = iauPap ( a, b ); d = iauPas ( al, ap, bl, bp ); d = iauPdp ( a, b ); d = iauPm ( p ); iauPmp ( a, b, amb ); iauPn ( p, &r, u ); iauPpp ( a, b, apb ); iauPpsp ( a, s, b, apsb ); iauPv2p ( pv, p ); iauPv2s ( pv, &theta, &phi, &r, &td, &pd, &rd ); iauPvdpv ( a, b, adb ); iauPvm ( pv, &r, &s ); iauPvmpv ( a, b, amb ); iauPvppv ( a, b, apb ); iauPvu ( dt, pv, upv ); iauPvup ( dt, pv, p ); iauPvxpv ( a, b, axb ); iauPxp ( a, b, axb ); iauRm2v ( r, p ); iauRv2m ( p, r ); iauRx ( phi, r ); iauRxp ( r, p, rp ); iauRxpv ( r, pv, rpv ); iauRxr ( a, b, atb ); iauRy ( theta, r ); iauRz ( psi, r ); iauS2c ( theta, phi, c ); iauS2p ( theta, phi, r, p ); iauS2pv ( theta, phi, r, td, pd, rd, pV ); iauS2xpv ( s1, s2, pv ); d = iauSepp ( a, b ); d = iauSeps ( al, ap, bl, bp ); iauSxp ( s, p, sp ); iauSxpv ( s, pv, spv ); i = iauTf2a ( s, ihour, imin, sec, &rad ); i = iauTf2d ( s, ihour, imin, sec, &days ); iauTr ( r, rt ); iauTrxp ( r, p, trp ); iauTrxpv ( r, pv, trpv ); iauZp ( p ); iauZpv ( pv ); iauZr ( r ); sofa/20150209/c/doc/title.lis0000644000113000011300000000235012507252057014502 0ustar bellsbells T H E SSSSS OOOOOO FFFFFFFFFFFFF AAAAAAA SSSSSSSSSS OOOOOOOOOOOO FFFFFFFFFFFF AAAAAAAA SSSSSSSSSSS OOOOOOOOOOOOOO FFFFFFFFFFFF AAAA AAAA SSSS S OOOOOO OOOOO FFFF AAAA AAAA SSSSS OOOOO OOOO FFFFF AAAA AAAA SSSSSSSSSS OOOO OOOOO FFFFFFFFFFFF AAAA AAAA SSSSSSSSS OOOOO OOOO FFFFFFFFFFFF AAAAAAAAAAAAA SSSSS OOOO OOOO FFFF AAAAAAAAAAAAAA S SSSS OOOOO OOOOO FFFF AAAAAAAAAAAAAAA SSSSSSSSSSS OOOOOOOOOOOOO FFFF AAAA AAAAA SSSSSSSSS OOOOOOOOOO FFFF AAAA AAAAA SSSS OOOOO FFFF AAAA AAAAA S O F T W A R E L I B R A R I E S International Astronomical Union Division A: Fundamental Astronomy Standards Of Fundamental Astronomy Board Release 11 2015 February 09 sofa/20150209/c/doc/changes.pdf0000644000113000011300000000712112507252057014754 0ustar bellsbells%PDF-1.2 %쏢 6 0 obj <> stream xVn6}W\e 樑&Mɉ2 !@PA"~.)Jqdm`"9K=q±/-XUCKu/<٠^QpCgggA_ؿ>SbL*XvÜhaݫ-D˿V؋wßt\bmD0L0¢.V@J* NDha1 5hFHQfbWa9eIu7p{aJV İ OT%ӊ. l$iaMڇhp%QD!Pň"MMRx3!)P)Uʅ&h?jePrVu* 7J@˒!fS=bm)O/fԩQgLI;D? %HrYt3loб.H;bTNM >|+Ȕvjb%}xu4k%WHNˌe6nS?@Ӛ~ZT)D]2T 5ûƒV%{6!6U}7.5 fbzs^ե{t0E+!r^5c-Q[̹x5&ͦ)(mv^$E'CG̶ 0tпܦ&2*{EB:i ǝFkc]1+?lIFÿ3Rd31k=شR5¨&9L WxGu!Q2O9ɣmtY)bM!߫m"=rӴjy8@st@끨%e]N> stream xV]o6}jdI7Isnk8ޯ%) -A=Hs=> /Contents 6 0 R >> endobj 13 0 obj <> /Contents 14 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 5 0 R 13 0 R ] /Count 2 >> endobj 1 0 obj <> endobj 4 0 obj <> endobj 10 0 obj <> endobj 11 0 obj <> endobj 16 0 obj <> endobj 8 0 obj <> endobj 12 0 obj <> endobj 17 0 obj <> endobj 9 0 obj <> endobj 18 0 obj <> endobj 2 0 obj <>endobj xref 0 19 0000000000 65535 f 0000002618 00000 n 0000003157 00000 n 0000002552 00000 n 0000002666 00000 n 0000002248 00000 n 0000000015 00000 n 0000001148 00000 n 0000002813 00000 n 0000003014 00000 n 0000002721 00000 n 0000002751 00000 n 0000002870 00000 n 0000002408 00000 n 0000001168 00000 n 0000002228 00000 n 0000002781 00000 n 0000002957 00000 n 0000003099 00000 n trailer << /Size 19 /Root 1 0 R /Info 2 0 R >> startxref 3207 %%EOF sofa/20150209/c/doc/consts.pdf0000644000113000011300000000327612507252057014664 0ustar bellsbells%PDF-1.2 %쏢 6 0 obj <> stream xMo@թ{G.[.^ǮlHͿ8&hgyx{`!ku /:L22:p@eC-cL-h^uSu \1 kv+$!5dP .GnB'jG"j.t^4ɧGG/rzQCCfy wY6g~S _Fx@*|xzEOiD8Qk BJ(댣Vjܜ}̇C.nV f8e4qŭu^Д* $rLALIkR }SI,v(J: Xa$pFL T}8J<sPfP0gh,(J^͏V&zCՆ0CK4i"@m8UOAK @X5Uq(?V)1xt%X(ISrԴL8ǨA,q_&dz,qǂiۆziV5S~%<D:T-Ң9q3s2"ү/wSI;O#4{}U%tAS.9idX7roUsg#hcDendstream endobj 7 0 obj 652 endobj 5 0 obj <> /Contents 6 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 5 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 4 0 obj <> endobj 10 0 obj <> endobj 11 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 12 0 obj <> endobj 2 0 obj <>endobj xref 0 13 0000000000 65535 f 0000000975 00000 n 0000001338 00000 n 0000000916 00000 n 0000001023 00000 n 0000000756 00000 n 0000000015 00000 n 0000000737 00000 n 0000001138 00000 n 0000001195 00000 n 0000001078 00000 n 0000001108 00000 n 0000001280 00000 n trailer << /Size 13 /Root 1 0 R /Info 2 0 R >> startxref 1388 %%EOF sofa/20150209/c/doc/contents.pdf0000644000113000011300000000257312507252057015207 0ustar bellsbells%PDF-1.2 %쏢 6 0 obj <> stream xn0E5qJ(ꪛ}'!P*%{=s<~J&YkR-+a 1@B9Av2g8MS*I'3Ut*i'`93+,$aFu4 DXޝk&c9)j oDAS2h(r!Iwq}Κ|9e:~#>+hSnaf6PV`Ol9uV}qJKt lEu.>;5֪6NeEӿ]E3-BKS}`RCYlZ!d(endstream endobj 7 0 obj 329 endobj 5 0 obj <> /Contents 6 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 5 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 4 0 obj <> endobj 10 0 obj <> endobj 11 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 12 0 obj <> endobj 2 0 obj <>endobj xref 0 13 0000000000 65535 f 0000000652 00000 n 0000001015 00000 n 0000000593 00000 n 0000000700 00000 n 0000000433 00000 n 0000000015 00000 n 0000000414 00000 n 0000000815 00000 n 0000000872 00000 n 0000000755 00000 n 0000000785 00000 n 0000000957 00000 n trailer << /Size 13 /Root 1 0 R /Info 2 0 R >> startxref 1065 %%EOF sofa/20150209/c/doc/copyr.pdf0000644000113000011300000000710312507252057014500 0ustar bellsbells%PDF-1.2 %쏢 5 0 obj <> stream xVQo6~8eq6=nx,V -6[TIʮ$r3 fð-}i4S~7I;O,{zðBWӇE7s{ΣwxtyyR;JLQ(St~eŷa&i<_;wO["ړ7W&F%:>,HY\KXMG a֔^i=+i% |\. 63j ,D:KRkc=4&qh=m6/'˫bXò韉Ɯ\y1~>6K3ׄMMt]wDF#&zlqd#*GQޜWk,UNfCx8zuM>Q|3ኞ4c,\v&Q|njFw[֦w'dz77 o$NÈ ],hҼ)=:>?wP"6WuKR2Zɀ\k= ^Ei 䀔N2e&&ϥMZȐ1ΡJMV.sp6ʯP T۬DIWοd[lѩ ]++h\.;GdJPBf^mMj18g`g0]-RQxRãli,H `-{@HYzQ)H)NssCWh-quW=oM z6iBVg\#z @sgc  OUk_tl'/ۃ&iZɩvb:'fqɭ%Rd^*yDm[q;UB^5=6%xWZԆP; [֬36&-D wX;^lSal2gh0 avDa~q~APc*]bUѕلuN#!у57c Ť TRq3@&)6mu5~;vTwʅN}%>K"BU.+ GuPq_GN2KtLdXY>VCCYgBu 5>g J*PH(v:}s]yx ښ2e*8Gh@Μ2 hI#vǝNڮaTiYAJ(-[ IԓzÀ|?`9^jO sX =k5E;ڻk/^ÊilzRn(|L|ei-jG[=۔,+ƚ&.B 6^uW7:* JLg4B]{@RTJ@ьȲGz (W{:س﫸'ԯendstream endobj 6 0 obj 1449 endobj 10 0 obj <> stream xTM8WtqYfk0Y8`w* .ȒG1<9ٝr[ݯ_~ ]Ts(xWo=͇oO?_Ѳ戹uu߉Ul>kAש d"uoM87yBh`vgﳡ%-XHKLI}h)?`i?@]+GسnM V-ƨf@j;jWƭ͊nH<'ѡH,LY#-MHydUרfCQ0&Xv<&RAݐjT r|,4_BOHo^MWV ʻ(790WN4. f]$,(TLQ"ox~Q :HQTKf++A(뭉0<G$eٴeDj}<6 tJ}LyvBIB;`GIȍ{jx w|[QHq:&#+Fa6-[6vؑAvQO?8Wz6E>b8̴J))A堄6AT0'=(B}W3a ߄;/|;ЗrjчN.ڰ̡IOe=ߑ?˛Wk4 '(!^/@S29_V㿼W;:p7v[!KcQs|?; 4վ=J,`}Eendstream endobj 11 0 obj 791 endobj 4 0 obj <> /Contents 5 0 R >> endobj 9 0 obj <> /Contents 10 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R 9 0 R ] /Count 2 >> endobj 1 0 obj <> endobj 8 0 obj <> endobj 12 0 obj <> endobj 7 0 obj <> endobj 13 0 obj <> endobj 2 0 obj <>endobj xref 0 14 0000000000 65535 f 0000002786 00000 n 0000003029 00000 n 0000002721 00000 n 0000002437 00000 n 0000000015 00000 n 0000001534 00000 n 0000002893 00000 n 0000002834 00000 n 0000002578 00000 n 0000001554 00000 n 0000002417 00000 n 0000002863 00000 n 0000002971 00000 n trailer << /Size 14 /Root 1 0 R /Info 2 0 R /ID [<2BE523624B0DAD3737497BEFA583EEAD><2BE523624B0DAD3737497BEFA583EEAD>] >> startxref 3218 %%EOF sofa/20150209/c/doc/intro.pdf0000644000113000011300000001551012507252057014500 0ustar bellsbells%PDF-1.2 %쏢 5 0 obj <> stream xW]s;}Wtrq&qd-ܼEZ#M$ [3Irv̌ZO>-ј.}-wj_>{ofv~^^53oG7t}}=[Uo`\ ~dMb\Ž.o]^n>\7qX?rK '_fM%xLʕ>PULJ%}n.)K✯v,!i&kA#'EVxG~IY␌ò&3V宯 ӧC-ʓRXO|-rBL)tˠuPo><t*z54hzTOg@[Fu"DMTIm4͗77Wtq )YLUcWHSMZss(:.qk;1+% `Q@Qo?bAzOJTҊ\1zgRi]Q4I#}B*_X,g+d\6EOg?*؟G˥/F[oy cc'2ГZ9m g(hV(m;qRӌuxL04 +:nHˠa-v'C{bL&hć)NiuW+LG](Ώu5vGnVH){ﳴ?9|v*G֞wzFC8?$ > stream xmWRG}Wt%B<#Sy5Igf%9ݳ+)Ll_N>Aހ̊N 5?>M:/C.4u[9]p8]M)u^ѮI-jj5)ɚuN~WxoGLUqV ?SK9:W&.%CAM+ RIe\x"+̙F_IRf>pK QAE2DaonUZr ʇ\Dwr ʪ-)A6x˔HPM8yR\o6q2جxI^%Z'JZ4akg3gUJﻗ*eOPHTz w%Ez cW9gmnD6@@ kdPN/܊L", C;Ԙ 0Dj`on˴P7n;@SuIQ?iɝd"A}3bA"(H.lr$TCvȷC?U;%dɆ(70@w%=~Mq@h࿘\IiF[RIo>ݍ' (r\UZ[˜IMQIYVvZ)VbC1Yq2j02jfkX礰aUp⮀"y`yH'V* !fʺp`Q_6[DnӴFhg.lNގʢ8 BT H]ZD_iZ t'[̔F(7y0;߿<ŷFu]S2uS&%w;NQLpm}Cƴ9F Af\5"Iݮ&pí?<oؙϗ燗_Gw4 ^>K2V2Vmѝ,jN7? hH( VFMǛ 19$o-B6feAqW2XY y8ӀHI= ÏO~y}y|fgG]sdf޹I>U 0HXK9E4uS E%&k¾endstream endobj 11 0 obj 1757 endobj 14 0 obj <> stream xuVn8}WyIn.E>Mn`@bLQ6tIʮP #.\93?LLިջåz;8{}v u3÷xtyy9<WF|Z(_0[۪RFuu7y},/;(뎧?\MoG6EU6N'ppfº̉"W`b VGGXFH.ui(58z20pfSu03JPVF̚TNjs">ʚPշ#J(*ҷcλqO0u& IlJPSH4!*b'MzVᘴ6D>$|o%+mru_qdnF{Eđd$/8wISHcwy8WH!Tv pʥLvE) (7ri\ah_CofrhI 0T_%ŶRB9ph`#i)vԗA<$ߗՙؚ PT>=@UGiJlf 0b#gcWTqmwӛnF >ơ`G]@O](*auUS݃=EUaxf8bI e6vE5hNh#S^Od8ʃ^Eo'}@hWfd-M51A{[N'}[޺x< AsZiV!zb_odyTߞX.LU#Y$a%E/8bR&4!0ٟ dCVZ1|#:V˯Jm>S5gz*&XV5ЫZ^Pv(LU`K =ߐDeتEWf#ot3@P2A} )H?!. v>vM穞~Ѥ5v',LFSBЄ*(}6a<-4-fPB;1pmD`06202<$]x~`fqw=tiu_Bl~ߣcZOpݺn Y/ -ac{endstream endobj 15 0 obj 1672 endobj 4 0 obj <> /Contents 5 0 R >> endobj 9 0 obj <> /Contents 10 0 R >> endobj 13 0 obj <> /Contents 14 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R 9 0 R 13 0 R ] /Count 3 >> endobj 1 0 obj <> endobj 8 0 obj <> endobj 12 0 obj <> endobj 16 0 obj <> endobj 7 0 obj <> endobj 17 0 obj <> endobj 2 0 obj <>endobj xref 0 18 0000000000 65535 f 0000006009 00000 n 0000006282 00000 n 0000005937 00000 n 0000005509 00000 n 0000000015 00000 n 0000001874 00000 n 0000006146 00000 n 0000006057 00000 n 0000005650 00000 n 0000001894 00000 n 0000003723 00000 n 0000006086 00000 n 0000005793 00000 n 0000003744 00000 n 0000005488 00000 n 0000006116 00000 n 0000006224 00000 n trailer << /Size 18 /Root 1 0 R /Info 2 0 R /ID [<9941A8F854EDA015276FBEED4EB6AFDA><9941A8F854EDA015276FBEED4EB6AFDA>] >> startxref 6471 %%EOF sofa/20150209/c/doc/manual.pdf0000644000113000011300000162766012507252057014642 0ustar bellsbells%PDF-1.2 %쏢 6 0 obj <> stream xOo0;]<ލhAT)ZH3K~&u 3ϐ" }.Co; 5}5QF La ðC6(T'C/+$(6$i **U6)-m$8"bJ8P))311`iR$#.d\+DcHh7=/7w"TaKPߺra>eC3͖WxHZ!f̠_4Jsf8Qa.a>'ymx(řo iiA'';ܙf([+h)TS4fyd 3djљBoP6BCa$ߐᾅ<Vf6b|p.D~7"Koj?oOͩ>L1ckXɏcgA湬wO_z&}iKɴKNuUUUql:r )Wڷ}T~%endstream endobj 7 0 obj 508 endobj 14 0 obj <> stream x]o nz1,zK8&nj&?ZY5s >L aKA ϔ0hL(0oh/ é_JSJˍvR TW5f3 iڧAL8f!Mp{ֿ9%]ͦb<s3oM0aa&>kߏYSlsn;?[LXJ0> stream xWR8WrPN`X,$\(h%$'uv`jplךp$>w7+~# q9;at..'щ-ӂ^:^3}mwC_Gwi+haLGg''ty|>.oC7;gb2v025{?\ar=>!Jp^t-=>/ė ׅQ1`ֺbJ70z*$EQY -,@heAJ/s"0@lV:[ ]F ,]L 8,qU$:l #dQVQa(!( uPbtv8=]EV*K|+NOEo݋Zj#FQsW V{iW$k?i6c2gY2gS:S5T^F .K3Aʿ*ozr,U} ZB DG׊@GčG*f;ѵ(F+*DB.ZW]9X|$Zr*NJP8>^&bA|@orSdzjRRuz@# "]!nBD;2Ϋ,#QWֺf*ߑ}ܒ ,Jct! 8ֵٯo3sxt4HZhJj_HVჃph%DH+mw_1g ASѣwЖ}_s^ూ ?3P'*  "4qk6]ZCEARzNT\A;)|Z<4"X=Yv,UF~F=.I)<* _+_oGz\ y`R;^^p,JFd< 9I,W2ܸ@OTDRYA vNеL+ ۟ˠ3j;ji6,QxBDDidxz5^"6@7+ƉdLy IuMMQ  YuxIBtV빆){vsj) ʠJO20,d D-2P'f "qJh G\گHkUt'8_.b'n< /"0 WA疲WhFmPw$ INoNCLz׿) /7{bhIT^LR~Ժ2ΡI|cWcDi.׳ =ܹ嘎TI۾ceArl"`lMU4?% ]5NY9O:pL/fD Ю.cG˰;q~gƁͶ)6]#Wxjaq\ăT>K?Ѷu!\P<=ܙ55դyUGyHghh[)bW C6 HUr>R$go X vQCnAӴl(bKaUsA0: \( QwD0crTBD5$Z> stream x}WR#7_K E ,;ϧt=]h<ztֽƣxɻ:Rjuԛ2VM&5YɔqQ6WU>$49s(wY]^N{qvz&s_]>OK\QyH|Aek8)5IpVG ^+RE*݂TUi2מy9/]"*ϽA2lkʔe G$:ESh |;ƕGlHWs]hor>`g{e\rĄ*sihc'dwwBxה3i/?/2e k欅-8B)!s6BB-"EfFr YH̀Ռd)wW_#p<*ʚDΡ0YņFO}D*p:`P*,?ճ9ΜfbVT4 9BM6haeb핵K'9s8$q (]1LGu~]:9\J62|n`Ka$ &e&ƚhtHj XiA/8(13+p\\1n ',Ejy&Wl} I2Mqa ek~h o;F1‹p 87T)\ /~|Cj `.T7DJ~&C-ZºʖgR5MPr9&*8֥}q [ !&e)72y.< @[dDVz+oLȘ!eVI„jTnL&# Ou~/w:K>$r/L UVemI[Ebo ,]z3`fZ%yݗhv4*UҶj #Єbe\y4x>fY2 CP ùΏ$P m SQ#L-6k4CՓ [08ahgh>3 \;y쵒<5mmkc" ]qwyqR@D4{Duk*5{*qk}31LSejA+x29Rmg*G!Gy١5q~oh%=~)@'OLEQxڗowq }Le~:E>J j.sC+"fZ-VvZe/ &#(k.as>‘jx@RI~x%#`7Ehs{4Oצۇ> stream x}VMo8ٿ%)MhcM4&v (eHjJct9Ēzo̓z=>QIȻz7>;ysrf(_8;:??ŧztdE>-/UZD<#7[)jb)&DE]i~"ްU8&*Ѽ25Dl UMڻD6) QWG8fraWDIFs41z_) 6N\N.㸲(fi ≱AV+ &C|ۏ&b&&PaїTH8dH p^}z9/_Pp fZG>*4$m uPi VE[ۊ18fDB:W48I|`FScT1{ۇt7q(4S0a,dSƷ e)C[w!\]5=H)Жֽ X#(tNlBٲ9]\ȆYSpkҗ1<DŽ!c`( eK;=֬=+xkS. $x3F?nS녌3r~?0L]?Lwj],].6@J%;Z7n({xdtpD)ZK^#zxXŘ눬\5\[bf4oǧ Bم ko 8j#]S"9mn*IpńnRX5gBQ@Bm|xR7/1Kh{ue(T(e#j0qT3cga0 +s9<,+Ξo_y"Wѫ~׽)YnQ: ./&ɷ`RTo9 xaA`KO4oE"x9ȃ%o wA+6]N .gD"PXoN2FZjIDnG8<;+i _!ѡ*4P(9< v*#Ok_;;V˟R>?jxm"deXv͂ 򚈺b;S4a?|zfvEؙZ/sti^Z#H[Lz.k^Tn 8 $. XSBP-{{m8xȑ[|i:FYN4k6y09L Os%}a){EU#nK(o~pE32m! kt߿^Žendstream endobj 30 0 obj 1684 endobj 34 0 obj <> stream xWQS7_C 3$$: )!ôddl+IgC}]! fv]qO/{}zɯ]Wԗ o}lawgKiFQFG<]ޛɀ?>{|ٟ_<rÐ1|Hv'ē޻Wo_ϫhv87 C7:0Q;5-L0}U %lZf="Xa'Թq&T]ӆ+`nN1=l|"%ϟ%]$5BBW8+ҬqZS#U}i 445ƱY*5` ^ 8,}iMQ1RV| $/&ZHlYYrӧ3^Ɠ'G2RRMAuVAUC-7j[Zʑ0s>?hS'EQiS0d1V/y$iD澱KUq/f( թ;(R [#ii :$ZyCnxy6 I '3D<ZIt0g̃)ʹ%jY#ljԩTU2gqYG!ėG[!:\A5B2o*%U `̬$o g[aLn_9oGDV IMps R\8ȿ-gJr{6_/rt~u%F'\5DGv%MW&fGXY*EoHR4H7Y6&-NYe N#nD7\m޴ЮY#MKER]Y-\{҇LnL9&S<I/AǷs'5ץI`@^q3ܫJ&(عYoSV)$#*@7.wm; [x2K _]{1 ǧMK*FO{xpI1?)X H7M4twha ;@f/ X_[(Gƨ.&rpаY 4׏c\ 8m/|G ĠI)bnm&e?_T.6HTau8®s 2_4}%l}j7K0kUpڜ;]NZ<_Odn_*EenOn:bp"> stream xVmo83bm+!S+ݞRu t71ǰ~_.Ugg^=gM{B_+ HtȲm(4~Og6P= "D4eYLHT} 捉[WdYƳLXQ0eh}`͞HlJ(<6[ޅ/q?LC1%FE6<ЁLx UX}Yr7TJ|'{7 mNB aRr]+4)nŭ:x_̟\ U[w+#ID(r%4UXN C'u @+\`bOodqF_4bƭuܘK2tKxK2Bf&iw.R+mk\Z{!ʏϰ!YʤJL$vD|5 =7 ߥ2S1[LQ6.ڲp#FDEh vC T0rGJ&M.4Nm(%N䊇'6SIZ:(I e8`* +E fcд\ :Zf10ҁ RS;>AflRr",YʣDtw=2߷!wB *O&Zi VRsP#Gǔٷ ե~hWN j/;$fOQM_#wp z1^ݻpXE؊ X*G^o+ EPX%{~7*ЀvE< L,1:T0j̍#ai\_Z)qBʕJC_^H5?z+pR{ȉ`4JcpAG(7JC^bc1b6s%6|T2'HټY+VշXS/*PmNBL0hqZ9zvgRw,|O2Ί zr |o4eendstream endobj 40 0 obj 1046 endobj 44 0 obj <> stream xWMs0̯[1pD 0IgrQȢM뻶ll@8;>ij7{M>ٷ4ߚoK_^mvVT#|5 4C3v7G!D ,ya?bT6% r.Vs3Nn ^|PR$`ލP jÔ I i~י0B7L0I}6րC<`o4 `tnG)cM.C m -قpT s\j/P8"FoضV?nw\ xVyBDtp,]c+x5OC&Ocq"^X IOV2,hSՋQtA*L͌pb]/Y.$Lf<~HlxH%YDwk|KN5L4.5㲸2t$4DcJ^7J'e`Q̭wxeǔV+<25e I) CtHZɖ "e}Pmvcp:?%<"34+5hiYkV-}GfN}{d ҉V=krVk6X&An5( S{z@> stream xV]o8}WܷNB;o!, li ɊNF 8@&8i7h5Mh%\腍}mc!\7DPSni=⫤Zv1gE$cc{V  ځprR{7xj'Mx=0;:񪋝;ZGNsnj/wj1Rj*^ WujԎNjk0Ih-PLd1KfQyZx ~]JeFٺޔȀiUTqu)gJ!ҁ=Б㥵-.uPS+.(װ%d^#;5PquL :ЭR]j3jXoZ-@DDUn e+Дr7Q'9&`iD5i,z:肓43~IڴAF8j&[?)NC_F`Ԟ\'!V(Qg(.2o#\jH<8/bb-/H Βy"+0xYRiHEe0{ S:S-̐lIq>*qeZc7Jr3asFOz()b+19o ?I@i$ P+)椻@܁7#bMK +kiQeNxuPrX>UZZnoNj{AB#o Ҿ+j) R½ q~5?miFdޱBH3?E{camuO*=_k,0fTiXR &߶:} XЛߞE|X= pM s'K%K/_T7*yNpxs'l  <7swL.G婨/BhAAڟ=7<K\ "H\Yg"̌YdƼ`}&W%GC~endstream endobj 50 0 obj 1043 endobj 54 0 obj <> stream xWn0+\I@HUReh E-CΈㅤR$eμ7+I })z!^'M^2Ly:3[ܺdQ]@~󝙢F"Ci6=fDj wj|!$<\_ߑ9Ӟ D:⅒9(c(1ؖἬM3f >V.Ė|T*4U1Pb1U Z?I &NIu1?쨌CPPKW 2塣or%(yr'{hrȿS"4eE}AۼT 7qų7z(W]P]jW;sBV*7j/e 1k4Za Az~"v)Ea 8 dպd ɩkMk/"7X.ڽM3{zھؗΜG(#4&5=GڬDQrN"g}3nn{x[,9ZurDuJ 3`>$58|2ai3fF XD;*endstream endobj 55 0 obj 789 endobj 59 0 obj <> stream xWQo0~WmNڃ'714JTi&;- I[|}NE8D4z=\vd*n7Qc nƷpk: ~z] Yy 6ȶ՛\<\__#o<@ "QE!~~-:V<\zfBǠ 0M4t9,TY" yN=iehsHih4SA97s.V՜\"ObL %9O^r$s{ و/“ƅ!kq8rNA܇s @]nmƪl/iP GoKAG g¹OCWucDΩL<\] c.\,Jh ]mtcri2SJp4Xls/1@th#Uu,()X&Vf]ؾfVۮ[*&W}hH W^c#19Kfs4 pR9 |W$bhF]Aaq{&)c 9:2Pv,&Rm:rhmWCh$zp,釳G>]*Y~ZH2*Q-vw}%9"w@I,W4j=.U.[h u6J[i&}a e@}$8SƩJ@kEjCbCZ&l+hBf >ĿS!瞍Jq_w#Pkmendstream endobj 60 0 obj 914 endobj 64 0 obj <> stream xN@sdY%@  Y !U91xά <6|ai3Wckpx߳e=~Nm[GWpk8x60S,=>[Y2ԃ*dԄB?Uz9emtEMn#;EOP F6:d-qm9j߶%N-BM$S,DyRss rТ tsY8}&u(\{\(ס$=q9Jj5l.s0` ы*J*(r;bc;,3 ok!I9 gSiDe},Ro#U]楅Ov{ܜ+_=LoְqMDI{]K{om_]}9=RMؚ0_r'(exqY @'L52m$Z%*uJ/&4xDTtn*~U!c;W +zc$CBerYIOsC-RTūJbQh˶-aM` $3 ]a 4Va{X5ťO}GWnl@USyPPt"IFR1695Fz+FIWI%_YbՕSEX%L}Åh@1D T H$TL8r߿ jA a *3H_hX\15͡KF(<0r -enV]#A8`cpDcoù mvj8'߆m 8l/ fendstream endobj 65 0 obj 906 endobj 69 0 obj <> stream xVr0:ɌQL2^Ғ^؋m؎ B2+ىAޮ]I['$oLv%}$[> v<)Y#Ch:W|LoTN"2kxbdB|yDaQ'~PȄ/AhC R|hb찷A[hn= 77:`L>xRl*o9RPtL(ʸPgD,uzirE+D%-*!A³ ̣OFYj*J5yY㡎B*YRFTNܦ5/)k(5%Mw0׼ܬWN)ug) 6~V)2KfD= 1p T"JFRL Nd@Dܬ:+PLUWWodBq;z> }˷Θ1 mF2.c됱t1K`VƵ˸F\Ɲtܹ̤ =qFg~x24Ӎ8`+[ @j6y>h7jZhejeUPX"˱œF4JiN;s5:=> stream xVKo@+Dɢ^2^*REm[/0^_ߙYu1H ^o^;F)b|h#$=*Sϳi".&g2gb6$9щ"D_Qu"J"ao%$}aav̦bvI\|7"D" e]y :ssǁ;FI0 <`@;X9wӞw~ȼ"/ahPٱ[jRZCF 5O(LLpzxʁa](]gp ctAufd^j2#S(w ɨʜ%Q&=Cqh7f ʒڡe fsd]Ap( sя9S+<Pj7p Kd!,tX9q1kq\BGra%%AH@EM ӡ`2ZqFkSL{WqmqKe,6;T 2JF~QFԌ14~NnZ hX%ԩ[1_bzp]-#qIݿMozA,Z,N =}wmlB$H!vO܇^Ht$ɸ K{~A M8F{K-)> stream x1 07i Zh,"(VB4养1AzjوVqFA)qJWbSd>0xd/+c/s=|wR)?w7g_j셫Fg/endstream endobj 80 0 obj 190 endobj 84 0 obj <> stream xWO93(_NQZHާR (wQUή굷7!$@{* %g޼ycYT_wA~9>7!MwӁ<41nU{NEZy×0v"\݃ᐿ=sv?lyw#(ؽP' g&xwsI6A驔pj"KK'U픗PĸHQ'G¤r4F:IԵNB0%lȇffj])X&(k<-fNdv~b+J.)>Q?zf sXd[) 9TMFkkg Y6ǁժP1Fk DHe;&r$Jk x|ãWǿ匼?]^_l|$7J (TR̉bZY#fh AA4κnbs:}}H5r'|ZD檦 Kf`o(y~h1ǃd1uهo9 9$.XBԕ* SoGA6:L21D9=ʦN;j E0DF?+B\M-ȬiZWJr '^B)_N7¸prx3sAOh!k$9c[`nLeõ"SW]ߜ___[#>r^Y `D+h^6p*\^hj-FCŶSHK$DFcjoP]fBd.\E[|ꎆ{g;4 EagxѨG':i'c XP S칗Qʤ~&MH3wje4G}Al4TaRd &फ़MstG ^FMOSs;F +T4m ʃr@d CK3 'l.$3amE&nӅ7/aL8n8Eu_(*V|L0X:L2=8`&XN3Fc/*ofR)8\P<-ߛ:[m[D,Ƕ6[]i˰3BS;vVw4\X9h&*ۤ. Ǩ::+`I>F ]<%i@Nrl_+h+(RS ˧gp9v&&)U%Xk8pnj#^@^k\q5LMYTqorRkB2<英Kda&[)P+XV ʿCVXo&n$s@a@ (q[41 ", 6$Eޔ [s,K)8U J>cɲ<1^AcEu,lI !.ε Ʃ"iOɯJjept6-&;U[¥)3vƒ7]->Kj$ɷB0hÒn * _ +-=&g|Gܬendstream endobj 85 0 obj 1706 endobj 89 0 obj <> stream xVMsH_ѕUc- h%B)_iH3(1#1@TH_ԼGuI |^vn~ׇSw`0p!J:S$fw~P y-HiƩbD!\(Л忝=,;$!VJƆ0"Ʒ' %(%) i(F?QMexn1^C" F;J/4r^n0RHw{@Q撞Tua%b.<9Sl33"IQqzĻn)O›t1`:_-W]&`4j6Z$h&^J)N$1{PN(Q odyuh7Ŧzz 9XQ&+bi)MP_b\m;^ 7VPKlѐIE-PSR\#[;c"5=p!;> V,B™Ժl2N9y%}uWhw*)Epaqvn%ciZ6]F=N+̌s*q=(/7Je6S2*o; ( J/mF-BJ$2FIu&Y}$5Kj^a"V?7 7H/Or^/Հ;T(qf㲤EJUmṬv5YzKgvMI'T~j"&vZa`Qz;Vͫ} !#ɦ ln w߀:MW6]j}Ԫ?sWGm[*_qX;sXXBd wowendstream endobj 90 0 obj 992 endobj 94 0 obj <> stream xVko8g~66C-+8EJ+oxECg:~ob$ |ι>#\9/5$I<8n\G1_0Bxx?]]] k\WnOv7PKrKwud%U!>MX'A w_ LC(clS$z MؚvCEILHw"gy^ܾGR~c'ts>b+<1e<%c`5|*U㘱pjg f+-F]V x:lM JQۤ~SQS+J)(m" )Q#!N]uHm7/7Q@9ofQ;ٖ)dҎ/ϟ9puZ tSFg;'Ywa AsY̤{5hdW,jI`oy[al"kn h[U;<3'[r[(8)yFBN^Xs?; 4{HxR,Xͤ"1*xAZ O}K)}bzIQRaLł|UGֳԘ^XFTݟNa野2~<ޱS"!fs$xd6u |~|kFy}1xh"N\D,6`ypj]_@"+EUkn-1@+c:0p+LKz lN< Ol`Wy/XEmZuB q l> stream x]o0+Ric*m=ۍhUi Z"_ܞlEŐY+3,k4^ cAO5>nvxA-F"nuQi 4eSG1,/s)DxMa|W T<V0a&^I&$X\A$bvUyOᗣ:¦# BF8&1^A,&.*I%-ky ٘b?'Udv2 @:jQ{$H"gnp$KrfpL}gF7XjteGXZ6 ;Y8H`VR;mIE/=wDck$<1hY[~\]"_p⡐k$j1wT۔N";`嵠)2 ;K7AsK/Z= #X~hT$Q-;> stream x}K0+I7(iau.7/j0vɚFVM.ޗ:Lߐ K9d~OZc6K£`wGw<{Hr{aщƞ'HߔMjcBzL}!ԽӀ=ŠWwfcMqLV"^W XhǤwO4$,Ħ fpRcy͐ #Q9gBO^?Yfendstream endobj 105 0 obj 277 endobj 109 0 obj <> stream xUMs6YboW=4mf:$QO0 J r_߷p@)!@beLU30d^}5,x)F Tz^&!jE?*MRFDsb;Wړy*% +傲tN/!*\b_]ba~yI42)=%23Um$+r%c rgt 6n|?wŠ+csrT4浰LA~/j"QҽhS i,`{οzsasG}l0q{AEXI)KS0wKtثJxkA9G|YLٴ4^RܦlgVzx/7V<ܑ9c\w32fYjҹOx_7\"w;^CD P]DՒLJ/s` Rg^Ne'O֯sOi(:HQ|"Ol"<t&P~SZH&d}!3&='JB:O`(6j,l$(a䠉#wQ|_^mp^**7~AU<0?iһKu۳~$U8U 0wp'Adqn;|eK]͋wٺeT޽8.9 e6v&'~A]I.$POm>CnG2,"*8' /h*<{n Es}ʶ_L H{ɘl7_= Uat 2!xώb%l컴&޿n8endstream endobj 110 0 obj 930 endobj 114 0 obj <> stream xUMs6Ybo ׎=4mf:$QO0 J r_߷p@Ӓľ],v.)Ƽ?ϟ)!KteUѺ PYt(}Q=QWc4roTAJ/7K=YQaڧJJ( KNmv+|ܜ-Bˋs,,ωf{\&EZ< dn8IVJh.ڙֺJ^b&WFGS3rT捰LI~'j"QѽhSi,.h{,z a G%}l1asFΔEXI*S0[wK؋Zxk#^א97|YLv,4^Rҥjwi8dyVzt/ҷV"ܑc \w 2Ehһl/Q ~O9(S>nkjm9낧:RIXeALA˱riCE1.@>~Oޔ_Q8D!T~I!TLT'GH&'8 1z]8CLdoB۷1123Mk:p)V)"ɲh/Vv$KX\y:pw}e^ž2YyCW ϘCrK[Jo=FD WI Iڨ)\0֧pAqv;|eK]‡͋w٦eR0-n~ .v'~E}.I(XO]!cnr,"*8' /h*<{a Gw}v_L H;ɔl~>4]o8蔭?e$Zg`ݘ aψXG\ij }ք15}/h1{endstream endobj 115 0 obj 922 endobj 119 0 obj <> stream x}U]6_q' xnMMy ,ˠ-yK&?G63X{=L8QO^ϔ/9ItOdBHjt:w*ͪ[Z|'wd< Fˌ$t9ȴO Ab䟈=2o:^-Ve{9U"IbiFO*vRa sR+raڔae^OKѕ0-a2>^ܫFK3tNn-wQYgҥxma=h9;2f2<ƥPwչ2#x5(8o*x&7B=x,ʀ%;<$g7\ h &iրmNڀ Rfvɱ\hU'Ϗ@T XZPSB:WnX}6n9Hz?6?/T% X>j#wYH(uIEލN9?Z?[ ,!+VH.RfEF~|L ina_ Jj; "( )Bf(R4%0;*VUZ] $Zo IE RAV LRdkh!aڮ@r#ZI呄պF'f"rjq= αױ] `:kok8*%hf;ORХ8 ? G P'ߡBX *d)Đqw f=4b~҆ +dZh06u*H, |]ڊ&Z=F)"AUwt*$tbxDT+Q@s.CH^otXB/\jr/'+JH 3T7+X] Z4D:@҈pKL툶b\$b#d|Qrs7%7ӃBr9POYמEh_|#P_^!?'ap=endstream endobj 120 0 obj 1009 endobj 124 0 obj <> stream xTn@_1o\ UH}USE5o,1b%Ξ93gLӼyD}sǰh%΂FD^I |>;:*kAtΒ8ہs,f3 f 1]ccH ?in~}0a0. 8XA1:ߕ<@4"Qd+g=R25`% /{a s[$оd2{iQKX+cd~e2e½}v6C0*oL#pX"E0֙%qeOK8\GЮJ2o;I@^%s1(JO P*#%Q~5x/|+q]QC52gNKLdpu[E5? %ΒYp3¾i >*=fE[J9khCaK,>{EH-@X,c鳼Eԓ4t˭L@dTS;uGJD~"pM*I5Rqlrh0}H5*'>3D )v<bM'DIZ+M:p13I,?rɄ6T0^cWϾ1EɱKbB?'?endstream endobj 125 0 obj 646 endobj 129 0 obj <> stream x}QMo0 _nh_NUkٍKa Ighؤ K~{v#&~Ic3-sDbݑ.gXQ0 "ĹsfT f)U:)G'(͔}-8kY%])xD;u ,֐)ROJ_I5Q0M1+nHoOf|5r+S#*op-YbֵJRHu'nHܽa2c:ͱ\3Pܼ3͑m_C8QZqɌmU)^\^7廼BI\2dݾKOcǍՒgTq]ʉ'^_* |@iaendstream endobj 130 0 obj 351 endobj 134 0 obj <> stream x}QMO0 ݹ Cb 11ʭЦI4~/yἱ̤Z?2 wQ<2y#)FDUq$hX JIjދ.y<ϵ{)9skUɴY:?Oz k(Tm$+ݧ^.հobQ%pyE8DpMD© @~Ō.Z(֤XumVZgEe5R238%WvL'uaߙtYⓦHƺz(M(5*MힰnŁA/V-N( Su?(SPt< PB@<&7'endstream endobj 135 0 obj 356 endobj 139 0 obj <> stream xVr6ճb"K>8u'nZ[}D̀ w7R=g <,aFʋ ]w]eJH{~9G7I'AeeXါY,̍ir&HW}lV>p^H2˙^,4|.Ց^j\Ȑ0e 1Zb/5Lǰ3FUXJkPn_$oˣnͶ.Ɔ(loys3+J%rJ'%8GWZ)\?sM8A9V`Fd?CmcC۽En9l^Ɇ v'q4#l}nD$=Z//M#RD qpK(89vQgƳ.B7g'6u)dk ʵlFUq S8gQ-KJ>sBQGiX#ө>g(]JE”J,HUEي/FMA ؕb^Tkc(vBb 14mZͺ4£U}d̍mOO5pV*a[=8@US L;=|]N\! (qKw4ǻ5߿/Dendstream endobj 140 0 obj 1277 endobj 144 0 obj <> stream xTN1sb EUT*;Kz/)}a+h=gngs8nx3<oz9>zl1?/`YŜn-f|v򅎚dr=N`#8y:+)ȝ6A+ ږށp}p?b'/}B5XܢajZYgh]T1n2-:fFBU"=֠CN!VXAMDk&-p0:#88Ô K|y|}{C(-V;Z0#EVַ6*QhB\2kц"t` `J^J[}U˟NSXq*4`.̩'D2C]u?1yOeYTnshW:0h5*m;)"P{x:Z9l5̼ϻ+ht$ $S̮)klЈ$8sl]y^J8-kŤD3֤T{wT0ִiZJ2)פ#%FOj BFaJJ0Z%+b8c'MPT%39!7r$CU^YߐY?ktU5Rf Rұj;]:Ћ+kT]y{-G[DpPLbɎכ@r.h6&bOccKm=ok>^endstream endobj 145 0 obj 753 endobj 149 0 obj <> stream xVo6{ZP-;i{HhЮ[=@SgE*$eCQM]$0r˲7$O`79IM7tuu_ӧH~:{5Oq%J.lPz 0B6Fp.|pH/iap~;u@ Kb;R':]hSܣ[BzX! U nۡt0J56>zP<hBBkt =UaT}J[jl %CJ +j%:IM%+gZ|Kʊ6R" CZ< A*@ qst.%vTre WB)+zf],4\cKE? -LtlpE$bngg"lxvcG&-pY(!֥WKn.+`a() &jL_Q&q09n}GLendstream endobj 150 0 obj 1261 endobj 154 0 obj <> stream xUO0s/UUZ:`iC&M<:-S)َ;d•}w} ,KX_zo`ō=<.NrZ/W`S%=~Wx:X=OAg lt_UU[mj0^%2mI{\C#¦03U[$^7%Z9i,T6 J;,Lag.DgopU{ dy@m頤,fVu[n[XGB I ӬFڀD)B@PɄ$ NF4tf!':桻Pk pA2eZ$YJ(m!EA(yŌ+Ёi`2O7xzWѭ>J,|SzA)xG_=E܃9Մz̩=s뀹&4?>J&g@+awm5U )HjnBRu$-WGNXS0wP+7 $ꦵa`>C+zMacct$.?Ê8݂4'}{uquC}jNR-͠/% }ϜjRM 9\4M X f<M1H#1 ,&ՒIV+cB$VKVgx[YQ<ڴ,_9~tZӬFJzh2ܵЛMkĎ[k-L0ᣰ%n\l>'fz5L~շm T6ʈ==[ЕS8wW`9fqNB9 ~/Mendstream endobj 155 0 obj 809 endobj 159 0 obj <> stream xV[o6yZP,9ri%J-;G7Sv҅,:sYŒ~5p݅'g.qH2&Y|xO`֍ZzNJ)|c;簜;LZ.>Gx^G2Me{RJjhܑ]lzG-4 gIWh hDg `G!Q@R x i(etlr B[A6\D XN-RV b߄̸znd<-:><8CRb; #mòf[i|ivϻ]mgeTkڻ xe:Z8 V3f/+h'sC"? lSKSHEE cJcS> stream xU]o7Գ~"/ An&i=_(ޞ( }y )8dҗONL$p1y ytzl`$f -A2vt tŠ=OBڵPǖMO쭒{[SYŎ2>? W'F=FLpEU.t*UPpQ R H}b}s~^3k v%h;-#Y1t&\r#gͰ~'|7 _z>U>%k|Af ̰FVgTe\?r4Z_-n^Eòs {FlM ,e y:JHΗK BӍ6bwĉvkx.s'wIs&^F<ͨQ|uI4 ~}{i1@`mPs@GP=#>rxFKa7jє9E_'=A>`yBFx? Oc/zf|k=kE1?Oi2zt1 ^+Wo\~lE*Q^eJ!eL$.L0H'0؎!Fdpa7xG`'TѲ *i)SW$xks?p6endstream endobj 165 0 obj 957 endobj 169 0 obj <> stream xVmo6g:Zv^&mY4oE6THʎQEmg(s{3Fk?! k~^]d^-FR-.]__'7RW0O$W񄦃9HVݔ\ 7Űtxx* #3)vPyzǿH`P qZƢ d 9adVE)O{ o- 1\e`^ ~#ۧ)0RHVr0Ks l%3W_ծ闏7P\(Ĵr"o!r}P_(WV~{d%mdOiM^qCE \TYaG++ۀԴM\TVGtܳAx~Kdm /,az1Q~杕/:SF/`l^vK8Wp{+W$A~`.+˲ֺXSSYzir)nzTЦh .TDk]Oy@TD0BM>6ȍ2&:lv l"ˊ(5@&tx~+'k^^\d{8M&x4XyD#lkO —ЍQCD@-( <`#(Ggeo%t89" ʸRX\ʱXЭ[?QUĹ(=oK^:*T|\h; B0M&YB8ہR`F*"$X%z*"dC;\2ji y]Ht.m"G9&,bțkhHBDH[>m<FTVz%0sդT9`9Dc#ʇtrQE;^}?|a4qendstream endobj 170 0 obj 1296 endobj 174 0 obj <> stream xVo"7g}%BHKzARK/Tj|1ށuk/.rTg$73oތx4q4,&^ɒVۯ)}Mf;ZmbFp~45͋|δgu$,ӫ9Yv7Lz 9귀rCºR +EQqX@rd^5= Kx*tFbe6^MJJ*`kZ3Վ3RyYlU?Y#=ggbB}UvB%B.$4`6 qn?ourܮf.oڲ>W ݓ9j^/vy[ OK|5*Sc5CfFv .ʸfVh4]KF{.aӜJq&AI}NAa$<JJ|ytQh3~.węv7=;v40է4aE!ކTm>MQ8Fl$)nϤ0%hD]•}*Gb['_4=FKa&.mBV;(<} ׮.mfiuÌ/CBZFҗ&Oq27z#1Y-Z+9 \:ևN(A^M !^)9>x/qHϞ #?sLꆡ D@Ur'M-Cop9 ccozCQ"Vendstream endobj 175 0 obj 966 endobj 179 0 obj <> stream xWmo6gC?,Nb(6>-4KxÆhHxQod;mFE y<FW>ô?_a ra2Z:99)R0{`즃pPNf B,Chݝ&ęZ| }+JZpYL=1Zy= JjjV96^f.zcjNwke 3P|UIjXIg șA@=Q1MX{\D Qh!9F ̉j& MRffh\]?Q$:΅&1BȒ5Lq[11Ei[ŊGK.jB'I,̗B2a Ϙ$I2[F6999\ US8\L99Z13Ȓ8OSrsv#\q(9L<&ת-qE Xab@BKGZ@Q?T(frj•qtaźRuȔLT['e͜갽;jLW$uyf?sbGiQ38+eQ,R, LtRpi n0wAZ'뚰u.( Cn w6,1ON~?TN \in6_F/̙#lq)2Y6:H=Ń>_pjoBۉ9Jt$ nv$ؖ?b[5`.E4uMk P4f64e$ٌb?:%]N{MJ[kS&JUjs>ch- Ձi!H>8 jZblYg L?fgrͣh*ar: KG#?{'Ě%<1沕3Q!f)ILGw5ʆl]#oTΦK:6Q{ txT+d0GnxG{aDPo^՛ j|)n w}endstream endobj 180 0 obj 1293 endobj 184 0 obj <> stream xWko6 3<&-I޺dK(tmsH~璔M9#=\ACIע}}G^w)jq1X:89zyt"hqN^ջ{ϟލ/|Gg<'QR('SIDw_: k mO]đ]P07)*a V38rC֦Di_R!QX<\(ǫ,\~Y+i *J}0 YS6JQʤ_ rQZS䁗 2Q){ 4ˋQ9 UwްS ֏#4JԾLEDk]yStea鹩a#'P^8Ɨl6l39:.е*X^&w7oW7Y FS~`Z0E'ԥ+mzvCCO袉7tœdiBV rb{ǝUrtS<^ZeZUڦ1cA1t.2=9 Smy$~wU;%m]:>Mm1W5l5-&oѼ΅хñ8_+]g68ܟn<VLP̓ɳ;8%5. &.a:RG0.Im< rDlp7O0  tU/QiE =2[~oP+I J2xÎn}UhOĮOaܠ w`[>}J@y]M]]6endstream endobj 185 0 obj 1605 endobj 189 0 obj <> stream x}N0 {S21n0!F 풥. jIq Hĉqpfpau-da8xnLM6GEƧ钷Ez}˩:N7GZ8$ \!) % $G /1Iԍý먓#.:lp;e;G7%{ζiujl(;W;cAGA#${)Cx\ߟ Wj?XXuJTӑWR">/cgϞ^{aaU+-@8b<1 qioQtA?yM(sLJW艇[gupmfOx|- endstream endobj 190 0 obj 391 endobj 194 0 obj <> stream xWrF ճ8F N<ǹ4iT3KwJ{N>"V$prNftl;N-5t \ )!ɯϚI]:xh;Z䌥bUK t>彌HigDH8^c|Aýs:bNgu`{ F$^3沴ZHŬ|z:@#VZsa"c0뗑gE9o.eKf}+I.;âD)rd1A7)$fPM&cm)C-@D)Sgz rd´5{oG[} ( 72 'p@-_S)SPP;09/C*D଩5#GmF^I5H}'dN] k5!J(F&[U:6oIPqc=&&B9\J$uU͏ڠXŖ=a>}-̡eĠKKn Z#ٚ 9-euWL(&TS鍈X:1AR(8Mnx$LJ"@^;zu\-ujÛ9B!F#n!H7=fR8 >IMӆa~) oH,/(׆&y>G}QA־Y"Bk:c((T5Hbh -m#n"瘻syN<ދז M"sX3Ͼgk0KtA+j4`x~Q]y:ΆzóE9(0FnNGNLHA> stream xuW]sHs~/Gr.cǐ`\/d_=+ɑDbE3=;Nf4OGwGw4گWG>紘gg9Ot~~>9}[ӓG%ii6!'|tJœ,ĚOWߏh,JDPxtJq2 %7!;M)XBЭt2gnD T8JE$ V$žRͻJxEVZ CoRTQjYH|S(GuA#QզRa_bb+!R2W{ߎV(!D<=I8KPӗ%//NƲK/QM$Tʩƪ=lķek): dU_B5эw!PV9teJAYs.j6B, ֕F)|C_ˠG%5KO={&elDH\IN*d"7ͳ.E(VN76B,873YO@ tHP%K rrnuVC؆.n=EhK*V 8*Hq!rCV)Hė2 \'NfIܥ֪V1wWty.Woiz { e٨P!*A2u&euՃ&F-M0ߞSJ@AI@z9:@?1]Jh̞>$OޛHe}c]]ƼhV$8?)dVk~g|ҡ}';:'gR;F25s`Q V)FIwC(h;n}w޺p'ibSQPO3GX.TNbeQeea?@epAՖb п)n\aky=$Vynh3U WF dV?4K#/eJ6DdM2=2!3'9ZaS=Ás0Hy_ c)31|k&bk¤%-js3l9'&mE`ltcPlydcxpki_iho_Ʈ G)L(%fO^Ö2e#6ϘYZb?OjP/nO.I?wV;0&JYjB-&cbz=\Az~j+a{$JLdpţ^Zѧ#nendstream endobj 200 0 obj 1689 endobj 204 0 obj <> stream xUmo0g~ũ_"D*u&QNHA6_s6~a!ӌ;sw=6kHz)$ᷝyYw֐oKx:7~҇m:Ho![t*n{@[e!j.h843h> stream xVMs6YbOjh$3=8uI&i\[%Jg@1%]~ T$݇<,aF΋z^/^F*b5n5:a767NZ.Cih`#YkQIR?@x4`$- F|SBhxC=;|7DBX\UJ \t()%l4 5Y;WZU7b$Vrgl!Ƙt6< ~ jRo+|.p Y-ev@ a|^AtɍЯRhkL Vq2آ(:pHC$-~Ũ~3xiMЇM 8S(.ǔ]q'zj ntǫAȅ=Y¦~zA5`ejOe!|('f{'Gѡ xdEd,;w+-=4I̅VcC 8.m>>J{~9G6JgP`D hZ,̍Prp[m+O;SF`LE>w w2'S 3YY`(POBbN5Lǰ3' :CIR8F~n4M:Qk)h0 pQK%5 v5y+r5xbE4@p /ỴkDnx,yra\9V`E`?xWk]=5frPr {/_yGg2yFWtپ7$筍/azjtQUSP):yݼ:Db#eC.B_WNlVPk ˵l!FUI"S8gX+LKRC9Vr s EH#˩>(CJEĔ$M%Sb"@ٓl $b]Pkc(*n!1m}$h-ɛ3kᩌHvS axFߟ,1endstream endobj 210 0 obj 1273 endobj 214 0 obj <> stream xV]O#79j_vAQ BURy8{=8dCנL2u9Lg)_yLx/_dC9}\L/4[.&qjr 5''k6#) u^UJTd4^tX.0ziBcw ݴBx(ٟ[B {nJZ`'T CN(Xī{ZW,ɫV8\,Fia=}!+V;VkW!J6|d'!9ծTš WҚ2Za4܅SPỨԺo PDTK :'A ܶQ#j ^l OߔES0w M̎*zSp-?B1~J/qe_As=:jLDwZMYxYZox\͞=J<0zY!]Vh]B l#Sծ"Ox!ԢiVP專x2FPV`Msg }f}>;۫g%t< ΦQNX9QM;:@pGTU@1FA2S >˕JUZp-==7=_z^W{@$/bqX ZZx@"a ƋKƩm{b.p^:;%1i`V!0160g\|y&AΠk+>@B mhuU=B˜yP XAJՐ4Q y] I ẋ R<55s"wTkX5.M׵xS+H-j)>NczHE?| 1 )As-|Q(pd0p31WElMCC*!Z\9#rlOYu 35sj7 XfBit'sOPL4,:{}1}:c=H|S|>ًzDŽvwm֦ڣt7}n&P8#jJqYGyg4T+Pp򸝛oi_eO~F?endstream endobj 215 0 obj 1157 endobj 219 0 obj <> stream xVr6ճbj0"If`I&im)Jg@p%aJ4JV']Ii#c;`0_{iqd዇$40[ kZW6RW08_EWdʏQ(Qݔ(3U#dc<-Y:Ag?pޚb~N `p>@ 4R'XLЮfeDP22Xcn[om6zK^u^؁Hv $ Ў )EAׇzVo+rZ@a2]o kd -WZ6yOUiJƔBbThy.ǐCe#E,cu(;ȷJ93cAMV906ųާGO jR*z.(Dv~,!Mv@`|, ȽWko,NݒS(EсBr@U(k+Y[KWZ>A~`LЌ&>D;q $`^ch-ޢnR44줋T]UGk cՁ;ڕ>Ю@pdBZb[G`pL!vEWd|PKEmࣱ`=Rbfn@Ns]tzEn UJ%fsqTAWITLUV'"Ɠ-.ĩ;q.º5j .ͤiA?7}Eq z G( zpFS?S\wb14@S5cEQ8#b2?%yy9itMUNI2˹~8q+(0Ck]5&|tԼV&ۯF3|yIMwd2o _eސHzOo-| kցigEDZ0MԊysb R8tԆ~n\=[RȨ|WK(&i)􂒼=cz)53rEB\x;Nl0mHT|[Q9TF1%y*ɖ.5k;g2Z^,֗M=GKlcZV9mbSɈɕQ4vj\Sp5l4K?:·URԠ(2މ{FҩV Ba7tD%AnSmW0foƁϽXd!<&endstream endobj 220 0 obj 1296 endobj 224 0 obj <> stream xVo8 s b/[ m[{lE7nXǾ2]ΖH~dur e##\pqb:Eq8wjmHkzkzG[׫?Qxsvvw^<¶E0CG`h=vF*a"nqw`NV΅~`bgDe`ͳ9𭰾M|-cRh khq7I))OOuFP0R EJuH@-R]r-S.8xU{D0H7敲Qy5sդGŦ8l. =j)=-(w.>H([=QKS=c4b=Ii 4e#0FEy+w2wNck}!]潰WdVMC%(eG(,A4yyI΋͠?敺5ah\5*33&1՘pyM~^IP ?d0uYͨ84i]Gk֛Wܗ ؓj=>@oj $i!4$Ns31czL#䉢C1r;H \;v4{v~kYt׉%t걥>¦(4EEFlJяӔ#P)@SLsp@LHu/H ԨS),;asBjѕ%Ř'< xΧ8uYrp:2{~ܳ)|5QBϾi>Wk\q@t(T"Vjw_SrwvSx;p<8fk9 ,O"s·~endstream endobj 225 0 obj 938 endobj 229 0 obj <> stream xVMo8ٿbKV"i @wuSJD%RRf-lFE9<«iqYWQr67yvaU7^OE]({=9*A0hP\Bl_pΌժ^v/)0>?89~b0p/[c>c!-4L3j6p gAjEOL heJNr VU)Z[ZVat$Ԧ-2t@~V˓ _$OM^z|oLskXn}FiҦH['h3WfHO݈-ʫ6g9։j+ZYH|i{PxXb-ĀTAa?mj4u6/oLXCχu0ŃLCp@N|@5i,v.5.hȯӾЎɓ˓͓ϓәI8E yxvBrV#ܟ1u|'0րUyN#8jdՉլ&(߹EvV>h`*Wq oUb:$ˀPK6VhC? MJ !g>(#$|QlQQT̘p?*HТ3x|b}6iXWr$aшIA"E\WRQORMM2CSԴp*5!Bpʎ- I3D?mx ՠ|v0BG}w݉&W|oÄ=쑁!l==y7vP9 viU/endstream endobj 230 0 obj 934 endobj 234 0 obj <> stream xTMo0 ٿeMM40 芶(0`hc/L,ɡl؛ʀiH##\ OgNv^oYr\-:]-+ȊXUz[:]~#C\YlpP#Ɓ umC Y Ё-n gُ xٷjtnq%-6R(i!opX$u׭1ᦖ2q^[|c]uHE5v}t}ǽ#O@޶:Gt΅GK ba4L?Ad!R-&Wct:F|msx;@VׁsźDrti͖Ɂk?< ykФ*t"z [m1`[m*-yiy fC"}Rq b!akjB1‰ ~Քg$b_''62̓:n9q%'Ŀ@FTcmOx= |X C)lٱƯNř%dҍj*].$>Miendstream endobj 235 0 obj 562 endobj 239 0 obj <> stream xVMs09bMJi3 CNb+flGJ=+9Wpfb[~}AY9z=@ƚSVmmDgQըoqh>|Tj,7Y'r,FEEe\eA(B{Onq{NRdrM;~}0 `* kϠ^SP#sZQj:T-TDRMT9/6H)4Lp 3g(J ˩ t̃e\hNCR5S2 P~o Y)ƮG݂ 8 6#.m7饉{pxXct*uQ4Z׳@\ n`Xed)}8R~g69W-$u]lTfCp@\Ό$O[נo6W?bֻQ蓼ӼSS蓹ӹ3( =}+[зzn14W ֹ+,NL5 _ƾ 1T?RZ7KUqh==@*/1RL'YI01-*IW䪭_Qw!8$2i0wWaghv:c8 62lw__Zׁga' %hV^N"} R( 2Vneۛ(:B]rҞ{2Ziɳڙ@b{!,%|\@#}endstream endobj 240 0 obj 933 endobj 244 0 obj <> stream xU]o8̳Ţ0\>4p@.H[^hje'2?wHIP0m;mi>h?*v,Yӿɇş 4[f%Iar f𨞼{fgdٙ*xe4 4zZ<#ZLLoɫf_\}՗T /KX˚YաƲT. ?9Wj"DYFnBc7Ҽ~22\H6MWx;'V C1PΦ<'f.EUr%0XS9w#w\qkL7 4 γQ:"OiYZ!(x>+Yha--Tӱ> Mc'3E㡙Cꔖ\:J+NCNg 1?>o筩?H,㗰J0 2hN4s~ERmJ"bJJ;}?nf ;O2vLv* ^\'e%C@̞Ri;kLMz9gt Jj;W  Qt: GM`1GGQ3_W 5BNKzuyI80yWmu |$v^Wz=M|,vF{_?Pm`qHM?SnJ\g&μ#!%7~|8igNw~"Nz̵ctI}Om⮡#ƙ*nE& 87vendstream endobj 245 0 obj 957 endobj 249 0 obj <> stream xWnH3_Q1ܤ} Y&f6F#eٕv-Nw[ ؆L2A :]S^C_Ż^Z/Ϟo~wtfV'A]]]uϯ髨K]kݽ^k0zt6@qt+tsr\oCPV-^ym?vį .Dۗdp*3:Sz pTAIT6A{Mb00'̑TH(t&-aHN4PpR+  d B%AkmC|h&qJ* V$#2dj{K ,L5Ϥ| ,Y C~g+gOr:"+rWeWSԆ#Iv7Em 3}4y{J&>%t؏n:?nA5]0`\bo! &{JrrvK 4؏ B GyduQSt9 `yR.2"Ԓ٢Դ*k# Xp^kD>dC*ڋ rE=1oSyo@Qͧq*֡0z[r5!q_hu0܃hx{K ʡw ;TB5Dqg2xD=u{SXp DX/Jժ{bcgK?bPz!B#5-Wl^54+r7+ઢ@R dbWWR$m-ܡetxz U / AKB F SR֪ijݴ8"~X; P,:pCr薄,˦ndzG9[K#7Lj ɺ11%gzEʯK_Fp?xfGa<[hcW_In!c-wzs(&j;y[v G rC|}rN[ VAFkI h *#ZۼbBU[0)b˞Gb:cH&-l(pKlV&MS1w~ ހQLw|._Y %-D6UvU:T)UwjBr !/4Z,JfM(+> stream xU]o6ͳE_R'hÀ,hːJBRN_s)ʖlS_ܯs.m1˻'ϓggk}>x|wIIg1WW<).U=y zzm .+|:ؚ҄fR2wkm$<;|]`F2rcZTLQTߘVU$<ӋnA 7=FU-2i#5ʫ#{Қh˔fr,`+ %8\N@bOS"ZRύ)o>*E%EB8KZ׏@,[PjZ,-8 Y}qρѲ޾ M> CģJcWDEz]j#К(m> stream xWYs6ֳ~N^CRbǙsIۤ ђ R "(q v<3~I1Cﺏū /h ir~IWk6Tm/K>I@ꪔ:Zs% v_r%\uVf?gE^ǺdXeV%dq`gnV_a18 $ J:iLGmס1HRA J0 3*鍂( @cҡNje!FET vBҎ?ڤR vhVeKmnV:@*IRlDI`jyU&IJ%t&s;p'Ef)oyMW|Stv07_?^э#¤>Vt.Ho}{ V߹-;7dGA@/&l|>#z"ʥPM}sf&7[~.=yфeYp؀[7U)K1"%[< ΀2*5L h@d!2댲)n ,)P7h2D+u. ڧ mz52#(]I)!e -TKL*aQ;P&ۃ2Ȟ&OeU!@ g({`dwwj(]rtMcR}y -IkÄS S0R zP~O>wt*|OFNk ?BmJfBn{eȘ`LXSYXƓx*%K'I>4ϋ7fRK;ǡkSvK?Yy-oEݯ\܎V0ꧼwQfhzE0_L _r/TLUh9EO~~O[Rڱh +Q^SxcygH+˚ET_%7YHu-x0rCv8/nh6:ŷKEz%;l-(cvn>^|jsnn6UNFZl'nӍe 2@yrhCŢo?(lOgLk('&x<N.hnh#cL+sʯ4Oendstream endobj 260 0 obj 1326 endobj 264 0 obj <> stream xWMSH_ѕel@n,q%M\=4#fF6ί#X©*$[3= #_}O򃇃[ ƣјjƃs|uvv68yWˣS~oNKrFBEZδÆ{AL-<}^z KpU&8I֐k :gʘv+rWP`ie-3iUsKXߦ\& լp*Mnn 3x|8V=6ď* fk'֤c#Bd,^bA2VE Rx kxqof0 wM%҈!+>)!ݚՆήwlVYG2Ps:pjT`pXjIEV) pL~}w2]x+~O~L}Eo̚e0PjR3!N J@ ܆^CӮzrz %/$A|J\ub7+ΚT A޹<MA2i;d ;?WJee  :|7T8NK V&&K_l 2b:n n9O'X́})(KcNPDC8e>WfC(2icm@>>]JH/5KkOMHǸvI’P.O6" QMf]??znP&@̱$Jak Jx#z?wt.E1_ODYc(Uxhkj[D'ɀ&Șm^RrhS3 ^&*A;dw=y)pcSqvK%J4I-H&hrR?T5D+⯂&%z0+a֜ت$lv'5R_mc{T/;~'t{+^-lͽfvAvvc +P߃?bmsm~3τjJ_endstream endobj 265 0 obj 1618 endobj 269 0 obj <> stream xmQo0OqKKhR$XiCBT[_so6k& 𴫬Cr,;/yrzLq4&29Ed5=t:z¦:"QnZhul| hucH_fP+ _)4u#)FRQH`Lظ}psAY4'EU!N.]@t$- )$SrZU9CJ\Fv! !TjwP`Yn tbD5<s/W.)H@ʲ%UFDC(ZF\izv0fk\1jev`JX⮑9!ИJй&('-.r=RoRo9\P;j{ 6hqFRܧ^e 6+ջK Aeh^[XA# xYto>J`Syk'7N:aCٲ if. 6yX7iڊE؛!,C6f.qW!6Za)M<\2['c9N)V! l4ki&a`x0Ny6;J"$<dYendstream endobj 270 0 obj 615 endobj 274 0 obj <> stream xV]w8s~ƭ?e6Jdo]W؜*7R-Z^URe\20|tK`(ZuPo_c`g|mK$Aa5OKe}of2QRu KѧiCxֽA< %K)Rp0P/@š=|MW RGxYh[1қ4GTEt4}wma4 W&뉻5M//.G(M{KVߏ$ƋQgO /i #Ӑ_B@D@n g0q$dq!bh#S. *ƅʩbw]/*݇7ȱ|0"i}c $_x;bw2d TH=7Ϸ!P*t}Su֙}2[}K2 4!ji X ں‰-U[A8qY`F|`hJ㹨p"|Hy-٨ny%2މF#ڇtzYPWJGnhX sMzߵ ĠԔur;*6).yw\&7Lad bvO mr+0 +R#mEfZq'2ZcCb*XЏ Ǎ2.H@.ZZwD+aAƍexgS>Zڢ͔me! ,NڊZ` j0kFI>8v@ 2_bP_Ni͞N'4oxendstream endobj 275 0 obj 1445 endobj 279 0 obj <> stream xmN0 wSCUY7&]xҤMRonhB8RӤ?v{e9:M<7S\󢀻l dT䜵(l~˟B Z(5's-:PI*V%gz3 2oQ49 t:=t ,-`q\ʥd[%z)a˕E~Bc4ѝr'ƚ6^Xա= O #<@ 5 uB@Axod] e,W:,_Q{!x`#&!%?+xKGendstream endobj 280 0 obj 395 endobj 284 0 obj <> stream xW[s8_q/%!M}"iNm }*3B-I&4m֞5]twI{^ ߫2i|2|9hb0]P pjԿevqM߷//F/;#"׳NdyHΞSwvRHr_ 4tu&]HΘ˿.QyWHHb As7HVѣ`vrG %"hkze6I ZD*U1 Tp;JX)uxEvAa=-2#a-iݯP-Zje?$.fbSezx@>6*"<LDӕzP$a ;Bw؊cm9XR.O:+_/__͡sYXlYub+)G=(]9^ !_Mk([K<DLcvS_}|;Y<#ͰN`#쌼]{V@8V9P d)/`ܟAב,_4^+I"TQQ4BHP s,m G_wB_,@‰m 0㬳AXe5W?L:3:P Oċ-T`5EЩsvVtZH1.RH8,MXcBBiẺy4KSX|++ QTOr9[:S%<`=' n<1קDhZ-׽n|L)kP\T uqEl%SqN_s[^eܓO"'PeCoj+4.kѤ/"XПFl% sאߩu!,Dԗ|>a=P?%^,?dJhY<5ڒ60DyIAY57nxub(iʶVxE/W"(؃(u *JpH *^(ZE+ڴNR 7C_((/zCSq1> stream xW]o6s~E_꤆[d؃Ӵ[vmtg-6QTHʉKY$7m'6E}}O>gdԏ{O nDSl^Q[:рՒ(!fܑ\ҥRn,ewyCͫ:qn|;>81J[T@&}{qޭQެ1>lGIPAC `}OBՁN>uTn9],]SpuڂL/TbJVX>TT- [R.J9OyZxMdZJ63X5~\{&aJsgsEP0?5D+,r`Nf眢LeN}?Q$5Gt3WOj^S7$m2Yb+MYCʬ*|<ѷ]wu3X!0*o=߶lutrӺJGClZIb j tژ~]ᡙ6>(!{ڐ2ڳņIS~ vrٍտ(g~Yli| .LL01EJCMc3 g'~7Cw0R8Mud=vybh[kZ ()r5ֹ?89M\d7řJaB%$B ղjrW/X56;=X*~,Rhđ8L{@Mmu$;%^% ؖ)-Tj.X Z$BSMuݟSuOP-:QЙQnb.])@l;HMjJ"}qAN<@`qg(GhIϿ!]tat%m[T (Ma"2N65U4KE߻0w.{4;cj(Ruʠl`AM;ܤSXEAlR- O=v\Ts1d|UȔ Gh2.;LY&e]0`bJT‰IS43SZ|(JшT6gQg}Nή) GSSnGw&?p@ 8m.SdPQ8FɥT'[ssCV]4a< uPȵ[0,02@FR6I܎:!V(}ܒc=[ȭV>>b$ .R,+ o"IF]ٌ8喋*h^gµ͑h|lρ$667zQdyן:GcAaag] `skS꟞{G0;=4EÅhtuv60\$f#N>d^La9.q k(<64Lhx zF=w.1O["gD,\0wW ? -hj@_@d@96_]h@endstream endobj 290 0 obj 1456 endobj 294 0 obj <> stream xmU[<yEUݖ"O\Ericpԗm˯gnd!6e9=Ìl'y^o'7l|5_v7)sڵ64^sZj'O=z !DdBQ4I! h?ys ~Ǥd\}G3tFX@b=N!:HH钍d&Nc~tDAf+ѲSFCTUr \ݟϘ)i^h 0h10oU݂v*x<$QMP?R^qǜ $ pCP>u 4R*;C!Y:u2x/nSR =fD "c~}JPZ@kGJHۄUE @ {N-hTTWk3eTiS2z&ϤJ(d)w(ۓh;^DIGQȴMFs \ߣ'2nټGl TtR4۟^+U⤑_Rq{]y5«x3fvyWxy+b:]<[{15?I)Uqە :B?I/c92ENȷL*Ƹ-5 ̞*' 7\Lιفd">dtK`-4@[比 Y ՋAC۝wE714xzj` M2(UW)j2xtW_|*J7^ \Q#0gη_0XoOHds遊7>Nrendstream endobj 295 0 obj 835 endobj 299 0 obj <> stream xV]s8_q'[2Nid۝~mې>Y-9LB?~ϵ1q,KG\i4S2oh\/uj^E񔮗Jb]΢K,ej ^L'S6V'E1 R/-T#  yG FϚj?;ѡ{aǐ 8$uiTЌIoB/՜˷vuښFʝ6ˋA$*W3*sUp[ʅ)G$L%_dڬ^9[(w6W2Fm5zEvIa=- #y a,rrZEkK-2r:˭ 5{8LmikX=E 8$"^CI @6B){Jc@I̝\oߣǪaQWPuNܚ{M ,*kzқw$ҌL`ah1#\pg7<ې.ehIJ>0 ?Gs`?9D\ˉ$?eq3[KP:hIU;j Yh4u< b)Lް}W+R(A[%\[Rq^!m@S bCG s ]8ϨcB #-E]C6U!n+E^tR+u6̑m8w7.,ޏ͏&sid=''uR0` +7-XX cT#ze҃g]S\5Vt(EDj]vm*Ez-r=-MȔ gh8XWLR6QK)(D]8E32'!wDQG+SA} FkPٚS<sNT(Ae+@+]JXQ[ejɿlP)<4-yrc2o5s\%a)*DE.W 5FsAcsD#((8(vbs0{;j43M]B*Fz@c^]X7Px8:O +Rf<]r<8Y7 ;mM e5[rڠTG҈E4<9iWKtvфYc{O^p5(-!Iց5[J ob *e.y(+pՎsM Y\ƘSrk:+7@Sb>{atQK'=u×'}M_~ʚendstream endobj 300 0 obj 1289 endobj 304 0 obj <> stream xVv89_1oMRMB!Mn{nBxuj[$CE9 3W՝y q~|Lk>MM<tq`5L0uqq1]U~:_G|<,,IQ]XEqyƤ>$zSJzn\8wF+Lbli_v)ci)ZCۿN:;~*Լ5<}>x8tMuSޯIT5YItj o1YEjnX821)S,5,3Ɇ~Lod$VJ'MD> b H0$FŒbKx}\%E,&@)qrZbWj&pk]H~yEТ*;¸?_ "26VB&ߙ`'ńNC\a0v kX!o[+'O%-rtL̅0!""@f*m9X]k0J0#W>]ن}1 1@Bgfk =lFg~_19iSGpF=G`x\ #ʰ!.+ƽJN•[mv}5G[5% c.k0 5q > stream xuW[s8s^LHJ);< ].mf(dɕ;R.6]w4Mh߻YypwpG^'+t|JgdJ }b3uzz::~K#_*AYɯlsT& D}㜂̚t gts -M."HT$[-)0ǃJ ]-k =$Ҳ&x<(jYMiڇv\̩GڳC9"n3,jOz,^lpb*'#,Ig:jD .}Z8m-`G~uYH5 *jρ]Ҿa}OHZ#ϻ!eP#5KO-ɟ" zN|`\!J^Pfww$ˑ=@ڧQaO`3͌#:Tdh@N  M[:iǑ޳_xiUУy㒥K'En hQRD|%8on^qŹڤ#wCN \jYv++%nE~jŻLl8׃녺+xEmHã6#=-)SY,Y_R:Ky(%mpp[ʾSպ9Ƹˈt 骠U9W@ba׉=^Knz$7<$臱䀊V\O̽*_N$hFK ̓>oU-vglXak#%Ah 1C`c]/!O t1ԟB}i6m]L'C Zۍ'c6,d<-i`ߪΰirqPh$leݮă;fOSXⴎv,i6v$;d@mѫ? y&.sU@HDRKAXpcbQ@Hr*DCXW@CmOx P1.y b&bdց~4aY^!JaT͎@c$AO54[\Q;'ghƾdEUGBr@)M5н 6~8([2ē홵[uƣ ge0֞ﶊ('n-PdB LqM5tC2tnG7/N &8)bںЊۉu׃ )b< MOxf|qG[\zqf8 $?a#FKi4+*1Jw4 ?R \B_Kɚձp / qgG45vˉI]'-֤i\pN+!?Xk.<VGlo=v7yxGG萶3xqM^؞@v;k"pYԘ.aۆsn#lʙΆ`xD|f?NQǻ&ȃd^VgMGruK> stream xmn0{S-u`(Mo^˚ZǬ)RS}RFIĒoEYa笺b(TeR^a[WKj*d+cl FY)(%b3==E5Y0 y@F[nJ>´.Rv/gw3@5&"ړ3<"x,Iy9(O:YlVn'2GB>E^<EJq%)wCJkoɪOL\& k2WMWN>%BNU96 Oα\T !*=Ő:7۷[vS^Wqd|m/.endstream endobj 315 0 obj 368 endobj 319 0 obj <> stream xVr8_ѧQ1%KNʮ̤V B*$@) RFF:}:}<~dEg/&5&U>ȱkƧl KifOWd<iLd>(l(9=HEPxx"U=ëzd/v^$ϠaωN~H$vfN"FIZ:[JYLpZ҇G >.|HZ{Z6Fm .]RX+3A9#xI4e%VZ~)AB³ +ng2lS$mYxQP7uma}2ozHC]>R- &Tm:H=`C' IeG{XoJh,@|~'B*,B5G&+Sc uzlHѰcs փ*z!(&vJk((FliF)m K­ψ>ZG껨R  7,_\$֦, kOO󰭲f(Xt&y!}tޔ5F|pCA$ˋ~I~1γ^r<~-<+[#ƽ_=7n5JDc+u"QĬ`*p+T4َ"UA0) |i},^=+VQ(+! Ķl2R:d@ٖ-LDk0qLCS5 Yb HXr] +Qu\`5j4{#;c*XGMa^&V2UZ[6 @K"Klmj%-kj36pN@;aWG>WBM>(QI\;66!+0W401F)C$3آF3 #b=4^S$ Ps}hHìa -Cݾk\yK oQw*VjWVPk tFn05Q#NzBGNb..9Uz !2Q̩ th+TU &,b jDf' -EB?h*U]n8U/ܖ$*41-T!7 nǑF笋n(ՐCO|de\2QӘhx-nX0E/~RzX6& ٮvDuաBOT~Fm 7DC1WŠzKDӳ*ԁ'0 kL/t{q|ӎ->iq \P.oe`ʂ)ױAa76;-VЩʟq퇃u)dZQ 8`o;*&-͘rYlů8M{J%1rÔf/7`&WSтXac-l~E}S MD7ʏNƵ fog)6endstream endobj 320 0 obj 1495 endobj 324 0 obj <> stream x]M0]S)&  q#MŤJ-e-ęd~޼o4d@ 4@mBy 8ŕʲޝq( `U0C ɗ$]ٚQּ`↻7sMvi?J)="P\њo^=endstream endobj 325 0 obj 178 endobj 329 0 obj <> stream xVn8bЗ86''.Hml(JLRNPGMV$̅3лޅnhU?ż{r;чdt:|-$FX5~pSIXuJt2fok ŲW| E$T6a~6L}5أSJ-ߣ_Cw~~ R()y8m^f˫NKN%[)ZגgvZi!SR;JehIMߜ$r4hB5UK[C\.WR]VIjgAYI ӻ&JShgq$y˴[HA$(V@ʫ!t4gJ/U  ^蹇r!hcPvV &.8oGJᕆ)4xM`}{PEc bjl.pDqCb ƪ,j$䲤}X$oLߢNJjɢfG5e?Q pm-zDߪs%yr]gC}]tՐdX+2xK̻hp+SV2L6LVwmDi,w!ZDo&̜yu>SQˍB6#ؼ7eS05"Em7\or?l`> stream xWao6gC4 ͰN ڵMCED%R!)lIn X{zw|w<ɔ|t;ik/2ѣ숞Of.bUsL=}tr Q._&dzVE9ZޚԖI15C^pqy  hD/O߾ ࡓq*iTҜFn|ä}#8;`*8-ȄT0~a].ke( ܆6*~B8rpL@vrRȔ ,[ĦZI&Ei$S!EQ8[8-xBK `J&m)ʅTXhYH:p!kxѤlcmߥ0 i ^R /=z6(Bf,7oZ$Pg=,Y lMVĝ^.!DjIHiK(´(!FjcwD:!> N&JLd4 kD>L>-_tmMK=#Rb#];Ui5R ?!eZU8Bjj5~b"/A'R YV ~o"|龚޽s{a@.N[UJ>R mQf7|VM<@QnLX`]uitb`ӎ ) 08 .ؐšv)$UQ1]J;:օ翎N)QmXk{Xbf~3eRGO]sYd OP~ mѧ"q*\n>tgх\9 UB /Vz'.yKeSbBb^v  .TN$}\,MIX6"QQ룧T'! lE6)KS 1MD+e;ǔ9`.l8KgMۮI(ⱨ\Ua@:U{Hlйap+}Yq\&NRsQ],h6ɳeSt$o~c2Nuh[kwC4:LC)L!{eƾʌ˦5)EzrFN-ֻŤ8u hJ#> stream xuTn0 9_.pI;tElkN[7@X-94QRY'e㣷&Huxjna^p}6[*Ma,YѧrL/NW rf2n24A dZ(TZa:4amF#xlCCi#ЀRB0+9rg=ʶa4.rHYkR֔$[13Q" {:`WAȾZ6M()6LH,EEfLHs]!ysjC.%*0Riy-^:mKЩ's%Ѹ'E=/|4iQ?h{̪H}be VG5&B|yN~*K"I'Ojhlψ}i JҵMƁFhPlW04Ё!WKy1rSQKԎ?!횤)Ys?>mMD Tf7JCb}ߵyomϛ)o̠bP@=xG6ԧ5PǛe$rvYފVm;tDڃOݗQ*MXiS^?O*7e1op7_e#endstream endobj 340 0 obj 759 endobj 344 0 obj <> stream xWrFY_勵h.dYr9);.IL `YHS_7EEo_|xJi~YtFl:A-1ŮdzxUԻσ|6CYZ]YT8g2fm_Wdnf/N=n9UVY-TrSǪJtm-u-~cns&~U}w쿏F?+$ O ׷wtwpBV T"1CƔg.%SiPAޓa>L9I$z+۬bsWtW"wx'|i !X*ghB7%a5?Α?ȕ"I" ?xH3`]OBC?U 3j&@,M_A3Lk횹 9`׊^:c CƺoXPul+b֡Y  -jߠ j<] tT_:x' w}5ڜ:EǩK6ds2' @!F@V|u4 fMɀE-S%6Ӆ%zg? gmϕ^QO#H5~,P7{A聩"`p{xs#鰯c eGDQj#F|3I92y#;M=],Zbo_ J]!ܽƳ=Cp(E :.[h yO0 o{rj M"vhIu~`4ex1 m7q~R]`H2q̹o.rj%=\uN.n8qw0>p`Ui^I^G!jJ[[QjAx G+g)O Gendstream endobj 345 0 obj 1444 endobj 349 0 obj <> stream xW]OH_q՗]!,DT&$e.Bb0P{k{vxz]"6%)ku&Yx Us*M/Ş r҉-S o1flc}/1:hRVHDB+*No}In [4[m~Fыj-.Vk~#1A $" _lT2؎&BL^d<-۶x8-b$tLi6:GT9Gl5!H<<ƺNߝ(ܲ٦ךTwp] G%JXUNbUIC,*l쐖 ةrqBA30G\yڵs-teOLUH5oQqmKV$ *тL;1L*cJhF0Z&) w;{O-&/ t%ÃO[ֆΏ<"~A`nW"x=מR7Bfz$earR6ŋnƽ2< u;**F u)-H#j}:3NCܚΖ,.|%L uǠ=$2jFCVI&qhGnZO׾.:2صldS:846pgIjF?1endstream endobj 350 0 obj 1655 endobj 354 0 obj <> stream xWn8sbЗ&1ڴ"^Pom"=CY-mWl✙9sC:W4k,z1/#7C ^cdp fK?|5x9:ꜴςY>ns'|p>MhZI0% c,ݚfC|^hi_&A5QZۋ+ l敛BHE '֕ 7N(̴Im$o!܋rrZEw3eHM&Zje_벲.H>fA>GuQl\C HP4hg*"iJŸT 'p') C,m-Z Lc+mGG;T\w9А@ cK %`oa>?Ʌ=#q_‹Dv1>$o'ɑ(|$> ?%uŔ Kϕ9]+s)@Ir%Act<㡬zBH#]*tɫ>]^(|SM-#ȸ Z'QwgHצ#]舗]ҘHpaPxhkœMȄ[ Di :W:,w&TV.{??O)QܜH)` lŖeZ s:@T\ŷi /P犞 7N@bˉh(+C%хR9 C[4_h9{hônݳ~ܷn/w&-x-ix{y/^}'T۪۵!(-npjD3ybu9ow> ÂhX L6njkzP{@Ϭ˭c8ZCJfnE`B:!ֹ 9ǤjN_VYޏPǨy,Q A]5h-4NlÃwfe~P"p8rF6uU#ø7|?We 䑦EB F^Id0H W Ty[ DI#Dqꔂ x/mfŭdʫ-8”t=%/ل8d밑 MpO[#~Ǥlm Wdx)NIc0g:Pa&#-y $BZ k檍,P:H&u<9!Xձn }bgfF:|@ED\{F!D%ùH> stream xmUMs6YbǗٍ3d*K )_oAʥJ3H,޾}}p~zOp _]~O6߱@^]__/~R3}XSeezt'35b\7ߧ=mmo?}; oVkZ-g%)nŸ)6d(Idw԰ zl>>:&ʭ7Q\ 3jMªyj.ɴKs#,k2#BUJ(T&3'!DkZ1;]BI}wZu2%oK!fgX|{bЮ- RWѬ7`hALƤT3Yɨܠ$$|Y?:[`.eP`qe9=puF˗٭ P`c+A+5c^T1#J#X 9ɉXcGi9n!Ԟbr修VKa׶(E = I=p^a#f#RT߻, d?~4_ovB恄CN+X#2ۈWGe,F4O.КXRQ1W34Ւ`FRRdARD>oW^ Gą[%HqD$g 2fNcU5.~]\ > stream xWr8_ѥKlhxI*g$3%9@$$h"] @E74OiŸ;-oohu_iIo_\Ώgt6Os^7S욏d<;ūruLOOٜJ{R>&S KG~[Ʉ2S/ If9ֳYx@W^7&!~o~G/XU^~OxZދew8GGD{?+R$sd(EL?6\,2$ၴR8OxN+c#|vqHάFXvw+ .0ЧSpgVW}8Ͽ=T.G >XWoɬKE;>%[mEv=$l5{{ `=x<nśNї2zsIÓ{|I(ǂ@*~$ŷי'! ["P/YKI(]GTi4\ U92؍ jԶ*S&$GL]Nv,DQes L7TmqthY^ȑG!3wqd;y]*ԍ#(V赤t)HuP֤r wJkI%a~bG_nEQa|N{q k)"KejG[)l!4L' /{|PEʋVA-QdF\~P5J WUƅڏqc"$'%bެPsD@B3)i'|Z!4r1R͝ $AҦ(i?6ڊk|s%:j#AiORaɐ6lWێrc#BlR*G5>GP2ka @Yø:,g\P'cpuc\X(yQz%A_n)%[}^)#Jwԁ,ɴPD"p0 #妶mtDWyl<;NxєD&3Nq1@&۝g(nպV9`<<sylf0abnc}0f` =n#0 C7; !<=xTC^-}˥N4fX[fJvL>D_L{Zυx]k6T+VG>AULR-PU2E:q2x:?\Vxzz’{\:vz׶q|L߼V{pMfGendstream endobj 365 0 obj 1563 endobj 369 0 obj <> stream xuWMs6ٿbƮF:qDm'Mmert"jЊeI$bzdFSfҽ#+9]L9-v'u~~>9}f Z%w(.LElqɩLqT6Ҫ~ӜG 㟟 eʰ͕\E&eYLiGOG“ VbTґtY.Ɛ<1Q`TZ]MW5sȼ^q>ik-aqvM!X)Wˎ ց>-x‚/=Gm.9</7;YM@ pPg,V y~Լ'58KnݶkC(cvhWG2qV%kvk 2@nB[b(ݾ{=[*8-./˛kXkOov+8ֱ&j A ur&)au5G-M]3w'zGX0TY"ަȻtɃ/xW$XѴ[AJV~{%.ݒW9FbAHZYȾdlE~tl]6?ĸdn %@\,}-(lHc^PES8i_*K)cl?I(ZsfRS+)jWϓKd cC"N[!}S\]`4ű V$?8߻ gۆW??yP&@sҡ.  ~Xq65Z<ߧxt];=Ēu*J"E %lęдu~wm}T~]@C[C\ aF=KpMĠd媘d _PQ; Nl: ̦&Œv2amSkBGf'H+BNE!~ty ſt9IGQTbYȩJOiTK01:brbCau&*Ib:MÝW܎; GdHggNW(6 Pݭ\# -t4Z:OijGݏ[oCg?shļб*7C>籮. ?f e~ L ./E#L/hI1[ib50&oh $Hdxܫ963ShdKtuHpVfI3edu0v81 Wz1&˘W7r>x6:.0Ggh7}Ʊendstream endobj 370 0 obj 1767 endobj 374 0 obj <> stream x+T03T0A(UU`Qɹ N!\AF zƆf !i\@Uz@!sss=# T.d&:d&9 ΞA % A!Y\B|@4Ձ>t QA"endstream endobj 375 0 obj 130 endobj 379 0 obj <> stream xW[s8sřOȅCwKyaĚ%W_QlWNÀ3ȶΧs%w4Mh̟7-h?iIoo_NO|4Lft~|qDO?+R$ dB녓^fT"ֆ.?|RQҒP˄xc͔^BIX(:S^!$t()Jh-e!磾"ruRu%,Y"(yk) x+l}u "Yl (_W\`Oξսԯp1D~C,7d, .7d~xB;>\ [mEv=8y|5ݏqd A/M8TѨyoۻZ8EttΒ8c'MI&K鷞THo3hOBR< IsJLzR"KRr@cYrFe*%(8:IzP8*L2Y1v5:ݱF`A&0_PӾem{YV"GBfrE=qd;y]*+J`CZ}Ǻ¾U5n!n$2֪aKvB8%/O}(L -`OkW' (j9?l.rMz>AzLh#m>"MeEbߖ@Wg Ѡ8^(:+B+B h6uBRԈU(]SaGV?hThd7x)xJ)#Ո$ k4ٮ4*bƏ \H@Xf2dtXmPH ĩ'\]b5(uPbHpu:UVϭWy8Bis^F @UQ"7[dc랳~=e$:GD"ʻ;<m!i;z7@e)@Us ()a<1{D 4GPz>*D5u#H `nD[M{Bn5@Y+WV[B*b-PU2E:q2ttINzK>> stream xuW]s۶ճN_EΝ<8oⶓ\JA@)ʯgAQ&DK".v9'Nf4gV==,k?.^/Nr2iQ5O̰k>ĭʣ''Njͯhܡ*3&:05SQLH],Ns2g7#ޕǿ>ʔa+OLb.\;*'j4Q,15#2\!ybXU8;rW<k"y|m~8&ZVyBTK^/×+ F}^\*R9_z]^7 !Rq5E ryZyv HQ:m%=D w<_PQ{<t9*m 3 b6ˤZr=p6-g8rGUeN9 $.+!Tް  sx [Xd9A'AV[1yy;N:k mqlMPʻm zQѮdtWJVV^Ukd5$J gQ"'{=[*8-.뫻r@7>]|~wC?L+aP'gBV']h q5BOxB^q|?CeO)Am :oK'XKqvp,U gvc4۠/ ȶ" IM]8c6ɛ7O2Ab^ʗ5YdfX-NJQ4%в\>ţ&ԭS)PMI,b(%eSG'4󏃼lZ4UP*\ k*&Ԑ$.W$#dTH'*D8Ipgi0G5@ΧXxՏe6E0)Ok kM[:o4=5FZiL2v* iNoV.7L>yAQmmK;du#(=)S-xhBĀd~ɉ. D-י$a7 w~^r;L'3!9ih{s_- Bur4Ӥj<RFw?:lO;\n2.Z#)-~b4) ygc5Uy}c]]4j (;8Af+|iiYRM1d_%&Y oc";ƍv@D&ǽc3?F@W!hQZT gu#ezSH~zl ! 1 -6>-i [Ó ՜PU-.~hOzm+iBbqAdl8iR?ٮ;*Q/u|A 5@4.0MgaYG[endstream endobj 385 0 obj 1769 endobj 389 0 obj <> stream x+T03T0A(UU`Qɹ N!\A zƆf !i\@Uz@!sss=# T.fHDBPD_S5D!  endstream endobj 390 0 obj 97 endobj 394 0 obj <> stream xW]s8sŝOhBaxH f[5ؒ+iﹲIKfq$ݣ}p8C4qM#~9^?p<:j_Kpj<<χG/קx|4Ҩ&Ψi?6t < %KL5$(<E# D~فUkA|ـD{۟v hB hT* %Ki2"$gˈj)5TRS:?C:j a-;-9`TIJNMxEaMapnR\$s+o0 K'-YI+T4,cg0 ]΍ahI .@W7*b̜Px1.Tz[(m4N-W\:%QYl[fǿ\ǖs_߾oV( ۀۻE{c-zM ;ӨBz W4En[(9"^FgOЎBxݽF$t ۺGr*4/E//O#ʠ]MH΂"6.gScR؈D%#]-J+G5ĖxN;&$ (9hl[%0vËVѥL*0'B@^[7~-8$+cEp~0V; `k6S+ +T\@P\dUIO|@jmQ -#7ۂnP7!V1ChV,R`BD:,OP0G06$ʊYW4 ]{|@Cy1󣓩Vd =:֥dML8mYQ?uO~0]B:X,XT_AEʽ 7fID܏8V]c<wŵkh;ojtn ~G7XPHu`@<ـe)IÆa  xr>%yvunψǭendstream endobj 395 0 obj 1574 endobj 399 0 obj <> stream xuSn0Y_ƁVǽAzik \jeH\$_!eR,\PWŮ"?/g^Ѻ6m1e,UklVr8h}Qk zgBGAd[=NZU19pfT6O)H8YBj@wG<9@ه2A6  Sgz`2'c ǭ2(k)A~ܳ ½Q;tI3f/IVa1yD4<+NVXZgPvAatP0;.'URFfNr-jѲ6Щmw7WPI8^ݱug]# DW^hxeB> stream x}UMsH_ѕTB@ؾA*vZ]Ln\FRL4#όL_# He_~=BO!{gu Sֿ Vd1]=Oɧ3l}r* 09$M;õ)eaKEX|wc#r)_Nas&GNPhꢰ Ew@T~ j]>yGՇ;1 c!F ښ?2 1fʻq{Xr-#@] [L#3J:5@GriRdSG~%0mfd1A[Ք>T #_a$fw5}vþ;C|AOO{QSW9 OIdDOhusWbBmjs6U7}t#}_wkey蚁)GThD`,*D"Pend~}]WCUKikf[K__*MtIZGKE &D_ul#;^/hT/l%MWMQ 1Yه59}C ޅO oF$џgR՞I#M=u?uCGlC 9M(hXY{!bYBNH ѻ#"H R8beCɤRčU:VWEx|OӴhendstream endobj 405 0 obj 982 endobj 409 0 obj <> stream x}Vr6ճb'j3}-{:^,tH@wlR#. "鮟I>~?AƚGr~§`D3XnƕFRGǕ ,GY<ɳ)V^a\gRfy4+!&_^3.zdux| 00`P7Ϛւ`2B#70 ˭0)ebQ `ڂڀrkhepnVR"oߛ9&2s._QcC;Ɩ aRIg/W)b_3gmNKYZ.ȭp QRK&WIMY-^A ! f}u*3.FY #3 fן )Pq3I$4Q$c{Xs\:vٝK Jayp{,_"Ype"Bi 5J>I=\ Zh+>(۹]aonUZ-Vv(uG_W wD*]' =U dp"N& \ X$J۔rd3n`N?SP DºLJbC> stream x=0}C`@j8My\1Ʒu6Mfg|wYj>Bc% XD6|ۊFIpnOMSOP!.9 *TV7ԨU4YW֢!i:c{?25Cl"c<" j٩ wz*gn> XDendstream endobj 415 0 obj 194 endobj 419 0 obj <> stream x}Vr8vRlڝ&Lzd1nF88>/G- Os/Z{sg.Y f#@wK^xqmqp-gጾN^H@I"u!aSpbºYY v0JLkq^Z0 HT(pna^_jbD+8 hSbeBS+]xv_+/wgƴW‘M+m1ooAݘJ]ޢyk]j C8@)ژKmDpqZn$T Q`ka#Ϥ7_9A$<9F[,㘗&6xd?ޢB0Ca8(j<@fdG_mJ;Q`E>,fU5B"kWX5*6RRRᴥb:68bN5Е >*Mq?4np{g{oـ> stream xTn03_1KiQ.izyK&>8`K`4 ]3nu70> stream xV[oJ_1)A.6@ RMOuu d{wʿ?߬mXHr 훙}AҀ5ɻG ݻq};=}0 /!Z"Įa>z%;vw0mIƑ DKu5$ʰOS{*H?>=}ޞE쌨~"E*S;WQI9ٕDfX%UXY2U0raKz3*%˶X KHc.:Ee :Yp}RU_Ғ^8nو FƖйJ7y4`E25tOsYXOv %Y&#c+sMdZÞ}9׻Pb6H/8TpwKOB>>ӤAlk9wX 5ׇ` "hfߵWp!Bp$H_(."$Fli.F=\$e2!"_g!|{Y|!:0hv̘7F2㣈\coywo~ AsP.Jm}bGa0Kr.<\4ϵNu/h_dU. < N3Әkc 5Z(3Tr"$3BihDH'ic8oF>IHer R0D@m^x%OV`lau oZ dNdֹQKa5bV垑1d8<Ƨ(2Ci5G1_uj:ȣ5ԾMDPKK]( z{^wj;,a@h] ?s6}EaܛLG0~z$'՝5ܷ5=4}:AjKxT. y8[ceZ4C[ĸg$D'|!9Op`0|(݌Qa\ kWOV#@h!`G٧ygj 5BE J*0U5v3l\?? }~mf*.jz'kr:g/r2#š4A_}IJ=M^ɤ0.g|a?L&Kd,5 P`/<ÃI9^m1E1!sƓ{5垹X5}˝66'w`g NܬGF8a[s7/]?g}K\>^Ze9LM}VX<'3˿؏` endstream endobj 430 0 obj 1284 endobj 434 0 obj <> stream x5 0s)4Z("`c/ZT1F(~Eo>cF[LKC++9٤U,ggϛ$tendstream endobj 435 0 obj 139 endobj 439 0 obj <> stream xV[o:_1YA\J[i(UO$,%qj;egI@{ ͌_\}k/IWYt_(8"-D"+/)ֻa|Σ0ޛ)VCjqHpPD~r{t'1xG(n*k#X1# USfBΌa!jY7^XҢXlu7 WP*p,:Eee3o_l%4,";dʀ\XȈ F(Y\$t x3lX2jx\M9/#OA˅Y3,VQc*} hOk[ 6Фئlf3`vU&XĸC%wTੋO4i4]%Y~[6tl$k\&Z%o a6> stream x5 0s)4Z("`c/ZT1F(~Eo>c6hՍNWV)rII@EY"Ϯ_7yzO ֬ T= wZ>7CUb3N>$uendstream endobj 445 0 obj 139 endobj 449 0 obj <> stream xVn6ͳb+(8n}p 6ZE( H#R$v.D5sf8g.z _{Mk].d08o^ YP*ٙ~WEBg/ 0[M ǡ,q2Y2yn4OKI7~{0|R'p-Cs`GԼ*x&M(fB+sK>JsnG? !,+r,Y5Ӵ]Ȍ%^L/YAΌRiY#+YB/>^ qm*S8 ^jKw3b_97B]sU/RV@f=ǓOɞĹй~S(Y=B=O%<2 I{.S)*a,Fi^6~?](,-v8d c+Qrc †s# d+9j>Ȃ1//Clp\,}xh> stream xV83h?\=#a鶕RZmu-{,TI XJ,Nmaa̛7c? i~=-nc~=Ju4_CZEY5>D+ zKZٍ_E/=HjU)LUS,%7߆׿|j秉//a"iٻLfLgfkP%;s>s 02oLU hxsH5r2hZ_1S &rp7@N;q+CiVZ,t)?RB|ռ9^b^# }bipQgJi\ҎiCN#vMm"jO(s>_z4at*πP13! +ܐ >6(gkùGW 4OާTpUى4xt=:I ~nϿ?&K8%4XBWՊ"SnUH"vH2G 2FX?r `ӔƷ<7apOP|qAjYl@W}H;;rt lUl9&ClBJE2Ym8%:g-i }ߓf`?( =w*d~q-?T C|ȕC%z:A3 \t;! TvF̻w5bZ 6N5uh%sEkt׷;3]7U}3+NO cuӬYoU iÜa|8{cy^vq!9`˞0"$gnV dYbۆP9#sL/U4Bx84s@ْr. Qyq .zR8dJ45l= T9[}>Vq<|Wi^$ZJ+ݻ&S0k_H=I ݻϏ;r;6\N59@r LJB,zB  ёG{9>cjQ=" e.eo2A/;@ E7]_]Pفoendstream endobj 455 0 obj 1324 endobj 459 0 obj <> stream xMAO0 O\X(kѲ#+TJRDm=i qdK~~"1!~jHKZcﯨkI*Ê8;q|ZY:H 8?c7p0,/+W$QԽ;~y,N'^*;817aX{^QbS w[ہ)AGVkT}΅wC$ YVtyF xLendstream endobj 460 0 obj 233 endobj 464 0 obj <> stream xVmoFg}9.".}9/J\RZŧb B-ygxy9| dz`t: L3:;;sO+S>ExTN}-,2I?mw;mw*b??8B~C^,Jw[B|%A242ЬY1^ZD9ɴG9Ao![&Sfyb؛<_KY$\`Lyێ'\qi)bͥ_G7%st!y3 ,s$*)\x3-LBe1ѥ:Pz-1&5|Ԝ0\h0~w[f<pA\ IU׆ήˑa0-ތ,#%ƵT;eEÄKBoy&3J߰ת>a̰DbgK'l<1a5F"Ֆ%a\q`(_g̱,^,a8Ogh)w\3P1rl+Q.$.l<ۏPzbp{9+QkN'{hIG{R?WA{廟5'pxaNX[5NKYwysl mU6Dբ;{S̹RWmCsG\Xt1N~ kSb_ځkdr Wx.5%#x%̱ I< c >}K{endstream endobj 465 0 obj 1239 endobj 469 0 obj <> stream x+T03T0A(UU`Qɹ N!\A&f zƆf !i\@Uz@!sss=# T.kB wYendstream endobj 470 0 obj 79 endobj 474 0 obj <> stream xUmo03⾕"꛴4kZIJ5y BqLCʺ%9_Vp3۫ {$9\̇ /U]ٙ㫼mN!{aY)B7jIE{Aa݃jَv$=OCwvZo ( Gk؀32=Uhk*s2i+$-RANdkgKpt=ieC6JE +=#$%(Mh~C&W-} h̓. ZrH6j%ypJ8vm+O&zlJ@8k!q9;cVN8 VȂ(6\*愍NJZ^Nj[ft  C,J:nzşCGϏ+c3-K{wO`u~3#gMv 2k3o[MݍힱȭP܀߇-=6$7Jcvo+j-L Cødޭۻ#qih18ۢ` vb;4lzЪA: .88gCIJVW=|,Yd$5kq@#hGЭendstream endobj 480 0 obj 462 endobj 484 0 obj <> stream xVr6Y_Fv4 Iq\8ԩL"! 3$Am}߂*rPwo.pO8=n>Ix'4_ ZV[ ]^^7T Z4c$~>h4Q$L7\bD ԿS4'?8?;#:}"ERB֭USgQٍTX%rkZܟhd,3a=}$ʬJ碦B[5Fk7~s([FpehՔs%jKzbtΈ R*˷/Lsw;D]υ,m]+(j0\m;"TF<]vw tKyw$ R}nr%J^;a}5Gpm@ݕj]g JӑD2H-2@9C0g6u)p,@譚yNa'VQxr8w1, Z2sDd.zP)QiԘQpE.% dȣRQli)a z"$*G|""MV0y*FzQhTP}CpqDQ}$+Gi1 i7: {;ۓ<Ǔ'_ 윿Wr7e77Ng%BVLztPe ="ڸz1A2D&SU]u_a7KSYYyÞ 㔻֚+(4YzH.^x3L%n StNZ..u|ke7ӗiIMAP{oh5Pf  a| 5mj\wЖݢ, Sk%6I'T* qeeTD@:CL;&\N3n++$,AWnYQB1s&W@FzvGS'v74kKV.zZ#+&*`A }V؞ͣ|v:ߓzv2Mnp>ɳ].vXzH-4I* KA 1gG $-5zU6_#]WxXM\nI~o<܁6Α+Z _hX2Zol%e#-(V1 /*e^Zx^nS@mjS^\iq]5ɽ[N.-TN̋Qit=endstream endobj 485 0 obj 1329 endobj 489 0 obj <> stream xUNMo0 9· XVUվ:#,5j&BFȦ/Ubg?F`!Ԥ#$ڤ'raKddk2^$~+[?/i2_, 'ȇim2-h;gE2j(ϳ7$6;%33zf=:Jb+ǣ,uN蔋@㹧Uq_Ba/l׽R2/M%*x2=PvfUE^H_aoendstream endobj 490 0 obj 258 endobj 494 0 obj <> stream xVQs8s~>ii)e '(hƶRInrp:-~Z}Jw SJyջQǺ[^i*(}h)F+ ]^^WTZ4K_ _?*Hf$n$Ās7?}i fh0g_ jhL9:uﵩȭ$岔)Q1x3Z ie- ?}$⡵.J;5VK?;eIlW3])Kν8ҋF\wF\׈O׺R9^|f;ۯiֿuNo\E)Yp€]O|`\c_fֈ SzzN)锄EʲOMDM+S㖶8w:`wZBZi;H1G:s"]cjYīf GBo̓t ;qBģ9xԾò陬 ODϙrmϙ6NnDD QRkm@F<*(Ć= }a K2v,}GQKȧw>B/4 /ޔ@av7^YI+y~P/**2> stream xMNMo0 _[KRB2v,j,G.45jBDȦ)T;߳_<@!Qwl` wFe*r(k!Al4%yAT<#cB̼664uЌxgiΑGsBMA=x6Vآ^\yg]6Ο~xxCo|;#JcG4$8]So4b=R 6igU7',nUendstream endobj 500 0 obj 241 endobj 504 0 obj <> stream xVQS89bfR)v\J;0tn[I4c[ƒV% ׫`[ە(Ӣ{؍u?7(Q|h1F:??&Vg4ڋ FɈZeD3Nlt&fL7\b@  {yj>ib~ov rBtD54,VzFNg]dWRKcjVk!pz̄t?IYCEMJj*n➒(:4ٵ.:d302nӕ2hԙ%h(wץ.TLswf;DYυ,mໞ $j0\m"TF<]{v_tDwM$ R]7%}/[ܪ8.?M@ݕj]g JӑD3H-2@9C0'6u)p,Z$>:@h5vǰ,hE:&2&"sуL9L'7 `(r)XkQ" J'Oҗ K0vX.I7ϢrY͎?&oO8 ρ@aR1f;^YI#y~P/ *y.hu~t?Q!Jg;ӍQ6'_SlWr{e37Ng%BVLztPe =!ڸz1Q2D&SU]-u_a7KSYYyÖ 㔻Ԛ+(4YvV2U+]#5g9J3]AofEm\<Rʮ /C,ij*m ֏fYl"W/PSѪ6uInn)~-J8պYbzQ{ =]f[ϕ MTx scµA8춲Br}R̪4 /s<'rj[+ a$\/'w4vB`wÛ0:k )L)x!kZ9%=|x\ޣjL$@ ! am> stream xMˎ0 E($ Cakhe|v_Z0j̉a3L5cc΢0LY5e+2NxT`_cM9Jgk^sltXD±O?7uL$RG_ybQ< k!G îĢ`SzȺt؋&=endstream endobj 510 0 obj 199 endobj 514 0 obj <> stream xUs8}aHl%mfLsݗ E,F7F"o%H~.)\~|<|kN+3˅G*'][]*?ߵG=^l%Iat1q`pz6@0 VMF̝a!pܢm*5[挞/ja9xbP5:0BP`kcf)ˬPܐ3L&^P[!WNVa7u& ^ zg]z -ILZ~%Wl3X"k1=n9E047, E4ͱCE~+- _SǣJSNYvG4?g%tJ )B[jI/*vT",ޔeW0JNtt 8F[sf̂otnZNJ `,O]jBBK!€|!7U]۔V nC =g#H#WJ'BOy3ltjn^ rb[J`i:P%҇9B-Wp8lJnnRQ Hdnd;D '#u,!m5iT\BȲar]E&T LaVԌ@=Mot翣ȉendstream endobj 515 0 obj 1001 endobj 519 0 obj <> stream xVms83b0釔kεp_.t``H2/o%[ĆHvϳf Yyv0cs^o}< ǰXu+!Y4t{{Tޭn`;|ߌGcHAr2=$QA/ 8ACkcOϺPy={ӄ}{>}#>@ S A -^u ` +Zӛv9VZRHu,4pJձcu5/4Ոr/xE4HQ#-9/ԆiȕJ@I/ngȄU)7gVt$sS}Oi)roIo)LV眢l{ l/|(<ʻS=Ċ6{ 6v'7oui &ME"_NtfhK-1meD~%K%weF!F]{lH)I$+ 21 VS+sӈuGTڀg0Gc1qșQ#R|: Kr]SZL2$m (H>sy+S!qM0нj9;>Odi`&QA" )WB`T}(Q3= jAY±Y=!M*9E4kee|)Ό7Hj:CBCYtd+L]ICTOoԌA-uMd;~-ѯN'dou|]~·S %dST48;9Iy5G*g}}O1 &JR z|U0>\GVxކh_0tJER: ̙! Z԰`*@`.KOdodS☚8 .O*A-g(}'bi[5_endstream endobj 520 0 obj 1026 endobj 524 0 obj <> stream xV]s8_q$e(iӇ6m3# tv-@3Xr~ϕe#dwj2-KG{i<Иg=MXs3z还]FM'/'SZ fMG1tuu5^Q֯gŗ4A#[ *dR{j`ٳw@K E,L{XNqdNoyƓ^sy@UtMY*Hς']fdbJcHj,qWm&p~z+b2l>XVDBLaUU.DiIm2w s7?r >3 w-veb>Udn;QuJ)ʼ!2UQhiͻa]޴Q g$(? Az>W9}`M4y) {HΏc6`~YY/k]& A "͛"Mt&mU2 bw_Y;Hx5oc6.&+8sB,8" ™I6j䰀h'v'}rS cF.H>HS?,<{]\'tt*MY0}:tVC{|CC:SLx4WII:~ⲝۛ\DKӋ|.}M"j}K:`) 2yY-&q83m,U cУjVXXl8H>%!j{u0] dss19w5ˊe(5]:o3mm]Ό|r?,)EZ!E9=-l}@QT5lH]*X6*2ce|GHd:[jA,Ɠȩ4.uӴ7C S%1>!AŒƈ^*ʒ@BFqdZʃBt% %nN]HA$EJ+[%1׫TW] gX`-\?2NUaÚUm}Lef]JefT+)&ܨv2EtȥA@qu#6 B`};|?½I6 ָ#}vd3;nn걖zj&0.r{ce~e^HhNk2)LŞR:_*H /oZXro A ֜Ou='"$JW> stream xuPn0Y_1%Q Z-q #8U,Xu# l\f{4)$:M@:Kx,&[]iEQy|Ǯbg9d[(]jA+ B_@Y"I."(j$,[Yrc{RO? K+QxN2|W%|ߢD9v$-NӨn%k0(,xUbB)_S;h'%sVۗV8"]5_Yww8s-OjA:Cas?k$={KѓzFnFX=UX$s?W-#`(u +,} cX:m_wsDi(k$CEy=r>“| xwendstream endobj 530 0 obj 432 endobj 534 0 obj <> stream xVQs83bw$e1i;ӇM;\=BJF4c[%'[Ydb[~iە)(⟿'ywO#7ޒ^&^ǣ1WbYk ]]] WY/igojrUJJnw~e&Z1r\5qԹbږQNVIloqΓ^\ _ iJ1Y? uHJd&U"#ʪ[ů}Kk 73Vh %ZW*0ǐ(R7^LTkt1$JqE.FZEϥ,镃- N /_ nZiѿ.9uI`lm,5}'}Jk>'P|Δ(iFM=+>vhĻ2UEg{ Tv 0>keR `f@mܢ3i몐i>mS e{f zƗ>xԼ!>t)R9c=(* blYQHf; $GbGKiQk֢alr芒VeBnr uJDPi$GE5i Ua.&y]z ra(vӎnhr9=]ƣ`}i㈯Ŀ7$u'tNU<X+{ܠ86 Y0AIkd@H" H`Jc&WJw;ce~DtӶt!AoID} 8ҔjÇU4%0) .ER"2nre{fZ#KӃIJQ.}* I,PeO:IGdK6}4]3sL[ܾM1v[yMr߸F!OG|{ / B{觇'RƣO M^o;q$N#P~R$SIϢǣ+  l Ff͜_pdGendstream endobj 535 0 obj 1300 endobj 539 0 obj <> stream xmPn0 _7(J/! t&25 ?2NXq|r+\Z'~ \$0C?dg BwD(JviCH @̲ ӱݭ!`_q Η p̰0e:"7%Ɍgsxs#y^Lhe*3t`~ ymؐ2řQ.q? 2Az ;%euJMHlMifqsVgj/> stream xTMs8 ٿM/u2Œ$vn7mBPT"~8eeN;K͈$>x1r㷛f8xDlp5~uR`M|y5YkMYtvv| Z5ϳI1ˡJkQrnFf7 ˚p$e=<>b8돠 p {WxkX%4gRXxPGэ=ןCtu+Wwړ"[MJY07X g^D›놴OnpOJSsa|p mk؟=jM[aZDLvhbbĆ}ÿ'_$S#dlW[5a8'8W/cﲑR$SP˙8[:0N:wvR.Eor6mIT(Pbbqe:1m1-Apc.-'SeM-WGX%\|M[S/8{$l:ŭA |.v^؞u]d**ɍ-kb&4BkZ)vA$9uA5ޙ:t%({PY+x=uhd@Hɢmp#x{o[ipe5YE]Gkjj*o޷s,M1};L, @Hv<*Aj?/ow\*1.2ۯߊ,2m-΋m*E:iャ]Q3'fKhFJR\ FYwQ ]hW|qOu)lےٴ`t|8Lrs|? endstream endobj 545 0 obj 876 endobj 549 0 obj <> stream xuPn08oY@d͙,YbiBMuW6\6nB={ 099:G=on#̼0!ܩ (S*zj $UŸ́([~Hm .pC-%Cmc)މZ(YT3asIȡO\SI",JKm-/[z@n5QYuyApQp2ڔsD+H)/#;Q> |kr!ͮ6TiUKVsC/1endstream endobj 550 0 obj 330 endobj 554 0 obj <> stream x}Rn0̙[HTAyKT)jCO!b l mU-+0}r0aj\ R7.Zjh>[BoF5j8 k^U`)6 HBxhYѰcc 10G?Fȫ&H3K+J*Y Vе$/\ьj$X*\,ԋaw5sHN)W=5!$HZΔQEBkNBJuvXϬ|35S3f5dN+ht+NUqC׻!7oEATAǴǛQ7~3endstream endobj 555 0 obj 364 endobj 559 0 obj <> stream xuRn@WhެM&JOa%n]*!̼Ǜɞ0p< J(N 5QrףQ{cGXUg|gjRA8É2#|3~gb0rgBR }BGUm후5)0h, -j/ %ٷsGV IvfZα7ȸ*R?\z/ /""M 8XHRB0]LwEDT}]@ J9=ٚ*-9o|ёO>Cpy:1m1-AeN5^5ߗVi?endstream endobj 560 0 obj 354 endobj 564 0 obj <> stream xVMs6YbǗ؎F%G2C7'd+(%$HÊ}߂I[iƂۯx8 i9|>Pڟߗ_Χϒy2e>ln$غOopT9-&7l:ҎQ.m* 9"Y=BRų߼TaQYmiWV9q//o{@y)e( ʔ╡ʻ;L0B MIZC@ir[I,ߐhqjJSdk*QPmGeUBDP3wZnԱ8"(eF >kLR!#Ecma?} Й0eRjݯ.V Aq(8o_Y_i ɽSR:&Lb|FT)wc 'M@*1V9ܘvn|ٴY5l2誅i>K獖Y d^ 3n ֋=䝑ʰvckwxNSêQKFɯ2ru;ЭCB'e~*oW?_>|dkv"tS6hw.Uw/a DVB2N}>X j$WXh@̬hBhHj6Jo2 ^\=)h050Z5j_a Pz=EgEX"5[Ax ɢߺ*G>Nť az`|LYI|=$w1&O'I|s1[$ 2y)T $BdB̘uV䒌$WE3"KaA&jKHvhH*tzRt}f-N8U m?@e:cxkb|#kCƃ:Wŋ (mi*C[q0PU3cp KUhm,{a elEX7+ EBwm8e#Y'dq=%iޡPݗm:TA}L3O)/B# F)Η:@`ƒf΃"gfj!g!U0q8{j/ۘF! xhNf3,\gb"dēat*Gnw:\*{L ս }|xV41N|¼7)2t oFY '7XX_CzkZ*endstream endobj 565 0 obj 1328 endobj 569 0 obj <> stream xUL@N"HabFsv4@w $;36)l/R-#eLz+Ȕ嚁|7< TgN+.5]kH93A79C1ϦϑwE/|lh!Ktlvy{3QR=endstream endobj 570 0 obj 183 endobj 574 0 obj <> stream xUMs6Ybo] NJ5C:nti*`0%(oA)%OKj vo/&|ֲL_( {ǥlw˜n" zFTbk\&{逺ߧ ~H>z']u LH- KNm~Z_\bKl//&MtO9y|Ҵq3 mMoUt%^KmEV9{dNXO&I{i`hhӪ؜/?z ] [9zcVjL_To93w+^[\u=U^}&qeJg>a,T9u/IJV*>ik O32fY OK6>w@%% 9!t3DYeEuFrq"%I_$,goo(Q 8_S 8|#y>ى<;8Lf\?ŌH&dYIQqY'B:OʣEw{ J#Y*ĂDo0x6@mvAWpZ#> stream xW[O8s/4 i:òvJ+UZ)ű:~?RҒV]K9\}xA?T8>u((G|4~\!En*_h4*T}0c,IᮅUgV=%MS4 KMOqp|zJi~C$5~Ս6|KV#BܣXKxMNƷP7e`]u^WM6:xgh-ljgZɥVgd2S-MŜR 9*!fJiO0 |gnυzdrcm] !JR"I`/9Dۦˑڜ0f,JZ)R V77q(579Si*Q ڵ`݌TI[ ?NQ(Bˋ YQ@5 ‹E"Jk[f.s%_ʤ͹.nbnYX熬ltٻ !T Uzrcr鱟T\q, '2_#? endstream endobj 580 0 obj 1041 endobj 584 0 obj <> stream x}Vr6Y_KTCRlY)=4U;_ [ eK&A}vA&_gQQ>~Y&o林f]>e5vxj-pk>g{,գ7oDcVb%Y|:*EVroMIa#i+* ˨ wGLU7{hii WX e|"Iv/Jm%!`mȮ 'Ӷ'4AYC/W^ʸTX&$XOr qMɒvlA`/rA;2kHh=zr2` =7AML\1Bmu 'aC d$Xe\i3@ /6s%PKfRUqg"n y6Rm-udFz~DN.I@ 3O]Q|# .c0+n$}\N!sA(jC^$8!@.?\,?q˵(z/%cN@<^H|.rGGVr%{b*"R^ُ98HpOWQӆ*LBq,_E4P-ζ n#4$.%c=4tVm?!Uaߦ5kPm8LhUNYzgŶsM(dLxGXEh|fT{ b Rwm_@+xYYo~7Ѡw5:mJ3RYA~|,iykkثL{(K<^z? 1E+Qv;_Қ9MFtt]E%̶?<*άP3O"ܱ:ñ?sܙb+8v)gB[8]0w`19,)_g z r*4I-ZolfvJOtI E?& \#~P%endstream endobj 585 0 obj 1191 endobj 589 0 obj <> stream xVn8bЇN ղ$ vb; M7-R5b;,Y$ D9ssf&0 B݇~%9L)| I8(!q4᧼[:'='vn")1,@m4k}mZS[LVqzߣ#NW-` (|91\ 0E0K )SL$ ̬ j0aO*$  Siܴ]@*~L =\eAUlJLLcH`jr)F2(V)b$YDlwEZP,7Emjp&T3B2GxgǺLK2jHj{? SJVCVu|gw/rIyŔضA;ȘceV$UZfDuF+AqtOjq}"5+9/H}z:U~yQY^bop':ʊ GCm0.;/Χ].fR𴑪\O[ 70qGav@#.# @ww^]{$Jp4v25knY1x- | cO-'_xĽ/qMV@|qG8SX%])܌ܴ;rX` VHLʉhM O gXd^N < Q)~VLL}j 2b,4%(BkǿYK?Ө#q-y@ǽ('p4Nf"{,ux[99gBr ?Cm:zrSܻCR҃qxRǣ0,M o> stream x}Wr8_ΪxdIʩ*pk/@$("!o@R Į% ~|ϛ?2< [eoϯNty"tR`0l+XFvhuH+(&(J&sBIr1vk5M?X+i([s9+v72ut(]=kdl;cs_ C$JĚ(K;0yhtF2H:Y֟bĆ'qXhSHEq\CB٭Ri Gg̗o,+7ܵCrew,0d[j? W626BPOn>8?V28-NP£{K7F6(XN43Sv˜3 o~G. VB[=#˲_ xj=n(V[Iَ~;k]H?g(=`CEoEsU`/1UGIPf% `B YF‹<1WJJNgj%PxRWNԭ*UJ 2Ab80 ̕@J孖ո0Mik|[ԓ+r1_, Siko+`2ߒ2.t^ ӧBzR䑉юyb X 8EoB A( I[ݶ5=H÷y:,i k+ u_RXoJ *(v˶jQqHQNd%-,Dć~!ϨIYwn^s`T&kpw7o5ǴJ5.Dˤcy A% p#!IX%&Ԑ֢2u"y0_"ԫVmx*SS/JtT~U8FVaT|jG@0No2" (!9Dh@BX{<0%ڃZn*4<ڏ @uq.]Pego ŷĆ0@]p;_ lD`t Ao)g}QIS 2ҶpĶ |7}xMM錕)ttz'maqМXbU(?`tE31m]sR(G #P"a +2-2jz=طބeo/ "ס$7pqk:\^eTJ9TXx+9);' _>wgXVtw :~W C$<*$ CGEX62`ݛMmUxT6T'nb-`X~v2\/_Ëw~|Qendstream endobj 595 0 obj 1803 endobj 599 0 obj <> stream xmRKs0_4d]'McwZo+H[1bV}|! t. ty]on2ƣ$P|ƈ8H)gdj˫+p߭B`A+V|&EY:v4/{ceeg;`!6麷R+oB[x'.h 6;_nDМL Sed)j-`wct翥h(K ĕ|(q+q#KCl^4AOhF$~iru#0hAB >¶oX qzJ(X%ZKJ%R*Z?w㳤d#s߶8dJhkR'f5Bfz+= 3Ɲ۹M>IfcܮI. Y+endstream endobj 600 0 obj 460 endobj 604 0 obj <> stream xVr6Y_KlG-[isH$uIr{ PBB2X-@ʔ⤖f,>}; 3ͫ]^|4Ni6yKvM3, xUҮ)edYy|s`۾ M]$Ǡ}V*+FוBR:v`%jOBKwshk$T Z,[Зܸ Tغ6pM^ʵ(iU{5J%V- ذF᮫vT{st Wƫ~J#W`ka?{=5»J߱_aڲT={ jeO޾^da?(>i~:Kh 8hMˤ%l*kZ-lb0EA!=-m`4mW]_UHf?+jd7LYwL{h28iĞmEQ">7y>WtklwO~m<2&ZE aFL[mIkO@zE|>Vx,ƍETL& xIc*{iվ"a3mlDA}QE]˸ciF],e9$dM\>]GP7F@B:N/ ra Xe*,XR۪ShPN~hfz湭rX߳VRWǞW<.D9*&@#*ʅNfxtJv@B_4h'26v>N4ZƑeX㱙,l*f ڂ A;b ]bVr [% |3<҆n"|mVqPsE70@]6RX/)3H~L:ͱrK܍8& Y|:hD?dt}p fA6;5tcయZTJ㥮JTP)m뫝Fs@~gY(~MA0=Cv՘>Ӧ0 '3|GSSԋ XJt4?Zݫx%L%G]wCe7pKl8J:3jBW]Z'tt'XR,RC/ IVm6UV^4`-b{, bWW]oEt{1!ؿ;? cpX.\B \d=Cϻ3x7j~&uޙ:'雸]ܗ 凂1 v2\(G*B:Ph(> stream xeNN0 圯x7ZaQqe]BcS$'Yb–R,Oo{6ȝZVsUX/y TETUUi~F=[,}%7iJcBg<KDx#D|x;|J&+Z>(S `;iuMFI ?Cr؈}NlōʃWMUwO,7/^0endstream endobj 610 0 obj 234 endobj 614 0 obj <> stream x}V]S:9bmB= f@2^h//yB4c[ƒI{$ۉBؒvϞ/!=b2zЮo8ԏ0d1j5BH)NNN Q+uLɿGygy9 \ iz̢͌Wm*%'|t!/ F ]7*o&KX~i$ E)sQ* {J%8(ycc=W^Z-()MƉ-8\^ESպgԼ.-4\Z)&%?s4:SsAԎz>!%zjo[;uFR^!3]mA]mO-FSHUt`ir\B $M~cJƱWOP==M] ̼`lm[^=Άk-Vij 6ӉGdm4\dy(Z5=q]$V?7JO]ʹ \I2| bM VS. +yجwuhN[*A6\`Rf4t=Q[M{Ugݼ%moj h;G#iQƄa҄>88)ג$CnE0r\!R)7_x* 8)vgSi+P~ xV0.Q!b̡0נXܖm~y.Dn9qd5C#MƦ rKyBҳ j[lm uxӰ&sJxl$x'}1Vgx)*Fendstream endobj 615 0 obj 1132 endobj 619 0 obj <> stream xVYs83kf r|@y$ĩ}EMЖ-9-A&ɮ]m>+Da 7ϼ^!vk#g;zahCWSDvrࢻ1%gH0Iz.GԦX7V|k?Q/gWyw@Q~·!x@`*rJ&V\ S2`V0CD^J`͋R!l.1,\MY6H(N [$^SM 3[a/ iُL>A]Qmަ+P/dѲkƣh+{8Lwm>U6kV?:Suy Wg3dkbVMc%UPQ) % "r\R"R)7ohM> ng7D<3kͨ 6<+0CV1/BuGY+m ZPrr,W.%/-ھ:Yg@nLXOIV~!3Pxp#gjfKt{)40)R66>jԻ4eM|SEnNSQ.9B.4ciQ`b)0OVځgq qc47iJf .;N˚Ie$(Vi=*/G/Mi-HD9"k]Yy֫ƧҫNta#6:? kD`̩>[ `9}> stream xV]s8ͳŝ>NPq>:Ӈ4I3ɶi/~A 0 dwqѹ\]鑢0vk L_&:uH#CW8t BV$WלU@,k|6B;%QQÕ,R42JTD7HN-|)s^1t-l\Fwn*͛Εnd%K{W{ͪ5/+h\J{!)pYMG 0ڨwDԵݵwS)IҔHɁUt 3pNxצŴV8']Ä9mz7)-}Rݛ6:a TaRjdT A%Ϋd6X`R*$(?YY<n/4]OQ"kT'ޅL(T~^mIہpEa{ZLo/z-.۾g> stream xU]s8_q06 i3Ӈ4Lv7qxQKЌ-9=Mvmҽgbwoy?S׺G^ї?g)$dB٢H 5>a,J?bꯥO>FI:qB%5S1 a9Q·!`|Q6HkJVX%?RlFƞcvI_/~P15lt:-CBf:vBT71z#Ѿl) -Z{xEc;"_Fy5Q҅V9>~(,~0 ,0}A7-+V6}]\Yr)֜5tf6ɣuĕe$&J{޻۶B#ٶ輈04w {쥇ܪ9_)}ڻw82"C -5kPI$VٮfWDԺLF7?EU< n,?'qN3e,Ќ޸m3!z" MGm>R]Ct+KN$4}+:|I[OiwŁde W .6ЫmvC)Z$C"A96 ;sY|FN0Ϲms j. #@q+] :%(}9Tޥ,m8A׈Y[$7dvA6a" PzҺsfgc?9̧tPhK;BetMQw1uxݢcT+61 %> stream xV]s83N$e\lLҔfngƋhֶ$\.<qGzqӘ3-σgZH 4~u4-VKWWWQAmf M0"D5J&GKggoB?wXm_"AMIRJMNZ|TJK.6,dّ#,VYE*n_DDN]Bۺy''Lҷ%}'߻K<>ARp*{CR>^3ݫYthS91jg$,:\> }ߥL)3tؼ0^;ҡ6PrWM ٠-RU).$`DbцD$Q @gqL+8 `l̆^Di4rQ}*87THYv3lO$&~Z^ANE9х`&p maD+!-w*4C!#lZ/]d2U?J9faʍ| 5\8xᕖcrO';y%mUΉw{z̪"HIf # ) @`( HN>FTR %8B}Rڋ|8Ϡ󹰖rN".K"O*$IeFwg>#-Mrtt}*:4v>{5]ru2\I0Z1rkBT?f?7"<;<m9 A`SH,➴8Tf2MBLm/G,Ad?zYb___C$F~M?]Nl[$ݤ;DǽWiLc1t42>;5>jG)Q\.7i(,y~bmܫ֢2ѭ5ȟ7i8 7FXhg{׉bG=HP((uljp3sendstream endobj 635 0 obj 1268 endobj 639 0 obj <> stream x}Rn0Y_!-[sKZ_jeIYh;^o 5TMSQzq_Sk6DO$[O*^ &Vfx,IDSpw|37h0))+]` YzZD's4;<3U eЅgTpKF(skXQ8q{x2&tꯇp͙фİޅGH2* Ÿ́ԏt# D=[/έeO% ^dxJH휃 VMYR*Nv j{/HS‚キ.> stream xUs6γ};;9L\ӻݹ(MA’H8NaFaS{i5ڏVp]=ͮcXI4vGDVI| ZF 6E8Kľ0Yʥ`;-d\"\g|uIK-  -2(QH,y%t7\Cވp)k 2S |`vpBV"1w-aF*N(F\D3χ]Go~)%/lp;]ak /CL9x)JY}ӟ#I?owb ꙾L SBrң='ߑi9'WKՋnZ*sS?NK{<؍OŴt;(!API6hbEʣ=v/JAr斁zn4ib0V\XVŠ$c2ބOZ:Չ :雮 '#v*7Ť$5ji| vU\ !YZ0ZBxhI'L;YrJ i}tQJAmrmY? 7HUf2CSX zız +Cup>l0-\#/lH>N8 [2nq8<2k~[]Sa{"n6 h1LF%I;'L ~UI0$GvϏ^]LXq`m#.z۲"4v \#(fI`_/kn:uwROLPuO}h\m_Lendstream endobj 645 0 obj 939 endobj 649 0 obj <> stream xV]O8广b IJˇ|TtXJ}1ZJ`;=v)ܻDg oG geF_knYIWΣ~2L4u 9NOO jH,Ӿ{~-8 VTY]$7dv.gMXJseXͩh nO:u0oK]cPU A^Y $-V=s1!aゴZ @\;K-B*Q,#rWs=_ܽO@]sQw)vp<|D1$s=R-;O{R~V]u.jAz֐̀b;[װy1dL@M+WZ|m߫J+jY??EiC0zQ^dY?f̢Ecsx;m҆qa 37Vh׬ P YhyϒG~Bendstream endobj 650 0 obj 1107 endobj 654 0 obj <> stream x}Tr0_2C![!t:IJPz %#!}Mb,Iڷ}f^Z'E 6}|61(`1D ]\\D1-~AP !ļJ\C`yNd>hOrc+Ү RU_ܰRX&-1x-qEs8!"5S4B8h#ߕ띉u 1ko3s蟡MBLq 9~endstream endobj 655 0 obj 693 endobj 659 0 obj <> stream x}RMo0 ٿ:EX-(Vn(6]k%ǒߗr@ ZE>Q䣶"> ;my`2Oax.㍘R6'h:dFGMp)gl&3BM ]!$ n|ptK@x{ _'p6V\Wn{d٪bJh(̍Pnyg@`*`';5k)[xO4Ϗ˂w- J=dЪ4{!䪮O|UڶzN^};L MQndF S^NbA!g=v>/"tKxQ $V`zػm%-MånJ#)P7 Pc rTm{!U!|E]wB-m6EAhHT?Ko܍ݘEM(X JPICXl|:g[[4L!$_[@endstream endobj 660 0 obj 526 endobj 664 0 obj <> stream xR]o0s~y+E! V۪vZƋo]b_?')I{|}0d ۼޢ7$m` 7h<,%EёMBj<*lUG(b,R@r?X˒@2jx-..λA?$z>py 1C%RBPpCR)¬N޷-wĎkiQx;_s 5rdoxkVy~<k,z/+x*p_rVn !eI'Cu0IW!5K%Z{Xe6gr(]F[gM-Y_.O'zBDW1~hG҈eB*F-)'am:0WLZ: +W Hx(!KfCpou[;(' %o.C+*WK2X.9&P!I7ŸgX4Ob;0bWiv9~FRendstream endobj 665 0 obj 526 endobj 669 0 obj <> stream x}Rr0_ SҖ4ӄ|:%cIP>+3vjXonK+/Y 6 g6wjEs:3j'/$8s)-ztn }Q2  ԰;ZRp _A0sWJ vBCnej@v*S |/AFIU_wy}~|djxixђ]4dZT%o"c@ۺVTOW 8\^4VeR5ZF2Ј v=4ǁ״?(:Nv*w 樠[V[ܣp,DZ8 xsM56zB GMc)(댓Z7<(љ#*[i!:~ʂM2XGA ؠL!@}Xȯp/Gڭ.NA> stream xRn0Y_18Xr-EAҠ{W1]T~})*d@EHp5wXQN6+IkMV*~LS8$cؑ1t:e,lѱjCdkwR@rVBׂ@6m9:WW]0$!pj D-6\aYl;b畫Ƚʜ q9܆U92[uF+],?TH^Jp#,r\չsCtQPspo]W>Pؖ|X1$U:hQ$=["/*-[{~H?}<%$c|ӎ):QVʜTp{JRF6nPt`J tAV T,ɒՅoXo;. ^ ToW|%!u2܏sX_ > stream xVQS69bzr0sPWz-SOdGI4%cɥ3+۱* OݕaAHf Dny\{g,x֫<"84Ne _{ѧl/ʛ|T0eGzՆr-~6|#I529D?:85 A 7Ò6C3} \aV\T\ re ?&.8\v+X$</J9{}0|JE.S`\+c4 .`1uqXs])Sp#`.P%LPI$?j +ΕfWX1/)Mp YK>'}d29Q< FZJ\9٬\ᴚAnVsLd_/shn׶Ҷ0I2nzڔnl8 gb^uu"o|s]g| m =W_oAx@%((6+ Wg^"Bucѽ{eO{}ck,ھ"Y4]t߶KU#Uÿj#I1wHvIETKEU}Sq3{{F-endstream endobj 680 0 obj 1123 endobj 684 0 obj <> stream xMs0{W FؘJHtHC!!dVI+&=cz0zwXӸս{0!Q8 #VUD&k49'p8JxF┃B ‚V6 MI;٪ !^xZ/oWIZyg r1_`uo@btMsIwԔK(ܟ pZu`I`je[,J0 :Rhъt`t ]/Tm*RtCsG+t6b+ kmAC7lR 'T]2oZ(З:˩07՞Tos N!q¥8Vd5 .eQax̮xc ؊&- m!xJf凌>cKWvZ81?3 I_KN;.5<9 a#G6{U8cFB=,qc4ύ~V,a.̩E#~s)ԁ78oCm詏#|NYDT4PqPVXI¥ӵ.T&V <lyu:dx4j [׸D<wiEا{!%YvTx4wyז+-endstream endobj 685 0 obj 706 endobj 689 0 obj <> stream xUIs:̯ $c=Us`դ^qv%cIa_Z^@0{rVoz }dm{ QIk$h2iЏFQv%W?i<񄎲v5?hq-;Kv:X4zEӹ B` H) WaZfV`6\ߨ{c tJQr װ2)i4J~H,23m %UD5o/3Xt )+R /+POvV+cBSX} 0di#;xP Upc~<$MQO+[HL;] g7sOiJ2e(. L-Qz\"%0L$d8A;%,3;X[ܫ7r=O3/0~0&V>Ӿ)EU==OGW# z> stream xU]w63b8|Ӈ|=ɶmBxQl%GW춆3s蕒8}{^ ^-z>8y<"Akb8YU5hwAz{y)9 4Kv;h-FO! c bЌ4 gL5ieJ+_=S$ Ub[в7s RKkNr-=+XD?=Y& CߖtňZw9,w|`lc.r&|>7./w'V\ّO)tˬcpNRYu myceD 5QDk^"s9py.h$KRl"bus B͕[r; K/3ӫd6 W1ѝĿ.y =.f1-L4g@o_kn. w^M*%WRf?G_ItO-UܮU:LnQ:x[3]O~+ Lֿ?\a\prVXB6} h!dXpCЁ{Rd3;rwֿªl\0ז.6Ogh 5 @go?R @DlF9"s_JiaוwQ5lsa!^bh]|t-^M6EU-Gk`(YR ( Zn:qM<@B4L¬}vN/A1ھtd2!ѲvqQ݅ }qu9rϖE9`ekŋl=~+bE(mϬ;\('!iY:iDט7 RyWS3+?D}|A`|#Et ߸dCm%S4ʯ덁xGdŋoDr+,Ơ&v׳ MsۓZiEtsk3ٛV'鯁 endstream endobj 695 0 obj 1087 endobj 699 0 obj <> stream xSYS0γž0%x#@(WՖc t@_ߕL[٣cǷ߮^aB"MBe7̂s:œ$Q%"BQ4NI<ë&8hьIg̀S$ٴNF) ^ V8#A{ @ֺm7Wk O\ aGP}jpؕ>KOp|+4ٌDŽ':t/Ѓ$!,]lSf";TЭp'<^TtmiIpOV\Z>;_rfH eW5x4jU<_bendstream endobj 700 0 obj 651 endobj 704 0 obj <> stream xSR0:_qw$G1̓B(qw٨u{`[st ?RvV0G, Gaqe)1NUvwQ#pF0^ܯAp78VfR CN 9}xDIs'S^Ox\™/JXb?J %ºAepq. dN& |CA>WҢܻX*EB.DVFekDV-RT:spdWVإݿ헆шg\B qZ#dpMr ؀H)VmD RYIÊh4@SMHDiUR$[@ `NS( ;^YM{mh&g^m ;HARcc; 0[JAYLk-7O\4Ū& Qh}f}P[rCg㡦MJ@naK} }/b_ҍ endstream endobj 705 0 obj 713 endobj 709 0 obj <> stream xSKS0ٿbo$G17*qo:`KAw`4k:TCȴnVs½2ԹSn= kLU6{ȍu R&^MЫڵ IaPX"[W bN 4`nEAYig$u9)+4)i=Ԝ}Qx*r*]"nhd8^V w_%Vv0iJPJX*y#EAL~.5 => hϘ>6/W[O*o-jX|^1ҍ>SC>,w!\2BxB+\{oORY益@A2azosگ&j&6 o<[jo?NT?="Xj.3<yڛ'%<lrggm2IYAuBU ?kFendstream endobj 710 0 obj 663 endobj 714 0 obj <> stream xTV0e G1̓B(qw٨ l)X4^9 pheK̽#,6}R[ֶm4[G#08k#BxEl`0`!ګOY?E~NUMF;fTgD89KR^ eyAZ8? aFZ`&24o9ƕ+*ZHRA:+VTc820^zw TP/J+] }M3rЭRCwռCFgW]!4֙c+jRqێl ->w!E"*t ҷ 6?+M^8C~{@OAl{j?@ %ncsd-VL5Bbd5Dk$?AB ?Y&*qvt$J@cs^Z?S_K±hIt %ʹKr"a h44,\;wn6wCINqU@g o@Jܟ M;LA#S$_ǺQ h|}9-)ZB7/cz%ﳽX?"d0Jr+F^`sX-aZgVk׸S29&Ӊ.NȊ{6jԤ tK6O[@a6=G?@endstream endobj 715 0 obj 721 endobj 719 0 obj <> stream xSR0sbHc&ʭ}ˋj˱[ MGN 3m%drF,=)W kY%%-4ҜE$({ZC4NxךP|gl#;HY-y1֍ã1Q; k S)/ ^m yEZ$2G@8> stream xSR0sbHm&ʭ}ˋj˱[ D~}L:m%drF,=W Y͓$hpƔE L&,Ɣ)QvKA/7xJj8> stream xSV0:_1;m;QQq-=w`BrbKWwF0`! U amk>iӤ{8F0aq8 cH6"$M4X4B2c6O{r?J݌W|/]!zO88ѻ53'3^WOx\/JX4qr +a]rڰɓBȝL}k}mp%-jaTHi]4iSb}wYܾrxΜ\*YU*rRߎK]h$])H8-Ѐ2E&l@E벶?"KM^:l)6!,zg4p>6DQnUɨ4HmٞK6g/TZPN V&IH   "'y?yI=\k4@3闩+TUkUB@ dN&SBT;^~vqQ/x@+\lLSiźwA0F}jA֙T+-<+.N/ 4r|snaE v՟u1 1Qpf};W%rʕCg&mJ@nf  /oݍendstream endobj 730 0 obj 717 endobj 734 0 obj <> stream xSV0:_1;m;QQq-=w`¡}li43,v>w!m/`tGq0$n#BلLшEcڪ[!$n8f8)DxxX?hG;<|~- 8̜̈WOx\/JX4qr +a]rE:a'0;<@5ֻJZԒ-?5V+*$i,gDba9ՙ&vQ}!Ue5)Jc9HTƫTۥ󿝘ZHΧ\R)qZ#dpM ؀H)֕m%DrÛ6E%RnU:$HmM6g/TZS V&IH  !i"'?yI=^k4+A3-ڢE$UZUP.-/z}_}hܦg safز2N Ŷ )qrs_R YgNS> stream xSKS0ٿbo$G17BĽX-=ʉC+y$ko]E0U@T˚-`'Ox3G($ilFdFS q=+V H`5 '3^7ps %_$4spU%Jnua[$BȝL-֫FZԒ+ nVRU"I#ӸY=, r3'n=r5BP:srdRkAgLV4yEJ@h"aC6$Ke-OH3Rx畗[$_1MQ72E%RnSPrTQSKU7d*$ i&"".6R0g"Q#yT@_[x&qcs2$nKhr*X|^2fuqץ}zA][BdV303l=Ǜ [jbuuA< azosڭ:j6ֻso<[j?ND`LCkoXma08q W |gendstream endobj 740 0 obj 655 endobj 744 0 obj <> stream xSKS0ٿbo$G67*qo`KAw`i+y$ko]˜E0sgMBʺ-k`',&Qi,"J؜D3jһ I'w+F-jɺhtԷ`x| 0svW % רSX:5p]: .|Pz 謳kK,u9*VJ#d(s!K*G9bZ  vnE-"@j%U#2:|;ܬke9%sŧd:zFkl"7֙3K%x AԮ1 ۮH/!ܺZ;āuZ#dpK٘@?(9FR;=ovأ}||l!hSPy{9,#TʊJe"vhe8^Q-%%Vpi?*UJZ*ʻ 6I?ENh4gMsӗ'j^Z5 B f;|uf ZA{ܰ/%yjR̪]gzP 8ŗah)PC_h^DNjoŭ8 R~a`̔CkopVXmad &֫~Ccendstream endobj 745 0 obj 662 endobj 749 0 obj <> stream xTMs0ٿbOacRc/;ic:0 )}`\LZv}BCӰ:7^ȯm-.4>G!MYD 0 hx)6FAO Ek`?<p@lH'G3\W)oP0s*P˥=xәVXI -!x۸Pb.V$*E,AIEVKi]"{(Rb[;ZҒNf[j cCo4 h-Geb1}WL^ ԾRP\;:sLsUWD;nl5a{8Sn\.D\)!#U,׽$pWqs':om'>Qߣ'cZ.ne5m FiP"z1eluSm8TZjX$J&%:ȣLr( EJLSQ H&!HFmMeHTDC+#&(-uARiI ͵3F?BQR.Jdܡg CuSݮ8 > stream xSV0_1;;QQe9;rb0ʉ-f^=ÐD09xV, 1LI"FD蕐)1'U[d Q'~ϕUqͩdZr08F?<}~-@CH:̝iͥPr~c gJJ(i`ُsp՜J\ rZ%>+IT[mKWr-BSc ?%L&"Rdsmf9 J57{0uQdWW{nv`yJ#;p*R0$55$C$},)l'#jy;Wi> stream xSKS0ٿbo$Gm׍aJ-Ֆc 􀦿+%䑬>v#ÞK5[V" o$G EP+!3M&OZcHohJI~.ϊvI%FbփQ۪?>b~{D7nD'2%vSbrXgS^fj9u=1Y0X jV򬄚>#B" ds^L1$sA0`i@ǹMָ+ۢ[Jְ5dhE&Nҭ\"vm 3_ɥrMփ<+,+] u' $q{npH/3t#g%bwqf!ܒ6%vK& T93pwD-w@> stream xSV0e Gv;Qvjcl)~}GN &ZǖF3sBgOs &Iq8`pƐmDH^1i8hD[Ug5d GlGv3~)_c?^4Q#2t>>`J5 8Lx^:? qgJi%4F};i*J%º A3}r'Shzg[ \IZrEj%U%RZd<4M(-':3p#n=0*/\#,#Ei3')JxʰstҰwW)$kW R"%"N 4`LI>;eºH3rxgK-_'yF4Ly9yo#RT jC"ԖDmsL !`maiR? RK)rҗ3稑S9I Fc8؜L_[)ZDRU|Us҂o-Q@8}@NsQX{ˢ˴c􌚹p safآ2N Ŷ )qre4#PO4Z@˳VX:Hܲ62UΓ`> (z*6A4"jA|0Yme`Ih~#2> stream xUr6ճbYn;Mʛ^21"_xI9vfZre,vh 0 cՏ˦?^//pͧ9lvcV e4{Si_r> W jSٷYlu{2kS[Nm& ,~Ɛ,YGw8uj`{X !IadM`1# SbBkb`4`. %h@q#" XgT*q`nɝ#,|*vʥk=Is߉@Up¸^Lk|*E%.KK1 P*Zjk[+ a-bX3ȶ=j47BbY7cFGNLRP`{C E^6C--{̕}c9OntlG`8L [sY$>rf\X%,/dXp^K?r^ǦR"cC Wy{=EũɩQPd,p22^#AH""v6bIz?C Sf6nDT2U'x *:33 ;Oj!> stream xTn@<5vdꐸC-MOuUma).]_a1H5a93l0fVp5(jxr>ν`v: JuČLazʇ)V34vU"`nb=U;G,YQjtrL108H˵t,ÅZIK2zyRc˒s.m+q=Qg#RY]^QcKLYi p[jŞ9TRйVքlY-=%zEYi֠.Za*NG E6#B*qi5&Q:ijZ%z +ӏk`GQJ$ewBR~EG*{rQMåὖ:{FߧZse(vI4MFTM),l1 MUy9ufk9b Ԋ-op)=8R 6BX șQXfdpVo/^oRg#ustFF*%Dk]?/p-&J3b^j_N Ωx:vk= k%endstream endobj 775 0 obj 665 endobj 779 0 obj <> stream xWKs6YbOjĝJ>MDI@֯.R 4Si}|~iÔ7-GO'ݻ'-f9zyy Y|`51J͢ nF,rS",Du-0sG +,zȭg1yS+Pr^3;ٓ> stream x5K@D])j凐f>RYB30pJAeQSGQYN&QHYXj+Mҵ4cX%nU2VAS9=x?[s/#oˡe%}30fh53:b|=r8ޞ,@endstream endobj 785 0 obj 156 endobj 789 0 obj <> stream xVmo6gV'$?YܦaueH~GJrDI0L2B>w|Y0 #ڳ'yknIl aF1̳~e!*qh<34qC)O|1HeV$_PkzlL k;@a[#N00 P`fr*UJbV`?^25TiJ87\e@fɍ0T pB,?Ӎ/KX )Q/R Ӳ.@<E!Sp1eQH>p/vIWvcZo9yXlIQux^3xmQZo"qӞ}eFMMIQ4+aq_<[i",-əX9udX>d Ʉw | p40,AN=hЏWq`AQxC]ǩb^wXm]w8,'I&K睌&fIF?iE0z|aC-ոɚ$2_2T,ͥm2v0Z[؜;n ŠG!gq݌u;RHSH@B,mEbץ NdgiU}ۛ4UMq:魨 e,/wv5+~6v'ij90عZߓ`]L778tfqȤr`m#yp=)9x^2nm չ{ޡdw) % Ő1v\!kͮ3g?CWwKm#0[l1sV0ncjakNĸ"!P`INX(NuVwAZNz=?endstream endobj 790 0 obj 964 endobj 794 0 obj <> stream x+T03T0A(UU`Qɹ N!\AF zƆf !i\@Uz@!sss=# T.kB Zendstream endobj 795 0 obj 79 endobj 799 0 obj <> stream xUmo03⾕(%Ać kQFT Nةwvɱ}wop=h7Q?~Ybv붼ׂYPMj.^u:yja]Ve`K`$mݼ"J!^A9?+ZA=#vQ7kP9|s0 6Є-Ń r~+[SOV,"GD J,ObWx RVLApߪ>&R@(rM%hµRp1?9^Mȥ}}D.`1=D7DRERN+ı@rnL k|F4r#˂HtT%#\de`SQ/b1aX`PBRHNlݡES0 g֘k!M팅|!Oc1j !@Ɯb>?zpl4nX3!!uTcTLH:Diɀ)%%CXkNPct\JO&I{Lw:*[RxS,U3 M,44 ZM`1DDKISN/CRLgG@1Ql?ɶM_y^K ݣߛ$'^fU k&rS&4f6(xj>?5cf=gӧ`'̀QlR6/$ w9C63cZI4})d%v?gb)jI|ʾrpb"<"EPIO B-w.P $t 0eJߩr츛Th} .pGռl|endstream endobj 800 0 obj 819 endobj 804 0 obj <> stream xV[{6_1O$si~}ɋPזI_# .|Ⱥ͜9F#og \gq?:.F/vMkL]^^F+,er菮x'-xXz>D)Ip '|zm 'ggDoD@cb2d{07B٥6pR+ZуHEdLZD*ؒx4ep\GzIn t&c<|Qu?EfNDz +:{>%n+ SӔP0 {CdЀStnqnEɰ*g\T>v{߯gX 7sQ<f:y+v; ;*4Ay_nW7) ǹ<:}=:<8ǕOCBK r잝 0")G3?^F۱gWF>E6*5lDll7Jcn R]^2kgHipA r/э}7@ҁ~HVC-&e{7?Cxendstream endobj 805 0 obj 1231 endobj 809 0 obj <> stream xUMo8ٿbnucIA!-hb/PP#D:$6RlI$gg8ϰǰpOy ?wjy_)lIU:r9OV4UOZ+|īUw*5O Sp}A ϯM>qlgX)Y ])^;%='̽g3ç X Oo4&WGiҙ̢L#dD0;"8,1G#`UQ"T y#JrAZԴ M nJZp'iaҶ?Z&33)e{F;H U"ۘΤ~=;a{7ÞȮ]6DF1mge⶞3%*)b5x&g0OWFm2$ 2AEXgxt0d0z2D0btCI$J+Y ڳyq-^[T;Xe qǩ 'q8-+@1Fs[H6@6lEK%H*B<%N9 C}wv21n85R}"׏Db<וJf@*0*եXC;B/w^+In"0/L&s{p z^H?qJ$ w6L=ٷ1xD.W#1,G[ّee$3:\$ΒvcU)ci\?HΉ3& )[jD45-uк,D.{S _]|-Al=0>bR"{+NAMn*U%jV\nN \ endstream endobj 810 0 obj 884 endobj 814 0 obj <> stream xUKs6Yb'*DO{p3Oc=T=@Ĕ$< !*!A`&qt_ތv$Y }'),,&ё#!,^l69]5#V?yfc..YRȲ쌅  Lڞt'e=gNKCZOu-ܽ 1A'匷xcPҷ#vdmk|MwW"r\O4a??KaۧOJLh嬐C`JJ(*mFA2/%PE>(ωm/S "{ ߐ 5EEq=Lַtcŗ7)RTd@Ŵ iC65jOv @2Oˋ4:ljbF~V ߗs6^{t JU}x1ps zF|t1 DIנn N=fCd>1}> stream xVmo6gV'5H.b7>dCbZ,q1`>0I" I9MQ,w幣_j?g/H#ky7|$k\% vHHjHKznhuRװml׫tşs=(n4d}2gMUQ)~{ox:'/.aha Pa{gv5h2J4fJ u[i5(U0p,hQKvR3*[T*yWF}7z0y=Z:D[M$MjZ|/G/t&lᾥ=3ɥpQ[w 6:燈[G}3@Yc c l0YI^90GymaEȖp1R&bM^wF`*aK'A՘MD<ɔ2jOY1ct$9{QØ$ ˯'OQ '/)! 8!7qzf~@GFQ|b੒S9We.6~L[죎(}J" ?FۇU4 'J@p*(zG ^^09voIMŪ8 po\g&{b~)8^ip(&`)RQB:6MgHmI$!^pT&f{Js>OآsT[ h-UF 1& =OX$D!&da_M[MPd||YIlCG48Pu1qe.  ޅے]`2sFxjl*q 5ZQ(6CМu4X|I>³>endstream endobj 820 0 obj 933 endobj 824 0 obj <> stream xUKs6YboS-R~H8L&$$ lw)`w}|xY-vox>'4eO؜~3 C) WiX[]nl  £ox_NH,hQ#V9209J+XGhr7Zze4NXZD=Z#QhS+I~Ӵ fV>R-V^ḺO }h{؜3)xpngȟܽڣ9('e䅏*rŠL5p&被hV+=jV:j)v;71p~21r IPV8uꉍ~Kl.`/ 7VcɭrpO5$v $#j(!ưG 7ֻKpp,Zͩ 1sMŗ'H΁hm%߯m6B؁]5^HXTdᬊF48*m,-\<17njZQGGڕ=B'Qo K[t.l4Y.Nʂ2*~y6;n trV5I{ _Pk%AQ2XB> stream xVMs6ٿb'N8(YvNxi>jӋ. I v_߷ )BJLiψ-hf47( kO^73zNlBaka$}tv)8ޤo ,JIJ4וѼ_iHh{hE}%^$:E5tM9/ VJ5URhrV$͏*SȒrr^jOOʯƣ+)m~0[+GFp_ ,ɯ%h/ g;o6p0w_>ß;/t!l˒>4Ud3K$e){N7Q.޶k(m)Tۮfg BlR!s?/e8}h7V{i~e#DZ5[QbpZPѐ ]p,`W2^Dԯ8jKR&t' ^΅b(rI>^v? y_kKȯMã2L{qNKn7N։6OiF)ן\څ3#XX*Hp%|ёQ u'ą] b^qd 'A=Ar7U5r9aAx!V(asо<@hm] 74xhVe1 Jj^II%GǙ7N /GuQp> /( !mddJ.K%0s!Et }MT8VKiX9>^*FIplJ$H8θtd a쇉ݍx`ZI ]r)"T_##tr|<>*py&^'jsAWI#KƵ3vC0Mѻt!j('C %A]v."pF޵wExʊQ+'YkuNPC]ܫf/O%2A6iBak:K[/K ;]#6M$Ы;L+Ri},>yVƩp2:M(&Ӄ,;y{Uz¥$mX=\ym> stream x5 0s)GZ("`c/ZT1F(~Eo>cZ[LKC++9i*PQȳ3x_8S5kt-(;-k!*J'@ $xendstream endobj 835 0 obj 139 endobj 839 0 obj <> stream xVn6ͳbNP$;v);t/(_h HBRɺ_CJhRI$̌_(>r2zįuttlvJYHfGDSNOOQsjA,Z̦3:U*8 VߕƋeR[6jnukW! #wEtG%0yS\lC%gȹ +JNqriM _<4Tiqch2CZfiKjMv^Z%s[raVR"Ǔ<~ɜ5x/aM ]Qk4LF(cRIT9/+绸^,zJb1xB x̺}QJ&S%th߹9ʊ/CӃ|k3M9_K%gb [ך L*_pRH mYDoq*@av6ѭ*d:NW9` .5PppYU*La0K?M8۷)ѨL'كdD^ph~7FLwŸS?<Q~>D(Sẃ 2j *:ٶj`/93 |q2;gtO,AUQ;J0βWXGw2O@m_QPu=$r82]'G xV9ZV `{O[>郼plQ'Êg?6%Nծ V[{e!Vx&Z+؋b&[K?%i@N!61G8oE> ^jAY(GڔjX1z2!`,1l0 wv87_j'~2ö ^?|YVb ~=,nZ~2N:} YL*!-l50c8 3PbLHMO2||za~i1 @Gb̦灞cI鏑pendstream endobj 840 0 obj 1193 endobj 844 0 obj <> stream xVMs6YbOjhLN]{ii,=hɤԌIv|Iӄ=-/w--|x4hS/^]\\D%a;|LqD}_:,7xLdqt.h"A5SI<]RE'^u*%yCVJViNʤ<n(L4,G>? qbl`;K/Y =_UYHo,j@ΏT ,17`C*, &uM-n6jRkiP T B$BTRstƤ!Ypv4BW܄`ORQp#lZJ*T2xC:M H! E2&lKhcR 47w¾v:-5栒vrfVAh rLtQsBU8`X9x unƐ6CJnrYȗ{z5iOl–v+Ũ iם~mv{{w"bFӲ=$ u!Z*(;դm8s>ָڳ5@PtzyEraZo?"U. 'XWuBwD5J=/TW-£s7Z.FSb^ǞfPcI5B'G| f~LTͧEhF7.٘gWy$0'ۜ?+E/=endstream endobj 845 0 obj 1257 endobj 849 0 obj <> stream xVr6b'pR;IoL<} DB:$ {$ERIogD؃ݳgx$N)7+) cOVۻwszӳtLqmb8~xSqh̯'$%D,ڑʋ{\c}ׯkHnȑ.5jX)6$[aT.yUJZdF; Rp?GV!:xr^7L"794 zXVHa9FW| dc]h/F7A2xVKNP 4)B%JF'7Np7++0DDwmp\VKP(s>#]H*2/ Jn)56`k ʬ6s(VUǡ}=p}@8Ǜ A&++l)]5ı|hϬZi/u  U|t25 cҜMuʲ97ḩyW!H)]Bid;Aי5E(ך^uE(Ȓѝ֥88.e4|@u6w/֬6X&lh;ۦkc<՟ :Jvx)Y7t{"G;>n %V@7}'=Pa.WJ6XTˋ @nvNeaEQN3jN_H?|endstream endobj 850 0 obj 1329 endobj 854 0 obj <> stream x=M 0+f+!m">Кc/#VlK5I,0"fwꊴDy:Ș..Op%Y$IHU`83{cKKd(s~"X-#fM2-,Yj׺ԧ;v5}~TG:/8Pendstream endobj 855 0 obj 184 endobj 859 0 obj <> stream xVr8Y_ѧQ1dI-IMtHX X(_?!Rdg .ׯ@, =(b)f|Fhcc,{W>5ͪT|ﲷo+$%µb޿ ^i{J}y_X .[~E( \CPe+*pQ#rVHŨ毜⬒t|*p+MBRQXbM 3VZeRfD%]4m-ljϗMO&t]+xtې|0v?BzHkMKj_8OOkiK+?7tӭpMX_6 u8b%lC~qS°Z{!6p%PkG.*YRe:e)[/ c )-a`MkDvZLdQNw8NJ ,$i/W%"Ƣ6xWb^7_7kgz]1XDbXk4F|WMhTIhUV|X]=MV]nta?il,/B'SS+Rb2!|Lʔ)qbN>":bjqš͒tXIH1EkZ . R_Ŕ٣(V-R{gQpcmY ;..ϱ("(ao%CB;8 [CxV|.ی7.cYƽd,fA< 5<v K1[{-fⵦ %\zaT{PfQ0>-2"kMf\2^Ƕd v%> stream xKO0{ίq,7ci+SR] 3 8dKE/<.ýUXl&|BGbxW"v5_![jףWt8Fƙ@Z9^Sq0*;o78n jؔF ݸ Dr;ܒYSw럵e7AL3X鼢 =ʦt-rZP:e02GsM]^tzaqE o T3+N|f>` [;T7j4mIfr{hOS> stream xVMs6YbOphQe;l'8&n"OөzHH hI} R"$H$}؏xaА?Z O_ZtprrAW8$c.D] SKŠ5鯃2Gc~촺5 $O_˗DG)T9iRU"QJɩLZ)r_?h8DTR_IpCVm>t-*ze4"Hk/kѦP)^5&_iv 9w (ؑNș_CsJMpR{M䪲4g;ޡ`ҌiBݣ`*WB%`tD:t  5o$F+5M4 NPie*_ Ա[Ij}E^IlƏxT+2v0Us 8Cgun^qx.|.ҕgo#ύ_uTxEb`@ڂ)VZli.Zn.&zg,ɍ(Y/a2 0X 'upfNUahsvͽ*iv үLcR#%g$H &R.T^p̎U])e?SUO<*5Ų0}v7`Mg]Ȁ1lhQZT۱պT6~FAÎ;0FEIW9<2"_ر*,o[04J%+?EoQ QEU\V:XQ ,(mr?qÕuੂY;(%WHR %Z,LO"J6NpAw+ʧJA(,Vf*Փp]. K`hv}A_Sz abq q\5,cQqCBP5¦N> stream xVR89_O;q8!Ჵ0 .%/$ڲ @~O+vٛCaYRnqB5^(s++*?;yi<sxfU8[3햁6baਪFv+Gyz5ͤ{7̫EE픱1э6$E*dD׿ Oƃd8OW9`uk s[+Y#[UjA[`t#'r{;SgѴMtKPL'ރdģNҗ ƈV7{(~Pi"blUpPj6"&ȶT#;Ʉސ m-gWToPίtM+verWȴ<<: @\mv.s3c>ވ#wse'|>M J[m<6hϠ ha2+A> stream xV]S69bzfLBC| ܶzm)$ =X ֙mIu4b_s޺د˴wp>$g^-0`i<G9^}_{yt6L0Wv^pj3kXїP1 bd4?ۊs*%ՊU\"gQrfJjzfIw''dkZEҥle 0cH=YrW-jS)JIbn<~™GdΪ\gx.X VP{{NAHJsˋ-3 &_ҘɁIb2\SO|ZJgQh2:#o޷ݹ]Zt@r5م)\TA8}gxU-$1 \UTas 7}Y.UH"Uc@/t'h uȡWޚl裹3T"ТY\ouΓDivxE%7Kt{ %q4$`]i^;lW)u fȮ@cք_!T0`k"M4ׁW{BiҦ w*rB5 t,+@̓|Oahs\Uh"\ DOi;@@sR2-AK I^,TYw:7~azPw>}cQlШJ&J[ !H9/Ъ*HɷUz0,+\& zaZ杖BZbr1z'~Yl&MAlrB3`d2 K,cF5XjfZ2` ;՚G-+udnS'$&?ӫKT)@΀5a_:͈û=, ع>TZ UjRv0xt`x$W6̿Logn0`Lg1hYu@j^8e6 IHښ;!̧Y$g/ѻtW{Od%Ŀ2Gp*9 %x-v| >9|VErմQ*t.7.TE?H~[ }UUzH˦:vEYXDKD,} e1)~HCC~çkX vOҟ=%76 endstream endobj 880 0 obj 1232 endobj 884 0 obj <> stream xUr6Y_Dh( -ۙܦ6I++7]0"_IH$؞iw>[,``Mf՚ ~Y &hv1` jZE. O٠_epK%R܆6^*f ͐moCYۅ8e4H1dK֚DܡLF48? P-&$Jgp+h K40b i ş1tL`,am %LjgA%r-DR1V+2AqM[a.n0؝% |M`Q8Ҷ|J9P #00s|<Ò4=b 9]"JM,>ј#spڱҳBSEݣ6`fseŤМr&GxKn -9kd"DA !KB:1}NQEW*tB}e\v[MLBIx؛֩0ur=wv*"&4:P+N dÏ.K##Kx۳Z؊ )>[cO BBvɅ|XM|SئSu_ʶP,rYgP i{l!;΁FsC9CCl:/ݤӪnd`rB<+W+݅pQE&';HsYY}|u[]vצZXA ʛU$-JWaJmeznف_&da~4pZ{3B+n&^wٛQx6û>o[? ]@endstream endobj 885 0 obj 923 endobj 889 0 obj <> stream xV]W89b Cge)e?zoyQl%bKFb'vsbGҝ;3pL#ϴi֚GZY'f1Ʃ=Ά9)χd¯2RZMT\]~͢W/%Ouכֿl:?t)T-鎦@=BW,M#煥8Ѥ7th4 H8WJ)Қ^ZSJKap-+nE㰰̒ZWՂDNFB;׈v[/t&lے.+R3K(L_1 b|>, i  9$},nL+28oYCB/d6.Э]|{e7{#}ep@9'u@R<$?Ö~7qc`BM^[)쀂'mYXԈUӒfqcv r8HXAzAR4 LMLbC ԡ0!aW  cI> p}1f_hLgZdxis;u9\,EF`v"~&ݛfۼ}AkV#ӓ$'{$m?&[# c"hOU!;""Ả f0[eѢй┣VH1#qdLUOR> &aa X,$L+O`lau F$W2b @д|\zT9UZDLUEddm>AkzdSY2X jfTvzzRpFiev8d,C)7ãnG⤖s7V4ï0b(SƋN~W*6 FimT`U%Cdĝ܎XRvW9[r>u0VnzTSf͓=ׂK:ػL~ſLXTLsnP%5F02"am _Bl<|*+(׉ߴaPsa͔]l:T+kč\ARreA3Z:‚[1wT&s+Vfx${+ApJBBqal -kUosyTZJåQV=LyrJ zaKU> stream xUNn0㜧i m(ݍI4 Lm&yJO?91MseѐH.DkNMƐQ$c" .N iJ&\5iU?~,FRt:s<Dm`g*z _ S珷5E$ }%)vVf Nj!_ݫ.ӝ3ҋXsF SUY3zS [O2?mi`endstream endobj 895 0 obj 246 endobj 899 0 obj <> stream xVv6Z_1vuh=Zvkn6Ӎ79А կ)9t;|q4q>|$5qNKfɌae1Ythz|XUt1deBRӔO(2cJ̨&,:%=>9?,$A%=RL,M)Qaa+mrV2:ǻ99MD&b'c$R 6:0_KKRBGzEnn3Z\x06n="Ws'T"Lb㜕O ,ܸٲ(4]:`auP*GT 'F$y j3YeزbWINv0m*iJW&50oۦ?5*}ӟ _4:}Z{VX}'ng([K3vV17~#8GDYu8cV%,MJ Ө㫎 ٱpY])ts'D`ƽ,wp9Z]5 ˊa\;kwQa*jMP{&WGؔ&ᴐGwM<С|1m v%K%mطc H8A]9b6v?뻬V>F]T(((`ahǴkՠ-ޑrkgѧ'; ʭ}ycE_F]#I[ *u=f,soendstream endobj 900 0 obj 1228 endobj 904 0 obj <> stream xuQMo0 _n-_7& $4NYHmi~ܖn iq;~c0CLb'vBb*<$,-'S,(u"I|> rU!ybŸEӨ19$wI\RFohx1x ~ ;b% fPqk'=\(+&Yp*R+}B-5VV/JW2ˋ"pXi\56^j]n2]}(Jc]&~vǣrX;aQ"_0V7n-~mMϬooendstream endobj 905 0 obj 319 endobj 909 0 obj <> stream xUMs0ٿbxௐNId~ݛ/2,1-HDId'm |/\g\سp9D8cX" ؋h>{*5j̛ñ2!c" c69B+AG'o\,C1vh6IK1L q N>_+ȀA H 3i-F❐dL\o)*F2@*Y3A䆎C6SVѾdR"|%gBi)(2J#tF54 X|2(MẢ}\; (G&bhE4R*KA4nmRivuY|PúZԕɻĭ'.ys`ɹ(!l=\H BEqi h[BmX^aZKY~.z*KlWu)qm!NJdGI3Tʗ!efgYM7|0ogtN9pOP!1Q$HDޫ+2<ʦK;+'e xd;ؠ~D[3xm )k!XQ8ջp2p͉eCx*%*չRqIVw H'[EhSsփ"ijZɴIx2L5͢z֫"lӯO[cjtVECDzfLK=~UJND4LWo0j'&fʼn(-}n7#b^_\^^i֤rxF|;)J1>̇2g4nFc"/o|B)Ӱ,AŢfUup)oE \eA ̟P; G 6endstream endobj 910 0 obj 902 endobj 914 0 obj <> stream xUQS89b@3v4@K=(:Ֆ$ɎE B[b0xi4GјAcAkL!:99 *11xCIQ]ȳYTi9TW)/";;<<`xp@"I*r^5j\ E19M /"g 3"~. [){MAV$+:IbJ{ADfK8MZۈRVa0/q3rK/ʱQoέ3ZB"m]_lx焿Ej:K@wlW}:sO0\7UYji>Ktf477JX\$lkXŸ}Ǔ g yj;/:JlM\`eWi^ͻɊ} r6`< A:Nvd͞qGWwVmfC!.rY?:wdu}d5eiq-guhKWc&ѳW]zzfNXrpdF9i-ּ[QKB$K[2YRFG{sj_ A{-+>KJZfL-ohB!NA杣(14F鯁Psendstream endobj 915 0 obj 1027 endobj 919 0 obj <> stream xVr6&([vftNOS@IBCJU{)F[",\xX;/4~%xj4.)-fMGWf% dd*?O7h2i^Y9pްܼxޅ=O;Ja ?}y&ΈNv )W'QaH8K+? ӻ!@ܢ^ٰp4vIs^"`axyܭLEm%m(~=!zg]ir||Z]mTV+ d;kw/"ng.'I&5QʁOKhf!-t)RІjc-pJua_ էNbޕ=!>gD`=%:߃ߋt G& 5(UKg&U9U]!M˺[*;7ɮu, U,7qU*[@gcL3#E0;dO2 Mn߂0퓟+K?-E`M0)DW2yV=/Gtd ]x@IڥWr7P eDkrex^ГIA/]TQ-Ц(Zi_WX.iCc.GpT`j^muԶjXva;9Tjɑ,L^8tu$UU!G-tÑGW 'b+e\1 =%tx { ,9nm+rn;PەAH$ #°pIL3og蛥PwBJlr A far#2t0KےO W~ ϛ~f.ERж{HԘT2R-UkNѹh=/k-$+t"|>$x,,w.QH8[tr=:ˣ*#0fڦz#`Lp뀆C0*=g5rxR ~9 Vs!oc4BZ= C%TMV0x71)P+)wn=S7LOuDDwd{#/Ѓ 'YnG=;҇GgČblft-X*kB2l$PR8k r0zD9@ ]5䠐3Dh6'lt%"xwR>O* {T*gĈ~Q69Rv~9>ίfOfkݼ7Q5:N-`;c Ŧuendstream endobj 920 0 obj 1343 endobj 924 0 obj <> stream x5L 7l@2ě5AhBDۤM^3QfI>p 3Qm%ΑR1mrxT<6a& V54Nu}ٗf˺38R\(Uendstream endobj 925 0 obj 135 endobj 929 0 obj <> stream x}Vn6bb_!A"Eд[]]6e )J-`Y993GM4_GDZn|Iq1ǪCWWW5n?ϯŒ=USO'aB Y%dw×ezONc)_^ )`,;/fS5TS!J^MYCu0S {eM)tJ8ɔЮ4VzE1PZxI-(dc0<]+GeZGykU?5_op!Zjܟ‥ +%k"6>Ѻ_Vi8<:ԙ',),nt $E<(|?S>{j\cK F%*@=TVO˄·7[[<@͙MxXuB4 ItP}q*iLFV" \h:H2)$hiOc;󋄲,wXi'd$ah@J; fzϥ<5lb̦|ygf=Aǵ닫n|6r#LI>y™LHc+|hej5Kkf6m Ox) ,l 4CVͤC bOg%RجI-!]2G沭5mmV۱M)*=SNkd*W잵X]ZDôVBn\*o_ O{x@TG[AآH]Y7Htf~Ko6Lnb+ߴK0lYʓ?_ڟ틌??wendstream endobj 930 0 obj 1453 endobj 934 0 obj <> stream xuOO1=x'B*oj> stream xT]o035*Z4}>:M6ɞ=0د߱  .J7qB7yF7a]%4KRڔQ_ +WZ.=Ϻswm^sυqr(jN 9m{q}%'H#GT[S0Nes+$ULbWY:iJ'-r-b5=TSb܌0O]-ӅOqåv 29H:@d\* =GɈć(jHe=dUPHR:4jaALs|@2Cbna^uZdɜtE^웲<%.0i0ܸ@0RaGa5G ; #s n Pn 5s}pUbt/fr3n| ʀl{b V~{)gi *LppT ')F'<ݼR&JՅ_ l% Q5H֢Lg,ڶƙ Ʀ8L?hbɱtqT)u3m?bSυ Ws ;e`^yC?")r-endstream endobj 940 0 obj 653 endobj 944 0 obj <> stream xUMs6YbOjhG:m4VzzIH”h߷(ArRqHo~({^ Ow-lp,L d2`VM%sGw!/D''R$U_4$ph  iTR{c"kn-I)Kk mڀOOgNQfgLٌ8}[*``pK|*ߤk-0|׻_I:ږ`^7]mXl"*d9<\j(>͇TI2E38ٞ$iMo;|EuG"9q8pyD5 XGǶAK”;C-tXJKk$BzXyY2D!sU]-_bS\a a z5}B Ca(AXa/'?dr㷴V%+ fmܒ'Cp"۰D!H 1bU7k,V5Bhgq e%J10BG.CGR'Ϙӽ/D[+z+ɧVZ!!PEF/M1x @1z#E&BXuLYȖjrHp µԲF-:BdV 4,Gy$>sB6(r4E:&~Bqp|8"Sža ~G@P ۧU#RVd'贬`kDHQ(Ȃe:H FPJYiz2M$Q(4ݡendstream endobj 945 0 obj 1050 endobj 949 0 obj <> stream xUMs6YbOjhG:m4VzzHH”h߷(ArRqHo.&ۼz8x,]&8Kі,w-|_f#f֢T!)8oo>=yW[Ei)3?) m;_) ~oB&#oV2cv!2p.1`^!"2 WL6b9&Dj%U 1䦵xtk4!.=&~H>8B C~zf$J`i EF/`= j{$|͆wTK2e3;;=eyLv|&vNI6Du?3=i9Ukb+!vc4 ,N3 VZZ#2WZΛO!JYj\XAM"â(d- P .L_PNTKZULn'B0 4uDrCf^l sT(-aEWcS/t!:P9}'n,9aFV ]%L?l1Rhe@ t Z/3| QƲ-:5zib[ȼl~ޑr }+̷]+s]7ur@[O w{̕'W 2Oݕ)B_7M%4 B*Yo#3ݻ2E,&JRa,yøcq r.Bэ1[d(꡻I m*Ϗ&it69endstream endobj 950 0 obj 1035 endobj 954 0 obj <> stream xUMs6YbOxh39(u܉کR) hYoAQ&mv>)پ{įuOd$&dHUH 5&X*{ԘxbTNJ4wMŢfYHʅt7K_ÿ ޅS,OON>)K_N%'IPW2+ҍNM+SQHї7Jx|xJeΟU3JԎad=(hj]m)U7wLiџ9sQWt໔ŀY%e(7|D 0WD*>#_W;6l>\|)?ZL@q׬ >kʀ>-u SY"CbYl쬮j6ɣ.n k<2*aVjDEՍm9R :rUu:ikVas3|n "ݶjѹ&Dn|wcG~F,{&neA, (_SwÍ̓_hpa~+|۝>V| p%$}W5ҍfR!!Q2(DN[fO%d?d< fH9iz2L$As~=~endstream endobj 955 0 obj 1009 endobj 959 0 obj <> stream xTR0sbH&%NhIboHr.|}w+q\rvuvjp֋E{_ $qqv^G1gED7`_Vޢa]~R(\I'4CŠ&ia~B[!+Mn~F:6@ lj#FA@N8U9K R%4.qg;(o&2hs䛢#܌n`9RaR 3-ir5ͤ VJDg&/"7, M|\ (P=Q(L.J6a*{Mȋx9Y݄4~0 J0Ep@k[uR۸W&g)6cܖh^ZSζ:VY`֞N10:\&s } ID=uBR i7 A[0L:Q/e*Փ/ݡ F,=lkF*ȴzL3م{{FR(wΑօ Tq?PGc$TF#'\ ,ɞ,*}qD4?5e=X9ulXDұ\ydy^REDhy x~=!^V̩GޙpQ\gꁭ*ktLIZRq̌v>{XK>Y/lznE&_ Vq뮲I]/=J!4B0%9.XDpKh8h!VL"Lt1|m0endstream endobj 960 0 obj 792 endobj 964 0 obj <> stream xWr6Z_qWhQ_Iԙę&t HBZЊ=|ݤd$}{Eh4;-+-jE|/h7'bZDWxuqq/T]8/|?'ZeD}WL'\R&<Ӭ*x]=L^h["Ej??=m@)]Ng5:9'~/(K5:DQR:aT;c;嶴1RRI9OVYeww%#!t[:iJo@tm% xV ۙ~uN ]gzvpy.㣠`5Q*J]z GޫGYi0?5" x#܇:Ww؆4bz`t)e6έΟ{EzmuU;<-x9'':k O?73 z! yd"0=ѻN` mAXȝ`2a|eܬ|l"*[+WP_XЇi*+'@-(oH$B+K~ "ܷלL_3 b@>i?Td;L6N!0 LlrEû Bɾ^^"!E=aa/S(Q!(p|gn[cJI`h.L?CA^t!4([͌uBènj߰院mvT aLa5j0y 9>b)Mann=XF2c0g*<>iřyh{>5LI#MؚRQC90{-v2da{wnǴXbq6rG[\;> stream x}WMSH_ѕ&T Tel.TR۞ izr$ ",3^iq:|YkM»++fgpJGpO7cU^M;TzYcRy6*hTܺ*Ur7ʹrj;%7?wCT+ e\Szi"d!Ҫ91 ^_8owi|fMXĝ3ƫUWx2SV;]-:V d︓Nн:8ES31]+ڼN۬;W)S͘J*b>U?j Vul؝ C/K姇 R`(B߳OG옑 bBz\3‡,kV<ʳK;;ZK@lIS%QT"UpV[=x䙌EPs]L]Sx7,j4"W|WE2&8v}w}jة\$}ŪYb/a[V34.PT±ue)Y;ȥB/ϝjt r'άqa[yP+IQ+Z.㼱<22Տ" FڄX<!ki=؜m: ';.4ep鞎,‡`t0jμ,1Ha 8Msnxx,=_R=PPi(8z Wx-CT`6I|]Ҡ:=dyA(ރ"rS``ԖrĵӅ~Q8'dJ^(y#" 9}>DU@ ט'Xq<scIDDB(9KKJ F~X*^admVHM0v(Փ"E!FyXx>(WALoԿBr6d6UڬkV.A^|"n* ( dDz΅vȖ;s_)+L:M#tj$?2NW δ@K=f͌A/mOgǪ2@_0zhR7H!@b/]lP yچ(9 V/W^{O흨;s4kܳ C }n7^-Z|r;`}f]%]6> stream xeQn0䜯Xq) II*hiS%p"CR;؎*ؤ$Ү53c;~C^ÜzuD$ bBR8V F#p'+k)<^7l/\ͦk7Gѐ~z_4]*&r"xk)$G0KhLQi8s06/ةӐʓj/( Cdӥ-/sUPnHipƕ '!7VU,-%grgⰓ VuS S=jWke՚R GP X-l:B60_؝`;"[9;..endstream endobj 975 0 obj 332 endobj 979 0 obj <> stream xWn8sbNjܺ؇ݦ-z&h[TD*{vҭ@Eg93(IiĿjv₮IzNh]M+k+G+*l.u?oVx2'$xY`Ghv*Wg3s5w^\T/Kz[㹐Gkrv7Ye){I cM)oԃ4/{%%o f3PBtj7?[@PdV223ϴ2[oXڨ#g9ZE6n£<)}@71)"~H,m{KԐ0mĖo4Y$U譭HE0|0OOFx\hsq7sQX"a+Ĺ:~rΕ5JF| үmޡLϦgܣt:Nn%ɯJƉq&EKW<0bM[:OHкB bʽd(+B8h"dXs̛M2SJ[]"3,Ȁ-',$\+P| tkBzB(͎i${k" fu9:##bJ+kŢP.kv{Ƀ4n ƙ ׹ fBZm+#\ 5xP\v`J3G.3Eƌq 1R}|Cit$>*ú'3ESе.4N/{d9rYUbb/8]kOK 9*@{B4 Njv#SF4HbڡtRlvt@jV:, 4-GRV "۵a$&APm(֡g^,*dô,<ˑJgmHJ5J|B {<7ݗYS8 "O3֡ *,X8g3|2[U!A'1ehMl.2Ǜ׷waf*3m}YJuQ#>?A)K,ڃ[^ޢX>zNK]#q.]hɓm- n݃jPXCJ04NjW~|PPJX7$Equ:$٩<._a>R{}so"}pB#9WyKL'UL.'n0d,P3+3Mxp D%KQG>L=aiendstream endobj 980 0 obj 1510 endobj 984 0 obj <> stream xuV]o8Գ"wI+(r\p4W$m/^ DGl%Q&$꯿Yr'!^blhuv>;y4N#Z!Es $fA庼WzM\Ci-i>Dy/^ 0H0NpҶ[HSt5R) 7HWZ)apj/\]HHuUizhx4w_.O")Q8nC櫉ޚl8Kv28D~ن]TFYU{XN%\@&9尗jxRV{rQJ'L<ڱpRoXWlz?aX>)ߧp>*\2>?;Dr𭰞B$$I*s bЋtLk)UdM"Ij##3\jIvҏ!4m0p|] z&z~Ha(TjGjJkgfz!R\]< n$pI'DcE”nUstZ:hM{e%^sg a-֞ {@N""BYeQOɬ W,-Sp *i~v}/|M]&9e FOhGPrSz.*O x6Cd4P[tT)+\]01j 4ii!xC0 yu24}6bžh4"Qe ȗٓ^6.*(VV `/I\JiI<][&* 4t.Q ޳~+HDZIC)BH#7F%<huHg9뉋m>=B7(vC(,}]v;{fuF8!_Ag! †CDEmΔ&MKUZ`Ic {-h tEtu+~bNaQ)Nno9Ά]4886l"e$.-e 54~ *8OQp |g'_q{ JwB?a\->!L;X'35 Ω, dkA ?}WHendstream endobj 985 0 obj 1328 endobj 989 0 obj <> stream xV[oH96Րut̀#dks递^2~a^5čIK.(Qn~.,$FDm+ɫ 0dD#狦AiD{y ˅"y)jM&*Uq}՟!oG 4zWU2QCys@ψ a 3}S5{8kaiendstream endobj 990 0 obj 1353 endobj 994 0 obj <> stream xMPMk@x$v 6V-"F[uͮR])y\2w?jr%Ww>!H|}$9nLV{,W+>+ҁQ`dEk(S]Jl'U]zYj[1p!u/2m/LU&ho[KmisṮ{w FU}W,(!qR>T܉m<$ jZhendstream endobj 995 0 obj 262 endobj 999 0 obj <> stream xUv63_1O]8 rNfӳimaSYr,9,ޱ 횓ؒgܹP%gEBIe}XLcF6bk=X )qNVLa:U9)Q?~/WZR.L*/ Vtwa6WWD R$'yPk)f@f_)Nb*l.utj(GdlKx.Eɮo$}2^VfWBeX|5|03Z^\Tkz\H]$eVk>K 0vwD04UOuZq-$XL/k{!'[t&"}]t𦣚!mͳuȕ[/GvK-ơHݝSrLA uH890 P;ڊJiM%Q=X=؊7QZeX^ތ$Fc:J:wIBQNxYWu.S9^qwO=ol~ұ3݌MDãg;|En&߸W6}*DĚ8`%p FAkl#3PK/tc63ej SXPY *x\C (ʲՎuPt|O>"3]2 O&4 ̓%=zx4γB`t Bym!4E$!-qA/_Dcendstream endobj 1000 0 obj 931 endobj 1004 0 obj <> stream xUQS89bڄ2vf@L=(hƒK"Ϳ]َPZ`Kӷ(YfB§lt-irL![Zͦ5N]]]E䨵(GtJ-J=:+q>.[TJfyr(ݏɬwy|~Sw8xğ sF]s@z YfV W|}z%Cl- ,*3׬H򸬂[cN7=[-S%kJOKw..Ke BWH!uȧ'xdf/(t 6U+MG3~5!Ob^6xaPTC\<-gԟSpǼϱ@0 Z%--ǴSVkV7/?+~ <,'ӋY A]U" 7f ) Qj>Om*Gq@re3]'ED3m瘮h֍[_38py~VH~QMCP%vk”[ !TXp[L6f 'BS+b]9(xmzq #GjX+P8,f$5n䏕-mEE*l|]fN$;2C2<Ez- KY`JkRQ d$V5CC ~t]obSf|lcwҜL哰w\'/xb(V iVZ/3| +2b%իK" z;Avo")l#rZ>-ՋJl K}?3:H>endstream endobj 1005 0 obj 896 endobj 1009 0 obj <> stream xUKs0Ι_RbMfzHmi q,)ߕ K]Vޕ:+(Yw.y>k/EƳV >h7t:[!t7l/[?̇ ]9St/.NpS? #r f* 3@JUo@CX6XhPFɎq aau}/yZaynk6JTܶ0O0>;kfp[vfkfnHS㼽6: }"aGIZb(1pKI.bl^ I_ H\o4$ '++ n87g!6 E+ (\&K \o+)c(5QGo>eir%wx<-yQو@ ĩ֬ޅo1) WFesmYt@[vY {ٳ,XI]9 v^v+OT#ϯ ' PP FeXPP/;:nš/7/ j o1.FPa Lê¥l[ 0ErMqW-Bȗ` #A 'm  c91$&28& j3UΙ"X=6-QJȔ*Ƅ,eC/$횃DWx2]e9Mc"0q幣F4!v:fD&y{c}t%_DQ9h 2~?['< ( endstream endobj 1010 0 obj 840 endobj 1014 0 obj <> stream xUKs6YbOjhl3=8ۈ)Xѿ.EJH~҄AJO.`;kW}>R<;6|580$sSܬq\-ximѮ.]<d7ևo5̟GQ> c)XbXcOt8ze[C6#sGhRu1YvPf/*endstream endobj 1015 0 obj 887 endobj 1019 0 obj <> stream xVo6CV'3TIN6elӺ؋hD"wGid~ ~=ɇ"v%9: |&4|5E"MtssS>QS9I<ѳ)V)_RU-3)3</޺*F^ :l. -XreY0Rدeu9`+>sΨ1 vr^ {wIwX *aςg%OBI`rq=w!Ri|#4*炕 0h, /%O,;mJ%U.|.q>,F )+S _VKX!QYƭ#P-@¤^R#'m6hhjӘx`{2$# }[-KөMUJ"@s/.\ce):P"~v)hn|ж *đ^g>ڭe&fߦe^}i=\'8gjၰ@ԽH==`3z؈b8%=(WkylNAS7ujOBԫv[D%:8v1;\W]U%;|qK|uF$AU.%nnf{ҜiW ˕\qN(N5vtWz~1zJ+]_]AtG X8+nk'Vv-+tDm#r~QDhMpT%nƸɻ%7 *,.#pha!ϔT7͟9Hy"r0 Xe1QC#1ë<94(dMeTK> stream xV]s6~jZu֙vĞL"OZP4$74#H$wwF]rl8\떼?d"γx6r4;ǥl7_T;+߫VF¯IPUU~2kgb[KίZKC^ڝ-䜪o2. i:r!T|h4Y!JS 2.ο4),-w&5Bu̬N2[!_`Je3\˅&8YjW!)2.VA5EA5A^;w^܋4у/Ur(,Iju}L/b$(i|nS4G(T%N bߊ؀ ŋ*fB~79g|xz} YECs??N^Y>1*kM%OƭU)(,S=!#OʯaWTU.xPeVAs-@p}V l,V&t R7ZJE<H[=GhZ=`ZiBBσasZKmr8eV!q h-?Ѻ]E,B;(˻,F#xVEd];ZuNtl #{em*vriK E:oe'\ ,BqM]W5l$i&Һ> TMR0&mwW,"2-8h;.x4cB`,JJLR~[<]Rq8/kŌe:ѹ%7g0tTd8R{4'ϠP\j)_g?Lv :;w}+8tBSWo؝tLR0 endstream endobj 1025 0 obj 1128 endobj 1029 0 obj <> stream x}RMO0 _ntVڀ @HH|\`BB640~=LtBRc??8qVF1m׼V K^< &4$JY"+$&Z4ϣRuгfn8IڹS`}2,TVq>p/+J8< H%岠2}xnU]|Ӛ8BS+ ZهhP2BIP%ǍH֥X%U-r $Y]a.,3EW-5Wz9BJ Go6kdlۜy&5F|iVԝowZ8.Ow Ƴ m@ %6Cj\0:@Ů\#mG_fx:,endstream endobj 1030 0 obj 385 endobj 1034 0 obj <> stream xSMo@͙_nV Hv5Uqz*=la +.w`;ffX!Y=7|o.wAI!!uQVH>zm%rvI\G5vޘے[v6R fbN>kpBa34iJE*4bR:Yn)*)Adf}ô*@W\(X_$9O}<=l/ɜ}ͥa3ULsꪪxW)Jc-jf FQwCРRi ~i1SUJ r&_ɛI{]qK\mFY!8OL}!QXU ~sЏhiEZ%t F#J@%>N& 𞑲.鷹LQꁅZr7[}^endstream endobj 1035 0 obj 481 endobj 1039 0 obj <> stream xTn0_1%vjȑUIniMKhiHK;bXL g{[8OR8OWp im >-Ӈ> stream xS]o09/ Z@[Jh2$7`)@{f:5ls?QȍfM`!m풖:}}8<8A"6 4AtN'v3Ym Ϊ3Iˊ[unY7*n}OnGk *Xls=ZI-ĖZ`5OY:Y4%.qy%R+-QXԄ#"YeGaI21xᡢ}zפF4(Xaɬ/`*$k^~9@U+r[e"T N6 hq&ϣPN>G> stream xVmo6g:Xr!}`[ŀ@AKMLq~$r`2`Is@QBc5?( c-+ݬv/hL ͖zJ-.//G|*Քf7$Q_|k($dH[:<²!$x #l6?5='dt P_9ZɋEI96J}Mh{ppaw5O:yxfrq~%i2f>1_v"Ouq45rGkb+Xjzi2Ċ6TG] m-GL|W+XLnGoylp.[C!0"i53r ծ(v!*ر5Ao/#'g$X dJkf\PLVkktQ1L x7%lp!zzHHZUi>[H/PV瘼C guŎ 6;+!2h%lDk(HCGNP=yM(nҬ4jFT0ZI)ShUeu/jAHnO8=pCcF=Y )QND,a-=/Z R8 N*KywQ2,V_MS7 qvbb =P 4g+b [MmD]duLdi)MW~~ M3ys:nzףapQbT> stream x}QN09_1>ҦmAP$ZJ8N쨖;߳} +ٻzQaәW6":`͑WO:]q$$"Z4NRUpdM<,xY) _:mB\d~- @m  8MDTJ;;]Gm4 %iQx;ȯqFI9aۧXuF+]IRś"kbN7:83bY`ɯroj}2#/"-p|аb/X_ךkڽz;n ﰎ?@?D4֝gbgȵh-7Jpzy;Vzm-D !ܐ/~endstream endobj 1055 0 obj 366 endobj 1059 0 obj <> stream xV]oH_q$\i#nn&T}A{ =ɿs6)IWZ#a܏s^@>{P`ߵ0OGoL1-~m@m}īso_kMig?Mǣ1?HjorjHD)!9c@<]t;7]w%s#'p:xD_+ E*SL[$8A+2(։4CrF?2w$JzVb]U"JX.OF,d)9EI:r#KV""KS:ө ;Ӻyzs JE }s*ұ}YqP'7ee.BH&jՓ.vUѶ&" z6 ZNԭ{eUd2r3Bt^wx\^ aӺ& !ڼe|rg \tߡn s^_qɝZI.3~q" uf*VJY[MXW %!l]|iȡj9X,'FcN$/Fgqp#y3z֤!,u.GGu/RYntVcL&;^p6 cnMuhgכZ /1}J#n F1զ$IU`AnKM2HC[4BZD}3IH`;ZVb9na(R^Sۑ7L` %3jUZqCh_3@m@R̫2qi R|e{#ϟc/q'cp歀+ug+YUk(/G{>L]w2E !> stream xMn0 E"1Ħ!>tF딦*~i --iNZ֢-t?{ƛӃV&AN6:=Dǵ8ʲhe2|3c'CչѰcSxO$Ċ_m%Og\hU8?'nU\wGL\x4GW*$>'4^t@nendstream endobj 1065 0 obj 204 endobj 1069 0 obj <> stream xVMs6YbOph?gtN'nKLB:$@de )$xv ܯ'yBknINWїhprJ0:4*fCa|Oy:ɟ,<CҒ`ChOUqJQ@8 g*h:6=<|F@{'ĨptNuj & ahV % ӖԌ'i}b]TH$140/iLLgsΥmd̮攨,~`li.LY 4]V"P f"Bph3v=XS?J7Pr-:):,M@7wW1۲ $Ge@O(yaKs*i l6=Yb&TɅaTʏWqLVx\ڎWeoNxH<9=+祅xdܰw: l\ׄ@~NL6YŲZ_sUBME[[`< A@OQ|XYC5{ј=??Iֈuh_DII!LfR,` fLd`*Ԫ\r=]Ew BW]%2\TiEɠjxNqB p9#WP`=B•V kYw* RԨʄD&"0xt5hzV rjLಗ+Z sq)IB"ϔ1.[C׀Hyw1Gv_X`Inp:y.gа)%vtaj9y 7~I+aE`[( `ɨ! ]J9s쩹mbi!:iDv9BbU[+J ݪM,V4% fzg>acnzvoՄE ΜkvkΏR pЊg]HАw7; :,*"ng}|pp0k[qU-fAb0tʟ۶?VKTzw #,^t%u2<Ѕ *vj6} 7wA ֵe|k\w0Re5!]G>*N[|JY٩ u[ dS@mu?̈́J*endstream endobj 1070 0 obj 1348 endobj 1074 0 obj <> stream xWv8_QN( =k8LU6 ȶA"z8I {U%V[ge a=J `La`: !.1NiJ>*'_JFWKT@E\w3`pA@r:N`:q_V4)L h1E \Cn dBR wwKrA+%90uLdg;EE&mm!'T O.bBδG1b΍Iܓ*5=,!eH Mۇ+>0,ZiL|b%}-)%o\2U0 EA|[-w FUYGEg~ϧʬh-u76&WGУ.Jr]U0:M[[qV0]c^I L`uHoto9krveL/=!bqUi& ̬ b%PEkQǻ2q8Os=B%5mY[Bf|\yQ(C DxI'(B]\HƣFit`)I?Z8]X8&.*vvQ @d9BuJ(UzDłhYX%9͘bX4UQ~[ V#ģ r` ӢдddzWԔ&siGXt+uۣ?hr !9ZsV9H|LGQ1"1Q%-G4$1kPC$aÑLEh( I&?|*0o CdN4ι@}"0$…aӖo$aڸN+/%8M3;;{z%(X,VUY^&Sض{_|È˷}7 .i^Τ*9jhexŦ=ҍXќ_ϮD!2m%G)9gn]浪-e̞k9Zv640i틒j«u4~Fp[cT9iacqV6aT/Wr<5KKv>/|'=E(;~pABxC^-ᘻC(%BZ]w1z ?N{endstream endobj 1075 0 obj 1246 endobj 1079 0 obj <> stream xuRMo0 ٿ57E7lȆ1բmM7``Zx|$y<].Q~Um\>uW:Sr-5LEQd+bVMhQC*I1UF;/w$,Sp,FI՞Yo$>MP ,;IOLMeEZF TU*P^OCVHi#Po`*ڑʃׄAt\vY]{F達I)y@9-VɈ] cD VU-Zy60̊%xc>L}ҋ'`*'JEۋNa #Š{݁5l-/￲Z1X}#14S/(-%m{7۸Wjjy^ΦI> stream xuPn0䜯 ׍J M):PZޝYqcΙwϘrԋvx>"Li -N[Z.,4ܶױHxNIҦ~!GMQe= a_G# 0 _k> stream xUr6b$[Ƀ/NӸLl̐MV= $  p/g.^)Y9xRGVd'1'Gɘ&A@l}qS9hh 9_oFDsW anY!)N&# VjUϪ7acG?"A Qc?UjIkNӡYJ?Ӽv)[L͕{S҈n)J"6yQ;{%jGfNEҍvւ?ά6ʰx`{3_΀ :uNW K]jkn!jI) oS"TܵztsLRLHX)16.! <Ov^2}26[m٩~n]{`E2\6&#>Ap%Qᚄ^P3  h!4n!Ժ*~n]wQVn/d)=8thSqjqW5V3ZA| Rqn.ʮ8J^Lg;LW;ADf&vDR~!8PK'Ƕ=\Xqӻ́)Mj1~vʍ}vt&S(a9+#"4* G9b4}X:Qhi:l9 5_*>endstream endobj 1090 0 obj 1027 endobj 1094 0 obj <> stream xUMs6YbOjhd39v'M\iU I! -?$HvSc þ ^@>1/ n3-?,7U1 mͰtyyW]S>+o::x*!%LX$Zae0"gg{wp~QDUHF 56<2(-**QV$-0!&:ۧg~L!cR2H#tBߟRzޢ2زCWd7>VO"cKLŘ|˱t0_7lE21uE ̭ckWv+JINSY;>![k"Sɾ{*}̩UV:%O0SثPJt`EcjOVe.2h2,LxG?Hs_3)WwX;ZJ2[dLXuIȊT ϱw *M81{mΌ"2X %x@߾-wIIm2\L{{Ex%oco7Oi/dJػL`3m,BEs%GO ݌FBYۧW :HƣZ+[:88~7,%! 2\A.bu:m'Mw*eb)dAY9$[21j6MQd Ŭ@oUj>˓־.Y9W 02*5cǺ ps^*m(:|/u*[B%RI3Vf?#"|vrL[n/> stream xVr6b0$eKVf'nRҙLB&$A{$%HvZ3ɽ9=QB1u~F>zqG''DOHPC7ThLu n̤JWF}%]qG19+{BdOnl/.t{͎/n39;=$i Lُcn?g^o|F+\=ȩR&6)X Lc#ecYhrLd*T DH_hk7+$1/Jr (E °LN[P<6fȖPp:#oz  ()_J @ "5kdfKنEAPZhU,k SfcЙEiT5*6.aVV`取u:wydhԭ!m0]_R/y8*0 L"gbefJU swiQ'S潹W/n6\[^IbΩZh;hn&nb(Pi&s;ؙtwZk޽DPxaD 9J!Prck2\ ZD kWWTT+$7:: +'/ʦV :`KdVfDH&⒓)~ vv(CڙPg._mN_j=hi΃gq B}1X0I.nU}mP/i ˯hstg9O=]=(1,Dъun~eBU̓9*z{fc @|SvvOؾt?210+ir xAw^qQɂY#g1#y>z7Q'}ed P#t˔~?Oyendstream endobj 1100 0 obj 1351 endobj 1104 0 obj <> stream x+T03T0A(UU`Qɹ N!\AF zƆf !i\-@ez@!sss=# T.fHDBkB PA endstream endobj 1105 0 obj 94 endobj 1109 0 obj <> stream x}RMO09HUnit!('qKIPX2R<_o(ƁmNlL6$ FEPZO$CANIN[7QsF8Ao3--=9kV%φg~p{MDTU5nZa)pngK ֟kANh ~@ݩ4WT꟎s k<,> ܣNnŧkTZc=UN+UQϔB8'YYaZ }W?Dendstream endobj 1110 0 obj 395 endobj 1114 0 obj <> stream x}UK63OYfB1ޚWNnRP%y$nN]-m-4 ^fx,K3XGԲ䑶u?CrM2^wN+Тz6~9TZ^Te/K5~׆BigؚxYտ6t$^^||ÿ77Wݷ *x%+уqQ; *(E!IWq֕"I/[C"|,LC:%fi]h`?Oa9#^F\ڠ-[W+ "X'Px{zڧsU\d~|0>A mK'J D@Jf6=(oiEQ8t}@^}pR}70_wz %*m7]&vڐ1wŎ|6UA9+[]Ш݉|с[B m=r! _6E!rW"X P={v 3,iRzT kN'=j;:BlEoΈnrw#bU )}Q^8 ŸP|rug~3ѣ?NO{M #,a=^ާfJP~B6HhFi_F=xND!hAqoy4/83sC e9ܦOE;R|At9rN%T%8Dgfw xVvfB}k4O g=Qendstream endobj 1115 0 obj 903 endobj 1119 0 obj <> stream xVs6 ϳ \'9w}H.뮽/D$R%)_(˦IKY~7 o޷7J^J%IrEo2װ$ bjQk.^fx9N<+IkLN$+mv"O'1tFK1eyPVDiHt4ȩG+迷T. Ӟ)="EjJ%9f$ej ReM%-+U.$g0s%WLnhr̔(h!t^(='o$*aEQprPf0'3 V >kѦTkl핾|I7ӹc5>]ONșVRfB(*}Z;t!Ƚ͖/< IMN4)t#/:\e9$ys6)`\أ h2-̛g`dؗSĺ]dG_ڢ%<f=WTz(a$5 4܅:$p:d>nQu"T/14mBUkdJ V?a@\y7!JU!v҇~(I+s0MR者pNLMfKlٮe"WEg=}vnltK 8Ŗ(9OxǙFG<uDer(b ]/U);VwQ8OH5Ypb{ti5\pO?8 B$ U_5W>cR12Yy8՛JV -Ѕq8ys4=%Qh b V@>TT]YzF3sâusc؊%L` gGW26iS˖p6 c╄MAzx\3+aT(r6 /A 4b,"[,:ht - PsFW zO?endstream endobj 1120 0 obj 1285 endobj 1124 0 obj <> stream xuTMs0_7&H -pk ,Yr%9iqd&{o^J'{Z×f9yc8?wₖդ@o񨞜xAV%HR~fd"}]kˏ4paOw.%- w&>"nPW7ʭ|j֛D*"SDJ򗬭qJH|A_7^or$0%hGˏ7/A{VaU.Xڲڤ^rGU3U#Ք>HDv&mu&y$&H{JQq{<=-H@Ռ6WgrdMtd]G_q}1֖g> stream xuSMo@_n#ىoiT:uX`w(f%v̛aްU^힖.!j0%$)K܄qb$yp -oZ.LepZ D"qW"`QnǙr/G'~D{L.Tٔt > ysmɿyjVT+Gc؏N^AdjsňK尯r-YmbnJRt% 0fv`ѹvb * $E4֙ڒg%ZøRT/wM\:Th $iɳ.3mӝ|?eYSݤtEq٨qX o5:E}NW\Q #r Lkv@N9]1R'):x'q8m޽WI/1/Qm_ 0endstream endobj 1130 0 obj 486 endobj 1134 0 obj <> stream xVMs6YbOjĝ\86n(0C4Zѿ[C myJyLX<<AD!{ZLOrkc̣hNʹYl|eT1m.h4\9?<+L2 W'׹,"*#/2w> Wkw _⯇x`ݍ(_.iV?;# 0IJ*ىowZIYaF)Ð ZԹ֕26u:U#y4iu"jYubD:k3-mK3,;`Hvߛ\%ڒڐ /Х;6VRL5}`З x.Di{06jcw<n)\> >gQ^VNkĝsˤ[_ Eƚf-{.Ҹ[|֥|zD`ֹDÝ( 7ji-q"Z0·Ubģ: &G.@dz.Tʣn~X5#AaQ5їd-y"Q$BԑpHƽ3U%*Kv'D%\1ѝ$~$Evu\NaσKy,fGI 0ǧ"Ư0ۧ[nU6Y2Z/zItG|!|s_gzK]"+KC5oJ0XB5 Wb/VeW!\q3Y0D&RY]>Jfb׬0u  dK ;t% PzTXT]eaS1qhY9`XZH$e]%wE"#!zi!r䑴u&pxN'ʂq3lv,p@"Ѷtg-\‘)Ԗ|Nfh+Æ3e3CUwJ,l3n;0&srxN=)Tm?nFm5D e*!|iGgTdF[[=j8- =Jr퀏#7=? 81Y,C1XTG; Yslϵٽϋ\?BAxK=WQAf5Rcb/)=Rendstream endobj 1135 0 obj 1252 endobj 1139 0 obj <> stream xuTn0͙MQh&魍UVUMK.6mvII c3~ޛ1;y;Z;$ܯe G0 M4U- -FrL `jP0ЙTWLT2% ( ]h Hw.d6Xx. 0])3Fbt1q , "#* b〵>+{ZLO(s&0Ujc'{IvP 4K%*1i6"SL̙i&5)62-3 UDτ%8*U-Mɀ)jTJ`W S@a4ih 9^6 )kn;UO* ;eH=޶gK9'M[h26:j]$5r1Uq%A\=VQ|El{ļ; oס1q><>L07Xs`EJBџknzN1Gm8a. 9tO:|-o1BP፛nMԠN}ӆ$v(5uUEW׽(SNx?sDk> stream xVMs6YbOhQĝܤ86@1C4ֿ[ m<& ,vQLs5O)c--M.C%fϣ{LӽbɏGZeD}]bs:%exFbv&8XdUMVË`?M5Hڑ 5W;''D Ej;SǂvTZt9)k'ftu ]ԹS6uzUS-`*rZi+1X)2W-[lwv{+a-;IWGޗ]Qbma| rY5 Y`޺Ga$:ϥxD 0:#/A]i'ZIX}1gZJ `-kFڔ2fAr6-E,R`\!n,&y&}kmJYgSq:Ĩ^:0V#a f09t6*_!9sp>RD3Xz?0A%k^ciFbA!!wW(brŎ,}GM֜06" 'QT_?m/<^,sy0v[7ynv# ¢1k'#g.^6<7O pwAڥtOh/9_ѪyXtx}go@_9bH,nJgmP,wid[zD<ȵ?+$cd2Uխr~yZ qXi*+' Q. $6P+G^r3^X%MyT9SQ !tEӇcV=mjSnfWAb)o2v*G=csW]CT@ CoE)0c0p9I:~㾀3gm#i=DjZ7i࿔`$LPG`ds>T;/C2Lq O4yu ^4>*5j+,AIB;:Q26 Tr/ȍ:%p[KO;}g@wu K68|#L(t5aLv ya5Pn@ul5 u]?\_~ eH+ҸX"d5 dj=ה]Kendstream endobj 1145 0 obj 1255 endobj 1149 0 obj <> stream xuT]o0_q5"M۷.LU۵K6M^C$˂}}|ιG^Cg;FvVs!<Qx`FMcxIK{rz 0^)BΌńN5bdҐ(CLKFSDl߹_>5bf$mmj`EmXIaK2c >C1͢]U}<>إp2Bɸ5:k${Riv`Z[I֊F')3 U@N/"IE\mIY0 &6e0U1.!0Ez3QMގ)[8kcSRu!O6Xc/ρ3|9 UTNzYN:D?CM-iєJLʊ_[Pmgƻ͕q(LrVޕ&X7b^~{ uB3x+a\wQ}ݲ|>*-?I 7}'R%5%q<V)EBQ_!rmx&=ZiLeYσmH_ ENtY;ax~F#guendstream endobj 1150 0 obj 685 endobj 1154 0 obj <> stream xVR8svIybpfؙ]X#N@dNiqc,0˟PХ+TNWp8yǸR Y0cRNRfx>9|'[ lWOt+- 'r-'`KcD~JdZH"s;dln搩>Xg.tGv? ]i'Z{2x $\12S-iA R6 :[woϒJ# lw-b7REMنTGjb10N#GL ddNT^&VMv|blv>.&K8ɇUks1Az 4V7B`aCxe;Hr.}٭5+ Ug!`Z/qN9=ݘ.t `XpaQ8_Vuoܳy4o7W(pAZxy'qGޕtE潦t|[/!$zV`_ 1B$G$A,KӸѲުfMHl[2g 'gx`UHk!I2xevB԰ 2H)GrJP!0q x6tx 6fVLJbG(eq-f;=#i[]K^8)&4|`[wHºN 5qu0Mi^ڽ) ˨ДfE(b}QV03Rg>i4LB$ƻlEQY/:v{ Wq^)"6z-zG$cjJGNN6<TBK/XHO4Fch])^=ѹߑGc^a0{AcnQ/؛7ϵ!)kZKfo+kJ}endstream endobj 1155 0 obj 1247 endobj 1159 0 obj <> stream xuT]o0s~/+]dhK۷ijiNrxJ`;kN csYB"ݳ_K͐p;Qt>+6.3=Qو]x*[cG5 xU+!_V( 3>BUpբͩCMqU&O(v)e3 8Pi։u57;!垔Xp L'Y'd-(>t#DQ8R 0 h̤E]b*A\K֐ FtY5>]g9/Z* Ho\4YK C<4_6m%kݰdDQ`9lHo]uVaw3l/}a`}M]Xgj ^﯃#W ˅XS 3;2FM';) >nCzw"P`S!Ǔn?am;@*Lh۽lBXj f5T)n%I|E< ܣWFYdUqq2S޸>HU 䈺]3Z9z]PeS7B]bendstream endobj 1160 0 obj 684 endobj 1164 0 obj <> stream xVr6Y_v5HYNndi7QNU Y!-")=<,>Mir0~د_YI,o"w,^3ZnƇ#1f;,]\\D%jA˿e%3yeN2t:u.񄂻xWYy O(3إl]o?:XS ʋfiuʇޞ3Q.j#.^5n7ȄR]cB7(NT\WԲ.UUM[[W6N{ʊxYZDocߥP.8c7nA. HAGp`I> uեzivR'#u!SE` h|Q`ir j3Mڣ-jDc%].$-GɬifDYȧ㼏QQu`<1EEHBqbHE#Gbr9Lګ%"X;~=LM(=TFQq}@rWDA.ZiJ}b#ڐxJ˪d\ϧq2.Z9`[۹nl&-5Ʈ>q~mc#5ͯmu\{4;Q|xMs)_Ѽ?H[ϏK }< 9cH, KYj}6h}ܓ;[T=i_[!ZΟ1rɒt~EZ qXY&* ]A6X C-d[HlR+G>3^X~ͤɂ†τB29c瑶="(kP‵%ttҏv&#i#i<VZYɽxy2[5A j@QIW“:LMX;!(l yo.B"g#մߎlh,%Mfv xКQmRe<wL&M B @2m[x{yixs7ifp! :Gr:ΕI1*Aȑ#Hk7HOf+#z6D?!M&{= 8hCՋBߡTf^#Ok,\/sm3\'|1AZUH;̰2#??bendstream endobj 1165 0 obj 1249 endobj 1169 0 obj <> stream x}R]0_qu˰k߶NLc-mCċ &ʿ ufI=9\!9qn-^3|ܻy0{ AuIH?pwGt7E d(%(&t"UF* d`L7r߉~>״vV I^+=b%V)JછDeeəcZQqaZ4n,~z ₴h+`pTT v&SZ20y# 1ҩ¨f}y˅0 :.dmVmW+fMQ'ҡ)VLJ_  OS\5Ś2յ&h9+f.{y6)<ߡv㮛NʝS'FOF,PtUe.)6?mx;h۟c ߷Fsø@(*jGWYA%_MVZ؃(<㻣 2hendstream endobj 1170 0 obj 585 endobj 1174 0 obj <> stream xV]S6s~>nINL[(>5}m4cKF*`[Ҟ==3A!{Zj|rE΃Yfڌ&.8\. ~V`1g8yQ"ܝ l=ɔKrଗ!e.Hv4Q}8ܘG<xVxp![̋H_R6ǠTga4~Š&|ǧz^WE;j́_y_OWm]>oyqoH>(\v \ۺgaQe%r!9qPjNs:~? :\X?c`Yendstream endobj 1175 0 obj 1236 endobj 1179 0 obj <> stream xmQ]o09> stream xVQs8_OW16!Is\2Im.! 4#K%oW H{5 do]q@L=//H\{KvIrh$#λIFG:==3|UvU'0E'tDW- ݫ2٬WhI<@0J:?;?{#tW {PPzFk]`JfkzUsnЪe`k \y0 KWh]kVr3Ju2fx1qO>R;`\Bv,$Lҥqpi<~ GT9\;|.zvjЍu҈xX96)6tM ҘvLUCW?/Bh}#aꈛmR7C4kXhߛB '5u4 =2nWC9+ ^8J |xYSz> stream xVmS6Kh}0^B`nVؒ !(9ؒ}vb_ s-b?|Hd y1Ip8S'''Qz~xqD{Yq6e%Y j_ΆON z?+=HJ_6Hf"p7k)AЏy0GK`r͕DVl +:ڕd"/GoK> <]l%=I:NЩ+ ql1 \—zsw~v e{Q>wWPqTEvhL&(M֒ 1]Ѥ7 ҍO`{Ł/`ib2D* Sn8L")Xa"/17_9(x.* X!9-Zly  /Q!¡0/4i,\-DIJvM6U#g @`.({M(Q$$CB)b5:"m]sזҶ^#XT%pYynK4m倦n.1U^[bnM@wV;N0X6Y:( !*j%/1q<?f=-ePH 4ghG9 E]`/A2l+AihQTdǀ4D{o%Zv->8a-`CvϪʣUzW9v*+#$]Ck{ވ~COA!>ޜendstream endobj 1190 0 obj 1085 endobj 1194 0 obj <> stream xVs6}٩{H&s6&\ HD#Ab?~U^! "ni9~BGZ/9.c 2C%n~*ǍEsz)`,%[M2U <+-_o5~ ONOpcrr0zw@@BhWSP2P9TH֖Y|\ito\:찚u&3kVrX fV|q.=sdp0^&8liKiNpmVR"7Lg5}j|/~5rcC;Ph UOp wO:-J`S\|u!&ŏ  3cX^b4sj:H }> stream xU]S69>u!(KgiKI/MM-X2!Ga: qtx8J(v׽2I7c\2&ɔQ@l]bk>G䨑:寣":S9~"'%/8S)g''̖_[M&Bcl bT)tA(twd7oTV<NUmu+>_#3k9/:VA4CZe^%@}VW+RdX|S`:3w״/,S9rC_tW[rejBFU2];>36WD.K <]@P˰g/ngy{%+D+d{&O̴|.k Cαx=>kFu![O=1p3Ӗ-G86VkG|c,I`v5cz6ta.r<.js);o&4äVϤqX޷E=ZoIryGif{٣,Miqʱ{Yn@{ӯQā'B!{.|PXsB) 7Ǜܙy&{ga (ER,01xi jsOА,#v$t\[MQp xt Djldx 0E'd(=k( +0?Di[]/YpVhXǮM$=k#l[@W jK -Xt p:7a/:=wػ6MrDA~41?wpXuʗbA'Pj4uL9+4Xp}}z+ ܽw*le0( ,$!_RGZp,BKh'n"鍰0\6H./a,IStոLfISGnvendstream endobj 1200 0 obj 1030 endobj 1204 0 obj <> stream xUr83_o!)1J& ;ɲ ^a7Z,9`~d{bCSXGݧO_('YBWߒ>;W ]44_uJ>̆noo<: ?D7/Z$E1Y/.[}ޣjyx[ڷu|M%6DgW$ *hB2d6LpFI([a(NjE+m({4~J86|#- 7sac(-=XgҙL湭afϏΜP0=Xg\ Wn' S[W{"[Fd/!>$ZT" uZ`vLPi@=?5Ҕ]afХ|7שׁ_UE7qo!TIuY`PH<>&TTגF#޲u 2eI!6GS4pl`t4V `g2\?Og4 9( [NIlZg#C>8zSk:AJݹCmTr\z PQ7ՅI(tmM26\C.oxUVݡ6V}n)u&-xg,fdJ!·GF=z0`8ɐYtOL0sQ-pУO??>׭q|s*endstream endobj 1205 0 obj 1027 endobj 1209 0 obj <> stream x}RMO@_n4ě&bL"ԓxض[݄.ݥ)D$ݙyf'ovQc9*[ć\{n`ǣ)fQOiԔؕ%̥i4tPUA|Mqp'XFBuXm(kv&Ⱥ>\g~p`&@`͍P E <:QZ{ ΗD8Z%Xgmz_c QSu~Ep>('QlhP gV(mnvQ~NW ĮÒ)m e: -fڈ1Qڥޛ̿#hjz؉v(E(ZVznoS<޾uendstream endobj 1210 0 obj 392 endobj 1214 0 obj <> stream x}Rn0Y_1n G`'ES('VOqD!$Í!AD@\.wqŸnF?u05%^KFIeAb*K[JhyC[uU h,& JoջP>8k žlf6lv9.sb:4<6аПϝ2Е9x'im&,J/s'ŚU½q:\7DvMѿck֊~Ñcc$"~dK)d5ג7`ư㙎2aF~{Iz%!;:M!=@A~ȂS<endstream endobj 1215 0 obj 460 endobj 1219 0 obj <> stream x}WS8晿bk2&N)C-Sӗt[It-#ɤ[N@lY_~+χo#jrx]D<d~X86.i4ES4|v^JIzNY&)N] V$-*M-]hszݿ3)Tv#iŁST H-%}~ףr{px\2ix2hd,ͫ"x߱T8i Xd4B*k6܌aɉ"&eN7sY@v==&n%DgWKD|\{nՋ,.7(SMEF |pwUDAiG~2LwtYվ26-}~r<@.$סY.ԆHP Q?]i%4n%eVYThCLv wdzWl؋hUB#`k7XlEXƦُvq.oݺ^6}\N[Cxx6ܜ=q4JbpѰYN7i>SS(bNlL08PAe”;M‚+$BzL[yET&*Z(wbṴ@ 0Id5񁙄kp /l𗖃,Do6Y!TƎeq2]*l&ë`KA!E ֌b^7]׌M@UZ󖶥vtԶK4uw J-C1)Wgz['%Ά( $S@0 mK/H,\k>+i nG"b4wf ՍkQsT2fJU:bړڅʃؖzUla]@͔Lzʔm=aZ X6T)ЉL+( ul&n0&B.\.X]6 Hfz2[mu6K}3Eb`ANbLoK@#듃FV1pe}@(pNy4Om WG9GB1Cj~u.uL 7F%-Bktst]!V SNq;̰ չH?9 ܕ%\|U˵C]pl U N]z!Q:ϥxutR> stream x+T03T0A(UU`Qɹ N!\AFFF zƆf !i\-@ez@!sss=# T.fHDBkB Q#endstream endobj 1225 0 obj 94 endobj 1229 0 obj <> stream xWr6ͳb0X>8uMq4ӁIH˜h|}wAPe'-5 /== SHE=y<@w7i-,yjҙ8-bS'ݬ9~*Q`͋|9-U{Wq(IA^hEGoB'S_~wnY4 v##D;^=C A _@0O~Njo-હ1BIUɫxQl@Mk.-U=R-VșZ#!9:2C~icRO sô갥Z2b\T(ďoLj,. |^Uϴv<Vv4@UwH!m9 kR\ ; =K8K-@= i_6^u>Jb L+|Q^.r]oW3/dEf7^)ߜa8PQ]}> ߷>B?pddM4Ql$P.-Vl7Tczݒ:2 [X XQEp}bZGd'$x>ڪDhh>B0X`)Z(~҇X޲L+^_BF#ztv2}diY$?6Ng#_7yÕZ^5?H3{ԅ(bWti `@N(&b1,B Q]u#aUY. X{nAGj5\i2hUI\@ZjUܒ"bv2ײA5P'5$AY_w`CZ)fh}-A{a7.no*j{"ܵ7#S.0[dfR:J & FwѲFޱ7&ӨjGlY'%1e2D-nF> stream x+T03T0A(UU`Qɹ N!\AFF zƆf !i\-@ez@!sss=# T.fHDBkB QR$endstream endobj 1235 0 obj 94 endobj 1239 0 obj <> stream x}R]o0_qD@כssYDI}&V(l]1rz{=s۞0t\ 0N k0c` 61u|wbJqwcǛP)]#o;qFW]*Ab]zzoGL8t;;ު؃>vt`(F $eJP3Bj%4P1SШi24BIPYv#ǫ4<*dJTvFfZαɈlXX{|$ߙ"S3jy2o֊5vX/r{/K}כ a6QK-Z*)`4RKȢ/怾ޭ*~.endstream endobj 1240 0 obj 364 endobj 1244 0 obj <> stream xTN09_1o,+%jQT*P>> stream xSn03_1[ĆMV!*Rդr0(ic4@UK`<όpfp[1:Bcçj!Z?d;Llp@p[^".Qص÷(H&INQ劘ʮlS鿜b<ja8PPCo`T!J[,AiIʂJPnXe6}xNTK8WD Ci˴ ~4pmBOdnã%M peŽohھ͠M3S(c;-)%`w? H͵Y s}`ӂщZu4b"63~ s }0ݘFVܾa>[%& 0#" (^ItMķGpFRkKzIWAr9CXL}_w԰~4i=g5Trn_wdi?"?~+6endstream endobj 1250 0 obj 538 endobj 1254 0 obj <> stream xRMO@̯xԨ1Ѩ-l+,&.Ei5$f Ĥ]NK)Eata4^K X4͂ԵNMyi0.J NJLׂ^K>RA?9~t ,Q1صef !s㨢*I6L#"5L $*A)pBrg,ϱ򗆈L!ǵu5!Q, ڼ@[c>ZcNbж,S=`ݰ/ܤ34Ή} z ]Ԭ1.+ZȔCv8?M#*W'^˝endstream endobj 1255 0 obj 373 endobj 1259 0 obj <> stream xRn03_qJ)A}kj{c>0&wv9i㴑e %`/~p%2NA )-ɵZdf- h,F k- kY>psl&;z:=3r0K=jHT'9r8zRih {&:Fo¢*wB+^1C[Q .3Zi)r2)rw7XOč']rz K G7xq^msɜ4u׷;B5W &~-!-ƺ 0ٗs1>r2#C۳֊foK3PL:ֆ W`Gf4VU)sPcN_)Fendstream endobj 1260 0 obj 435 endobj 1264 0 obj <> stream xRMo@_nnHv[5UIzsX`iV~w0b|1ob\v6ESl<`'QoYB6J(}ٷ 6ivװU`պ݇y#?Lry1mWW+`11dczWPCN8&{&:/^EeᄒfAUZIǍd]YgT())xa6O;'dLiq_ӽMVU73k~q=uÜ`֊؍tgmt O/E/C|&}兒5bFky)Ν֊nHF< f ;"<M_Άϸvz\]{MZ%Ïendstream endobj 1265 0 obj 430 endobj 1269 0 obj <> stream xVMs6YbǗȮFINL)"A ([} $9ib)=_[wW=̦ͫa2Ű9^]\\LΞS=Li~8}69vL %ڏk[J.fٗ1u/Nޗ?Gsڍ2{Ϡ׋cNO "EZHkpwR?5kN^e/km†ֲQT ZW*#]JyZS0w&HY$4]଱*pma>*S WzP4!YUN"*e\x/(ֿ mX7mCn 8,Fc>-&UmIYgN/nV(/ȉR {4I[R3|dާKjmN>H`|wmZ{ؙ֏͉Khzb>kIgo~Pޮnn]!|b)bOL1LNbFnN: rjNƻg>K^P[C,T.ieJRAf1BJd*6 ?_[O(VIjT_i=qj56yUB_+s ^X([}%-: +'ydKB~8կ3]RCnjpD\+m .^ y#d5MRhPAG- nI2q֨/4aSHE^{pP*TXW``:~pJ_$IN; KrlUuDUpKoK\ڱrY<kuRmE2-^&GuM?%5A2իD]u-HU8#?.QrYt]1PHV&sxGl-Y"/o 8 =9tЊ SHh|䡐)W(=VUh릪y٫ ]tL =P^sMn@8;Mޕc C^Kٺae?[Ͳ {pRqf:YS{LY `{@~ycMgeNɛ93©%endstream endobj 1270 0 obj 1456 endobj 1274 0 obj <> stream xuSMo0 ٿENuv{Qm:֠Pr׏P,{3dJ×mvRE*mޥ`"`z{盛`3ZװmYiA$mj٥d6O=/ajR҈H"$J٪M@毥x1N숂rH^= iYKu ̾S8cÄ*PwߥR`:$+Ga-'9ad>q 7Dp,Ã0C6fPА|zzjN{_Î$6 S;Af¤Ym:S,@"&bj5L4$@ܨƒcaߎQ6A;\p~c8g[,sWKӶ*M$LA.Hj7xn8.uW4D6F7ݩ O)4's]Dң au>f7f>P}\+~Of6J”~y$(nO>5y\{9 EyU.y-t_endstream endobj 1275 0 obj 600 endobj 1279 0 obj <> stream xVMs6YbOrh}q[:OD!"! SPeLD؇o|Q:_< hڿxrsCxJ1c4}tA -ߦo);rRY-W$YIxWmi-W1ؐ:}u8 o u޾}>|K^D}@4y2Axfh:Δ?YKkVISzC ^va[h],`a\ n҃fHM2|Әt-=;FTc\J#9JLQ )ڽ'ruUi ݫO&/h><|K"WBp~Ʉ/iܤ)= G4*Kwe[QRm$YNPc1e +vF 7!F^G<@iK{EؐP 2Nrt#,>fV ^nKS}ch/FH' 'az8[QUl:+*2'j ;D8*Gfߍ(zƎ--hqH]zBuyK zުl{2JWU@~l jNJ$@ Ic9 ԱKUEд) C UXJ쇬kON9{UJ&Uܮ Rm}5`Vi}rD 1NeڀB*| N&Y+K8фbr},SZJ c5ҷq͌Ƈq*8 Zh tQje2~ YV=C;Q\Bi׆l$AQwBSp)|ȩvm>U ,!e>l=H ]ow=|nYm~OMh^>UKh2AI܌xBf[ztuͮ %@]bb# &q Y5x=o%KZH?xOAj,yBh?Sј5&NoTpӞݜ3|gXEAU])G3@2a{,j]]YYhoEcR]4gc~׀,oPendstream endobj 1280 0 obj 1289 endobj 1284 0 obj <> stream x}Sn03_1KITR[mWV}ji,K|` VZ,pQ 9bÏ,X>&(Wq Y%1B:J6AwoU1%+P]XH^Q(tGU&o p=χr@X W> b):'d{ft"L "ڂ,) K MTpmBrioa>[" %:> stream x}RN@_qrp,%!oT*UP0O^wl`G^f朙\ .yso,Z%qYuL:^n%.jwlUL֢`f7-tx8 ǣOӧ.|H8]0ρ`EMop|0`>y˙-zsԼҹȵ4Zq1GePZΆY]_sXbZi)r<(2 g7%%`w38]Wf9TUM|R@dފ7`rOP?E Ѝ0jV A:eqt> stream xT]o03⾕d) %M>t:U֮͞>0%J}hZ,{<܍;BGZ׽zm a k!!-6M]V鵧ְ:b7-g0bm-ϸI )z~Эɚ]0 b0~0pj`2\I5+ag 7UBB-RҒWd).~W.j^3Y4DV11%SRs̨&#(t$9y &rMЯ'Z0)Z}Hjѝjwz?[N`@FVm<7kyendstream endobj 1295 0 obj 592 endobj 1299 0 obj <> stream x}Rn0 _nuc i P`X;-;Ȳ %G2GqLH;\');;v16< $KizJiYjJ7|UG}(I"xou -sl҆b ~d??1m7ո^4q/X^wzzXVyz_؈P` EUun,fqNjItTAZ{߇,x^)s pRk xCs~-Nendstream endobj 1300 0 obj 411 endobj 1304 0 obj <> stream xVmo6gCIj(;/>[SɾZ,9ɲ%00)sGPDg7eBQqAFhN6FhJOQ 6 nt}}LnU9=}E7|:lcTBJT fyjK*Rif6Qى]Xm<^\~ R$IJ)& /K[( 3I ݓ }$ LZܲ"h*L"*y}z)=}Ϥ\ybVNڍLN(Ql=.5fZ@ڊ̥^#3$Ě ZVu!ᬖI'F\{,^i*^$Jh; vecVw㥻ሠlV"gz:rDip 8P{֯IrHe^2Gj$2Tu!ιْȽU# 6. Situ!W C8d GgA"]zK}e'Sz./l'3o:E]SreR3Obe'|85I!ɱi @h$zO Vբ95뢡dnބl9Nq{]>&N1i=JX̖ߎ$ 5n9\a8qg򾬋l2*3d$ÐeÐ¥ǯ=6QDmE)씣55f=Nr.jfK{%듛f2pm 9*8lԓ;4%MQzhOopA9}5{ax+^=66XS3lNl~Ys߆5GqmN9{s~9B[su{h>#>]*raa13*V(/`_2-npfW!5(F~͕l3_:endstream endobj 1305 0 obj 1197 endobj 1309 0 obj <> stream xuVr6b'M "kޔmV[}h$$!{J$Hg]F,={_Vһ8hxZ7.1KGٌ%s\^X8o;VLxCJ3לK%+Q]X/#Kf=sKb/7=sKS65F=q6yih}I63T.0潛ۤ6]w7Lh-fImBƣġ1~Im8$ ihf]4$>MCcJڒǐe,4nK'1v*I7J36Fo$mIx5mO.6Gg3#V/jahtoN_.8ݼzlKʊ:dzV0"˫'7%NT֪VTwBrv \jƋ9g}R)X4,8j^m B25\xeA6ֱRf`$@0e?DQ524X(T#ʇ -M4_#{*d)Q?.>JCvED Dی=}!QAж.e.>rBlzs9(av::Z=(wICgkC[e.KٰH(:>t(,h+l!B02>uF3l'ۜ?[aytsȗȉ)YBnp6P-m[{ʻl0Zfu#5Bcr0 ڽYUI, H#5t R7% ܼddJ\ ~ƖVz-3\x uۥ؟vD;eG5@`Y jt2 o '2+z=pFtd}>1`܁h_0+_DVA/ݪx ĀJ̼Z W]f<onJ#rnF̵.Lþ1 4 p}CvNy J{`孖9hQmzŸbt[d '__i%mQUW}rެhۈ}O5{I@R(·àrE؃?endstream endobj 1310 0 obj 1338 endobj 1314 0 obj <> stream xMMo0 9WeBjٴä1爆)PRd[ǖG6_\['{s?-2ysT%/lES[TN,/Kc od8t*qqZC m*v +yTB;|9Gj*FB DR^3Xdm|gSD>_!iQuA~@|? WҨ}TO1?I%Ee9n8"z(ji(l[t&Ϟ(!0I'hvendstream endobj 1315 0 obj 278 endobj 1319 0 obj <> stream x}SMO@_1BcUT *mHOM{w~$qƑ흝y~3+]F1]}uJqiI_"N9DI|'GMI$Ah>Gkl&늖Fut̒:i~Qvq`2?_PcL 9s $ATҌvM6*֒PdNJ|#.w:mVZʽJԊ^ HLʱQ"l3ZRXRVg'T&Lf)վ&du0(`D iۈU;*wn?Gd5*4MQ| `⬏] 5L11ŵ=1$ݐ elS# {nkl1!k]beaIAKUpVKy 6u4 3׎(d 38 a)#=4Xhp oL Ɓ!=S8z  0-uz0hGv}1iB6\Ϲ>޺2q1UJ[dR*(zSC@@dpT/k^9V)&bfu0WZe/,B6$ 66ύ. mF)K9 _^}endstream endobj 1320 0 obj 673 endobj 1324 0 obj <> stream x}SMo09bKUI$hRYUZm=d&6mhBVZx>!V18BTۺWZM0]GISD(M4)%y? l~c8KNZf [j;ʴەɟ{h7o>h:ah2^$pP7s4U`|M%,OH5VTX͐<VSxKSZYy,%JXKZJyWl3j ћ*xaBe{_1۳ deR cY4mmutY}K7eXfK5Q-Yp֑¬I`І57kadhR;4,g]UB> stream xSr0[p؉oitLr*=Hؚ%aJ 4ҮOo.GX!,l״B떴7߆r AkBBZ h٭'նN|*]Π<{3d:#[t\@[z;JC "@M bdeRs #אU"5\ }I0%="9`G1kj..|g2=;h9go@endstream endobj 1330 0 obj 540 endobj 1334 0 obj <> stream x}RN0:_qvJI# A,PڿfBiȾp78bYl F_Y4.$"Jy -6$&$ bfdk>ϣy2Kj6*C0U+.9[N):YSKd1NHN&hH K؛|.G[9e&IŒ*E釰(̜PkfTq'7&V:DF«$Ӽ<^a8&sfrK7ݯưppd,yS)J㼽 m^kEE[./ ]@a1?|;֒;o$0;`M%k)hsyš7+(1l4 #0y=VYtI:endstream endobj 1335 0 obj 404 endobj 1339 0 obj <> stream x}Rn0Y_1F!G`'EShQNqD!$C.gyu⺳q.X_hMl$Ki²䖠fnDC(I*qD ]\*9kF{ݾ& n>: M-`k't}DZ^8e5qL,P8 Q:n$\ƽuFIՈ6/+h%3SOKw{aU2QEn*Z+.{C\}ЋUc,VUqzؖ;o$/'KL ~+ϓ]>7VtO#)3;=bIU0cBo4jڨ}w=Ku-endstream endobj 1340 0 obj 422 endobj 1344 0 obj <> stream x}RMO09H+f7@B]D 'Iة=.Ϳ_'MP|oq8kz[ױ7_ѯ.(\;@BδZŹs!jh5GDz7~lRpd3,d؟Ϝ̀Pz#,CػڂDUԠ=)irG 2%$ܹbr;ǽ$%k\!*Eg'OpwDLfLg9;\[o0*9RU-> stream xSK0Ι_1%وP%mnUYz*=8$ւ'M^ ЮCmyo#=nq#| > @8uOnwOj-Ȕ9o-EP %Mm*eShNWh0m*⫲B+VX jTɘ?)oL"2řxI΄"Ğc(Jcs8) < 5rYLqɔ1LCNVws:Gfn螂Z9fD'Ri gip@#-Ai*FMSnCRAU2Jm0eӼ ?bÔqY#F)KUoXrG0j1ȂJ /8 &|[#A CCBEMD]€fE.-M܊\:#UoyvP!Ys?rŜK7endstream endobj 1350 0 obj 545 endobj 1354 0 obj <> stream xSMs Ybo]YS;-4t@6 d@v_IG饠x#\!\ތi#ibo K pFg^bXܢk^\*:jW/ V2S$9N%v9R94s3_2^ l0z*AVbjR3 ˄> stream xVMs6YbOhR$\ؓiɌ.0 I!--!q2S Ϸ8J(_=%~K s9y%YћhJ\Ob ΢k|*&+Z~$W_rIJԷqꖙp2Qm:>~|DG$Ej(!}Zn%]\PnRLEvF)ސ2)ӕv*d,Tj4ݙbYy_{3f+&3ڨ,}}LTҐх)JñSnKW_i9LHNp8?ei]딿KQ.<jܺhSlgV['t&͚.kR@"kn'*,\O3o&H=/,TU<% Ϗ|vuw j/4$ڵ2jFv`0(p諶.\!߻ 4fh`j;;e[\N7xecX!QN:Qι?a].8,B^> stream xeOS0{S0@V騭Vqt8$Z ` l~޲8zĬtvCV:v.V<b!>,dW65LXpiJgp~zmEZ %5^UfT6"-06"5GURww7F|AmN%UBcY7!YІ^i2 } + k%ܳ"?LjlP0զR5a4=p>8 ,/Lrbk:cITd0}QLiX\ZBFkp47Ɗ*>'!n<<-0h3%?t靐\[(kmfg6b<9> stream xVMs8 ٿîjTKG۝=$iIdwh3T}$v] "#FY9x=89M4Zl{|*S|$q:4Bh$:N&tzt{e 6omR$Jpqty}GɄ35و*cSF+ ǟe!Skd]\j4ݫjW5p}htޫjIk@7N0*M.x4otO%j&sjM2,kln{5wi:|pB-s.]OȚ[ZRfBz{5#mOp$M=L3Hlzཻi %4}@NS%PM2ǁMtDQhpt ȝt$ڏ{ ث] |Hh*pàjf4Z5ͤ[I=T2$Eɲ1g@Ϣ@@ͧp2tAiSЅ`dc6"J| B~.WnlQڡdrr|9{I3 D}#J"PĜؘ`&pKc65n.brgP-P4ua!|aY$YE.3Ue/H)fXyer;lA EJ%,lNAXנX{V``n~2S!fMlUA!EJ c8eUq[L{ՠMXsR;maP2ȺlQWeJkv;r!}pfS" r2ͣ3ht߱WZ!T PY0y-Zj恖 3+EPf4ht&f1w1VIc[NqՇa?ߥQӟ{fgW[wAF+GOW #-ݫPʊ; x=$Zu WOX tmNctzf5^]-K f7IJR`iB9:<(Е0PYڒ#Uҋ?)A' ?8*[z8irA4.fr ].v`U3Yc{p G㰻^g ^{Zieg @.EnZQH#J㓃Ưt<bS3rѴ˫;ʣQ$s:^q#aV!fu)r)閔W{Qendstream endobj 1370 0 obj 1406 endobj 1374 0 obj <> stream x=M 0+f+!MzJȱVlKm{VYfafgg;uEZBo "I$ƜI1Fpk͝$ gΪH0N/.O[)5Rd y`CtƢ_eSwΊ9 ՝ P>.R_78b1EɆ$Ñ9^)L8~endstream endobj 1375 0 obj 184 endobj 1379 0 obj <> stream xVMs8 ٿi5%4$M;BKTD*}(ɦlW>ȤxH8wVt1}zei̟JԮ7Mj/ FReX||e{5wi:|pB-S.]OȚ[ZRfBz{5mOpg$M=L3Hlzཻi %4}@NS%PU2ǁMtDQhpt ȝt${ ث7] |Hh*pàjf4Z5ͤ[I=T2$Eɲ1'@Ϣ@@p2tAiSЅ`dc6"J| B~.nlQڡdrr|9{ISS(bNlL08PMC!)wMSVZZ!ZΛOU2S%ѦajY&+'Ĩ.[!@@ d%(<|*wi Vk 4 1kdf -dR0XV5@grE]u6a|H#ҡceRsu٢b(kv;|!}pfS" r2ã3ht?F!T QY0y-^j恖 3+EPf4ht&(ݘZY+䤱-8O Ëa oӨcw鏽t+B- Q'+Stn)Ob,4v=^V]]0v<Av;& Z{&)ZCʜ^ydqZhLEsjO̬bS=em1 Ĕ.l+)d_62g.W? [Hn/9:Ԋ]*}^B>;fxiJmeW:/=CXu+FޥC`].ڍv`E3Ycp Gp^ۅ'@U%xj)*AwYx^3%<__r6Q${7~ax{fgi!NWw + G7t\0CVq*f޹Sl-)&π?Nendstream endobj 1380 0 obj 1397 endobj 1384 0 obj <> stream x=M 0+f+!M*">c/%Fؖj{VYfafgg;uM:Ao"Q4FƤ u!CD52'%IY5 cY7Ŝ%C!jq6.ص8b1E^I#9rP88endstream endobj 1385 0 obj 184 endobj 1389 0 obj <> stream x}Vn8sbЇmdvݴ)Rl7]_HE$ u1KzpLSJ޳Ұݲ\|I.tsZbk,]\\Lg(7MΗk.L'i<>~>:y/_HyE>-6.o0p&;XJgYH(Z;Y2WnjVLYJ)AFsK&;S1u4dҔp*_i$'KRULZwCTV^g\u1tPCo6Uc\ѭ:unfEWϥ.EȚۊZ"A `}`ե7/bA¢G_(<.uv';_{;(F<;_9zhD8wxݸ1d{O^ok*3( >/|!1!QUX8 b͌ դѝt[Rm z+,EYɑGY E[S؊( zm%9|=)e%Ӥ}Z}|GtjggAz:K&o+'|M&Y~$R u*Dd9ѻ`&pKc׾v6K yCb lQ c-&r.|AMaa wT m@ td (B+]Hi @Y'`*`(6}1 #6(Cim XV5&횽!ЙuYGݠ)XV+v8Ljnqdm[eaڝumv%$k.9H#Nܤ_h6 ruY~ڎlhYֲJ3hن3+V>(|mzcuR!D+k"xې Qǀ'pXъ~  Ծ=/`MS7$oQ!7SaI Sh+mBm*Ȏ N}*ۅ0I YsjFl8HCPAʅ 1p8ᴭCd,:]J9Pce(|Au۷I;a gI^YYiqVHA . (K29NWH!PJ%<}2F)[j`x|wړ^7YG*BYe<:cg&۱#in3D#:!L_z@~DRm~AYC^endstream endobj 1390 0 obj 1368 endobj 1394 0 obj <> stream xMMMo0 W*r i8Uu]]DY& @&ϡۄ-{86 Ybi`$d@Rɮ/d34䎨H}x 9 *]u,rxu GT7;sx$6c~ato2"]y2 W+;Ѽ\}y-yvPǀEv7[mZ7rOFt5Zoi ~SBRendstream endobj 1395 0 obj 244 endobj 1399 0 obj <> stream xVQS89bkh=&vЁsL^[I4cK b;JJ9-}zAЀ=+{GJq; <&ɐƳfKe=>ͪS%a:BTL\8D<7!J-^߾%:I@īۏㅤ˛;*L&F4V9esrY:% NV]J-1׶ޛBFTwJiYLZ $t~\`jT\6EY:K)*R :UFRexma/hp-݌k/v䈬$e(7G 0l\i eEx%P \1 4޻ۺPB'xߤ+-s,$ZNB;֠W!@&mM&{qA.D$|@`P͌FA+t+)VD59Y6&e,%$ ~_h u !@k;Ídc6D >Vd?wnlA h4yFxO}_=To4j=a^O+4TV.ٺ{0]SU9q;5 YjDw +lbC^8/S {]D!p#pq{?&€ w!pk/49}ƋNAݔ R,&1.].[nESY!Z;L;.N9y{t\%`ꖇB Nzw0j[-k4Ldt`aoX4r:gdGl(NWwD9f/8e !C0t%9:j54 1c^{ߏF՘?}endstream endobj 1400 0 obj 1361 endobj 1404 0 obj <> stream xMNN0+Mem8$͑B@^,ci bw5#>z$æe=!&LbHI l yN:ZX.1Ɠ)W; l}9v¾t88N9Wם!4d0Dg3ǿӀr 2<9M ?"\ԧeOϝNe 7Gn^ؘLXendstream endobj 1405 0 obj 233 endobj 1409 0 obj <> stream x}RN0䜯[ MZ  $$ '8ة x3zEcѬ~Uذ Wi0kl$^ "(1%цB:ZS ҇ >V2i`x2d~Yk^ p__l:lK ԵValFrVkmrNB/1I+V \S!t$(Etʿ( N }DnS93c[OʍVEh?|8o/WZSwCG;y@ti@?)L}P4 ێh\? ,7Jnx+ҝhtV*aGBszߤx endstream endobj 1410 0 obj 384 endobj 1414 0 obj <> stream xRn0Y_1F!GRa'%AS(4VNuD$Í#Њvw(Uz!8 nckg9'xʠĔF7l6QrMGue h&iG% 淉ޅosǾ83;}-cp@\5!EA#7V9U rL!$s)#ϝ2Ee _3Re:b#(IK;l ɂģ'ҍV3Vo/"-I^Vn;C}G.oUD }/R]8_p0N]hX!m(uS(UH'OmbBX*PΧFb,]OXh[q00*鄩ڼtx)\_cR ]Γ,q13Ұ fbendstream endobj 1415 0 obj 444 endobj 1419 0 obj <> stream xSMo0͙_naWvܒ(*UM6k˲ ~Ė̼2p"-qzs)Z:HU -QZ\k^joZ!EW*;-9$k7qe>J± OM)XO|LG4t/K-pٯ%p6 -6ѠgתơV:U؉Jҽ0mJad*8{f)Z.c0KKiQ*@vC 袗_P"[VW<#qLqfSǖZ(7g X]ⓢƵ(MX3g/ضi4U7{,;nb;Qi&]z@I';m2kNmNa+piI\L8$/FcZ?Ϛq,\kSśn6 Cl#!7|endstream endobj 1420 0 obj 460 endobj 1424 0 obj <> stream xSo03VM)iMTi[=5}pvlC~"U'ݏ*q̪`w*|Ic1DIEЇt-nȴZ"vM*o-hUFv06u+\ T<7X8C!ρs਱?ϺҔG 6E#2-vGW [M#P*R+n*޺x[V?nF5Lh'3]d'P#JI4#~;:뉪i?V|Rv-K-6o6MK{1[IdjAC.3f8"Z~<#+'N'%f>v,-s.endstream endobj 1425 0 obj 467 endobj 1429 0 obj <> stream xTMo@ٿbnVMj@OJ]g? ɯϳqJe%;;ͼY$4i6œK_2N 3as.e?FlV,.`|xf$(МJ*uP’RXѴbcwʓ-X-6QtZGўLN~t=[] E7[M!Sl~hO] 3`΄t]吜NX(u)உDžV> eiۋ$-$핀&C7@YOSvNX)hI^M[ zqjth-`5g:+T[u6ˁڍHxI~5-,w9z5 :(@zakȲ WfP 0c=w(і.K'a:U;Jks 5*KƬ2+v@ًJ(SͰD-Ljm,.(8Pjsm4 XD*n*su|E{ pgT674+ڽ׽*T=\6q~Q^IÒgendstream endobj 1430 0 obj 641 endobj 1434 0 obj <> stream xS_o03ޚD)Jھ:MTao8K`;9ɒ֖q ܄4u 6nkxL[t>yCR{HeqxϩbxUsH.dz GY _qi/oЅ̤u4pb4\. xXiqTaI C!*49%8F+sQA-.OIVŗzQÿ!y[QyL9# e(]pNJ!cDfyg܅C3OhE;mp704^f%$endstream endobj 1435 0 obj 443 endobj 1439 0 obj <> stream x}UMs6YbOrh~HV;v6qj7^ 0C4>w%HnCzL}v IBBY+~mxT-|.F48OըwI,?|>Վz+(ךkAZ[^ xrR[W}߹P OSVNVc0Y2BO~#q 0OPɚ \w[N0͡RM}:s P1xysbv/޸;>=0WQ3HRv$REw@?s5I:!A3dA!fvV&֫O{BAg :)WL2 rr 6l Kn7L8"w3ڮQx[MgIA]S#w(W̄(U(qA-ǟR9\I-ܮU=T;Lg,fi<$I9+$_38\Iy h DD؇ %2]ƆF ) qf ! QJācRG `HU;P.xdq-P8FB+ch j?F4X'@P̵Addx&(d mqQ98.tu:_OsiN]!8idC] VIb}Tm"QGmؒz^jC G |k<3YbQ.+K}: Њ mi!6BAj=hGV?QF'4MdHヨm|:W(S<ȷ1E[a#xmr×xch[7*xsbȳ>yL)4x[endstream endobj 1440 0 obj 1006 endobj 1444 0 obj <> stream xVr6b'hd%Lqө'm$$@,{;fDr.x !6®=rfꟄ3@kU lRڹ8-؅5. ]+r%4M/= sdk>: }Aa}( Qn O7 A kE^) jZpB 5?IDu'o qUw= p ٧ۛqƽ0IGKsBMEwYYDl`%Z`]٩{%g8n* @&g绹GY F{d:_okw4ܤ~!J٢8{v&,z\FjD@$i8Ȁ/s,'=@J~aq쥈E F[<0V ͑ KGvVs,9nE KzR +P,c"Sgu܈#PC'$(͌a/8eJ3ٺ$V,;YJm ɁEN`E<8u1AY>BeB>fnG5V, {qm Gu鹿fO@u?endstream endobj 1445 0 obj 1290 endobj 1449 0 obj <> stream xuUM6ٿbKׁ:mТh{&%)9ce%&3yC?ћȻrxM^ϛ-_n7;.#ݮciݮ߾Vyj{\tMVH^@OWT`JX*1#BU-SHEUD1 VJJVI9".rPOj>}dqء ' 95y켶2QLǀY>HaCg j*+ Fq1O 98aCՙ$9|RY;@x2涍ȁxEGr/ǫ^51:x胢B$WO{3}lRSt`2"q$ہQɌ%%>|P~ZtJkTZ 6@PHlդ 4S16%Y{Ty% ݡ '<+>-#yA8T뒕Y'9;/5;g rϡnh&A/N9X.@T8 V;r7V5_`纝96Iw%;~ O]pXUa-`*yV2SE+| hBE\Pʘ6TzoX+TZRz3 `~ VyBYkP}3 ̞E1|Oo`'ށVcSEapt?5pzr6!ky1#YYZ*\r}> stream xWMs6Yb۩FNILf2Mk)'%4$@d-@Jf,>۷#]Gtɟ;GgWVin1^GW4-deWxtss3«W]sjx}53=)Ljvf^Jb@m.ij~F{W`wvH?1_ݏf}w^"A MRM53z%')^fA16WZxS^J&S~C+ycPӥrT4:㵄Z䗒>i/-Jt5T*ÏO]3fg΅})CJjnfLJx\2l|`| dAm:@0^C2aQį͈%F@4ޥin l';4l> stream xUMo6ٿb$N'wCn&vQBc)%*$%}$GVR2`|yofL1]OsO񬽥\ˠ:L9oC2LO=ˮچ2Ef僃Q~HY8]ccG6Jw}tZmS ]2;Zؖ_~[ Gp UI㰙URQ$G{qʗF#pMB;2؝brANmsQi (oh׊:ɏu}5Ֆcppc&RE Obkѽ:nYlKT:12(BWvqvuhؤ0sBi>ƉetbՠG+Nr۔B2fozfCMSBE`qRTw[q=^+3e\xŻiHrxCZy6> stream x}Qn0䜯U׍JBjZS$ _'!U@Uޝ0 B KI*\IfAqՔ`B$M]jNq4J? 9ɭ ).~|m{n?軀5A0Xlpؤ^lnώ$;G+_:!9Q5:30|I`+nL m`> vuSf^.7Tcai_PnZ-2ME"VoresP J)t͸7'v|*Pr멃;ScU]쪁 CۼԦ`Zr-J X4;Z-A; A"+ uQendstream endobj 1465 0 obj 384 endobj 1469 0 obj <> stream x}RMO0_nJIjZVH =QnK#~'_UO> stream xTMs0͙_nqɄG3i$ bD$9ߕX}oW#߶ߴ^k'-qNIi8΢1lNyi29o ɗ^trJtntRQߓx7:u'b08bOn@BB½ǁv;%d6pR N923K$NPH$ၣ+z8x%t艑x]ma揟fXNLzOKRsvܭ!(v|ørPZyŎc4*z asUHp-=lg SM-]f6>~A;_fΞ@VxTjì+&O.XMܚHʻ0?*/ ziX/4{ƍҵ*_Ȱ md67 D  l9^V҅4J%Zn\x"']ېĔA9jB|Ph[(tYWb-w!mΜ?nWjy:~L]YQeu➔"ĜdFBձ1t*= NhNI/p}endstream endobj 1475 0 obj 664 endobj 1479 0 obj <> stream xTMo@͙_1."8RTi͗1 k}g8J"-,̼y,[bព6B\koi IpNaMxI4)1MN?Au &iAKP8/rCXb8< dF W#?Fg_' YBߤ6 %I(MtV(y(-iYUHcV(oRHj>%qԫr'SAmA`/dV#+ynZEΌGxp\j9rGMpXgx)J%}^Wޖ9 s*p@<i6<'3uϔendstream endobj 1480 0 obj 692 endobj 1484 0 obj <> stream xVMSHٿK˦SI M`n ؞4##~_,ڕ]rׯ{LANClE?SuY}~r>`c-fsT[SјoD |1?,Mx$yF0wF)c8<>&t?"Af8+\=3Z+fv ckD7K㓨қZqAF˛P,Q_:hMg׃=+htȄFXOfA~%:ofx\%Хc/>Y3 VRaJF{A f{_xrA+!1/$0ŤnC)A .yq|/}Z)vT ";A89+D(x-3sLpvt!C@|=v( x$r7;01J8H4?P@U &I: ӯ .䋨^I6:{cc4'iᱤ.2]XHq3d(^'|Ee\F(!,& 5Ph6Iv`!dɽLZUT%ECNMÝZJ{-qFS(ȕ2 j+Sκ.Uzh_XPI]*.`5HOȥmӈNtDbL[PJlJ%x2p9 n:> stream xUnHY_ѷ^Aca;`Y $263&9ZS ġ+Ya=tGp034uځ{H-VCpY`(TgtCfn\iRphP2Դf)maJ幝j^g}/T0JI. x:SXq\7;*!5[˜TVG&,#CmT-^U&ö$Lm]){I]Jd,%%65$dnd s\S> x't3*PeLFB#@z{C5GI6`ZO\=4Pl $hw32+{ 82=7xvw%C U*j\aȘHt%ހ֤ɖX r Q~-B \\d2& D = ۪A ܹ|v!6kG[W.{XHWs3obendstream endobj 1490 0 obj 1028 endobj 1494 0 obj <> stream xTMS0_n$G6PZhrh&$weI;ө%꽕0f ơ|EEoH#*\SrOpxha03@F9=-|YٰBqu3wKԜ%VƆzCk"O.XMUQޯ A>'VDz!m{oBF!] UZX4*K[>B8 a%e:1kZysIh!ݟ|Wbǘ2RE͆1nFBRLx\ESboqy?m77.^@1%̲n}I79~D<[endstream endobj 1495 0 obj 626 endobj 1499 0 obj <> stream xUMSHٿoe=`XRdCL۞ZiFY lm\%u{G:,}߲!E(ep}8&oa'U9AQ ѣo)5)A{tMR/".0CCśXia|9DgX#F7<$$+Y|A_?jnReᠬ).j!aZo4ÎdΒpS-nRe ݊ĺdRډxD,ِ9kxGIggg.{s]VmY%a GGvH󳟙qBںaϤvӡac04* ib:J!37K4Hh)M84P"5X9e@8ry~E )FiZ;ɅMՈ5q嚝rSqYJoLk O<Ī$Ea %D+&OĂ~\H֍nzx]pwXsLs pɘd4$*(pt^o~%|sC/l$lY\id`1ZNςMeendstream endobj 1500 0 obj 1027 endobj 1504 0 obj <> stream xUMsHYo )WlM, +} FFB0fqB3^r4~>y?x\$ JvKESqkuAq!X8)B4x&lL>$̏/MلWxzm3W@) RNgC%˔JWDKe댵EFZ]#tț,_ xiW8ws'%cӞn5<mx4&߸Ï״<@[e~M(!Li%xf}u$ZEۣh`Q՗/ۊ"n)gF4=`5'P$R~F0tb<}7:fzN m=X2V WP|ٰ?0XAwd۶%{VܰEĜ:db%5(Wu,ed_8 ,s  ?9rF~Dp7rŨb[Mk^AGz;/\O'ʃqgʎ\<ՎK d6^Φ&d sGFޭ5я`JJAy9ham`49i;D^!9 RaUcjnSHI3K> stream xTKo@_17B ҪV7.z ػfD%<|ӾyD{9/a&"J ̓%"$\j\-]AcW݆$N8҂`.c=`P+V,Bܶ@0ODl3ل`ptjA 9k]~SڂDHQ23` ӽ0;ɭPHAZԒ+VZIU NHRMtыe2c½#Di{17* _"Rħ#xaCQOe#{N);I@%s)(JO P)#Rwe[P̢x K; ]3sxFĬ•(hŏ1VYp3;kzNyՉȶ)rֈ !q9#^ܬ>ZbNf}hi+}ʊXȩ*4+ E=u6i#fJt+2Ǒ_ k0}D5 :M'=?g![^/މyIӊ5+)=Q֘EŻsɅ6u*m`٫g_i䘡'1)bI>endstream endobj 1510 0 obj 642 endobj 1514 0 obj <> stream xTn@ Y_%!MHĽ2Q Ҍ2}I-EFEsMXӽeF4%+y2Β$U. eTqzEWUZ]W\Y8VڃaUz,‚Aܚ`;Rz %Cyػd2SRSWVP@ oFz`RD$ssV[Zze4\ 0-h+QhS)IhR\p{:m B)Ҕ%6OH6ħ'xbCP_jFПOQM@|Jf30}S6Nn|-pdѕ{eǥ9<Vc>Lt쪸;*$ۏ1Vqd]_U燶NBmLNV ,>2|9r'sro5Ǻ&|хKS TBUh#-ʓ)wu2psc5yHMt s9xv$:m'_pčV6DDҴbfj"łV{r)usm -JQK FLendstream endobj 1515 0 obj 641 endobj 1519 0 obj <> stream xuRN@W1T$֛5&FzXa]:;TPm,C7378b7^2X -/Y4=ǧ(qXʒh*d2N$U]}E$iҙF)s zK>B 4h(@8C0PʂJdOQ6c,d_)bqgYUMJqᙜuj<=f ++= Բ/l R\/%4\s`)iGN9|]UNrwnR_ nk/5duE{(vSM4_p$Ħ>tkjg+%&miwU:Sendstream endobj 1520 0 obj 379 endobj 1524 0 obj <> stream x}RMo0 ٿݚSX P`[;5;( %EYG,G[\:6&[d/d>Ml(Z.ڤG-P|Kt /^Ǖü3\O&WÜٔG=óhK 6IP5OO3o¢tBI^3BH(7#:jEIOI+Ӽ<=c=~qLVTO5<[. fTMûHQЗ4ztϢwx|= ~ͨM+^F]`?G M+aj꣦U]Z]C, f ;'|U rh*_v Bss endstream endobj 1525 0 obj 438 endobj 1529 0 obj <> stream xRQo03{+&R@Kھu:UV-eOM0%۰(R9>QNk^`%% smƫ8EV$4%z B#oU6l( Xna]a^Wz?tK2q8]jL. `vn> h?ϦrBWGv)+IP%qٛ(;$hqxɺpoQR"I+i 3S5n=n簪tUUⳢ5~i9Th:_h{$z4vwamkn.r,gJK9>?^}njaFf!):0;bIV0cLOL\P27/6h~|j_%5w?1Tendstream endobj 1530 0 obj 445 endobj 1534 0 obj <> stream xTMs0ٿb 1&qfzp>M1$Gv)b`Ѯޮ[Qa;+{WD\J\Sc&i {%%ᘧ]eouk/:O8f_*)9!^ sQ!Ex>'ChXиSYl&|QF(kS '`C):.@pSȨ:L RfMd$ZJR_W8nI]@L8V?~(< vyZb$ZkFBE1,o5J+ NI]9F"wJSˤGT Q\e-:^}/zp2?DdZ$G.vtѝ=*)Xɹ Ԗ9WLdU[66x67M+fa$SnP/dZX xˇFXm`skM V҅$\ȷZn\|x"']% ӛjB|Y]hT->Gw5_CU!hŬZ1yNN=4)JiBܓR䖘\Pur>}k2V:ΤZ;S ?oR|k@|jendstream endobj 1535 0 obj 663 endobj 1539 0 obj <> stream xTR0x7c%L Ђ"5ь-I&wNZ{]}o7c>YoUHK2iqGbKSޚN]U:F-Odxs u\~) !vdg8(,.h8_5R8^^qu"LPЦNju>23RM\4 43RZ&J8j#gh/RZ<:^ %F92I9V\o*&f:g7!.ZB˒{E1- Ϸ0v$d|)e'MSu)%G{$WEyUȔ}eMa7Iùl_p׎[?YNI!jOΕH6̹b$ܚHuXw<}_Z1 %|.uBÀ|haĖ \l"?ӲGC;P.'ZTFoFg3h q/r҅G, 6Z C\=>; eYvM]&(la#"$o|n nΟ1iuY7_i'W)~~WZendstream endobj 1540 0 obj 623 endobj 1544 0 obj <> stream xUr8Y_1#k'ڃe%.'#g,Sn{A\s7#KebRþTVs$D0\-G8]jr]S\D "m p;!"8<^(ckJ/ߌgw}6C@[! kc=bAJ7(% IІYSTOA`VU ; ř6-T=,^ӭU-ГB5Hv|Ҿ̡BA]k4]>QͶ4E#kAwvD!vxdSpͺ*L푍3{eGq+z^>WdiHG{ ~1Dl䷵ + "WI);/ fŢ\e ރ|';Bc!/QBRj/};Ht+|^Q\kC.7@r71*kHΐkU2?@k_?R `[w }_mW~5 R|H;΅Kg |xdš|:E:I)eu;[~kϼkNBEغDH(D.zVxX ,>endstream endobj 1545 0 obj 913 endobj 1549 0 obj <> stream xTR0I1(i aҁ[.^7RV=+'4#+۷yLio$/  \ɣy l"*ٺ6d3>NdkuDgg$lJ(s$Hߏq4xF ~C:gw $xȁx%qs B|Ԯ2;Y%.ۥ"|͊yX/Ѷ}} m]^rKIB)7Y,b5u弢nY[.P}TҹVX> stream xTMo@ٿbnj91($D(IJ`n\{\Vwa? ژjגkϼyެ7pp3-Mz<-$xI)1 7 1$߂&#? iAآX2qbx\dy'7`.ػ`p|`y3IM@"J"Wɕ. %oRlI, S %-(,UH)Y Q[P9XGsP40),z32Cx^Fv UEAU)NSJz/,= sK;"Y)@yMܲ@XY݊t}}5\Wl!^\$3h\c-wB7.>hWr.t*Z @D52롖e8V}XqU( vZ6cKWTD]sVBq@>mJa,[EM#Ӱ=g f$2E?l~ׇ;~'?  endstream endobj 1555 0 obj 692 endobj 1559 0 obj <> stream xTMo@͙_1."V8RTm͗ q; j va7_yùϴ ^Ww#-& Ξ㋋̣I<'A$˫l/S4VSHe4'~;PAay5LRT!|ƇC5[?0^ kp6@BK`~NTIR:]nlXjFaQ[LDHZrl]$ꡯҩGo2xMU3Y] ŵmJ%Z<ѧY<_j`yJ%iVCp&-Z=QÕRF{ [_ MU}5u%tIշP:K,+IN(5:sĕՔu%v[APrx(],f>1arWb)Oا:aRp1 5?JKy!YxkW܅ m F]m&ϳyㆱt;x˜AHO!d|}R\:lU{#Z;J}'-йo`> stream xVvHMlG Hspcg&cH-D0s%8zVߺ'So{Sd5}<·t鈦EYBlԿ5R4~蟏#=)RGzNr$4p)9}ÝP oO)9_J8g$ huF([hS WjuIgiTBSPt6yy RhYZ*pƑ.-%)' zqeJ%h1Vl 3f''T.Ln}-nfduHtUɠ`05J+w p Ěc _HX`xU) PqIhnA8-' H"+3`f´`ydޥ1ŬKC [ QK?).Ϣrvpح_fK-m0E:co_+Jd\9jVv _v!P!ƯC6l?An)H죵DҭT!Z0 IjB)h4-p1B }\h̩eƲMHpy; oRܵx,t`Þa6C11@~׆$OURCbd?ȅY91"G0Hw[n.Kq= [GÅH^HhWM6^֚ m &yQV9Rbbg/b9w›\C_ |{H EʳȹNpG^D C^²61m35wMB> }t 1$mvFxTi/l#M4®ӗf͋B7wlhW-> stream xVMsH̯%ء$ `iχ >G-Dv%$u=xИ;-J+-â{firLi% ̦]\\&oSٯiW?y;:N|9Pړާ^ 3aUH >M|3y9Yrp7Yh:ÃQl~"Eݓ.j R rcKˌz։"jH4nnVDž0Timubn< [a=Fv=9ofo_KZ^ḺOץԾv<%grVRjBPpC֩Fs (\PjJHL Lz1 P(L㥣:jhAӛ 'Eup7̼L=eaLp6Mc _?O ZzgH0Hg ySq1AsCۭL R޷0F ]E;;)uV3$:p˹!A=$r [=AӗPEČl[Q M-Ӎ@Mwܬx&\u@e=Y1\n,XpRH%' BB:2UM) XM,/~J=bʚJUuF*k U1ElRH|: z<&P o,܈O ǽdv1!iE[>;p-֡T1|l5<(}9'8Ԙn^l+NI1劙31-BVu'3ϝCec ZɒNڊ<p]`dtSV~ 0rd^cHە7M s TՐ[q,1 us`'YEE֔ĨxP1h}tTRg Wr*VjQm^%-m dҥVP<2כ:/L]L2$r7Y-eq_6^!o:v PwMxс+2 \drp zq#c䐝N3+hC&CA| x  [BeWY>TkvZm c4ۺ8.{eQ2m6Rk/4{;#_eb1?9d6yϏ oHx endstream endobj 1570 0 obj 1222 endobj 1574 0 obj <> stream xV]S:s~N_ 4 ҙ>P ޶7^[N4=+v{??W{ήHiB35?)SZҧ]tNgEr,h) 3<:==U9Nh8y?=Y|y'%½OO2օdB/7M뮻/>npoxtD4׾"EݓgONj VRUƖ+?]c3k$E1ńi:*Gy);'\dr[I7Kpq5ڔ سѯ]f9=,ЙcK}gnpHYXI) BM6\#,agf炄Q 16JhDQ2:im>B @{WLF+ziIYl`>ؤWtOagIA>v .8\7NG]lKȿ\|?G`"M΋XW$CY0o"tRɄ* C`J誃AB gQZg)uT6$&t݄Pz$r[iq0ޟ,&8fEB˛9#T4 !¥W];X,ߚ,9d4Zc1KPjhҒTZו7 ZspF$d U c:nbzI-f|ՄX3$F4HTSDkn oL&T8yRnD0b5jF*ɤKZ-΋iwS"Fg [舝7_92UQ$gg! VCoCFfs^ ˥Vaߞ++|?7Ƈ)47,xUb%T́Wl;x9endstream endobj 1575 0 obj 1269 endobj 1579 0 obj <> stream x}Vs63>5$e|I%3}HK/]{N:Ë#KD6lK?ow iAJw,k> ~u>.:giVP\UƭSK `g' y^K-J̿[j?Jxփ+|m_㳳'w xx5:P| ֦ -PpɭLP`ѪXnNe<>CX^pk1U-(d׆\XzUG9GA5:D Om 3p ̔~L{ŕt1`ԭ軔x(qLiΫtb&Ф7\5$x` )w,$<ɝ71[o +{ nKfw <7_J#Ր_AD@ĉJc7XTQʝ*fv +LRi,_r(y!*zpaS'E0â ǐIc[<`낊b A[8$FB+-Ic@h\VBaېN3_EF6l ۘ 2fZSWAjf{n ׈ 1טz%,a9 r׿@͢* S&zN80GÑo|F{6^epiɨ{㗟C !؈qYBt&i16 ;`2Aj_̱u{;@(u=>۳"؋\"gYKR$̆=X 6ipEl'!#kt? bFǧ#JX}&33IǴW1T'H_E(H3mk J^Qj[W+>oyqX5hiNNKR/`2h4$EJ~fwXӕ"doG&[WHA~Q+'?5tW\ *5^R?8c @a!*~ 7?\y/cwĿvfǤB`+أCax;;¿h q'\;X QB|;endstream endobj 1580 0 obj 1300 endobj 1584 0 obj <> stream x}RKS0̯SN&%P(xX_N-xQPP_vTd~Hv`Rf~;c<6&xf.!~50hfе5F.acWYH%dy1a/yZTI+JgiLaAB=z-ӴQeY"O%B"ำ!I%}B:&qz|"E \QGV)yCy$_JRJ4 R$*<$nlgҭVXB=/dTcXz:v ~y ]/eXv&]PKamx^J Ο-:{eZ𶘆Z:i$ vX/u᜾'{|1<1endstream endobj 1585 0 obj 406 endobj 1589 0 obj <> stream xVMS8_ѧ`fXTU(ʖ%I%af rSS( c쯽EFniAWs<4f+^cuJ{yx:HDFկ+ElT=9e8 -  }ھZӣj'pGGD bT+Hu nU߹xc;Tem8_*49FIëgV&tHJT:Z 9wF?)(+r6 <&=^MZ%LΙtM*D_tx{ISVegt[x!i53KVq"Ϲx`L/t] |:;vw6Q(&i&9ps$N Q +]>S Q4PBe[j=pm{$q8xmk^}oH$kisEdDw < V 6҆ KQ(*4hX]s T.¸/Hk00MyiܼY)̤ (\tbG: Z;9R+->*Hd6X k_ R Vk6sl:;,i7憎:X Ԥ[Ҭ{K-wYlU;RT"> stream xVMS8_ѧfXTU(ʖ%I%af rSS( c쯽EFniAWs<I[tS"\saG#]?8to1TcIkKDPFK)7KA[~fUT+ʜͤ?OJNQ 3y,CZ'nL(Pжjw^:_Om7T6WFӤC7 m'õA|`iݯ#{!v^g<y.߁&SX%4J®+V/Fp$W(VK$)cҮvi-DSQػ *<4aP|rg JT0.pA4h=X@JUܒ"rxD#ْ$c]o}" S(JeW6Xݮ̱T&~`m.PnQbWK-QdUEJaRt|3$ e /v:; YfK.Zh=VP$oCiIKV{8WMkC: 0J>xdbHNAOL*ф]CpM.Oi#gh]><]Y]W'^ݸ]2p.}0> stream xVO8<. IJ[@Xh8ձR_Lⶖ;8I].Ğ發AЯm]knqs8…? 'AȿtG縕 *  s2F8|W"ʗ&l1LTrH[uAнjѓɶ}ԋcT  Jx-hf[UJs ۃXeyi85"4]S`it' /2'!0Tw4=(+qw 4ycP0C˙Jxnа,elE9ginIRҦPRe"Ɨfx{̠mV$p[sƥqtcji64p)1e+q'2+$_0S-PIpM3ɘvQX 7~N(ktPu?ȸYSZ3wGYVq^9ԮC{0"=83AL2fJ#]YjNɍ±8.#ƾBT-Uڶ19A$<J%ViI s`qsÐ~훓<xœ39$B+ IcNOֆ)9bw(HAP9'kgbZ~KQL+2VJ%)Yͩimt^Y3qkA Y3FYR a*FBĎg_0jó{ƽ^BȂ-J UpЛqEoEmSυ30Qi2 V\" _6G,سޙHun/\&$_eHEcb?SIϕo( ($3%e8iB><] (Ͱ>#{Îa ar `R yov?jwIo?= ݷ|˃xx.<8Sk #rendstream endobj 1600 0 obj 1134 endobj 1604 0 obj <> stream xuPn0쯘C7*R%TH/AۿCHKꕼhN69oȉ@/X)4LciIplNjHו }&t&4n,s{t5:oh4 Fߦs-}yn2(m%|%IXk)VceB6UƒCӯm+d2Q0]lJ.W6`#u/߉k3K5)%^Ԗ[/?& 9}7"?x!m|eendstream endobj 1605 0 obj 304 endobj 1609 0 obj <> stream x}QMo@̯DPoI&J/-,ve~.ڤ}{3 3ìL+l]H+> stream xuQn0x7F"!UBҦ7q%/t:[K<0Ƥ93]^.%>S,iIZIӒp|NH5C@E8KI puʽ FkU=z&Vr˩_ TB*j5UG@ uN+ Pe#J˴5Ej%UsyaY# ʂ`Wb|\1iFj\ oe3+i2ƝNw׷{3dn~BCt/tU"}GR74ْendstream endobj 1615 0 obj 316 endobj 1619 0 obj <> stream xVQo6γ/K:CiWuCg.@^hJBRv%ْa0dD!佧 û1 3΢xu~~R;NLQ &t)ޜ_{ɷ_ggxz ?wW1Lq(=ɧRE&'oȯ$-LKE!u$|X:% pl6u[SzeDx$reQSX`Q'\:_=4&qh=e+?/A/ 1N-WOBF꥙o¦ ,:ykɷ`8jMkJ^eg~}j̃u0*>3W[.azO6]N_xl'whtamziO73r5_MD9ǂB1-So+FUN$Ͽ'ӈn͕c0 @-t2`> stream xT7ne7pHSpiK=iVx'KN쑺_~4ws}_fw4LKg7WW̯iY)s]W/u{{[]v+Z6B_>$2u)nK91q7)DBhP?g7m@BZJ> D: T ;^ endstream endobj 1625 0 obj 790 endobj 1629 0 obj <> stream x;s@])c8sSDFp> 8#[1{>"~\>/-e57Bd`8&BG[Ƙ[2mɢ* 7E\1 kvk4 !5dP .GnB''EUy }lONN^䥓lۇ// d-[ڜM;|{>̊=gS%+ij+r|΢$2ͦ N: |DVBYgRs-Et(0wd>uPJ0)ю+nH$_y@[zs012"Xt3%eJ%8AO%ܡ(8JJ((b4e2)PQGQqP5S2Y.8FgQ=GPzq2+D6uZZaN Hi스éw\dLBbC餠J,dz,iBI2e9Fl Dd29%g{ M6Hzv,ѮN^'ԡjшј~A4L}<8_NaBKMQPמZwUTK_ɰ*6jousf-nendstream endobj 1630 0 obj 649 endobj 1634 0 obj <> stream xVmo6gCN8e5:E34Hfzh9HBRNu}GNXp";t\{`k[dѿٞC :g;Hf0%$?'y~|^}<[o|=X|F9kC8;\h;{;Т^6N PP*êY@Wjxhp OའRH@o\ɜj.rXi)rV!j`iS+Mcg,-jyJ$JHSRF\h> stream xUn8b>2I-| 5R - HTfӯ!m5v# (Q3ggfX$> vIrzeSo#l+--|x ^G0)J$J+ 8l,DI&]*R O"،( =BE67g3[,.:oIֈ<7B=[Q&<KҐR@W-腨b+JHh`G|l=y-N}_|;eK];k*VE*Rg?DYFrByo,>{ZtLN7>,Zxż7#Ǧי8+UM/-8^lf7Tk:?^ 'tC?IweGSW@>X!#HG0@l[!oFN18ah%vl}imU{Z~OsfX>B{V,$vĀv|>mѧZ\{(EpLZovQu^ *T}ࡍt=JϼQ%{fVVu y%< `X6)s*cA[8RPZ D9o:Bw(s}Ƕ= -T p5*3NaWU jE]`d8HL T4+fd?|N۬(JؕT+n2:{ƼLlYf]%w m>N y4ix8ص~^P:&}b^dܙ&ÿڵVsqYvBR&}v'!|`u|`$O2T' ~5 %endstream endobj 1640 0 obj 949 endobj 1644 0 obj <> stream xVrH"]6&dCkpy]eF0g$~_, j 4zNK^Et5ߟpp><[X6ĭ%Ew T,ixq8]-hq!GON~N><Óc42$0Tʷt|r[}Ou{iu귰⌆U?음}4/V1ѵNrV],/ r5HƩidSct\Jג&q*M,RZ!~[*tnt<[vKnSz?5^=ͿOf|qt?ws<&||׌F_*_&vF'itww'N3>OsT,m,}Z{"kG-TUwq9ӝ42SIĹ/ҡ:D[hkJ(|$ 3_+tI)&$~Q`d0+ UZg)%"g:sJb͖?rd~B1Q^(TZPo[$ 3h IbeVd}G>c{yƿIJ*zw+\i# (W1[G*ڄV!?p-UOYpLC@qk}--:eVJb!K_ 9T8GPחFm1?wâAQ-~ ȗLɒV1剹bhkJg3zF6)Wi š E?L2V5Q2H@1' [,8*%NT7Ή6M(mk=8F]OXgzF%ػ['_c;<O*Kt+.j1Lla1 5R}f?oLIb9vB%eYQ E*[b0bRWn"v6" ͼ5 KE<𱟃ˡȹz.q!/j5Ogp%(k$Ұ[gruJ[SxKRaqJPX(Z'wSEuxv2ZJO,HB;CҒo0sxwifD^XSɛnش@(( kN[v9s"kRs?BI u 7汪{+|ҹH ;*E9/W[w%H=Z &͛5Ada j#*_bp&RNnmz';Li.q9vx ?_MB^?jW%z tszi`GR9fQk U2).kaגutܮǭij%S9endstream endobj 1645 0 obj 1443 endobj 1649 0 obj <> stream xTMF_7ح-.p!IA@%ʅK{eu<Ol VmNyf /9_-`9__˛nusY^ú],%y-KW./Af(d &)1y HB,\Y3 t4GRD:3tl1@2&x)6Y͋H!ǶHJ4=FNgL {/Yfc;&{%Πm<)dTxL'ap%3KLRrϲE臠iYv|31n)I3!]Ì 82o=YAYU$U:*@b=<^U1!>;J :Ɇ$3YU-W5NgP!{2cΑ7 0) 8ǠzbO̻@zC)7#w: z7!ȋoJbɝ*V_Im4UrBۖ =rGx)nNJ LEVKx˧ᣈkK5_ѯendstream endobj 1650 0 obj 769 endobj 1654 0 obj <> stream xTR@ 9_7LIHN \[c3vx%^ u+F<@ёt'8u\8-7J+O'p{OB;|ͳ\8u!U6&._;j9jL)2S;uХhVw!,wͪQ؃4ߢ D 0#Dд]Đ$an@)0"bLO0l&"bb "- :- WDH)0b7,^2ZACm:hc2I%dOj'FaN`wBI%y1g/YNXChL1TY^=?BDQ.,07]4ZDkb]qHLika*Ӈh91ƩWo?BkDhWms 8+7ֺaW^r#WCƴYE$pA/t1-zw;> /Contents 6 0 R >> endobj 13 0 obj <> /Contents 14 0 R >> endobj 18 0 obj <> /Contents 19 0 R >> endobj 23 0 obj <> /Contents 24 0 R >> endobj 28 0 obj <> /Contents 29 0 R >> endobj 33 0 obj <> /Contents 34 0 R >> endobj 38 0 obj <> /Contents 39 0 R >> endobj 43 0 obj <> /Contents 44 0 R >> endobj 48 0 obj <> /Contents 49 0 R >> endobj 53 0 obj <> /Contents 54 0 R >> endobj 58 0 obj <> /Contents 59 0 R >> endobj 63 0 obj <> /Contents 64 0 R >> endobj 68 0 obj <> /Contents 69 0 R >> endobj 73 0 obj <> /Contents 74 0 R >> endobj 78 0 obj <> /Contents 79 0 R >> endobj 83 0 obj <> /Contents 84 0 R >> endobj 88 0 obj <> /Contents 89 0 R >> endobj 93 0 obj <> /Contents 94 0 R >> endobj 98 0 obj <> /Contents 99 0 R >> endobj 103 0 obj <> /Contents 104 0 R >> endobj 108 0 obj <> /Contents 109 0 R >> endobj 113 0 obj <> /Contents 114 0 R >> endobj 118 0 obj <> /Contents 119 0 R >> endobj 123 0 obj <> /Contents 124 0 R >> endobj 128 0 obj <> /Contents 129 0 R >> endobj 133 0 obj <> /Contents 134 0 R >> endobj 138 0 obj <> /Contents 139 0 R >> endobj 143 0 obj <> /Contents 144 0 R >> endobj 148 0 obj <> /Contents 149 0 R >> endobj 153 0 obj <> /Contents 154 0 R >> endobj 158 0 obj <> /Contents 159 0 R >> endobj 163 0 obj <> /Contents 164 0 R >> endobj 168 0 obj <> /Contents 169 0 R >> endobj 173 0 obj <> /Contents 174 0 R >> endobj 178 0 obj <> /Contents 179 0 R >> endobj 183 0 obj <> /Contents 184 0 R >> endobj 188 0 obj <> /Contents 189 0 R >> endobj 193 0 obj <> /Contents 194 0 R >> endobj 198 0 obj <> /Contents 199 0 R >> endobj 203 0 obj <> /Contents 204 0 R >> endobj 208 0 obj <> /Contents 209 0 R >> endobj 213 0 obj <> /Contents 214 0 R >> endobj 218 0 obj <> /Contents 219 0 R >> endobj 223 0 obj <> /Contents 224 0 R >> endobj 228 0 obj <> /Contents 229 0 R >> endobj 233 0 obj <> /Contents 234 0 R >> endobj 238 0 obj <> /Contents 239 0 R >> endobj 243 0 obj <> /Contents 244 0 R >> endobj 248 0 obj <> /Contents 249 0 R >> endobj 253 0 obj <> /Contents 254 0 R >> endobj 258 0 obj <> /Contents 259 0 R >> endobj 263 0 obj <> /Contents 264 0 R >> endobj 268 0 obj <> /Contents 269 0 R >> endobj 273 0 obj <> /Contents 274 0 R >> endobj 278 0 obj <> /Contents 279 0 R >> endobj 283 0 obj <> /Contents 284 0 R >> endobj 288 0 obj <> /Contents 289 0 R >> endobj 293 0 obj <> /Contents 294 0 R >> endobj 298 0 obj <> /Contents 299 0 R >> endobj 303 0 obj <> /Contents 304 0 R >> endobj 308 0 obj <> /Contents 309 0 R >> endobj 313 0 obj <> /Contents 314 0 R >> endobj 318 0 obj <> /Contents 319 0 R >> endobj 323 0 obj <> /Contents 324 0 R >> endobj 328 0 obj <> /Contents 329 0 R >> endobj 333 0 obj <> /Contents 334 0 R >> endobj 338 0 obj <> /Contents 339 0 R >> endobj 343 0 obj <> /Contents 344 0 R >> endobj 348 0 obj <> /Contents 349 0 R >> endobj 353 0 obj <> /Contents 354 0 R >> endobj 358 0 obj <> /Contents 359 0 R >> endobj 363 0 obj <> /Contents 364 0 R >> endobj 368 0 obj <> /Contents 369 0 R >> endobj 373 0 obj <> /Contents 374 0 R >> endobj 378 0 obj <> /Contents 379 0 R >> endobj 383 0 obj <> /Contents 384 0 R >> endobj 388 0 obj <> /Contents 389 0 R >> endobj 393 0 obj <> /Contents 394 0 R >> endobj 398 0 obj <> /Contents 399 0 R >> endobj 403 0 obj <> /Contents 404 0 R >> endobj 408 0 obj <> /Contents 409 0 R >> endobj 413 0 obj <> /Contents 414 0 R >> endobj 418 0 obj <> /Contents 419 0 R >> endobj 423 0 obj <> /Contents 424 0 R >> endobj 428 0 obj <> /Contents 429 0 R >> endobj 433 0 obj <> /Contents 434 0 R >> endobj 438 0 obj <> /Contents 439 0 R >> endobj 443 0 obj <> /Contents 444 0 R >> endobj 448 0 obj <> /Contents 449 0 R >> endobj 453 0 obj <> /Contents 454 0 R >> endobj 458 0 obj <> /Contents 459 0 R >> endobj 463 0 obj <> /Contents 464 0 R >> endobj 468 0 obj <> /Contents 469 0 R >> endobj 473 0 obj <> /Contents 474 0 R >> endobj 478 0 obj <> /Contents 479 0 R >> endobj 483 0 obj <> /Contents 484 0 R >> endobj 488 0 obj <> /Contents 489 0 R >> endobj 493 0 obj <> /Contents 494 0 R >> endobj 498 0 obj <> /Contents 499 0 R >> endobj 503 0 obj <> /Contents 504 0 R >> endobj 508 0 obj <> /Contents 509 0 R >> endobj 513 0 obj <> /Contents 514 0 R >> endobj 518 0 obj <> /Contents 519 0 R >> endobj 523 0 obj <> /Contents 524 0 R >> endobj 528 0 obj <> /Contents 529 0 R >> endobj 533 0 obj <> /Contents 534 0 R >> endobj 538 0 obj <> /Contents 539 0 R >> endobj 543 0 obj <> /Contents 544 0 R >> endobj 548 0 obj <> /Contents 549 0 R >> endobj 553 0 obj <> /Contents 554 0 R >> endobj 558 0 obj <> /Contents 559 0 R >> endobj 563 0 obj <> /Contents 564 0 R >> endobj 568 0 obj <> /Contents 569 0 R >> endobj 573 0 obj <> /Contents 574 0 R >> endobj 578 0 obj <> /Contents 579 0 R >> endobj 583 0 obj <> /Contents 584 0 R >> endobj 588 0 obj <> /Contents 589 0 R >> endobj 593 0 obj <> /Contents 594 0 R >> endobj 598 0 obj <> /Contents 599 0 R >> endobj 603 0 obj <> /Contents 604 0 R >> endobj 608 0 obj <> /Contents 609 0 R >> endobj 613 0 obj <> /Contents 614 0 R >> endobj 618 0 obj <> /Contents 619 0 R >> endobj 623 0 obj <> /Contents 624 0 R >> endobj 628 0 obj <> /Contents 629 0 R >> endobj 633 0 obj <> /Contents 634 0 R >> endobj 638 0 obj <> /Contents 639 0 R >> endobj 643 0 obj <> /Contents 644 0 R >> endobj 648 0 obj <> /Contents 649 0 R >> endobj 653 0 obj <> /Contents 654 0 R >> endobj 658 0 obj <> /Contents 659 0 R >> endobj 663 0 obj <> /Contents 664 0 R >> endobj 668 0 obj <> /Contents 669 0 R >> endobj 673 0 obj <> /Contents 674 0 R >> endobj 678 0 obj <> /Contents 679 0 R >> endobj 683 0 obj <> /Contents 684 0 R >> endobj 688 0 obj <> /Contents 689 0 R >> endobj 693 0 obj <> /Contents 694 0 R >> endobj 698 0 obj <> /Contents 699 0 R >> endobj 703 0 obj <> /Contents 704 0 R >> endobj 708 0 obj <> /Contents 709 0 R >> endobj 713 0 obj <> /Contents 714 0 R >> endobj 718 0 obj <> /Contents 719 0 R >> endobj 723 0 obj <> /Contents 724 0 R >> endobj 728 0 obj <> /Contents 729 0 R >> endobj 733 0 obj <> /Contents 734 0 R >> endobj 738 0 obj <> /Contents 739 0 R >> endobj 743 0 obj <> /Contents 744 0 R >> endobj 748 0 obj <> /Contents 749 0 R >> endobj 753 0 obj <> /Contents 754 0 R >> endobj 758 0 obj <> /Contents 759 0 R >> endobj 763 0 obj <> /Contents 764 0 R >> endobj 768 0 obj <> /Contents 769 0 R >> endobj 773 0 obj <> /Contents 774 0 R >> endobj 778 0 obj <> /Contents 779 0 R >> endobj 783 0 obj <> /Contents 784 0 R >> endobj 788 0 obj <> /Contents 789 0 R >> endobj 793 0 obj <> /Contents 794 0 R >> endobj 798 0 obj <> /Contents 799 0 R >> endobj 803 0 obj <> /Contents 804 0 R >> endobj 808 0 obj <> /Contents 809 0 R >> endobj 813 0 obj <> /Contents 814 0 R >> endobj 818 0 obj <> /Contents 819 0 R >> endobj 823 0 obj <> /Contents 824 0 R >> endobj 828 0 obj <> /Contents 829 0 R >> endobj 833 0 obj <> /Contents 834 0 R >> endobj 838 0 obj <> /Contents 839 0 R >> endobj 843 0 obj <> /Contents 844 0 R >> endobj 848 0 obj <> /Contents 849 0 R >> endobj 853 0 obj <> /Contents 854 0 R >> endobj 858 0 obj <> /Contents 859 0 R >> endobj 863 0 obj <> /Contents 864 0 R >> endobj 868 0 obj <> /Contents 869 0 R >> endobj 873 0 obj <> /Contents 874 0 R >> endobj 878 0 obj <> /Contents 879 0 R >> endobj 883 0 obj <> /Contents 884 0 R >> endobj 888 0 obj <> /Contents 889 0 R >> endobj 893 0 obj <> /Contents 894 0 R >> endobj 898 0 obj <> /Contents 899 0 R >> endobj 903 0 obj <> /Contents 904 0 R >> endobj 908 0 obj <> /Contents 909 0 R >> endobj 913 0 obj <> /Contents 914 0 R >> endobj 918 0 obj <> /Contents 919 0 R >> endobj 923 0 obj <> /Contents 924 0 R >> endobj 928 0 obj <> /Contents 929 0 R >> endobj 933 0 obj <> /Contents 934 0 R >> endobj 938 0 obj <> /Contents 939 0 R >> endobj 943 0 obj <> /Contents 944 0 R >> endobj 948 0 obj <> /Contents 949 0 R >> endobj 953 0 obj <> /Contents 954 0 R >> endobj 958 0 obj <> /Contents 959 0 R >> endobj 963 0 obj <> /Contents 964 0 R >> endobj 968 0 obj <> /Contents 969 0 R >> endobj 973 0 obj <> /Contents 974 0 R >> endobj 978 0 obj <> /Contents 979 0 R >> endobj 983 0 obj <> /Contents 984 0 R >> endobj 988 0 obj <> /Contents 989 0 R >> endobj 993 0 obj <> /Contents 994 0 R >> endobj 998 0 obj <> /Contents 999 0 R >> endobj 1003 0 obj <> /Contents 1004 0 R >> endobj 1008 0 obj <> /Contents 1009 0 R >> endobj 1013 0 obj <> /Contents 1014 0 R >> endobj 1018 0 obj <> /Contents 1019 0 R >> endobj 1023 0 obj <> /Contents 1024 0 R >> endobj 1028 0 obj <> /Contents 1029 0 R >> endobj 1033 0 obj <> /Contents 1034 0 R >> endobj 1038 0 obj <> /Contents 1039 0 R >> endobj 1043 0 obj <> /Contents 1044 0 R >> endobj 1048 0 obj <> /Contents 1049 0 R >> endobj 1053 0 obj <> /Contents 1054 0 R >> endobj 1058 0 obj <> /Contents 1059 0 R >> endobj 1063 0 obj <> /Contents 1064 0 R >> endobj 1068 0 obj <> /Contents 1069 0 R >> endobj 1073 0 obj <> /Contents 1074 0 R >> endobj 1078 0 obj <> /Contents 1079 0 R >> endobj 1083 0 obj <> /Contents 1084 0 R >> endobj 1088 0 obj <> /Contents 1089 0 R >> endobj 1093 0 obj <> /Contents 1094 0 R >> endobj 1098 0 obj <> /Contents 1099 0 R >> endobj 1103 0 obj <> /Contents 1104 0 R >> endobj 1108 0 obj <> /Contents 1109 0 R >> endobj 1113 0 obj <> /Contents 1114 0 R >> endobj 1118 0 obj <> /Contents 1119 0 R >> endobj 1123 0 obj <> /Contents 1124 0 R >> endobj 1128 0 obj <> /Contents 1129 0 R >> endobj 1133 0 obj <> /Contents 1134 0 R >> endobj 1138 0 obj <> /Contents 1139 0 R >> endobj 1143 0 obj <> /Contents 1144 0 R >> endobj 1148 0 obj <> /Contents 1149 0 R >> endobj 1153 0 obj <> /Contents 1154 0 R >> endobj 1158 0 obj <> /Contents 1159 0 R >> endobj 1163 0 obj <> /Contents 1164 0 R >> endobj 1168 0 obj <> /Contents 1169 0 R >> endobj 1173 0 obj <> /Contents 1174 0 R >> endobj 1178 0 obj <> /Contents 1179 0 R >> endobj 1183 0 obj <> /Contents 1184 0 R >> endobj 1188 0 obj <> /Contents 1189 0 R >> endobj 1193 0 obj <> /Contents 1194 0 R >> endobj 1198 0 obj <> /Contents 1199 0 R >> endobj 1203 0 obj <> /Contents 1204 0 R >> endobj 1208 0 obj <> /Contents 1209 0 R >> endobj 1213 0 obj <> /Contents 1214 0 R >> endobj 1218 0 obj <> /Contents 1219 0 R >> endobj 1223 0 obj <> /Contents 1224 0 R >> endobj 1228 0 obj <> /Contents 1229 0 R >> endobj 1233 0 obj <> /Contents 1234 0 R >> endobj 1238 0 obj <> /Contents 1239 0 R >> endobj 1243 0 obj <> /Contents 1244 0 R >> endobj 1248 0 obj <> /Contents 1249 0 R >> endobj 1253 0 obj <> /Contents 1254 0 R >> endobj 1258 0 obj <> /Contents 1259 0 R >> endobj 1263 0 obj <> /Contents 1264 0 R >> endobj 1268 0 obj <> /Contents 1269 0 R >> endobj 1273 0 obj <> /Contents 1274 0 R >> endobj 1278 0 obj <> /Contents 1279 0 R >> endobj 1283 0 obj <> /Contents 1284 0 R >> endobj 1288 0 obj <> /Contents 1289 0 R >> endobj 1293 0 obj <> /Contents 1294 0 R >> endobj 1298 0 obj <> /Contents 1299 0 R >> endobj 1303 0 obj <> /Contents 1304 0 R >> endobj 1308 0 obj <> /Contents 1309 0 R >> endobj 1313 0 obj <> /Contents 1314 0 R >> endobj 1318 0 obj <> /Contents 1319 0 R >> endobj 1323 0 obj <> /Contents 1324 0 R >> endobj 1328 0 obj <> /Contents 1329 0 R >> endobj 1333 0 obj <> /Contents 1334 0 R >> endobj 1338 0 obj <> /Contents 1339 0 R >> endobj 1343 0 obj <> /Contents 1344 0 R >> endobj 1348 0 obj <> /Contents 1349 0 R >> endobj 1353 0 obj <> /Contents 1354 0 R >> endobj 1358 0 obj <> /Contents 1359 0 R >> endobj 1363 0 obj <> /Contents 1364 0 R >> endobj 1368 0 obj <> /Contents 1369 0 R >> endobj 1373 0 obj <> /Contents 1374 0 R >> endobj 1378 0 obj <> /Contents 1379 0 R >> endobj 1383 0 obj <> /Contents 1384 0 R >> endobj 1388 0 obj <> /Contents 1389 0 R >> endobj 1393 0 obj <> /Contents 1394 0 R >> endobj 1398 0 obj <> /Contents 1399 0 R >> endobj 1403 0 obj <> /Contents 1404 0 R >> endobj 1408 0 obj <> /Contents 1409 0 R >> endobj 1413 0 obj <> /Contents 1414 0 R >> endobj 1418 0 obj <> /Contents 1419 0 R >> endobj 1423 0 obj <> /Contents 1424 0 R >> endobj 1428 0 obj <> /Contents 1429 0 R >> endobj 1433 0 obj <> /Contents 1434 0 R >> endobj 1438 0 obj <> /Contents 1439 0 R >> endobj 1443 0 obj <> /Contents 1444 0 R >> endobj 1448 0 obj <> /Contents 1449 0 R >> endobj 1453 0 obj <> /Contents 1454 0 R >> endobj 1458 0 obj <> /Contents 1459 0 R >> endobj 1463 0 obj <> /Contents 1464 0 R >> endobj 1468 0 obj <> /Contents 1469 0 R >> endobj 1473 0 obj <> /Contents 1474 0 R >> endobj 1478 0 obj <> /Contents 1479 0 R >> endobj 1483 0 obj <> /Contents 1484 0 R >> endobj 1488 0 obj <> /Contents 1489 0 R >> endobj 1493 0 obj <> /Contents 1494 0 R >> endobj 1498 0 obj <> /Contents 1499 0 R >> endobj 1503 0 obj <> /Contents 1504 0 R >> endobj 1508 0 obj <> /Contents 1509 0 R >> endobj 1513 0 obj <> /Contents 1514 0 R >> endobj 1518 0 obj <> /Contents 1519 0 R >> endobj 1523 0 obj <> /Contents 1524 0 R >> endobj 1528 0 obj <> /Contents 1529 0 R >> endobj 1533 0 obj <> /Contents 1534 0 R >> endobj 1538 0 obj <> /Contents 1539 0 R >> endobj 1543 0 obj <> /Contents 1544 0 R >> endobj 1548 0 obj <> /Contents 1549 0 R >> endobj 1553 0 obj <> /Contents 1554 0 R >> endobj 1558 0 obj <> /Contents 1559 0 R >> endobj 1563 0 obj <> /Contents 1564 0 R >> endobj 1568 0 obj <> /Contents 1569 0 R >> endobj 1573 0 obj <> /Contents 1574 0 R >> endobj 1578 0 obj <> /Contents 1579 0 R >> endobj 1583 0 obj <> /Contents 1584 0 R >> endobj 1588 0 obj <> /Contents 1589 0 R >> endobj 1593 0 obj <> /Contents 1594 0 R >> endobj 1598 0 obj <> /Contents 1599 0 R >> endobj 1603 0 obj <> /Contents 1604 0 R >> endobj 1608 0 obj <> /Contents 1609 0 R >> endobj 1613 0 obj <> /Contents 1614 0 R >> endobj 1618 0 obj <> /Contents 1619 0 R >> endobj 1623 0 obj <> /Contents 1624 0 R >> endobj 1628 0 obj <> /Contents 1629 0 R >> endobj 1633 0 obj <> /Contents 1634 0 R >> endobj 1638 0 obj <> /Contents 1639 0 R >> endobj 1643 0 obj <> /Contents 1644 0 R >> endobj 1648 0 obj <> /Contents 1649 0 R >> endobj 1653 0 obj <> /Contents 1654 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 5 0 R 13 0 R 18 0 R 23 0 R 28 0 R 33 0 R 38 0 R 43 0 R 48 0 R 53 0 R 58 0 R 63 0 R 68 0 R 73 0 R 78 0 R 83 0 R 88 0 R 93 0 R 98 0 R 103 0 R 108 0 R 113 0 R 118 0 R 123 0 R 128 0 R 133 0 R 138 0 R 143 0 R 148 0 R 153 0 R 158 0 R 163 0 R 168 0 R 173 0 R 178 0 R 183 0 R 188 0 R 193 0 R 198 0 R 203 0 R 208 0 R 213 0 R 218 0 R 223 0 R 228 0 R 233 0 R 238 0 R 243 0 R 248 0 R 253 0 R 258 0 R 263 0 R 268 0 R 273 0 R 278 0 R 283 0 R 288 0 R 293 0 R 298 0 R 303 0 R 308 0 R 313 0 R 318 0 R 323 0 R 328 0 R 333 0 R 338 0 R 343 0 R 348 0 R 353 0 R 358 0 R 363 0 R 368 0 R 373 0 R 378 0 R 383 0 R 388 0 R 393 0 R 398 0 R 403 0 R 408 0 R 413 0 R 418 0 R 423 0 R 428 0 R 433 0 R 438 0 R 443 0 R 448 0 R 453 0 R 458 0 R 463 0 R 468 0 R 473 0 R 478 0 R 483 0 R 488 0 R 493 0 R 498 0 R 503 0 R 508 0 R 513 0 R 518 0 R 523 0 R 528 0 R 533 0 R 538 0 R 543 0 R 548 0 R 553 0 R 558 0 R 563 0 R 568 0 R 573 0 R 578 0 R 583 0 R 588 0 R 593 0 R 598 0 R 603 0 R 608 0 R 613 0 R 618 0 R 623 0 R 628 0 R 633 0 R 638 0 R 643 0 R 648 0 R 653 0 R 658 0 R 663 0 R 668 0 R 673 0 R 678 0 R 683 0 R 688 0 R 693 0 R 698 0 R 703 0 R 708 0 R 713 0 R 718 0 R 723 0 R 728 0 R 733 0 R 738 0 R 743 0 R 748 0 R 753 0 R 758 0 R 763 0 R 768 0 R 773 0 R 778 0 R 783 0 R 788 0 R 793 0 R 798 0 R 803 0 R 808 0 R 813 0 R 818 0 R 823 0 R 828 0 R 833 0 R 838 0 R 843 0 R 848 0 R 853 0 R 858 0 R 863 0 R 868 0 R 873 0 R 878 0 R 883 0 R 888 0 R 893 0 R 898 0 R 903 0 R 908 0 R 913 0 R 918 0 R 923 0 R 928 0 R 933 0 R 938 0 R 943 0 R 948 0 R 953 0 R 958 0 R 963 0 R 968 0 R 973 0 R 978 0 R 983 0 R 988 0 R 993 0 R 998 0 R 1003 0 R 1008 0 R 1013 0 R 1018 0 R 1023 0 R 1028 0 R 1033 0 R 1038 0 R 1043 0 R 1048 0 R 1053 0 R 1058 0 R 1063 0 R 1068 0 R 1073 0 R 1078 0 R 1083 0 R 1088 0 R 1093 0 R 1098 0 R 1103 0 R 1108 0 R 1113 0 R 1118 0 R 1123 0 R 1128 0 R 1133 0 R 1138 0 R 1143 0 R 1148 0 R 1153 0 R 1158 0 R 1163 0 R 1168 0 R 1173 0 R 1178 0 R 1183 0 R 1188 0 R 1193 0 R 1198 0 R 1203 0 R 1208 0 R 1213 0 R 1218 0 R 1223 0 R 1228 0 R 1233 0 R 1238 0 R 1243 0 R 1248 0 R 1253 0 R 1258 0 R 1263 0 R 1268 0 R 1273 0 R 1278 0 R 1283 0 R 1288 0 R 1293 0 R 1298 0 R 1303 0 R 1308 0 R 1313 0 R 1318 0 R 1323 0 R 1328 0 R 1333 0 R 1338 0 R 1343 0 R 1348 0 R 1353 0 R 1358 0 R 1363 0 R 1368 0 R 1373 0 R 1378 0 R 1383 0 R 1388 0 R 1393 0 R 1398 0 R 1403 0 R 1408 0 R 1413 0 R 1418 0 R 1423 0 R 1428 0 R 1433 0 R 1438 0 R 1443 0 R 1448 0 R 1453 0 R 1458 0 R 1463 0 R 1468 0 R 1473 0 R 1478 0 R 1483 0 R 1488 0 R 1493 0 R 1498 0 R 1503 0 R 1508 0 R 1513 0 R 1518 0 R 1523 0 R 1528 0 R 1533 0 R 1538 0 R 1543 0 R 1548 0 R 1553 0 R 1558 0 R 1563 0 R 1568 0 R 1573 0 R 1578 0 R 1583 0 R 1588 0 R 1593 0 R 1598 0 R 1603 0 R 1608 0 R 1613 0 R 1618 0 R 1623 0 R 1628 0 R 1633 0 R 1638 0 R 1643 0 R 1648 0 R 1653 0 R ] /Count 330 >> endobj 1 0 obj <> endobj 4 0 obj <> endobj 10 0 obj <> endobj 11 0 obj <> endobj 16 0 obj <> endobj 21 0 obj <> endobj 26 0 obj <> endobj 31 0 obj <> endobj 36 0 obj <> endobj 41 0 obj <> endobj 46 0 obj <> endobj 51 0 obj <> endobj 56 0 obj <> endobj 61 0 obj <> endobj 66 0 obj <> endobj 71 0 obj <> endobj 76 0 obj <> endobj 81 0 obj <> endobj 86 0 obj <> endobj 91 0 obj <> endobj 96 0 obj <> endobj 101 0 obj <> endobj 106 0 obj <> endobj 111 0 obj <> endobj 116 0 obj <> endobj 121 0 obj <> endobj 126 0 obj <> endobj 131 0 obj <> endobj 136 0 obj <> endobj 141 0 obj <> endobj 146 0 obj <> endobj 151 0 obj <> endobj 156 0 obj <> endobj 161 0 obj <> endobj 166 0 obj <> endobj 171 0 obj <> endobj 176 0 obj <> endobj 181 0 obj <> endobj 186 0 obj <> endobj 191 0 obj <> endobj 196 0 obj <> endobj 201 0 obj <> endobj 206 0 obj <> endobj 211 0 obj <> endobj 216 0 obj <> endobj 221 0 obj <> endobj 226 0 obj <> endobj 231 0 obj <> endobj 236 0 obj <> endobj 241 0 obj <> endobj 246 0 obj <> endobj 251 0 obj <> endobj 256 0 obj <> endobj 261 0 obj <> endobj 266 0 obj <> endobj 271 0 obj <> endobj 276 0 obj <> endobj 281 0 obj <> endobj 286 0 obj <> endobj 291 0 obj <> endobj 296 0 obj <> endobj 301 0 obj <> endobj 306 0 obj <> endobj 311 0 obj <> endobj 316 0 obj <> endobj 321 0 obj <> endobj 326 0 obj <> endobj 331 0 obj <> endobj 336 0 obj <> endobj 341 0 obj <> endobj 346 0 obj <> endobj 351 0 obj <> endobj 356 0 obj <> endobj 361 0 obj <> endobj 366 0 obj <> endobj 371 0 obj <> endobj 376 0 obj <> endobj 381 0 obj <> endobj 386 0 obj <> endobj 391 0 obj <> endobj 396 0 obj <> endobj 401 0 obj <> endobj 406 0 obj <> endobj 411 0 obj <> endobj 416 0 obj <> endobj 421 0 obj <> endobj 426 0 obj <> endobj 431 0 obj <> endobj 436 0 obj <> endobj 441 0 obj <> endobj 446 0 obj <> endobj 451 0 obj <> endobj 456 0 obj <> endobj 461 0 obj <> endobj 466 0 obj <> endobj 471 0 obj <> endobj 476 0 obj <> endobj 481 0 obj <> endobj 486 0 obj <> endobj 491 0 obj <> endobj 496 0 obj <> endobj 501 0 obj <> endobj 506 0 obj <> endobj 511 0 obj <> endobj 516 0 obj <> endobj 521 0 obj <> endobj 526 0 obj <> endobj 531 0 obj <> endobj 536 0 obj <> endobj 541 0 obj <> endobj 546 0 obj <> endobj 551 0 obj <> endobj 556 0 obj <> endobj 561 0 obj <> endobj 566 0 obj <> endobj 571 0 obj <> endobj 576 0 obj <> endobj 581 0 obj <> endobj 586 0 obj <> endobj 591 0 obj <> endobj 596 0 obj <> endobj 601 0 obj <> endobj 606 0 obj <> endobj 611 0 obj <> endobj 616 0 obj <> endobj 621 0 obj <> endobj 626 0 obj <> endobj 631 0 obj <> endobj 636 0 obj <> endobj 641 0 obj <> endobj 646 0 obj <> endobj 651 0 obj <> endobj 656 0 obj <> endobj 661 0 obj <> endobj 666 0 obj <> endobj 671 0 obj <> endobj 676 0 obj <> endobj 681 0 obj <> endobj 686 0 obj <> endobj 691 0 obj <> endobj 696 0 obj <> endobj 701 0 obj <> endobj 706 0 obj <> endobj 711 0 obj <> endobj 716 0 obj <> endobj 721 0 obj <> endobj 726 0 obj <> endobj 731 0 obj <> endobj 736 0 obj <> endobj 741 0 obj <> endobj 746 0 obj <> endobj 751 0 obj <> endobj 756 0 obj <> endobj 761 0 obj <> endobj 766 0 obj <> endobj 771 0 obj <> endobj 776 0 obj <> endobj 781 0 obj <> endobj 786 0 obj <> endobj 791 0 obj <> endobj 796 0 obj <> endobj 801 0 obj <> endobj 806 0 obj <> endobj 811 0 obj <> endobj 816 0 obj <> endobj 821 0 obj <> endobj 826 0 obj <> endobj 831 0 obj <> endobj 836 0 obj <> endobj 841 0 obj <> endobj 846 0 obj <> endobj 851 0 obj <> endobj 856 0 obj <> endobj 861 0 obj <> endobj 866 0 obj <> endobj 871 0 obj <> endobj 876 0 obj <> endobj 881 0 obj <> endobj 886 0 obj <> endobj 891 0 obj <> endobj 896 0 obj <> endobj 901 0 obj <> endobj 906 0 obj <> endobj 911 0 obj <> endobj 916 0 obj <> endobj 921 0 obj <> endobj 926 0 obj <> endobj 931 0 obj <> endobj 936 0 obj <> endobj 941 0 obj <> endobj 946 0 obj <> endobj 951 0 obj <> endobj 956 0 obj <> endobj 961 0 obj <> endobj 966 0 obj <> endobj 971 0 obj <> endobj 976 0 obj <> endobj 981 0 obj <> endobj 986 0 obj <> endobj 991 0 obj <> endobj 996 0 obj <> endobj 1001 0 obj <> endobj 1006 0 obj <> endobj 1011 0 obj <> endobj 1016 0 obj <> endobj 1021 0 obj <> endobj 1026 0 obj <> endobj 1031 0 obj <> endobj 1036 0 obj <> endobj 1041 0 obj <> endobj 1046 0 obj <> endobj 1051 0 obj <> endobj 1056 0 obj <> endobj 1061 0 obj <> endobj 1066 0 obj <> endobj 1071 0 obj <> endobj 1076 0 obj <> endobj 1081 0 obj <> endobj 1086 0 obj <> endobj 1091 0 obj <> endobj 1096 0 obj <> endobj 1101 0 obj <> endobj 1106 0 obj <> endobj 1111 0 obj <> endobj 1116 0 obj <> endobj 1121 0 obj <> endobj 1126 0 obj <> endobj 1131 0 obj <> endobj 1136 0 obj <> endobj 1141 0 obj <> endobj 1146 0 obj <> endobj 1151 0 obj <> endobj 1156 0 obj <> endobj 1161 0 obj <> endobj 1166 0 obj <> endobj 1171 0 obj <> endobj 1176 0 obj <> endobj 1181 0 obj <> endobj 1186 0 obj <> endobj 1191 0 obj <> endobj 1196 0 obj <> endobj 1201 0 obj <> endobj 1206 0 obj <> endobj 1211 0 obj <> endobj 1216 0 obj <> endobj 1221 0 obj <> endobj 1226 0 obj <> endobj 1231 0 obj <> endobj 1236 0 obj <> endobj 1241 0 obj <> endobj 1246 0 obj <> endobj 1251 0 obj <> endobj 1256 0 obj <> endobj 1261 0 obj <> endobj 1266 0 obj <> endobj 1271 0 obj <> endobj 1276 0 obj <> endobj 1281 0 obj <> endobj 1286 0 obj <> endobj 1291 0 obj <> endobj 1296 0 obj <> endobj 1301 0 obj <> endobj 1306 0 obj <> endobj 1311 0 obj <> endobj 1316 0 obj <> endobj 1321 0 obj <> endobj 1326 0 obj <> endobj 1331 0 obj <> endobj 1336 0 obj <> endobj 1341 0 obj <> endobj 1346 0 obj <> endobj 1351 0 obj <> endobj 1356 0 obj <> endobj 1361 0 obj <> endobj 1366 0 obj <> endobj 1371 0 obj <> endobj 1376 0 obj <> endobj 1381 0 obj <> endobj 1386 0 obj <> endobj 1391 0 obj <> endobj 1396 0 obj <> endobj 1401 0 obj <> endobj 1406 0 obj <> endobj 1411 0 obj <> endobj 1416 0 obj <> endobj 1421 0 obj <> endobj 1426 0 obj <> endobj 1431 0 obj <> endobj 1436 0 obj <> endobj 1441 0 obj <> endobj 1446 0 obj <> endobj 1451 0 obj <> endobj 1456 0 obj <> endobj 1461 0 obj <> endobj 1466 0 obj <> endobj 1471 0 obj <> endobj 1476 0 obj <> endobj 1481 0 obj <> endobj 1486 0 obj <> endobj 1491 0 obj <> endobj 1496 0 obj <> endobj 1501 0 obj <> endobj 1506 0 obj <> endobj 1511 0 obj <> endobj 1516 0 obj <> endobj 1521 0 obj <> endobj 1526 0 obj <> endobj 1531 0 obj <> endobj 1536 0 obj <> endobj 1541 0 obj <> endobj 1546 0 obj <> endobj 1551 0 obj <> endobj 1556 0 obj <> endobj 1561 0 obj <> endobj 1566 0 obj <> endobj 1571 0 obj <> endobj 1576 0 obj <> endobj 1581 0 obj <> endobj 1586 0 obj <> endobj 1591 0 obj <> endobj 1596 0 obj <> endobj 1601 0 obj <> endobj 1606 0 obj <> endobj 1611 0 obj <> endobj 1616 0 obj <> endobj 1621 0 obj <> endobj 1626 0 obj <> endobj 1631 0 obj <> endobj 1636 0 obj <> endobj 1641 0 obj <> endobj 1646 0 obj <> endobj 1651 0 obj <> endobj 1656 0 obj <> endobj 8 0 obj <> endobj 1652 0 obj <> endobj 1657 0 obj <> endobj 1647 0 obj <> endobj 1658 0 obj <> endobj 1642 0 obj <> endobj 1659 0 obj <> endobj 1637 0 obj <> endobj 1660 0 obj <> endobj 1632 0 obj <> endobj 1661 0 obj <> endobj 1627 0 obj <> endobj 1662 0 obj <> endobj 1622 0 obj <> endobj 1663 0 obj <> endobj 1617 0 obj <> endobj 1664 0 obj <> endobj 1612 0 obj <> endobj 1665 0 obj <> endobj 1607 0 obj <> endobj 1666 0 obj <> endobj 1602 0 obj <> endobj 1667 0 obj <> endobj 1597 0 obj <> endobj 1668 0 obj <> endobj 1592 0 obj <> endobj 1669 0 obj <> endobj 1587 0 obj <> endobj 1670 0 obj <> endobj 1582 0 obj <> endobj 1671 0 obj <> endobj 1577 0 obj <> endobj 1672 0 obj <> endobj 1572 0 obj <> endobj 1673 0 obj <> endobj 1567 0 obj <> endobj 1674 0 obj <> endobj 1562 0 obj <> endobj 1675 0 obj <> endobj 1557 0 obj <> endobj 1676 0 obj <> endobj 1552 0 obj <> endobj 1677 0 obj <> endobj 1547 0 obj <> endobj 1678 0 obj <> endobj 1542 0 obj <> endobj 1679 0 obj <> endobj 1537 0 obj <> endobj 1680 0 obj <> endobj 1532 0 obj <> endobj 1681 0 obj <> endobj 1527 0 obj <> endobj 1682 0 obj <> endobj 1522 0 obj <> endobj 1683 0 obj <> endobj 1517 0 obj <> endobj 1684 0 obj <> endobj 1512 0 obj <> endobj 1685 0 obj <> endobj 1507 0 obj <> endobj 1686 0 obj <> endobj 1502 0 obj <> endobj 1687 0 obj <> endobj 1497 0 obj <> endobj 1688 0 obj <> endobj 1492 0 obj <> endobj 1689 0 obj <> endobj 1487 0 obj <> endobj 1690 0 obj <> endobj 1482 0 obj <> endobj 1691 0 obj <> endobj 1477 0 obj <> endobj 1692 0 obj <> endobj 1472 0 obj <> endobj 1693 0 obj <> endobj 1467 0 obj <> endobj 1694 0 obj <> endobj 1462 0 obj <> endobj 1695 0 obj <> endobj 1457 0 obj <> endobj 1696 0 obj <> endobj 1452 0 obj <> endobj 1697 0 obj <> endobj 1447 0 obj <> endobj 1698 0 obj <> endobj 1442 0 obj <> endobj 1699 0 obj <> endobj 1437 0 obj <> endobj 1700 0 obj <> endobj 1432 0 obj <> endobj 1701 0 obj <> endobj 1427 0 obj <> endobj 1702 0 obj <> endobj 1422 0 obj <> endobj 1703 0 obj <> endobj 1417 0 obj <> endobj 1704 0 obj <> endobj 1412 0 obj <> endobj 1705 0 obj <> endobj 1407 0 obj <> endobj 1706 0 obj <> endobj 1402 0 obj <> endobj 1397 0 obj <> endobj 1707 0 obj <> endobj 1392 0 obj <> endobj 1387 0 obj <> endobj 1708 0 obj <> endobj 1382 0 obj <> endobj 1377 0 obj <> endobj 1709 0 obj <> endobj 1372 0 obj <> endobj 1367 0 obj <> endobj 1710 0 obj <> endobj 1362 0 obj <> endobj 1711 0 obj <> endobj 1357 0 obj <> endobj 1712 0 obj <> endobj 1352 0 obj <> endobj 1713 0 obj <> endobj 1347 0 obj <> endobj 1714 0 obj <> endobj 1342 0 obj <> endobj 1715 0 obj <> endobj 1337 0 obj <> endobj 1716 0 obj <> endobj 1332 0 obj <> endobj 1717 0 obj <> endobj 1327 0 obj <> endobj 1718 0 obj <> endobj 1322 0 obj <> endobj 1719 0 obj <> endobj 1317 0 obj <> endobj 1720 0 obj <> endobj 1312 0 obj <> endobj 1721 0 obj <> endobj 1307 0 obj <> endobj 1722 0 obj <> endobj 1302 0 obj <> endobj 1723 0 obj <> endobj 1297 0 obj <> endobj 1724 0 obj <> endobj 1292 0 obj <> endobj 1725 0 obj <> endobj 1287 0 obj <> endobj 1726 0 obj <> endobj 1282 0 obj <> endobj 1727 0 obj <> endobj 1277 0 obj <> endobj 1728 0 obj <> endobj 1272 0 obj <> endobj 1729 0 obj <> endobj 1267 0 obj <> endobj 1730 0 obj <> endobj 1262 0 obj <> endobj 1731 0 obj <> endobj 1257 0 obj <> endobj 1732 0 obj <> endobj 1252 0 obj <> endobj 1733 0 obj <> endobj 1247 0 obj <> endobj 1734 0 obj <> endobj 1242 0 obj <> endobj 1735 0 obj <> endobj 1237 0 obj <> endobj 1736 0 obj <> endobj 1232 0 obj <> endobj 1227 0 obj <> endobj 1737 0 obj <> endobj 1222 0 obj <> endobj 1217 0 obj <> endobj 1738 0 obj <> endobj 1212 0 obj <> endobj 1739 0 obj <> endobj 1207 0 obj <> endobj 1740 0 obj <> endobj 1202 0 obj <> endobj 1741 0 obj <> endobj 1197 0 obj <> endobj 1742 0 obj <> endobj 1192 0 obj <> endobj 1743 0 obj <> endobj 1187 0 obj <> endobj 1744 0 obj <> endobj 1182 0 obj <> endobj 1745 0 obj <> endobj 1177 0 obj <> endobj 1746 0 obj <> endobj 1172 0 obj <> endobj 1747 0 obj <> endobj 1167 0 obj <> endobj 1748 0 obj <> endobj 1162 0 obj <> endobj 1749 0 obj <> endobj 1157 0 obj <> endobj 1750 0 obj <> endobj 1152 0 obj <> endobj 1751 0 obj <> endobj 1147 0 obj <> endobj 1752 0 obj <> endobj 1142 0 obj <> endobj 1753 0 obj <> endobj 1137 0 obj <> endobj 1754 0 obj <> endobj 1132 0 obj <> endobj 1755 0 obj <> endobj 1127 0 obj <> endobj 1756 0 obj <> endobj 1122 0 obj <> endobj 1757 0 obj <> endobj 1117 0 obj <> endobj 1758 0 obj <> endobj 1112 0 obj <> endobj 1759 0 obj <> endobj 1107 0 obj <> endobj 1760 0 obj <> endobj 1102 0 obj <> endobj 1097 0 obj <> endobj 1761 0 obj <> endobj 1092 0 obj <> endobj 1762 0 obj <> endobj 1087 0 obj <> endobj 1763 0 obj <> endobj 1082 0 obj <> endobj 1764 0 obj <> endobj 1077 0 obj <> endobj 1765 0 obj <> endobj 1072 0 obj <> endobj 1766 0 obj <> endobj 1067 0 obj <> endobj 1767 0 obj <> endobj 1062 0 obj <> endobj 1057 0 obj <> endobj 1768 0 obj <> endobj 1052 0 obj <> endobj 1769 0 obj <> endobj 1047 0 obj <> endobj 1770 0 obj <> endobj 1042 0 obj <> endobj 1771 0 obj <> endobj 1037 0 obj <> endobj 1772 0 obj <> endobj 1032 0 obj <> endobj 1773 0 obj <> endobj 1027 0 obj <> endobj 1774 0 obj <> endobj 1022 0 obj <> endobj 1775 0 obj <> endobj 1017 0 obj <> endobj 1776 0 obj <> endobj 1012 0 obj <> endobj 1777 0 obj <> endobj 1007 0 obj <> endobj 1778 0 obj <> endobj 1002 0 obj <> endobj 1779 0 obj <> endobj 997 0 obj <> endobj 1780 0 obj <> endobj 992 0 obj <> endobj 987 0 obj <> endobj 1781 0 obj <> endobj 982 0 obj <> endobj 1782 0 obj <> endobj 977 0 obj <> endobj 1783 0 obj <> endobj 972 0 obj <> endobj 1784 0 obj <> endobj 967 0 obj <> endobj 1785 0 obj <> endobj 962 0 obj <> endobj 1786 0 obj <> endobj 957 0 obj <> endobj 1787 0 obj <> endobj 952 0 obj <> endobj 1788 0 obj <> endobj 947 0 obj <> endobj 1789 0 obj <> endobj 942 0 obj <> endobj 1790 0 obj <> endobj 937 0 obj <> endobj 1791 0 obj <> endobj 932 0 obj <> endobj 1792 0 obj <> endobj 927 0 obj <> endobj 1793 0 obj <> endobj 922 0 obj <> endobj 1794 0 obj <> endobj 917 0 obj <> endobj 1795 0 obj <> endobj 912 0 obj <> endobj 1796 0 obj <> endobj 907 0 obj <> endobj 1797 0 obj <> endobj 902 0 obj <> endobj 1798 0 obj <> endobj 897 0 obj <> endobj 1799 0 obj <> endobj 892 0 obj <> endobj 1800 0 obj <> endobj 887 0 obj <> endobj 1801 0 obj <> endobj 882 0 obj <> endobj 1802 0 obj <> endobj 877 0 obj <> endobj 1803 0 obj <> endobj 872 0 obj <> endobj 1804 0 obj <> endobj 867 0 obj <> endobj 1805 0 obj <> endobj 862 0 obj <> endobj 1806 0 obj <> endobj 857 0 obj <> endobj 1807 0 obj <> endobj 852 0 obj <> endobj 847 0 obj <> endobj 1808 0 obj <> endobj 842 0 obj <> endobj 1809 0 obj <> endobj 837 0 obj <> endobj 1810 0 obj <> endobj 832 0 obj <> endobj 827 0 obj <> endobj 1811 0 obj <> endobj 822 0 obj <> endobj 1812 0 obj <> endobj 817 0 obj <> endobj 1813 0 obj <> endobj 812 0 obj <> endobj 1814 0 obj <> endobj 807 0 obj <> endobj 1815 0 obj <> endobj 802 0 obj <> endobj 1816 0 obj <> endobj 797 0 obj <> endobj 1817 0 obj <> endobj 792 0 obj <> endobj 787 0 obj <> endobj 1818 0 obj <> endobj 782 0 obj <> endobj 1819 0 obj <> endobj 777 0 obj <> endobj 1820 0 obj <> endobj 772 0 obj <> endobj 1821 0 obj <> endobj 767 0 obj <> endobj 1822 0 obj <> endobj 762 0 obj <> endobj 1823 0 obj <> endobj 757 0 obj <> endobj 1824 0 obj <> endobj 752 0 obj <> endobj 1825 0 obj <> endobj 747 0 obj <> endobj 1826 0 obj <> endobj 742 0 obj <> endobj 1827 0 obj <> endobj 737 0 obj <> endobj 1828 0 obj <> endobj 732 0 obj <> endobj 1829 0 obj <> endobj 727 0 obj <> endobj 1830 0 obj <> endobj 722 0 obj <> endobj 1831 0 obj <> endobj 717 0 obj <> endobj 1832 0 obj <> endobj 712 0 obj <> endobj 1833 0 obj <> endobj 707 0 obj <> endobj 1834 0 obj <> endobj 702 0 obj <> endobj 1835 0 obj <> endobj 697 0 obj <> endobj 1836 0 obj <> endobj 692 0 obj <> endobj 1837 0 obj <> endobj 687 0 obj <> endobj 1838 0 obj <> endobj 682 0 obj <> endobj 1839 0 obj <> endobj 677 0 obj <> endobj 1840 0 obj <> endobj 672 0 obj <> endobj 1841 0 obj <> endobj 667 0 obj <> endobj 1842 0 obj <> endobj 662 0 obj <> endobj 1843 0 obj <> endobj 657 0 obj <> endobj 1844 0 obj <> endobj 652 0 obj <> endobj 1845 0 obj <> endobj 647 0 obj <> endobj 1846 0 obj <> endobj 642 0 obj <> endobj 1847 0 obj <> endobj 637 0 obj <> endobj 1848 0 obj <> endobj 632 0 obj <> endobj 1849 0 obj <> endobj 627 0 obj <> endobj 1850 0 obj <> endobj 622 0 obj <> endobj 1851 0 obj <> endobj 617 0 obj <> endobj 1852 0 obj <> endobj 612 0 obj <> endobj 1853 0 obj <> endobj 607 0 obj <> endobj 1854 0 obj <> endobj 602 0 obj <> endobj 1855 0 obj <> endobj 597 0 obj <> endobj 1856 0 obj <> endobj 592 0 obj <> endobj 1857 0 obj <> endobj 587 0 obj <> endobj 1858 0 obj <> endobj 582 0 obj <> endobj 1859 0 obj <> endobj 577 0 obj <> endobj 1860 0 obj <> endobj 572 0 obj <> endobj 1861 0 obj <> endobj 567 0 obj <> endobj 1862 0 obj <> endobj 562 0 obj <> endobj 1863 0 obj <> endobj 557 0 obj <> endobj 1864 0 obj <> endobj 552 0 obj <> endobj 1865 0 obj <> endobj 547 0 obj <> endobj 1866 0 obj <> endobj 542 0 obj <> endobj 1867 0 obj <> endobj 537 0 obj <> endobj 1868 0 obj <> endobj 532 0 obj <> endobj 1869 0 obj <> endobj 527 0 obj <> endobj 1870 0 obj <> endobj 522 0 obj <> endobj 1871 0 obj <> endobj 517 0 obj <> endobj 1872 0 obj <> endobj 512 0 obj <> endobj 1873 0 obj <> endobj 507 0 obj <> endobj 502 0 obj <> endobj 1874 0 obj <> endobj 497 0 obj <> endobj 1875 0 obj <> endobj 492 0 obj <> endobj 1876 0 obj <> endobj 487 0 obj <> endobj 1877 0 obj <> endobj 482 0 obj <> endobj 1878 0 obj <> endobj 477 0 obj <> endobj 1879 0 obj <> endobj 472 0 obj <> endobj 1880 0 obj <> endobj 467 0 obj <> endobj 462 0 obj <> endobj 1881 0 obj <> endobj 457 0 obj <> endobj 452 0 obj <> endobj 1882 0 obj <> endobj 447 0 obj <> endobj 1883 0 obj <> endobj 442 0 obj <> endobj 437 0 obj <> endobj 1884 0 obj <> endobj 432 0 obj <> endobj 427 0 obj <> endobj 1885 0 obj <> endobj 422 0 obj <> endobj 1886 0 obj <> endobj 417 0 obj <> endobj 1887 0 obj <> endobj 412 0 obj <> endobj 407 0 obj <> endobj 1888 0 obj <> endobj 402 0 obj <> endobj 1889 0 obj <> endobj 397 0 obj <> endobj 1890 0 obj <> endobj 392 0 obj <> endobj 1891 0 obj <> endobj 387 0 obj <> endobj 382 0 obj <> endobj 1892 0 obj <> endobj 377 0 obj <> endobj 1893 0 obj <> endobj 372 0 obj <> endobj 367 0 obj <> endobj 1894 0 obj <> endobj 362 0 obj <> endobj 1895 0 obj <> endobj 357 0 obj <> endobj 1896 0 obj <> endobj 352 0 obj <> endobj 1897 0 obj <> endobj 347 0 obj <> endobj 1898 0 obj <> endobj 342 0 obj <> endobj 1899 0 obj <> endobj 337 0 obj <> endobj 1900 0 obj <> endobj 332 0 obj <> endobj 1901 0 obj <> endobj 327 0 obj <> endobj 1902 0 obj <> endobj 322 0 obj <> endobj 1903 0 obj <> endobj 317 0 obj <> endobj 1904 0 obj <> endobj 312 0 obj <> endobj 1905 0 obj <> endobj 307 0 obj <> endobj 1906 0 obj <> endobj 302 0 obj <> endobj 1907 0 obj <> endobj 297 0 obj <> endobj 1908 0 obj <> endobj 292 0 obj <> endobj 1909 0 obj <> endobj 287 0 obj <> endobj 1910 0 obj <> endobj 282 0 obj <> endobj 1911 0 obj <> endobj 277 0 obj <> endobj 1912 0 obj <> endobj 272 0 obj <> endobj 1913 0 obj <> endobj 267 0 obj <> endobj 1914 0 obj <> endobj 262 0 obj <> endobj 1915 0 obj <> endobj 257 0 obj <> endobj 1916 0 obj <> endobj 252 0 obj <> endobj 1917 0 obj <> endobj 247 0 obj <> endobj 1918 0 obj <> endobj 242 0 obj <> endobj 1919 0 obj <> endobj 237 0 obj <> endobj 1920 0 obj <> endobj 232 0 obj <> endobj 1921 0 obj <> endobj 227 0 obj <> endobj 1922 0 obj <> endobj 222 0 obj <> endobj 1923 0 obj <> endobj 217 0 obj <> endobj 1924 0 obj <> endobj 212 0 obj <> endobj 1925 0 obj <> endobj 207 0 obj <> endobj 1926 0 obj <> endobj 202 0 obj <> endobj 1927 0 obj <> endobj 197 0 obj <> endobj 1928 0 obj <> endobj 192 0 obj <> endobj 1929 0 obj <> endobj 187 0 obj <> endobj 1930 0 obj <> endobj 182 0 obj <> endobj 1931 0 obj <> endobj 177 0 obj <> endobj 1932 0 obj <> endobj 172 0 obj <> endobj 1933 0 obj <> endobj 167 0 obj <> endobj 1934 0 obj <> endobj 162 0 obj <> endobj 1935 0 obj <> endobj 157 0 obj <> endobj 1936 0 obj <> endobj 152 0 obj <> endobj 1937 0 obj <> endobj 147 0 obj <> endobj 1938 0 obj <> endobj 142 0 obj <> endobj 1939 0 obj <> endobj 137 0 obj <> endobj 1940 0 obj <> endobj 132 0 obj <> endobj 1941 0 obj <> endobj 127 0 obj <> endobj 1942 0 obj <> endobj 122 0 obj <> endobj 1943 0 obj <> endobj 117 0 obj <> endobj 1944 0 obj <> endobj 112 0 obj <> endobj 1945 0 obj <> endobj 107 0 obj <> endobj 1946 0 obj <> endobj 102 0 obj <> endobj 97 0 obj <> endobj 92 0 obj <> endobj 1947 0 obj <> endobj 87 0 obj <> endobj 1948 0 obj <> endobj 82 0 obj <> endobj 1949 0 obj <> endobj 77 0 obj <> endobj 72 0 obj <> endobj 67 0 obj <> endobj 62 0 obj <> endobj 57 0 obj <> endobj 52 0 obj <> endobj 47 0 obj <> endobj 42 0 obj <> endobj 1950 0 obj <> endobj 37 0 obj <> endobj 1951 0 obj <> endobj 32 0 obj <> endobj 1952 0 obj <> endobj 27 0 obj <> endobj 1953 0 obj <> endobj 22 0 obj <> endobj 1954 0 obj <> endobj 17 0 obj <> endobj 1955 0 obj <> endobj 12 0 obj <> endobj 1956 0 obj <> endobj 9 0 obj <> endobj 2 0 obj <>endobj xref 0 1957 0000000000 65535 f 0000372197 00000 n 0000431686 00000 n 0000369391 00000 n 0000372245 00000 n 0000320527 00000 n 0000000015 00000 n 0000000593 00000 n 0000384216 00000 n 0000431617 00000 n 0000372300 00000 n 0000372330 00000 n 0000431468 00000 n 0000320687 00000 n 0000000612 00000 n 0000001009 00000 n 0000372360 00000 n 0000431320 00000 n 0000320831 00000 n 0000001029 00000 n 0000002899 00000 n 0000372392 00000 n 0000431172 00000 n 0000320975 00000 n 0000002920 00000 n 0000004757 00000 n 0000372424 00000 n 0000431024 00000 n 0000321119 00000 n 0000004778 00000 n 0000006534 00000 n 0000372456 00000 n 0000430876 00000 n 0000321263 00000 n 0000006555 00000 n 0000008241 00000 n 0000372488 00000 n 0000430728 00000 n 0000321407 00000 n 0000008262 00000 n 0000009380 00000 n 0000372520 00000 n 0000430580 00000 n 0000321551 00000 n 0000009401 00000 n 0000010498 00000 n 0000372552 00000 n 0000430509 00000 n 0000321695 00000 n 0000010519 00000 n 0000011634 00000 n 0000372584 00000 n 0000430438 00000 n 0000321839 00000 n 0000011655 00000 n 0000012516 00000 n 0000372616 00000 n 0000430367 00000 n 0000321983 00000 n 0000012536 00000 n 0000013522 00000 n 0000372648 00000 n 0000430296 00000 n 0000322127 00000 n 0000013542 00000 n 0000014520 00000 n 0000372680 00000 n 0000430225 00000 n 0000322271 00000 n 0000014540 00000 n 0000015438 00000 n 0000372712 00000 n 0000430154 00000 n 0000322415 00000 n 0000015458 00000 n 0000016411 00000 n 0000372744 00000 n 0000430083 00000 n 0000322559 00000 n 0000016431 00000 n 0000016693 00000 n 0000372776 00000 n 0000429935 00000 n 0000322703 00000 n 0000016713 00000 n 0000018491 00000 n 0000372808 00000 n 0000429787 00000 n 0000322847 00000 n 0000018512 00000 n 0000019576 00000 n 0000372840 00000 n 0000429639 00000 n 0000322991 00000 n 0000019596 00000 n 0000020554 00000 n 0000372872 00000 n 0000429568 00000 n 0000323135 00000 n 0000020574 00000 n 0000021401 00000 n 0000372904 00000 n 0000429495 00000 n 0000323280 00000 n 0000021422 00000 n 0000021773 00000 n 0000372937 00000 n 0000429345 00000 n 0000323427 00000 n 0000021794 00000 n 0000022798 00000 n 0000372972 00000 n 0000429195 00000 n 0000323574 00000 n 0000022819 00000 n 0000023815 00000 n 0000373007 00000 n 0000429045 00000 n 0000323721 00000 n 0000023836 00000 n 0000024919 00000 n 0000373042 00000 n 0000428895 00000 n 0000323868 00000 n 0000024941 00000 n 0000025661 00000 n 0000373077 00000 n 0000428745 00000 n 0000324015 00000 n 0000025682 00000 n 0000026107 00000 n 0000373112 00000 n 0000428595 00000 n 0000324162 00000 n 0000026128 00000 n 0000026558 00000 n 0000373147 00000 n 0000428445 00000 n 0000324309 00000 n 0000026579 00000 n 0000027930 00000 n 0000373182 00000 n 0000428295 00000 n 0000324456 00000 n 0000027952 00000 n 0000028779 00000 n 0000373217 00000 n 0000428145 00000 n 0000324603 00000 n 0000028800 00000 n 0000030135 00000 n 0000373252 00000 n 0000427995 00000 n 0000324750 00000 n 0000030157 00000 n 0000031040 00000 n 0000373287 00000 n 0000427845 00000 n 0000324897 00000 n 0000031061 00000 n 0000032438 00000 n 0000373322 00000 n 0000427695 00000 n 0000325044 00000 n 0000032460 00000 n 0000033491 00000 n 0000373357 00000 n 0000427545 00000 n 0000325191 00000 n 0000033512 00000 n 0000034882 00000 n 0000373392 00000 n 0000427395 00000 n 0000325338 00000 n 0000034904 00000 n 0000035944 00000 n 0000373427 00000 n 0000427245 00000 n 0000325485 00000 n 0000035965 00000 n 0000037332 00000 n 0000373462 00000 n 0000427095 00000 n 0000325632 00000 n 0000037354 00000 n 0000039033 00000 n 0000373497 00000 n 0000426945 00000 n 0000325779 00000 n 0000039055 00000 n 0000039520 00000 n 0000373532 00000 n 0000426795 00000 n 0000325926 00000 n 0000039541 00000 n 0000041083 00000 n 0000373567 00000 n 0000426645 00000 n 0000326073 00000 n 0000041105 00000 n 0000042868 00000 n 0000373602 00000 n 0000426495 00000 n 0000326220 00000 n 0000042890 00000 n 0000043780 00000 n 0000373637 00000 n 0000426345 00000 n 0000326367 00000 n 0000043801 00000 n 0000045148 00000 n 0000373672 00000 n 0000426195 00000 n 0000326514 00000 n 0000045170 00000 n 0000046401 00000 n 0000373707 00000 n 0000426045 00000 n 0000326661 00000 n 0000046423 00000 n 0000047793 00000 n 0000373742 00000 n 0000425895 00000 n 0000326808 00000 n 0000047815 00000 n 0000048827 00000 n 0000373777 00000 n 0000425745 00000 n 0000326955 00000 n 0000048848 00000 n 0000049856 00000 n 0000373812 00000 n 0000425595 00000 n 0000327102 00000 n 0000049877 00000 n 0000050513 00000 n 0000373847 00000 n 0000425445 00000 n 0000327249 00000 n 0000050534 00000 n 0000051541 00000 n 0000373882 00000 n 0000425295 00000 n 0000327396 00000 n 0000051562 00000 n 0000052593 00000 n 0000373917 00000 n 0000425145 00000 n 0000327543 00000 n 0000052614 00000 n 0000053996 00000 n 0000373952 00000 n 0000424995 00000 n 0000327690 00000 n 0000054018 00000 n 0000055085 00000 n 0000373987 00000 n 0000424845 00000 n 0000327837 00000 n 0000055106 00000 n 0000056506 00000 n 0000374022 00000 n 0000424695 00000 n 0000327984 00000 n 0000056528 00000 n 0000058220 00000 n 0000374057 00000 n 0000424545 00000 n 0000328131 00000 n 0000058242 00000 n 0000058931 00000 n 0000374092 00000 n 0000424395 00000 n 0000328278 00000 n 0000058952 00000 n 0000060471 00000 n 0000374127 00000 n 0000424245 00000 n 0000328425 00000 n 0000060493 00000 n 0000060962 00000 n 0000374162 00000 n 0000424095 00000 n 0000328572 00000 n 0000060983 00000 n 0000062371 00000 n 0000374197 00000 n 0000423945 00000 n 0000328719 00000 n 0000062393 00000 n 0000063923 00000 n 0000374232 00000 n 0000423795 00000 n 0000328866 00000 n 0000063945 00000 n 0000064854 00000 n 0000374267 00000 n 0000423645 00000 n 0000329013 00000 n 0000064875 00000 n 0000066238 00000 n 0000374302 00000 n 0000423495 00000 n 0000329160 00000 n 0000066260 00000 n 0000067755 00000 n 0000374337 00000 n 0000423345 00000 n 0000329307 00000 n 0000067777 00000 n 0000069718 00000 n 0000374372 00000 n 0000423195 00000 n 0000329454 00000 n 0000069740 00000 n 0000070182 00000 n 0000374407 00000 n 0000423045 00000 n 0000329601 00000 n 0000070203 00000 n 0000071772 00000 n 0000374442 00000 n 0000422895 00000 n 0000329748 00000 n 0000071794 00000 n 0000072046 00000 n 0000374477 00000 n 0000422745 00000 n 0000329895 00000 n 0000072067 00000 n 0000073336 00000 n 0000374512 00000 n 0000422595 00000 n 0000330042 00000 n 0000073358 00000 n 0000074827 00000 n 0000374547 00000 n 0000422445 00000 n 0000330189 00000 n 0000074849 00000 n 0000075682 00000 n 0000374582 00000 n 0000422295 00000 n 0000330336 00000 n 0000075703 00000 n 0000077221 00000 n 0000374617 00000 n 0000422145 00000 n 0000330483 00000 n 0000077243 00000 n 0000078972 00000 n 0000374652 00000 n 0000421995 00000 n 0000330630 00000 n 0000078994 00000 n 0000080517 00000 n 0000374687 00000 n 0000421845 00000 n 0000330777 00000 n 0000080539 00000 n 0000081457 00000 n 0000374722 00000 n 0000421695 00000 n 0000330924 00000 n 0000081478 00000 n 0000083115 00000 n 0000374757 00000 n 0000421545 00000 n 0000331071 00000 n 0000083137 00000 n 0000084978 00000 n 0000374792 00000 n 0000421472 00000 n 0000331218 00000 n 0000085000 00000 n 0000085204 00000 n 0000374827 00000 n 0000421322 00000 n 0000331365 00000 n 0000085225 00000 n 0000086860 00000 n 0000374862 00000 n 0000421172 00000 n 0000331512 00000 n 0000086882 00000 n 0000088725 00000 n 0000374897 00000 n 0000421099 00000 n 0000331659 00000 n 0000088747 00000 n 0000088918 00000 n 0000374932 00000 n 0000420949 00000 n 0000331806 00000 n 0000088938 00000 n 0000090586 00000 n 0000374967 00000 n 0000420799 00000 n 0000331953 00000 n 0000090608 00000 n 0000091212 00000 n 0000375002 00000 n 0000420649 00000 n 0000332100 00000 n 0000091233 00000 n 0000092289 00000 n 0000375037 00000 n 0000420499 00000 n 0000332247 00000 n 0000092310 00000 n 0000093593 00000 n 0000375072 00000 n 0000420426 00000 n 0000332394 00000 n 0000093615 00000 n 0000093883 00000 n 0000375107 00000 n 0000420276 00000 n 0000332541 00000 n 0000093904 00000 n 0000095085 00000 n 0000375142 00000 n 0000420126 00000 n 0000332688 00000 n 0000095107 00000 n 0000095888 00000 n 0000375177 00000 n 0000419976 00000 n 0000332835 00000 n 0000095909 00000 n 0000097267 00000 n 0000375212 00000 n 0000419903 00000 n 0000332982 00000 n 0000097289 00000 n 0000097502 00000 n 0000375247 00000 n 0000419753 00000 n 0000333129 00000 n 0000097523 00000 n 0000098870 00000 n 0000375282 00000 n 0000419680 00000 n 0000333276 00000 n 0000098892 00000 n 0000099105 00000 n 0000375317 00000 n 0000419530 00000 n 0000333423 00000 n 0000099126 00000 n 0000100365 00000 n 0000375352 00000 n 0000419380 00000 n 0000333570 00000 n 0000100387 00000 n 0000101785 00000 n 0000375387 00000 n 0000419307 00000 n 0000333717 00000 n 0000101807 00000 n 0000102114 00000 n 0000375422 00000 n 0000419157 00000 n 0000333864 00000 n 0000102135 00000 n 0000103448 00000 n 0000375457 00000 n 0000419084 00000 n 0000334011 00000 n 0000103470 00000 n 0000103623 00000 n 0000375492 00000 n 0000418934 00000 n 0000334158 00000 n 0000103643 00000 n 0000104554 00000 n 0000375527 00000 n 0000418784 00000 n 0000334305 00000 n 0000104575 00000 n 0000105111 00000 n 0000375562 00000 n 0000418634 00000 n 0000334452 00000 n 0000105132 00000 n 0000106535 00000 n 0000375597 00000 n 0000418484 00000 n 0000334599 00000 n 0000106557 00000 n 0000106889 00000 n 0000375632 00000 n 0000418334 00000 n 0000334746 00000 n 0000106910 00000 n 0000108287 00000 n 0000375667 00000 n 0000418184 00000 n 0000334893 00000 n 0000108309 00000 n 0000108624 00000 n 0000375702 00000 n 0000418034 00000 n 0000335040 00000 n 0000108645 00000 n 0000110028 00000 n 0000375737 00000 n 0000417961 00000 n 0000335187 00000 n 0000110050 00000 n 0000110323 00000 n 0000375772 00000 n 0000417811 00000 n 0000335334 00000 n 0000110344 00000 n 0000111419 00000 n 0000375807 00000 n 0000417661 00000 n 0000335481 00000 n 0000111441 00000 n 0000112541 00000 n 0000375842 00000 n 0000417511 00000 n 0000335628 00000 n 0000112563 00000 n 0000114046 00000 n 0000375877 00000 n 0000417361 00000 n 0000335775 00000 n 0000114068 00000 n 0000114574 00000 n 0000375912 00000 n 0000417211 00000 n 0000335922 00000 n 0000114595 00000 n 0000115969 00000 n 0000375947 00000 n 0000417061 00000 n 0000336069 00000 n 0000115991 00000 n 0000116406 00000 n 0000375982 00000 n 0000416911 00000 n 0000336216 00000 n 0000116427 00000 n 0000117377 00000 n 0000376017 00000 n 0000416761 00000 n 0000336363 00000 n 0000117398 00000 n 0000117802 00000 n 0000376052 00000 n 0000416611 00000 n 0000336510 00000 n 0000117823 00000 n 0000118261 00000 n 0000376087 00000 n 0000416461 00000 n 0000336657 00000 n 0000118282 00000 n 0000118710 00000 n 0000376122 00000 n 0000416311 00000 n 0000336804 00000 n 0000118731 00000 n 0000120133 00000 n 0000376157 00000 n 0000416161 00000 n 0000336951 00000 n 0000120155 00000 n 0000120412 00000 n 0000376192 00000 n 0000416011 00000 n 0000337098 00000 n 0000120433 00000 n 0000121402 00000 n 0000376227 00000 n 0000415861 00000 n 0000337245 00000 n 0000121423 00000 n 0000122538 00000 n 0000376262 00000 n 0000415711 00000 n 0000337392 00000 n 0000122560 00000 n 0000123825 00000 n 0000376297 00000 n 0000415561 00000 n 0000337539 00000 n 0000123847 00000 n 0000125053 00000 n 0000376332 00000 n 0000415411 00000 n 0000337686 00000 n 0000125075 00000 n 0000126952 00000 n 0000376367 00000 n 0000415261 00000 n 0000337833 00000 n 0000126974 00000 n 0000127508 00000 n 0000376402 00000 n 0000415111 00000 n 0000337980 00000 n 0000127529 00000 n 0000129023 00000 n 0000376437 00000 n 0000414961 00000 n 0000338127 00000 n 0000129045 00000 n 0000129353 00000 n 0000376472 00000 n 0000414811 00000 n 0000338274 00000 n 0000129374 00000 n 0000130580 00000 n 0000376507 00000 n 0000414661 00000 n 0000338421 00000 n 0000130602 00000 n 0000131782 00000 n 0000376542 00000 n 0000414511 00000 n 0000338568 00000 n 0000131804 00000 n 0000133127 00000 n 0000376577 00000 n 0000414361 00000 n 0000338715 00000 n 0000133149 00000 n 0000134206 00000 n 0000376612 00000 n 0000414211 00000 n 0000338862 00000 n 0000134227 00000 n 0000135569 00000 n 0000376647 00000 n 0000414061 00000 n 0000339009 00000 n 0000135591 00000 n 0000136174 00000 n 0000376682 00000 n 0000413911 00000 n 0000339156 00000 n 0000136195 00000 n 0000137208 00000 n 0000376717 00000 n 0000413761 00000 n 0000339303 00000 n 0000137229 00000 n 0000138410 00000 n 0000376752 00000 n 0000413611 00000 n 0000339450 00000 n 0000138432 00000 n 0000139199 00000 n 0000376787 00000 n 0000413461 00000 n 0000339597 00000 n 0000139220 00000 n 0000139820 00000 n 0000376822 00000 n 0000413311 00000 n 0000339744 00000 n 0000139841 00000 n 0000140441 00000 n 0000376857 00000 n 0000413161 00000 n 0000339891 00000 n 0000140462 00000 n 0000141061 00000 n 0000376892 00000 n 0000413011 00000 n 0000340038 00000 n 0000141082 00000 n 0000141677 00000 n 0000376927 00000 n 0000412861 00000 n 0000340185 00000 n 0000141698 00000 n 0000142895 00000 n 0000376962 00000 n 0000412711 00000 n 0000340332 00000 n 0000142917 00000 n 0000143697 00000 n 0000376997 00000 n 0000412561 00000 n 0000340479 00000 n 0000143718 00000 n 0000144750 00000 n 0000377032 00000 n 0000412411 00000 n 0000340626 00000 n 0000144771 00000 n 0000145932 00000 n 0000377067 00000 n 0000412261 00000 n 0000340773 00000 n 0000145954 00000 n 0000146679 00000 n 0000377102 00000 n 0000412111 00000 n 0000340920 00000 n 0000146700 00000 n 0000147487 00000 n 0000377137 00000 n 0000411961 00000 n 0000341067 00000 n 0000147508 00000 n 0000148245 00000 n 0000377172 00000 n 0000411811 00000 n 0000341214 00000 n 0000148266 00000 n 0000149061 00000 n 0000377207 00000 n 0000411661 00000 n 0000341361 00000 n 0000149082 00000 n 0000149800 00000 n 0000377242 00000 n 0000411511 00000 n 0000341508 00000 n 0000149821 00000 n 0000150542 00000 n 0000377277 00000 n 0000411361 00000 n 0000341655 00000 n 0000150563 00000 n 0000151354 00000 n 0000377312 00000 n 0000411211 00000 n 0000341802 00000 n 0000151375 00000 n 0000152168 00000 n 0000377347 00000 n 0000411061 00000 n 0000341949 00000 n 0000152189 00000 n 0000152918 00000 n 0000377382 00000 n 0000410911 00000 n 0000342096 00000 n 0000152939 00000 n 0000153675 00000 n 0000377417 00000 n 0000410761 00000 n 0000342243 00000 n 0000153696 00000 n 0000154491 00000 n 0000377452 00000 n 0000410611 00000 n 0000342390 00000 n 0000154512 00000 n 0000155304 00000 n 0000377487 00000 n 0000410461 00000 n 0000342537 00000 n 0000155325 00000 n 0000156053 00000 n 0000377522 00000 n 0000410311 00000 n 0000342684 00000 n 0000156074 00000 n 0000156867 00000 n 0000377557 00000 n 0000410161 00000 n 0000342831 00000 n 0000156888 00000 n 0000157863 00000 n 0000377592 00000 n 0000410011 00000 n 0000342978 00000 n 0000157884 00000 n 0000158623 00000 n 0000377627 00000 n 0000409861 00000 n 0000343125 00000 n 0000158644 00000 n 0000159977 00000 n 0000377662 00000 n 0000409711 00000 n 0000343272 00000 n 0000159999 00000 n 0000160229 00000 n 0000377697 00000 n 0000409561 00000 n 0000343419 00000 n 0000160250 00000 n 0000161288 00000 n 0000377732 00000 n 0000409488 00000 n 0000343566 00000 n 0000161309 00000 n 0000161462 00000 n 0000377767 00000 n 0000409338 00000 n 0000343713 00000 n 0000161482 00000 n 0000162375 00000 n 0000377802 00000 n 0000409188 00000 n 0000343860 00000 n 0000162396 00000 n 0000163701 00000 n 0000377837 00000 n 0000409038 00000 n 0000344007 00000 n 0000163723 00000 n 0000164681 00000 n 0000377872 00000 n 0000408888 00000 n 0000344154 00000 n 0000164702 00000 n 0000165780 00000 n 0000377907 00000 n 0000408738 00000 n 0000344301 00000 n 0000165802 00000 n 0000166809 00000 n 0000377942 00000 n 0000408588 00000 n 0000344448 00000 n 0000166830 00000 n 0000167977 00000 n 0000377977 00000 n 0000408438 00000 n 0000344595 00000 n 0000167999 00000 n 0000169417 00000 n 0000378012 00000 n 0000408365 00000 n 0000344742 00000 n 0000169439 00000 n 0000169652 00000 n 0000378047 00000 n 0000408215 00000 n 0000344889 00000 n 0000169673 00000 n 0000170940 00000 n 0000378082 00000 n 0000408065 00000 n 0000345036 00000 n 0000170962 00000 n 0000172293 00000 n 0000378117 00000 n 0000407915 00000 n 0000345183 00000 n 0000172315 00000 n 0000173718 00000 n 0000378152 00000 n 0000407842 00000 n 0000345330 00000 n 0000173740 00000 n 0000173998 00000 n 0000378187 00000 n 0000407692 00000 n 0000345477 00000 n 0000174019 00000 n 0000175366 00000 n 0000378222 00000 n 0000407542 00000 n 0000345624 00000 n 0000175388 00000 n 0000175839 00000 n 0000378257 00000 n 0000407392 00000 n 0000345771 00000 n 0000175860 00000 n 0000177283 00000 n 0000378292 00000 n 0000407242 00000 n 0000345918 00000 n 0000177305 00000 n 0000178602 00000 n 0000378327 00000 n 0000407092 00000 n 0000346065 00000 n 0000178624 00000 n 0000179930 00000 n 0000378362 00000 n 0000406942 00000 n 0000346212 00000 n 0000179952 00000 n 0000180949 00000 n 0000378397 00000 n 0000406792 00000 n 0000346359 00000 n 0000180970 00000 n 0000182314 00000 n 0000378432 00000 n 0000406642 00000 n 0000346506 00000 n 0000182336 00000 n 0000182656 00000 n 0000378467 00000 n 0000406492 00000 n 0000346653 00000 n 0000182677 00000 n 0000183979 00000 n 0000378502 00000 n 0000406342 00000 n 0000346800 00000 n 0000184001 00000 n 0000184394 00000 n 0000378537 00000 n 0000406192 00000 n 0000346947 00000 n 0000184415 00000 n 0000185391 00000 n 0000378572 00000 n 0000406042 00000 n 0000347094 00000 n 0000185412 00000 n 0000186513 00000 n 0000378607 00000 n 0000405892 00000 n 0000347241 00000 n 0000186535 00000 n 0000187952 00000 n 0000378642 00000 n 0000405742 00000 n 0000347388 00000 n 0000187974 00000 n 0000188183 00000 n 0000378677 00000 n 0000405592 00000 n 0000347535 00000 n 0000188204 00000 n 0000189731 00000 n 0000378712 00000 n 0000405442 00000 n 0000347682 00000 n 0000189753 00000 n 0000190178 00000 n 0000378747 00000 n 0000405292 00000 n 0000347829 00000 n 0000190199 00000 n 0000190926 00000 n 0000378782 00000 n 0000405142 00000 n 0000347976 00000 n 0000190947 00000 n 0000192071 00000 n 0000378817 00000 n 0000404992 00000 n 0000348123 00000 n 0000192093 00000 n 0000193202 00000 n 0000378852 00000 n 0000404842 00000 n 0000348270 00000 n 0000193224 00000 n 0000194307 00000 n 0000378887 00000 n 0000404692 00000 n 0000348417 00000 n 0000194329 00000 n 0000195195 00000 n 0000378922 00000 n 0000404542 00000 n 0000348564 00000 n 0000195216 00000 n 0000196790 00000 n 0000378957 00000 n 0000404392 00000 n 0000348711 00000 n 0000196812 00000 n 0000198575 00000 n 0000378992 00000 n 0000404242 00000 n 0000348858 00000 n 0000198597 00000 n 0000199003 00000 n 0000379027 00000 n 0000404092 00000 n 0000349005 00000 n 0000199024 00000 n 0000200608 00000 n 0000379062 00000 n 0000403942 00000 n 0000349152 00000 n 0000200630 00000 n 0000202032 00000 n 0000379097 00000 n 0000403792 00000 n 0000349299 00000 n 0000202054 00000 n 0000203481 00000 n 0000379132 00000 n 0000403719 00000 n 0000349446 00000 n 0000203503 00000 n 0000203839 00000 n 0000379167 00000 n 0000403569 00000 n 0000349593 00000 n 0000203860 00000 n 0000204866 00000 n 0000379202 00000 n 0000403417 00000 n 0000349741 00000 n 0000204888 00000 n 0000205860 00000 n 0000379238 00000 n 0000403265 00000 n 0000349891 00000 n 0000205882 00000 n 0000206798 00000 n 0000379276 00000 n 0000403113 00000 n 0000350041 00000 n 0000206820 00000 n 0000207783 00000 n 0000379314 00000 n 0000402961 00000 n 0000350191 00000 n 0000207805 00000 n 0000209052 00000 n 0000379352 00000 n 0000402809 00000 n 0000350341 00000 n 0000209075 00000 n 0000210279 00000 n 0000379390 00000 n 0000402657 00000 n 0000350491 00000 n 0000210302 00000 n 0000210763 00000 n 0000379428 00000 n 0000402505 00000 n 0000350641 00000 n 0000210785 00000 n 0000211342 00000 n 0000379466 00000 n 0000402353 00000 n 0000350791 00000 n 0000211364 00000 n 0000212166 00000 n 0000379504 00000 n 0000402201 00000 n 0000350941 00000 n 0000212188 00000 n 0000212832 00000 n 0000379542 00000 n 0000402049 00000 n 0000351091 00000 n 0000212854 00000 n 0000214248 00000 n 0000379580 00000 n 0000401897 00000 n 0000351241 00000 n 0000214271 00000 n 0000214713 00000 n 0000379618 00000 n 0000401745 00000 n 0000351391 00000 n 0000214735 00000 n 0000215924 00000 n 0000379656 00000 n 0000401670 00000 n 0000351541 00000 n 0000215947 00000 n 0000216227 00000 n 0000379694 00000 n 0000401518 00000 n 0000351691 00000 n 0000216249 00000 n 0000217673 00000 n 0000379732 00000 n 0000401366 00000 n 0000351841 00000 n 0000217696 00000 n 0000219018 00000 n 0000379770 00000 n 0000401214 00000 n 0000351991 00000 n 0000219041 00000 n 0000219599 00000 n 0000379808 00000 n 0000401062 00000 n 0000352141 00000 n 0000219621 00000 n 0000220024 00000 n 0000379846 00000 n 0000400910 00000 n 0000352291 00000 n 0000220046 00000 n 0000221149 00000 n 0000379884 00000 n 0000400758 00000 n 0000352441 00000 n 0000221172 00000 n 0000222276 00000 n 0000379922 00000 n 0000400606 00000 n 0000352591 00000 n 0000222299 00000 n 0000223726 00000 n 0000379960 00000 n 0000400531 00000 n 0000352741 00000 n 0000223749 00000 n 0000223919 00000 n 0000379998 00000 n 0000400379 00000 n 0000352891 00000 n 0000223940 00000 n 0000224411 00000 n 0000380036 00000 n 0000400227 00000 n 0000353041 00000 n 0000224433 00000 n 0000225412 00000 n 0000380074 00000 n 0000400075 00000 n 0000353191 00000 n 0000225434 00000 n 0000226795 00000 n 0000380112 00000 n 0000399923 00000 n 0000353341 00000 n 0000226818 00000 n 0000227781 00000 n 0000380150 00000 n 0000399771 00000 n 0000353491 00000 n 0000227803 00000 n 0000228365 00000 n 0000380188 00000 n 0000399619 00000 n 0000353641 00000 n 0000228387 00000 n 0000229715 00000 n 0000380226 00000 n 0000399467 00000 n 0000353791 00000 n 0000229738 00000 n 0000230496 00000 n 0000380264 00000 n 0000399315 00000 n 0000353941 00000 n 0000230518 00000 n 0000231849 00000 n 0000380302 00000 n 0000399163 00000 n 0000354091 00000 n 0000231872 00000 n 0000232633 00000 n 0000380340 00000 n 0000399011 00000 n 0000354241 00000 n 0000232655 00000 n 0000233978 00000 n 0000380378 00000 n 0000398859 00000 n 0000354391 00000 n 0000234001 00000 n 0000234761 00000 n 0000380416 00000 n 0000398707 00000 n 0000354541 00000 n 0000234783 00000 n 0000236108 00000 n 0000380454 00000 n 0000398555 00000 n 0000354691 00000 n 0000236131 00000 n 0000236792 00000 n 0000380492 00000 n 0000398403 00000 n 0000354841 00000 n 0000236814 00000 n 0000238126 00000 n 0000380530 00000 n 0000398251 00000 n 0000354991 00000 n 0000238149 00000 n 0000238720 00000 n 0000380568 00000 n 0000398099 00000 n 0000355141 00000 n 0000238742 00000 n 0000239923 00000 n 0000380606 00000 n 0000397947 00000 n 0000355291 00000 n 0000239946 00000 n 0000241107 00000 n 0000380644 00000 n 0000397795 00000 n 0000355441 00000 n 0000241130 00000 n 0000242239 00000 n 0000380682 00000 n 0000397643 00000 n 0000355591 00000 n 0000242262 00000 n 0000243368 00000 n 0000380720 00000 n 0000397491 00000 n 0000355741 00000 n 0000243391 00000 n 0000244494 00000 n 0000380758 00000 n 0000397339 00000 n 0000355891 00000 n 0000244517 00000 n 0000244985 00000 n 0000380796 00000 n 0000397187 00000 n 0000356041 00000 n 0000245007 00000 n 0000245543 00000 n 0000380834 00000 n 0000397035 00000 n 0000356191 00000 n 0000245565 00000 n 0000247107 00000 n 0000380872 00000 n 0000396960 00000 n 0000356341 00000 n 0000247130 00000 n 0000247300 00000 n 0000380910 00000 n 0000396808 00000 n 0000356491 00000 n 0000247321 00000 n 0000248758 00000 n 0000380948 00000 n 0000396733 00000 n 0000356641 00000 n 0000248781 00000 n 0000248951 00000 n 0000380986 00000 n 0000396581 00000 n 0000356791 00000 n 0000248972 00000 n 0000249412 00000 n 0000381024 00000 n 0000396429 00000 n 0000356941 00000 n 0000249434 00000 n 0000250183 00000 n 0000381062 00000 n 0000396277 00000 n 0000357091 00000 n 0000250205 00000 n 0000250819 00000 n 0000381100 00000 n 0000396125 00000 n 0000357241 00000 n 0000250841 00000 n 0000251290 00000 n 0000381138 00000 n 0000395973 00000 n 0000357391 00000 n 0000251312 00000 n 0000251823 00000 n 0000381176 00000 n 0000395821 00000 n 0000357541 00000 n 0000251845 00000 n 0000252351 00000 n 0000381214 00000 n 0000395669 00000 n 0000357691 00000 n 0000252373 00000 n 0000253905 00000 n 0000381252 00000 n 0000395517 00000 n 0000357841 00000 n 0000253928 00000 n 0000254604 00000 n 0000381290 00000 n 0000395365 00000 n 0000357991 00000 n 0000254626 00000 n 0000255991 00000 n 0000381328 00000 n 0000395213 00000 n 0000358141 00000 n 0000256014 00000 n 0000256626 00000 n 0000381366 00000 n 0000395061 00000 n 0000358291 00000 n 0000256648 00000 n 0000257195 00000 n 0000381404 00000 n 0000394909 00000 n 0000358441 00000 n 0000257217 00000 n 0000257885 00000 n 0000381442 00000 n 0000394757 00000 n 0000358591 00000 n 0000257907 00000 n 0000258394 00000 n 0000381480 00000 n 0000394605 00000 n 0000358741 00000 n 0000258416 00000 n 0000259689 00000 n 0000381518 00000 n 0000394453 00000 n 0000358891 00000 n 0000259712 00000 n 0000261126 00000 n 0000381556 00000 n 0000394301 00000 n 0000359041 00000 n 0000261149 00000 n 0000261503 00000 n 0000381594 00000 n 0000394149 00000 n 0000359191 00000 n 0000261525 00000 n 0000262274 00000 n 0000381632 00000 n 0000393997 00000 n 0000359341 00000 n 0000262296 00000 n 0000262942 00000 n 0000381670 00000 n 0000393845 00000 n 0000359491 00000 n 0000262964 00000 n 0000263580 00000 n 0000381708 00000 n 0000393693 00000 n 0000359641 00000 n 0000263602 00000 n 0000264082 00000 n 0000381746 00000 n 0000393541 00000 n 0000359791 00000 n 0000264104 00000 n 0000264602 00000 n 0000381784 00000 n 0000393389 00000 n 0000359941 00000 n 0000264624 00000 n 0000265119 00000 n 0000381822 00000 n 0000393237 00000 n 0000360091 00000 n 0000265141 00000 n 0000265762 00000 n 0000381860 00000 n 0000393085 00000 n 0000360241 00000 n 0000265784 00000 n 0000266403 00000 n 0000381898 00000 n 0000392933 00000 n 0000360391 00000 n 0000266425 00000 n 0000267840 00000 n 0000381936 00000 n 0000392781 00000 n 0000360541 00000 n 0000267863 00000 n 0000268307 00000 n 0000381974 00000 n 0000392629 00000 n 0000360691 00000 n 0000268329 00000 n 0000269811 00000 n 0000382012 00000 n 0000392554 00000 n 0000360841 00000 n 0000269834 00000 n 0000270094 00000 n 0000382050 00000 n 0000392402 00000 n 0000360991 00000 n 0000270116 00000 n 0000271589 00000 n 0000382088 00000 n 0000392327 00000 n 0000361141 00000 n 0000271612 00000 n 0000271872 00000 n 0000382126 00000 n 0000392175 00000 n 0000361291 00000 n 0000271894 00000 n 0000273338 00000 n 0000382164 00000 n 0000392100 00000 n 0000361441 00000 n 0000273361 00000 n 0000273681 00000 n 0000382202 00000 n 0000391948 00000 n 0000361591 00000 n 0000273703 00000 n 0000275140 00000 n 0000382240 00000 n 0000391873 00000 n 0000361741 00000 n 0000275163 00000 n 0000275472 00000 n 0000382278 00000 n 0000391721 00000 n 0000361891 00000 n 0000275494 00000 n 0000275954 00000 n 0000382316 00000 n 0000391569 00000 n 0000362041 00000 n 0000275976 00000 n 0000276496 00000 n 0000382354 00000 n 0000391417 00000 n 0000362191 00000 n 0000276518 00000 n 0000277054 00000 n 0000382392 00000 n 0000391265 00000 n 0000362341 00000 n 0000277076 00000 n 0000277619 00000 n 0000382430 00000 n 0000391113 00000 n 0000362491 00000 n 0000277641 00000 n 0000278358 00000 n 0000382468 00000 n 0000390961 00000 n 0000362641 00000 n 0000278380 00000 n 0000278899 00000 n 0000382506 00000 n 0000390809 00000 n 0000362791 00000 n 0000278921 00000 n 0000280003 00000 n 0000382544 00000 n 0000390657 00000 n 0000362941 00000 n 0000280026 00000 n 0000281392 00000 n 0000382582 00000 n 0000390505 00000 n 0000363091 00000 n 0000281415 00000 n 0000282374 00000 n 0000382620 00000 n 0000390353 00000 n 0000363241 00000 n 0000282396 00000 n 0000283974 00000 n 0000382658 00000 n 0000390201 00000 n 0000363391 00000 n 0000283997 00000 n 0000285059 00000 n 0000382696 00000 n 0000390049 00000 n 0000363541 00000 n 0000285081 00000 n 0000285541 00000 n 0000382734 00000 n 0000389897 00000 n 0000363691 00000 n 0000285563 00000 n 0000286058 00000 n 0000382772 00000 n 0000389745 00000 n 0000363841 00000 n 0000286080 00000 n 0000286820 00000 n 0000382810 00000 n 0000389593 00000 n 0000363991 00000 n 0000286842 00000 n 0000287610 00000 n 0000382848 00000 n 0000389441 00000 n 0000364141 00000 n 0000287632 00000 n 0000288909 00000 n 0000382886 00000 n 0000389289 00000 n 0000364291 00000 n 0000288932 00000 n 0000290036 00000 n 0000382924 00000 n 0000389137 00000 n 0000364441 00000 n 0000290059 00000 n 0000290761 00000 n 0000382962 00000 n 0000388985 00000 n 0000364591 00000 n 0000290783 00000 n 0000291886 00000 n 0000383000 00000 n 0000388833 00000 n 0000364741 00000 n 0000291909 00000 n 0000292899 00000 n 0000383038 00000 n 0000388681 00000 n 0000364891 00000 n 0000292921 00000 n 0000293639 00000 n 0000383076 00000 n 0000388529 00000 n 0000365041 00000 n 0000293661 00000 n 0000294378 00000 n 0000383114 00000 n 0000388377 00000 n 0000365191 00000 n 0000294400 00000 n 0000294855 00000 n 0000383152 00000 n 0000388225 00000 n 0000365341 00000 n 0000294877 00000 n 0000295391 00000 n 0000383190 00000 n 0000388073 00000 n 0000365491 00000 n 0000295413 00000 n 0000295934 00000 n 0000383228 00000 n 0000387921 00000 n 0000365641 00000 n 0000295956 00000 n 0000296695 00000 n 0000383266 00000 n 0000387769 00000 n 0000365791 00000 n 0000296717 00000 n 0000297416 00000 n 0000383304 00000 n 0000387617 00000 n 0000365941 00000 n 0000297438 00000 n 0000298427 00000 n 0000383342 00000 n 0000387465 00000 n 0000366091 00000 n 0000298449 00000 n 0000299172 00000 n 0000383380 00000 n 0000387313 00000 n 0000366241 00000 n 0000299194 00000 n 0000299962 00000 n 0000383418 00000 n 0000387161 00000 n 0000366391 00000 n 0000299984 00000 n 0000300709 00000 n 0000383456 00000 n 0000387009 00000 n 0000366541 00000 n 0000300731 00000 n 0000302123 00000 n 0000383494 00000 n 0000386857 00000 n 0000366691 00000 n 0000302146 00000 n 0000303444 00000 n 0000383532 00000 n 0000386705 00000 n 0000366841 00000 n 0000303467 00000 n 0000304812 00000 n 0000383570 00000 n 0000386553 00000 n 0000366991 00000 n 0000304835 00000 n 0000306211 00000 n 0000383608 00000 n 0000386401 00000 n 0000367141 00000 n 0000306234 00000 n 0000306716 00000 n 0000383646 00000 n 0000386249 00000 n 0000367291 00000 n 0000306738 00000 n 0000307966 00000 n 0000383684 00000 n 0000386097 00000 n 0000367441 00000 n 0000307989 00000 n 0000309201 00000 n 0000383722 00000 n 0000385945 00000 n 0000367591 00000 n 0000309224 00000 n 0000310434 00000 n 0000383760 00000 n 0000385793 00000 n 0000367741 00000 n 0000310457 00000 n 0000310837 00000 n 0000383798 00000 n 0000385641 00000 n 0000367891 00000 n 0000310859 00000 n 0000311263 00000 n 0000383836 00000 n 0000385489 00000 n 0000368041 00000 n 0000311285 00000 n 0000311677 00000 n 0000383874 00000 n 0000385337 00000 n 0000368191 00000 n 0000311699 00000 n 0000313227 00000 n 0000383912 00000 n 0000385185 00000 n 0000368341 00000 n 0000313250 00000 n 0000314116 00000 n 0000383950 00000 n 0000385033 00000 n 0000368491 00000 n 0000314138 00000 n 0000314863 00000 n 0000383988 00000 n 0000384881 00000 n 0000368641 00000 n 0000314885 00000 n 0000316229 00000 n 0000384026 00000 n 0000384729 00000 n 0000368791 00000 n 0000316252 00000 n 0000317277 00000 n 0000384064 00000 n 0000384577 00000 n 0000368941 00000 n 0000317299 00000 n 0000318818 00000 n 0000384102 00000 n 0000384425 00000 n 0000369091 00000 n 0000318841 00000 n 0000319686 00000 n 0000384140 00000 n 0000384273 00000 n 0000369241 00000 n 0000319708 00000 n 0000320505 00000 n 0000384178 00000 n 0000384366 00000 n 0000384518 00000 n 0000384670 00000 n 0000384822 00000 n 0000384974 00000 n 0000385126 00000 n 0000385278 00000 n 0000385430 00000 n 0000385582 00000 n 0000385734 00000 n 0000385886 00000 n 0000386038 00000 n 0000386190 00000 n 0000386342 00000 n 0000386494 00000 n 0000386646 00000 n 0000386798 00000 n 0000386950 00000 n 0000387102 00000 n 0000387254 00000 n 0000387406 00000 n 0000387558 00000 n 0000387710 00000 n 0000387862 00000 n 0000388014 00000 n 0000388166 00000 n 0000388318 00000 n 0000388470 00000 n 0000388622 00000 n 0000388774 00000 n 0000388926 00000 n 0000389078 00000 n 0000389230 00000 n 0000389382 00000 n 0000389534 00000 n 0000389686 00000 n 0000389838 00000 n 0000389990 00000 n 0000390142 00000 n 0000390294 00000 n 0000390446 00000 n 0000390598 00000 n 0000390750 00000 n 0000390902 00000 n 0000391054 00000 n 0000391206 00000 n 0000391358 00000 n 0000391510 00000 n 0000391662 00000 n 0000391814 00000 n 0000392041 00000 n 0000392268 00000 n 0000392495 00000 n 0000392722 00000 n 0000392874 00000 n 0000393026 00000 n 0000393178 00000 n 0000393330 00000 n 0000393482 00000 n 0000393634 00000 n 0000393786 00000 n 0000393938 00000 n 0000394090 00000 n 0000394242 00000 n 0000394394 00000 n 0000394546 00000 n 0000394698 00000 n 0000394850 00000 n 0000395002 00000 n 0000395154 00000 n 0000395306 00000 n 0000395458 00000 n 0000395610 00000 n 0000395762 00000 n 0000395914 00000 n 0000396066 00000 n 0000396218 00000 n 0000396370 00000 n 0000396522 00000 n 0000396674 00000 n 0000396901 00000 n 0000397128 00000 n 0000397280 00000 n 0000397432 00000 n 0000397584 00000 n 0000397736 00000 n 0000397888 00000 n 0000398040 00000 n 0000398192 00000 n 0000398344 00000 n 0000398496 00000 n 0000398648 00000 n 0000398800 00000 n 0000398952 00000 n 0000399104 00000 n 0000399256 00000 n 0000399408 00000 n 0000399560 00000 n 0000399712 00000 n 0000399864 00000 n 0000400016 00000 n 0000400168 00000 n 0000400320 00000 n 0000400472 00000 n 0000400699 00000 n 0000400851 00000 n 0000401003 00000 n 0000401155 00000 n 0000401307 00000 n 0000401459 00000 n 0000401611 00000 n 0000401838 00000 n 0000401990 00000 n 0000402142 00000 n 0000402294 00000 n 0000402446 00000 n 0000402598 00000 n 0000402750 00000 n 0000402902 00000 n 0000403054 00000 n 0000403206 00000 n 0000403358 00000 n 0000403510 00000 n 0000403660 00000 n 0000403883 00000 n 0000404033 00000 n 0000404183 00000 n 0000404333 00000 n 0000404483 00000 n 0000404633 00000 n 0000404783 00000 n 0000404933 00000 n 0000405083 00000 n 0000405233 00000 n 0000405383 00000 n 0000405533 00000 n 0000405683 00000 n 0000405833 00000 n 0000405983 00000 n 0000406133 00000 n 0000406283 00000 n 0000406433 00000 n 0000406583 00000 n 0000406733 00000 n 0000406883 00000 n 0000407033 00000 n 0000407183 00000 n 0000407333 00000 n 0000407483 00000 n 0000407633 00000 n 0000407783 00000 n 0000408006 00000 n 0000408156 00000 n 0000408306 00000 n 0000408529 00000 n 0000408679 00000 n 0000408829 00000 n 0000408979 00000 n 0000409129 00000 n 0000409279 00000 n 0000409429 00000 n 0000409652 00000 n 0000409802 00000 n 0000409952 00000 n 0000410102 00000 n 0000410252 00000 n 0000410402 00000 n 0000410552 00000 n 0000410702 00000 n 0000410852 00000 n 0000411002 00000 n 0000411152 00000 n 0000411302 00000 n 0000411452 00000 n 0000411602 00000 n 0000411752 00000 n 0000411902 00000 n 0000412052 00000 n 0000412202 00000 n 0000412352 00000 n 0000412502 00000 n 0000412652 00000 n 0000412802 00000 n 0000412952 00000 n 0000413102 00000 n 0000413252 00000 n 0000413402 00000 n 0000413552 00000 n 0000413702 00000 n 0000413852 00000 n 0000414002 00000 n 0000414152 00000 n 0000414302 00000 n 0000414452 00000 n 0000414602 00000 n 0000414752 00000 n 0000414902 00000 n 0000415052 00000 n 0000415202 00000 n 0000415352 00000 n 0000415502 00000 n 0000415652 00000 n 0000415802 00000 n 0000415952 00000 n 0000416102 00000 n 0000416252 00000 n 0000416402 00000 n 0000416552 00000 n 0000416702 00000 n 0000416852 00000 n 0000417002 00000 n 0000417152 00000 n 0000417302 00000 n 0000417452 00000 n 0000417602 00000 n 0000417752 00000 n 0000417902 00000 n 0000418125 00000 n 0000418275 00000 n 0000418425 00000 n 0000418575 00000 n 0000418725 00000 n 0000418875 00000 n 0000419025 00000 n 0000419248 00000 n 0000419471 00000 n 0000419621 00000 n 0000419844 00000 n 0000420067 00000 n 0000420217 00000 n 0000420367 00000 n 0000420590 00000 n 0000420740 00000 n 0000420890 00000 n 0000421040 00000 n 0000421263 00000 n 0000421413 00000 n 0000421636 00000 n 0000421786 00000 n 0000421936 00000 n 0000422086 00000 n 0000422236 00000 n 0000422386 00000 n 0000422536 00000 n 0000422686 00000 n 0000422836 00000 n 0000422986 00000 n 0000423136 00000 n 0000423286 00000 n 0000423436 00000 n 0000423586 00000 n 0000423736 00000 n 0000423886 00000 n 0000424036 00000 n 0000424186 00000 n 0000424336 00000 n 0000424486 00000 n 0000424636 00000 n 0000424786 00000 n 0000424936 00000 n 0000425086 00000 n 0000425236 00000 n 0000425386 00000 n 0000425536 00000 n 0000425686 00000 n 0000425836 00000 n 0000425986 00000 n 0000426136 00000 n 0000426286 00000 n 0000426436 00000 n 0000426586 00000 n 0000426736 00000 n 0000426886 00000 n 0000427036 00000 n 0000427186 00000 n 0000427336 00000 n 0000427486 00000 n 0000427636 00000 n 0000427786 00000 n 0000427936 00000 n 0000428086 00000 n 0000428236 00000 n 0000428386 00000 n 0000428536 00000 n 0000428686 00000 n 0000428836 00000 n 0000428986 00000 n 0000429136 00000 n 0000429286 00000 n 0000429436 00000 n 0000429728 00000 n 0000429876 00000 n 0000430024 00000 n 0000430669 00000 n 0000430817 00000 n 0000430965 00000 n 0000431113 00000 n 0000431261 00000 n 0000431409 00000 n 0000431557 00000 n trailer << /Size 1957 /Root 1 0 R /Info 2 0 R >> startxref 431736 %%EOF sofa/20150209/c/doc/sofa_ast_c.pdf0000644000113000011300000117254012507252057015456 0ustar bellsbells%PDF-1.4 % 9 0 obj <>/Rect[235.772 169.184 361.771 179.184]>> endobj 10 0 obj <> stream xmS˒0seI+\R.8&U(ڿgd`j)$fzz#x > N #ma %6u 蠒ڣOג>N]:;J;ޜR SۂDG((LY9CEBϔv]a%ӺZ }۱LV ZxԍK- VF+EM3keH]mMQfͥ HŎO9ks,J,O/4g/d܀-Z-\XjCZͬ $ѵhl+.\yŞjŞ2S}h&,r(}̳AsCmsrN*:,іlmкe7?u!ͻ<0nӐÎ4'8痏mJqKG놦ϵz\.xΧ0/o&Dz05deaRB2m ?i++ݫ9ׄ endstream endobj 11 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 14 0 obj <> stream xڵUMs0+|Cg|LJ;iiItAqD#HA[ʯgK:I^$u3ATiPuxG߸(0)tDK/=7},oIQgEb22X -~L3k0 ز}㮵I:Gᒷކ +B99s()P,VE(-j+,rQa `t/Q˵şr+l!5>g zD' +nt^qv9q'kɊ sSPwrW0gқ/6Tmǐ}?L_nʵP/5YG9y3Ûji;&dCt)=Z7Aawp#`T'sh4gL@w'֡B?wir_lʬ ר&d́An.~&ޞAeyDiyj; Pb?u6sqrI@ct}Qd}K8Liý~,ƑB)d[vnhA`UV'6AFAؕ\j lk;5y0Z=7sh^Z-xj" &]nVz1:lK\g;*ۇm>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 19 0 obj <>/Rect[72 682.776 161.183 690.352]>> endobj 20 0 obj <>/Rect[88.364 669.095 173.182 676.67]>> endobj 21 0 obj <>/Rect[88.364 653.292 167.485 662.989]>> endobj 22 0 obj <>/Rect[72 628.172 277.937 637.869]>> endobj 23 0 obj <>/Rect[88.364 614.491 208.394 624.187]>> endobj 24 0 obj <>/Rect[88.364 602.93 208.758 610.506]>> endobj 25 0 obj <>/Rect[88.364 589.249 215.758 596.825]>> endobj 26 0 obj <>/Rect[72 562.008 182.396 571.705]>> endobj 27 0 obj <>/Rect[72 536.888 225.864 546.585]>> endobj 28 0 obj <>/Rect[88.364 525.328 168.728 532.903]>> endobj 29 0 obj <>/Rect[88.364 509.525 241.061 519.222]>> endobj 30 0 obj <>/Rect[88.364 495.843 187.849 505.54]>> endobj 31 0 obj <>/Rect[88.364 484.283 165.637 491.859]>> endobj 32 0 obj <>/Rect[88.364 470.602 245.788 478.177]>> endobj 33 0 obj <>/Rect[88.364 454.799 266.091 464.496]>> endobj 34 0 obj <>/Rect[88.364 441.117 266.152 450.814]>> endobj 35 0 obj <>/Rect[88.364 427.436 223 437.133]>> endobj 36 0 obj <>/Rect[88.364 413.754 193.212 423.451]>> endobj 37 0 obj <>/Rect[72 388.635 286.431 398.332]>> endobj 38 0 obj <>/Rect[88.364 374.953 310.334 384.65]>> endobj 39 0 obj <>/Rect[88.364 361.272 277.334 370.969]>> endobj 40 0 obj <>/Rect[88.364 347.59 278.728 357.287]>> endobj 41 0 obj <>/Rect[72 322.47 135.985 332.167]>> endobj 42 0 obj <>/Rect[72 297.35 247.313 307.047]>> endobj 43 0 obj <>/Rect[88.364 285.79 117.152 293.366]>> endobj 44 0 obj <>/Rect[88.364 269.988 127.758 279.563]>> endobj 45 0 obj <>/Rect[88.364 256.306 138.667 265.882]>> endobj 46 0 obj <>/Rect[88.364 242.625 125.333 252.2]>> endobj 47 0 obj <>/Rect[88.364 228.943 136.243 238.519]>> endobj 48 0 obj <>/Rect[88.364 215.262 127.758 224.837]>> endobj 49 0 obj <>/Rect[88.364 201.58 138.667 211.156]>> endobj 50 0 obj <>/Rect[88.364 187.899 126.606 197.474]>> endobj 51 0 obj <>/Rect[88.364 174.217 137.515 183.793]>> endobj 52 0 obj <>/Rect[88.364 160.536 126.576 170.111]>> endobj 53 0 obj <>/Rect[88.364 146.854 137.485 156.43]>> endobj 54 0 obj <>/Rect[88.364 133.173 125.637 142.748]>> endobj 55 0 obj <>/Rect[88.364 119.491 136.546 129.067]>> endobj 56 0 obj <>/Rect[88.364 107.931 133.818 115.385]>> endobj 57 0 obj <>/Rect[88.364 92.128 128.667 101.704]>> endobj 58 0 obj <>/Rect[88.364 78.447 134.727 88.022]>> endobj 59 0 obj <>/Rect[88.364 64.765 133.515 74.341]>> endobj 60 0 obj <> stream xr6} NOA(K&nN4P$*  P%'"QSHowbE Q_FF0@XIKYo2Y~/0ƳT8!@ 5 ˵RM;4+T%V泼tJlDNh|d֌aEVe֘^=Q'Z^BO:5dbNB1]kfh⠔0߃@s'h-4-#^/TCkb?OZjN'4 @&ݙ@WrfHILB&uцfBWBj7fR-YTL鄜ڭ踑,V&6} f0)uoB1 b1}[ۢ))=?g*lxQbELn]bP~k/Xw1g #X"pGQ0RH,īM-)TsH-k]fU%JMUT= D{Tw[7 l`< bmr2OQg654ۛb6צU7&IeUzOʟ#w ``F-{)jg@i*'q24#i>u:ntH p}դۢܯ rF"uGS1`9e@Yo{&Nbk%cG*;2Ma 8^N}j9B}1O2~}!y=t`G Efc!w+aYeb+*u6_HWIڙ7P$fZvT+o mdq:͒gr]ou'#Qu*%uk3"mO<7 :e# endstream endobj 61 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 63 0 obj <>/Rect[88.364 707.896 136.243 715.35]>> endobj 64 0 obj <>/Rect[88.364 694.347 133.818 701.801]>> endobj 65 0 obj <>/Rect[88.364 678.676 128.667 688.252]>> endobj 66 0 obj <>/Rect[88.364 665.127 134.727 674.703]>> endobj 67 0 obj <>/Rect[88.364 653.699 134.424 661.154]>> endobj 68 0 obj <>/Rect[88.364 638.029 129.576 647.604]>> endobj 69 0 obj <>/Rect[88.364 626.601 136.546 634.055]>> endobj 70 0 obj <>/Rect[88.364 613.051 134.424 620.506]>> endobj 71 0 obj <>/Rect[88.364 597.381 129.273 606.957]>> endobj 72 0 obj <>/Rect[88.364 585.953 115.788 593.529]>> endobj 73 0 obj <>/Rect[88.364 572.404 121.849 579.98]>> endobj 74 0 obj <>/Rect[88.364 558.855 132.212 566.43]>> endobj 75 0 obj <>/Rect[88.364 543.184 130.94 552.76]>> endobj 76 0 obj <>/Rect[88.364 531.756 131.849 539.332]>> endobj 77 0 obj <>/Rect[88.364 518.207 129.424 525.783]>> endobj 78 0 obj <>/Rect[72 493.749 165.463 501.325]>> endobj 79 0 obj <>/Rect[72 469.29 147.266 476.866]>> endobj 80 0 obj <>/Rect[72 442.711 125.568 452.408]>> endobj 81 0 obj <> stream xOo0>C#Im]n)i&tXBϏ~IȖ0B݋É*KCMQԒ(&HWͨ2PMg|v]_]?_]*LФ V{ˎ ,WyEn(hˡ((ƞ*%-|GCj(y]#EyF):hS۳D5}i_U,,IXаz/ TR#Mz3DTR%#r fծ({5^0:"'&IlO^L1ZTHJC5n^@j"h=g1 l>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 85 0 obj <>/Rect[340.379 518.657 345.834 525.687]>> endobj 86 0 obj <>/Rect[390.353 518.657 395.808 525.687]>> endobj 87 0 obj <>/Rect[467.364 377.465 472.819 384.495]>> endobj 88 0 obj <>/Rect[106.964 352.082 112.418 359.113]>> endobj 90 0 obj <>/Rect[392.008 258.954 397.463 265.984]>> endobj 91 0 obj <> stream xڝYKs W蔨+n2$Vm6vN-ݬQK=d}-<ʇ&AA<>gOx! /<+[͇aPw%Ihe7_~-H8ɐ7ʒBD^5[keV[';MykYiA[ڜ.w}X k=NῃMiAq?t=b"!v7~ *~?Il̡ߵ9Mq R~{T)NJv.]Tg&jKQd;QaE53vEwK˚yNp6\=w^ q G9В>gEoI݅"5^CKk9tNy`!/ooI-hHx4C &0\AKEs }K̳0:N/T` 8,!)kpj`[Å3 U힏4qЍвv!mcg[λIr#s`v[U+]wVjLNk.VGvl0]]ü5 fSiHH!gAs>{tER`߁EZ"e0˹ iSAq?sߠ:; ghtI5*!D Ƅ @2+bwoTOl'Ec>܉ 5e0 YG6cgsF}!Ae 0i.k7>"^Tý[ ۧj=7vU!B}U8)V|Y9" IHaNFzDPv5I9B %,8U9 SUqQ"wΌKzPj+4fP'?"{ϵ@s59BҧiHDN,;"Q_]l:z G^9|A0ڋȽоUqȖ|nt5ź͟6@ʦp}eyaAVZC;I>C ش) {rJJ2z! !&C)Dq:"a[}πvsczitIЁ׿7WУemM r xT(wF|?4S$%ߘcB"Ms>{HMOp<(Ӭn$|HIE퇭)?+npݠv/<3\X#nTO#?W`RNG+GC2 b]m.[^5I1r7ׇ6^ڥ<yex!r'Nio[ּYك,f67 b >/N \~"^ۊ-%J/bk#b>'#린rD;Ls-fh6Hp lhl/[GJ?bߜm i䗵~.׾m@`VHW rv"DD˔EOd5O7&2CR`ANa:@ZfJkVflIbH>Zo~/߼XmŇ~^`l Sn‡6fZ ֹZ>A. ȴ+s%ϣ DA! apnnNs% rUU^s#SȃLLWݶ{$)v3!?ѹEu FnA"YP_w)7וtꕧu/u,5Ͱ4Hxٺ7B[=?tyR4Ry,3xG&*Ln endstream endobj 92 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 97 0 obj <> stream xڽX[6~_G}jb& VULzW}Lji$վFzWx Zϰޏk`}cb;|ZLݫ\]B1.K^,Ypeږ/;s3/cgLJ0ioXZJ{aQBҔx4/@6̩ևu1]øˬdaϙTNk4:lB]-;ҁxJ.\2ayNd5"U@k0hcJ).\47tX6s&R^x9oSva]0"iSQ!0sIaK]kـ.SLQ ܀>f֐Ϥ.iҴsw~C*Q4cP-<39ÚXDr֧\\1PL_p#Jf2Ecm7gQS;HLA)ɕ"?Gt}tA-Dt 4o+91:f,C(kԍ] ]F|KA]t)Hg+@q<Շ42)@:W˕4:Dq1rRm{*Hc E3m)VżnO,hyx:Go ~utu6/ʜgZL 1!u چܚ3p4`K !?G/Ҍm84fR]0=؞(ZfJII╫VEדB3??D)s'h]Wx~9\!QanCTC/EՃwhB_Yc;䲱- #!yS4 %cҕgB8! cGqܡ}%ﳖ [p%si"`_Hʲ}V8uah;<7y[i$ U\\t7-QThc,.Bar\ ܴ\^pK ,0G2H\ AF~W*Ym˦6Rd4ËI[HSL 2Uj1%+#]7ΘE,eS:Bڦ~~Pca?g'\2W}``cRLy"̠i̪", ̭1B4Eoz*xiw@>j ϵFObs΁Db\1Ls?4;fk7d\y5 BF"'(an HmBi}4_Ӷ_ Lܜ1f odzjT&Hȥ p#r]EB&`$dLuPr"!7vKNtl7O= yRWQQMo}Nbd~h|=>}( L&^ |n0oX>=)~>*.a@H5` -] 6"MC `,Q 춇EiyvF 6Dڗʢ(-! 1=~ 5[,6[w6T/q>d]EM~+]wGIXخgF܄mfxƲMA!SwNݞ"uk|"Ǿ a\ ZHVSL:> ;WM#nܭÕrĥ]20<}9zhPu:;p:=}8=Cjy=FhdDQCH5~\c"`эvl endstream endobj 98 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 100 0 obj <>/Rect[457.546 327.659 463.001 334.689]>> endobj 101 0 obj <> stream xڥXKsܸWAuĻeX b,HZ~}р8+)U F_w+5Q<*DT+n(#*q92ms&G$Iq1AG)E<·NiZ2wZ ~Oy":IQ*0OG&ci+ ޼gՌpsfiOf07ң3pg֩9 1j._|E|ߑgWk]",VS5ӂw89 ⿣[LqcCi4zvSR&pOeQ:~"f씥~D5y&H~DJ8] ɶ{Pb B>A"գP3*cǡ1(Zl4- GX}7&L4?U30xvu@evC4` ?,Yml/He^3"ۻÞ Dnߓӵ#/w vo*›Cwy@![sh"Xuݨy(U>+GaVvf92H]iaROK7O{ Aא3$y&8]Z\=c/w1[buH dI[2>8.]qEv^֟Qé#={tDX!/K.q#ٸx]f,>y Unh!;vnIrjVvEVrS=_*d*`mGٽK @~3v\,v*c\$X@L}FUɭjCyZ4e]%,xj=L?|l{5J*`iL0 38t-|A2o$%zAD'T7i4?JZB K0LVqGf ~ES=jYuVm!ҴOϝ->KWFr%]ݵY&j/ D<Ԙu&g&_B9l37.DXiz+/c?[ ɛݮfEdd!Q 4Z$v2)u2Tdjړh2D KYhz QIqɢdy^Mb0.~b;%6xUExbNj!\:Op*ˍO0zߵ~+ >;iRWDf3^zzij0IaU+cxK ׹ԣNaкqm[e=>@%ҸjP|ZHF[b߹EG^'-z&w ݺyFqVi@z|A0C-M6z~:5 {ހ@L61\6J_ 9(og,6L[`Npx0I iOqC~LM]xvP7'X87m endstream endobj 102 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 104 0 obj <>/Rect[517.059 174.815 522.514 181.846]>> endobj 105 0 obj <> stream xڝYYܶ~ϯpv '[rʑT*0c lۿbջw~|y"w׿{>D ?N29DE(GU `*+;0RխS?S/B<2V ifGpPwmc=۵ݩ.u#3i ;>ٚw4uߪXnp0>oz zyWϣݑ TiJB9YLowIzo[F{÷F2H"7mœZ  &a{0u8Z#̫j牣F>mE7ȹ0<MLLlqaH~KԊ~y#"v B[ty'<أAU/m=2DLb9Qg]!lrӚGʩGߣB` ÅBS{m tq02O 1pSX(1*\~ ۍA~5ny]~.C^UDB &D3p։BZi) 0ua>O},h5'|Lh˘AsQ`$@q A9OzJpE+\s9zNb5ŀgAPJȝ2CR/k1IKʹrcB44 X'A9$.%m%Wd.(|'5Ddk VvKj]c8[JW_AF z+ e'.VOU"&l`͓}!|[ 1nq<S2I8~͒u]e][,EӁpk 7+ȥ1ƃZ}2p ޺rMZE@jQ,vR=BBjсpB\&B}OfV(SɞC:H4s̝v`PU”~(z)eϋ,\{N\oy,.B"QDhB`An6-x@Hāi&UxO0{>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 109 0 obj <>/Rect[231.182 671.207 235.416 676.343]>> endobj 110 0 obj <>/Rect[278.317 335.067 282.551 340.203]>> endobj 111 0 obj <>/Rect[119.576 201.996 123.81 207.133]>> endobj 114 0 obj <> stream xڝZKsWLbNEr*{v6WJ`"!1Zק_%٩Z` >.jŻ,-¼UwWTQCJ_8EQn,8nrտX0UB_fc¢ Fw/yl/-t/<81}ƹ('kǩbpA'[Ԥ(t$2\Mp}]44W&}HMfjnUkˡ}d%,dTV=.~S9m[~٦cLPv :1@^7#܌MKIp )omɏU?k噱JXt8tO؏Q.O3g`+N!_dÑ-`lG\:#O pcU. -W%Eݡ4ՙtKv #kW& _*NiEY_J Y`hjL_]Lr UÀ M9vBC1QF_ Jh~rȯor(ljdGC{"|' ~Qp{zO8Gyp1"&Xz/ZytK&: J J Hop`#mdheW5M( tUi& lx.*\ c^9(br!` a#?Vc)K0_Zf+QEnZivV-a:g'u犃%⍤Z. $M΂xdsc<_ecև}@K 6/ ikljHq@l ,(^exUW݋TR8nw\9V7k".2|a=QjQIb sfǬ 5,rL $$ç#yg0V oܑ +t xjn}8Wts'>20H 1/$Z7Tp344 nK3 p^@!x`b+9Y *"t! #ĒF_[;(3i :nE7p>)/@ìɅ`=B,ޢσ lc8C&k<Nqr>_8`^F6/:lҊ]X.GQPNBp-C.~M0iY P=VLq`sw F$oשּׂm>hz RSRÛrVpWRKKxfoCI랃/NG ZG~fL~Dj&[7oH+S/lؑJ|*>P;Ob}qnu`op߂; N ,.(!Tx͘4]+ub!313g0{\b B.zu .\%f*΍}@ܾؓbjI*?O@Eyi7zDkKCդWM$7777ځ4~̀Fs<; P)? A,̓OƲ6 673Jf_bZd"<".Ԁj:OG`0vwYzK #2Rc&˴pYܐ i!)_Qu"A#f0k0a|lƲGiC~ 1q FOܷQx@9 =p.Z੧PK~n[NTRj&Xq?m,|iJ>VWȞR<=)mE7ٻ~ñ')h(`i[E#Js#X"p" DTVC?O]pHE[yhyC[&F%ֆ"%vʹB.㓳* #MnIZ<).BīcTܥcA1lf訫E-`/ԍMhc/@zH\Hvj],i_3vSw֋l:hu`bѨ(kb SaXXA\ٺ0qHT:,:ڡ+ p*Yc问4fj:=]}Ż$E,Y톿wE?$ endstream endobj 115 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 117 0 obj <> stream xmTKo0+"N qVhEn8 7Z$8-gC+eߌ xÏeEUu&x. xq4;@"itX~o>:$qUY2\i_nno*eR9іusq_6-Q]j wr6I9e&%{^:نIbT{t򚉱oѢpTLl-YXmԂS= )W@peHSѽڏsBWGJ=!~3iDkI3o썮 endstream endobj 118 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 120 0 obj <> stream xڭXK6WrF TK*HؐߧA@7lMtSf޴_w?MuRo!F|s?oޤ"EfWq][ݥi&Uq}t6jlչX<. }8Iؒч_~ܦi},jd 'NJ"e\FHfNH87;=% ɜqVIGiF8G$m'acQNv<'=s=_M~5O=EF;ڦڋ}\Pv_ OHo\=|:9<01N5sNӴ 8^'6TEUuE_W(zz_ kiʩ3l"Y,t崄%3V"5%}%*N9)}%/op'ަu$h3YDܓ4'd, [Hi$Bt{I9%~E6!Ygv"&@=yl@@aTLU1 Z>!DP%D1^GuFZ+}uk< /oV_/3KU߀ 9^ƄHRʐdA+; Wgpg{S#*zXi^P:$Lor@2ޙ3sy\_k$R5ҼbdyD ,KygV!bX C2;K02 SN"Ͼ$>B: ڜ'o3O:o0^؂>]n;ΈuZ[|!JQ Ѹ=t0%VvrQL GvT#_꣚m%"w<ʼn`;)' TlJpi#TP!SQAiF`6+qb=G qw-;T`pcJ3!K!?fel\Xo&M\+VI67hAM Ӣ)@Y+E-&L}eύLKF3bbPBV &/$_3--Ksk'n"ՠ>/oö, T׻f)EZ_dXQ A<fxB [ynLCUp| / DrzW V|#gvʀJШqp4;5v7wRquw DA,pb9i6lH0+Ʉ# Iϓ7^ 8C6 Kn'g9;ƠKޠCR#B (Γ=}Oo"PcIip \;x'n4AHDQ_>»d˱d4{$`t\w7VIEk5=:W'HލCyJE9r1J^P+ #:1T{W y-E3j_#_!,YK]eqe/r-Kؔ3<dBJl`PYF*8`J y_[I=Iw 5d'5͓Oɏ 0P$whM<1)a4lWˑgd d(oXf!t+X59~pNxI쏃u0 YʬT=| Np?T %+%wՊʻ;OBc'N-Qnh]/ޑD{(gx8P%S <# Ɵ<F8}C1s7ذRM6jt_\1'7t endstream endobj 121 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 123 0 obj <> stream xڽXs8~G<( o\N'd[S$JItB~v%Ν::YdNw~_9L0Ym /J0vV?n>K/{ (^g3/ v̋ؽY~\^V`d?#_,9bh(,F{D*TGAO*L,/on?|E[ze^/@=(i%z0V6k)y%$>$Th9[rzʆFOFfpi<;K/4BNjC?˭e= vIY2xHU;*yL xlں0 [DQ[g]v0'"sH?yvJi+U>i*V8O\"8hEem>w +xe[wy>RQd]{awy|F"ߞ./Z!^z~%H-7\H [h#]ZSadh'݈6~H- TBJc|\6L#*Wb< ޿*/)g[ CIHTP{uZCkNuaO~y3LVSԍɫƘ?Յ1??#h{H]Fl碟o?tfdm7qs!O]b`&@BAWd7o3]ܼi+=}PìtȗNyA9uF1G BfuYԲ4t HP6,=St`w^k-@6Mԣq0?*z {k*d_pNacp;!Am#V=#W}tgo譴bzUP|l z Aլv]*if@uZ(дwx9 +"RO們mwV `gcB!zQwL|Ha hr Qy>TN @߶g;z< `h:OEg]fgW|(r$}D}HP 1uNj 6тny@w( t)) `jtqoi&~~B endstream endobj 124 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 126 0 obj <>/Rect[357.492 624.261 362.947 631.291]>> endobj 127 0 obj <>/Rect[511.605 624.261 522.514 631.291]>> endobj 128 0 obj <> stream xڕYM۸W蔥,MVNN6Ɩ+L p"e\5AR#&[)WY@~6{6E)*,M}ټ;ln}XI2Dkal_n>XDi97< ʩ]i=.vK,PQu=Un7BI[𤷻4΃?}F>xK]̷/z0/<|zhRF+.vQ0 ֏2kE,LSm[l?/v7$2wZ]tq* -f<5ݙ$qpijL[]LК̄^4KOfz 16چ]9ù ;ͳ/j˲p_?J6cޟ\ ^ij(%tCްVCSn C>죴k,J7VN48<7scП$Òoin_V6dpwQ.J%;諬`z:77"f<a?yj}e(œc$k .ASaOIV%&s{4f",ŏF&-u@;9M}j!h%~@,Pf|)7 o>8ge936ja8>K'JUrJHT Cέ?|ݶA=GF^=e{$DVO' HR8B0 C@gӴXK XwGrӟWDka|Tʡ]̳<1N 1i\#-we\@8_|yRd z܄aTdQոwtT] 6Y endstream endobj 129 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 131 0 obj <> stream xڕْ=_1O6U1 ^fͮ+C*KZ;>}=RS5p(n&ʰ(ovǛ啾TX0qF?A60Fa\"bͶ,ۿ˛x&IM/_ 4忉wntEanfEquM=u*JwM-[|Z' x9 #~(.;6Gn `etu=LOh-Z?.L`ؗ~)s2 NJ]oawZf \m+T2{\@:sǡ2_3Mٙ~qfm^(NՇS2Uōn枸7ZI\I)siC3pڡ{vNEsD ө&o#MOI^^q>1"*x)R[\ r;zظ6AIk|qwC͐:@2-^7X4,wvo 2V#Pp6q|D=J=XjCmX~# HC{bw+wnXN"xAi^lPV`s-Ѹە2T\Ie,I >gFē'%1 [܋CD9"w2u^4;9CXΉ{g[D- BYgq8޶3࠼ס4q&̀>c%_0`qPؓ"0^lm[S f, 0աi]td,rm:-lZ!Or@2S+xPfrY<1SLb'$B3~m ƅ"wp蚣eXkMۚ`djwt2[dv v; RW5\<E鑑aKHvհslЌ#rh:b |(2`Ry)D^{W!A1A2Ah,poŘ(J(JYB5uwAoes2qjBթ(ts:-#gܖEw7]כNiOn扯ԺY;dCO};Ks5ȅj?aeP{׬l(g)f'B+E|9hˈ{iq̪DH2EtwH+!M Κge"H|%~~& y# G5۲fұLHav>DY-=bBz BzDZ2QhL{|e163W) 8lb> Z{N!0ddYfU1сBFׯ$TGSEzŀ`z_5wau+|1ap˳-)l /><q-aT| ;{!ٔ-nHaQ~+RA."c״oC=nQqqgE0>pmh~k' n P}*g#qV*p;ϿfP1Uc|Z 0 z[A,+xQv t$;5cFvahy ʼni]X̙‰ҋԍ }t$,t̝Zy>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 135 0 obj <> stream xڥYK۸W萪,.8fb3M*ŒS۳> I8T A6ukFm"SLobS7.ߨ(,bs;*0TE۲]A98{rvLi3"wmsTEAtex8nw&UA=SUy*/#?aw+jU<|YUS_V<.En :l 8rjSk 5֕PCxYaMnA&Q>ai~`.gt:5S =)~tɪ`P&Nw\@< Uԗ,ܾU* ^Rse-s)M"ڊ劦*E˙S~1 ON„g"Q1|> 'idBQ7RxAq*$;0Q4! pM4%퓕Fև-۪aq*F]=cjUwo"P$\/V& c.O%?XQ(Of?V.5VӢ텋!/?FIxк~LdV4TJ)Ne>'@`wf2h,Vk.{‘OnCj T&ٙExD.pj'X|)T)߈i\XC8^1Y W 70 w1!v6]LxtXř0,s7߿ DfC`Əou;ף?u=)$Iя(9LIcRTQr4^(iꃫB&v#|쭬V^ׁrm2V"9)o,Y*0 hy7˹it]~Gk&ɖS94o+`*\ oQZ"C;Pz0U%^,9ߊ~(O 6(ytz8X&ooIf/Ym~瀄3(jW m7p秂,d⚻"QaS{F&$Kr?Xwzţaj@Dy9kHȆjIH乎ܢpW4iz]v2_6Tß^w]_a069d?h>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 138 0 obj <>/Rect[158.606 437.874 169.515 444.904]>> endobj 140 0 obj <> stream xڕYY۸~ϯЛEMaֱwY'lRq8$L2A;xh{\@@ht}pqnnhϋMuxy2ل_Ha n|Fԏ Dd+»o^Ϸ]oAl{70Ƚ!~/np~rs. ǡן[{9T4KNMۈx/"F7vDw [rO]mt e½~Icz 7h=*ZڎB6Fv$w{Ҳk)6U^i~p̎ cs k<>]d^W6GmYjI葺=0`5Wř9_jN3|\8!{fm`nS$xjUPVl0HgCL9P㵩&BtMN%Sն"NGٜQkh<!J2Te,zPڞ}ppn;ͣT6H7$fpIˣwHgS8:fofjcY]gn VX ;}~\Wɵ&R/CZn0VoFػzgJ)κC7>;x 詘[7`S. PhF똭ީ̟mC~ %bD$Eï=w',Y~"?NkPEe];OZUDXI !-dMrmSH<5aRw.DNd8g7=l$I R*$L1bg.bc,WUF.[a-VcwtI0?qW)-/C x@zx`iѕ{Ӯ+D^U Ky3gY3sRO RqiF] HS%U HU0;j = ŢDoOTje\Y'|~TTiY9L#\*:z2C8IK. Y:-b5YW˧`-2%ۓaFH3]'veGB`/'}`(Yq`9ДӁ u{YEqiu& i7jlYf)Wx#[KGC8"w)' bbgr!vTO-u%皍\9Eӵ4dE]W`asQ96@cmbHucG*e Y*b(ƭM@Lry #*mt`6R;qӂBd$ 'f+J.m=P>$GTfp% LJs&="-Ix¾3P{z I3{^1\#DetEy[]Gb 6.w {R]5OM*# atU*)f𳶖/ GX,?poT!x{jU{F_,•Y$0watCgc]Aeu.L١j-*L\-SK阮<޶rrr ٶ endstream endobj 141 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 143 0 obj <>/Rect[172.513 208.268 177.967 215.298]>> endobj 144 0 obj <> stream xڵYݏ _aגOv {8X'_Rx2\1D(⏢( /?e" Da=<{q,42 D=hÿ_DDq̡MEP/lM!|N6b[s6l;"i ;+j@fVAØ(?~#DUۙ;󃺟SUͩoΛ|mTR54S۩n>[H'4Ro+"0Tbz E6㟪/3}2mGc=)N;z羆 uHdz2  /jgD~~w{I?;68([vD)L U c[5 ats$J8#_ :ȥ\$7 Rv !;HHUTW} í^we"grddmNlؿCNe=48j UZa_s 5qP$4_XS-ft,S/ !'rvB4B:몴Ek E:l8=}۫ZoQڎۆo+i"yb Q#ZxpsY,Ҭ"qC:, )afZP8"y0hO4[O~?$t?mOxT`4{2d]GipdΡ^7n7]ko;;sU;D"΋npD`A;P7be$oi l ${TUGU_}R)8< Hɴs82U$QO RkȲ .rG?]8?lrqlZ P렘-5Kޞ*کNQفşjQc[l/u"F?ec: x}Փ],  S?e2"tX$!dSH%tXF=,hl#|-ېA"usGC68~V|+2")A&8ʙM8\Tӯ2q"FPȃ Bn|P2IV0 r0EyOYy^ڜ4J qae.J6OYAF-'tXbhĆ"F\QPfH oOȔ5gH^:;3& :{L9L`hbZsZ~lod[j:Fd؁¯mAN'2W8)"]vxbJi,'|x`$,rK35tKL1lޖ3Ck"B2>SaZpy!5\+zsދ&A[&e@@oI ܓщc)fKu24cTH"D@!A:B3S26d eȬ&T6I8yь+i`Nt!Н1a} 6j.m`E4_EƉB.B"ȊQZl *c4ep]9E)YE)龡7Pʆ(e))PePN[@߄V5@~& l7` k(9q ^A)*?.Ҹ*XN[` *VNxױJ8+:VIbj_k@o "|&ˠ^g |&T\ 9L<@h >|l-Foxj@|4]Ul&}+L6Fy ,'o-FoBIYV2I SӸ-XI4Y\ggDX-% SsIM {1 }͠kA?}f3xH8$( &\Fe.|3em)(j[ yl\)wV:u?w׶lX)DL(}ŕNc;Z3kWkX nM2^)nxqyT)3fId,m)6kF)U-礬 !ɖo%Tٴov S-*\l66j \,2'CK]֍Xw5RpA/΁tM'֘`<~N\%`J;/rP CEhiWnj"K~ٚKe`4:DlMjWcm鷿) endstream endobj 145 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 147 0 obj <> stream xڭX[4~W=DX7 vA(/s[|K܁}`Y*IU_}uq'; 'RNV:K$"bwv<$O}#Dpވ}?l/A՛;x?;}yr&OOmș#}/w/Q൜l B08M6k6ʪ=M).t'Ƌ78bQ:*ۄܕf nkcqR Ddj , aOXp;C ((ALOK / *<.˟`U*X0mUVʪ7V~̱"ME{o=Ъ[ռL a\M$, fqk#mD khDQyAٹKV\SNj6Kћ+d!G\E?݃ gr6!*b3+@Xh+RE?h ,W!1e^.M0Z@0^tV䨪F6k,n̞)S 8!YO@o8昿- ܢ WW,\G.I t%LPg$Lv ;n{1?T4/E}UP/>RWfnJ=xDenhIsL:M[7*m^Py-ι9UmҼ8Pey.}uU4ߝdG\w';7*Sm n+4R!:;!ZSM%=;+'@#>ƬA:=x<4.t:)W Q ^O/ Kv<٦mq$h_S5ky_'9y6)F}[0(%1D9ѸohB467'UT# ɤE͏v:ꨆF mGO0 h#”>\DV?I <4ގҬL{QO= B#X`vK\ Jʥ56 lOM1GvCI'`UCYQu4Kӈihx5E8>2m)OƏv Bb;QErA}43-8$0  @h8/aFtJ5zG4<=d(Ԃ$Щ5.>1ytf6m=tf|?NB endstream endobj 148 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 151 0 obj <> stream xڵXY6~_G5M$~f퍃9f}Qs h=)HI=z,Qd}hR*'YU;фIGB0xgP~qc …rIW(v{J~թ4GA+(~붷nϓ:Cr :)INf)a|~iOmoGJk>F:7`?:_Ci*ӷp">0H$vo~sn%>:|#bӁL3ҫ0'8b}:O.]Xtg7+D3"6ʰܴyF(F,p=gbߜF0. ym'žUE=6lsa<2ԟizNvL%.{9oYWf(;Y27,"B` p S'Qљ6}[-tbD/?oE"q ’oqќsrBљ|YxJdvM4uQ>0*M>t~oM~hKI{lofF>RG=PL@y7'e ٪PI\`j84>D7}xTl ڡ?aTy>nȳq0d.546ۋLo:}i B(mp| ;m0it p8 u0rѧ&h,Z'sBlYԕ(Io|} PHrd$P`Ty{%P:tDX(xqc V+UL&IДaGHaED[BK5y>fsV|uZ1Idx0 tR<y=l_Bs~07<6vs qoSx♲ꙮӚ).o0v3T!} epSx $vp3N \Ugp4]r/w\7~_QD-@tey-*RVQE-eFKd-Ly VR׹ׅ,B& Ṓ44[wJT؇Zs$ϴf<a55%J_;&^6#;\В\:!]x*t/w_)d*[K̢Ikl2]]l@ t'B%5Ϊq_Y~Tluݷ\O[V,[_ endstream endobj 152 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 154 0 obj <> stream xڍT]0|УM[d}!=R(}08 J|q9%ۣ_ ň!|(9A R<[D$ 'E=A,>Y!FPB1&~|y-+S$19F<\o]!4aͤJ" 2J)I&9KV\hVʴZ:WxlWX΁֐OU8ό #s7LTY:^S.!}uޙ*thILv)ֽC`Okœ8QىgI&^YkV#sG Zunƙq=6z]ٴٷ㼨=Z7~0y뻿 endstream endobj 155 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 157 0 obj <> stream xڭW[o8~_aJ*΍MbʌYS҇Qsch`@ **՟s9q@A#ȣs}S1}q$0 `^nfڻ{m?7#O$Gkd={},{7|< ~X&Dwu~];כ̮c2gE)RۀE@9b:E\`K#|'1,xJoU<{:Wyz*9oJ[VR{k۽DVWUO]]C*{G `TpDsւOA+&c .2^ϫ3S> jO~[ Ǒz endstream endobj 158 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 160 0 obj <> stream xWn0}WD{jBL 6Tji]äqh{al_?C@C;:iO{}ιBZ^ BLcs[uB7wj9ȳԌAe7@NSW3zm; zh\TCN EܶnКI)g$)Uu]=} @L`}:հ9.&\ Ʃ(ɔNa.1tA98qg! u<1x֭`b8vo *aDmҮέk0p612YbArZ3#(yx+sNii'YF=_@%lbQXo85./=eΤHAfT,hL9$) V b ڪ RuTDmY3D,c`wS/z8ݳ^ QñH. MJDpɐ;( vRdrRY'Q;i~}R^o] us,}Pg&6kɊFJ0o{Pv 1\2gWd\Gi2]=NYs%AjI4c{}&zY2~)J-;^ۼa&aoʶIp}T8wT09&' F*A-HN6N}#od􍌾UFOnü>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 163 0 obj <> stream xڍVnF}Wy(4g-ZqF"銀$2+ʑ#-i2$G9g.;[#"lll꓈b 6?FBXhTC{AojNyi]sD3б949=XiRm+!{kjJgm|_/*-ҁ/.KWl܆|'ڕA|Ik-wuǓ%cɱZB۫Je|[7^ŷN馍 YU* _(+zoW@]>Mñqx J‰fM Z/B%/c۠]UԹ.v X-qno:exX̱3R٪E95!o6 veJ^ M3PǗfv`@[q-ec)Ќ3a>ʞ6gV Gkfy99.PI.3bnP.{þ!WmBCcV1.p>_лE9ђ+q:|J!"6Ǿ&H5cSȔEC%Y*K[khݿϧ endstream endobj 164 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 166 0 obj <> stream xڽVmo6_AH!w1C߳@Wd@h")rd9-0쿏I[d%ŰŁIw|x:zDHR`mP@OQ 1hrg- 1ehD@Fɕ- )Vr46DEc}1q 4 .Fc" _,ʰ;tg)ǿchV0GHF0mxJǥFn,S7IdUI&|7*b~ y(*UyuW΍.4ˬZOGx86q}pߪp{9YUt۳fKNGV;8 )@UȕרNC?' 4pmM;mm_PsHyXH=d2NA9-RލSN7dsq8]/ ޹r`31fe>ƠtdkT9Cy1}˗/Gc^1f*PO-^l5"(k^7e"yp{`r~ ĚR{_p(x f&%Ah@[/^\ޡ< m : ۾G j#כֿGEr# hvD$ltkJ}V$rVqign[DBPPV*Hʆr@Mi PwvOYzl'dQ㕜C K3`>;a\}k m]T Ƀ=01J0Aў)B\?0! endstream endobj 167 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 169 0 obj <> stream xZݏ6KZ?>i$=yܵYr$9PwEӠ;,!9C^[EbEa/z!0v X$jHqfj1qX&"sGmV$b*Y,8L:ɕetBګ`ڮ;- _:0&:cI#/y% 20UAk}LG"Yj >KꌇfV Ϭag2OF@:37ݶ*k2A+Ml 5}U/4XfPK ^_q R$xu%漥a,g 6>wAD`cMKꝃt֬x+L AnZ]'LoElA_%s= '}CnX ~GߐqdDP$Ǜx3J!W9 #M_n#9D6}/;t:KK#`/}o! x%a"Iƈi1Ԭeb :e}7yd^@nATUi 2>:8dӮХN0aIWGIv.hP/r`.:_3jAN>`Hsn*7lOxF ܏L1^9K0 a([z=:tF]o0X K㨍tbCj t~~,mU/KpSV:{s ރٚT ^䭩;@%ǔ&YvX9yB=ҋ)"l`3WGc| ۘ~嬟bMj0=$ygKKF=pIFqBW9+I=nPNa%$b:.YJ/hfUlK_] TՅٯK`-J[:RJMnJ:~P\121zlپ芩3e*=1)Gj\6bGG v%A tCsN9:XƓwsx\_#5Q>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 172 0 obj <> stream xZY~ϯP8U+~lƕu9&;1D wwHHVWQ h4@f*^EdgeXzꋯ*2*W@N0NW$(<<BneYwoƙ7)4[8,K>#r_$ܧߚu7zǭ:)6C[C_cF7I  ̓8ԆeqK0=)_ݬ,L{2 =c;mH+y{Ei-ՒNkIGN pqjM3jcms: 8kwiRMq_8ڱ7_^d%e+|WiXfD]06H\v \0-<.Iefb$Թ˅u=%:"_ﴘ}E P9&ѥ-_P 5`xQ1sRbLXxLi#yAוUDUЉꥨ㑿#=74 K|f=IT5T8p߰Eîc+QÃAѺo -[HS7iHO kL}$$JAzq1+B]|\1?Pf CҨfrJ\ &Y[ۡzn5!}o^_y2_ @ĉQ@BETƧ-o ͟1` 쬑쪽48:VDNrhNZ*/%$R 6>tBְcVpc}hÛu^*NyPOPv93HŋO0R?'əv+]p 2F3mK`ͷc;\a]h}u1Z_h}1:1Z 0: 0:y!F'/hu,B#y)F{0T6B0Zd)+i%`#u@d87 @PzrnX"u߼SA۵Uv0;4ٙ'mMs`[?ͦaoxz7buCPs=R< GCǻᄒ(~/A9( y^yˍ6vk~oN3<5 |/7[u;Lga>ܳL@ G<  N`I3 jt=H0RRh(2OZPGw|;tOK D&}^H8|lC?wmҒcJ>GvV (BH\0}eZ ʥ"1rllMtD9*nc\I3U[xD'h3`N& `&d;f!i0`feJ Zޱ7nAp/KtkQ% +~xl. *b'#1H[wkP_Ai:'aYuX4x: tTSckbz|-=\2zh|{?4hK#dcK VT'rJClyW~6S@\9 :@x}T 47a>2 ~!fg>FxL ")5$ 9c ]H ٸX#aGؙhvNtH(ԼZ+1]3PmA0p7U+̾$D 5uo <7qLZzHM$ # (*I>W/Щ fۖJ>,{߱Gll=C#Qz~/L7GWuVT ޥ61c]w# iD FLӊTSq =?A>[zͧژЀ }U?@ -O:b0Wy1>"S8%\9 Y6nl7L]ͣnJ C6V{3Az,v̀O =fJNh>UC+|}ݎ#ߌf 'I( QH"Bh.Bc^.X'!ɦ1${. >C%-4qK|[RY~'UZ!Џ )I.xNH u4K\+Y$K䘏9JMM'!ϑ؎;`RЦ_{g== $=YG,vdi\X$Da.ҕBk3U-Q:;X>xog򚚊^Q9cs{ܿpٰK:I¤ 8{;,XbM=+TC] Ƞ_? {5QpBK0tG\< RhL1Bod~{\AK%|e:f%L;B.ȫiI%˾ƈXlEu@b=pЪNZ{6PB 59{˧^:8Vtȫ˙VHϬHg *S,( ;xl&?j^L*3 WwX,Y6:U3 ԏS?9] endstream endobj 173 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 175 0 obj <> stream xڽUM0+|L%2kHaoh{K#Ҥ8 +=Hڔf"c͋}Ca#HR$Qy@@mPQP TahQG`NJ ZG,)"H$A ph!1瑀)OrX`Ԍe3I7.aW2i#rsF'BBs_zO/iG H (h,9NL,q(CѥZ̸VdHJΉm@)vo7ypL]lWyu)mN~"g&*evv&oGb+M]髶Iٷ>EV5ӓ՘4t?Ԏ},4"`58ϞU/q'yuCx$=ɯ7r{KOrtO=( 7nlG/.$yCD P@b^bVivI5' R>.QǪn'b>Wg,x"sTC۬wb\\9"mNL*9UwwL:  h;teAhþ6][m{]7)-}s/1Uj}؍%]9}MDxqueڸ yżB >/u] >/kB LBj^ڑyUbr؇7? endstream endobj 176 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 178 0 obj <>/Rect[311.793 675.547 316.027 680.684]>> endobj 179 0 obj <> stream xڍXKܶWtT0A%%J)v}`fsHrҪj _S dP$AW 2U\hDI. IQ4%E"jHq>|~|}ÇM ?ewLw/?$oxT4RTbZ&i'&и-Eu,~vMYc\(I@?º?q߼=^> 2֍ٸ/ׅsEE|ZY c%**<>+}1_o%*G-BE!\w#əIp5$F3hZ >51C?[x;kNGdyC_Lh(cOzP3c-k1U =?yP6n.O:3. @Mnݩ?l<ƱNcq7w=NgaN=  !{k,4?Op:R^=hOͭucY~ d˴3{CQX8|b|A M@'ܹZ sۏ+ _1.Ի3IŻ_7[j#{)a7E S;+3lBd7:68]%{5)ca lR:{4" ]C[?Pgy6j uu(,^t"Xбaa1cG [<#E3ٌP\AHX Gd{rT4@F]s6 $@o² Ϻ_K9JySRE™T+̱DKv7x:,TcE=+V z2sw=?4 uǟ_&6 ;?PѕT1AB؅O ;` Duu#g1[{o&.g޴52$d`w t1 NxxGWAY\qw$"f~VbjHҙh1iu.J /n,p 9Ùj~gr23|} 7Ӿ (w rp/A>M -)WerrM R|s8EȣG aړ̂H`ZyC]4ђ0,?aK#ivf-k |,Wuo>c9쌚e 21g3cZGlhi׋f]"۬zV9B R1:V#M\bhT"G0 5D2R`qMw_ 1`ƅI3e@ r$|O}ˈI_η֋py<|뷑\ː隥D$ϕ` 7kP#DP˻Tm> SPMΜbؘU%\4W9gB̸ZCSh3zON w:<[&]_Af"E tӼ!v2: |@T]MTč)f@kA'xh>vbðnSKD?bRdep!E*6*4ER$W JQ9GQdVYOTj&t/m p8 &+u~/Md8}1}6HLSH=hv֬4zfjgmW!Ghξ1%T5 k|_KHcI۷e~e endstream endobj 180 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 182 0 obj <> stream xڭWK6WJ@ĈOI)zئ"m Y8Zwʒw7Ce˻R6&9oFgz3/V)IR/y/£I[n=!Q "{G/o>{$-H %2vH1K{2S …22?͈+t_2QJR) M()0 _&9L:7M`]QWN&8[h4QB8//^>;&cr9 sOI㸯t 7n\福;udJ$"|ͬRB3BJNJ_=s%tKj3 ktnfdotMpDEdNnUbiu?y[EL;Bb"ҘHfL&  X_c_ YΆ}79ںo27_}Utp0>u &է\јa=|A^4ca@E"~nl0kg9[Ava:qpanldItfr#)NWC\[Eo3͇ 1EW|T?BG@aP5bP6DQf2; T<ȅ3Yd8LqK1BlB[Ab3GUpILBDz3ؑAL bix*`quW_pe~xĉBL}X~xf,d ّiȒPk)"Woe<,4^x5A K雷<'D3e:&ܤT†ޅbH1/U]uSt7;\-kZLpc""0Omdа!4}XԍĄ@wyMd?4km3^y!uv-GNW.,|@U^(284~JT<~_@>nn+zo*(sWtv#,QYҜlfOE4m4;U }]PrEǶ͌ $H/[.AgQď,-RfoL; #Ĩ-K}`\>/-fP!l {NC~0pۂ,13<Sp[L  EG%O!02 Γ4b~eq/wu 'TiU6vf}[ ]Cbq>m{|):(c}Sp">y Iwz`LbT{\ (U63J'ES=9$o+0WL8rN+c侜 *925w 1#?z endstream endobj 183 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 185 0 obj <> stream xڵXKs6WPm/L;vR{^h 8C ﻋ%ʒd\ `.| x8eIxz4J-pLE̸ f/'_g8L `D3(£ut|:;{s~2RϮfD}|_|fvz: ,=sM La\W'1 bR^F %(h0 pRGʼnwLt͈* oQc_^# touU_lWhbر,( tѶx0-ޱeʀ"tL|4ZaCγZx /k>Ǻi ƣ F:f2DME8v}"fz2Ij"Lw (xdWYciceʹWSd N!Мk6f0MK[CYhF!wuE]iƉi;~$V\:*D[O^̋ <2pIit $!&W M/mZ 4 :6 9o<; WSnEϭyߔ3o4'1Z/ᚘG;&}Lēȥ!/"aO&ËhOJjo~J/aHanq+pn W1lPv8İTy~^–$AyWŌW̐bOGO3k 'l2 ֖٤sJı!M4`a]~3Bd@O& z x;v\|^ƕji`u ňp1;UJ(%\ﳻ1Po5S|0yKftːHcc2PV>  Bsd(*4}w5*/jx>pj,WAB@+Ț~)8x9Gp*1B3i6x>A>A"rU5:!B nQ`{=ok=Eۺ*YF|0uuGd M7uYɐd[4,Ra`ER`'$"dp,zr *d*vM&l/+="B"7"emkƛhj Ch gf8u5}FQ *kmKkav8,֋c^m^,׃p7ĨNIܮ j4p mwK~ 3 Qʌc YC-ᅸ9lSApNqeI o'+\间UYFE1( nhE_q: Vm/]klpx p.+ꅋaNQb"MS b3 "Bl\25vUrARC`]@>, ZAx' O߿liK@?Kl6'fLw4ImWUuUNP,WYk3I8e5K15Vfi|D&z wuְ+"?fdxL`4}[20A !$mxo鱟'Y> pQHmBG,>n ˋozG;ߑd"Z1oO 2 endstream endobj 186 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 188 0 obj <> stream xڭXKs6WPm/L'3$V{{`( %*$XP,*4 bw/|P-Q<2"2iβ<*ѻYRErD2Z#;lAu;QylE[ SM  2T #Y:C>$Ѣ5Nݪo U”FrnI[O2&=0 2g@o:2ܚ⬘j~Ut},=䏟ۮs)'&pGOS&Mt͗LP@4Ү&. n;xYbEkicZ!iHH!ym>;l,`hێdŪDeW 6H_G&H>X1X͉*xM;VAL֯um[z]W+#m\N8O >VƹQsv⾡*{BX(~AsvKV`2FHǓE=!!U| g ± GPf󵶞) M 1y C)Hi٨m\L^wM]+24unz0~?ixd"|{1lox4\96]ͧNxcijMU앸K]Шx|]Ռj6nTfΎwL'`v@)I WK1(?&~/Ԓje(ϩ(=s  dV~kN}wpUa\2z cT3]\\ H3M&bz,}1OpXb 2{xyKrPȡ4Re&e&Sr].mD|}~t'P:B2[xpSϽr?MwwS< ga;0t}[6G"lրx η3sA`XwB8JA>'Z,y!kQLC+3$IFʘ&WfJ<,] qĆij$ig 7|zy s@nDl}2/nʇZ1`˘ m25&Z:Z᪤$TuQzkFR>O˲S`)7oNJKh`4eߴÓOE /EzA豆afPiwWGCDwH$A֫n1ug_l\u8|S|s/if!TQ3 o9>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 191 0 obj <> stream xڵX[o~CPֆ{!<}p|im89N"M-)3;eSq 1.sfFcxEYPO xIJ( f1 2Ϳ"|G:3%9dʣ( /~᧓d* /nfD]S^ή.o'1`i< gV%_/1 bR%NF#JP.aQ:i 8gY#32 fЬ'q oSغ `}vt}QcҌ%^#]йiʶk|v۵ u U:e`;kzG CqPËޡeƀd\S.YD"oCz--m"E"cT;2I@9F}ךD4 )Y獡m7ӲC|ME* IM5/4MK{U U>Ң{+~wtMwӘ%Pg(A/?K,3se:cݎ2o,sH%Bw}2x/0B;c '|L̮'P>c7/;<,6ͷ{PQ$AfHYv:i&eu &؀R$E1kRo[6-I&oԜn@49@4'XܷCJm/_ }Ɣ+ɠkx"yW%8tibPSσ9;clJc,cl m e"BK">/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 194 0 obj <> stream xڭR6_Ύ%Yvi!KqxƉVCartW/"A*4Y*<ʃCǂ%2q," .e*x,3 V6p B0DWl.yXV\? prˈ^!y73E5</nnC,H&+ pvys{Bzɮo/}qxYPO2*W2&9;X2g\(jd> M9b+»ˢd\ ~Wtc~*gg Ѧ1ail`ΛN_g" u RMjW%\d{HXwfQjpse\}լH?g" gHAX/i*yJFU,zѴj #p}Q׺ulJww h^{^qԷj.qWq7t^VeOCo/3y+V"85c bzA?]uqا%bx "BC64S3zmȽ9YPg{!CrȐ ^Wݓ5™_8$6f^70knd"9>>9 (&o F5@>䠀ΐx;nB|V#0U wl m r9O'?6nK {Z,iWc;ZWw 3r`}Y}ޔط2`΄8jܧQ48q5 yO endstream endobj 195 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 197 0 obj <> stream xڽXs6_Nj-~sv7w` 3TłeS;k\ o?EG~~w6;?90J)33~y2;v͂?e&4XL{\<1q1 aQ{B\)d`IᮚIf5QQo`* ~~_&,,|;*F45?;Ӑk.hrcQPU3U8< b&;tC<5b@*›s~mO,'уx/(lN.VNÍa4r`N[b-}zpjp4ڢhmg5k'$M8e2`3-4)S>mi(-IJ_#u8SBXlVT‹kOבV_ufޛX2wϞ6>߈%84b2«vsd?;b2v6J*M6A&p8}UNT7Hؒ'5?"V8% ˹O.{n_e|Y5m?lE[n k}Jzu#klѭ"5M$Kh d@]!^)Aݺ_ѓ%=dv禄hčf9^]4Ih$?`ԅ4 B^Ld\ƻ.}@9E dm2Msm?ၣn;Ⱥ% enb) -5Ifvd&PL<ҷ_9,*KzB)/rONxwJ]sQU癷pe@F!%@sI[qHZϢWLc|1fn9sc-6kTr]UJ͝3%fspG-[WĻr \Զ5-KR~L{=[@Trs=&TN>TW3vv) sbFEpНH>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 200 0 obj <> stream xڝXKs6WH&B3=$^P@Q E|q~}wEYp4xb.>p"YZXTŇݭ\QXmR,0N@快7sa1)gEadclYeW; eڮ7r>_X0YF\3"a|RfNί )&Ʀ@e]tsvm2vDsۯxÎFː -]ERzrNIO'jUYLT6)Փq_ 8uΠ (38/\⣄[թT]C sNKt]- R%*C>%F26$6ʄjyøQ4Ƈ$cQjy&$s >SzFBj@۱6"B` )mMETPPb>r:N?]AmW]72 P\"1([G}Nj"v]H^L`W^ P]v,}kbN=A O\V m&v=m`h=ֵtefʋՋyz iE^QymlLD^ڋ&27*H.v0ovn|Kk84$6mk:q̲&|< ҉ú- {뉶Emϡ3ȋΔ[_|*8GAシ̾@g,ɿmBƸs' hN܊lS,=֩m"6Y-9oMcݨ8K^ٹˌ2 9&mm.'0A{9 ߡayA ʥ;3KF:o@Oh]/Fي6ׅ]#`pSv9sO,$sJw}Xh'B'rNBuk>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 203 0 obj <> stream xڭr6}[)*IKx`H qۍ%R*WYM}y_<ǽDxI4fKx π117C1H"L @Dd4A?|fz{uq4x;tnb/z_h2akB >us~[[jt[Sp B|ݎD쿌Exv{XU iVY2:7juFc)tbB7jUQ~;\J&7~/ǹ` tJ",vd|˾^rj,n9m^95:БHY4P okvoQ1ws9y 9sP`fPGzEB7w7'K$eQsxAT2+GB'6A߿"oV0(ߦ;m}^#UCݲfnMb咰/ yHW*VI[Cj*Ѷo5ԧigWQatI8k2RM {2l}UA:.p 2_j̗x$`kvo(W1nڴGx8㮣ҹޣEÎw;@Ch!q*f(%?W[apt##0k:3SeYt xX8|&Zc!]M,;_mgIRʍlFpWPuwfa"(fԪ?m) <7,pdJwGs0e1BPoLɪ5jAyce0X޻uSbxYfGN`Օkp8^9Z3N'~"'k4$74^4I'PBۺ}@h8qkwJBg8ܶqtܰgYz"3@$URAz*;~< HSq' "bR}@B&['3-Qu@5gƕٹnfqa5$ʬ^g endstream endobj 204 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 206 0 obj <> stream xڝYY۸~ϯPJU~:ƛTvG[FŒPC2g}eSS5f诿WW|_ebˋqZq>,H?n^}؞ ˌIM9+ '+Eل3Me$"tS:T %.~cm߷tG}u'ŒB5]S7w+z~eq+j%KAqt<I?5==h/ k{軾Këy:̞7L[Ckc25Lf`\a9$53Y =? q{Δn{o:m˖]ha"ۖt"(8K_] əʽX,c[}_CO~ ll}꼂j~-RUd]W@]jfWW{jk$g#g2(' ޡ>nmg8Sۛ4Dќ7Pϩsx6{Mٚ=5&a70â `'L6(6Imw4)VLԦVfb #?f ,~Xox VbA LyݳMB0`=8t`wBF9cWcX R1 V$HT$9w:;j4 =<8كRd,3`!V$ gƺ=:deSs(좁IhF{hWW4{[?$Hq՘:q`䍮wtns x0v^)K{jkvv.` Ok84<9D5Dz·m Z+O߬7IvT!sow0x?_hpWG0v[NnNhɱRP2YR?E8lM#\ƓT'z _& 9-.b$)ܐOU{Hɀ=h7i]h4GuKκ4#x[On pS]cC# $\GlC w:߿X0M#8<=%jڅm#A 1W+2DF&14JV>" A"(,4J{5f3Q$&W~}3| t*w, / /KLXt)C+ї : 9u8\[p8əO0M}gqJ}D3 zXJ8簰@,4&.>CJۭG`Sa }8tܷB\Ƭ=/%NY5*S*OCKf8yq1ĔՈ[*DJ&䎉4.@d\qc(¾u$xc n/!Giޔ%ԥm4G +uNOzܠcD*X@u£txi.W& ]$ĘVY2fko?} : %nU%-ftbQȚHlȾ[2#aXi;y ݮHOtT$u{v^fQ,zD-P%m}8cQTJ92U](9OzXSD7ޞw1^܍;yX;K_ma`2yE5o 11Q|^1t<P ]0# ҡƍp,xܕsPx&.8t@fHlz|o5$"f1C8 @$((9K!9Sw{V3;dtXζ8we\t5V F8 OJc W >>7@5˘^ :H:„SGx1&⏮hU>);w Tzv'zĪ#֧.pzC[JtGPPBRNj"+6]f /V\|`š*&xu_b[̨O.k'=6FM]:ԥQ_g.`ʶ"}UڧP꺞ٽJt t _7Nz?²@2JפEaH?nCu߶?BEnVߜoRΜ 5JϬ`+`/YtފZǃ`Zkܩjrou\K* `ޙ-hN_n\#+`9.2H)%/8an/ۙ]H՚~MٵϐkKyP:O-{p$'u*-ȳ ?Y-L͂l P[mmޝ[kd^1 >nYU_?* endstream endobj 207 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 209 0 obj <> stream xڵr8_Vڍ`3[{pgƮ3k@SZ>4$eP,a֪2@'?<^$DyE_x'BO" 2oq s `R #e_>}8py6Zϯ }+"zDyxf,ExFZD8+71d(t[ѐ2ߜViOJE"K(쮻Yf=?𿁭0uv׫LI311 xt5tޜ+KPƱHF#`dD{Lࢿ^ESRbgFTZ$% nOD|_6?D -/z_kǀQ-`vkG)[l䨂 F[vJD@P#޺෴,xBBF!er 9:5tQL"L- 5[ wa'\:'" dF(/OJ D;NV'|, ث,kk,Bpfuluxd^jaOS|׆c:=Mk`afد޲{ʄxMQAyW[jwcՆY9$dpPV?1^= h[B_ _+<5`BVܐKx @:​k4{@eU1aok\ԼӒ8,`+FbF\VVw7h;zmՁm状^CV/Ɋ=@Tglĉc[ph'VŶ5nbwU EFҖa`i'zν [UzbhDp:u1i 3bͰ}HÉ 2|I9/͜d(`${4B31 &u ef g aukzK ~JvHiy7R1kխ'?oƼʥf:>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 212 0 obj <> stream xڅSMo0Who8n]TUU=-@I_Mh#̘7 `PI*+.c N UE3` AANwHy k0z"b9FDn,D@XmSӓ=p[햲!Ӑɴ'᱙\@zEO~y<ʙbN|#9(4aTx(=>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 215 0 obj <> stream xڭr!5>6gٵٵ@S EjHʏO7)Ae!V '~ҋGHR/_zf/'7{l0Ci)BO2_O?.>^MZkvF/ /^]|ϼH4#)L-haa\ycP0bchAOW@@y'5'HAt*! 3j'a loncB$Q2 F|qs{Bu+$DH4}#€d{K2BӫT>u*pf4)fa05w>}Y_ȓ-^=1!Yɿ!4"M, l$&:DLU*_&6R~Vӷib+^4]ϋz"o˜p.T7]ٗM=8'xge-ߺԣB W6]Ӳ+{Db~Z+цC2mGWYh!Ǽzo(, Xfγ_XŲhnI` [p})!:pIU'5 wCac"V290ʢYC;A8o.U>4;De,}FNMzP"~b_&u$T*zr]P"οn}y7of]UbL1cvLd\ bD+ [YfDPh9ys}~vQ-g I2x#}U!vvQNI8" ên;S%puv~{;?FpRZlRqz]**czc T.ȈP*Ԍ 0z 0aiE+Pּf C=٠[x/ ">e8JyLZ@xyY^}wcbD :O8 FQ+`/@(#t=FL&cAxɖ c_ES(o O*4TZĸ% 9'U"6#!.^ v˚YVsbF_hhqs;lGlQ6)n!%AA&q!?B\g"x#Xi* .#*&kK;0bF@YH2eG(oo dwNF'lR*%PƜm:b&Z*&fCiuU4m &=7]w|Y%ԋYWt VЌ =tIˋ(Xr3(wKM_pZSc+$fy^ R4k` WH* B͙#_b3j+`+"n ]qC-!A\Y+tpE1ΪϠ*O/ 6miV`;^VKb_*ӀNJid}knj[^"6#mf^Z+ GQ48NɈcLjs *Mժ*M3hk%<|K4e^С|WR7#NzVE0ϪMmDŽFml o[Ȫ +h" &ms ׶i'Aۊg+.aN=P.WY S@N ʊcŒRSQK)h29 h 0UKg;MXg{L~fM?q?Ǎa~|"o\ˡ$9+Ev36O.BE; .2uA=堞d`YM᥮[/W죈Bٜ4!^IC˄@#`NF*,;(`pd4 g pcCPxaz@yT.M{_PE :w;*5n6 `(ten1%[^ ^/M8HC/6}IT6߇[@e>)SsXŘܔꝮUo;~(Ү9~[dtV/H:n9Tz%T"z^ *ڼ:sέ>\I)!W`4̲iWjD cLog7Cu}((qr>7W, endstream endobj 216 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 218 0 obj <> stream xVMS8iKފKANlvH L <\1`k-ɌfU$n^w?N2,jVդ#/YM$+$IE$7*OX{*EKZpJrGr%yG.&.OƬ &#s*jyiyQ``8PtzL~eDQQ>%ۭaj N5x#{a.hopMg޹PP E9m5+ȫ yc:dMkaJP*B@M>8Li^B Ϩ D1dJ8FPasՙ7nsa|[pHae6U{L~:lG|OeDsNPG~87";%nKU5+|_,_/L^Y1UϞu> +Vxu:;_..qŊ|tXJ&ᆐE5_(/o 5M߄&tg;ɏQaz֦veFԎAj~i~po 23\o:MR[ny!y+Xt?͟‡m+YbY`-R?N/tT Vz;f"IRI:x S (h -+j7m? FQ0.K D@]&o=zvtz ~cgۄ&+.=SVq wKh&!IyQӣI uF1YXcdit^!54i4ph;;mQy_k炻l[[{KPx\^|Ķॻ3Ղ=z3{IrȔpdV4q(ߕ__;ǂU_2P,Q%pfRŌ~]pCl' gN~/^ endstream endobj 219 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 221 0 obj <> stream xXW6iת%[M_c ҃I{`^ 4Ż?T4sea-n# 㑷XG p80"< C?ǟOgAE储Wgg»X*G3L*o2b2ƥw}#3,+Ȇy YyEq2)! ogqN8N?u4q[7@ПM&1L]ueop`J &U<)f;>2~`W>}HH!k}),cvM_ߖ\fLR@UW &?ܕ"U~D]E[j&O2MCݴt7#uU~vu4dsZ^ݕ`ĂnFe^(65 PtK3W NCΒFMner-' ҁs?]ψ̫FLC 4=8$F reN;9HҦ{\c})S/: a a{v/e@ULpB 3B}>WH)w6;FK脈Ш*i|=DQbmM@ێ뛼i$Dǵo(:4j-ueGw&~YV i%J/ "UN=AeO$%a>_.ˡMd\ =̑pP3F(ޑa-'\bMAčYEK0'S}"B'axK#~[ņ003RѾ4yכ[kqc@]zCCl^QOCTPkEk N, j er{r>!B#D 7*,S'$ҋXF~=ՙ0x_cؔnrz߃ as%v^S: KB[j|ipmMh[3"z( %f,gx]r1Ul#TǢ]DhgQ(-~wm_-(nB7K|GAx3j; )3A ?몀$@-mͮ!_M#X[B=K6*[l-1&oͮqk{y*>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 224 0 obj <> stream xYs_Nj-W:};]rVڇ4[HLR8}w ʔx ~ ǂYZDyTU{8*"X=R(jPܬ ʓ3pY,J`DDt.x),A2dûn ϯs0It,%#ݾ]"TEeb)`ia׷ɋ(L8%h:pUK[w}˭f`dyŹk 3&agg lr'"G<񈖠^'˄'}HFmS?~h_ݚ7hc9솋W]QA- W?@F",",y1)~݃IX=J#_,T-γ|MV/ۥzK F5RZ"%!i3_|UTo]ӕ/z =in|YNֳ,|d%`FFeՠ%Kqn?tg` mF=u9xӕ=NJsag( H#|lQ``rh43* Q]4\]N{V[= xV׼ކ^icPiRP5pPYҾf[~ e 8ta}|`,TePW`rlN! eQE=N$.ibp#,wOm @2 t Qs FMȬzAC"M [r׫VՕe5yn<ff Z ,t+#LQ&pʃ^8z. )L].0A5 91+tc΂;̓Ӯ>EaЊ$4FG*S#iLZnR*&W/ <4ge,c-,Q˾ 57D}w$6+`# eьu/WlL-58z4w8{]6*C2:cUm rrnҽ3_61ExVuS-9jwz8lx63 1K=3fkPa!n[4&|{zq:vNmq˲ <8A(2qԭ6ucY:?dV3{/HWXEMPSs5=dqc@+]}'^ͅ + :/sD"<Mg?ڽQ?P6p6dzHHlajL$sO^41UIG\ 9 B]!硛$v̲߫)Y"*W 𡳚hAI?qfax<˿α`C8ggVΊ!z%?ϲϵW<)!NYebn^,Vٹs%πXfB=`QL _ͣ $;&ϵ0j`ZcTVqp~_b* e̊(y $6Cr*@>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 227 0 obj <> stream xڭr=_Lj,vൽ];YkRa -Ejy98ɒhG\,e GZQƄ? xXS`&"un2MD~t}HC?gP8qWWM8ht+@ʸȀ04X).\9m^_瓘2 1IY|DBq$C4'&TzA&2Y[]d9ئ^V9ȾS<Ո MݷkB,uq|oUjȗio>P|ރG%%!KfӖVd*e-ݰZUF.ܾG^A(2ʴ̛4#wx`)C77{jLYN:n02CGsLb 7OafxCa@Q $1sAET5{ȅnərvM;Gχ`1PꑒV ̔BO~i=!ꀠ  4RfN4T?ʈh],OAB q,B@-'21ґNf[^o,}3C^׫S,R.. c G'l5H?'p7G~~L`RTK?8aS( ̛^(PN{‰7I=ڥҋ7]V@ʆ̏۽EP$=h3ԙQXJ$+MH0s[A}‚2GzEƂI2W/o.,YΒ|%KS咑YA=>|+tbq7|_!W `VF)xS,^cd܇C=F& xF5=|[x췠V0u;P#{ w?rt {3. Zژ`ƪ),}sv硐7B:^T9j>׫^WXJ,^S[{vvuwZ;csAXB*=l,f1a|ЈⱺEpne&]uXj$m&h {ۨʥ;/<7ecMPT2=gliԿFP^0{A0| In܀>}CmJqw\YeBPTqt*&cOxᆨMʉ7e=̼ ;9@:"cU.jvHT; >/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 230 0 obj <> stream xڕY[ۺ~0RX3EyI4-Pd}p>pmzM,9dwC'X`MF7P/+Ꮿ2҂j^]V 8T{?)K{ik{vv.` k8xr{ kTm [{_-ؕ'ׯכ$U;j:!Kown009 `gCf%hɱR"8efɳxҠ[b N")A]F  X?*v#\MrC2w<\]8"fIҷevl{]cRw+7>:65pORL-{t&|*th~d|2OݚDJA)MB? Ms6^֥Nkq7čl Sa u^]cHؽ}m2!z@;ecx*q,= ӓ_F]H-6EX!22Q"/O Z`baDY.m#azv(+H>cg]vxn܅\%&Q, w crpp93hwh4u)2)Mͨ鸔q>ia_)dY iL`]CJۭG`ܿ0 9Z|BSNϬ=/%N )%@twKlD8ř bUpfkʘNJ%uLY>럩E(dKg FEzpY2D8AKKs#KsWX$`JL xȸ4>čё$34@PЀ@u7} 9Jk4_.a'Ӝ}j/@_MnP1", z :Q}9=vM+wjej~IY.etudb̉ ,z Z奲9x:XO/5!UGح1$ N " YԆk`%3] oHgɁXIAUNXGOk/,J=,,GE("ZtYuYVKCrBx9:U :x%y.RA>7@5˘^ :H:„S.}f`{W*\ڋ*=;l rbՑKn8B\]-:g#HKvGx%Uncn.g3R~=K> XW83 69+?krzV AWi]H/$>|{}]zM:նX4`n:QaOEpiWJL s(3t W}ռ̮W'?.FE7|#&2.%,x3e҇52e$KYiFOx^SvߍTIl@[>t@;hO ( ׍4:רn+ P= (%$ޭW#t0 "A$~BfAg8\mSX_G62 endstream endobj 231 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 233 0 obj <> stream xڭYs6B?;=>{;7 IKRBR. \ `/q/‹% K[\DKoQb8CHB<ꗟO?/.>^RJfAO O]\\|ћ/oKwgF[{Lv\{7ޯ$c022 P*۞$҈+9KBn(p#o>S Y"/#&# %PŗJCɂ𐄁#!]_gRƧWW{dʀp!5Qbo}zv %6% K<n- ,UTٚ#gZ!`nrT ,-"5E8OY".k[*/>4YG#;!\$>-b@NRYpB+쯯p ٟ.s~Va"o wr+x)nF<k]&dp*:1=] 6@@I=(a47OXjWAgh^ނ ,e|%٤x-Q{ |9% 6]KX( JP 5q@)=-}qLn4"ޓ Xge Q suY]gYeb}u_CDP>Z\4ѫ;RlWeQ5D׸q?;\ㄩdotpU|9WA(NEJ3Z%"(/U9h2BcG) ȵ~A}߶>oL ];] z؈ KQA0qhptxIYB9xNX;^LJQ >0ߘ"%E QPA+Zb%aeʇlKsF׮Bj$o{溜^.tWhD +€ą#n⻜!/y&^z}UDu+~te]&EYa ;迬n*)uLAW &+۾dϡ fϢa^xJ*Yq5T 6<Dt Xj& 6유7~ P6%^Bd*Ѣ1f}0G*B% Y_4w+Ό%5A$ ~Qz@U7jnj>xcd,KofȠw 5=0h\-Z=0\geq(3jB&p!?x!v3nH)<g 5:8*(6]W.HPu=9vpffDpPL/t KhEꍙhuWV{3SW=4\NfN5$JȮ9Hpq J&!v\r\=AsXUݶwglM`iC<}Â4! ]5\| HEU+iՉ)h2+Y_ ^ ̶h;IMQv֛,79I8(lEտ<[,97+:Ay=i $+0w cմhzS=Ȱ %Yn6-mbķФ0D&ZSOP_JZEb qz|q@@L1GCTPOuLѺo"r8Y ȗ=zpKN ~Tuk?~s1Qo&|Zb 6˒>^ n endstream endobj 234 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 236 0 obj <> stream xڭX[o6~߯^yQ$ui6Rt隸{iA-)$;!my` D$M@hA$˃rH*<& qB( էd$-H'4X\0" ㉑ Tͫa_+ט\)#j7U~͙$"4qG<OB)H:pr{$ gQFE޽Ur! 90bxcOĒX!>uyZܹ?]iGrg/?ȉ@y8}6ydm#P:<,NCr@-NP%bQ8jUS[ 7#B(ղlnBU]JfCoy KU){}a[Rwd6Ob~y RurK g~h[ݴZ K 2Id]Qk4 4eZcF8\#Hc=6;mwpM*,|AdgY! G*fI*oLOI}C (4%"0=4,r$ mE}l  lGC/ii2"f$;>;MxR#53 f9IZ8<}8R[6 fa<ś%$NxV,S{&Vŝ7}NO&= RԹ6,UoA-htu++U_?$&7'2bqj:[{hMbLc{s~x~vf2ޖ<&24:bRJskʫӂV%*b4eb~zF)rp؝g'Ӆ!# ÿnR  b)nbuUGePl9[Rӷ$oa *u/=z3V+JoSnwՂsM룇=R扱<\f.h 6/oi&nUܶF>Z BPMCeP]$'.t9;So:IzA|BQ5iu0kvb$"mƜMJN3|al^B8 044|jЀ| {`JZLߥnpt6_MۮtGdۛɒu{¤JpcU 6v}>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 239 0 obj <> stream xڭX[o~`_ 6 o'胓8=\R IP$mHTLFa޾~;:xǝP8a(vҭfz؋- "`\:쳫 BHΔ "Œ{^雳ӋRJ^Իzr|>\igk"y 8Cg(_2_q鬜cpŤ 0ԠH .-WF]!Y3}bxIzzuB+ve#s| iWUk$#B#1@;hMʘAg PK8W$Y+BJ,}_\j:l4]So͠2i}@0I|:j?`2:DXqѡ?-"t" jj"|mlAH]Mp&ۺ&x&ݻE5yZow.hS%Ͳ29*i<|26G|]KyӚq7h;q3w-}i L`MYlTJڜZݦhILn˧"[ "}AZUHKZ ,[sM>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 242 0 obj <> stream xڅWK8Hf9J3m4M$ Lo߲N D6\Jޒ<'&JDvI>}I"+K9%%k*IΒM3b|\" 2'E᱊,bENc:֔SsXQ8;HVrpȉz>MXZZ[Nܗ֢gx贅VABye_vK[Mo쌂<щ:"9Mmyʠšz+׌ "DΙ{ ?S01Cכ Gex LS}MӺyǡͽtMpdm߅E6HqT"P$r}7Ϋil`Spu;"4#Ojf3] O:ZRĝ}̘(R(]D$́.'"hX3+)MSa//ס)q4z}Q vN1ĖLmY{\0Dc^Q<[?|H?>@̭(ĝO ng? ijGyzB`Lwm}.\۵ 5EQ KK}Ҷ#[XS"3H|Ws<ǁSw9P1<>4-ӌuN4˿|(_+! Ƨ,5d8 É3XWu7yM@ 0U:M>Y %I )d0AqI~$gRJ>^/#*ov SzVJbzͦyԳ+;&BOuC&WD.쑎8q[G!SXʼnb̾>qb ;zI7K-4yc8,oA>ޓ =s1hn,Kgt ,]\&>3)UKL*_s²Hoñ,Q-:֐, X&d=RJYˤF,/JU5Ko28g!<~zRpANG RCJ0**t,uWr[ck86+,<}qpmPhkLWw"wȉ;BI j7 XIz+eG=^Xe~j, ە r/^xT% u!bm[bҗBրv8q[<;ecB b̮ >n,5 )?i endstream endobj 243 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 245 0 obj <> stream xڭVsV t+'=eSN41e04WB`{䀞IO'z|a&dAh%+sdr, 0K+J8@)@D=ϳ.,]:Ҿ/"/싻h~}h"bNÙdZ祵n(Ie}0 7gvߺp8gֈJ0} n**kaɐ0vAʅ-GBQZhަoOXr՟Ҽ3u>DLSk7m FF+B0` ̊ vSҷ%4U\Oe, )9ͳUR2r"p SYmŌuc"jH07xӷ*IZU\v.!#¡< Zƻc@Zptڡ0^/$w c|Wgt[DtHh@ sm^ԡ)OӨ臷SvqYm]VM->t>t+B #P2!|eC?7/<6TxŖ3 &^VYe9 sZYaSB\9yK;e`!>ؿeBFCϦ#Tp\3-h $M&V,}OuMe6ѩaS. Qt +LMAa2agr*WG25nHVbm0ulPZ-҃wv^~ˮ0LJs"9 vx cE=ge[%($Q-f9\0aZ˫h?.3j?LJUTU ^`ڕ'V^O w+=@!;e'qy~pii.V=\"y=ݶRB&Rz|eS#Ċeہl>eFgVA?l3j& \=F('P;aEwi[iP $m_|(dj(iЖ; endstream endobj 246 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 248 0 obj <> stream xڵX[s8~_ݠvЦNvRAhۯ_ I6qtd&>;}_A'DN d;}3rA 3O$}wDԹV:kP (׹m$@ٔ!Ujʜ`nO!@bJ6 ;J!>jK(ˆ|F}75CtHcG' J#9{aUcZJtq[K"ZbS"-`d[vhQvW~t.E7R5LRkU #V"@ݼ,\Y=Y 0S숶K8rִ^np>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 251 0 obj <> stream xڝZY~ϯP剪U~vI0"4b"<"Q zh{+ 嵊ķک>G|h]W\KG*8ccOBMm,2ZF((TMFp~Z s@|GePU;;]UuGbJӆX:#22-vo4G,)>Ѩ5A94mwv.r4Nb2:Wa*]81z&ZZ1A}3O"iXA@B "!\?UK4T8NGu7Z;g S #Ew(%T% 6p8g毖>!dm`%Xy=[*&aL`ŴCd}eVG,„e>x. ՟ w<<4f# 1[_^@D.#v[/2f*D<'m]#CM qDW|Q@Go졼vN)E>J8!:5|YNO-%H5bL Z\tVok25Agr/GoU~CYJnl:uvtB/ +Á3KS{`=ynrG<@[[aB*cwι컴m{BwwGfJHߥM^cA;Y"JNK7|b, @~}zkp4q Rʲ7-L*䘸8T?*->1ЛuY -9i7}Fb]p ʭg'7/K#Ӱ:m@fx%'B: yeIZ@@t>3' vSn Hzp/U²=#%o+r$JJm):|Ix.<0|,abπgJ3F4pm>s&g1њg_&tV^D ~񈑏9,+f,:dSH39x"I߻S^Hz84Q+EW]z hbK' "|R AOnI أJxȪ&JPʟ~ :i1ugXG2xx0eGpqIEKcFw$v>N'XxS_TtM΀#9*?kN͎;<oYžpfkJH񨒩ʘnYbA.a6`2B(ˆڴi"(t(k&%őhu!=o'E*؎ExU9kv.fGci$Et2 o9 5zS3tѸ7_6iX w!==MNP",>t :A}:<RƷK+LTUDWi\CV9lrVyȷf7^EnUE-4fPrb֍p{VvZ N>y0)DZOR8NJrR=:P;.Tts"Kpw}]Ւh@P57EFWҳ Y s. 1`p8|2dnIl3%egIu|~HLp[mDpS(2DMG*k..6C^h[дU8]RAGm' EHW/hArL{C!8\W`tCwEs5_HZ endstream endobj 252 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 254 0 obj <> stream xڭXKWDF\%J &KY-Ѷ0b<͞Am,ꣲ_33#2S֬}}xR2ۊq=?쇇0 %guekLmRU69_i8%/=o}[if \ L,qqvS7wi#n8,G\3y7̩k7lUUu30wK7ުmeXQe[.ޚ= Ry2'v#Mu3yE2yQD?!B L ,3^ۧ~^%, 7>*. 3>u'pR'7t4Ym7/vh(0w#(5?X/}K[ËsAq#%XUcL;i7蓰u> M۾; ZRT۱K@fu:x QdA!nt˥u-U>NM Ah:}04`4$'сX:N2OJư[Γgl8uƁ68zuI;p~;IjtԸJ*9U,\WdT o1!O @Ka) 5]Cկ\zF}E1/Nq߿/(/صֈ8~,1We3ŧ9>F^ 8+ʎ?N[ưyQ PNCHlO7gZ.K$Z}w|m#F-N^A[D%Qq]aO vv/CNy9w_ $rS$TGcREb}ƘR6€iLLQ#W7,Rt,#Hsmk*қ2G^:Nc?d3# >B熘=E2eϪ!cQT!*4'84 5 zC@ڎzݷjhH0n: :T!oЁXt0/4BOלu^O>PoOPL7LXPLх4K_ bXVA sB^][v$Vlo~ )[j| 0~ * %uD J4lt°ҼIjLԏo$mCAz7/Dq>cK-| M4zNy!ּcfc;Zho؀|}^x4}]s]q]l#0"5R.ԗ)OuKǿP!PwyIJ2kŻv%BsUS7Gq)>0`?" ὆X iGe|>#1w'<05.ngO Η% hM)0%7ΠP<}d8p * endstream endobj 255 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 257 0 obj <> stream xڭYKw۸Wj-xY83cĚnƳ`HIjދ Ds qw'{s/^,I|_y<4HP,EĸVů~,~[EPə@bɃ ?W󏋥x}֧U_n/Vןn̦W+cI=gam<J_ywcqŤ,qdA}si㜥a$%f/? ʡ)KK-$K%oU@C<O S] f1 8u"S e"tr"t1 Em3jFkmiU[-}[0aAd1&2?)b1LK0PE"6~te r ؍ hㇶG<"s]/Dm T VFbMU a?Wb Б0, l^3O Kg4xѷU2k$=(yg<%odBdW/Y],Y3$ fbD|Ȝo>7 TE^I oj+[5e1EϷW'',L&KBhL"k!"S+uoDT`duaџ< c&kh26E@vmۯI|,nȕA&,Ib̡ Sb~[юv^ G; y+6EZNgn!^J s6c 7!D!S|H)bt϶[7 "(ki`ܢ1?@mDA7ÁJ\IA}1)q xF>66wsxbF 2ƒhGp,قn#B&12?,Bffmzo.ѐC?P* ,% 4 8Zݶ-kr2nu8 ulԏ?f#!n9;O**@MDp8%ApMNlCVPE@1/)7WaT9Be!Ʉ<:(>)Yu":)!,73,Bmm RFV&ʎ&l@i]U4^bFO8QEnFeg4eiSk+Iz* y[96n B83@>M؂YAF(46K0ۮb^]XPr{ڡl7dp;$,{V Riɷ{cZacsJV~C`Ȭ HfUBBm #yӶhkfژ6 4t3ewǂz|$9Nma#x+ /9E-fTC W=rzflL'5807)çAkD{땊c0j\YoopLj#$2@C`H1)tq6}c{6}aD}2uW~rZT ?X94rI$תރ5_F~Rt endstream endobj 258 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 260 0 obj <> stream xڭVMs6WOtIḇD$}wEڔvt>o`%')V99d"i C#|qCs|)uel ,Z#XĊ+7e4QE?O{N^ *q0mH" bA•gN>}2SR!AP>xHx5# _KzߔG4/zϚ;:;N˶.w#! Ǘ)b%L`Et0{0J< 8aKݘ}ʺ-ohvmgb=e9@Ѷi},F O ZzkMጊmA;'𱲥MS4Wz4;hq(+*{)Wptw*0kдRފ/4i䬵%Қ\d5EN(N]9H񽜒*F@o>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 263 0 obj <> stream xڭr@. 'sl/J)vlѩJY:@$! ==HR0KOOyrwBA̢IOZKgp} )<9p~ZK)ݫ |¯r?}asFzq pQdҹv*04>!Eҟ$w"} B: x$Xhe9޾z1?Ї@W{SMʘ` @Hg@޸m3dv]Soͤ2;CQLwB- m+G&CZČ ?_A+u!8iFjJBZ!zaW&injf67|xFyEwM]jYU`\pӤ"`&sswI4oZ3/{3JSm#vQc_ë`O&"ojt98Ǣ%} {n" "}"AZUJ[ l[Hts72MN-A { ķ]:)\UN 8b'MV) ]⸵b"y|ˊ):C@[!HB" {d뇽YLbLB{4#m߬fQ~h+Pj]`ۗi$/S/XLS%BnBMN]uh=SUi\w01Oȥx,׫|vn<%O #ɖ/{程C& ͺc H5"XGF|S*/D|.6߿}x=CHޑy*'Zoz)q%LeN SU)O{1y*c Ól.Ǻj5 X)k_B>$ rɪxXpMg%co13+ Z$&U4MBit>!tLVҺirS酶~cZ4XP(Di'bkH[LXcJeL:r&i7yҲj?u#lCn3c?4pu_8}V?va)m]BEMܥ Fu*I[Ҫ-e(XLn.rDv" CWďWhAjP\L~s 3UWߙvņ%@=5 :SYi 5)&f0R ja|XӾ3L=$R rK &^ F  -2h!1@P+8MB+_r=MkV2PtVMJ),O^&z@YyvfyݙBtL>mOMP @E_Xە]Svy}2]TigV^ 5\DK] i¬5b`ͣ;ڰ5&^cR#l1"-z,@Cӄ0rP#A@c E$jHA{"߾m$mk 9pH,G@ӣThaK|^V!zQ+ P'L/brЂ#T<1l++Y8&-FCK$7%w?5ew9mɟAJ2zR[dn,W(X ˲Fm?0 1-}$kzUTrm;Jeɹf"/mN|hO䨓[3,8\`hc[y脘uE;t1>C_gPW{8NKA:bKX/#6G1j S&fwc+zj#!%9߾ 7;NJ6fW pgE٬)-]kرBNlP.Yȥrn51&_bWCwxT;ILiNJ{4H]VdHP *0\A(jIF1q闙AN#Zx^PB{( ! sM dG,pk^D,|u/EHNlHJoa 5 endstream endobj 264 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 266 0 obj <> stream xڅMo0+|Lq]i{jn=ඖBHtk@`Ydw} (RҀ6hWt`AW9PA%6K&Xk~lf4b`(*Px:Yrq=/c Cjp :Ĭ*71%㕉$ՠ.^\A~^O Yc|{#GگGģ 9O#@1N$+ '3^Z"Z ֟O$QzZP8"p$=%ͰI֣ K3|{>5`ttmG%`\D4Â$30[$Q{I6Axm<߉Iu"`d܊ejӻq_LIP< :ǂn&esx'yNK7.@(SG`Fd|H~5˚6/9{؝sM;?jT {Wk1y "mOӭ%@|ߗr l/ADٶesv]njgOw:VhAP2:%oO]pk />/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 269 0 obj <> stream xڵXs8{CB⣝$5q1D*oqg&ӋKv]׼*\3:? 00b4(s}f_}j bI j50F!c| ס}Ԉ+%PkQ 9fu0#uwI;u>2CIaF`-D^ ZuÛlFy.NngV^hE?n+/Wn5BIo'YjR  _.M*}^̵kdH^!8u/Cn0]ٔbf ! R]2\V~e4,;fSTnZ3El_ڛ&BEؓ{9:fv w'UIHXFTN㈯ 6^јXh$E'0 '=ˎX (o`o1|8KvA<9z<76Q仆:Q41)ޞ\{RI&Tz|>|nvm _u3X 'lg`fy-mΣH 5 㠎 7F endstream endobj 270 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 272 0 obj <> stream xڝZێ6}߯hIusER~Hb'qp.3AN=͵Zjbg["%jFY*SټM &<+YQnͷ|lxʸ7I"X&7;1.7տ4[q ovgei|f!P\, ſ~VTL%4ΖSpʙCq8¾Ԝg0k3v2z?P6vR}kMo[)]\;QDm7ԉlA\7F7h#(x\w\4 ~*@NI446hk#Tw?ÄeGǶ#i:_jMOd  3Y:qW*RlWT8M[;_)g|x; וGs3nYأ=c@H=%%Np=R &$b].ec;v#&)@sPMfl-܏$K{ w4`Qؙ,8-P׀cSw@}0V_u`gmcPpa8ݞLVYbl_rpq8 K^D 4  ٪>4m8I ]#nu,KN8ubgm]695oo޳饒%o. OXW{M ϛ@`Aj|5En`Qņ.X3 @رknXM*SeiMHngڡQp/8=DyIyi)Eױ*6'=ȪE{ Yhs! >Nf.v3~VCgVZ<"f\Xya["Q|XIƞj3|P1Oս۹vk-V̄>Mn}$ޗ-ovnhtTNAwε':; ,zW$L息aSdP&q,gXK*Z!A n_ב0 ~'D bq 7}i`I$:wPwc {_cjo^vC-`Y?ћ)h QahjmxAڲK[V§,r)SoC1y}8Cd.6@د W9@BZeVeraJDSd+$*Ӏ?$G $ R$ c.2k@(? >&T65xBpOn VNa@ 7GLn{37+|믡|YS& Bt`n|9mq`lCn%hͱ2P0Y"kwgѕ#Q;6T @ٽ,L%bPv=ϹݼVױ; [&Bzmx ]XYexn['w!mbO5`QY B΁C'#BvoiRңiC񖀨_@N99wNm J4,v[vsm&|yҟu`G(#WF"pΊ4(ە.#.@3֐^ě9"#%+3z$E1+%gEmm1.d_G  $`ߣmA TP1Xs^t_ָ$aϜKFQpns&>Gh*$irR]e@q-|6ie]f!Y]|~B"}8t@&]rƌ=kMŦNiLq4ty7kFgk$&e?tpS&20%㲅˦Lϧo-!::"EvF*6Z)7UALWLO<)Eӯ&0`K.J=ȁqggź0v9LP%LdΫdou[I5(UGkE\{?l`>s(ˎy~X,=,:I-x Opev$=]]^>^\>k+)nrDDІ)X:eg1I٤'(h@hO} 9JծƓg#Rso CrZ NOzg( {}6Q{9=M+w:f h0_$ufb̉ <2ʮrUO}}Co1&it$nE#MrkkfvYN}DИ38I 2b=O/(4LQ]y%pDK=ۺ_嘅LwYE|:3SO1 1cyw8||6I7xh;-!x_0>be0|L.̺ | c!,'D+՛.1W7sU =ZxhV,ڃN} 9 EH5OKYr ajC&<\57)`z_:{w5Β\8L5NL=?nwI˜_LB(.|g Ϙĥ s65"g!)?hx!G+dK }pc*g*?8+i*=4ϝ|jN endstream endobj 273 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 275 0 obj <> stream xڭXKo6WTfY!Q HRddIKD+mp]( X$5 <Z:X!x ~z,ʂ$"a\c'O $L D Z(‹7xrsj- \~+|՟o_l.߽` I,퇼)9ҵC>yZ+.±7nw8 ` ZDEv%uI_[Ya_UNH$k-V/c>k2`)82Es (V?jQb؃E r Lsaƞ3 8̋bgWz1zE49{4Pw* 8>%ma( [ +dSXϴc5pkyGD{"?zUDl:q%&QР7;NɲH b}yR8nCkZV5ucJj;_sںݙ/!ǼqiNsvKXPlSTP sم]=-d_UXQ=&N@UVrNij; ~OCE\9pG4)PbHY8K@1E&ZeIn8$'iq'D1(Ͷsq"DŽ$a?`\?ptfUiIcvX"bQ/KB k5oZp:(i mrxЂ"uVēިש[X"C$$#vx.[H31Mb9_2rظ^FƋk  |A/Ɍ9gP=5AM霮}UoIE5.v/n HDZ h@@p7F'4Kfdf`OuM,m(0(b^0+l6|NMSgI0^ iނ1= [G 7DyjDKWdč+Ng{cTx}Ķbo#%WT=Ny3rPX)XG3ˁxRqlQoC ]U@<}W+KKx`fzz[b}".h`sddAYʅt!E:ǔ.qBQKͳynt ,.OEm} endstream endobj 276 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 278 0 obj <> stream xڵZQsܸ ~Pm:D)1 +ajVBUd`sB͝,ޤ,P?"8Mx4܎߉ߙ흭/' >(؈>n\_z`uj-SQȩˡc',Q=dG~GM Ng[MCdj>ЇTp߻֟J&nh竵R"t/tik8FCK_,9 tyыle$D)G vM?MES!-|RO|3)7#MsY7(jl\%9\8 JCE^6=K|uv}nxFϥ,zD2uY" 5xA$H+SjnIbl4=dHfMxlvT lb$m)2ra` /IV8` 4M]hxofٚ8 !teߏ^p0OS(咇'>ŃTJ]g;%V\sw@x[Wj@Estػٮۮ+y8 At]z^b@+zB. jeLEaOSz d@'^-X06<")hZQu:b_]ֺJEÁav][Unj\pMWCCNY IY=i]M;-ihh 3…ˮ{ZIt+ ~G5qž*'oy E8P_S"Y{HT4B~9 )j:y# WY6 s^s: c<AQ{5- [ĂPSF$I'"Pk3cUY@/P`'LPnJ ga(;<% =S XF G@4g#?g4~xi(4` Ys?cȘx-VY)ĎE9[yZ (%l /LKA"d6%o1lD3*ˢ 0O*Mpxx':½%4'Q[dd1HؗŚ6Q䀖SfE>2Kif@n&3=yK1&,t78HĞ$:Pqui_a+h^5y 0e꺧a˽LF-mrѾȒ#1yŜ@p{zrrbM>/_EH3,+i/Fz1Ay0qh3 CAx t`*5MlFuI`tkMxEk%!`,ځUǮinQZPj7ԈP]6<1:l pOxS񹝿xCpV{>Hf]9G /M06,2rOJKZHۢbbm9GkNK0ɮegMo(l`pR 8P/wü:My% _jAnqQ`ui5dO@yuT%yU@m⇳3rDetXwͶd)u\xAb%IϿ)…`4H4`B|vvR}eeʍa͍Ps }2IeSo6[<*>c^svn! 궹Z竇 ϜEW ;F/.Q-U#8rI̔R^%LB"L1RZHZhNbt4(?d;Du1c{?2!ò endstream endobj 279 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 281 0 obj <> stream xڍMo T1&ʪ[VqNiˮ`d}1l᝙1x!@d@%[pQ/kH˴(PPa^$7G "́3!D4js&R *D7\zѫ}r*0qs!%[5*4Hw;5$(+rQdy;ro5P tKep\wiBtB%<}7Mp̋2q/W*dvڅ'm(/U3yV }8s,NWӛ3NRR4b8AsٻR]o¢cFvKV`cPϵl2wV}>gaeaX/,|P&8*fߛ646qң*|hבrIe>snvf tT#!*.;s/ endstream endobj 282 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 284 0 obj <> stream xڵXs6w=g~%7q:QU`9C ?8w ʤL9jG71v;q'N&,Nt|rN:c8;GJBYqYeA}sr>8,{erD֑9K38\2_'Gv/>wz=7pΒ %-+ڮY[ou)(۾}}.+Àž]xDq̽`1BGf˟~Ȏ I0Z1O#v2>`W^v=5[o 껔?6Ѭ`c"_GuYW+ ʷigNfF}i_5WYjMX|0f)e\zQ@8,""a}gm!"Wg+U)\wu7MW٭jITmYI ࢵ{M~buk/xЮ-G*z,ucw-~Y x}MюحT V[D~; fXTeEWU}* JP~!BtMg.ao{u2b%8X H rfn3LI uwۉ6:D[b8Y%G7h^g^Bq?u 3ztDa8r"k܏. 3{i2 FȂ !9&!TmV'=azaZMA@E~.s]1XW➾u KRS%I_~ 0B`^ˠ)z9S5 |!nzz4 ۘ3]$>luӀ [@J[BOTyQ=Addb03j~ 5S5VLjN[lw{C"'uc&'VUpTٱ^6R<16!ITk{LͿJ|:9$!=Bhic1%#b}qx[U}5/ЫCP)v sO@#OHf>QʸF6SюJ>b endstream endobj 285 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 287 0 obj <> stream xڝZs6“'j?{7i:i+Ӈ="$B ?:b骽L. ow_}W!WJeto+<̯6{Xqy)$?A#4,j0 n~won_ZK)n6-Fۏ_on~g~2eR^ /؋1g"uGP(!mȣI[48VzR^r}G1nySfaafT{Not.qF;ElDz>ЀơۛWfcݪW[B5'Q s(#βhP&PW]@4AQ}-Oh?`M궹&`CuP[Zc$_u]eUpDr<[O{wc`tt(Au%5(xFmiMF$@t>-b ]K; wydf&C¾Q(x$;\=3ޛxb\8 :$ ӹҤp" 2]T"'嬊7ʚr.Ukg {d3|a!c\" kb DPPH, S@f26Z Fbz"B4P+ZPyØ*> >n^[g1U -PL]g@+UEjO ^}2^c<mDŽL54VIdl^vr~% "N-M]hA#$[u$Ccմb,>p dzD9_hGa|%`ñSr2zƗr2||ahh@@*="ܰ1@ܟ 7^ 2$G44UZ}ۜl$6"ʓhӬ46)M= =y>+>J-bsYw"ۑoEq(i'֓=vΉv30nזVIAG[OyCDZok2Qv[ e'*MF9ñ:>p֭@nC[ݩ1[ 3#>~:6H:_6ڮ>^YM{ߡZ;@Ip@dʘN6-~h gKتHWHRa mn| Ǎ iUa.&R{C7Pc6.cct~Z]龬;dX޵'瞢!=H v)ʠjmeqT76쒥g?Sؔ)n?y}nb9AFzgUU,F38ݬ+9Gn?R #& PCIg) toJ\Yu7!P~|9mqƴ`lbCS'(K΁K>uDҦ* чgҡ5f}I񖀨ۓz_PTzb ;89wJmmf{nte> Kج2 ?Ldwr, l0á+; A.$tƛv[Cң{^,O(Yؘ#(G-A0`0,&qtđLT8ޢ@8Iy`9YɋG.>0F.}ùIYNtT3LG2Ÿdfx11wp8:KEvR6S3g_@LW:/O)F/&` 8*! -GD8y.26lN)|KʙtJ5(EGsE\z?l`:q(˚ \DQ5%<%ّttut <ğ[!pEC͆):Leg m:j٤#(h@hw }) Yj]iɪH־O6 ʖVk%8Ϳq띡cD"V1+w4pǯ׮YCl]6'b1O2Je[X*JO+.YXlWZ8 N "pykdm53;/z']dxD D(T1n5ZZ{^fQyf͢mԹ^\ tϙ#Yʾ*Zj)s"Er޻!~ňOIUQ%khko;x>(ۉt^O%Yif*X~` ]8m^g^o]pU!&hEKoe`3^j:.lD$ #U?/!FZd(Dr v ɛ×q.N?`λsOs$13)oEx@N:=r?fjciqy5!dk)SZ3y/)Dnx ^9w!6r#2Uw3)9iB\aB;"*s=.E&錃v i}ňew׿f& endstream endobj 288 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 290 0 obj <> stream xڭVMo6 WAZK$h@hO-dx?d}IQ3 JGdwƳxfDft&*%k&gU%Y!425ukkeY]gi.l8f|s*Uv:3~Iж';BB7n=)ɟNd1lo?\:?~W .R쎧/\lc!]T2n.: S(& M>id2N"`z €Ō$ktБ;4輁fgG+Dv`S&ztwxIH.O~kN-ʧa'rd5ߦX!yގH)>4˖<cAp?y&@ܲ%Ytd(&ۻzn#:IT >9A_f lFeKOn9xy3dDSw8Xq!43}J76sq#<Ak& |j{ɲ 3[UL(*m-5%T AgrR1#7S rhGZTVL͔pBB\"'ۅ~kiY5fsx'|嵔UJķ4 /uPeW,Dx(`\?(BQ$N _!d r0Emx~S-H c9 N(6~c/#j| [E]?-2ᔪ^bYN|s|B EEVL]Uy~*(ŦD3g&s)8׍N72Ej8u0y@;$DPa΋kO+B!$~I}b/*=9Z̴Wx~pZ}cw{Ў]5/oW\.OcJ$#*T,} u#OBǟ!~ZMV4wڍ/ aV߶ts{7`KW*>0AZaxVO!ZaM3, #]=Ax@ڙ`}\xZ0BF.,uaESs>!agenJ=O͛FD#LK", endstream endobj 291 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 293 0 obj <> stream xڵX[s6~_CZXoq[JZa3?PdQwGw.pO|c^̽8JizvOS?f 1e7~'1$D<2Nߞ.N/'  {M+Wg[$̞a<4wz c"rЈZv,ppy1F04,a4vpF՟$Iˊ4L?G .nn  'mbՙ ƅO//d R +"HMr¡ ijV]3<$o1lǵ:nu6=z]`O~4Z58)agpdhVEU.:׮\utv:u:|_K}i65zņ^K`dGh)O)c^ۨl2Oօ\(축iC\BqBg>N֭+t)[2;iU8%Rntcd c%~>LxDlB6/Qbd^zߪ"ߒl:`#9e1 Q r2Fbsp2}1$Lk,M˜ 52Rp8Zy͜\U_>*Ƃh1RYZU[a~}[&n2Ӳl^o?ygAߋi qwh0n br&Y(+oh_ n;ީE ήǀc@q-Bӵ[jc;wwͧN6`3gJ*D>8V N&5wqL/âa)J!Y%"˜4ʐr(4utej'l6%vFB{HcHtK?BT݉+dWaWǀ+l(Cޡ9UQuSW`堣bx` т;:(UeKB_EZ5MW; ŶI0}g̊FA 6Lpe,Vo}N)q:B8Ü1!jRjb888rc(R+s)7Ⱥ!.et>)΃,P^JnEPE(Lm69}:7ES2p2>#oe趶o͇E6 1ؓ:/xPS>7֘P+O y©):-8abM7l}.10P ̳L3scSכּUJGrOԗ.!~2 u{p igώz;0R.jJsb,̤/-vHlɿ^#ʰ`ts0χ/߁&~BWmɷڏ]*5BfyC03+W'N -g,呪+2sF)'gѡx<;^-,{۹,G^XKΪB |F]ځ@;b,k#-$0۸Rm$BSeg5.0B3KՠWV(pW2nz.j*;X[g]o5k [ vPH1& }~z|wBY˱웘{^/gvp.8T 0gC{ R}a0U]1sN&3.MoLSswqt2̆mt1ᣨD3 endstream endobj 294 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 296 0 obj <> stream xڝZY~ϯPU$^NaNc{C IRcdz>hg8ڪ84l~DEo$gY)./Ͼ(dyoǍ%b f_;H?7__)06X:6OjN"<8ŖYutGq(^ɘEOmn.Xa;zIKTBQ7v{8toܦ 5S kEI8fCFrm)"Y~k5Vqsz}钺tvG髶MIK]UHdc̊ ?Ԏw6s;vVԜjM'$IP}4,{0 Ns՜hA]҇74o> N`T-%סɈerWP&7PU@AQ}.q84m>鮽&`CsT;Ύ屯OJ`2e)4$r8o8῵ h2o+j~?2xFCkMZ'-($@]t`>b M+ <2t\qa#(<ikXt&s_xi=`GI0Zkx*r2]T̤ NrZE;eՁ?rx.Ugw}d |]q1i/RчC1:*z,R6| hMցe PyGs#4@ˌU{i8NcA/z*ǎh(q[SkuVbx cS뾷rB.*Uf:v}BcP 7x϶cF&X-D(nwaZR. 3]$CeiXX{jgs?Жar$±;{V=&xe8Z#iQрS]R{4>DؽacR 6?,,H#/W-3$GִU:c^l-5z0+MKJ^OKO ߏR˪؜AVś$ pUBW:Ah;ld@zqK80E/jy#q#p}y3CK]c \,W8=uPX2Ѥ1A$f20Z|Murt)30#|ٲv 􂖞ʎ4N'n7 ^6H=[©ťsst[? vW%ł| 7 e'xeXrChiV6DCo;h\F(~ԂZU#Jq)RkVpqB0G-&%g[r1{8Duۜa,5ɱrQ|9dVKk 6V;|._h[D),%طP%`ͰXpeEKܐ;+*ې1 @(qʝqM+n']o(*6/.sfFaL<ɿaIb8fʭ#ۢ|4V?n!AV$,||v88^ !dJh{S)luw0ohmgqdfveF-j8~vUNLx!۹u <Ca1JpI5 FwQ$=:&eyH:Gh݃nE>WV⿺ 5UZ~?T9SMOVkyFeK$F7K΍>F.|ý8r|Ģ0ghĚM_ d7 EѬʹR72u.$Ij$):n;v"i?rJ0u/IJ< 6ۭ \ E*z8)st]n<ǓIWT) egHG3dqB%S`ƣ?c/_BV6[3w/Sŕ*>ŨU5@$ ZWv^łgBl+rC]ޔ\u!.1bٺ^W9Em8H b/VO zk endstream endobj 297 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 299 0 obj <> stream xڭVMo6 WAת%Y]dAS[=4=8&#ıH%EyAf 22EQG)ȈETG臋,)+"@#qm?cm BCH2a6 O4>M".li﷗>~F?l_^esoG]ݺlPCٗ(.{KÜ=# )2UĪ6 EH\1۾5#-{r 5J⡷ @'IR׃hXվf lFeKnܻx9GZHArt. 8I7Eq;If,94ҙ>E|wsq!|LW , q_֮#ҿ*cZ,Eib^\厡J >/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 302 0 obj <> stream xڵZ[wܸ ~PjZW[-L+NN$"בֿ}HMf*(=܆g4ƽ`oIKۋ~N5' gZ`Byc?K)@ʥ8fsÇЭ?]6[kKKg-q?bZ_oX2?~C>;8̅\uI jFi,뼸[,E 9aOӤo]T"Mh; E<$PL郊&/<\~#I/[Ag. ~N@4=j575JOMuJ4yFr4\֍q?d" ĦfwS'vgF"q/(=*aJWpy >7/< $5~"Zw"@0r/_$>gaO<&үԊrn/̘W:"w=!*뫷?e͟r'՛˗G==Y>z!lL>͑Rˆb$3|t1A㓊G0f?;9# DQΎG#llB=_O>e4gмE hsm~$|Ś,m׻hX+ue)MR;ΈBy#L#3.V(mrH-hXL *}\o:vYQwuü*J0x~^R ЬV=2*F T8"&%{V@bcZ=TVBnKĔmǼ'a=aإ3}7e&E W3+V͖%))fETqmM7.!/b]&٤RbgM HG\ 4To\}@)+̓j-:dlscSwbx"S6,3L GNWnz|i٭7{˔tKt0@ ;1aWĒ#b}qH' R)/~?/bˠ/Sqqߥ=`GZ Cq컙(̱f&}Β*,d @]PrB|H7v[?b/ThO!AzD!*r $Ql@ b&AI(P\68/1$i5[<3u0 XW\y³ߘoPV3bBy(D4xp,65BU|$'녶:-(*ue *~.s 4M5iYcc6wƳAVH)t`3WYۦh"ѕ$89՝SvC@~MxPD١Ym9ȁt}Lt.w85p&)I2Ol9=D\c>^+bܩl[DC#"LCODRPC}Eщ[,%DnVYJiHInn5|۩`G|JJ!sVx֚Son:DS$egf_%r/q \!2P Ǯֱ' =X3`wsv 6C6p[ $Vf3237n s"¢ 6K;ZwĞB\ %xȊzʻaе) S5sx/묂9?ב?R[fc F= mJJp!swsK -ύFrkJ(`WEۢ.9V淪t4y_"+<'dR;!~SvUMe# te*yH? $dE(%eځ#9X1eGYOG[*ԍecg RNJޫ*-D^/Ź!x8 Eї` ]w7Vl4q 7RM$<`rHD|۝O.3A7N v,s! % endstream endobj 303 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 305 0 obj <> stream xXKs6W𔢪"xTN̮֓˳59P$ FiI$5[[:~xq/^,Ix_QXPEĸ6o~~()H<?]}yj-omh ww{XzOxfY{BB5;g1bREN8D2̆‰)9KHJUA xW0mhu c nmMkZv7I1KFd-T1,6Rk2έ qW`_-1G/ҋDq GXME ; 쳮Yx]֘mW}[esҠ*h䐼X[LÖ*ʉi{վB|yӪEbA? v0"@Wr1]öҎh~$"ՙ1h=&M ZmqpG;m js:OR7=δ"}ک5;R*A˝Д=DY}k-NP3=K=1z*yi)EcC\vہغMk8SD 1 ' bA5bA Xwqb]e*jN`l?!0pfUբou3Ai`u 9Z!!+aO2JWEgUy3b2{ ;sM]"D cJ^΢ENNdEٵCUL>mijZw-twf[ hmt_P}1ZWHl]rh]BZ]Ee@C峆:?^KgiFVb Z#x4݉d)I/NP,ƪ?|wB#txO;$ѱHsv)6ie׏v5M7Z5B[:vYQu żFST  prcOӮB3r[|#1&K IC_-Ɠ׍pfוuL %3dT㬑y;H][a\KХH%ʮ/%>ArMLKןsK `rr6 &|>, U | v.pun,̂8u1\x1]t7m?N:[3r}Ga1\m/퍞c'sT@׫E| ɻul~:[fhc.{F. SFgO emfLYbz{O'QJ89ěU"m9R|NCE/B [^A!TxRaEjۡm @+ 8e8+ Q_@+PG`] V3ašp^Zxb@.a;tPʕ@&'G]z$;0HRӳcr9 ol Fng\veϕ8Щz۔pc6f7GLYc jnܽWձ l7mc%a'0 endstream endobj 306 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 308 0 obj <> stream xڵYYܸ~ϯ>x Ʈ'4-͌b4_*)QEģ*~,x 3fntV/o 8gHƅd Jdu8lReaQF\hmh: λm&pAVQe%beybIxg2&C>2c_Y#±S2VYnC6W5k˘Et7?߼ tdXDG؊q vʰo9~Ұ Y?=/4׹I8Rw@p/4XS]Hz@X4w{]ms]KuE*anQUcNR.(kHYbw>}*aX;%=- 5+o3Լ,^'IXvtFRQ˼,3z~hnv*-* 6. OsE>n#{/\.KǼC-WB)S E;gy {ٕ]c?}5+ID.6?}tC9}mXϼplVvyN=Ng ?~pLRŒ-rz)AߡlkY3v.2,%7F+Ewӿ:$A!!Dičy7s˒ͮ>ipߵnRdg34nI8l+Mؘmҳ(`S_4g׃}U]Y6Y~MZ!q#8h~ĭUYӰiKP; WCo=&.| }GI  6skTilE)(W3+ɋz%U2}؎5Lc4uB4t\h N8]<\(ll#)}huGWA?<=cW?̿1P6- bKn׎t.:%, ;М T S=?44 Oy;'=痊𢆩H12ʹ@p!RqjhD&L32HkC/k(cqꢯ%<\,{Z}rjd)\mv_qdr-6AJhT^p^{'h,(Tu<8)(p,գ~yэ6-k Ue]\V(؈.kLLOkaW  Z@9V+7Xm$cG b/D6Pö͏J"x` "8CX2)kɁу15$~|+_-׫$/kOlqkGZ|֋!;moΜJ05zŵ## d>]mҙ !8`ki55 #K$bd'N)'=ߛ[ciӝFTNo@߈11>jx޸5KwKd,_y<@(xx:,d>$5859/.0Lg\as2QKOK-&1\XŞ `fLx'u ,28XspH;3U3yo֌1RLSHIml@L1^iاͧ{8b7m|r1"eDZ} Ĕ׷*{W =ݩ bQeZI}Pc %@gf| PB-3#MqԨ%_h %< "Չ:cIX&* Do15t_\MV\U_`AIF^~X;Gyw1Mfb$Iҡ!4S~1#SWcX!H81&cniOӶǼpEDZQV-!c&/gU)TOd؛_l9O$'!90L츣"w>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 311 0 obj <> stream xڵV]o6}߯(/}tOildս4}m: K$7~.y)[Nd yH{7I?NA8ciF.'?]+#EWE̸$ k BHΔE$Aȣ(Wz7o_MPJI7{w׶Uv6a&̘3 QZ2GTh b7]v3p2-ŞiU>{ #4&P]eS(t{;æÅLqʣS=y2ԙ`ˌAg #TmSxB"B{ fh72m1> $.wdE8ʃA]_6MMtqH {D~crJX,Ny8* g27Ʋ+E~]pǕXUl&δ߭E)^{G[`ΆeDb[=1̃Pq! rKQ( X@zam(h4c1^Oɇ.MRӓ%]hr4k.Q8nYSKHY.._](reMJƝFdkvSZv8mM퓕Ŷ/_EijB_q~]!3Ao3z +ߋ^>)KK)u$߲O+6&$)^uKŏ~eᄶ3sekSL?,.,^X[y}Nu9>mƃ3+~=5 _3v.f 'eIjuH#b Yb7vgAW~7x̟mpdմO:-j˂P {G9](M [[Zt|,u> S *M5XGLX4]o|-۪\8{R/9ܔb [E7ܝkSR=e~:Eyw3,qEtr ma?óh endstream endobj 312 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 314 0 obj <> stream xڭWn8}߯S!#tI4](v%VINE\Iv(r8:9<:?ND(LP8i霭OJY9R'!Ygnx7領;b#tpVw3q0C'G\)wR쾕G"%+[($0E6nz>e[ֽ+hCh<V/OqBP̬G`q4pLq#ŗ/{Acj~b!+ >/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 317 0 obj <> stream xڭXKs8i<TD!΁`mn4 6e\2A{'Xzq$vzx$2bByW?oA"IH%X AHLs_oWo>LJ)|A\_.>^ͦcI=`am T, {ͽ?HSAduCC l龫oRyB4 QPfRmusuu}N_]QW4UKܿe_ۍ Ȁ38?W2 > Sȃ> dW)A_7{~ؓGa(1 e+Ž;x Z7ֺ{m SpLMOZFL%EdTLm&2II'=~XM =w$;4"+iPT+k g?P[_9;m\H]^T,FDl$<[ֻR[}ndd" zYM඄˚nm] [VλYYOqRʖ9l'i+NX VeU{%?刯W;zTW~)Šnw6.>9(F돋4', 򿝮1SʛPcr`K0 /,"X%ݒ'Cv:< ܊qbgHI#fW&,,4Ԇ 8fHQf ݼq.Qx faI+,[q[_1;ʌ{'T&}1I?o,Ͻ uEKZVHN0Ɠk%b`9+oF"0r5F4]Z*RNto9([VkZ%2.)yPf7 п\g[p!1^RKZشc2moi+HSHd =XE!613]'qAPC<=هu1rز92ɬp9qMrypMxq}`.vdbao,r{0`$fAHzfdE?u:6#V5~CEL~ ):3[ S3$>|UEҐl4(j&Ic(}Yiu^WKdVUѬOCo+ZD8T {®*ؒ3wh$<3{;zkkq{coV]lFZ/{rF@p"۽_U>AWvU_< IskF{6 XL'<צM`ۘ؏6 5IF#%eV_Z !ƈC}*!},4`3/mfTk;%q@ ,vȃ;ߣt endstream endobj 318 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 320 0 obj <> stream xڭXY6~5CR<}ȱ)i} Zl9E;#:vS,XShfK ,<*!qd"xN&b9WEbw/"Xe:BFD \[IB@%!<=~6l>ǣ1HL #a5Ih6L0͚}tԎP0J9&#iՍ`PQMҿyvh(!pjxb?$cp^eEu¿1_ˇ}_"YITR(}dQyBxkS?DQl"Θqva| qJ"XGK4z?ɭ0y)eS th3"3{$k sT9a9rHj2ٱ@#= k4`a#u} Mѿ3z[2(3tC>AqU CeXٺnXa\Y,oX\t>dtidWiƞpa4c`Nwhc4!BffwhTic ´5S cɻ671}|c:?' Hc@L6$ڢ|7}{Aܙt_O/t  v+3|\BeUITVF*">_/1v'Ӊ)YۖĬ0-aFghf ֠ܕO*]SnTB[=6qVA< NE1j>tMq@ҿ8=kFHj▖s1ksl@qQbJ R}]Ué۾.37N,( oK X4;ԖPY۹&7ƐڹHJ[ E7u[Xa0v_:CZh -^2f+٘{8o;$( O[Mw@?Iwm=y_jua%jJPr p#)o;$@jo{~ˆCbHQ_z@2;yڇN V03?!cm#j4auvR endstream endobj 321 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 323 0 obj <> stream xڝ]s۸+x-5aMw̦InuH͉>"L{ EA)~/H-*٠)6⧻7 5)bM%"wڳ NP[c\޼ۛ~{j+߿3GިO^w>rE3Ή%C)֒kE|ݡm?a +өP\TT# 1"r2pTb^=~ETH^Ы]ٚ%mAm:v97)`ѩWkZf4q]Ѫ6B8t:؃=nv)oP]_VH"_:5F^>Ia}`kǬO5_379rEvѦfT-jƵn\ WkUfOv!wy7N+K2'jBYk^k!cR7õ"i ;v'׻OOi&]T0!fuz4O" Fsju]bf:aEըas `_86AHx8m[MCwpZ/3k(ׁiHXWBsZ8T6RVo *ė *aNu:W{Fr8\pȋ; V}&DܸX"5d53jҒ "O[iFN>c_bCh9H;(V>vIQ23l, )G2fi$I2Ch9F S8IȩGD̄˄8jHo-#kB9ZQϒ|-)R'iJV>–Da;CX*$Q@r[9ZQ _'YYQfU%qL !'baYYѬiFN>c~Ch9HY%( ב靡$(27baYZ&!@I"!@\ YYP}D,CHJXϖud#f ՝X[A#{Or!$'PKGjcː;NMja1Y],N(GI9!ȁL!H~Տ%H5yːj Pt.Gj' RA.G*r!~H.G*_~:)A2I ,&I9]'N t>>;eHO~H.C*Or)X[SS ).OY\LI9!ArM9\T$OӤ~.A4#ezgH1dHU@9HE7N?$#/)Aԣ}D.CkcMNYJhiRA.G*t@9HE_Y]za-}6M?[um?Uܗ j<%=z3jZxzIlU'+rKԯ=Ǽ<ǡN_LA375PxM4)?έޖܞx0{LR{)-xR3=^V˶\VƚЙ:FULoCmnlOy~PKWTe_U=̨`>7c==|[2S3B3]7"JqX2*&"~O =SXҕSOx>@vi endstream endobj 324 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 326 0 obj <> stream xڍVM8Uc} !$&{PٲxRۭ aj\2BQJ0-Ќd;&03ΙJsVUɹmδGd?e¤^'h0F`KoǺk񝧏YQ`Yw s;t{\]d6 mW~CycA'R`YC7R;ϋUmw+3|H\7MLY^̄̈R2#JN̈R3@"b4HV"=ԏ1$7$O|qһV]J1.zWf##zۺ)Fozn V➼s3~gp D|荏3uO0$jͳ|c7چ3&NW@,eǸtVȨ~ i:./2@]# NTÔs*X>6uNQx%? m endstream endobj 327 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 329 0 obj <> stream xڭr0} 8ڎԩ-R@@N4c } ] I;>dvWF/ [~C+Q)E"!{tqM`3~ҥ\p="#fx2ߣ8FnN"Y7ncbagMÃ`'W+Ki|"  Mgk;ﶂ8',7W'.++uLFq<x܆֝cضmيy ˸Pd/;sHSYd]e%nR^씵daiLyoEQ5M84aKZ- B(M%%iy=ug4}˃7X4EhBu;;_=P@Ս*f:z9ńӏaiyDașx%1Q3(De{LC7y endstream endobj 330 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 332 0 obj <> stream xڝWr6}WΘqo븉cDZt> lqL*I9w Yr"Ug,h ,vϞ= GD"JGDeՋ4zFG"UZEHks%2BE_⿧)m"9nN$*N{[WŹK2(JN7u'q%;9.3.ϫ7BBRB0qn9_Mg}\76cy@N­\˜~hXlwnֹy:d=ey9Koz; 'DD(e.D)AI(z,,KI]Y8aU w1ʲJnG{p fxJv~ eZ*8\\CJE7,{{ z[YJhwd3*[;ifa/^d7s,$2b-NV(@B':.A)㋦m7f}c5;d" *[&,7+kgb zVI^=go|JšRE`*ؚۮub' ЇB ٙY`Ixѯ?=uO~BJ^'[Lt ivХF5hiuhĪU#l;m;`?؆֧yA4U#5ϟ6gKj_{O7ym<5o^thٰqQ0ջQ끤~yŽlXR DCI躭jxZHj2,4߻g ]76^uR3"+DdUqVG3ӏ$<p0ETO@X]U"ljQ΋4uBr zY瞬CAȰ!Ǿee# `sLg4{:Xr)@|r3;P;^DQe | uYK]raz^0%! # =V@O}mLih+u|;.|u7ZubGM?[4Ǟ; 7]fX8I76*zY~~?ͬhDMkkl% Z͓=4M2C8z_ꉾZ]A 'I^MH`jq]kݸ4!\3Y|!,:sa%z=v1{!Bmc Hp!zpa1mcR-p8vhL;v^U<@n:~'bz<ߊH˟4 *_Jd1~LlXJ?)0n*viYȘIO0Ǹ>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 335 0 obj <> stream xڵVv6 +t9K8]%iYL3wYTr/HM=ZK`|]Zw0x0f 'yWH$p{xN>?L?L x)hYZLD4RfR|^_ /A5HFQ20ʳ ɠە4em sW^Ӳ-,OJ,HlVȂձ~ ,<a#"ފ0lG$꘺J;zP׏ 죝,Ǖe ! 9t# Ղ]t}PTݪnF+[T44 mrW9ΐu>]쏿'S=QCKD)\7HGXB:NՆ;~UA|dqdl>fc:"b":(Q͊rJ \8FY< 5{9p**WJ oz ;kk/K؝ψVez \\IkŨn{ 0ʚz tT %> vue\ocEZ6niER,;֝K^ʹ9*7daqT'S^O dhL T6z KENgeɟ\=2BLK8j4sOל eGN;]ѤZ3Pt^qe=މ1'%X|sUDVb򩛂֌_=(s'w]j#)ּ,7.8T7W.}_oG_{H0_ endstream endobj 336 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 338 0 obj <> stream xڭVMo0ﯰRDB@(!tUW6*=4T]Q} Cc̛ـ^t7c"gjg.ct@2t]X"2X3Fh<(\\l6f:HV{xҴ4 Km]nH}aWmRAgVRYAe7gUƨv/^e,1BȸG0~k+Qv檕<5cS`{@a9wW j2MTь3qP=+_*,?E=2oKMxM^G tm@FVb |'I&lmM3 ] 3g9!+iyAe# H/*q1]r.ꚾXںL } z-1zo꽍{M]G9_@ʟߞsz܁R9Rtnvw:7o'wWsy FtVaT VMin=o*-: -:Oۭz>ݖs;xEa?6l{96e,BstnyL6 endstream endobj 339 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 345 0 obj <> endobj 352 0 obj <> endobj 358 0 obj <> endobj 365 0 obj <> endobj 366 0 obj <> endobj 372 0 obj <> endobj 379 0 obj <> endobj 386 0 obj <> endobj 393 0 obj <> endobj 394 0 obj <> endobj 400 0 obj <> endobj 407 0 obj <> endobj 413 0 obj <> endobj 420 0 obj <> endobj 421 0 obj <> endobj 427 0 obj <> endobj 434 0 obj <> endobj 441 0 obj <> endobj 448 0 obj <> endobj 449 0 obj <> endobj 450 0 obj <> endobj 456 0 obj <> endobj 463 0 obj <> endobj 469 0 obj <> endobj 476 0 obj <> endobj 477 0 obj <> endobj 483 0 obj <> endobj 490 0 obj <> endobj 497 0 obj <> endobj 504 0 obj <> endobj 505 0 obj <> endobj 511 0 obj <> endobj 518 0 obj <> endobj 525 0 obj <> endobj 532 0 obj <> endobj 533 0 obj <> endobj 539 0 obj <> endobj 546 0 obj <> endobj 553 0 obj <> endobj 560 0 obj <> endobj 561 0 obj <> endobj 562 0 obj <> endobj 568 0 obj <> endobj 575 0 obj <> endobj 581 0 obj <> endobj 588 0 obj <> endobj 589 0 obj <> endobj 595 0 obj <> endobj 602 0 obj <> endobj 609 0 obj <> endobj 616 0 obj <> endobj 617 0 obj <> endobj 623 0 obj <> endobj 630 0 obj <> endobj 637 0 obj <> endobj 644 0 obj <> endobj 645 0 obj <> endobj 651 0 obj <> endobj 658 0 obj <> endobj 665 0 obj <> endobj 672 0 obj <> endobj 673 0 obj <> endobj 674 0 obj <> endobj 680 0 obj <> endobj 687 0 obj <> endobj 693 0 obj <> endobj 700 0 obj <> endobj 701 0 obj <> endobj 707 0 obj <> endobj 714 0 obj <> endobj 721 0 obj <> endobj 728 0 obj <> endobj 729 0 obj <> endobj 735 0 obj <> endobj 742 0 obj <> endobj 749 0 obj <> endobj 756 0 obj <> endobj 757 0 obj <> endobj 763 0 obj <> endobj 770 0 obj <> endobj 777 0 obj <> endobj 784 0 obj <> endobj 785 0 obj <> endobj 786 0 obj <> endobj 787 0 obj <> endobj 569 0 obj [214 0 R/XYZ 72 129.59 null] endobj 346 0 obj [119 0 R/XYZ 72 660.69 null] endobj 482 0 obj [119 0 R/XYZ 72 639.45 null] endobj 610 0 obj [93 0 R/XYZ 209.58 156.86 null] endobj 515 0 obj [119 0 R/XYZ 72 618.21 null] endobj 528 0 obj [119 0 R/XYZ 72 596.98 null] endobj 542 0 obj [119 0 R/XYZ 72 525.98 null] endobj 555 0 obj [119 0 R/XYZ 72 491.19 null] endobj 571 0 obj [214 0 R/XYZ 72 93.66 null] endobj 570 0 obj [119 0 R/XYZ 72 455.8 null] endobj 572 0 obj [217 0 R/XYZ 72 421.29 null] endobj 583 0 obj [119 0 R/XYZ 72 380.97 null] endobj 573 0 obj [217 0 R/XYZ 72 370.55 null] endobj 597 0 obj [149 0 R/XYZ 72 638.86 null] endobj 574 0 obj [217 0 R/XYZ 72 321.93 null] endobj 576 0 obj [220 0 R/XYZ 72 407.74 null] endobj 577 0 obj [220 0 R/XYZ 72 197.86 null] endobj 578 0 obj [223 0 R/XYZ 72 384.95 null] endobj 579 0 obj [223 0 R/XYZ 72 349.83 null] endobj 580 0 obj [223 0 R/XYZ 72 303.28 null] endobj 582 0 obj [223 0 R/XYZ 72 232.66 null] endobj 584 0 obj [223 0 R/XYZ 72 186.42 null] endobj 585 0 obj [223 0 R/XYZ 72 151.6 null] endobj 586 0 obj [223 0 R/XYZ 72 91.8 null] endobj 587 0 obj [226 0 R/XYZ 72 200.35 null] endobj 590 0 obj [229 0 R/XYZ 72 718.85 null] endobj 591 0 obj [229 0 R/XYZ 72 678.8 null] endobj 592 0 obj [229 0 R/XYZ 72 614.52 null] endobj 593 0 obj [229 0 R/XYZ 72 565.29 null] endobj 594 0 obj [229 0 R/XYZ 72 492.3 null] endobj 596 0 obj [229 0 R/XYZ 72 302.89 null] endobj 598 0 obj [229 0 R/XYZ 72 267.21 null] endobj 599 0 obj [229 0 R/XYZ 72 245.69 null] endobj 600 0 obj [229 0 R/XYZ 72 211.23 null] endobj 601 0 obj [229 0 R/XYZ 72 175.86 null] endobj 603 0 obj [232 0 R/XYZ 72 409.08 null] endobj 604 0 obj [232 0 R/XYZ 72 362.54 null] endobj 605 0 obj [232 0 R/XYZ 72 340.99 null] endobj 606 0 obj [232 0 R/XYZ 72 119.97 null] endobj 607 0 obj [235 0 R/XYZ 72 353.54 null] endobj 608 0 obj [235 0 R/XYZ 72 304.93 null] endobj 708 0 obj [12 0 R/XYZ 71 756.72 null] endobj 710 0 obj [62 0 R/XYZ 71 756.72 null] endobj 709 0 obj [16 0 R/XYZ 71 756.72 null] endobj 765 0 obj [83 0 R/XYZ 72 697.09 null] endobj 766 0 obj [83 0 R/XYZ 72 460.65 null] endobj 348 0 obj [235 0 R/XYZ 72 281.28 null] endobj 349 0 obj [235 0 R/XYZ 72 245.61 null] endobj 350 0 obj [238 0 R/XYZ 72 304.78 null] endobj 351 0 obj [238 0 R/XYZ 72 255.74 null] endobj 353 0 obj [238 0 R/XYZ 72 231.68 null] endobj 354 0 obj [238 0 R/XYZ 72 182.34 null] endobj 355 0 obj [238 0 R/XYZ 72 146.86 null] endobj 356 0 obj [238 0 R/XYZ 72 111.67 null] endobj 357 0 obj [241 0 R/XYZ 72 718.85 null] endobj 359 0 obj [241 0 R/XYZ 72 690.23 null] endobj 712 0 obj [214 0 R/XYZ 72 718.85 null] endobj 713 0 obj [217 0 R/XYZ 72 718.85 null] endobj 715 0 obj [220 0 R/XYZ 72 718.85 null] endobj 716 0 obj [223 0 R/XYZ 72 718.85 null] endobj 717 0 obj [226 0 R/XYZ 72 718.85 null] endobj 718 0 obj [232 0 R/XYZ 72 718.85 null] endobj 719 0 obj [235 0 R/XYZ 72 718.85 null] endobj 720 0 obj [238 0 R/XYZ 72 718.85 null] endobj 722 0 obj [244 0 R/XYZ 72 718.85 null] endobj 361 0 obj [241 0 R/XYZ 72 552.75 null] endobj 723 0 obj [247 0 R/XYZ 72 718.85 null] endobj 362 0 obj [244 0 R/XYZ 72 380.64 null] endobj 363 0 obj [244 0 R/XYZ 72 343.15 null] endobj 364 0 obj [250 0 R/XYZ 72 704.31 null] endobj 367 0 obj [250 0 R/XYZ 72 654.81 null] endobj 368 0 obj [250 0 R/XYZ 72 630.28 null] endobj 369 0 obj [250 0 R/XYZ 72 492.9 null] endobj 370 0 obj [250 0 R/XYZ 72 445.52 null] endobj 371 0 obj [250 0 R/XYZ 72 380.34 null] endobj 373 0 obj [250 0 R/XYZ 72 330.22 null] endobj 341 0 obj [107 0 R/XYZ 88.59 132.93 null] endobj 342 0 obj [107 0 R/XYZ 88.59 88.8 null] endobj 343 0 obj [107 0 R/XYZ 88.59 77.85 null] endobj 344 0 obj [177 0 R/XYZ 88.59 88.8 null] endobj 725 0 obj [256 0 R/XYZ 72 718.85 null] endobj 726 0 obj [259 0 R/XYZ 72 718.85 null] endobj 727 0 obj [262 0 R/XYZ 72 718.85 null] endobj 730 0 obj [268 0 R/XYZ 72 718.85 null] endobj 731 0 obj [277 0 R/XYZ 72 718.85 null] endobj 767 0 obj [103 0 R/XYZ 72 382.25 null] endobj 732 0 obj [283 0 R/XYZ 72 718.85 null] endobj 768 0 obj [107 0 R/XYZ 72 648.08 null] endobj 733 0 obj [292 0 R/XYZ 72 718.85 null] endobj 769 0 obj [107 0 R/XYZ 72 271.29 null] endobj 734 0 obj [301 0 R/XYZ 72 718.85 null] endobj 612 0 obj [130 0 R/XYZ 71 756.72 null] endobj 736 0 obj [304 0 R/XYZ 72 718.85 null] endobj 613 0 obj [133 0 R/XYZ 71 756.72 null] endobj 375 0 obj [250 0 R/XYZ 72 256.34 null] endobj 737 0 obj [307 0 R/XYZ 72 718.85 null] endobj 614 0 obj [137 0 R/XYZ 71 756.72 null] endobj 376 0 obj [253 0 R/XYZ 72 718.85 null] endobj 615 0 obj [142 0 R/XYZ 71 756.72 null] endobj 377 0 obj [253 0 R/XYZ 72 689.63 null] endobj 618 0 obj [146 0 R/XYZ 71 756.72 null] endobj 378 0 obj [253 0 R/XYZ 72 573.87 null] endobj 340 0 obj [3 0 R/XYZ 72 718.85 null] endobj 619 0 obj [149 0 R/XYZ 71 756.72 null] endobj 380 0 obj [253 0 R/XYZ 72 451.3 null] endobj 620 0 obj [153 0 R/XYZ 71 756.72 null] endobj 381 0 obj [256 0 R/XYZ 72 415.97 null] endobj 621 0 obj [156 0 R/XYZ 71 756.72 null] endobj 382 0 obj [256 0 R/XYZ 72 187.08 null] endobj 622 0 obj [159 0 R/XYZ 71 756.72 null] endobj 383 0 obj [256 0 R/XYZ 72 127.2 null] endobj 624 0 obj [162 0 R/XYZ 71 756.72 null] endobj 384 0 obj [259 0 R/XYZ 72 407.74 null] endobj 385 0 obj [259 0 R/XYZ 72 384.1 null] endobj 485 0 obj [313 0 R/XYZ 72 367.09 null] endobj 486 0 obj [313 0 R/XYZ 72 343.45 null] endobj 487 0 obj [313 0 R/XYZ 72 294.83 null] endobj 488 0 obj [316 0 R/XYZ 72 380.64 null] endobj 489 0 obj [316 0 R/XYZ 72 357 null] endobj 491 0 obj [316 0 R/XYZ 72 280.68 null] endobj 492 0 obj [316 0 R/XYZ 72 232.67 null] endobj 739 0 obj [310 0 R/XYZ 72 718.85 null] endobj 493 0 obj [316 0 R/XYZ 72 197.6 null] endobj 740 0 obj [313 0 R/XYZ 72 718.85 null] endobj 494 0 obj [316 0 R/XYZ 72 162.23 null] endobj 741 0 obj [316 0 R/XYZ 72 718.85 null] endobj 495 0 obj [319 0 R/XYZ 72 338.67 null] endobj 743 0 obj [319 0 R/XYZ 72 718.85 null] endobj 744 0 obj [334 0 R/XYZ 72 718.85 null] endobj 745 0 obj [334 0 R/XYZ 72 725.83 null] endobj 626 0 obj [165 0 R/XYZ 71 756.72 null] endobj 627 0 obj [168 0 R/XYZ 71 756.72 null] endobj 388 0 obj [259 0 R/XYZ 72 324.05 null] endobj 628 0 obj [171 0 R/XYZ 71 756.72 null] endobj 389 0 obj [262 0 R/XYZ 72 365.22 null] endobj 629 0 obj [174 0 R/XYZ 71 756.72 null] endobj 390 0 obj [262 0 R/XYZ 72 314.38 null] endobj 631 0 obj [177 0 R/XYZ 71 756.72 null] endobj 391 0 obj [262 0 R/XYZ 72 281.34 null] endobj 632 0 obj [181 0 R/XYZ 71 756.72 null] endobj 392 0 obj [262 0 R/XYZ 72 243.75 null] endobj 633 0 obj [184 0 R/XYZ 71 756.72 null] endobj 395 0 obj [262 0 R/XYZ 72 208.88 null] endobj 634 0 obj [187 0 R/XYZ 71 756.72 null] endobj 396 0 obj [262 0 R/XYZ 72 160.17 null] endobj 635 0 obj [190 0 R/XYZ 71 756.72 null] endobj 397 0 obj [262 0 R/XYZ 72 125 null] endobj 636 0 obj [193 0 R/XYZ 71 756.72 null] endobj 398 0 obj [265 0 R/XYZ 72 655.99 null] endobj 399 0 obj [271 0 R/XYZ 72 704.91 null] endobj 711 0 obj [16 0 R/XYZ 72 725.83 null] endobj 724 0 obj [181 0 R/XYZ 72 718.85 null] endobj 738 0 obj [184 0 R/XYZ 72 718.85 null] endobj 746 0 obj [187 0 R/XYZ 72 718.85 null] endobj 747 0 obj [190 0 R/XYZ 72 718.85 null] endobj 748 0 obj [193 0 R/XYZ 72 718.85 null] endobj 498 0 obj [319 0 R/XYZ 72 287.43 null] endobj 750 0 obj [196 0 R/XYZ 72 718.85 null] endobj 499 0 obj [319 0 R/XYZ 72 198.68 null] endobj 611 0 obj [83 0 R/XYZ 71 756.72 null] endobj 751 0 obj [202 0 R/XYZ 72 718.85 null] endobj 500 0 obj [322 0 R/XYZ 72 703.69 null] endobj 625 0 obj [93 0 R/XYZ 71 756.72 null] endobj 752 0 obj [208 0 R/XYZ 72 718.85 null] endobj 501 0 obj [322 0 R/XYZ 72 146.29 null] endobj 638 0 obj [99 0 R/XYZ 71 756.72 null] endobj 502 0 obj [322 0 R/XYZ 72 98.02 null] endobj 652 0 obj [103 0 R/XYZ 71 756.72 null] endobj 503 0 obj [325 0 R/XYZ 72 546.16 null] endobj 664 0 obj [107 0 R/XYZ 71 756.72 null] endobj 679 0 obj [116 0 R/XYZ 71 756.72 null] endobj 692 0 obj [119 0 R/XYZ 71 756.72 null] endobj 704 0 obj [122 0 R/XYZ 71 756.72 null] endobj 705 0 obj [125 0 R/XYZ 71 756.72 null] endobj 639 0 obj [196 0 R/XYZ 71 756.72 null] endobj 640 0 obj [199 0 R/XYZ 71 756.72 null] endobj 402 0 obj [271 0 R/XYZ 72 567.1 null] endobj 641 0 obj [202 0 R/XYZ 71 756.72 null] endobj 403 0 obj [271 0 R/XYZ 72 520.72 null] endobj 642 0 obj [205 0 R/XYZ 71 756.72 null] endobj 404 0 obj [271 0 R/XYZ 72 456.56 null] endobj 643 0 obj [208 0 R/XYZ 71 756.72 null] endobj 405 0 obj [271 0 R/XYZ 72 407.45 null] endobj 646 0 obj [211 0 R/XYZ 71 756.72 null] endobj 406 0 obj [271 0 R/XYZ 72 334.58 null] endobj 647 0 obj [214 0 R/XYZ 71 756.72 null] endobj 408 0 obj [271 0 R/XYZ 72 146.26 null] endobj 648 0 obj [217 0 R/XYZ 71 756.72 null] endobj 409 0 obj [271 0 R/XYZ 72 110.7 null] endobj 649 0 obj [220 0 R/XYZ 71 756.72 null] endobj 410 0 obj [274 0 R/XYZ 72 649.59 null] endobj 650 0 obj [223 0 R/XYZ 71 756.72 null] endobj 411 0 obj [274 0 R/XYZ 72 527.02 null] endobj 412 0 obj [277 0 R/XYZ 72 437.94 null] endobj 653 0 obj [226 0 R/XYZ 71 756.72 null] endobj 654 0 obj [229 0 R/XYZ 71 756.72 null] endobj 415 0 obj [277 0 R/XYZ 72 402.91 null] endobj 655 0 obj [232 0 R/XYZ 71 756.72 null] endobj 416 0 obj [277 0 R/XYZ 72 283.94 null] endobj 656 0 obj [235 0 R/XYZ 71 756.72 null] endobj 417 0 obj [277 0 R/XYZ 72 251.26 null] endobj 657 0 obj [238 0 R/XYZ 71 756.72 null] endobj 418 0 obj [277 0 R/XYZ 72 179.82 null] endobj 659 0 obj [241 0 R/XYZ 71 756.72 null] endobj 419 0 obj [280 0 R/XYZ 72 718.85 null] endobj 660 0 obj [244 0 R/XYZ 71 756.72 null] endobj 422 0 obj [283 0 R/XYZ 72 180.87 null] endobj 661 0 obj [247 0 R/XYZ 71 756.72 null] endobj 423 0 obj [286 0 R/XYZ 72 718.85 null] endobj 662 0 obj [250 0 R/XYZ 71 756.72 null] endobj 424 0 obj [286 0 R/XYZ 72 651.85 null] endobj 663 0 obj [253 0 R/XYZ 71 756.72 null] endobj 425 0 obj [286 0 R/XYZ 72 514.53 null] endobj 706 0 obj [3 0 R/XYZ 71 756.72 null] endobj 426 0 obj [286 0 R/XYZ 72 468.45 null] endobj 347 0 obj [149 0 R/XYZ 72 618.22 null] endobj 360 0 obj [149 0 R/XYZ 72 593.33 null] endobj 374 0 obj [149 0 R/XYZ 72 570.57 null] endobj 387 0 obj [149 0 R/XYZ 72 547.8 null] endobj 401 0 obj [149 0 R/XYZ 72 525.04 null] endobj 414 0 obj [149 0 R/XYZ 72 504.4 null] endobj 428 0 obj [149 0 R/XYZ 72 479.51 null] endobj 440 0 obj [149 0 R/XYZ 72 456.75 null] endobj 455 0 obj [149 0 R/XYZ 72 433.98 null] endobj 468 0 obj [177 0 R/XYZ 72 639.48 null] endobj 666 0 obj [256 0 R/XYZ 71 756.72 null] endobj 667 0 obj [259 0 R/XYZ 71 756.72 null] endobj 429 0 obj [286 0 R/XYZ 72 404.59 null] endobj 668 0 obj [262 0 R/XYZ 71 756.72 null] endobj 430 0 obj [286 0 R/XYZ 72 355.78 null] endobj 669 0 obj [265 0 R/XYZ 71 756.72 null] endobj 431 0 obj [286 0 R/XYZ 72 283.21 null] endobj 670 0 obj [268 0 R/XYZ 71 756.72 null] endobj 432 0 obj [286 0 R/XYZ 72 97.56 null] endobj 671 0 obj [271 0 R/XYZ 71 756.72 null] endobj 433 0 obj [289 0 R/XYZ 72 718.85 null] endobj 675 0 obj [274 0 R/XYZ 71 756.72 null] endobj 435 0 obj [289 0 R/XYZ 72 602.73 null] endobj 676 0 obj [277 0 R/XYZ 71 756.72 null] endobj 436 0 obj [292 0 R/XYZ 72 180.87 null] endobj 677 0 obj [280 0 R/XYZ 71 756.72 null] endobj 437 0 obj [295 0 R/XYZ 72 718.85 null] endobj 678 0 obj [283 0 R/XYZ 71 756.72 null] endobj 438 0 obj [295 0 R/XYZ 72 651.85 null] endobj 439 0 obj [295 0 R/XYZ 72 514.53 null] endobj 484 0 obj [177 0 R/XYZ 72 560.28 null] endobj 496 0 obj [177 0 R/XYZ 72 515.64 null] endobj 506 0 obj [177 0 R/XYZ 72 470.64 null] endobj 507 0 obj [177 0 R/XYZ 72 432.09 null] endobj 508 0 obj [177 0 R/XYZ 72 385.33 null] endobj 509 0 obj [177 0 R/XYZ 72 364.7 null] endobj 510 0 obj [181 0 R/XYZ 72 407.29 null] endobj 512 0 obj [181 0 R/XYZ 72 305.94 null] endobj 513 0 obj [184 0 R/XYZ 72 380.64 null] endobj 514 0 obj [184 0 R/XYZ 72 151.24 null] endobj 771 0 obj [125 0 R/XYZ 72 593.95 null] endobj 772 0 obj [125 0 R/XYZ 72 348.83 null] endobj 773 0 obj [130 0 R/XYZ 72 718.85 null] endobj 681 0 obj [286 0 R/XYZ 71 756.72 null] endobj 774 0 obj [130 0 R/XYZ 72 177.18 null] endobj 682 0 obj [289 0 R/XYZ 71 756.72 null] endobj 442 0 obj [295 0 R/XYZ 72 468.45 null] endobj 753 0 obj [83 0 R/XYZ 72 718.85 null] endobj 775 0 obj [133 0 R/XYZ 72 557.5 null] endobj 683 0 obj [292 0 R/XYZ 71 756.72 null] endobj 443 0 obj [295 0 R/XYZ 72 404.59 null] endobj 754 0 obj [103 0 R/XYZ 72 718.85 null] endobj 776 0 obj [133 0 R/XYZ 72 313.15 null] endobj 684 0 obj [295 0 R/XYZ 71 756.72 null] endobj 444 0 obj [295 0 R/XYZ 72 355.78 null] endobj 755 0 obj [119 0 R/XYZ 72 718.85 null] endobj 778 0 obj [133 0 R/XYZ 72 161.45 null] endobj 445 0 obj [295 0 R/XYZ 72 283.21 null] endobj 685 0 obj [298 0 R/XYZ 71 756.72 null] endobj 758 0 obj [125 0 R/XYZ 72 718.85 null] endobj 779 0 obj [137 0 R/XYZ 72 718.85 null] endobj 446 0 obj [295 0 R/XYZ 72 97.56 null] endobj 686 0 obj [301 0 R/XYZ 71 756.72 null] endobj 780 0 obj [137 0 R/XYZ 72 421.38 null] endobj 759 0 obj [142 0 R/XYZ 72 718.85 null] endobj 447 0 obj [298 0 R/XYZ 72 718.85 null] endobj 688 0 obj [304 0 R/XYZ 71 756.72 null] endobj 760 0 obj [149 0 R/XYZ 72 718.85 null] endobj 451 0 obj [298 0 R/XYZ 72 602.73 null] endobj 689 0 obj [307 0 R/XYZ 71 756.72 null] endobj 761 0 obj [177 0 R/XYZ 72 718.85 null] endobj 452 0 obj [301 0 R/XYZ 72 456.03 null] endobj 690 0 obj [310 0 R/XYZ 71 756.72 null] endobj 453 0 obj [301 0 R/XYZ 72 382.82 null] endobj 691 0 obj [313 0 R/XYZ 71 756.72 null] endobj 762 0 obj [328 0 R/XYZ 72 718.85 null] endobj 454 0 obj [301 0 R/XYZ 72 266.84 null] endobj 764 0 obj [331 0 R/XYZ 72 718.85 null] endobj 516 0 obj [184 0 R/XYZ 72 129.72 null] endobj 517 0 obj [187 0 R/XYZ 72 407.74 null] endobj 519 0 obj [187 0 R/XYZ 72 178.34 null] endobj 520 0 obj [187 0 R/XYZ 72 156.82 null] endobj 521 0 obj [187 0 R/XYZ 72 121.45 null] endobj 522 0 obj [190 0 R/XYZ 72 366.53 null] endobj 523 0 obj [190 0 R/XYZ 72 165.81 null] endobj 524 0 obj [190 0 R/XYZ 72 144.82 null] endobj 526 0 obj [190 0 R/XYZ 72 96.73 null] endobj 527 0 obj [193 0 R/XYZ 72 398.26 null] endobj 694 0 obj [316 0 R/XYZ 71 756.72 null] endobj 457 0 obj [301 0 R/XYZ 72 148.45 null] endobj 695 0 obj [319 0 R/XYZ 71 756.72 null] endobj 458 0 obj [301 0 R/XYZ 72 116.12 null] endobj 696 0 obj [322 0 R/XYZ 71 756.72 null] endobj 459 0 obj [304 0 R/XYZ 72 371 null] endobj 697 0 obj [325 0 R/XYZ 71 756.72 null] endobj 460 0 obj [304 0 R/XYZ 72 322.54 null] endobj 698 0 obj [328 0 R/XYZ 71 756.72 null] endobj 461 0 obj [304 0 R/XYZ 72 285.5 null] endobj 699 0 obj [331 0 R/XYZ 71 756.72 null] endobj 462 0 obj [304 0 R/XYZ 72 250.59 null] endobj 702 0 obj [334 0 R/XYZ 71 756.72 null] endobj 464 0 obj [304 0 R/XYZ 72 202.14 null] endobj 703 0 obj [337 0 R/XYZ 71 756.72 null] endobj 465 0 obj [304 0 R/XYZ 72 167.23 null] endobj 466 0 obj [304 0 R/XYZ 72 145.86 null] endobj 467 0 obj [304 0 R/XYZ 72 99.53 null] endobj 529 0 obj [193 0 R/XYZ 72 168.86 null] endobj 530 0 obj [193 0 R/XYZ 72 147.34 null] endobj 531 0 obj [193 0 R/XYZ 72 111.97 null] endobj 534 0 obj [196 0 R/XYZ 72 261.81 null] endobj 535 0 obj [199 0 R/XYZ 72 718.85 null] endobj 536 0 obj [199 0 R/XYZ 72 703.78 null] endobj 537 0 obj [199 0 R/XYZ 72 654.56 null] endobj 538 0 obj [199 0 R/XYZ 72 581.57 null] endobj 540 0 obj [199 0 R/XYZ 72 532.95 null] endobj 541 0 obj [199 0 R/XYZ 72 495.76 null] endobj 470 0 obj [307 0 R/XYZ 72 461.07 null] endobj 471 0 obj [307 0 R/XYZ 72 426.6 null] endobj 472 0 obj [307 0 R/XYZ 72 380.69 null] endobj 473 0 obj [307 0 R/XYZ 72 348.33 null] endobj 474 0 obj [307 0 R/XYZ 72 218.08 null] endobj 475 0 obj [307 0 R/XYZ 72 136.5 null] endobj 478 0 obj [307 0 R/XYZ 72 102.02 null] endobj 479 0 obj [310 0 R/XYZ 72 421.29 null] endobj 480 0 obj [310 0 R/XYZ 72 384.1 null] endobj 481 0 obj [310 0 R/XYZ 72 334.88 null] endobj 543 0 obj [199 0 R/XYZ 72 433.6 null] endobj 544 0 obj [202 0 R/XYZ 72 199.34 null] endobj 781 0 obj [142 0 R/XYZ 72 467.52 null] endobj 545 0 obj [205 0 R/XYZ 72 718.85 null] endobj 782 0 obj [142 0 R/XYZ 72 123.14 null] endobj 547 0 obj [205 0 R/XYZ 72 678.8 null] endobj 783 0 obj [146 0 R/XYZ 72 484.2 null] endobj 548 0 obj [205 0 R/XYZ 72 614.52 null] endobj 549 0 obj [205 0 R/XYZ 72 565.29 null] endobj 550 0 obj [205 0 R/XYZ 72 492.3 null] endobj 551 0 obj [205 0 R/XYZ 72 302.89 null] endobj 552 0 obj [205 0 R/XYZ 72 267.21 null] endobj 554 0 obj [205 0 R/XYZ 72 232.75 null] endobj 556 0 obj [205 0 R/XYZ 72 184.13 null] endobj 557 0 obj [208 0 R/XYZ 72 408.65 null] endobj 558 0 obj [208 0 R/XYZ 72 184.3 null] endobj 559 0 obj [208 0 R/XYZ 72 164.46 null] endobj 563 0 obj [211 0 R/XYZ 72 718.85 null] endobj 564 0 obj [211 0 R/XYZ 72 676.38 null] endobj 565 0 obj [214 0 R/XYZ 72 432.74 null] endobj 566 0 obj [214 0 R/XYZ 72 208.03 null] endobj 567 0 obj [214 0 R/XYZ 72 188.07 null] endobj 788 0 obj <> endobj 791 0 obj <>/Parent 790 0 R/Next 792 0 R>> endobj 792 0 obj <>/Parent 790 0 R/Prev 791 0 R>> endobj 790 0 obj <>/First 791 0 R/Last 792 0 R/Count -2/Parent 789 0 R/Next 793 0 R>> endobj 794 0 obj <>/Parent 793 0 R/Next 795 0 R>> endobj 795 0 obj <>/Parent 793 0 R/Prev 794 0 R/Next 796 0 R>> endobj 796 0 obj <>/Parent 793 0 R/Prev 795 0 R>> endobj 793 0 obj <>/First 794 0 R/Last 796 0 R/Count -3/Parent 789 0 R/Prev 790 0 R/Next 797 0 R>> endobj 797 0 obj <>/Parent 789 0 R/Prev 793 0 R/Next 798 0 R>> endobj 799 0 obj <>/Parent 798 0 R/Next 800 0 R>> endobj 800 0 obj <>/Parent 798 0 R/Prev 799 0 R/Next 801 0 R>> endobj 801 0 obj <>/Parent 798 0 R/Prev 800 0 R/Next 802 0 R>> endobj 802 0 obj <>/Parent 798 0 R/Prev 801 0 R/Next 803 0 R>> endobj 803 0 obj <>/Parent 798 0 R/Prev 802 0 R/Next 804 0 R>> endobj 804 0 obj <>/Parent 798 0 R/Prev 803 0 R/Next 805 0 R>> endobj 805 0 obj <>/Parent 798 0 R/Prev 804 0 R/Next 806 0 R>> endobj 806 0 obj <>/Parent 798 0 R/Prev 805 0 R/Next 807 0 R>> endobj 807 0 obj <>/Parent 798 0 R/Prev 806 0 R>> endobj 798 0 obj <>/First 799 0 R/Last 807 0 R/Count -9/Parent 789 0 R/Prev 797 0 R/Next 808 0 R>> endobj 809 0 obj <>/Parent 808 0 R/Next 810 0 R>> endobj 810 0 obj <>/Parent 808 0 R/Prev 809 0 R/Next 811 0 R>> endobj 811 0 obj <>/Parent 808 0 R/Prev 810 0 R>> endobj 808 0 obj <>/First 809 0 R/Last 811 0 R/Count -3/Parent 789 0 R/Prev 798 0 R/Next 812 0 R>> endobj 812 0 obj <>/Parent 789 0 R/Prev 808 0 R/Next 813 0 R>> endobj 814 0 obj <>/Parent 813 0 R/Next 815 0 R>> endobj 815 0 obj <>/Parent 813 0 R/Prev 814 0 R/Next 816 0 R>> endobj 816 0 obj <>/Parent 813 0 R/Prev 815 0 R/Next 817 0 R>> endobj 817 0 obj <>/Parent 813 0 R/Prev 816 0 R/Next 818 0 R>> endobj 818 0 obj <>/Parent 813 0 R/Prev 817 0 R/Next 819 0 R>> endobj 819 0 obj <>/Parent 813 0 R/Prev 818 0 R/Next 820 0 R>> endobj 820 0 obj <>/Parent 813 0 R/Prev 819 0 R/Next 821 0 R>> endobj 821 0 obj <>/Parent 813 0 R/Prev 820 0 R/Next 822 0 R>> endobj 822 0 obj <>/Parent 813 0 R/Prev 821 0 R/Next 823 0 R>> endobj 823 0 obj <>/Parent 813 0 R/Prev 822 0 R/Next 824 0 R>> endobj 824 0 obj <>/Parent 813 0 R/Prev 823 0 R/Next 825 0 R>> endobj 825 0 obj <>/Parent 813 0 R/Prev 824 0 R/Next 826 0 R>> endobj 826 0 obj <>/Parent 813 0 R/Prev 825 0 R/Next 827 0 R>> endobj 827 0 obj <>/Parent 813 0 R/Prev 826 0 R/Next 828 0 R>> endobj 828 0 obj <>/Parent 813 0 R/Prev 827 0 R/Next 829 0 R>> endobj 829 0 obj <>/Parent 813 0 R/Prev 828 0 R/Next 830 0 R>> endobj 830 0 obj <>/Parent 813 0 R/Prev 829 0 R/Next 831 0 R>> endobj 831 0 obj <>/Parent 813 0 R/Prev 830 0 R/Next 832 0 R>> endobj 832 0 obj <>/Parent 813 0 R/Prev 831 0 R/Next 833 0 R>> endobj 833 0 obj <>/Parent 813 0 R/Prev 832 0 R/Next 834 0 R>> endobj 834 0 obj <>/Parent 813 0 R/Prev 833 0 R/Next 835 0 R>> endobj 835 0 obj <>/Parent 813 0 R/Prev 834 0 R/Next 836 0 R>> endobj 836 0 obj <>/Parent 813 0 R/Prev 835 0 R/Next 837 0 R>> endobj 837 0 obj <>/Parent 813 0 R/Prev 836 0 R/Next 838 0 R>> endobj 838 0 obj <>/Parent 813 0 R/Prev 837 0 R/Next 839 0 R>> endobj 839 0 obj <>/Parent 813 0 R/Prev 838 0 R/Next 840 0 R>> endobj 840 0 obj <>/Parent 813 0 R/Prev 839 0 R/Next 841 0 R>> endobj 841 0 obj <>/Parent 813 0 R/Prev 840 0 R/Next 842 0 R>> endobj 842 0 obj <>/Parent 813 0 R/Prev 841 0 R/Next 843 0 R>> endobj 843 0 obj <>/Parent 813 0 R/Prev 842 0 R/Next 844 0 R>> endobj 844 0 obj <>/Parent 813 0 R/Prev 843 0 R/Next 845 0 R>> endobj 845 0 obj <>/Parent 813 0 R/Prev 844 0 R>> endobj 813 0 obj <>/First 814 0 R/Last 845 0 R/Count -32/Parent 789 0 R/Prev 812 0 R/Next 846 0 R>> endobj 846 0 obj <>/Parent 789 0 R/Prev 813 0 R/Next 847 0 R>> endobj 847 0 obj <>/Parent 789 0 R/Prev 846 0 R/Next 848 0 R>> endobj 848 0 obj <>/Parent 789 0 R/Prev 847 0 R>> endobj 789 0 obj <> endobj 852 0 obj [9 0 R] endobj 3 0 obj <> endobj 12 0 obj <> endobj 853 0 obj [19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R 56 0 R 57 0 R 58 0 R 59 0 R] endobj 16 0 obj <> endobj 855 0 obj [63 0 R 64 0 R 65 0 R 66 0 R 67 0 R 68 0 R 69 0 R 70 0 R 71 0 R 72 0 R 73 0 R 74 0 R 75 0 R 76 0 R 77 0 R 78 0 R 79 0 R 80 0 R] endobj 62 0 obj <> endobj 856 0 obj [85 0 R 86 0 R 87 0 R 88 0 R 90 0 R] endobj 83 0 obj <> endobj 854 0 obj <> endobj 851 0 obj <> endobj 93 0 obj <> endobj 858 0 obj [100 0 R] endobj 99 0 obj <> endobj 859 0 obj [104 0 R] endobj 103 0 obj <> endobj 861 0 obj [109 0 R 110 0 R 111 0 R] endobj 107 0 obj <> endobj 116 0 obj <> endobj 860 0 obj <> endobj 857 0 obj <> endobj 119 0 obj <> endobj 122 0 obj <> endobj 863 0 obj [126 0 R 127 0 R] endobj 125 0 obj <> endobj 130 0 obj <> endobj 133 0 obj <> endobj 864 0 obj <> endobj 862 0 obj <> endobj 866 0 obj [138 0 R] endobj 137 0 obj <> endobj 867 0 obj [143 0 R] endobj 142 0 obj <> endobj 146 0 obj <> endobj 149 0 obj <> endobj 153 0 obj <> endobj 868 0 obj <> endobj 865 0 obj <> endobj 850 0 obj <> endobj 156 0 obj <> endobj 159 0 obj <> endobj 162 0 obj <> endobj 165 0 obj <> endobj 168 0 obj <> endobj 871 0 obj <> endobj 870 0 obj <> endobj 171 0 obj <> endobj 174 0 obj <> endobj 873 0 obj [178 0 R] endobj 177 0 obj <> endobj 181 0 obj <> endobj 184 0 obj <> endobj 874 0 obj <> endobj 872 0 obj <> endobj 187 0 obj <> endobj 190 0 obj <> endobj 193 0 obj <> endobj 196 0 obj <> endobj 199 0 obj <> endobj 876 0 obj <> endobj 875 0 obj <> endobj 202 0 obj <> endobj 205 0 obj <> endobj 208 0 obj <> endobj 211 0 obj <> endobj 214 0 obj <> endobj 878 0 obj <> endobj 877 0 obj <> endobj 869 0 obj <> endobj 217 0 obj <> endobj 220 0 obj <> endobj 223 0 obj <> endobj 226 0 obj <> endobj 229 0 obj <> endobj 881 0 obj <> endobj 880 0 obj <> endobj 232 0 obj <> endobj 235 0 obj <> endobj 238 0 obj <> endobj 241 0 obj <> endobj 244 0 obj <> endobj 883 0 obj <> endobj 882 0 obj <> endobj 247 0 obj <> endobj 250 0 obj <> endobj 253 0 obj <> endobj 256 0 obj <> endobj 259 0 obj <> endobj 885 0 obj <> endobj 884 0 obj <> endobj 262 0 obj <> endobj 265 0 obj <> endobj 268 0 obj <> endobj 271 0 obj <> endobj 274 0 obj <> endobj 887 0 obj <> endobj 886 0 obj <> endobj 879 0 obj <> endobj 277 0 obj <> endobj 280 0 obj <> endobj 283 0 obj <> endobj 286 0 obj <> endobj 289 0 obj <> endobj 890 0 obj <> endobj 889 0 obj <> endobj 292 0 obj <> endobj 295 0 obj <> endobj 298 0 obj <> endobj 301 0 obj <> endobj 304 0 obj <> endobj 892 0 obj <> endobj 891 0 obj <> endobj 307 0 obj <> endobj 310 0 obj <> endobj 313 0 obj <> endobj 316 0 obj <> endobj 319 0 obj <> endobj 894 0 obj <> endobj 893 0 obj <> endobj 322 0 obj <> endobj 325 0 obj <> endobj 328 0 obj <> endobj 896 0 obj <> endobj 331 0 obj <> endobj 334 0 obj <> endobj 337 0 obj <> endobj 897 0 obj <> endobj 895 0 obj <> endobj 888 0 obj <> endobj 849 0 obj <> endobj 2 0 obj <> endobj 1 0 obj <>/PageLabels<>4<>]>>/Names 788 0 R/Outlines 789 0 R/Pages 849 0 R/Type/Catalog>> endobj 898 0 obj [625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 581 0 0 0 0 0 0 0 0 0 0 375 312.5 0 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 312.5 0 0 0 0 0 0 849.5 0 812.5 862.3 738.4 0 0 0 419 0 0 675.9 0 0 844.9 768.5 844.9 839.1 625 782.4 864.6 0 1162 0 0 0 0 581 0 0 0 0 546.9 625 500 625 513.3 343.8 562.5 625 312.5 0 593.8 312.5 937.5 625 562.5 625 593.8 459.5 443.8 437.5 625 593.8 0 593.8 593.8 500] endobj 899 0 obj <> stream xڍX XWDŵVCn$hԸ(*EEAvP@wO7 4 "BkBAK4c>8&=E.3n$ޛ??n{ZXX0z+]&8-\?u{Ȟ]pF!G8b$H+x@/6W1 ';:Nse7nxf9M8nA_DVe2*/TE k7nN@TL v1Qv""|\â>Tx=9dV2*f5a2Ofbz1ƂQ1(8Hr%7zz$u^ph\hf`Y'-aor\yVǡOy)} ~ߡ t? R :=x`!!_Sxj;ds1ۺ#WTߵOU{feA6 %g{~$G{?[>fEViCmuB?e5q4}z)ujPgg''g%@>Mؑ%-T,3 LR;LɘC侘R$?W p!Iއ$'lOnF1R.XJyש XXHa'peО{b]I Y#f 7ɚ,^B6ڢ;Z 敲tzL56|EI!J8NlUS4T9q}OpO[;a:g %16)4;bLӮI'!nh/bϣ GksMau>ʰ0k?|-R %w"Yo8wh*w^sU1!4kSώ*?U:FȆts\0#2BH84: d5=B, ")tvQ1"#[}#ϡbΓz¼q{,S6R,GjpIBQ6Q榸 k%An9iawArPZM~AQ&qQ|(3׾DaGРX_:ȧd|+x)9{H!yR\Ӝ >ln;~]9ڨ-~6H%K` |w#rr_g'.8~9;f2WI +4h%3^GC=Ge@MFQ 8,eLSm.k(]e#q!K m/@񾼼}P-힀4ֻxT'Z:x^Ni!bhkkW%v'GhENۺGc ëwh*ObuGzˣ0G mgώp7O:]A5Z?LS ãb +ѥuWڽe/_c}$gDl>O% 9"[Ǐ{Q"U$j [6I,tDE-Hf]OhM8kB5O? L%76q ώ2QNBvP{jo9 ~^vO; Eh9I!kvBcPCMdC1G4YuW{=qY%^4KRfUSqzi%id2MOƣ ]Ekڟ@ SD{Ne0ŀೀ|Wrܥ/ Nm~d6UGmܺ%NB6X#] yN{858PF؟ˉ߇b':Z1:@x =6- J+"l&68ƴ(F撅hCg+eSw,EGNsͲ0L^e)Q&z95Q JX-;5h_@s 0kk6.LKFgG#56mDaP7$5v 0g%*+D1$DK?{N?vh&We^737)orFM|u*r0.y5&tFl9l5u:d8^"3%㠬N 7PGg-)0k+8)r"vd:o2tŽ8F %<{Go1 :hւIJl7mg+ID.P37DSOў~0y :r_Af2L2v'$'RW*o@1צ:w 2* Jl 鐭NMQlp܁ƨySDK g<ezHU/.s9BD~8 Ǩ@N pѐEk!4]an_M'%ׯ7'DRCrbH m;:?wվ#~wMu4A|tt-OSUۧ-Jr2FYj.υ(ZUUl-m{uY5dԘUĊ8g[F6Lev?WTؼ&pݧ7HaNcT/7w@{8#Aa !=9UժT2{ Y"X~k&_y}0dd7C\ÿea<"1\JR\(*mй[g[{qfNXXnG/w; N5 2F;[Ws-ii&/zzI) tbA2 *(K?Pꆻ7K7} :"/Qsy  m|HPQ9~SlF= S^<z-=m3MFT/Ȃ4K{!|7;|>ƑPY޻|^g4ӧ vfX-;% 4 8@ǟĤ7_ )BՙI黶/Bkp ayLzjNT)쮩hzkbX2)8#'sHr){!ٝe[\FoNȨ,s,ZYt8.E*'CɡTX#RiK~ Àu^ROL}**jp8VeǾUNh2ؽt 8%tD3w,sKFq9yIsPpo@Gj6йٯ,ZzCI?RRPZu*>%u7Ds[bVJZ9ѿ PWPM`IM 8L<"sIq(.O8Gu?=&0CRA]iL*]UT6(DGT#š!9pEն (X͹_^+Ѫ"0-Q%5dהO.?>?u >\6msċy-3 `l5^%r/ZsV7v|Dz c`㢄PN9?1cr"sұycHmD{OiH1Kj֧>!~~M=tqaξkf#CKf '=eB)>@=~(*(}Fv*0s.[T&,,#clD-d_Gm褦Rb APϠJ&.FV%$FǠ01Nx}`̿dD"6Nr; iD-aOq&[73mc+_Qɨ|đ@fIqO nchsMrkqKzD`t-$$XGF0]22G RaIUjfYA>>5+;9=3;t[.%Pd;3k3{DPr8BVwf5Qd/L lN| TŁE>Gs,/\YˏB@).FhMsY-Z4gX#+@ϵ_M$NU;衔y}EY{Q7n%+=Yаp.k_{zvϪ9+3Z ;Jn+N ,LTY!F&Zy%{/?c>۩$31PmefI3SHoR`CxxO%SմB34ܽ6d6I= s7{EљI aIћ]C$ArVs9}dEhHdtwp>EuC`PgIr%Ȓ|sl9=n65rml?nTwzA9ʬDwn)/(My %}EIU~Syޚb!їE endstream endobj 900 0 obj [575 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 750 0 0 0 0 0 300 350 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 726.9 0 700 0 663.4 638.4 756.7 0 376.9 0 0 0 0 0 750 0 0 713.4 550 0 0 0 0 0 0 0 0 0 0 0 0 0 500 450 450 500 450 300 450 500 300 0 450 250 800 550 500 500 450 412.5 400 325 525 450 0 450 475] endobj 901 0 obj <> stream xڭX TS=!RjZzkZGT EfAB d@&fa *U[mVڮ{k{uo_]o׮v-arro{a |{w6^!b,M`W14yyC=OSO߳L]×., 熆.XHI 1/Y痃. ~`0)&:5xC(1`H IIg.M͛'FL&1`q(18<.=N?U}0.xcV 2Dq 8a*3`21x6X巆HIY,H%@b:~ϋL%"XHB,^I"!%VkzbDl&‰-DFl'vD"  ]~߲qKy8&M@'MT,dQ`XcN|\d{' .zzrGsV޸M G]̭iR)MM!VYOjַ,=m)f/ڸ'&?`5 +Dר[~rAYшb}P8 &(p+!b19,P>PFn zMvjdILTm]0*ҨMbRkP.,2 Ӥ>LvZZCCyt$h,^g6HA :*dRGVqQ8bot{YhmX`SzLSbMkdDFș7XpŽ/}(AM)Ak)9̄es ]r=CC-^ H-f4E\R1^aB n4 nGy\ Ck$rQЁN+Y,\T '`t` j}çA땠k4}Q`4Y,sQ t2\cu խf#|ȥKa9Y{]:NheUeXc=0݆9Ħ]=3}]6qK!TO mOo]ޥ5,4'[ 碐hC1{a^# Eh# 6E4sW|}E ? vfz5twOf5{NtX?}.S@1sFGkFCPT@b-M;N^@g{ n 0I*(!k X3/ӽ[뗻7-\uśܦUL4|a Zh(s\׶ѺPR q zrMcϦ2^T$>g+= 9Re@F|4$(ngiwENnZ?)y i_@`Gj|]Fu[ hȦuT|bs`AYVJ-L;ֵ BIUR&i4^9ߨWME5\?)~=2٤#w ցfƼߧO@%y'K{5A9jl6'N%rXםsn\r&8)ȭx&Gи:<>:Ej^S9`s#^n23Fty]+F(7Yp N'ؙMÆL@vBU@&`4U:m"I0 JZGY>!OAx~/J]g'U/[%udKr2gme=ŬpX֯~@ ki/<6luX+ 035a,0Z[yU+~zp^B1ZX _x( Hɕ}T'WT?GixVcI0 p@p{rgpMf'iB%31X.WUK}V^jgjR(ȝ^^?I(h+璣6pJ+[K/a, Ы})"7&TEcXѠZʢ 3!!B}yklȔ= 4y澬Izv;t]eUm@Cj> Y t9JZ2ߚ_Qn8M.RQ]aMQuapWN.qR5 ̠~=[g[sMݝp ڇΏ "ۣF-֝y롃1[@G3(ntRyq4Kg%G_C3K͍aKf*WRŹTinSCSaQ 4(f va]7,4E!>uXBMүm>SK͵6{F |mTU=YEBYI9)2wzglt8ڍ^^<:7L dfjnik^2~نʫJ1>fB-(G}5\mV.GUc] q/UIu!'-&h[eUQv$kL"JsX^̇R`gl zSVKyXmD+(ORpoe.( d};T/3-XnG ['4 ǀO/,FקTeYXf>o1ѹΏ}hfY~J,|Z˕ZZ@O̓]sj{KQoˣ+C< \G'bÏR8UXN'+24yQc/j{QC v@,98uڝ-=g{rMdD%Q0ilr rȴ=L13a3m]笵M>q!ˮ"b'k&:1PI!I"8ZSwNf4TX#@\9hc)$iR$4$nGsZ8C'ii9dM§4/:@|ww^hJ-NJj콖ƪΛg>UC#o_Jۘ> stream xڥS}L[6~/:Wo+)II%#YҔ@W5p+1`8#FI g!MۥݤݺYe4rwGPM~ҽ=wϏ$d2$ɇx傟d徐t 7٘3N!]zy7ddnPAExX{ț5UVȣ^ڵa!r]hժpeqL-A_3]I\sD7 ^ Kq9CW~9Of)t;4U)b[$$śwRC;;XQǑIߔIT0JA#g|bN+jg]d 0# C}Xô'*Slb(mٛ_ (^D4\_Ѿ2>> ;Hޛ-8g7V-Rzw>qtzO,>QQN;.-i,]SN 3{?Nxe)ݕ&E GWsf[a8Ph8pC*d2%Z&1N)DoZe!.XG-QL[+|CK^`!@06)Ӄe=L#C)z9ߌ8z.ࡡ\}. wvC)T2пE*®.!=D Lj/d.{ g?qvzE@c!;>N{O [mP1o;$-|pokGMwffiS}rж {4zr_S 5}QkG_ga#mjy>ǣhS[sT,rY֦riQXWXmõ5S6xUyF溧h. 2两Wwu$$t&<Ĭٌ +tR endstream endobj 904 0 obj <> stream x]n0y^jhBH$!"XdoV;8[O4M ctXo.Vy~~lg;ؼdw殀{UyD#?d QA^VoJr!KSZWJSe}crO+4J)-9G9yγC:Ο#;=z ǙVq9+Mu̵a# z_!`Us_7yE ^GFM  endstream endobj 905 0 obj [833.3 0 0 0 0 0 0 0 0 0 583.3 555.6 555.6 833.3 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 0 0 0 500 0 0 833.3 777.8 277.8 388.9 388.9 0 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 0 777.8 0 0 0 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 0 750 611.1 277.8 500 277.8 0 277.8 0 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 500 0 0 0 500] endobj 906 0 obj <> stream xڭzt a&6iN(zjMa[.%$^drm\(`: :G{ uݵMxxy?X{g73W"gOJ$[h㪍cZ?i4WMoD<׃w{GQ“zT_ʒzG()5bww)kʆH So5AOFQ1Xj5@M&Q)Tj!5A͢>fS;xj>ZH-SK2j9ZIVSk:j=HQj+NP ԖQQs=7Y @Ewz)F?([3ߺkrG{׷gY}޴OկFZ%II 3;v;]m2Z :A >cpgE[%+;lke+{¡Pп pG88L5dT䨔Qxe2Zw\uj$D:)1?}uR@UX%yA̯e ww{ࣦWa:18+ԫ4!lP~2KJYpZt'*T.&0GE1l|poX7e*djҪ{&䀓WD`PPa`=g4N%yd$.X*6$ILMN; šMw/X`DF77N|֛,)nnϦedg*8HJT&n]4p>,Umᅻ}p:~ z'2ȃ]m_xNo9-E}R| $Fe.%#1ٰehܒG eoh a?b1Er3?Ȍ ;{ϢA&tRܾeUWx;l>Ѧh<_R@˘iF 3ܗ>h A\RFqM1XsD3_}癃Qwqi &Oc#(옩W>㾅j/9)I=57Um;,55$q5[UPcU}zLkc,Qr3Nx_lj%o%m08=" qdh>zdx~ҒXbsq ~,`R{(y ҳp]nDkӾF ?:v</ULʔ4:GP$fMA[4P$j$y`0CP8j%yPŵtt8C $n0@qGv@Q˞ ivI鬵ZM VvW*IH2 D֜e"1BkShM{/hQ*?$߿,_N+5W+!9N|$FAJ>K (j2y'tI7~f3A.}'́Isͺv7%zn0_f`){x 8Vz_4A-(J(V٤`4^lBU+I_@j+g:iOU$WRMM=I ~G_`^z}MDܙcI&Ėbބ.<܋KBCSűS<7k&!魳7BA aͷ$%:NLXN啗^?~njA=? }x )> {E)'ƾ?w\ocx`:l94OAz]`M&D D 1" KFeNI$2hljO!|'++ 4k`4J{]f}}v{ZOb%!iK#* RoYtzVѻw?nFvhz|)n;8Eyz1h3mP&޾(7M(TTa–+H/IЫgL$D!:tSҲ ݂60Ȉ(йVFx70<5"M^;]C W=:u懖yD=^Pځ-Fi_R[ƝnWp-m,l< <,I,|)=sҎ%%l;zJ;̏hP\yA0*- HO5;B§b>f Xd unr1,.& lnNzu%PJQH= 2As8xdqGh8?q,4ϻb}yGCKvGu(d>spm/ƸPH'8rּDZcM:i`3䧥 A{KxIT֊&f3ޞSm}yT͹o[|.ac]b}h3l:.t{U|y_c.ߒl#dW-!>ap&ZgRz>f`h UkICόu!; r|RVf1SN~E[+=w;}"iueQ_> dҘb^bMTYRtm.#]MȦ oh@ܾd_%e(_7kݯ e{Om_&ӣ TʤhuvB}zsFefiuѻ$GdlPB$r"wPBGk :]Q`#E&-|%[獨ldwЩn{HC[9OM+Mb٣xisp?6~[&Sx:h/>B|depU,aV,/WP9ZK?kt rsf/x:R@߱}'hH,HJM\f;YAGdģmh8$ }]4)} х!y[FD䧀]d!/}.kѯLzeP 84 E 4 ϕ۲{z..ȏ,ܷ6s,_-,p &@1="4fBcMz ξrE҂I COXe !4C K)|pP=n 1Iܢ+XftKFf7gt\++I͏ċ7=rdHs>qci([t  #-MrsWt7,+or% 24nLI#ݷfC$w P𐭠',ۭg_$;6@'cg쌦)hL2,sʵhbe_/ 8Қ Bk{~-ݜgk{)N?@ך,Zed=rKkcT>v T&-!*..!m4ize$->3bm [nu{;ٍ])~-] hÉJVIהg:BB:5IIQ:Zgj5Az?DW@ ^mjom: :]>\DR=fK{9^?S x"Zh roX~Z_Q9Q0o=~OE/"G YT$h fS`ƛ^\0|s4ΈF6xlBW X;yP$rOi89xȐ9>EZ5&d;}ر%`~UIm1,u[4X_r@c O-PVHP˛͑,VqJ;g?'=!HʍFF*7wiߗ+T8I͡r,]yz&CfQ1Ӳu{,Gr7YDRg-xi@ k{qe50 oWAvxMrWD0D?iqn[b`?Dy9չM'ޚ̫ݎ)>Ρg9h$#RehG'Fگʥy2x)Cd0Gb/&IEbubGIP7x3 .MSk@b ӑM&.=z}QsH'P2<_v{A%h^ބ2 }|LI±LyhZ~- EPYdP@(C C9Wa |9ԹC!oIyE)ٺ (&ayxZgQ'hEff̢X,*n.nټ#3_&o.HXܦ) "$RxE.k)H1Tj1ow b\;uzx* AX%oCSjWtRcpP1.x*IQAM)(s֟4.Ʋyx Sh:߸*$x vk}>.)h&jfuu}h)wنN@7B5@IV♸/C&fRmJL):n;dyd( o~c.eȎ0.Uo LTȎEgD#[hI $DB ;K 4 X^EiDMk^MblӘ=mNCP["< - :NԨ+F y)2I9'I)Isq5e*ʅcR7QuJ{YYqAV_Af2~Ӕ}hby oi1Up h42L/JH?$g/_Tn'\E Y,a>jT;jEv`\yޠfIhݙ%潵ǠZv#A FF;(|eOʦwM{yp.PڨgvOILˈhdytIJuI[:S8%:uc8nQz|_ XomݴMC8L_7ioaEW,$/v)EO-EPjUvͿZxJOةTښ|SFNie0ad(s4>bC\ Ȍ )PZhh hV…k2hj.SZ$05$2Y饅5n$.εz+_c8MbvGx#m7& \6"K#9>rS:X Z]f //>rT63%POfphYUlg8P N{DWQަJq%fۭp4uxM56p̾хކu0D3?ppEڂry_b[aJW2jteuu]2%6ʤ?{ٚ_y`P1\i*!w ; ƇtI!t9Cwp#(~=e|"!1>_T\2u|+<}ˢ4cM?~t&,"SNMo'6)!ZGcsk23HPm^ {tL^|cxDjoL*9.>Y^ K7 BHU*&Z[<ҀhA4$F2 3aheD3vt2#W'*/No{,GܫâU~nh4uq!|o,n_2zrk:&zLD8i _Y%\n h1?c3K /T ١AJxurbΰ=Q2s*o"2+i6C]~򳐢%YEr!R2SK\p-:lέɉ8.\x^cP:)f"δjs4dR"_E% Y1li8z2$ =yʫ՝%ovz!Gレ֩A7]Zjޏ'ܐ>}ݕFkŨ Ų{*+77 ZȹI#\Έ(IRc=xaJLCj2u.t\u3Z{o_V l|rY[^բ.VO%iȍ"n\'tƊFMuc.Ewy9q]1?@\~^y4^'ě5e419KBP+obKWTИuRL2F1` wx9%LyxAh<ϡ0wOT0 lf&7"8| SqI;I$op}dNTAẃ.G>"(b>eƎdyw'ȑ[V Ն2ٽS)7+JRn"4^z3`ӗs[ހ:, endstream endobj 907 0 obj [525 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 525 525 0 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 0 525 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 0 525 525 525 525 0 0 0 525 0 525 525 525 0 0 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525] endobj 908 0 obj <> stream xڍx|U,If @8A@.)mlzHOv Bl@eA@y AEA,wSWK&{d;C pamvڜ(K_Y~ 1ixˈL[+[WvrG5?^~ڨ٣xiKb=ck%wC! ( Κ(MX=ՃF)W?&B@%>Wn \k!qDgA5diJ9\֠Wp47[lA347{BȖ8lJZD/c`Wt P ~FqV>dH5Q!>m{ ߺZj֎c%mm? 㢧=YÕE*`H O%5-MW@^U.TANYf>_}~Ӧݫ,hY}d#Gk ]]cExmf5p݉nt;rokx@hkz۾iC[՛Fod1h9VA{Fݎ?PþXixӭLL\Bm;}!MKO/ UPXBY{lO5GVD> rjj*/K?c:NA,r]Y 7x(sX+‰9ٺZ .0XPQ@~ -~q%9PhvbK MmtfuUdis^[, nyrõm&'+EOJYDRLfrEm1O 3.".␋W6D(fz+nQ XB6hrҩpT],fh 8LB|_wwCPFziVr8tS .BRtr IQjD.8R+T@Nqv!G9aKNC #<㪱8#H~hGrx\8'8/ׯ]y'oSFk4)E(+KOؔXUQ0pbfuqF_5ifk2 )|Dޜ&FZ^ n>p%Ank2`왻Juu&;x_n.’kMq 袷9^vdxoc3"%lY]v+Jޓx|EhP C65FŤD8rjٚUV:;a^~񬬜lrUZyHhϴkpAn=@__+6'Ā;/Q,8-3 滷 7)K`!E[rՊ*go=ۜ`@Aol0#TϬ ;)G$i 3+wOm2y?o])܀YY9!%a~ f}-q/Bv9/Tvl4P _]%qY)'"2EM㣉#`"Ȟx\ J~!;dƍ1e v*lu*Pg4F*E/nY`E'E/9bb8O^$H?N ͥBkP^[E)<M.D 4\tCf(:gQ XI/XBmN[6ur](˗h+|ݞy $ޜ;G6+"j~؊0`:Cw pc:n.ig9.~㕫:Ufc acܤ~kx2 <4a%YYPUEhH?!t4L, ŸY4iH4.=z#ds6|vնPR.xAVA dFA~,$ch2?QY[}^=XiǬwNLNS&ATVZ~P*X錮n]ms siݩ / ML NۄDڞImQB򽤼Rr<@G[kx~ {H~a5'd2_BxO6֛i"7kirM@ab~|iK$B}-$v!%BdhL $Fo 4o _ w2SgHV%'C W¯lY<߭p&[9CAե _h0eOlVrF(DGCy 1X[\c$0ڰD7(spmlj+,/U9 ܵU@XemJV$]khXP͢Յ"|2s$~fcFuT0hN ռ*ʅ=vhj->:pMژKFmЕ2oӯW[[;X(6G7f<0{;}0\6&!#z~P]]|U%46AH%!6Xn޺9 ~)6ŐR¤GfdEiW %.˳agMWȋđ@c8ԠBA}g81y 6;בjBB[&SϖRmlQm3͇mT6S : Eg1lKau6Z ?> TUrͺPITJ}z,Z 4%R螕XTP[-f4As?6h`(S A\qauns>votF pA)Dcŕi%k(/͍}f{̀4[^PXq"Na09 D'\YQA={ Yh 7܆МP\*pqMq)"h$]{D*>TcJ?؟/ݰaI$M=ZaCihp3h (td.kE,:🶔 ;iwGNdˡ* WSWUo2IuHc>#1u>eObi(p33޵͊ύN[\Z&BnꞴlwO%٧/] 03''5Lsح~zg=N?ۜ5l@',د=\]o >+1C_ߐW~*4-hӋ4ӾEq$ *Z=x#7a"<"]L3ӎ}] Lh[dd8hnT-47ZG;Y d'4QH22EYp&k\~n,_ K0¸%|?$ QJR$DŽo]EW?QR|Q!$repUkcN0mPsiO@/wA=@y@ gbfq2z(N'4{hCuX.s5o{W;~ɕK뜻15`E\\ʡ?di~<)O߫6R^ZRx&?]; FWJ4qJ;mdyZϠAHլ,D5o†Үc$1iק2K8֚D\.ԟ 7sk>;_vG k]]7S= V_\CB}d*PXʂblVo,kS)^] ~Y$ϋ]B7*:>[Z"N_V1%l"@bz4cZH=$,I[]׀@+:6 L3x \9\T+] "S4ܮ}t}3E D;ĵUYv#t@ Jqd"+N'̉Uuuuut L&OόOcwB$yRClzt&. ) g8c?Al9u#p E`?\R>> KfV;rکGo_]|{lr~ټ])N]> ޓ g͙6hBq,jP@p>"izdn atw֎VE.Rޛ[.I.?+z_@7p[> UٗTu_x%v1@ezTcVSx/mB^)0"q2~?6q#3N7|'W?a5uӜ{k-F|29UF֫Nźl׻J깳ў;#݅5k[R&b?2kUrgs>Pd"k7Ϟ`{qt,1ޑE9?  RE5pڒZmY"y%'r_7H?3o9}8PԇClwl>cW/{(B2,w CGk(DG6t1UJrչB8=[!=DxI}%m[ VX/RNnbDSqFUG31NxOVD.JL!F(7UY}x66ko]NqeVE j!̓=gAp}5%?˵E9>saorN2_d::4Kƅ }ߜ:H "Vu[LX^tvrԸB/)1Y`+\le7SVj6&XiO :nSV߭@A@:2C2+WeTp6kc 韙XY%="5z[#m޵q<8I׷>rdJfX4? CB{5ylOݒ}ٝkfStIS0ɶ9hdq4y*PہJ>;F졊V&+ 2y`dD۾#8i5o:--ܾPȃiyft))iiUq[ Z(Ι]s'R:Ioo*d \6ф%@$1ɰ Rh(MjJdEr_zXFIZz̑nI'hkD2*>FgH:sá⽚j~nR2HJTCAE5p:VHR)> stream x]j0y9n)$,. "lmK] =j2@MBԃo_e=$|3dee^j5AጨpNip4-JA*1QXeƾ55zy̮7O`1H6m|˼Z RwDkqr .ҴsNSCU!SzJ4c[OHm#5GPBR)A-7GۉJOWf+S|o<^Cs{=c{ >ϏW/) s?Xc+?4 endstream endobj 910 0 obj [777.8 277.8 0 0 0 0 777.8 0 0 0 0 0 0 1000 0 500 0 777.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000 0 0 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 277.8] endobj 911 0 obj <> stream xڭRk[U>'IӘ br[dnt0+D;u.,榽Ô.IOIŖlEŀ?Qi\AQ7N5yΏ}#a|n_ЩNq-52Xm3fuŽoQ]>b`:=:XZB6[Wׂa!8 r1r D%!|.$;C>_O7tvw}n', b~c0'ޞ(?u$I^6FsG;3RX 1\.pgQ^d^d#SW/yYNu=6] =^ŭ"q8x&u>[_L /ԔS+@\?`+_ ŢL➭OqHR=N;f+|,X\*z7XmP׭u([Ȳ$yM+Ҹ*tV+ngu.1Eઢ}ktpK/4AW`p 0Aȹ[G]T}0S0 '  BSt:q2VUuY 7):ooOw q+5jڳj+}6̋dɣj:)mk;amf7kgf=>OlYtIfr 7rd,Mg^8IqbI_{)>{פU)ܯp꧋}Md's,v #Sd̒ٷ$8}ȇԒMdRyb[̑OdoINWlZd7.׆3ti.5ޡF")XI{+}Frx`a8Ҥ,9llb endstream endobj 912 0 obj [277.8 0 0 500 500 500 500 500 500 500 500 500 0 0 0 0 0 0 0 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 0 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 0 0 0 0 0 0 0 500 0 444.4 555.6 444.4 0 0 555.6 277.8 0 527.8 0 0 555.6 500 0 0 391.7 394.4 388.9 555.6] endobj 913 0 obj <> stream xڵXyxe: P4) (,ʮl/H҅toYLҤ{.MKK[R6AD ʢ;-|]~>Ͻ4}2Ofyw~sFDKD"%kzl~qjUSWƦߐ]$gD³}XW~:¹ϳ%~|R5y)hbW$bR}dw""w)]Mp2k֌\r]W$_B]=#)'Lꄗ\フAb]D+]>ߢXe@pfŗ$E5B Qj85R2j$<5K@SK$j2FSS4j:2 5I͢fS j9ZE<(OjDDT_@H,L3b/ѾK^uizOcYΞy R<8OO>lvT>|#<.҃FM`]P=<U4DG)Kur^.}!ڇJ`StS 8!SQ8U3L &JBL749sLE|.Fȱ* FS1pˏ6m-BI4iW&zvFNt9_3H<$lbd3p❷?Wf>yg,_[7)w0eW7 0O Mm} ̧E+v(@G?S_,(X\x(αdC94)xS5]u._`4@=Շ޾eZR4P1qҖe-W]բGv1ң[$(Ȑ3}՝ <ߔD$@FCZVJ-t}.X}_n683:۸Z!j'ח%r8D2^V|wܾZpx&OCڰ׮}c}f``h=uS9XԼ*,)9e"]d_N&(y%h% Gơ]W/ܥ~) IcâM/3~+{.)j+jW|Mx `? Io7EcS$nGNtqӁF!l EzF:_,R@$osQS^[ q `Sꤺ]\l`b^ ::l#bԀ.I7+ MbOqrf}< jю ~诣w%h=xZEMձ6jyK,MfyimNH>`'Il%Xpl"Gj|XrELƒN#@B~[Wb+ِKCJ[JCۼx K?(Õcɝ`!gmh@"67d_ v>/cz{ ρQ7p'UmƂ Onr~-CcW9<[vT"Eh\s?qAiZa]~!2\ʑNvσV?aTL#X"m1^~P,3%(|%/#"Pܹ.3̉o5k2(|\z}^=z]djK*˂!A -56C:ZhdV\NnNݍ<d$i vKil'UHB9=fFKO=5Gs)f [B'O)ݨYXr9 >')lTc$o '[ϥc@N@ݳI4 a3A>u: Gk|oER֬2ЉT˃ͦoҬC?& 2xq!1k_N@tXGd%yq׫$jѯ? Q*a-Ń ӑ7zyDykd[l4Q>,0~\*`v rK-Zj9bш>94}| ?|fn͏+ʙy HeUq39TxOUV.]I4h`Z7ku?&}^g4 ,0AknSe: ySԷ+gos5Leӣq~q|ʹyssl%a`2mmlnSmJe'`꾇B:Vr=?#P%d6kmGBaHP 42VepHf^FB>[#WA˦m&y?W@_ UUM A19B ݝUgr @VO,ٞxE8N,ZRtNQl:{4a[ Ir}T@ѷXy5J] ӏ"ZYPYcwϦŒMKشCVe_sx@v ( kٕvw@45c΋7kd( `@S 77IY&}dη,b=5B) п9i"6eq,Ys"V4vC%X %fflh`HͪP C_IvNC>,,5Ytطk5h~y(lo]?SB9ϜLYz L |c@aCou"4r!~[<,odhg2*RyҗzmI(ڒ~ђD 9#̈́NM" bG FfRPÎtp e%m&].BD0]QkLς (Gs%>Ê+,݋P,d}֗UkRje =b,4T[ϗIyʪZ9$[u !v( xV&8&3M>,9E̒ y,/TXY,хBcbپvB8"xdToE;bafNT#ڲg3bh14(7Gk9LY>&DQ?+WDϰ (ep5 `0XNM"]tM܉wIU  !<(‰wU+Hg5t|[PM9Tݞݞnn=|~OKq#0[e1ɰ/E,8^ohCZŒʤʰ]1;+jluu69K ΠVsq޸w97'UZ_ٜ㡪w}O.BGףrՊїHb0{M?Ϲ;Z> .r1{**P) >!5\s^bU3\K?yG;iEն$ ҙTMyg{ {7lTKTQ+ 8T&f8m6;op=\x-2[daゔnܭ3WСb!eKx5Lw!.{/$|DC W؎ҙUBV)L-]!tНbD_KJ~.nzD%m!c妡h/j@KN5mdmF"3aJJ 'J諷ba0; kvR$̐Z20)o* XYGY١nWI5Lpr/(D `N2βl|N^ϖo+-B&EJfZW@KrubIx}ycwg>ex - rH3չ<x$/%nC3EȅI+^47V9Eɓ6Ʋ7!iW5JuM/RӢ4)J`|Uu ^ QZaKel\" lkW*ff:K^U, PyBƶ'Zo}f h_KUXT-V(gpy5Y>ra ?) endstream endobj 914 0 obj [638.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 383.3 319.4 0 575 575 575 575 575 575 575 575 575 575 0 0 0 0 0 0 0 869.4 818.1 830.6 881.9 755.6 0 904.2 0 436.1 0 0 691.7 1091.7 900 863.9 786.1 0 862.5 638.9 800 884.7 869.4 1188.9 0 0 0 0 0 0 0 0 0 559 638.9 511.1 638.9 527.1 351.4 575 638.9 319.4 0 606.9 319.4 958.3 638.9 575 638.9 0 473.6 453.6 447.2 638.9 606.9 830.6 606.9 606.9] endobj 915 0 obj <> stream xڕXy\TW-j*Ӎ *[+$Fqل컈]쫠 75q\&N2*I4h]<; 1gޛ?SU_U}#a Dbl O\'-^a:NkHhCMO.# pF0>!gPs"}0e %.*fL88$6,?bis̞l1nŢa[,VxEnlX%7"b\N=|Jp|ξaQ>K",VzmzJ!a+}|Â3 O'Cg#/.(e 3Ƙ22f83#cΌb2Kf5#5U-'=d(! n`Mu矐sW7$w<===&DNҎ1xdBR$fܣŸgrJ֔'L: ?C܀sNt_˫#ߣ3s` q9ivhw;ǀ/Py" i|gK.ڭTZ ]"YJ /(Xmp1,ZRRaT|Ĕ8b-NF7WCv1diW5I|p;*`x%좎Es"Ķ:E^c1%Qr|~/e7}΂K;Y^UwDiͩ[&#ǥxTTnj7p<'?*E ظqPptpnUp큵^!Ӟ|<:|چd|m?(D Mf F;0Q#= GZ+37l!b6m<%R)^6 "FKݷ8,nűWWVDƆv."1d43deanG-Kï`?GM2X!덤E\] )xG܄};-t `U_GY8LrE>#>/Oi̝Q\U&'F4vaa6?PkM"ɻ@&;b! y ҏe W7p}h’[&1ߑ\ܵo9(A0(fND0w<9dݳ?pEhƕ{q-l<ȑ|Cҵhؑ(Ͷl|jk( u>-h~jgHVx/Xn/-H?R\}AP_h#p7Kp&c'|HFO qMzٍ8bO[ϞWb}8&==qY瀁3Oq i{b'xeܤEkj&*@fX&@&U?VyU7wM+&*P# p~Wdw2R/q}7*YW;,r'N؎륥 @a/Z. É% z $WVTvdLCn< T=2[q}Ė/E4=F8=8E$:nzJ++].u 3\/䟤?,('jZaڈ{ GZn}4Y܀B&"O6*zݤnbc:\sa ɮgXIFOEAS,P$di26tI\M(s|-d)΂jb20W䯩O=Rף2A8vc,g)6Bh6pEPWXLY=[+ |"BSa̪xɳ+:|hXzHg;G~W o<L%d لTW K>ܱJE V6wIJ-O)臥5qM@ه]82z+H=D=Wӟkۿ>Ќ'{ĪDs_}A ju2\Ņ,4s#R|&VDy9QаX47 5K!goF.։LgVK--A1 e#!8fo:%2=*;Sʊ_ҨV([,k4+ӵp*At/>}PާQjPNl鑶5"5iyFS#DA& 0x^^Cr_oo|ÕSūU |Iiӽ;D9-[N&]<:Hn@0CE7<)KE^'OFa'+ʼn`O&)Lz^$am$h@c-bqv5IQF^JcU;ajT)$]OmU'ymmg1^iw_>.)Zy*䮩m/=*pPW  \zT%v0[ݱ,wAOe7Evn߃pNaL0#&p9&U/] HSĽw Í}>.Ś_%9 !3mXora"J4Rm'!j ۩cPH1#яz>{~d]UUz3]ַϤ !ՙTD,Jt@eE$(Vjh(%gb6ã!@m]Y̪wk"Γ%Jd<7 ~)E}BKy+줩 a[N/:PWw3q,y`C{)|O󌑬3's]7-MR0}L)c£,BI$=p12An6'{sb 8{)9)fI#{:WPEA&ZMpdB.6<ԪԄPM1g>^%Bo A_hz;x6~#˳vhRcąunhrJw;̾hXem I:뽖>b8ꦚV!Bs`y2:I5A|yP@m ?ӭ߷1s%FF=pz˒}1UjʎM΁1j4?8lmҴnn.Z2Rϙ}bqW vmG>/,[%τLV'&@ S}կ} aB6pubZ؁%O:ܗJtgv!|P|G Uˮ !p|2mFJ԰q -*[D\;Vww]'aSS}|}8q] F!k~ ,j< -/coVwĨE#X糎 ;:.\"E}K}HhKT Ʀ}",Jw^/Z 'Kط.`Yd-#p?D]hgz dd0B\{}UwYԶ:gi+{'^{eixџk.Kd ͋t#A;ro(ck*rJS]ѠY>d8 dEW2 BCi#DYʜd/."݈Yo]*Qδl?Y'>ˣ; -r;p9t_ N2,YUٟ?\u kzPWoKAOO k& 8js2|`7#9$8DF DI#e ;`-=CdctkKl~C/cIYٝkUhLV λ.Ժlp!E'[guwe p~-h \פl_+4POLhzJ-!q)wvrn]ʭX- 1zsW[jQ*|#$2-PjڎP \-NR@[tAvy5t ]4`-D^~+TȱbkX 7N:ce7y,:>d"~N^OrYL5܀iePbhged_K0U:,]5dU$:͈ N ҭi+,.5.+ż$޿UO^`9GCܴ}RS2EKr͈jv//<[fQM!]55E*o6m@".yf/I[qoTR.^0PM(,Zz*ujm޷"(PIKUZl[3diIJ\g);:.69qIMf9U>(6&3KAL%f80qVk.j׵5Kh n: \d"b{.zYNۭVSy1"7:.$fTAw82 8(U .8˙$拫rѽ,/_J6g Ӝml҃ƃ g endstream endobj 916 0 obj <> stream x]n0E|,SUϐDBHEڪ "cc,_qguYaKOA tAzab˺o>v٩S݈o=S[˹.+heskOem*΋( > 9ƒ/(> stream xڭY teNU T+"""0l-( %m}ϛ}ބNKi[ˢ* w{]9~i;89=MO߻>_جYl6;uk\M/^|4rQ>@?΢g'&$~t"ņ2 -|>_Y_?|}DcMdRXŅ*;8/=5 bn⼈˖-Y¢E"Vf&'gEl/HKΌ/dDDg''G}- g … R_ B^59?9(9)7Y3#}_8cUvfNaAr^Ħ,SY3YsrqVVqֳ6M‰a,55zz5ƚΚŚz5 k>k!y" Y/^f-eZZZ k-kk=kkk3+ʊfmcmg`ŰvbYXY/N`qf'M ldqO~NrrMD,[vg~ƺ_yг[h-!=5^׹U[Þ=`,.ЊDGV+*j:#!>SRNc! vU:+-ǡ5r}V)d=xz$6df`-lznD2TRgoN$|IL -:%nq^0maQyУ-at$ܵ7%ZE )(w`p[J;#|WklD !>HyNLصV-=?:ۙ Ƅ2(HujM]L䫔W=Ljߕ?늛T@Qz ͧ`P]XO0K$ ڂMB+ @I0V3dRPЊ]X| sPTT݆ˀfѓŕL`!:3iK,f>mul-@حV;7>ΡX ) nPFP84CqzX̨IHFڪcѤYhZ@/DcZ|tMsTCnny ֊@B1=Lr05ܣrH1x5PN!w5]ĭv`-xP4lO0F*xnܓ( =k0M HKPZج3/Ek`%JL WI  $6 ߳I6žl% 큶wUgЅs$h# \d1" =Fw{/{F/gsrT~JkhǕk@vfn`3nA؝1`Įe{Gx<ĝX5FYרZ% Vc#̔,JRB-czJ[(O*JLRSEcr]&kpey tY >Wyǿ7P, &8ٻAh~tW+;VCdˬRY)On)lM({$g) /-7'>?>f0 7H/ZIX_P(x4Ud8:$!i:Ȇ$ؚLreq,7び~g{~W"&n͠a9ʹ1oXm1\ӕuAQ),i,^{46{w(Got|1%|Lpl3uάWj:&Ϋ!R"]%T_+(f:"ղFm^q4h,ћhm eÕIcJ5C\6 #,@/pŽ`!z,!^.Sǀih~E j`8̍dnȾs63rbdd51lF4߮]R30YوD1u+@Ki@ zNf3mR x͢l=Z|M? |ϾDAVfUcta#>7?5@ z5Baxs;W'nI돸:6 ^Q Wٵuu@fA6ٱP[;{dCg $ wFeL/&E8T&sCG-fk;(^H)^S$Z-*\r02:ۂކi\Ī\MAA7jI$UZ÷4h-:vTJ ֕26:[gC=@8׻89{_cVu? V3dx6`kWp}Wp#Oş "}Q'EcT!KY./.ߔ8(يáy .+xV>x}BB\B,ld{XF=3sگTH r4s-U g=hތq{{soMc{N9l5-=(/f=ˏ gO^$:Y@b]Z-֎8zjj64`e>Tpo~c.uaГGmsI 1]-ݽ]8 A`D`DA& Ftv$)?U?ci6ʩ)z =#dV "NB\HAmP1F7HJSi4845 /ٖ"}ɣ|$k+5!Š )lYFsO'4Q>ps`vZP%NWQ +%=: ÂsZw: vi[zYIt L}c+ :K0LڡCxT-jbѾ)?V _F>Xmb~aIw ~Mԩ*H,X0in* = D(<i20[,-h-i,x+Q7VzG1kՁb1M&wdhO0Ҡ\W)x؉DžlԉS'OcZJR2zȶhXHZ$YRy+{s9uGnnnY BfiYAU52R#g)BZn4U &‰ͺTf OaJ 6<7usIgل '5#}!1˃?y֍~*i|SYW$ 5jM"TAS5"zcx'x]]E@uw7NPA)D~D.4SJGETNjT_MA @nE}J jLa0s^XsI'#N#oE%ش|Q Pp<&W8 x 4{hһ(:3u¥"0sU|YprfkX=FQo+ XrhGh"gy,Lt ]ఫqu`mn߽U@A|35k,/nN u_Ƅ(6^K?ȋ@nOG|},k#0ÛC*l*ᄪ+{AWA N5~p~@"~>V%}ׅK9?x%~U+uDTOm@c՜pX@zڡ?z{ i9Hļrz+\1rp,9̚G_hÃtCK9$ SKO}cHgoqP =w[/kVp˯Z+.;<:>C8S+5P}}mG_r1Ӌ !y,ۤHҥ1E^{}E]ЋR`Ǽӡ~ Sr.N}yWD)NOܓ Ťuz}PE)kr3$I]ŷk>FlzZ$qɠ@"-iiLb2Ord-w'%.r^fJyvXmA}GO?{%*Z_ 2fр>gWi 郲*Zъq4v4[k[] 7-`>f$Q-)Whm v*'gk κSh" 7w --#3x2gahƙ#ߜN[),>J%15q\Vuw7kwSKgiȄGA <m^YjQRt Iu+w|+9wZW/tJryڦf2ĎS:mT7BL9JvCmcY}UGy#U xEӪ%kDБQ0`j.Hxx/sh; 𾎺dM3L zkh }QDfm۹wص#MG~=3sJd$XmZlijmn47m`wS`w4X+;>!h*) Re{y,z P~;?;e(n;)(1dxG4JѤ2o7Rٲ܎?vԘ,㌺FBaiklid' +2]^3;#X6A$Mj]@<@jP~*f5-hKhoϠw|4;WvBl'N^ dn:@ .bT'u7FRx:U(7pp=39r=x ƽ@jq`+Cg8W]hl dy(ҕ&1/_W˞ULQ$<-2xw[ȁjv4X-yfɆң)NA)egebpm48?0i 4~=6 xAWHr䮄)hokާGyFϠ8uYy$Hj."2ˏ0z^xE {E糆k dȂH?^㩳Exg,ݱpjণˍ23!r ݙސߚݯV(k9Qғ3ޖ[.D B`VIBa m bŽ(p<vˠf:Ǡ‰Lo~[-E%* ?bo R ̣X2{h)Hıv)S FmW#"%-NW=T Evi^^CQhjzL7'c?k9/&a .񞤠l8l+?oCPW1ga5\qfh,[/ݒnI0lF$|bO,IӛV_~S?$d7COOuVbdԿ?19 ~9>Kt74xcp_3[Z1-jUʸJIyAoZVmÖ(b1Y޶{%fkB(5wJaOG2!cz8vwzA2dV!hb5:&B?ʃ͕~.rqBN6d2Y endstream endobj 919 0 obj <> stream x]n0 > stream xڥXytնO(h|D*KDQ+BQl2SҦ$m3'yn6I4 eP 绸x8}V\VWNӴ9o=fVmkO'^`'Kw`ϝ1Q'9GFoKY,vC뒉CIde=E)ɬX6;fćx=]ylA0SBRY=;44/Es_XR*.&̚IX8  2V=Z)$?&+ 3 KͫYT1z#iXX8 > qL|xbpIS'O|9 >$D _G/seHE }?yx::̲aYφ>NDmiLZ è[rAT!|JN]4Ώ(0PF]W0Z͂eR/s< 䢾 4݅Xvo?" 9(?z6~ %eě}9с%@Iu^YjVl2y:v0 +(kN>s }a xn9J+uP Uzѹxpa qcaXT:C/9nj`hwɵҌk*^.^2w-PWipB" Twa2Mt{}&qEÀ'PO_HD _dKR_k7|RO6lhm!PmʵotB5P/f$Ӱ>. D*I_F)Bl V}MA (z$nDY,ZPкuBJ$k-j11|iB& ~Q4P.7BXW﯅mT(;_&UoJS+N;| {D~],^hT3)h4šĿZ\[x&Qhӡ ցؽP%Ntk^#z\܍τ1 4Aǹ O]m;=RGoajSLJ+O|NB%z&g}"OD44 w: @` L:#cV4 jΈ^Ul# WuScW y8d2zY#. .7y>6F?p-~P^SgDOܻcdh2;<}u>{ZCwnhiixΒ9+cj%)ہ*evH)ۻC358,-T+TkL߆yLFn'iB ܏~gώrPSt,)3jԞL'7ì`E Iq xzD4-/, nfGCz*fOȜ!4)QC.=]c$/q("'4 F!&:\Ë)O0RVw e`(Mo[hY<@zm×vR{˹ɦnP-fy]ߨ;{(l'8(7\Z\\QQ\Zx%8(T7Wwt324\P *Jm> 6e]>( .jn.ʥtI-@ɵ*-@f׺ѡj~kp O(dZ^mF7;1qzҥaGA֩%M4A 84kvutg1lD&Cadm4xčOI_Gu6@cPPCkbJ̅8:npx."As{.;*.IdJ_+~ :F9ds~^W^\5HW :?P! )!h1XGm<(v D$G}p|=lWF렫tA <[ 44 Va7W+]$=u{u WXr(ro>.?A$Np(w8T2pj`RS5ZR241|*+Fmf/Fz!>4an܆HYEsoϰk1niA#WUeLqZݰ }Z7nK} ^skN䈼h4+?XXfWju=i=2JlZ*hh<ЇC?u1e0'wAn/yrN"}R5{ #ש:~N=M{;s2AG=ɜbi&H}hķ [7m>} |osC_)a<:C)@V?P7Eu9c_"lyC"Ծ=i VkSR8ItUߑ\Rr`%#n$~qhG4-W턝1@wo_e3#/^ k+!*.&6^=`;jweYQkOeBE# ܥbK#מe>*z6? *I|%m}{7Κ^ӃY|d\!%/=Sx vL"]'!"~wj[u|%Zy dVx:a\}yCKtK.׺+`VKKUP1Lsi| _Z,jZ-ӥ`P54JVy!TzԶ^ST^#XA%bsz) IZ : aE;HK\IR2]NT}kj¶JeN*ԥҷJ^]M$6\f73Khil@{a 2(kx-/: ]PHQ%kCY8 jmdo#Nl*RjV l>s=|En,/z=DpDOWwGH% gtZe YCW"rJI͇ vb-}5.rCr3',X oè|gZ:`: 762Ө80j7DPbk-Sc$M 3Mt<(3]Ǎ^kg70>hE7A0 endstream endobj 922 0 obj [571 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 513.9 0 0 0 0 0 0 0 0 0 285.5 0 285.5 0 513.9 513.9 513.9 0 0 0 0 0 0 0 285.5 0 0 0 0 0 0 770.7 727.9 742.3 0 0 670.8 806.5 0 371 0 0 0 0 0 799.4 0 0 756.5 571 742.3 770.7 0 0 0 0 0 285.5 513.9 285.5 0 285.5 0 513.9 571 456.8 571 457.2 314 513.9 571 285.5 0 0 285.5 856.5 571 513.9 571 542.4 402 405.4 399.7 571 542.4 742.3 0 542.4] endobj 923 0 obj <> stream xڝW \Ǒy_1[u!PKE4R5wCMda3;:l,&Z4ˬ,+hx%u <999fpF"X{w_tt5,_Ir~Lfg$DT7Yx'1󿞰2%N8wxUp`~TNNgqtt_ _U/J~x)ȅ?;7,zV*y `uh.#[Le9\""c*5;U'F3,qBf咕Zft0oƗS3hf 3eDf382syb&qfҙWUfqeV0+7f չYl`62uƝ`f c$pHd$FӰÚ}.)9c)+w:.6-oF#89rQGݶ>2yt~협c'0yDfʌFy 9/_嵠7d(K a:j J5Vzz[O2+5#'~ΒN2PLޝ\XΑ$gq 2gBQ]AqmR(-.4 pFL`ekۼt:E} ԟd+ܨ n<.Y .ȿEu|T^nH)盢MaaѪ溺f/4hke7b~CF߼\Cg-8{qˉ=>\l?c%8J{n)8WJNT}yvo+37Kuli 88vYxjPΛFbͪA wx=w ЦR*e9_BgMhY egiK:8Y3~-w2>BKXb)f| p»``<31}qkwVaMsE{" ;8pm3 0y*aрԜ(ݏ)>8o S;؃`mfѵJ:A*\gj߰NHB}erS4@G[ fBc1y;,'s )6Bs0> 5Rfhd8Z R 7a'^-#1VDXЫdwy-CS}1S㔵KFMp ijL8IO-npĝ\ Z,roN}y˓LԀ  'hEEvB27ŸYQB n}zANnYy a T,#)R* Zv*vV Ρ^U7ѣQ*~7#o*ys0=9 A1B u7šF! yL0m Qf3c8iCכ%njq_b?t 퍇DW .a+̬V[vA֓-쭜a5Kl Hq"c`( 6 ̃u)&?ƒ YC >>*5WR)TJYg9>4*vf@L&o`<~ͣy瑵\x%CqEk }}hImC.# PɥoG"h#Q8;cHWɷc?Kh½[45USzߒ,+;6¹=KnO穴) -8DZhNP/*8JḮC9Ԑsy>qh6UCې[vޛq(ժZ>XJ,PѿnW6`l#'?LGNػsٿsaHϋsh UW .%<^ɯ鿗ɏ,'U;.4 |'G/fiiCN8 qğ"w5>)8?c$[פ~3K zN:S 5/zwge'[8$>eNh{knPN]_oل!2׹ Jm)U`:>5yvd<`>½L4D5-Tv~eCaeƑD2#)8B肾yOXOrI*--]Z!wK{lo:?uhȓl(ķ274/kGD3Bcbj,-{Nq-]_)F!2K&JjD7TI~i!ʟ#XIӴsĒΞW.U/*}Uh9[W,>,n%4')s8 kNs8Ny> stream x]0;_1G7 5!$P4ᠻY4,)x{tj~Q48C+ipF \֫ {1?g-V!?aS|ڳ$v>s^WcqU7BM8BW|O#3oJsT3DAt̗$FnV0Ȣ(lT7-NƆ64JJ[7l]<"je(ޑKon2r {S:vқ]vUoP_wcl#ܥS7z{ӣ] endstream endobj 925 0 obj [658.7 0 0 455.9 0 0 0 0 0 0 599.5 0 0 0 588.2 0 0 0 0 611.7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 285.5 285.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 544.5 0 0 0 0 0 0 592.2 0 0 0 306.7 0 0 0 0 0 463.7 0 371.1 0 0 0 0 0 478] endobj 926 0 obj <> stream x]TipS}2IbR?)@`aK@X0 eK Y,[ ?ퟵZzEec f!Pֺ%,IR C;t2Wc^Lss>%H|䭒nڴ~k9?LʊdvNNv./\ ) rs|Wb>.9Bi=?(d*B+QH{$u:բ⥥:F^#ӊT_Yr"T#Ԋ7I2R qR. ^iu,tEe}JSpX'K륚FimUVY'HMRA+Ո7Za<2%NJd6 .sGܰ)n@րBp{~swrMP P-&0a=x;eVM1~?n%$z)f' ߴQ=V 5i؜\R]i<>{Tq B2p MG`"1dkW]]V`( > `k_įͱ5ٚ)?EBx0%8Id {PSV{Qȕ8WLXrs0¶Q4oejI9vV_0=^5!$F{q<}SPwĻu`h,Ə.^4S( "xhA6Ph5i@:Osn !dr/?GS7*UBx b'3 @q'IX7pBG7C&: BVséoyRރ=HdCX|T)jMarj zTQWUn<7"3hr'~u>0`..ߢ0+VSN(O=:-Me)vDO~@or<+،a bV0 nc/i`aOj:t8Nj9I$T`%o\+",1 # ;b8Xmϐ臇l`ݨFJ3fk@R֬7_ܝB h2}}ܰ% azDG@}M"hdvMmp+B[A:Px#'o i1)NS5J <;O=V0OU&lZ+.`tqF5)E&Te3*JwcxqQcFoH xvdөhs?.pIWW!Xmo}Uz˰O@cK1Mlm;*ʆݛB6: ^ xꐟ{*֔R5)/'W̾gYms;JZԠ]@C`RRe*$dzjDޔPּiSN3 y endstream endobj 927 0 obj [603.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 419.8 419.8 0 0 0 367.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 734.6 0 696.3 0 0 0 395.7 0 0 0 0 0 787 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 524.7 472.2 472.2 524.7 472.2 314.8 472.2 524.7 314.8 0 0 262.3 839.5 577.2 524.7 524.7 0 432.9 419.8 341.1 550.9 0 0 473.8] endobj 928 0 obj <> stream xWyT[יlcҦQ,=''Y/km,X,#mhЂ!`0NlxV{fg{qΜ1sfmtrs}wyTHlܞi۾q[7*e!eӚ-1|ni鶐 x#d^p},ãTG)L11/D<wTy\RLu6>|L̆Ie܈xq$]*.$r"fF<󊤰Kr/-]KP.^B={6Q[JL%r.ZDQ+U*zHvmPۨxjyc'C%RI^l h$%BrF<R( O=z9SNo@%*00e`6J[Ke]Y[h,E h=9àL+/bZhb9jA 4?n >!XMVCٺ.HŭE'XN[MN5o GK:D[QF5T 9PnUST a¦eE<3Wնj;yUz8"\ 3}x0qAϸ81:ЁQ 7bh v~3|g7`!Ӡ=]BHMo@=TX"L&3* vi 8hTPv&}.PJ_`ҙ`U`cȎj{Lf-'2*-ieI0^'p$ƌYr~1l0tYn#TXmhs&W eW[hÙ>F׽O甂VXL< BI[/nZM˦ĩ+ fГit@Xn`N[O ]A(k f9.l` ]ExhͯO\EE<$N\U/#rt IU233?ym;hG(d {,K~8hWм[|N-r-`*QAVn?@rH6JU=sɆ;ϛ?N:xsh^`;gϏ=Yc F57g8C &Q->s_ =l24_{0reaA΍Ezi7-ʔNԗip4Əm īlFLT0j˷'j-ߍXPf%yo!la{[)_]Az'/66 ]'6}+Q?R뚫Aƺ3}DmQWsH Ckw`/b:_REx7m Us0nם(OvkEk z-#tj,*h$LQ8 3xuĵ)h*UggeTJ *7h_TZ.Q~ ܽAdͦI1>4; ĂFzʙ;"C9ijf~Gwi N7w[{z.=X®xHEIO|9i0oiGömDkU՝,ןt6F|D_O$BLAǯOч|[\PP,kӻmLL;[ /msuC3ffϑg3pAtD<@'WDJQ-@0X~4C.Fqhngg1hmnoͺ,.ɗ}.æ͵駂 AlVR9 fiUik:wf8.I^>ڵ @x|dL^!"Q,--irX('âomq/ tuw$?B^jTߝ#[6`?8HNּ!A_[-q>ׄMe4^J|Uc(=`v %)0еKNVw| ,89lqЛ|xo=;G[:C2TY.#` ?/Zoow+~蓫~4) y%ȩb;r4} r0-O%I&p|e^-j+`c[KЯ'܃N -Qgd_T]U50r-Ic\ V/CQI}-qat`)ioH Sxzyn\=}tn˘r|d,ԧw8!zn1Х; Gj8M7yntCE4w8r 2D,9K#2e霓: ,2(p9"S&_ܫ_"sHF9M$b< П[ 7PN9DzMueL6hsLHwΓ~4v6 ZvUJu%#cB-?Ì@spcJ%at셏U@7=&C/VȡkmK&&u\&?+nze"^ZYܭwϽ9tOcnVP#D ^&Rlf9pwZ;k2y֑Mtz fw*o]b&RfYe|6VŹPaUŮEkBCE!- 9c H[N endstream endobj 929 0 obj [413.2 413.2 0 0 0 0 0 0 531.3 531.3 531.3 531.3 531.3 531.3 0 0 0 531.3 0 0 0 0 0 0 0 0 0 767.4 0 0 0 0 0 382.6 0 0 0 0 0 0 0 0 781.6 590.3 0 0 0 0 0 0 0 0 0 0 0 0 0 531.3 0 0 0 472.2 0 0 590.3 0 0 0 0 885.4 590.3 0 590.3 0 414.1 419.1 413.2] endobj 930 0 obj <> stream xڕyPwǻn G&ݣ(AY/"b2r||@d_?DEJldR BHP? ФXJ-R%O7.--mlDI)FbU1ŊT:ypR%_<%%&oP)R )Rb#i?*K-#(C%TERn'EySR25j C&RfQ_ET(ZJwhʙ ZFSYIssKtqlk$7`''֊gOMb(!l,!Q >F{l-'_i` &2ȓHw {$a3h} J[]/ꌆlrTE9y}d,}"<3ll6j(H{Vr;7;%B^ӬθOW3r /+#)zi$,mS[g^I? mpȣKndtb!,IV܃\,:^.l,+^3`kCSgAolp-be<)3Y18Y>/dZ_.&Nz}1us?y蠏>A} 5fGٶ3w,qx@ aU4x%hj}[dޜ5ċ6@&Ha^Zs\4JmftK5\F d-}G\#wb1G=5U]䤍?.@)<|5kXup1MEӣj44o`i>~պ.iaNYoL6c+l^h*QK_H Y9r`62ȥp`4N'eͅ\%*b~q af..$yQۓGlG٭rMw%(NJr隁EϮoJ l$ʴ){ڥbkJu6̈́,5OZ5h˸ K߂P5}{tn8(Ҥ鉑 ]_i5o Mʒ4unk~Ƞ/?"nJxO}nC7 ZHA&#FF,Ra5%BA}Zsb] t!H"-t>Y2p,TM"p U~A\kvEϐ)HupЧ~?,"+L v`S抙?{xM8 $D I _~Ug1۬ӓ#hoc#Vb'{lH-a[ ۀ;Eabst#^ku!j4&W\¨ Iox1n_ z*S Gt7xg J^vAf/(\^͊ue𒨓^fB`KzQxHg>i:u"دo6l e6dϏِKasYLCq%L[Pk)nr`@F衢wDG7Чó&敾s'p&Tm,ز^pAz0 Y1VWDlP0@==R)J¬Xcz#N@G7#o}e}:O3Е[r m7 I|)wweVgǔ:Z;r]%??7B]kY^A7ؚjA>'N ElDENpp>Vl᭼ KhR.~ջ8y9$1tC7柗1]V~!ChAdH@/>*X)j26GdT*HlMlOʶVu+!-4vabD؈'d_+ &Bx:5=)ǜ/0KUZ1-PW DyZ8\ɍçO>닰/b*{?IO˘Bs |F] ɬ w S~lgъ%=B-HX]e#F%]-2" /̡]"_EI_~,ҭXΞa^s7LeU4jۄ&L>Kh[}hE/z9GPQ^]QV;޾{V'R27zŽ)2k #jpLrg4y&x=`sHYJyyIi5K9=ja׽>kGsJ6r{ʲcVTb\{T+\xhS^$}*9^c*s $>ߘE$>tB_SjBa G9( 5kd% qVzn'_p'2 Q]KJ1BJ"[Wݽ̽/<O_F endstream endobj 931 0 obj [611.1 611.1 611.1 611.1 611.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 675.9 0 0 0 0 0 0 0 0 0 0 488 481.5] endobj 932 0 obj <> stream xu{LSw^Pw  9Q|. ƸMihy(][ȣuОp""Dpf2V_ $%.l|sr='T(gf7~N ։VҸ\ꝫ !a9%-*]A>Yd DHMX˾zx*Am0V ,|L~,&%%i%Ru|M)X9bYWdSWZ9`*\[lYg*iR EP2g:S)B!3P8Z%H26B%BRT7a\ruBC$,xJ1 Cēҍ{W6*/S Ηߟz| |Nwl+ C&D1UV\>qSB\Ffe

,D+?46$$ǻ/Q8"#دx3ͽ;7Wx! !ZVʗL6rZu…k 2J`,0L >j̏Oi!VHTJsp@p:l:ULv~.%yn.2X~W_ZMbΪ$ P5sry޲.歭onQw9w >kJwոt-]yeAdwpy 8G2gB^lt=q37n^?ۙjxŅw cEh߼f> stream x]PMk0 W1F>v2XQ;:(!~zA=')}kM쓜7VNn&`,+JFJYҳ>H.Gmu<t>5 hoʵnbpuhN"A6Z$D6@Ϊ*+n')qR!I; y^ozՏ$ƷY2qW4;5]$Gqxw>Ry|m& endstream endobj 934 0 obj [441] endobj 935 0 obj <> stream xcd`aa`ddq v 4 ."új2 ?d1g!"Ћ?,WAD@J(37X9(3=DA#YS\GR17(391O7$#57QOL-Tа())///K-/JQ(,PJ-N-*KMQp+QKMU@L:)槤h$Y~tٸG|W2#UgʼY%u7*^QGnJw9_[y:4y?ns endstream endobj 936 0 obj <> stream x]Pj0+渥5ҥ tc25 1({!Û77VAe5oA/8rHBAH.T>2C'R~Ź}{Urh@>5pU!@N.px']@+kAL<%[$NqL H8!m]IiBSgSq endstream endobj 937 0 obj [826.4 0 0 0 0 0 0 0 0 0 0 0 0 0 531.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 288.2] endobj 938 0 obj <> stream xkAgnL~ \Ć&"I ƀAth7RDQ!c T 5 {Q0BJeKkރpxpl~偸m7<z!q(/1`X@<##L 3J.XU/$U55y> stream x]Pj0 +tI =@I ][ m琿_v@OIzUsh ?ɩjͤ:eyڨV)QzƫrD:\;#ke 86w _S6{:|i$c\6!/hd,Ӹ~r'/2e%.Z*^HbbE-wE*{S3moAr7y*f,m endstream endobj 940 0 obj [365.7] endobj 941 0 obj <> stream xcd`aa`dd sv 4 ضa5 YrL?=b$UD~@:`b`edd㭪+(M500300r/,L(QHT04Q020TpM-LNSM,HM,rr3SK*4l2JJ s4u3K2RSRSJsS>%E )Ey@1v&FF|?7-Q> stream xmL[e掠p@Xɐ YX`\7kh^k[ -m9p6hN"[˦qQ13.%SˮQ/|%$N$!$I>kOEy;<^FMI))#S_L$R k|FFBA.Ϙb44MA}@ݦ3[:Fɭ<[TTljͬToha68hbj&`rgٱuk[[[V`.ݒϴ8#SXm`v[82ԙ-ke"]H'T0TH? v)Iȉ)2,#)Z-u':A.~?)bFIc^ >ݼ(tr@bHbV7oƋIɐ t~OtЋ겊B^@uopvk_x<\•F"J.7~I j1Tf$9i ~h:xa c$TLى4̸աt̾D|>zTR'>^.Ư+e],/ϘwlGZLSs3'ߥTBBcjȫV&ԣA'%|nQXu@t  %Ca]"#_jzp sQ>hs5@h!!f ^@Ǥ9 cs#S?ihpFP|̅kc7ig;I'^6pC mERuig 8.:/<&d$KSGl=d&#N褵y= vR&XzD&OvGwUk5cSſ?Y!/#J@vW$I$?·tql)CT*M^8|2mP>MzbXķG endstream endobj 4 0 obj <> endobj 944 0 obj <> endobj 5 0 obj <> endobj 945 0 obj <> endobj 6 0 obj <> endobj 946 0 obj <> endobj 7 0 obj <> endobj 947 0 obj <> endobj 8 0 obj <> endobj 948 0 obj <> endobj 13 0 obj <> endobj 949 0 obj <> endobj 17 0 obj <> endobj 950 0 obj <> endobj 18 0 obj <> endobj 951 0 obj <> endobj 84 0 obj <> endobj 952 0 obj <> endobj 89 0 obj <> endobj 953 0 obj <> endobj 94 0 obj <> endobj 954 0 obj <> endobj 95 0 obj <> endobj 955 0 obj <> endobj 96 0 obj <> endobj 956 0 obj <> endobj 108 0 obj <> endobj 957 0 obj <> endobj 112 0 obj <> endobj 958 0 obj <> endobj 113 0 obj <> endobj 959 0 obj <> endobj 134 0 obj <> endobj 960 0 obj <> endobj 139 0 obj <> endobj 961 0 obj <> endobj 150 0 obj <> endobj 962 0 obj <> endobj xref 0 963 0000000000 65535 f 0000224188 00000 n 0000224091 00000 n 0000213195 00000 n 0000299458 00000 n 0000299775 00000 n 0000300092 00000 n 0000300400 00000 n 0000300726 00000 n 0000000015 00000 n 0000000160 00000 n 0000000707 00000 n 0000213289 00000 n 0000301035 00000 n 0000000822 00000 n 0000001742 00000 n 0000213675 00000 n 0000301365 00000 n 0000301682 00000 n 0000001840 00000 n 0000001967 00000 n 0000002102 00000 n 0000002238 00000 n 0000002365 00000 n 0000002501 00000 n 0000002636 00000 n 0000002772 00000 n 0000002899 00000 n 0000003026 00000 n 0000003162 00000 n 0000003298 00000 n 0000003433 00000 n 0000003569 00000 n 0000003705 00000 n 0000003841 00000 n 0000003977 00000 n 0000004109 00000 n 0000004245 00000 n 0000004372 00000 n 0000004507 00000 n 0000004643 00000 n 0000004778 00000 n 0000004904 00000 n 0000005030 00000 n 0000005161 00000 n 0000005293 00000 n 0000005425 00000 n 0000005555 00000 n 0000005687 00000 n 0000005819 00000 n 0000005950 00000 n 0000006082 00000 n 0000006215 00000 n 0000006348 00000 n 0000006480 00000 n 0000006613 00000 n 0000006746 00000 n 0000006879 00000 n 0000007011 00000 n 0000007142 00000 n 0000007273 00000 n 0000008889 00000 n 0000213915 00000 n 0000008998 00000 n 0000009130 00000 n 0000009263 00000 n 0000009396 00000 n 0000009529 00000 n 0000009662 00000 n 0000009795 00000 n 0000009928 00000 n 0000010061 00000 n 0000010194 00000 n 0000010327 00000 n 0000010459 00000 n 0000010591 00000 n 0000010722 00000 n 0000010855 00000 n 0000010988 00000 n 0000011115 00000 n 0000011241 00000 n 0000011370 00000 n 0000012023 00000 n 0000214064 00000 n 0000302000 00000 n 0000012123 00000 n 0000012254 00000 n 0000012385 00000 n 0000012517 00000 n 0000302336 00000 n 0000012648 00000 n 0000012779 00000 n 0000015550 00000 n 0000214325 00000 n 0000302672 00000 n 0000302980 00000 n 0000303314 00000 n 0000015689 00000 n 0000017754 00000 n 0000214432 00000 n 0000017896 00000 n 0000018028 00000 n 0000019910 00000 n 0000214556 00000 n 0000020031 00000 n 0000020163 00000 n 0000023028 00000 n 0000214697 00000 n 0000303630 00000 n 0000023169 00000 n 0000023304 00000 n 0000023439 00000 n 0000303939 00000 n 0000304248 00000 n 0000023573 00000 n 0000027124 00000 n 0000214795 00000 n 0000027325 00000 n 0000028175 00000 n 0000215048 00000 n 0000028276 00000 n 0000030432 00000 n 0000215131 00000 n 0000030530 00000 n 0000031761 00000 n 0000215249 00000 n 0000031860 00000 n 0000031992 00000 n 0000032125 00000 n 0000034865 00000 n 0000215347 00000 n 0000035005 00000 n 0000038340 00000 n 0000215430 00000 n 0000304576 00000 n 0000038470 00000 n 0000041501 00000 n 0000215712 00000 n 0000041654 00000 n 0000304904 00000 n 0000041789 00000 n 0000044929 00000 n 0000215837 00000 n 0000045095 00000 n 0000045227 00000 n 0000047823 00000 n 0000215935 00000 n 0000047952 00000 n 0000050036 00000 n 0000216018 00000 n 0000305232 00000 n 0000050178 00000 n 0000052075 00000 n 0000216101 00000 n 0000052256 00000 n 0000052871 00000 n 0000216451 00000 n 0000052995 00000 n 0000054031 00000 n 0000216534 00000 n 0000054120 00000 n 0000055010 00000 n 0000216617 00000 n 0000055109 00000 n 0000056054 00000 n 0000216700 00000 n 0000056143 00000 n 0000057185 00000 n 0000216783 00000 n 0000057284 00000 n 0000060062 00000 n 0000217038 00000 n 0000060221 00000 n 0000063392 00000 n 0000217121 00000 n 0000063549 00000 n 0000064310 00000 n 0000217231 00000 n 0000064448 00000 n 0000064583 00000 n 0000066731 00000 n 0000217329 00000 n 0000066896 00000 n 0000068370 00000 n 0000217412 00000 n 0000068546 00000 n 0000070528 00000 n 0000217667 00000 n 0000070690 00000 n 0000072669 00000 n 0000217750 00000 n 0000072821 00000 n 0000075026 00000 n 0000217833 00000 n 0000075199 00000 n 0000077236 00000 n 0000217916 00000 n 0000077388 00000 n 0000079517 00000 n 0000217999 00000 n 0000079690 00000 n 0000081483 00000 n 0000218254 00000 n 0000081629 00000 n 0000083793 00000 n 0000218337 00000 n 0000083955 00000 n 0000086786 00000 n 0000218420 00000 n 0000086967 00000 n 0000089251 00000 n 0000218503 00000 n 0000089413 00000 n 0000089956 00000 n 0000218586 00000 n 0000090056 00000 n 0000092352 00000 n 0000218936 00000 n 0000092514 00000 n 0000093698 00000 n 0000219019 00000 n 0000093839 00000 n 0000095708 00000 n 0000219102 00000 n 0000095871 00000 n 0000098508 00000 n 0000219185 00000 n 0000098684 00000 n 0000100715 00000 n 0000219268 00000 n 0000100877 00000 n 0000103750 00000 n 0000219523 00000 n 0000103931 00000 n 0000106351 00000 n 0000219606 00000 n 0000106536 00000 n 0000108076 00000 n 0000219689 00000 n 0000108228 00000 n 0000110377 00000 n 0000219772 00000 n 0000110539 00000 n 0000111898 00000 n 0000219855 00000 n 0000112021 00000 n 0000113265 00000 n 0000220110 00000 n 0000113427 00000 n 0000115046 00000 n 0000220193 00000 n 0000115221 00000 n 0000118353 00000 n 0000220276 00000 n 0000118544 00000 n 0000120569 00000 n 0000220359 00000 n 0000120716 00000 n 0000122997 00000 n 0000220442 00000 n 0000123182 00000 n 0000124504 00000 n 0000220697 00000 n 0000124656 00000 n 0000127106 00000 n 0000220780 00000 n 0000127280 00000 n 0000128042 00000 n 0000220863 00000 n 0000128142 00000 n 0000129677 00000 n 0000220946 00000 n 0000129862 00000 n 0000133080 00000 n 0000221029 00000 n 0000133261 00000 n 0000134960 00000 n 0000221379 00000 n 0000135117 00000 n 0000138014 00000 n 0000221462 00000 n 0000138202 00000 n 0000138735 00000 n 0000221545 00000 n 0000138845 00000 n 0000140967 00000 n 0000221628 00000 n 0000141142 00000 n 0000144521 00000 n 0000221711 00000 n 0000144712 00000 n 0000145956 00000 n 0000221966 00000 n 0000146092 00000 n 0000148188 00000 n 0000222049 00000 n 0000148373 00000 n 0000151702 00000 n 0000222132 00000 n 0000151883 00000 n 0000153178 00000 n 0000222215 00000 n 0000153324 00000 n 0000156358 00000 n 0000222298 00000 n 0000156546 00000 n 0000158636 00000 n 0000222553 00000 n 0000158799 00000 n 0000161580 00000 n 0000222636 00000 n 0000161733 00000 n 0000162861 00000 n 0000222719 00000 n 0000163013 00000 n 0000164437 00000 n 0000222802 00000 n 0000164578 00000 n 0000166592 00000 n 0000222885 00000 n 0000166755 00000 n 0000168742 00000 n 0000223140 00000 n 0000168918 00000 n 0000171621 00000 n 0000223223 00000 n 0000171777 00000 n 0000172965 00000 n 0000223306 00000 n 0000173079 00000 n 0000173862 00000 n 0000223467 00000 n 0000173961 00000 n 0000175479 00000 n 0000223550 00000 n 0000175590 00000 n 0000176858 00000 n 0000223633 00000 n 0000176966 00000 n 0000177815 00000 n 0000194400 00000 n 0000193197 00000 n 0000193246 00000 n 0000193293 00000 n 0000193341 00000 n 0000177904 00000 n 0000189757 00000 n 0000199577 00000 n 0000191818 00000 n 0000191864 00000 n 0000191910 00000 n 0000191956 00000 n 0000178065 00000 n 0000192002 00000 n 0000192048 00000 n 0000192094 00000 n 0000192140 00000 n 0000192186 00000 n 0000178221 00000 n 0000192232 00000 n 0000199623 00000 n 0000192692 00000 n 0000192784 00000 n 0000192830 00000 n 0000192876 00000 n 0000178365 00000 n 0000178525 00000 n 0000192922 00000 n 0000192968 00000 n 0000193014 00000 n 0000193059 00000 n 0000193105 00000 n 0000178615 00000 n 0000193151 00000 n 0000199669 00000 n 0000194032 00000 n 0000194170 00000 n 0000194262 00000 n 0000194354 00000 n 0000178759 00000 n 0000194490 00000 n 0000194581 00000 n 0000194673 00000 n 0000194765 00000 n 0000194856 00000 n 0000194902 00000 n 0000178919 00000 n 0000199715 00000 n 0000195771 00000 n 0000195863 00000 n 0000195955 00000 n 0000196047 00000 n 0000196139 00000 n 0000179080 00000 n 0000179239 00000 n 0000196231 00000 n 0000196323 00000 n 0000196415 00000 n 0000196504 00000 n 0000196550 00000 n 0000179328 00000 n 0000199760 00000 n 0000197787 00000 n 0000197878 00000 n 0000197970 00000 n 0000198062 00000 n 0000198154 00000 n 0000179472 00000 n 0000198246 00000 n 0000198338 00000 n 0000198429 00000 n 0000198521 00000 n 0000198567 00000 n 0000179631 00000 n 0000199806 00000 n 0000198705 00000 n 0000198797 00000 n 0000198889 00000 n 0000198981 00000 n 0000199073 00000 n 0000179775 00000 n 0000179934 00000 n 0000199165 00000 n 0000199257 00000 n 0000199349 00000 n 0000199441 00000 n 0000199531 00000 n 0000180023 00000 n 0000199851 00000 n 0000200127 00000 n 0000200219 00000 n 0000200311 00000 n 0000200403 00000 n 0000200494 00000 n 0000180167 00000 n 0000200586 00000 n 0000200678 00000 n 0000200770 00000 n 0000200862 00000 n 0000200908 00000 n 0000199897 00000 n 0000180326 00000 n 0000201689 00000 n 0000201871 00000 n 0000202055 00000 n 0000202193 00000 n 0000202377 00000 n 0000202560 00000 n 0000180485 00000 n 0000180646 00000 n 0000180735 00000 n 0000202698 00000 n 0000202836 00000 n 0000202928 00000 n 0000203066 00000 n 0000199943 00000 n 0000180825 00000 n 0000203663 00000 n 0000203755 00000 n 0000203847 00000 n 0000203936 00000 n 0000204028 00000 n 0000204119 00000 n 0000180967 00000 n 0000204211 00000 n 0000204303 00000 n 0000204349 00000 n 0000204395 00000 n 0000199989 00000 n 0000181128 00000 n 0000204900 00000 n 0000204946 00000 n 0000204991 00000 n 0000205037 00000 n 0000205083 00000 n 0000205129 00000 n 0000181270 00000 n 0000181431 00000 n 0000205174 00000 n 0000205220 00000 n 0000205266 00000 n 0000205311 00000 n 0000189803 00000 n 0000181520 00000 n 0000200954 00000 n 0000194947 00000 n 0000194993 00000 n 0000195039 00000 n 0000195085 00000 n 0000195131 00000 n 0000181660 00000 n 0000195174 00000 n 0000195220 00000 n 0000195312 00000 n 0000195403 00000 n 0000195495 00000 n 0000201000 00000 n 0000181819 00000 n 0000196871 00000 n 0000196963 00000 n 0000197100 00000 n 0000197237 00000 n 0000197328 00000 n 0000197419 00000 n 0000181978 00000 n 0000182139 00000 n 0000201046 00000 n 0000201092 00000 n 0000201138 00000 n 0000201184 00000 n 0000201229 00000 n 0000182228 00000 n 0000201275 00000 n 0000201321 00000 n 0000201367 00000 n 0000189898 00000 n 0000203158 00000 n 0000203204 00000 n 0000182365 00000 n 0000203250 00000 n 0000203296 00000 n 0000203342 00000 n 0000203388 00000 n 0000203434 00000 n 0000203480 00000 n 0000182517 00000 n 0000203526 00000 n 0000203571 00000 n 0000189944 00000 n 0000204440 00000 n 0000204486 00000 n 0000204532 00000 n 0000182670 00000 n 0000182822 00000 n 0000204578 00000 n 0000204624 00000 n 0000204670 00000 n 0000204716 00000 n 0000204762 00000 n 0000182909 00000 n 0000204808 00000 n 0000204854 00000 n 0000189990 00000 n 0000205357 00000 n 0000205402 00000 n 0000205494 00000 n 0000183046 00000 n 0000205586 00000 n 0000205676 00000 n 0000205722 00000 n 0000205768 00000 n 0000205813 00000 n 0000205859 00000 n 0000183198 00000 n 0000205905 00000 n 0000190036 00000 n 0000205951 00000 n 0000205997 00000 n 0000206043 00000 n 0000206088 00000 n 0000183351 00000 n 0000183503 00000 n 0000183590 00000 n 0000206134 00000 n 0000206180 00000 n 0000206226 00000 n 0000206272 00000 n 0000206318 00000 n 0000183678 00000 n 0000189711 00000 n 0000190127 00000 n 0000190082 00000 n 0000190172 00000 n 0000190264 00000 n 0000190356 00000 n 0000183815 00000 n 0000190402 00000 n 0000190448 00000 n 0000190494 00000 n 0000190540 00000 n 0000190586 00000 n 0000183967 00000 n 0000190632 00000 n 0000190218 00000 n 0000190678 00000 n 0000190724 00000 n 0000190769 00000 n 0000190813 00000 n 0000184104 00000 n 0000184256 00000 n 0000190859 00000 n 0000190905 00000 n 0000190950 00000 n 0000190996 00000 n 0000191042 00000 n 0000184343 00000 n 0000191087 00000 n 0000190310 00000 n 0000191133 00000 n 0000191179 00000 n 0000191225 00000 n 0000191271 00000 n 0000184480 00000 n 0000191317 00000 n 0000191363 00000 n 0000191409 00000 n 0000191455 00000 n 0000191501 00000 n 0000191547 00000 n 0000184632 00000 n 0000189849 00000 n 0000197009 00000 n 0000193894 00000 n 0000193986 00000 n 0000194124 00000 n 0000194216 00000 n 0000184785 00000 n 0000184939 00000 n 0000194308 00000 n 0000194444 00000 n 0000194535 00000 n 0000194627 00000 n 0000194719 00000 n 0000185026 00000 n 0000194810 00000 n 0000197146 00000 n 0000195679 00000 n 0000195725 00000 n 0000195817 00000 n 0000195909 00000 n 0000185163 00000 n 0000196001 00000 n 0000196093 00000 n 0000196185 00000 n 0000196277 00000 n 0000196369 00000 n 0000196458 00000 n 0000185315 00000 n 0000197283 00000 n 0000197695 00000 n 0000197741 00000 n 0000197832 00000 n 0000197924 00000 n 0000198016 00000 n 0000185468 00000 n 0000185619 00000 n 0000198108 00000 n 0000198200 00000 n 0000198292 00000 n 0000198383 00000 n 0000198475 00000 n 0000185706 00000 n 0000197373 00000 n 0000198613 00000 n 0000198659 00000 n 0000198751 00000 n 0000198843 00000 n 0000198935 00000 n 0000185843 00000 n 0000199027 00000 n 0000199119 00000 n 0000199211 00000 n 0000199303 00000 n 0000199395 00000 n 0000197465 00000 n 0000185994 00000 n 0000200035 00000 n 0000200081 00000 n 0000200173 00000 n 0000200265 00000 n 0000200357 00000 n 0000200448 00000 n 0000186145 00000 n 0000186298 00000 n 0000186385 00000 n 0000200540 00000 n 0000200632 00000 n 0000200724 00000 n 0000200816 00000 n 0000197511 00000 n 0000186472 00000 n 0000201551 00000 n 0000201643 00000 n 0000201825 00000 n 0000202009 00000 n 0000202239 00000 n 0000202422 00000 n 0000186607 00000 n 0000202606 00000 n 0000202744 00000 n 0000202882 00000 n 0000202974 00000 n 0000197557 00000 n 0000186760 00000 n 0000203617 00000 n 0000203709 00000 n 0000203801 00000 n 0000203890 00000 n 0000203982 00000 n 0000204073 00000 n 0000186895 00000 n 0000187048 00000 n 0000204165 00000 n 0000204257 00000 n 0000197603 00000 n 0000197649 00000 n 0000199487 00000 n 0000187135 00000 n 0000191593 00000 n 0000191683 00000 n 0000191638 00000 n 0000196596 00000 n 0000192278 00000 n 0000192324 00000 n 0000187268 00000 n 0000192370 00000 n 0000192416 00000 n 0000192462 00000 n 0000192508 00000 n 0000192554 00000 n 0000192600 00000 n 0000187437 00000 n 0000192646 00000 n 0000192738 00000 n 0000196641 00000 n 0000193388 00000 n 0000193434 00000 n 0000193480 00000 n 0000187622 00000 n 0000187806 00000 n 0000193526 00000 n 0000193572 00000 n 0000193664 00000 n 0000193756 00000 n 0000193848 00000 n 0000187897 00000 n 0000193940 00000 n 0000194078 00000 n 0000196687 00000 n 0000195266 00000 n 0000195357 00000 n 0000195449 00000 n 0000188062 00000 n 0000195541 00000 n 0000195587 00000 n 0000195633 00000 n 0000196733 00000 n 0000196779 00000 n 0000196825 00000 n 0000188246 00000 n 0000196917 00000 n 0000197054 00000 n 0000197191 00000 n 0000201735 00000 n 0000201917 00000 n 0000202101 00000 n 0000188427 00000 n 0000188600 00000 n 0000202285 00000 n 0000202514 00000 n 0000202652 00000 n 0000202790 00000 n 0000203020 00000 n 0000188693 00000 n 0000203112 00000 n 0000191728 00000 n 0000191773 00000 n 0000193618 00000 n 0000193710 00000 n 0000193802 00000 n 0000188844 00000 n 0000201413 00000 n 0000201459 00000 n 0000201505 00000 n 0000201597 00000 n 0000201780 00000 n 0000201963 00000 n 0000189043 00000 n 0000202147 00000 n 0000202331 00000 n 0000202468 00000 n 0000205448 00000 n 0000205540 00000 n 0000205631 00000 n 0000189252 00000 n 0000189461 00000 n 0000189557 00000 n 0000189651 00000 n 0000206364 00000 n 0000213112 00000 n 0000206601 00000 n 0000206400 00000 n 0000206501 00000 n 0000207072 00000 n 0000206734 00000 n 0000206842 00000 n 0000206963 00000 n 0000207237 00000 n 0000208434 00000 n 0000207351 00000 n 0000207451 00000 n 0000207578 00000 n 0000207696 00000 n 0000207808 00000 n 0000207937 00000 n 0000208072 00000 n 0000208205 00000 n 0000208329 00000 n 0000208977 00000 n 0000208590 00000 n 0000208718 00000 n 0000208853 00000 n 0000209143 00000 n 0000212637 00000 n 0000209247 00000 n 0000209337 00000 n 0000209442 00000 n 0000209549 00000 n 0000209654 00000 n 0000209761 00000 n 0000209866 00000 n 0000209973 00000 n 0000210078 00000 n 0000210186 00000 n 0000210292 00000 n 0000210400 00000 n 0000210506 00000 n 0000210614 00000 n 0000210722 00000 n 0000210829 00000 n 0000210937 00000 n 0000211045 00000 n 0000211153 00000 n 0000211261 00000 n 0000211368 00000 n 0000211476 00000 n 0000211584 00000 n 0000211691 00000 n 0000211799 00000 n 0000211907 00000 n 0000212014 00000 n 0000212118 00000 n 0000212223 00000 n 0000212330 00000 n 0000212436 00000 n 0000212543 00000 n 0000212801 00000 n 0000212911 00000 n 0000213018 00000 n 0000223983 00000 n 0000216356 00000 n 0000214235 00000 n 0000213170 00000 n 0000213369 00000 n 0000214159 00000 n 0000213770 00000 n 0000214010 00000 n 0000214956 00000 n 0000214405 00000 n 0000214529 00000 n 0000214878 00000 n 0000214654 00000 n 0000215591 00000 n 0000215214 00000 n 0000215513 00000 n 0000216262 00000 n 0000215685 00000 n 0000215810 00000 n 0000216184 00000 n 0000218841 00000 n 0000216944 00000 n 0000216866 00000 n 0000217573 00000 n 0000217204 00000 n 0000217495 00000 n 0000218160 00000 n 0000218082 00000 n 0000218747 00000 n 0000218669 00000 n 0000221284 00000 n 0000219429 00000 n 0000219351 00000 n 0000220016 00000 n 0000219938 00000 n 0000220603 00000 n 0000220525 00000 n 0000221190 00000 n 0000221112 00000 n 0000223888 00000 n 0000221872 00000 n 0000221794 00000 n 0000222459 00000 n 0000222381 00000 n 0000223046 00000 n 0000222968 00000 n 0000223794 00000 n 0000223389 00000 n 0000223716 00000 n 0000224386 00000 n 0000224812 00000 n 0000230107 00000 n 0000230430 00000 n 0000234954 00000 n 0000235139 00000 n 0000236865 00000 n 0000237286 00000 n 0000237856 00000 n 0000246469 00000 n 0000246872 00000 n 0000253722 00000 n 0000254070 00000 n 0000254334 00000 n 0000255312 00000 n 0000255626 00000 n 0000261479 00000 n 0000261906 00000 n 0000267557 00000 n 0000267955 00000 n 0000268384 00000 n 0000274755 00000 n 0000275196 00000 n 0000275559 00000 n 0000280038 00000 n 0000280433 00000 n 0000284943 00000 n 0000285310 00000 n 0000285603 00000 n 0000287608 00000 n 0000287949 00000 n 0000291232 00000 n 0000291493 00000 n 0000294183 00000 n 0000294370 00000 n 0000295580 00000 n 0000295884 00000 n 0000295907 00000 n 0000296338 00000 n 0000296654 00000 n 0000296783 00000 n 0000297351 00000 n 0000297654 00000 n 0000297679 00000 n 0000298109 00000 n 0000298364 00000 n 0000299589 00000 n 0000299906 00000 n 0000300222 00000 n 0000300547 00000 n 0000300857 00000 n 0000301184 00000 n 0000301497 00000 n 0000301814 00000 n 0000302150 00000 n 0000302486 00000 n 0000302802 00000 n 0000303129 00000 n 0000303445 00000 n 0000303761 00000 n 0000304070 00000 n 0000304397 00000 n 0000304724 00000 n 0000305053 00000 n 0000305364 00000 n trailer <]/Size 963>> startxref 305549 %%EOF sofa/20150209/c/doc/sofa_ast_summary.pdf0000644000113000011300000012102612507252057016721 0ustar bellsbells%PDF-1.5 % 370 0 obj <> endobj 384 0 obj <>/Filter/FlateDecode/ID[<325A784A071BD5449E04AED5F7BFD37D>]/Index[370 26]/Info 369 0 R/Length 75/Prev 41123/Root 371 0 R/Size 396/Type/XRef/W[1 2 1]>>stream hbbd``b`Z$YA=`"Z@\w "AɪXf Ľ L@#% endstream endobj startxref 0 %%EOF 395 0 obj <>stream hb```c``zdǀ|@1 8t+QP i )gabxR^*sB *TR=@0GH00%­g`8Q ` endstream endobj 371 0 obj <>/Metadata 13 0 R/PageLabels 366 0 R/PageLayout/OneColumn/Pages 368 0 R/PieceInfo<>>>/StructTreeRoot 22 0 R/Type/Catalog>> endobj 372 0 obj <>/Font<>/ProcSet[/PDF/Text]>>/Rotate 0/StructParents 0/Tabs/S/Type/Page>> endobj 373 0 obj <>stream hޤUmOH+U7GiN*ܩ$ćMKٮ Y;$ Tdֳ~8(or DA:1Ө,.$M>)o?u,ۄSlz8m"^ (lѴr/M|cӯ RUUɮa_El/H1ݶt=< *SA8=qUw.RU|uqTlvMKvV7Xfӗq@f{ {Ħ:yH¸ Bm|ӏ a磟* o(+@{\ 1m2g%8sk0k2fk,z1NP6C_֣ Gﵵ8#-h]䊢_6Q#~|h!/x» _F2.=iƙG$mt+ۯ7*@7z`8 ႣǑdk n:YH %: -ބVJ98֐AIkyv.=P4@tGz"w(wݽؐ3&gOgr@s(.jz'pdQwL}kؗ endstream endobj 374 0 obj <>stream h,olK{ouNp0U{˽4&RYO9u괷 Dm鬱 ڞ,(o-bJ /Df!.]ɓ|7yȜ<@hZk3r쬳R,9bŒV̴K?wlYBGmgf4 <Ϲyq攙s 㭍id{sIjܬ.&YVnQCm1sFu8iqv78i:j R34ʚ `vΠ:F<Cd#yJmQQ5_`X8\ZqDb 5vYvvuxw iG$5,jz؂Kq_O>c&TD'L]7%{`z>+[ ǰCo WA@|Z&G@ x50rT"[g|ǽ5~pLCDկ )2p;Bzsoӫ n>[;U"@ax$J;_ Ecg=X_gnr:7`ԗy mz?0'FA tLIqq _`#m"r*eIAD0|oGU)T|U߶~0ĿIWp7YS7QI͛4’j%<:(`羞W?-n endstream endobj 375 0 obj <>stream hTPn {LvUX|Cu;Tc_nX>fYzjh͍E64N"\XJKe)AX.ǡ1UE{hN-;Sawa~CŽӳ/b@W,!O9>NVHtUШ=Rk'#d\DVqęIۘWg}$<$|\{qx9;%Gы6xm\=>#=|8 endstream endobj 376 0 obj <>stream Hn0EYR@EzPRp4pԅMӉ K*$AR~Mq%3 \^^]f [g %r0K@>8 \}}#T![JgFoCfnD+8i9r2`+0nc>=)!3 Q > >*'Mا#|Ttqˠʌök4\])@6y.̻+#nj}]Qi*/QZ@>7jSTWný:Po}' Vuk+th%(xW*MQ[hR5zR(׾*[zi{cw/>zzxNhG(e)׋Iz>hzZM?j q, i\N WkY 96FpYpЇ͙ U[r~a F7Y|< 뺏 endstream endobj 377 0 obj <>stream HTMo0 Wh*ɖdE~6h&J!3Y?J'5.b||fLDI$*J<>stream H|UMO0Wё6 āPWBZ`6^9a~v ug750*PPJ qMm;4ζ98ZAmz]ZJ"@ᚖ(d@ouϻf!- ??r& Ta[l3@&8QnԉhA3,rhмDd3$UQHJqOfW^8[, Ƃ ]ʿ/Ǡbê((AiEI Yr,|("+广GR]>r˹_/>a٦"aqa 4d 6{F WfϚf#ebu.O29-Qz(OLgG&_gNS-@Jbv:uxL0IH1O0ƮMۻ3qqk%6ͦ#i QL/bP#F(弬y0ų1 92I6p0ϻ1Tp TȬ42c*] 3seMU~+K; endstream endobj 379 0 obj <>stream H|TMS0WQ$K`t  zR&1c;jNBR'K֓ޮ=-X[vYv- m.yguCˀȿR* y\X6*s4jØ͹Ξ,x >#v_(2]4 :z  G*l&lMX+3֨4BNE{PI%A*{ȃpvvrsy=g- TMi~*Y cL$ZF/v X7gjMB$< `%Ww(6wP0e+6#G=/ *SG_|: jGNzAݴp{i~Зvz'eZohZXY e"7nW]tmrŶ['H$do#]iJOᰕb-xݨZ`wcO4Tb'Һ+Ol ou[uUֹ%|' C.DȦ}z6^?x& CM!eMwԳ"^{/Ƭq[M pఊbN*eڑna#2}PchٷCevEG*{2c2k& ߏ+)v?"UlUON@꠨}oہvUt4&㌲ Sd*`G endstream endobj 380 0 obj <>stream H|oo0SK#?ԦUIզWkFpIlBuPEB3wpx`WK‹g/b޷x)%<"%HXB%< =zP\QR(Tn }I6Ҫ*B7ːG2_p)WtbTA7.)%o]ᥬ|\ē-B:e/^ o0gqUQ1OSj'JzʌgeIdb2u>;7 #|=^1"x%xXԢOGV9Y9Gٗ7'3 ;T~Ȋ,.ye*!sJ1lZ"a+=?cӦrэ>jfoxT#흶SōmZʛhX(zZ*6wH][0]_r4LW5,p-6%Z.ݑ7n?rI>stream H|UQo0~Wܣc0d*i6eRaӤd41-SmXiCr;A~C&Ipd(c0FQ#6\IPi A6ʭz1S`q 3jqXlq}u=N:1 }R0[ -]~vi-Ai30&L!( [ۆPE!OXj땧6/dnDZi@Z؈uCueڸ$]@XjC\5qzKbb~ͅC ^~:y2Zʐpw#%=9/Vj򮆽[korQOۿPe=kl`$Ps~7g8F)aHc"Z9Y1{?w@θN%ԧf#ޗЛęrr7[܂ ťbvQjǓud4=i_X +0j5p4KSMm6Ӳo ;ؙ,-f8bfNpvtIⷚ@'"X¼|SS䣝 q؄ՆW'naO.* 4,SK^ c.iWmɣ^Q9~ 7v2xu1>acjNU 1SpHO endstream endobj 382 0 obj <>stream H|MO0sWw-BaWV"{B{臡YIEk;Jw2yPn!2UBגJciS!zeAb.hkWU6瓻S..IU1`P=e9%PsCVDPMT NWW( %Qt en]ݵgl[pgBG FJsSHi5bJ@Ϡ'9/8Hy>6LDī&ݼ:JJ|Sx (y endstream endobj 383 0 obj <>stream H|Tn0 }WQjE-mu04H4QVNH_4!@@٤Xs,w,g+KL. OXJ= TtIHAKǀ!x3,(BcDa }B_ŨI)ܫN:J_ZF*[־R*M6YP kecj{]訇nm(6$hEkJPEY,_{)YŒ[FjR&#Y#͎.OqQ|o7qV}% 1і(1gJaIH*|j,)Ib4FHNߛi~/F M:xؠl N"UMilL7lܴTSsk5F9NXkzV}<ӯqz{&O8! qI߬3w;[yMRppʳ/AMogEg'zu (ty s8_вq?DCd;ro|jdt/O$tmA'Ñ ؐ2vQ2 Y{w endstream endobj 1 0 obj <>/Font<>/ProcSet[/PDF/Text]>>/Rotate 0/StructParents 1/Tabs/S/Type/Page>> endobj 2 0 obj <>stream HWmo8_OfwX M5m ,p8J;Jer<×9דwgo_Wghv"Gr#730tO(5R`sY^5I\9F (-$i]fն@t;877e.C>~unDF+FHQ]ee[՛r.zb v)b.P;t1EpwԒ'D-^vpB ƾe\؀1vx.ۙ96e! sH9|iMƤƔv\"LbN3֗=PTA۰`E?4f4ꥏRT8f)h2!?vĦ䦒cN8H'tF jx{"=`)\5\cuY'WQ1Xr5NvSLn)s!BlA?ǂǯuQͪ.>͓> ti,5}b/CQ}-5{T)BUF`J&lS䄑>m9ʤ1i/SBƑV'!ΜDBu+cʖyW AgE) @x0| ܸ4{~O9d 1ws9F#a>0kvRz9undi N ] $ʸ2?Uh . "<PUaGGrk-][J?wC'44 ԇǜ8Cg"P"|LpS^)&AA*ZBҩr &%&ӥ뽿 B:ii?cЗXwk06t5 m?kj4?#@gi {FJ:'kZ܅;A,s<'I>ǢфITsz~DhL=/5W@=sm*uXibkZ;16uvO^ck;u֢^#s$$g҅hk?2k@ ̖m XXf*}S^]yweu.hh 2[ٕ@:+ j/5: }U8_.s}~l 6kXdwD־ڟ, t˫JVl'>VSA)=k9{MN)3dQNVjWsɪϤh>4rޔUݗ]'BƯr77nuK(uOlnzSI \fU1DTҢ(]ا8 h-&HhRn̮(tm8JFٺ,ns2ntV׋d'i\w6>|( #J @ k4쮛{-sn,NX);fe3u(~ڧxh$SPÉUӞICE% ":s >'(3/ɣMQ}]m 'lZ g/ 7817L  < nW(8wE.&т.OW^UgT}.v?DI (j7uAg ; I[c夭rX9ik_9LTOVqlk"Y;"uۉ7݈~}r.3WڕNc;,@q`:M,He6s}.LTŏ=^]UeBN%{]i/x*{I>QB%!{7ԜS V9Tv CGG8.JuOݶħ"uhowԗo()Uob[7d&"7Բq{' 똊'Q0G .)ǙXزabfbsHE|@xڿ[75q6kؾ :z_靂MwZEs ? WU!"t(v&"ǫ$۵M(R&IӢŮm83W+Ά+]Q,kEҀЍ'%Ehf՗Kb%✾tM(tH41 DN%%MfXd}tvЬ~ty:BvIb@L}<>єS6]RW;5)#l"4I/14۫UC/ '|ɟHx^q%8>h/@I)9\*W@ ڌR`+{bq,_N$)rbġ =Vz{ЂZw/m2 äxض.G`9pem4=uj5+JTaՓƌ -Rz f 8\į+|.'"8LjBbYVY:h4|{<=FeB r yR+}̝*DBRdU޹zȑưRbDeeXeG*i+;1CagLҫE\2^ J 7j!* w>T#sFU>>&C}[:n8N!t$0.̯W:@T{ C]O:=7.zשK0bv7k$%R,|NwN3Z \Pʨ"P .Fp=l4\ F5;*# 97{{ͽ|C䔢(x JOf;FZv A093U'ӴЪ2!.RC/Zeg{5@',=wy3ןhKIh[Z^۽}d6[HISVG%i0&r`ufJ؛q3(LyYzNÓ{* W\ONN|ڟØ'>E4a-.on1EuďsCVH4c"ctL!(Vc-݂6pO'!2GpVTW7HQ5_`]2$}< zna0%7j}ܠ1 $*nWcy&;73C%w;6oao*Sli7Ko4@~+=b >0,)&R]ưW{'l4'l4'l4'l4'lUd(LSLI;^D)0vZƪLU}ح/`{} ~w7ɓRzgQ -!a㍔lo1gIxйCM2$sF8MD:0L4ay:L0vNc oնU}~u:1Nӯu<98ܶ7)/>twLkh]r=w}yD&3XAU$Cn0߼WnVztD[kt\u[]G~Ё|ˉ^5kt~ݒϋ K{ 0{{S endstream endobj 3 0 obj <>stream hޚ0 F@N endstream endobj 4 0 obj <>stream hy|?&¾Dp&N){II `M`@ ~.U\j *֥jnպV- hyĈ<7s9{* d۸I]b_I \4iMEA)igRRг歚2鿛>*-{}.Kͪ+tkS{rނjh)-+4-0,?k'9,\ M{%wҔ%㴠ϢךfweFR=HfY3Ң7Ï}0JRhMZЧg;=#οCj=3>~HtnN4Ygj-S7GPN?i0s/ v`+Xef motu!>/RUhnUe*cN4F`Edbݥݚ]AMuCJ~a~Mj-YKZM}-~~gA t {Zl%{S#f%r q2]&k`_G^Ŗ/!: 蘦g!;uyf]ˠ`Y,])Yh*nzB gZW@7.@e)h -sh9lSQ"$dxRu;ߨmNb:9v{@`OR ~ZFlrg9YqRYD>fj7po[*dnb,۠u~18c9e @cS3%On_9w֏?p}&m䶫YTzEq xzf?nm8{Q:]B[Oϩtʝ NJ$%wU \⚲ʦ9m"tި#=dۧw=ޭkΝN§dNn֭Zhެiƍ6HM\/)蹎m)2rXanEհHJxx8-I٘5N7 Z9+fE$?t|.e-xY'v3>`PnOxtiYŒpKEV2GF"ig8y/4}/L({bamZTcB%;A̱]) .Q3 #$?FM?D 0Us`ѲlY̢PF=(BGP~Y03+> wRT؈kPTB!<他=}6aRX)&D Ƅ͉dF)Ӿ{4$+,\V:0baIa() 喇%|M|Vq@Ix8mnؗi ͍4ʊ-vun9!S܀uZ37Nѫsìd9fKnyedo* EfT|ts3")G2)J*F܊PY}Pnp3dF文s[)ؙ'Ȉ2seH7g"=+<">Q]:(Ίw(6LK𢢌ؾ5v ͌HӬh׹SkXO[J9|-;В>]?M(R8B _%l<]YL?+O-QR]="Q]R]'Z5#J WJI^[##6EJ2Ӆi2a٪X蛞Ѩ?sx?gO-aB"Dz$9431_2ͩ2sL ό;\&0iӞl͠P4#newbKL˾DKɦ*R;$̟̾]׷u޲Ⱦto$o| +ӭxJM)9P60"hlBĬN GҲ"}Biu2'lj ~x[֑B%qOV2(+qFXFF~xG\gz.409 yӇD ~!*7 CBQz]&"wqcus G_?d^,럖¸OY+ϨZ+&HOQ[L_Z02"+1y>2+nu yfǚ5b)gW8q®IŅ{y6ma%9EV7Ds-5LS vOߛ-U3fbςx>/U,a6,=puQyuI1V HrxVN~83`8pQ. s J6beDDDތ9`eiP{djfømby̢HRtɋcz1cnYK~6(Re-c&ȇFG9fEՍˌ$gn0@sҩXQH$ifIk;9 gtڛ?1,nu,FNPH. ]?~mCkE#Q::4YQMG4hbx%g9WJ'71|7h4Oڂ=[ë2|:w s;T:9dOdD8NWRj-5P~R/{~?t¯ o9ʩ 7_+!kʺ,U^]eb_+MZӯZ vU5NWsr5s3Fg x <'NPw_Ɵׅ  MUnsjBZLPsq,?Yʘ06;Ɔ [[ׅo0×j@Ru7hPsUn8K q*K?M2:5!mCDyNqd/ԙֽtKRoM`9<'? >a_~A3ʟVlt~ntFIFo?kRm pko)ft06K۝e;ij^mA]ST;Ӣ5"lw귫iAE3s8?V)*wYc*sΧ m'S? l2RMȐO6Ws5ͬ3്s"|p#O_|שTM{О#r| k8糒v]{xbJD6Lgغ.?_^cwo4i4-446[V,$Љ5S 4ڡ3·DcZ)[kqƿ(PYろ; LjƹU*r]Y#9#u ʛb&tY#GhVvwck |H9P~Uj{Zi<إ kv2O=OeuA<>>`kr= 7*+Gt@AVZtRa:X!:1b4xL=Ckcߚ{exn//Y1߉GRWx]@,B{ 9Cdo}ޟO^9[;C8 f9,;9#tGSsrNۃ8'&~?ݟ^_PS w >=>\Ϣ?fN}ޟ1 }qw/2~5P,qFk1F~~[8#z={xnSMc7q0És=M\/[_jkO[4#طAgpP܋>^P7K+ );@?Z<5򇌿T+|)sl?W)NoinJ5AjUiʤqĩ/UI9mY:ݎzk 9/ZoJeuz,XgNAu!K#X+WEnt ~JbE*GkL8 0jAXd}Z ]^Tj587No3룚qANr Lj|,p?Q{s5Z;㵍{kϕEȅ"}_NMGȝ'5g2Ng {*{W*Ýl2p 9hTWO#pc<벝xe290eSO0\JM6z8W/ M< Y`.vKXun\Je4,@AC|O'kP_6` P^ 4z\kP@8>__ÿ29~46~w]JL{@?}Tn4=xocoGA{k|Tuw3:lϙO'.kpk.}˘ k6ߚgw 3{)-6^Ur]bB| M*}.OO86m(+;b|`iH%-v^Ԋ@鳙\2r w[HwusHZS6 ?X|cy[ 6396@ksf;_m PKU7Wi;Az`LB{E7{>{g{S{Zt#2zޔAF+&DZ!؆m7ξ b&"`69Ú Pyl{.^p c}yc6Vq6t't<ܭˋ\Og?.sOefW^v%9E{LW|~CxO>''ݠ7cYzӊ+ߧ7~=Aown0pvifpf&7CgTܦS{gozAn >XfW`AR/7큚yo؉mW;Q=Ao/99yV~Jқq6:|}w5ӓP<+}}WOGqgZǼWُ99;5Y,)5Ws/k_YyGTE^^#}RmF8C;2mg1L3Sr z{Os30;y a7 ݆̭Tswn-wlw4Z`}^Vwrjw9.wrwwW x_Lq;tP3Jwnf+yE7yKic +ϺQEjE*ᛅKsߌ]=Zh?;x.oIj`J3e o&=P %:S@LL ܭ9@gۊӏ;_M'Fq;F?vW;z<ЛSΎSeu0ZTPޠj^Fl]ǘ?}79n>T'9V[Skti6t>.Ʀż߃S]ӊ'a^ xO"8+?ɕfyO5ɺ:\?%ͽxQKOѤZ|;o1hLƇV=v11kuBMyӴ~oOgE5|a𡶾=@#~ qw')6|gǿ^OO0yv"':9*ti_:괣C/w'cU$W}?S^J{/谂 OUxJg!MQCUrWo+c<[0fӯ-jt\ 3 mCѶL!'H9 f'zS{!Nө%Fӣ0>Ack~>j|[ֳӉo'6(w'M\| Lߞ,poDTk9mR>\|3>}-~%竅'h{@>i<ysxu0t8ssxL`Dg VmRpTܛrn ߓyh/uAO>pRLp+i]Aԫy|/i;/݆=½lQc5sM> }ZP{ej{OqsuhI:R.Qr\wsx[u#缧*=Lꤞ2X:hdN/sN9Cz[gs!o4!s(i,[D Fj%9**r%LcUp8y|ޭ"wrj4q#au1˙{zs v!7ŇWCkH.MrͿGqIdLfC}u |'M>2obg@*sۖ{%VM&܊ UKz>rfy+6[K_K湚H~RI,=ՙAP}mja &]5;Hdǯr+ٯpզ:xUS_UsCg.7ǹ3tAa?or=Zi/c4&u3[gO9^;Xo&;QF&'5;8Gw3C}=J㬇evݢd[vfg՜9: {%;ͣ1Pg5e_+Q%NQcmMDK8X )7P6qyGt'#[)\I.5.o"l0#r/g})J}9E.ؚOw7tӿGж=sV:aQ>L|N¸בs-vs?yCCA}v&Lي>+5}@g\Pd\|5m>k6Ny?k|A_";4V/f۫g:܋>Erc,nռY;k+MvEUjޮg'ޮU7sԼ]=Ow&=:;7k67Znۜ jӽN/'+3Wȿ>@\ ^!/ri}o&z]|x"Ϲ[T}NOi'X փ&\f:u:rwro(tY@9w7yp+8` Ap~>,.v[0 <~ .[Fjuj{M6]VKyb"Hߵwa"LӵѫKoF?Cϧm5 2gNM^EOk3}L#WΣ~=xT\\t["M!ߧoOhVqx;z;eIAca}ctOZ]Z_zgly{q1dw0uW9) ;U9I}?֣z+U}4n(W+n7?׍[JQ^4o«_w%wSPEЅv@=]2doyo7 '㼪Ms6tg+Zonwrk)w;a׏?>*nC(/ rL JVkTqUqvRQ܁GnAǿR~^;#v:3~KLrfbv#ToI93M%_L:&mD7ޙr*A 6b|_NEouG.G[I豆\! ! Ǟ{ǥmԉ~7d1u6};Ra k7Z=딠__L:@'@m`nc`+7_Cݽּ R9d7Wi AmmۼU O;1>r_qGy8/owS˻q=RG?3o{q[^4W`)IZث9UL#{nZ}juP}sL& $$ e 3 u|R1* jy"/?hn]Wkeph} M*V%]%t)1T`^Ԯgys2ͶVw+o3x[?>am% }W&ciRGϑ'\zը[NՇk%Vю_Q&/b^sV2q]$~i݆1>g^/7QN[kD:~ l;"v6(וkǝXc] ̡muЇo?u~PJ;Nb½s7cAXVb~qM-OV5 ?t~:ukiY(LjƜ{D Go[ȟ<-O>Q*=ox\w l*-=-c8\V!/ڣjg;b4iحX{5ِBݪEb͸4Є{IKЇaoG"䛋9Wk03HWp>>>?zNsW)݉*>:djTgP!'Nu'_K)OynӐXo߂1l!]OBDi@˿X+ (/bg:F])4Lc4NFi3?ƧgoMc5#4zLmx447Lu6.h3M4֛Fi5{Lci,014fFi\a~Ӹ4L4 L#4rMavPguB? y\~! }Bc!{<"GB~ a!m!򠐯 y@W|Iy!rB!$d B^uB6 ywAz^Z#Br7 9S*!gY!d |3h|66 wOQIߡd84xaУ_ q']#+-ƋIV@z.M"|H7Htص *RN^Z.)UKЕQU`&EJdaБR9nF֢:Pҍk :0\.<*8 &y *|)Rzm/ጦC$i2wCM2ҏAz;咎n_T`D: 5C ]櫀H|DTiTB~ R+N%C~ =.C ]hO0x)MX難(rT&'I#d J- ROBm#08Q( N'@|rda0PR:t JH) DYJ2vabs =fMcc[>2tDc<}}ś)EEfνH!wdH{:G0Q#R kMp:"aIVb< /DWS:9f'#׈N>5UTwYkp;6_Jp0 Iw{wwngڎ}=֪hɚ"}[dy˃[$GWkeW0' {YzXw{p&ݿMF>Nzn+ƞae, vt+ ]\utP<v\cg lWN_2&Úଅ惻lȸ4Z/c.4nC&w-nh1޸_LqvPP41cy IB:1Ex>]541{ΑwwKEq~+)QV;:{Kfe?<ʼ/Z;9es[vp|gk#x-e[i*-( a[jя'5ߦh5޾RgfVi K<6 m 9yV\<k?wf*j%N)xg5[ݔĴn.0&yqʚXvK0,!abB|i$!8Q`+L (?a5X8(e?Ιjα11t' yZ=36.mGDˊDMӗ0grxRLKczi(99&; +|(qa#)b+# 6 l|cР|;{0<3>Q0XSE,ʛ3ɓd{2=c=.hOg'qzGd6 ?"̣R 5--g I. fTh_uCM AGii5i7\`AC\y -#7#o7u @6`٠ \rP A@z~LTӏ#ޭw+KzGow?^E_ӛ5j}RQW3 =F.iHV^b1EP%Ҹ 3SRTYUltK'rEbsqvhQ@T9"u6\*R{ JOȥܴܨRebM K92H+q,]#;;$8W ҩҤ쌱1=cbYYIh)a9!!)!c"Ǒ&s2Sd ukrfzr] 6Kr&K.(qgGdst~Z SL;n([CUy2p 48,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,&bIH m;h(fL1la+h6OVRBFI [ia1lJön`>S WJ P-5Rb !V#-!X݂?U#l ݄zȷnDH !O፰ؐ]yuxKf5ձՋxm\4^@ԁ9Z`Ԡ[ؐh'Oue!ذ8lh\X 4|,)tUW3f̸*f鍍]5ƺ%`Nwk57xy⯮+PB19 Մꂮz46,54C]IQi p4ku^yN|#uRx"sYO%~hv'J}p /dDi?cpsJ>stream hTN0 y vHV U 0h%nDM}{X_byl^r䙽i1B2N~fp ĭZ_32e86{(K!?8E^`WzJvG ,BO:Aߵn Z6oq kJcuMH~u]zYܧ U4/cfDavCޖC 08n> endstream endobj 6 0 obj <>stream hބ]k0J. kmX "ڬEaKҎl*=yO 0Ewa23&l[mxq !JZtQ|gU] w2xO: NKFm+Ld~FϤ`rhiFd^eƩ FZ2qߩhML𺘤ڗ~ d7g6٭mKV@a_54~70R!왥YꜪUtf֑t:#H;&kȞ#C`Ṫ@a丿`RN endstream endobj 7 0 obj <>stream hTOQk1 +}w#ӻYus'l0Mćz-3 |IHBBRL&0.17͒{xo M)_F )+zr ݠC8Uu=EL+55_m۾~ !)qL̫Xbc{}%+䦵i~`bD endstream endobj 8 0 obj <>stream hޜ_oT7ſP$ EDa W4j]m }sHڬo=>o<^38o:q1& L2$b8gbϘn!Ï/޽~u|Y??|sA ڂ}i>>; r92j9OS)~J?//ҏH]_^?}__\ \8~~~~~~~~~~~~~~~~~~}xJ<²CQcQ | 10/.-ђ,+*)('q&a%Q$A#1"!! ёYGf9Kw)݅m7?ÞX؜V/>c[619SYvZK?O' ~B?oaNfL?ֶe9XǦVą5.,r 飍?7qz lAЭ?_|iܗFա'дpo4pZ{jmj7j61Ԧᴼbڥ)MbQ ?AԈtt?p#NCt<6G#)%1}5 5vk(h_''uvԳ!1}P!7~4vXؽCT J)'Zܣ;JRrl^|NsQyi0(uT.nrNި4 ˣ.4)̓Me4wJ7*G?!ԭ_'#{!;iH~ Ma47>stream hXnGԧ1=o0 99$qBYA44b|&w%!`'rv~ql!v',%5k2gÙ"gK0sd8L`;oB\0MɤzMbWL&ykr],pM y|g8l7|yg䅡p # E>sLx `*NZ#|S iBF"r& ;/q!y`搲8e8@1'S%\ dKF '㬤BͤPQ4A"I ؝(Dž$;\Hs4K|1\rss$±(EA]BH\^ys wj=E:tآ"lfg^^On6uޞoVy\oFv󏛓rOnsuu=\mG<]iR>'6i>֋ᬙ:OWjZw 5/6hu8;^9~9( ѷ mmm {T#QG0(aP A 5"oYsv1omhV"YEQ:UP2MZvRIӤvTQjIQjGՎAjՎk?^Vn})hi&z.^P?>vQldS=.I qMZ'?L[buu`'h=\;/=[0<䩭_:WhGhF#m7>Cv~`~zyu^}X^}|O[u4Uv?-yufcH]ר ?oIuYWe[X:"1il'4 x̞ҩudҼgKo`wѧ3>7Pn(C-q_y:&PWn*M\CiMvY?0o1?0@h 7j endstream endobj 10 0 obj <>stream hXMo7O=T :m@BI(R(h۾])\6 z}p,%wI 2(Q c..ޯNDDrRp?A0b(.zE(&ՑxwABRDr0Q^GE 4Sfh .e7F§aV/N_{=?9Yfod;ͼՏ˫~( d/>m' u'lslF;ȬWɬs?Cla_GgGշ߮/_/oNv~.ZtX`jǢ?HCY/㗛~mIr 7NjW]{l}^yuw/x?ii#_jݷcC=[;?Ӟe/'n?W<~Y\,}y݋'4N-~V)oIK蝺$SLF\Htg!SuXM7*_oJQ d]- + H b]!Z+$ vs>r9.]N9-N9-N9-N9-N9-N9-N9-N9-N9]Լ[ x3ܦmS{s}qj`SiW0ǩk9N] 8IػM]+f9q9۝s׷+oW_nEc{?{~c oֽJn dk*?2z4Xq3JHq+,;݊cVy;/dO+*.eGTDLEO=Mfd~F+\7` w0KmL```~7lxmJ,`e `aS090=U ;d  E* endstream endobj 11 0 obj <>stream hޤUj@cPi/7;CIJClɃc+kEϷ={e,f4{ٝGI8SRPV3aC0C2㎑аřX30*f|C*X9p9 8ǜ 8իjfwY`,.<8UBf.ۼ0m_6՛_GQ=ڌ֣ۼ2^>n'&N9/jH?ۘ2$P䄲 de21Z5Ye듥̗}B$w7J'DLfT]/* צ/I>eW=eԫzUOY=N?jbcw%JE| =hlߌO {c`z_ a 3`]T*> 3,N _u!iU!0(]hXGyaMI*7bؔ0j |'Ѡ@j'e=*0B endstream endobj 12 0 obj <>stream h263S0P063W02P+-(ł] k endstream endobj 13 0 obj <>stream 2013-10-11T13:00:18+01:00 Acrobat PDFMaker 9.1 for Word 2013-10-11T13:00:41+01:00 2013-10-11T13:00:41+01:00 Acrobat Distiller 9.5.5 (Windows) application/pdf Catherine Hohenkerk SOFA ASTROMETRY TOOLS AT A GLANCE uuid:084eb346-37cd-4609-9ee1-97cce4af58a4 uuid:1509c975-889a-4b42-b61a-d084eb152e45 3 UKHO D:20131011120007 endstream endobj 14 0 obj <>stream h26P0Pw/+Q0L)667)XʂTb;;; c endstream endobj 15 0 obj <>stream hlQk0rL;9DNPW2%W4E cl{9pN|74ҽىm \S{&wQ2 ͑xUP)#T*t|4bc;سd%Nh?!_3M󅎇c8m+t){WR@RW!}7*}x.oHB΋]W(l.@Z?'s9} 0\Z4 endstream endobj 16 0 obj <>/Filter/FlateDecode/ID[<325A784A071BD5449E04AED5F7BFD37D>]/Info 369 0 R/Length 112/Root 371 0 R/Size 370/Type/XRef/W[1 2 1]>>stream hbb&Fկ L L@B/` } 1U e$ b&` = m'@ꦂOy F"1Jqh(1CoWa,&P `G endstream endobj startxref 116 %%EOF sofa/20150209/c/doc/sofa_lib.pdf0000644000113000011300000003221512507252057015124 0ustar bellsbells%PDF-1.2 %쏢 5 0 obj <> stream xW]S7}C 3>9aH }`&#ke[鮴6W΄/Z~{ 'tݫtDPkz{?x1>7S9-`xyG`?TIQH?z\ŠN?N΋ק/z쑣g~HN! c zEv'˳ͫWv*T 뤎33LP1*( )W`i݌bZUlM}#%%]$5 L$[By(V;i8$jϏT59fJvjŪ$#mڔmqBWV15D>_TL,|x%]o. }$;lV-XYGi ~T]sLrVxk߯;zChgxswE׮GO4IWaHdhm 됖s6tAKk$azLw(#P0 Aq49uF0!&TA9 KplI#{vp25!ɳժPH{n<٘"/>N:ɪSޚ.zѓ*wLu:,5%X*[#ȋ-FjQ*^4B%D 6t+W7d< pV ;  ؑh<7Jp6(77uL-J3}>5R4B76F%pbk4'S2b F'FUa (Eɜa1Bmmn4o^&hI|O>U M&bg2 nL,O$Μ o*o1mҴ(۠j}WZ鹘E"9""ev>a  [e.&vebG} @Get44bVHG/ 󣦝9fI}ڹ.HNQZEzVT&K "L VoN" 0 aD8ҷ7j+&\[O\]&2Y!wC.ת4r,pE3r'V^fM?vy&|ȳ@ʱRba3XVV+7Oglo-jDo¶b4>ӽ|<ʔ' tLp v&hk"Kqՙ>rgoRNWt(;7n !F:qG= n 8g0 ČO2MǃCzpVWC4_g?h&\QOhD¦J0odpq9Ƞa|9c.*K,lTÄf3Duzkjw#j4)}ٓ'V;VyT_Ǧ^` ֏\4":hHCh\єSqfe6l G1c;.QҷIQwR7nd;kѢw#ozib;.:dr]endstream endobj 6 0 obj 1603 endobj 10 0 obj <> stream xVmoFίoM$@N;dlrͩec/xξX{yٗ70P_:oy _1uǠs/hun@}|q4 h*؆fєe1 9T r-# e%S1+ LrmoVģ)+Sw͗g]Žgrۅ4 $y7k.oGd1RD'[S#Wh($KS$" Ȩa=3ŸT.XN ~Stax2) E΢,`W^C:TQU9|WkĞϯȷՇ9Xü5ցLF.0, Cl[ˆ!/sݎAkL[\Fg{*WϰYj0z!| zV&_^NONT&y f]4PZ$eUK]tQ fJӇ)U3R"8T&vZ$=;_ X*ˍG^nWⅽg"I,|o0 칎!ade&V3dn KX`'8 >5~Flőf ƎqZID2+i?n FHTfM^ke67Pbӷ67}[As"\#qmn GVշXٲ̓@mh$fTwG} [i |w!|N2Ί.3&]endstream endobj 11 0 obj 1034 endobj 14 0 obj <> stream xW]o:}WJ|ZxĈVHJ}q uvNbC`R(h`gN NAp׍F7[E۽P]n~ qF_cG%ObH@nX䓥M~B+;=K\ rOs] wZ,I YbIH&q89CEw8)PZ&T D*,!,s7[jwl b4`4ɣ@lkW3#H[*$OhrhN~&oÃG RO2U{!ęA۽ʘl7>)y%[VhM޿IʵVIFUw?zPB#61'>4҄xDlHDItHZ 1xTW㉘e"ggʶ*(݋n {40z17D6/{S]  Y*9 [2i8N؊#XClehb֮)pQTɒ SGy6)Nu9791B砸#, m8I%hkSA"5|zd;>fv.xr !"N=@~δs'Z<#حe"F>TdV.үQT0Cq\qA3eݴ;'Pr,e׶w?L&OrRF(O/<vu '͕}*QEIU=#?q).˕sWHFTߵ.?~)a? dv H=2vxT 2C3Qr/jҭz TUo 5 | ~ 4]US1kqUϩ/ hx>)O[-߱}R-&ceahnhy_*o6YSaD@jCG|pendstream endobj 15 0 obj 1023 endobj 18 0 obj <> stream xVoH_|6!v!E ze,wMz=À/& ʿ9J{*xĽ=)Ja#x6p, 1^F}o/?L׃m2gP(KUD܆jUUpz?oo!tUy32w"=W'97Hg ׷6:OUذ<RdlءvHN{m &U&)J `YU23e[LguPRJ6b7uf9Tʐza*\$)5"ao"#[-z],%%evz)پwN}I*2n3+a :E{N*֛uaۼn EDuŐk74ϐ( Nװc4E[H;L> e:-]%#Y%Wjՙ t J-1Dy2$Aw2G~ʯAk$b~e^Iv;¢(izqn{pp @byꥹK29H"EQ7P&_߱|G9W 9:8NF<:6F`LDsg9cl%QDX4s&nG-K{zx)jϯ?mhgƦ]Ls\%1ŚxY="ʦ+ ._ PFMvEۀC X3uYMHȃ>ul\P[Os eU[Z6SM#CY>7\qt(ei-˜ ̮7?5TFJ@LSUoڂl2IW(`› 3"<kN Ձ_UD2}OX!XSoncAW^ . 2w|=+Od M1euvS6 \v._}nWHB86l+ՕѮO04䃶זC˚vYa7 cendstream endobj 19 0 obj 1027 endobj 22 0 obj <> stream xW[o0~Wʀ,:i#'KJTi&;4!si!׬OA8~AK,O}4S?tr$ 2VoLg%B8T؆n"!$<\_Ao3J@ק+NrBIt,&>ҟ~ƬƽesL 4Vѭ * A#w[vCi*h44 Beǔ`Ge4A eM x/Ĕ ,塣P}Ww4ViA1M%QY,A4 zuQkP>À<]k{wCIOˎ-J9t8VJsZGSbk.W*|+KTyv^I7^z$2KgXGvj;`fW ;Uendstream endobj 23 0 obj 792 endobj 26 0 obj <> stream xWMo0 W02[]>:`Wf;NP` l؀vImI<`k*Yq#)J|`? D _vz.n'7,ױBLn|>] Qՙ/ 6ȶ՛L<\_pZ* /i[p%))vylaw~#R1U&El v{bRGu4S@4sࠑL yvU+_dqf!fLd,4zvˑ s%d#>\6.v@_;HÑsz>_}86/9MX$ yYLByt1X~G h#N3\ݡ:|c1E"S**/`F˜KtZ 0n@.Ms Cm%mȲ%kD*ܬ+۬j]MzK8ÄqAaC) DZsx%q9GZb<\gR+]L4LV.F e0=ṯ U`; _VRp)v=shm%5,H5(yxp- X6Z9X+G!j mam0!YX$9z}ȁWTX5a2 2GOӠ}I/Ol6{8LNd%?pVvdY,fT1XUh3ea%Ň)Ppʠa 벅m\)jQlG@dPvSgj8US (`HmHlHk^ő[uEyJ)ڟ=3P H-0.^~Ss 8wgpu Dkendstream endobj 27 0 obj 917 endobj 30 0 obj <> stream xmO@) Դ^4^Gצ&&ڢb ROR) &wm7yX}yLq=j?qZngg>>;-{gxk8S|юQkj}{MG' no3-UhuȀ7 Ts5T9eHmr}\+[9Fg|*CV>)n#Uu]O{ܞ+^C{7|skJLeQbЦa {g''|f\ŏN>^Ǔml΀%$Ÿ_?'&]Y;aNzx#bT@=* R)VFPHE7RqUd0 !c;בkzIc4C+EryIOsC2"%%JbQ:eԖwM` \QTYtʊĄqm+EIŰ=bѧ#IX+7}6G )żU$[ (*$"IlUA[ܜZ##dū$MM,>ʩ M1̚3)3͝"kcm@ ԩTJ@}7 i_cvDQtFq@b15 +adTUhIs{z FU/LvE4IA )[ l_$Р4Oeendstream endobj 31 0 obj 905 endobj 34 0 obj <> stream xVMs0W&3jDd:%^؋m_AH"1@`, +iWҖ1 kId OmJjr>d<O*Z0-5GLwEOĚ+"c~_^ )Yr" #䰨@h@dB CǗghC h찷A[hn3ϝoRlt %^r&S͛PtL(ʸPgDj:J4   q YYOFYj**5yY㣎B>*yRF^Mk^5Q7Rf( %Mw0׼ڬ3doդu,r?`OwahsKfD=c"ZFSLZ\ >eج:+QIH*L|++72{!}MlOgL^1 'm!یeL]r!cbV#;kqS;S;0-ܹҼM),>=qFA24M}qVs74GVy-4V9]脷E"Ubg_r˄ff6sA"-&r$¾^e4KN E3Z`u> stream xVKo@W).rZ!.H UPJqهIzff]pqT"}٬E2"oM%3y$28^OLfLLgQ`I/d2N bZįQY {#Q(J OߟNo"2bzI\pu `cnG yLZR 8lXl~ݔIg1PC]*Ϙ%> e]y :wk pG;BI0 </`@;X97LwϽ"/anh0W%ّ[R8Z]FmP+vsvt5M 0,Kw3+&Q (EhHO$LH2TG՘T'(Kjަ,+(63ŝ-;/DEF?gvgO/_Aת)2A4{TNhf'YŞ'sa\ 5JW'O,zO(jjdf-4tѪLBv0gw0;*lbZ ضh5coSLZj-{١zHxƫlߨЏB; ݈"&_/W$VguV|gu>FL8\׋X.A3EROT~ ;hˎ=ϻD~:܆()HB>q zU@" щ$ /2,}x!"+x8-Po4rACJfN h&x1^:<h "x*aF޺yקCKXC)!'Ԯ!_{JvM 'قendstream endobj 39 0 obj 886 endobj 42 0 obj <> stream x? 0|j ZE%KlU*t(M~{_LjA^.w!#y%$Je d(`<2Wu¨i)T`.3/l~gSendstream endobj 43 0 obj 194 endobj 4 0 obj <> /Contents 5 0 R >> endobj 9 0 obj <> /Contents 10 0 R >> endobj 13 0 obj <> /Contents 14 0 R >> endobj 17 0 obj <> /Contents 18 0 R >> endobj 21 0 obj <> /Contents 22 0 R >> endobj 25 0 obj <> /Contents 26 0 R >> endobj 29 0 obj <> /Contents 30 0 R >> endobj 33 0 obj <> /Contents 34 0 R >> endobj 37 0 obj <> /Contents 38 0 R >> endobj 41 0 obj <> /Contents 42 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R 9 0 R 13 0 R 17 0 R 21 0 R 25 0 R 29 0 R 33 0 R 37 0 R 41 0 R ] /Count 10 >> endobj 1 0 obj <> endobj 8 0 obj <> endobj 12 0 obj <> endobj 16 0 obj <> endobj 20 0 obj <> endobj 24 0 obj <> endobj 28 0 obj <> endobj 32 0 obj <> endobj 36 0 obj <> endobj 40 0 obj <> endobj 44 0 obj <> endobj 7 0 obj <> endobj 45 0 obj <> endobj 2 0 obj <>endobj xref 0 46 0000000000 65535 f 0000011704 00000 n 0000012187 00000 n 0000011582 00000 n 0000010146 00000 n 0000000015 00000 n 0000001688 00000 n 0000012051 00000 n 0000011752 00000 n 0000010287 00000 n 0000001708 00000 n 0000002814 00000 n 0000011781 00000 n 0000010430 00000 n 0000002835 00000 n 0000003930 00000 n 0000011811 00000 n 0000010574 00000 n 0000003951 00000 n 0000005050 00000 n 0000011841 00000 n 0000010718 00000 n 0000005071 00000 n 0000005935 00000 n 0000011871 00000 n 0000010862 00000 n 0000005955 00000 n 0000006944 00000 n 0000011901 00000 n 0000011006 00000 n 0000006964 00000 n 0000007941 00000 n 0000011931 00000 n 0000011150 00000 n 0000007961 00000 n 0000008862 00000 n 0000011961 00000 n 0000011294 00000 n 0000008882 00000 n 0000009840 00000 n 0000011991 00000 n 0000011438 00000 n 0000009860 00000 n 0000010126 00000 n 0000012021 00000 n 0000012129 00000 n trailer << /Size 46 /Root 1 0 R /Info 2 0 R /ID [<125AA881409CE49BC5F37A9675AEBF1C><125AA881409CE49BC5F37A9675AEBF1C>] >> startxref 12379 %%EOF sofa/20150209/c/doc/sofa_pn.pdf0000644000113000011300000202617712507252060015001 0ustar bellsbells%PDF-1.4 % 9 0 obj <> stream xeR0+hxCo[u#RZ-=U=QcTT+{3^C|`Zl )Kh kCAF&h?ԗI[RSyꎺީs 4]$gU(`UDYxB(](_b7]gi Ҩ).rJtߟ^mS\X+C.e6oe*؉n,xF/SN]dd Аjjj>&K0؅xȸ-xprkmZ;ߕIs]΅d1Ͳ` E,*[٫Zu[*v*, T` N]dc'fxU3[2ʕx>{T&C?n6rks]YVsؐ9օ]!>n\q endstream endobj 10 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 13 0 obj <> stream xڵTKo1+|Ñz_R*BTٸ^CB8ֱoyL ~ s6t԰vŎd"Ka;&>%)F3NOoIQꌾSDaFCD%AOd'gNy/iƛ;is:\uoz N֐̒!JȆα1*8t{~$ ?DrDsPfIy[sqM@/zPPǗRnnIgJْ/[u!s&/8Gp6[H[o"`I-𸋾[[4^w#TؚծINH^?2F~'S\(xTMƢ?̭6>82Hz[t$k(ltzwg)۸R ш[$fMD*K,K \6|%) +վ+r:EN߇rAɫ,y ϰ3i3&!+vE3@H*4 i\㮋 d=Sӈ{zUZc1`,DYِER:&˵.#'L߅@#jn@YYi4*o":VK@`?]v+ UkO AKs.LQl|[#hpⰸ]rI\9> OËb endstream endobj 14 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 19 0 obj <> stream xY]s6}Q>ɵINd&NC6d޶Km׉=1 $=sOtNrqgt~H+w9CԇI(G-Y#!> t5/s3;P53s<, CPgPU0yN/QdV7d85|Ww PO/!W@npSQ8H Hl݉syYTc>jxbc(:%޵$%2$l?lƬTh"E0:m}.XL$PYUIBU]xjcBYT.V-J8YUB_!Y1o_U-+E7Ă,n\D@A`QOiICy~* l jW.C@Lu.c9-+5^oDy!d66}Zq֥sBqNfZckTO Q 2Q*R2^[Ru&]EZTXv2L9LÔ0J)k%kTY+3Aܛ6"'-"N >ua[UV},FɦpTʼy s>z&-d3>Fnrn6'\.J0^mb5]_SF^ ^똻(U Ӻ6@} ڕ P=Xxm#ߪ.ۆIJ4CrĝSQ?bl.g t-"sU2PZ'1Rjƨ{ؠj5lRym%/T߂UAKLkf:G֯vVZEY]Z媇fpФ[ *(_P;}\{#uؑz"E̋T; y Hb!U9-f %,P_H~qrd 9{1U(َmzbK+/_U]oiȚO|/îy|͗` kmw1`8 'F2\ڪXo0mI[e::1=]!}B6t N`8q'!<5He-5ܛL`x܌wSP endstream endobj 20 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 22 0 obj <> stream xS(T0T0BCs#s3K= K\}7C=KK4#= 3]cK=CHJFRNb^FAbzflkB  endstream endobj 23 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 26 0 obj <> stream xڭXYs6~L(r8JbDA<ﳋuXT$.@y<ǽ,+kb=EPxǹq<˿=Rc?SbQs( 쏯G{Ee~>v&l#XHjvՍ"!Z&nnOrf:, juoOx=<Ņ%]9gW#f l:Qd&ဵM[?"yG vFa>*glJj+nfޘG~B!kuq̲Z:@l n;HCZtM%S4N]R(q=&Vn]ZP[ĕX@0X8~mv4h'!8(06Q6ZqvEn$GAk6 ʸm<Թ; dl #.(% >”]-:ސD~AgL0u9+)p;] 8jb2AzvuOZ.|Iiu~N2ɫ$&mWp؍jZ^J\k|RwS✍f]ڭvxRPK,drϖ/`ʉX:#/OiI/l`r- QpJ lۈ|WKMѿiV^j+Ki>\-M:3ȿp׫)EG#zrX ~PX_oE[X DNrbK/ O.Yֽ)[v!I8q e/RɋCSP\R}biZٕ|_F&'ۧ> νϿ} endstream endobj 27 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 29 0 obj <> stream xڥAk >G=6^m1Z]]cf ~B( i(\.箷\/s[';CTSJ7r2|VZMUK( p:C, <DZu|~+mC=zen4 endstream endobj 30 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 32 0 obj <> stream xڕr`bJD}R6ʦlb)SVkPfR0~ws&Dof)/??nQxRE]qy~ Ϗ&Vary4 .{?lw> }_>~{H+qx2}X˜d`Z)6N,IFqC%6'8lp'^ےm_u76ɃW2 s ̼uAK$U-Xi|VMˎ ϋ0c<}Ϻ}e*^z_$Ȧ#%m`,<`7XRx+=PH繵 N;~v-u#G9a~3}{ ( e;I`S:y"'gO[TR$uSKxrnw |g=|~Qpy&n4ߘC͊ V6Xn 36#3(, E>يZAeUcˏU{js1Df ="7/^D;MM:Ϡ79cdp"I `u?q2nD)z<&*ffC J LJw֠fݦgDx+ĮFZ*vrBf)f8:Tr8ܲX̯|3Ιz J6 1 p+/i/l,&ݹe8HdIſ{sq׻%P 5o>؝L{,D"1ЖY(uu+ߗx!j3c_ 5#hP:' %-8h@"މƞfy5x:v0xc`$0"p& HD@Vh@us K{nG2"==q+~Q~b߇C}84d%"3ăta ,=qNp 1LJ[iN‰;Y ]b)(]S9w@8m0n Cw#Ks50^ KFFMMߊ*pBTRJ'+^E&ዂ {H A3_3Eϩxʹ{z˞^#lY^|Avc]aE+Zg;cf. ֗]a V _VUxUMAWI`[ީ|q<#xu~@|(;thʈ/ŜUp6u,f>{壶rJ$2caw=${#y غ3dDW#d>-XJ!@*`7մʸI My:P@GN׉ i>#,"ni'kqh]euKoL>Sjɏf za|ƾ2O)JaT",[LB8#Ãg}Lk*N0_t J"q. Li٫D(L`+k,rk>q=4f^!aw)LMͿeȁ+"a|uU)iĢGw,5X#/mP낋]S Us|jKp / ЕqfȒ:Ԭ0>6Ҿ`lz?GRfߝ8n_[z\!mq`$^e~ SL endstream endobj 33 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 36 0 obj <> stream xڍYIoW-l@͐6>َ=ь1Fl9(JdI]6bYy[I -7ś\m rS6o6z7qQ{8wA"PE)!ʲ ޾]Ǐ|mw>&Sv.I"vQ{[ap]";2AتqUL4ؚ[/3]AXgH) D-H.=^2[dߍ=d>h酈TX3h:*gPXgy;v)b޷{hʒL~z%>0/T]9' Sy@`tD>A瑫Ċ?U n0 6K+('^`dp0?E@EhTRB|O ϿdE*i#º4 1N[sxJH+t䃸Cz`x0Z%Yș y(Hǝ%|W`#9&ǡ#xN!Iz _'30Ϩ}ss ]J BЅJvhVy'f[@RjIMLN'{G3P8+oqp+Or왱tƩY7\>\ yih(JȔD+xKv=%b)HաGFYHq@R l=2 n{K<}ъd>z1!#ǜG "Wnn,L V-*4y+h7L%9` ϙPϬXS4&y y6诳@Ihf9ST4u/AX6H;S|l _Uz!U'M%ĪT(tXkY$a/=N@݁o)@YȢ-*O "D!m⚏h9&̴\/3* ėO%6wU%Gbtl= Fɔfښ]%$N0: ¿0眂 ].~Z.~&m;BM.YOq U;/D@7Fp8 K}I(`XjZ/ܫq[6bތnz>o?}fҳ <*`KWQה~..%}TL 4 \ۄqO-vp<20T~ z w+:,BTFsZB\|5}lʕIgw竂"P«S)KB _)͵exD2 Qb]5Mpx5岆\O 4_>ɱ_hT`$= *qbU!!`0NUpK8%S~vŕcKϣ<Av-O, Yñ3APn@t+݊;;DxCVg}A2ɵ7Z$Y&}~HCwHCwpp#6YЉ2q {;ɶ Q0t|.bqI簃ĺc'.pb9ty\1zwZLIa³jrf9Gj+)\:٣Yt:Јĵ]^ff$*FJAA@̻nϿS'Jnx N J5CP,T7%d PM-[ؐ7XHq.Bgxm$ kɖW%|X-/*!: AoVFYHJz|a8]RԜ.O8];_^-q:/I0l=͉ CfPJQ&D;gqU(@ On.>ldEO$ee^p8Fa0ߦ|m(߁ Ymu~V^R VW!{%wA xJ_g/sn?XtM endstream endobj 37 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 39 0 obj <> stream xڥYM6WrY2fMjv3ӷtn[VmHr:_$ڒޚi~$S&2Ddl|mٷw> ~%S_IׇsWէZ)OWP]9PMT6i[ҷ+`'줵gL>eL>{͌cFd8;fЅLJcV(δp` XDV1 !Ac9οFmt+9qo\+ˌ(@g•թ^I1p61^`k -`\K'YRzD-օwL_BR/(W `H) ż3X{[wwnwȧJ(Y\1953~*l\o/qIN>-W7Wa>^0yyOqIKKc@ ZB^unDY2ǀ):HEgb`ڗf2@q9|:Fc:9^黰 ?R-̖޹qZjpL=զd ~ݕPR\ ?BAsm-֑|f *P'q|OUwޕч l?*f"  *d(@9s*:@GI[Ag (xSb9ǼMfLHB IQmZj*%^$'$+]unN} 6<V.ʮ+tmN;q/IXk(~ Q2VI8WboD!p aʐ%SH!v"B.#1\AL LWL "F8a/rV! zM'\`ҐȿԢBdʿwB{wV61' Ԙ)Q*% 6 j`G\EfaǴM{6!'+u/kc+ JehŘ۲ nRK=*AA?eDž)ak5ħ 1_M|- cCyWp6#f[)eyou: fW6]پ#KS)_kXi _q6U݇t"% ~XqaE#aK^V?$C ?Pmrm"1GU!|P{'A1p\m͡~U~n3}O%A #C|*ggZ#lksAȖ /rC9VݞUFS҅Z"VbK-5:a~MЛR>zg5D䧺#q E;6}%邯JHF綌:GjzFYu,s g?A|RCekŻsXYi}ջQ]p8SS}#N-+=;0X*8MJTWITO'D}i~L ๿9Sm9*WI/ endstream endobj 40 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 45 0 obj <> stream xڽY_o6OYE$E>>pQ4hyW JI~ג6Cp0G?T)bQ ,RLl,)|4 ݴp}3M²[,K2DkdcY 5(5nf"Dg8̜:dNs.ADi {Li( tދqHڡj$n% tlF&)HKq*Ǟh<kZVWSO0L  !o3-Y #ؐ1NتJhYȊ_ouyՄ,Ki8cT Wl$,5¥Ĩ=Mc Ci臮=CW#3`Tq059t!%:-T8r>Bz6z!šs \5+3 [WO4%H* Xz?TC/F5fPX'Y"\DXA";WC;8-M8ګ 8 #!y+j+΀:7zȧ9f-#YCU4`7gnPT |\GLt[)RӠ%j E_b ;6V9I0 {GN=bmWfIzQ#a -͂0@!{k4ۂXWC"f0Sn`R/ Wʠq=4584 +gYz&`qƤ!Š}TR4_51m^hݐ>-LGXnGFrXǷkyCj {#Sᑦ>ew/e4iO`Xt -KPs_*c}JwLOw]C;|#aă{vTWR@.n C!k80knNA?Pti'jPxf(*d6(:Fa4I+d-am2Y_*hxmHh](5yH &>tEGњ)z'jgTz;@feiMېego Ut;g#AYN_iw4Y}QWQ%8Uۢ*>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 48 0 obj <> stream xڭYݏ_a2Vm+y+m<6NR6|AI>T,"p8^H :[:ԋiEuR/XeUQU$IxUч7lB,ʰD"hg뗿=DѢ%Lt"/uXeԑݵyhvIBG/K{0F>N[YY9N:;k|w{ \Ti}ˬ^ U|4b§,*D2єYdκ4LY+}w^psdn?оhDWmδ؋} 01\1n|Cr, D%B-2zHg3ebK'QF^䁥OWeθέq;+w.hj3O/ʓ, ;_L+ [^^Qw{n t'('*L_xwA3zYly ;ZoeA/3}BzRO 7|tVS&쳡*4(LJr'4ݳgY3x$K=4i,*pEs6)`6 '6lXhw8g^s1O1Alcy"F'y-W%KgliTue\7,MgyMfBLgn5?Go8 ¸I\CWn$ѧU/NJCKVYlpVO;Ouf}ev@~|˱X-Sr5<='af鉸jp){pps?8>Ew Q\S7]^1NҹQyfk#?8\zV»K":S0BJ%Yp> nZu\\/4v|I~MyW$k([ d ֐E344, Z_!/i,ptE?(oDBAOlu.% x{sR3/$eՔXFMz퐥o[J M߽3>*'O<;s tJb!l֌eϟdv>`G'/Ftƒ"R #ES|e@\o֛7&qCB&iQ_j;žFB e {(4!$UxAzX, 8Yk8I J%$Gjr>B+d'h^>-\ 4uQsxEј(P\^|XAFa)۝ KlyW@9̪f{2oj/^ĉWBh "SJ^۟?uH$&ϭur15$DbRXN8Iˌ -9x< Vu#$q 9]$I\DúDq8^M[q4U7.EJZT"-Q}Eʋ>T 2Ӧr=/y ".%NMJ }^TNqM64ʠl-{ fvQdջyY9DkWCo o:(꭮Y\Zb@M5B,8@ڴ 4(Ҭ)Hd]b*+.Rœ.ZUiDa;yμC bm*%|?*00nyسR#@vOgԃ4*)'#0w־m~ %<@.t@ nd P8nIWq!Bǖ !(PZsC"KzTr0ܝa7NtCg4ӼkAwMGZVfI}}U(%D %(An_ޣm r ESwHVK^\y^N pm eJ]A`HT)[n >)QkZF5l~xH{Eqnw33lF팂 4Ԙًx)3ja|@m/lUAKZgQNJ%sXbֆ&ɪ\9 za͜˔kc_ycP"z9)J*h$H{%~0k_|YR4V ")BgHKH'25S$ib7(ma{pNJʑsO~wOiFo" @,5Kd=KMo嬛nhzM T- #yeG?d %ڇcDl8P+f]O- ;"~,(@t%iZieGN:y϶X1cEFBpෳ~?O(\>j c૛k}^#/?8+'3=Z $C+ۂ3'#: Zocpؿ_Fe*6%eAmbfl[ >/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 54 0 obj <> stream xYY~ϯhIlsEla/0<1m7gZZձSuLkm!@Q,u||M?&KseF*PLt;w+.Wwo(ܼo6 n|pE)7۝ɂ=uѻXQ,lujTal`UlOÙg8lbDg,VƧXy 9:DS@`CAx;dJlCg24A?,d" i? /){Wxh_ݛzzJ'Pïk!-AXb؀+)ó<8p>AY24*Z짐Lz߯prEx\dQnB-&'b &RL|"a>;anqH 9@S!V8B"  6f/dE0HЊc'zVZ IvD~\Fw w")=PZCpZEbQ8^U%h3Tv5Lj|$nPNb<Ɨ7:Sq4"ǫD"=`0T_ϛOpnP-." `8d M"f v$;HD6i{R]W1U;5cx A-KDN/^c\ D!Vps:9J}粪x h!)yhc7Y.OYۅF{q{S^Dw@gl\`ͭ+*54Lo]lu%G ח'a0x*AckʟV6gn]DžC# g a 2Uԏ,/% _)4UKtӍѓ S2\b@jϔ ZJs="Ȉ%x3>Cc*-eeZk*~΄22Hr!pi>4dsUT6RϬ_}輳@lُLu$qtP gK50ؙ{k6xRZF3;*=`:9q΋8Y̘/`M 44ge ^!X2%ƈآAb:ۻW9|QO$ o !mN<>,Kn1T& (ՆڗS74ݔCsrJi< [͉Ьl85Ws+.aQ9UyFV2~HUxzC:Ț8][xɀ/y~N{ˬ R-,OȦp}5yTEՉRHQO1&,zzU3¹ ^YFjCrr#c]G%7A.|X vɎ?7 xvs'ݟZ^p&WiyGBr훪AXaϯ!SW?{zGAOq8w.D ء,.DKW!c=dS I)@2r;հ;#(<0NyGלI?8Dsz?Wc Z0 Lb:`/R)|2φDhV26yH@M} nq Tmx#Ѐ6/=cfzb)lwN1)8`矄x&oNxZN$$[395x W)sӬ M˞e틵srE7xj0v`X.EY>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 57 0 obj <> stream xڵYY~ϯЛ)`Đl^amٍwذCڦHvf}j)qgGuWwuW6lMpE,-T7w?7aA{]տx_lwaAowJ)ҍFS6;ިy/hv_Q0܇V@ "N%~ě_ gy.ʽ@cm̓n+˱8L{A)L;&/-ө I3fb1@OQ2i yietóɣ" ckVwYP7H{cOߪl][#J*Q~+U$S8QDmʑ*֧m]+BՃ==X7S%/E· Wi/PENa,l~׈2{ܢ(q6(m^=woZp@=.VwZ7,P~I#VE&×CՏ8@ <@IȭAF(d8|4 HQ"zʮQ*֎RI&k:ٓ/$^$DV{wo!khZ≳5Axa<맟t "$hЪucX}z;% : 咻j HcQ)yksSd{0^RxyKzJ"r>3A/(AUcN{0y, z*MM(+-[$*σp?Ҏ<"1ZC]M)BaDh<1_O 8&sHRꑨk&G]@H :41#{T][-~Ky߳*DI0m>-W<8Df]fRvo74,[Se6$H-n#Zi?rBpO eh@RYsr0\߅c5ȷf u&{ԢhR4PIVhuEGHMpnuGBnbjńeA@cl]b˳/+!|Ed!a BV\dhA uӒctQ{$2)ƋA mۍsv umJɁvcT_$<:'9pdC>? XHօTSogin3\8PrY U)1NH46 :M]76 ]cvjZ'k6o% Yo*łw-h]kxcߐuMdJ Y0S) G6* L>_†t^KAh񴳮C pW "*$3ZYfNjmp)H: 6Xm3Pv`x p[bÞ8F?Q`J.4BhLyG}ГA< ~'FZ_ 0t.LĒg+ͭb4EVO! iV}nJ$~K'b?hMq 4'WSF\Aq)ItRnQ"~Q6q7Fd`rcќz/.Z905kWpG`5[C6l];+ `u[)IĘ$%e0FӗbU[n@5YRJxgZ6l7Wo}CFGN|]Z$l냕L\\r$r'p #ݫB1$KwKlW!@+@VC)R\` >״Êd+G<?h[p$3(PyǓl`U0IY?͔q ө1LNLխ 6IK(U4CUyfPS ߑ3?wN,J}R"U/,w(O88\Dhvwd#a7-8 endstream endobj 58 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 61 0 obj <> stream xڭYK۸Wrآ#/xv;:V#A#)g_n4O)Hn_wC@~"HdK`^/с,Y\L`-|@(d$Y)leYݛ<͕,G/_w_1ـ\Ei0WKc+cEH;7nl y[x|@ŌKG~$%813K'$Jń:jӘr&ӰmP73wEi4eʬRՆ:߻5wE&rM/ ae9Ica77OS)صbQdwd)5 ӥiJ)Vua,w nvi|GE'iM7"o :pjtsb=4/W'C%:5ȄCOPXj皏-Ybz)bD##'dɥ1=i9EQX8vKCuEJXLLtF`Ɣ#0$^aAkC1(iZƲЯ)K3dH>HH1QxuVe`xwycMi>BҼ]'>s) ^%mCSjU)Ć˝R#5 UlQRׅ?I3 UP0xa6_.e({\Ҋ)5*6✤kLer8S+BTlLMv'*?la,ʢ!gnYLm2=tE/yCll6UNJRݡ&u8 ُ;tdq8^^ϡ"aW7Yh^XC{BJxXlh ,G8B\Ds =6\l9G.3F3?ivʸE@EP&Tsf9F0t` tFBLuP>x Ⴆr󠪺:7>|zd|S%5A=gc`*> `oZ*`MJsxpGvW9IQ}lڽ<¬gFl@6#] UM 7n1kҒSH$-%;ɖ ,O 1OMr6yI1g﮴Eal`NMڵ[Tu~"q)!ߴs5yS,|`ggy-UT駢Hݐ"!w⹱ڜh\ spLZPwuBcYGmۺLQ[(~tmۺ@.lWpH!U  8oOb\y'-je5-#U2J ָiO\[5Ytd˸T/V3E|nJeQ 2 vD54۞[d%NB D8.y\GWR3/Ɵ-Gt)'YfᓭS8){/:qA0ڄ`\=MAfKA^lIS{S9 7Ei6E#"?U2] DͰv8!\ˮ^.&eGM]v's]XFwOsz{$d6gOwqUie^q?t)v8Q>Zh/g\ץp>$ ]7@Ѿtrg8]MM9CP~X]ؿTH)ݻe16d XN.IgIw[+p7#:F= ә3O2.$XUδkPRBivON ˲rO(v 25ޖk(ӘYN G8'h*.rX%^5b |5Kd$}jv> u<7)H,%aN zm^ee |nvZTZƒ%XV$^z޷bPL+Ft2\%(TXma ֦9uҽbjitG>kfȮ8/)@y+ endstream endobj 62 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 65 0 obj <> stream xڭX_o8OGX(-uZ\ER*>pFe+i=9g~+'WZ&Y*ջl%#GjP!f j(7u,uqЬUbmoD{LV H(B Ddƭ\6p_uIJ֡ʂhCW'lO ok`qHS}l) GlX^)hDhqBDju3۪_e\M$H~6$ /Q# dWECsE \4Q|%n'MpK vp{.Vmsb&h+{-'"IUHʐ! 6Fh e7 oI]O-k͖@7ҜP P {F^dŐ*@lv};(a%;^L|{`{}=f%Q;E*4Х[Kgn&q[ClH ٿ~xRz[v[ᾫصf-܏?ibO|LOm^E0'._$=*,K[OJ?xW/?xſz!"tF@'ItpS?cTCOt. 4̲n;;|Zli0ONYbѠHڗ~3X!m%+ |U.HhA-XI=kEO3& ;S 싡_iL7Ѩ@]YcЉ\J]ގ{.M"7\o 'C{RJ%C">o$Cj ) A($iB\2hۛ9ײ-4z9f/sd @P%cv#mL p^v YލVTlnFy(LI@]CLTMR@$Qp=Eqhq]WlY&zߊn~s(,Ttp_0iJ#M$ӓtDHD̺筼虼, 0-O %iO,lP裷* }"\iQtGT\N`dⶮhzq4 N: Z}厅ѣ/>m)eASD mؕpf:]BKITe(c xm.:Z/F2ss#ҋ֒xiB SOTO" 1e3B >c:ح0hf2y,aFPJTKiZHy*'3c\@pHΞ7cx֢,ԦY wFGC b,؟%D5 Ώh|HZEn;ʎ^O4ŹQ[8JyYqnl(dd<ڳR'|߮lRius5hiI1UQdH0b+xjb}Ѽ: pf2nLJKvRoص \̻eFR0 5n(!ZZPbHԮLZ ] CSA{1zd'%SI R{]ϙi uiE{^P}na4Zr=jL [/&\6p~QwU?{Ҁf{ļQ1O\#!XA#ҙ3-t.O?VTdJy[1w/0j<ƤB Q߮Fs֢aT6A6;Fǹ%/J:tz"& 䣕)~2"Bӯ?O80*.@>rؽ;?9c#xOO<䞵8()zl&qH{fb%%U`ėݬ~m3 endstream endobj 66 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 68 0 obj <> stream xY[o~#F{7^Zq4 ꢠEJTxߙM^)N0`-73,_|_bG)KE[^/~zX[l]Pez<ߗyePdZ[]i=)?A^-WV7>k . Ug{lh=5Q7Qu~A|Ps{97G, ,,|9ޢJ ;t+͊0~M)_ 5s4?ԕ5^-ƃ)K 6?g?*iY6RVVx%cSâ]D>}ezd>SL eo!ώm\)tںU" SaU`E֫îtO։Z0o*4McIBSxFC 8Zd!s^x¢PL 3X)(XpRT(msIT'W4(+d_儚ǁTG՘VlUwW4&8E8” #- m06E.jteK"K^uf` ]iL7t@js[wI)^Z!mLir4j*szEWB=D , x5SOV2#E^VD™5WG?O?@:3玨֮IK KVKbpN%(xh($$hab-i %_l .|L.7p䒌ge i4B;BǸU7-ij); =ދ C0Ļt҉,AJKgUMEv!Kt|Nї͗R|əg%/{Bnʞup ?^+A 55G6ˮFY_Hk4I׏!S S%QM0i\ ȳd'Rd'o {=l9%!]8O,hr 兡FpI# `i$f< iXLH>,1f3CQnGt υENGNfQ]./be fQ/feN-+ +Ky99z0yL=ki4l#VTA 4dLD?ȷ'ZwIEX V8nml\" {;oj<:̴"Y8gB 3_nApJ{JbFno=G&-2 ^V`A\%Ti%t8䉀Ig eFP9Sh/ Eץ~O$Fi xʐ1RL0 ^>7tUŃL(mk8ayw뺰d5LI0=yùtD4B6šwD5#<}ilC%%ˬntvWW6כx 5'/ ھ>RD:P qĆ3QRJEZ1;20iՠ(vwɜ'D1ыCׯY%{~=ҍ1420 }XJS\Gv i.fe[yC1S[qB;nՉ0 ڂ\Sä3?~##?iHҭ@'( X6a]϶8*h;L1 =IȀr~U}3H$^ endstream endobj 69 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 71 0 obj <> stream xڽX_o6ߧ#EHQm E)*Ef TG[G'@@ɡЖ`Pݶ5>\ːp!x&v⻂ku$I iiU7` @Pok֣o5s%V` Ur.Ўf<6t3ʜȗE'd?#e=p,=pO}bx 3|$4ħYOMAAM/f L*?H Bф̢rEN`R(ؒާLU|.3h"duȳҡih`29%Hq{^YJY` !dʼۑx!v$X랻Nʈc3T&5?Uҋڵ Q#KQ^HEY*tCr_F GME -v5Pl)9& f(UW˝CWW8l2>I>}[1+i\Ů4琒] !+R˟[;f i Eh:hJ =1+<':p=bSFmN:t( BsɌ'mU߁f7贐*o32*rڞPt{xbxLcz#A$K&w9Xk.2^߶4IJRIœ|θ>, |mL Yh~sO^7 kB(@> 1ϱ C>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 74 0 obj <> stream xڵXmo6_ah,D>hq 002 %Gr"@̗{iv'I*&iY>)֓w'ф~-Px"y8Y,`9]Ynִ|uVֲ?4f[5jmt3;[<I`4DP]3UDHxh9>TH"Wm4so~K3㜳Fxy(AJՅ"eg^_4l{dp==9h hBߗUGY/S0Q7igE@hn[]BHl*TۖM홓}';f֍aTNn,Lo mA4/H#=IQoniBx`Νiv{e=PvN5o!trj5V@鹥 n2[ͦ8Qj\Ԭ(CrV7Pohr3Q͆.讯fn4 a:fsxZV4ԍF{W#SE¬ZJo.FrدJkض ğf&?B2WpIMu [;Ĉ߫?"*RnNRc? F "Z峱&C7;Q?D ϳXs?GbLP\~賂4Y_/4 ZSPZBge{e3y j SȺUtxA &+Gb(bibKDȾ$ \/*{پ.~-ϳ0u8jn0A~sf 1j(ƹs_FqnUμ@-%;ۃC;NаjrG{TywpAxC^ФAOvm|6[.1Nf/A҈Dp=Vki# y71JyS1r_t5)\s >@#I_Nt07 !;`s~h 1& z6Ե6/TM}WvR aΔ.z#Rw}R`ED DStg'Pԇ|oJz]^|WZI^ 񝪕jn씭Ww-H3}3)FIuBWi^H͚87UٮP&Utc׋;mUޭL*W%c!t. ŽĎ &#'Stn 5@UcpœER-[qm5jTPNw~ }5N9۶m;,5ƪ -/{Bi>Ce<0ZjՊ֊_2~g#<]j-ž`:;\~-D^]mҮQo +v[U7Hޮ|EMiڜ%C_Ԇ; endstream endobj 75 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 77 0 obj <> stream xXr6}W𑜚0^NlWΤخL;l.t:~0˳ݳr>8 :)s҄;9;C̗N1BCgåW7o˜dz3cF>049< cχ Qu8zЉ{,qgOc !I9+ᯋ`ڰcJH#E1 '1-,Jx L -2VN=6KI[hO+=7%, ,Q%cC1t|qCos͏iHx7y=!_h\S əϛc3G{s;t!OdĬb"0 ]YDO\zR%bn7ת3lZ`P m+jI=nhlj\, r&vH]rQ=2B0 ܒ*Vr$Iaz +eV!ԅ}}D!?AQsD #ϧɛ6oWQaB UދN~*'()j)ڌA TP9ՍCs&d 6.6QYT̟8/LpjRG窳J Ҽhjm^b;QWQB>@7ށi򏊷P# c }YN?aa4J ss![E=K{;#DY6VK@].^a=PCR0hsezt5M@C#٢0wMt@^5CMM?zTE:_犳`ŲmVλ^P֢m3Ler!2%,Z&Ts!(3t9ޣpJ<.(2savaL­r\fu/ArwY@F df:uF02-[KGmQ>wO ĩg ۲|e38JoE[g7A8Jv!kڮ}֭YwHt|]ҚCoF}Fɓ |FYVM7$Jw.J**$JS3aCCEJUn5$B'`\Jןg'|:3Y"QbfU,wTU;;Rh %Tt~eR!KP0KMF"͝O endstream endobj 78 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 80 0 obj <> stream xڭYmoܸ_Bfy$EQR~p|v.EIP"YF/3RҮeA8"g3<ì>Ċ?*)KU_=߮~T+Y$6R3ſ$DrHD ޤix]o0 ^7K>݄B17b r;ѹ8n1Z2_$6Av8d-Mk|+,LkdroP/nlQ'j#%⧪tyi37-% :;ЋYRg8wxW1:KR=XAp8,slWZWlM; ւ  }*kI9xrǦ{8?v,1܀+ k,;G=O{"st 0 ǁ#Λ@ItGN t1BN=XeX:lf/vq5sz-i-f{F;P ZЛ_څjwf~Krۑ9kn 5TͩHH-2T6"!Vtڅy0-Ϻ.>慰=8&Ϝ, E>FnnU%Y>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 83 0 obj <> stream xڭX[o~#X ȁMh(hjlD//q=(-€57Μ9|s."?H"MrrxY:Ty/6(2*INu36VYB3놺Ud`_m Iзš{h}sOwןnͪ&?-W& ]`bi28k%~sO/F1h%ߛOjz})Ȣ wX/Vڪ8 + \+6 Æ  QE_5 Y*@ixL+2,1 I8ֵ,ꪤ:w,P*zD1ZO4cPe^w 4 n:I@Iq̨Q}/(ADO+]ׁg,Wy65A nqdbodF(WАeo6dj 2w]_chvrF ݮW^bI5K0\J71U,|*߷ڃۂ0l F` UGU;7{ɚ0h}Ѳ84Z*` 8qaCY[' tKWEwp` aeY=Nl`6}U%g7kxzLHQ(ϔAVID+s~]0wLLt4mcbɂWr-#屉ŭ N}B.~Gl@DmKn+q3.31  C{:[ ùkG#CJ N" 0J6:Fus@ OSܴcxs;β,[_@ԦV-F=+6`J)lc2A\kԮu23'C$`@1LaTlD*\ hb(m0ĺo7ar9gCh4/Qю$Ń$Qc(aT}~T%lHxfǿϨ>W|B8o:F1IĘ `ϳ*lsĈalO}AF+Iv- lGw-/X}.Q"fC 2 aPho7٣P. }0ei1l.ax>*]h_%17͐?_N+ХgPFq*hOxan* شs@'x?-^GM.;sg(R9s*H0FN$` 2pvi5e#k93E139Bƚ kbzkz'+3Vx^+?ذH^_ݵ'*|tG_':c~P@.:}@7'ɐK+׻njS'!tݑ Y+*M&o[[~` 9 >k9SG,+48L#)Oõ)OÉSvn6q*8klJ}5dIpxmUŸlyҠ4=7\ dfjs@H1gXi}sH6йrvRLq} ;'GQWūGjm25r1ѫ2EQa:?EZdb+ڥUGZ, ];">ɂ|`%d4Gp`dc&O8q{s:D]n@̸Ԉt+eq6pߞdz)/ׇp*\aMaN,+ݗny@öWB80&#}ReVe(,W% 4y,Ktbㅤ4[ۙMJnDQ[r:yQٓA4/^1fk߉9$*'7_ endstream endobj 84 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 86 0 obj <> stream xXYoF~SAv]b)V,Qh%:w EŔ,'€9ڝo.7x  "x(qGD%",HfDNNC8HJ`4q8꟎'-1"&T2zc,\j/ݯ^DuXUڬ0_'ӕ+4W2 i+|c/2 j)mp$G 8P(Vaw@US0fbmXRbˤ<!-1HPfI)KTDI o"FID C`Ak Mmqu,!Т9TNtTZܟ DcIаGGDGA5cD2˴2!%$p< hF[ln!ɳriRYKeiSYiEbRfm̂µ65=!֛K!MvLTg}%ꃫpjdt20O!^$Dxݙr@3DhL΁?^@YKI0}j3Tr"!̔sC Iu^.CZlU+8QrO UNfmU1s4CiYUԨ]yrs`$Ď EiYV9bZ.2-vU`2 F^v¶{1uwγ0`n} Vf(z}o"5bT UnPf‰ɮщiKf'/-lj6Rۘzkg2CV#_A_\b}>me_6ڧT|`>5GV@mzp17.5nf{"j7m`оc,m 7"R5.h:[\ہvG 軲ryQT!HAU8G~1w7AE}J&7rF㷣QbXyxv~6o~5]er9[9&BY<]n)ۡ1&3w?O;ظ?& w&l1[wHsMԄX0A$їk@t62Ҍh"*Z4SA-q;PgZ1NkbPztt橓6sWcO\3?FU\_X#d0z\ᆼƭUYL>dh'C/'$̂~!G^pb/F*&dGWkoZ/@3*K_:uq6~ݬĊ endstream endobj 87 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 89 0 obj <> stream xڽU[o0}߯chK$6) ⒂4EJHm 1!a99c! ZH˺̚=1 .|s^f Vp8>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 92 0 obj <> stream xڍVmo8~a۰1Vꇴ{.mt"6>HylIHxuKUGnÖLHmotiԪV(E aWU7`[L3w^ՎSU_8Bu-ڸ@3 WZ:ʻՁn[*j?J ?'sUKcwn :oۥɸMWcxZQdKU jIDUt i=Wͽaf[UZŕh^37HlMR"PPI4BjJZZ`1 qm8e,vķ3`^^Oq$Fx Wq, Uٵ*Q~߯MM͖ߠ9]Ӯx;^ktA\9HS~zި@VxvY}(f/(n#`<5R- !}2d'*8;QVB]A7l!uiզYߵwV QOP58Yo*6 SfC|T?vSx 8KE~w+mӴ̊.WYVղqLh&}tdZŏٰǑ||!c F\}fD;|%'w.`~;K$zRK+ⲪWh3+-F-哟V4/uU1>>{J; endstream endobj 93 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 96 0 obj <> stream xXYoF~#՚;EڂSHGVuQ0 D[)jWF\gٹv՗%,eD+KMƋd|$Km2F a<MH%ὌQJqtq)#G?x$\@yYמ~2N3}[磽b2.3M Y1WuQTbZ>Gy`4< @1kUx%Q>{>{}ޛ]=B=){ ثb)H5Y5]\\oj?0~ËO-gNG]B`eN"@7yr &`%@nd*"_ŷy*躘 W@yU/>l ъ59[ϖ~l3%@` k"Cc8_)ƒҟ:j&M6_tm3Zmq[FWئ:"l4H!fLqK9XMg` :`b #2O*R[+7#૆ )%' ;6PE3NoF (d\ !EG1+wRnmqܡ4J_P"gQ~PĩMY/6jOahU1Or{SavL hAÈmAm&)qF 4t(Ӯ6H+FaYtH.n4BχK۠ g"TfSͰ 3*]F^& ss-5 Z+QCU"p7Rg1~(LhOnVFpTK!6jwa/:vwQם sAk8|gBx& /;:[f9xgRPCv&-Sv&&eULxW Ccߙp Pi|F.2'Fh-е zn. endstream endobj 97 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 99 0 obj <> stream xWo6~_GyXǟ6qAҺ 8[AKƀv"iK:]aiw;|$0qb1Q 9,pFsxД)~̈́VIQTksXwO'(j9HK\:*yR, \ Wa~f0hK+ )sJUzݓ/%iy EEƣ#mExdzԩ>&f~9_,&v8!nnX y؉(z'i\-'Hg-8B엋u]W-%d nאHu~ b?X/狛l\MY`dW9~EosG'sk$3iif'voOb?ó {=|}z?aJ4gC.9.Nr -k^wDyO'GENP3WH(ǂC7uT"[3򦵌Kf|I' ]Oe wl&|QhV*ǟDebu6\-pr֢ä2ն o (@?,æJ%kli:ckM$_;5i$1ɽh(K8鐉S˫L0pY.L(PP HLԼ\ô)jȭ!\RZ]F!'G_pUI8E: E`OO<mxrC6Eǥ@N8J( 0.y ZCM?>#y>>jT$zc5WզUm-M3gZ ~`e 3(yuki0 ;-R 5s&^F$DVr͌/ZD^5ҵMXY;~ȲejFa0ޕ4evZߖBX:mzZC_=fTIŋ߷9ls8&u0`xi݊aqTU8kDhVX* (#Vm.VaЦ㶛ڦ7b endstream endobj 100 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 102 0 obj <> stream xڽVnF}WjIPR XL. ZchT}gBQ遳grf,xIX'i8`$4 rM埡"r0dp:(< C3(0ruh:_m]l(*bJ_{8_/%'Z < UAc(℈`()&5ZED٩?=1AIW0UJLj M" )ÄcV"g -bH8dG;a$`Ld4zA 9q!B"R,&JL <2 `,VR crsNbS2ԚkIE,ԋ9"p˞51q;Ӄ 4QD[6*) e"i\'Iab6luTόmn 3#~mEu;ys[3^dPUUƌ?rcC'70F]aj)w DD7X|mCEP@m(0

G ͊kP\h ّQ8w"lv:q1LS'gύ16v;YfMKB~m)[k b׶aIDlxqY+S0;zqU^^^~bp*J]%6{c H羰!9g\Rz5{tܣ 5s3g;9 oo73wpU(Y~ڈa=>ǏDa>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 105 0 obj <> stream xXmo6_:$6,ME[AF-~Vts X D$x/sK',%'ZYbl2[&S0J,I~+ 翤\ ~͟!!@KB2F)Mg/χӈ{ %ZSGf5N΃A&LbpHi]ًgO7aq0Ox:[ۧ;"c\A0N[IӧjprQXdr ղN w͢XE@:?g d RSϞ?w(;7q819@zχr~7ɢNG[shz>LFd '0-|y\/Qn1]rЙngoUyU!ʷ4rrytQƣaO,A:Y&lLW0G M,mZ^5E3:І/<~aGp7aRT1,)r|.K2Rk"<WC æ4b;YQ kAR4hHq= 6"zDC)S`Y=Їjƙeg2|n/88ne0&TL]_^%%hKBJɵB;t WBs`(?q@!I@H >Ώ 6%R{K[L lʠSK$ǴO!T٪xO3)ۂM Jc FKi0M(G±y~ YHΟ;)`섴}0kIS.[*7nqQ1y,qi`TRT" W\hP^A>}z n ɈUjA*NHیScY:_`c&ebFzO Va8H~2S{rfRHNL iIRڻe&&m(qRfR ϥ3T)3C $um tլ W9&̤ ^(We=7*׾qeިtW(e JQϻݪj6\_7̈L%sovQ&N-Hra2\PDvനbQW|!շU]{n͇ S̆Q+8WNq')1CX 4 2-!A5{V7zLA8Ã?aP W<@*>qk.U/>7ؽmeF|YEeږq8-goSQ;ߴ!Ah)U}duYÉcHT}&kq endstream endobj 106 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 108 0 obj <> stream xWmo6_21|X uT< 6t=-4bPdxsǻ("GfH+3f:GbP$R0(H,;)%$n]'%u H'}_EŧjgeQUYQ:b\T?;0.ƅ`Xq`3YKs a*(LTSzDDF6 pMG$թ6 z)R d]53 qivFڃP܏F{f'6*VGEZuYm+\3PFR eO!$Ce֔1%43Ҙh)!B \%EbRQjIwNASfX/^Cח̾VH`kc2 +i/kog׎j`ɂ7:-Ȁi^`X0%Ä6Ti,밤0_"PZmz BFxԗs#P lu$<<_,c{O(AdqIt'5J"1L_ p*>2p>tSpXFI %|HW6Rv=6jӍM$П~ˈܵj\e(P he(N)f01>iNC@KJhB"`~b <ku݉>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 111 0 obj <> stream xWmo"7_ᏻMVW#"J6T ; wxm ) bcgggY"Qbc}ѻK(X߃E?ҿ+0;\K: fuD[ŝ}ÜL7S4GQ_\5ڍrCg$PZ5"S VsJZ„4J$r8КX[ C@ơڈ$x&sf1Bœ1.@ R?ay5jةJM4RS4(#)43jP{qM:(cJhf' dhS]~\ HM ʕ;@{f\im#RfbV,͠"r SgX0`Bߨ2)+7LTqam)p}reR ńR(ȒJ)&_W( BSʜT p%V\WU&c0Xi?^yh=]̣MCBy,`)͘Iut+a::#"x^o-=LW~4+yX&aDZѮhcOŶ< Caef [WNj OoR&v#$H!#s fO>V$,>ϱ sXGb"T2YLcfb9&j*ih+ LEiۻL)P@%*,oI$u46&C|+Wb2<,:(<[fI OL9 y[9 z#1-aV#7 GCB@pƱ IϦ#7"e仅|7yM?a/1^m*xu ~%BP}TN 'kv{#}q_ bA0C.ډ5Zm|<+D65>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 114 0 obj <> stream xXnF}W)s;{7PNb)P'qEZ-T. %bKJ;;;;g̐ɛ%X!c"y4MOE(&D '(x2==cSr2M$ K@I&H,W]8o8Q+΋I9OWE6<8^7UL@#o:d\^ѯ Jdq>R)FP! #k Z7uxhQ ^(3R83‚UPV3E[đak|d3ykZ/ňղ9-[%g]0ΘQQEUYQmWU(R]XPBqQl5ܤMTӕM}12v˜eNsFgZ e{D+n@К{Q(esߺZ7ik ̰UjZ쑵PcjܢcwҢS xL .L20¸/f21RyL }23sPe&a {e&(!LZ:_6$ErLtUbˋUQϢĥqv3v\"lVď_,8 we7ey׬>`(\mQnc&(6M$MYdi0@wAgg4-} J`ì'k__Vx\7>Lj 7)]Q[Aj6GF28;)7p 08G|O];>ɢUYH 1ad zU1iwjd/} Hr Iѡۊe}ݬu:Rrfz,oIxnaWW񩆟kj7텏HAZ-ڟ.06!ģs␢ 2mbunLĜgA(U.l6G i<:S*_ Y/K. !Ū˅!yOOs i5,FNymg9tt~,oi1!8m1g\0a! ӡᴇkrF\^[V,=P&D.4G֞yzڀ12 "C!׏0/3F;&/> endstream endobj 115 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 117 0 obj <> stream xڵYYSH~_rD[.@wC`f aX,ytΟ*[ճlDXud]_~U~Q|QAfttYxa:>DDL$MDғПjDh=Q,qX̬ƚnDzoڅEٚڼ*ơUY-ݕ FB'Kެk + ;I[ى^fڹM3=rhmN3HcAҎp:+U>GA @Qľoʏ0 ٕkhCޏX@'nٱNf?gNL|̼ pef"{"6PQWB9.6 d)vx;z [l ٩3SYv,kr3zϏ246Hgr\. MCi }+t%V=&Fߺ #@x GH +eE@" ۓt$MDklͭV?ڞAvpxgf8uJ 1[F/tӜV5|}2 ȝ-Wa o~AxCϟemlIS8 `_hVפ|I(Q0FMƦ (Rq (ZS6i}A= ߺvK,Bgk1gHe-B%M?,]Ճn Y5WK &a39 k& ”&L MpJC@hBِEӘa>p@arU~hA#ޕV"TY ҁRн"Pa5UT!/on?RY8>DZż#&>d^:@Ax(|u592+q5{/Ora^g*RK_8@–4 n PhS]Oz82{ACtԻ~GvCZHsnʩKI%vk=kKwKa2X2t"LϺZdv'$^ MnmKQj?M&*=(vbWF^L;b #W2H՟9܊"vH7u+)Q%Nb!(iio&k+7)sT]JVNPhZݧ4;?nr%}Lq PP$ɞX87`:u B u_LS1D#֩z-pF{U^b|r-۬Ae{Kw>pM:EF*޿@`!Ÿ݈Phs$O4|N"1P3؊gv5ahbfC/\{Q%)M $5-2!n@}3sS >?cQVDžQ| ?YeUC ܔ۴,D[1w@+8q8v <2x¦:?,K/3!dES}3o)ybJdjR ӧ!aj -JmrTڽNsP%x#Q1RyjSJSo:+ncj7iψHWhuW,L^q9GmuozI o@㼫l*9T7Ojyd t:o} endstream endobj 118 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 120 0 obj <> stream xڕn0-OsφED5iFb%sU?Y2H~ʷxDBmGGn|YQZϻ%{ f_<PS=4a#O _}~g endstream endobj 121 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 123 0 obj <> stream xS(T0T0BCs#s3K= K\}7#3#=33c4CsS=Cc]cCc=3#h ǀW?/@.c endstream endobj 124 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 127 0 obj <> stream 5 scnrRGB XYZ acsp,desc`wtptcprt( A2B083descadhocXYZ ,textnonemft2 $o/)eM <{S]\$ / "<{^KO[a`AO ge TK\u$ / ~<gKu[z*,KN;[tK ~J% 90 HN<1KLz [TpH,_) mT1 %] 0a = K m\zU!eJh$ m! u]e  } t% c0 x=L"\# JG Y y s  j \ )i&X1Bm>H+Ls ].  [  { O 6X 3xM8'd2i?$Mf^ zj1^m. j#G>(tT3x @3!N!#<_$$?%'%H z% Kw&;&L'5 [,()a(4*Az"+@O& ,``/}0000"0X #k0h11 =2E!!3+9#S46>%5B(6QQ~,7a <8 <!< b!=! "J=p#G=u$>e&?#'?,*1@7,AD/CS;2D~c(uKQ 2(K` (K [)dK*L+Lpo,`L-M%/No.2O^94PtF7}QU4:Se1K[ l1o[ 1[2:\'2\w3\57]k6^'8^1':_<,=i`H@Rb!WnCcgm7Gg-[PW ?X`V$ E/ Z<sK[e<EPwht XH=x) $ ^/  <HK[}cOrxA>  % (q0 <KP %[X^HK 5j5 K%a 0d =! @K> \$ VN A q ` 6 b  C %x 0 =L%6P\    v :6  7 |*_ -&"1>KLD]2  ^ h  AR  ;v. V'h2l?'9MI^/Snbf ZK(w3|N @76"N!#t_=%a%)%I+,% % N&:>)&'m ^(8))(4 [*y$>&?F#(i@,*A7-+BD0CRS>3]Dc(K 5)K )QK ^)K*L=+Lr,M1.^M%0>N.2tO95PF7QU7;2SKe1[ o1\ !2'\)2\_3b\4_]5]74^M'9_1+;I` S}UL]9 P `f M Y  pC[;o'op^2ts?/M.^&95uUi FRyqD( 533!I@>"N"d#_$"% F%%2% &C V&F '8' e~())4!A*A$*+P 'r-Q`j070;01 .1T12H 2!"p3+D$46H'25C*6Q-c8aa!=hC"=w"a= m"= #>$>%?'n?#)N@,+Aw8.BD0CSE4BE*c)K <)L *6L, f*Lb+qL,nMy-M/CNP%1$O.3YP 95Q F8R\U?<Se2\o v2\~ )3 \3\4G]#5D]6^ 8^'9_12<.`}<6>aHAbWxDd1gsF@'d~ SRt 3$ h/<K& 4[y7&/[5UY%|F k"x D$ 3/UH<?K0 [b%pS G } ]% 0"< KcQ `[Y}-kMG_ = DH p <%u +0xx @=4` |K \Q 8u  a? - } t < q  % 0p=X'L9\   i " q 0  gsv@W&1>_LJ]E c &r FR|f   7POj5'{%29?;kuM^! QuC A  _?, (+ 3"@K #KN#$_1&U&e&?& Q' bN'uR'#( r)t) 8*c4"+xA%,P(.`w1f1uG11 ;B2?2 3$"3!#4+P&*5s6U(6C+7Q.9'a#w>.P#>= #>] y$f> %!>&?N'b?(@#*AN- -B=8/CRD2DSR5Ec+LL I+pL +L r,;M(,Mx-M/7Nm0O%2O/4P: 7kQF:TS"UK=Te4"]5 4F]D 54]d5]*5]6^U8 ^ 9_';~`T1>=aD &1 =JLK\ 5 Y  $F  C2 4R&1T>q=?L]W:I ixI FZa/X'0H2\?MM!^3C? u~ .{/qP c>0!/(e"3#3@]"$nN&$%_C'y''Q'Q' (- t(d)"]) >*)"t+4%,A'-P)+2/:`22YB22 M ~3=!{3"426$O4"&05+b(e66g*7C#-8Q1$:Kb%?Rb%?a &!? &? '\@(Y@r)@+-A#-Bq-/CC`8"1DuD4ESd8Gc-M [-M -N .vNL/1N0.O1sO3P:%4Q/7Q:9S F$-04 B< ~KCe [uZ  d8   `| %%0 <} 1K[ [ @K c[@ z .3  k + i%I Y0L^ n= G K [    0 A  0 >   ts @ %) 0 =_(K\E uc   ~  9 * 6 { &!1"=Ld8\9k\z8' [J%k&x1W>@M!,]p)Lx 7I&mzG'32?f!"M$^LG# O G 7!CS!W4"( j#3"$@u%%N)''\_\)@ )T)1i)g ) *"}*!b+U #B,!)%w-5(.%A*/`PA.50`!4!4"r"F4B"4x e#4 $~52%5O'S6e")371+{+h8 6-95C<0:pQ4';b!(@z(@ -)$A )AA *_A+\A,B .1C/#0C-62GD8;4ED7G:S};Hc0Op t0O &0O 1zO25P&32P4wQ6Q%7R//:S:4b6( @c1jBct   %6 09q <Y )K{[ D @S_ s S c  <  y b%h Q0l; f=($Kl\t   -b ( w P ?` l ` %0={"L \emn}5[(" X&>|1B=sL"0\c.:rW {j r&q14>"M/%f%] 3n!)q W&Fjeg' 2"?% N (!^l!!#!C!^"G f["W#< 0#v"$($F%3&&@)'O-)T_{*`+  1+* +` !m+ "j,#,%>-M '.*)T/5 +0A.1ZPa22`%6 %6: &6p '^6,([7+)7n+/8^"<-9)+/E:61;-C[4Jc4hQj 4Qy F4Q 5WQ96R7R8SS#9S%;T/O=Uw:T@VGCpWUFY+e==a =aa =b >+bAt>b?b A)c \Bd.(+Dd1FeR<@V+&@V/vBW:zEKXG7H3Z6UK{[fBdJ B&dY BqdyBdCdBDej1Ee G}f(RI^gh1KhX T uy v E  _Kx,+C% `40"H=K%K)\1   ,CR O@>G_%!+0#=~&L)`\dY- `M =lp M<&"+1%@='|LZ+@\ X-~} %qg d5"F&${1'>S)&L-9]:6"*<q 9!f#$'?'$2D)>,M/ ] `! %!kE!{" # 7$ &x!j(X"5(*#%3 -$9?0%uNa3L&^%2&o%V&"%'& 'R &' '( )(*)?,* )+.*401Q,@4:-JOp7._*?0V*c0eh*0+.0 [+1 ,1u.+1E/2!13t*q34c5v6^5xB29G6P<8a00;e40T;t0; ^1 ; 1<2<q4=5="7>+9?r6 7~H^ 7H 8H=9IN,:IkKM-@L<8C.MQElFNSI_OdR>V ?V ?SV ?W)@Wx7AW&BXmxDaY&FFAY/HvZ:K[GeM]!UQ5^fKGg5 #GgE H)gdLHgIdgpJahU`Kh M6i(OjT1QLkC#c$%'0)=,L/V\hS 9w<cBr -u"@#`%+%'0*r/=-[kL:0\B  6!VA "S#6%''&L)=1O+> .L1N\!7!F"f8"#N \$KWK%'l)U&+5E1-Y>0M3]q$M,$q;m$[%<a% &K(9J)~+J'v- :2{0k!O?63U"M6#^'"'"I(%"("=)`#: *]#+$/&-2$/%(R1H&3W3'@6(N:*G^+*[,*jY,[*,* L-+ .+{/,61h, 3I-y)b5~.i4f8 /}A":0O>;2`03131i314) 24y934)45m|6v6!J8V6*:75=8Bi@:"PCJ;aN6>k7>7Z? 7?9 8?9?:@~GA,'@|B7,C CCEE2RnI;Fb=K '=K >8K P>L ?sLRt@pLcAMFCFM$E&N-G[O8IPELQT)PS`dEZ2 EZB FZa IFZGIZnHF[R]I[K\&}L]P/O0^@:Q_UGT`V"WafNtj ZNj NjOck PkYQkRalM Sl(Um2Xn=ZoI]|qX\`rgh$.%%_W%>& z'j(*l,,L%.01=37L/7@\%QF%t%o&?&A ')<5*,&.11p=4XLG7N\&y&?+&4' j' (%*+W-w#&5/182:'=5#cLz8j\'r''(au)9 * +^-_,,.&113>K6zL9F]1)k/O)>)^x*Y+ ,N-V.0M' 2<25 R>8r!MP;"], $,8 3, S#- - G.!D6/!1"wW3q#B'5$2283%G?v;&M>c'^\/}&}/&/&0k&|1('2 #2%'3i('f4(36)(9*3;+@R>,NA.?_83.S3.b4".4. 5]/ 26Z/s#7/u9/0 B;1r)=D2a4?3vAaB4OF6`G87,87907U98! :k8px;h8i<9e><:!@:*BS;5DQ-K?~a>B>B]?!B ?C1 Q@\CAZCBDu:D.E# FE,gHDF7kJGD'MI*RQJcEO fEO FO FO G;PJH8PI|Q?K Q$LR."O"S9&QTETUThWWWdMf^* _M^9 M^Y NT^O^P _JQR_R`~&TaI0Vb9; YcMG\ndVa_efV =6pL@~\./t/h/g0@ 124Q4u6V&}81;>=>LAI!N]#0P 0t0:A1@p1 e2*T4=5]t7)&9 1?X"iMB#]y2J2mI238 =3 k 4 65!_&7" 9"'S;#2W>g$?AQ&MD'x]4$C5$5b$l5%6%_ 7%8&T:n&(3A)?C+NDGB,l^8\+8+8+3H9J+i:+ k;,#\;3 {?83k@|4B5- C5)F#64H7AK98P/N:`A!H?`+0K1@Q65MAeBPBQuSDaGGSGGbHG HG I;H@J8Hr0K|HM I#QNJq,Q#K`7SLuDpVMRYOcVNoT NT+ aNTK O]TUPTQU<R[U>SVo% UW:.jXX*9oZY>F+]wZzT`[eVEb Vib ZVb W3cNWcfXcZ0dZ7[e']e0c_f;hbdgH$eMiVhjsg _s# _>s2_sR `s`s/atCct!rduv)?fwvA2hw1=k9xEJ^n"yXqjziD7z7z8>8n9y. :v;#W=K$?+&Aa 1C!>CF"LJ$<])8/-8S<8\ 99 -:M<o==? L&A!<1DN"P>[G7#LJ$]B899i<9 :Z `;O< P>u p@V!&B"1E#>H%MKI&h]u:Q!&j:u!5:!U;@!;! <"E><"?#xA$D'%C%32*Fp&H>IY'MkL(]%%@5&yxA'#EC''E(2Hh)?dKQ+.MN,^J>)?)G?b)?**:@*y A*B+n$Do,FP,(PH-3UK.@M0#NQC1^B]0pB0.#B0NCK0 D0 E1?FH1G2rI3=),K4,41N{5A@Qe6}OqT7_F7F82G8#G8Z &H<8 I99J}9L:G M;*RPX?`KA^KAmxLALA lMJBNGB}OCUQC"#RD|+U2Ek6WFCBZGQ]Ib'QLmEQL|RL nRL S> endobj 130 0 obj <> endobj 131 0 obj <> endobj 132 0 obj <> stream xļ |T0>3g׳d=d7  B j!{`*VDmE][ byZm mWV[Qi& ~.33:Ϝ=amGj\:V[]Աm@:clDhBMM%`ڔnZAw` 84vCCz!PtoLƿwk&`SMm N(mg&BfZ 00ظkb0%yY侍ͼ :3)7"qzq. V) kQnGϢ3¡:;\aّP2Ԉ2؈yϸ]h% dCV7 {c0a,l/y B3O-Dѝ؄У̛00ځBA3h-CfiD'ѥx-d&-E}Jt=NB9ӊJP;jsgFǴO̼0s/>(g>@zWgAP|} z;p WLjA_Gt#L35emCexǔlEVvݏ=5ܦ骙# :XZt=!p9؇os};0C$:spTSWUMypF?)5s3'2AP hFע];נwo SmrŽX87x' ߏ_o3&|r)O>tUsq_r(( GzsML>}L 4/ l-;܉;fVݠ9PF/WG~=)41y* @25-8ޅMDI59(j$#*r9$!ߓO8p^.s7p;wkEHQXب@R:e&+STyB9MujBZ.U7רoT?>~C=}j3%مg#2|?vRtud{|뻸sRԲE^AOW*2᷹6#8p)Pq:[`'o5iCb'oECNi=y?F^$&Chڋ v׉@[!NAﶡ}tnŤJ c CxOH_ס׹O@/+p =R5.^Ŵ~/ Z'46SE,ct+FkA汩k#54qڙ^I1;WQ?jB@0 9_U݉nAOq(=@%sa+?ebi:w6h>nkQ-,AY3`/f.٣lVF8= \]> _GKMh|M¹A\tR9ܥ|Ty@#Ue`wN!şAT.KgP v9ւ$a73?GǗc`9vX_,Cԇу҉P 6d֣~v𳓰7;9fؾB\ @ +F䃨NZGu10tÄ<\LP{44V}])W`5*HU*.(_VR\T8 ͋ssC ,OtmiV o6 zVV)(Noք"$.Yu jhMT.NBheh¹`v}S19L "'ԉB絢0׮jb8b`uZ![DXκZn^W#u<_PP.Jb[ 6pu XKwumUMun95b{CA5l&f=t?or7&x1tm6%f%&[O8TarkMӎ{:G@;w{W5ys3cIug=, `FknJ`IRB鋋uuЊZA4 t_G:a&їrm ;%ynO4o?odN@|A B.,;B$v$Mivv44c$5;O(('?-բ # R=S5蟅H"*+Y$76Ax `j޶5/}>*&$UMr]@$bi==Ҟ=s[E^P2?3oK^Z$lMvٚsjrHi$7zA)/C&CB*ԝj h%kB}o]":41Ŋ3RL,[_xNvraE,[vN9}v;&f/<J΁YNo@E?`#ғM(ၝ`ɱ1+}ЮsI vla0| V VS8K @iI +)ʰ,_+ò|eX aY2,Weʰ,_+ò|eX aYQ^9`Sڭ΍)X 2 wS0yMTGR81g|7yd4sL ;bp:ݏ+a?.%3=ݵ:+P6#S v2'R0T\`,SӁR0Ki)E)t--LIRG<`=HaYלYti΢p,|Yr1e xnmJ=i fp>H#),np`y0 Zza|>@L h59ah#yycMAFByY{a.!{{ kwk ]C[CNmCh#)5{UG^NSԬ$xz tt\ff{N͖=- J}QwEl]| #(y4Dfn5 zH5 # VJW=Y{J< u 2"K=/hlFŝ&k\?Ȇmo9=)e܆Hnѹ5;6vLGXZ?Yj+qqֶgQTͩպ>Qfq===vBw@[/qoӗ?EXY6:Sz?e;iy)f2 e3ջ/ъ/,S^ANIڛ0m\;df3m,d9kє;lhb;2RǼHάKR'lm 氇[T/9 ɔo3F&ͳ\WJ/`Fs:[ _~ju_QtF?2ڿ(9a: ܳtIs2LP/^w;ҟOIjc)i(G[2#|Js_ BGiOޑLՠs3ӯZԙQ4ӨI4½-Ka@<)NepvQ"TZ#eĀ_t|; 2<ܓtOؒS:+ЋHJ˙:44EӜlCg"g<}}lz޶EgcYv2hm5,=yX5,F>Xn$eR/ALƾYA?ϊY=R/{,0v0PlS8GCĘf9ҟ9OymJŌFZS:s lz"lj_yԗi\2뙼d;˘e1iNly4vVl5UYX76g]ShYlLn1Y/eϜeHLGf=(]^5"Q'gF7ڼilOÌޔu39z¡Ff=~nŝ{&/KBIüw0sϓӟYtd ȼ: [}ƟS{9mhk*F>WP]oJK9>9R|ϚM LٙG,Ic`#}X4-[nBs#߮Ib'Xe/n5[]mqaMw\h&hmOjFھ)F'VҖaaiW^^0_.Y=2,\;l +⛅ 7=,joj(wńPSFBcۈ4+򅶾N!; h3-ܢŇEBNCOPpH.C\ڸ:J֬XfiҚ5KWV ˗ԭX]'TwA]]C݊5FQgXe0aC-9ڀq=FBaK(?(yMt6#mM|uŅ>9rf(iۆB&:{#[Mgk3̀yf\'~}tm&({xvS9V MkmkmG/\f3*Ga@㋔ žll[gg՗^a]mbF>ޞM= Xm8<"\5om\27m` -qg8tBKַEe::C}) Rfc=TH>I{dQ9a[H[SRiٖtɴg'uFP WW Q!g~qYP6o~@p4̛W\ yYQPVZR^Rnu ,6oޜiVζP;Զ63i. uR+/*d6ļS9m)AiI=:A}m`yG{:4mBg|g=U ,1xGۇ >jEq$>kJ¦~hGwh 3t(tlfP픩6uSs\s jXx>q>yð>BCA e# v 2NVt1*!mPΝe_"1Xnq042\ac/ʮ 'JWQXQ*+$"2EW֧eZ<Ɣ/z؂~ωPj-gט6Sh̤+&2[xv$](8.^hI)t oU}(yxN~GBsȌ1m>a5njܜV(U?Q#$`>F @ߗΣ quB?cmġcV Qlt?%6dA t /̂'Pz|{ >7a-(ජB(DnۤI^ɜpa{:CQ1dW8;ǵz|F3{FX'5?$JĸXM/{X.qLD#vd#U(Gi: w_RSDqpZ V;5_C7P$L@?s ` BI9 81M4vA`L% <Ā@N! 0CZד4q5; s73Rv;tZrY0p+3vjƉ?*Ff6xf`)_~ot҇hXAqd.4ֲK"3 } ֒dqV斁V$;UIL{W_PXp[^rs2ɀVVq.W#I5GRvDž^P" W2*11VPNmB )I,Bd!:Z\)Tf q R$P[ = 8$%kmDVh|$3ƠC.Aj^H>FG(CE(|;8FB?ȣkp EiކmdMMfH%BiiYYv@]h%m㵂LL& Eks' lj6| ҇KsPK;#oU~Xixțoܑ[^PXm+bmn^.U.(Zz@/d~>+IQqG*eU5ڮڥګRy1uZR)>!SBDvw1g=e] K72HBDw](:$\om]/HAQ D`2@&cl`.clc0/@Dk 5{xV$A  גbNA~ q(y~VR rs<;p3G_."NWj3&5/*Z${wOr\,(z J=h$VB~bW1h1g{ƭcٱ{2кUdAnhd;A$sx("I4,fI/),:r> @G,$Snb0COro|o|ooo\7.өr 0X)gm3`W06 CӈfnSTq1q¿ax<<,!wDX? 4> 0Mì5?F|" Gj749zjďӸ;<"yH@5 m,׫lEnc $B:"IB:~7Yyx%7p8yorѣQ,T3FGis3jP G(ɳK2@ g}$uㅸl!K2ة7 k89J|d!r?ŽI_*yGW.@aL>:>xvu tIQUe~ TMl*7~2InGSVyUAm]pgAGV58GVe6*> b$E!+*lb 5bn1bQlt}WJPɖ&~:N⧓ K3 2$=젦l !|FSP*`GTfo"JoAʰۈp9NE0S#ʲQH Yf(! oVDD.OotZنmO᫑%Q9 B!U !)-BM A0u9*xVUMOUX@MT\(hy!BU܁+jB]#j-=}jf*MPXR 25Ӿ|EKV߫++dnQ|#n^ ;R,zϲi : .XJr9r/nÎq+xXSYO形~#Ϙ.KR'דk ?U;YOgM(d7 tX(_(FD`PH'|FA/Mw WQ`9ۛMfh+}-'4D|>oxŽ?d)$MjKN3kJyLM`\O9j{UhbO:?}Dhp 51\u2LdZ^"~VѮflvuy\*%mŢNj-bǧV~m!;{n橷oޱkJw,iJܺsKP hicF֮SwO7cX5bsfkuřrJF(f .4u&-35-[,[7ZR=l|: jlՙmٯw_p.nVק=eV,ր%'p:jk}X&gڐblq p; q֬ꈮWFhĖ"v3gO/ F4b#5ѩхIoXqYixS}WKo?.n.3L~Gu O_~n3(BzvJQTY1x4Lv,EؖAift0sۏ,fOFݦ1k1`xh[r271r35O ѻt!VMu"rp>v(xAC4+xa̤WF4"i%̛А0.l݊vw |Q!(|aEޟvKi%P<(Yy>.73'25gF`K> zפxVkuT!) M|ӫ3(4٫Ô=o Yɰ `%x|W,ē-?۸N4y"+?{5@#ltF/^@/ ݏ3,Twݡ{Xk?Yj:N˞getY8,#uH:,if'=E)u7Qnm|ktM@C3ѻ} wL$ޱ7+ Q!~YS軝ݙ ެK[j^xFFMi;2tF_cxp柦mԆR6*T6W@r zA:[5z i͆eMݎ:*ӏt\1as zE©飉`^zJ8.Y_"bəo&$H҆t$IѰZ#{,#-Y>yM vlAmif#U'c/"rj  Yw9xBV3A`~ eq 2Pg] {2H0g@2AB%(S gO9>-|v{5oDwo~jOO p9}\~;.pEbpmwުT?<:^E_@1o&EŗIU\wdp!.sy-ï"%RJ^(wovo x4c럎O1aZP@*ƛ]jTx3}S~7~췇3b("B@4? ^Tj xX)i (̇IMG$! CĨHOE=/l1=)%ӈNESPK9}PB .y鮌3Kp -ùP gn倣#Cy#-r `|H=zSP`ΒD1u~ʋ>^rN_8+ol\R巷WzKm^.H6=S?,n]ߦ7 3>,8*; .T&5##|%"pid}7)?UV>w\*eRo))}dǓVx/NvgE.E\dF̚Yo6g3͊1X]O_0"fBTĒ J<^_B<&0/` /t;/߹`O'NRFrEJ﷜:ْRUfM$pzL}y~"1??f#t3 !rNf+Cxz-Ee^o{Nõ]3;XlYrf](4AM eEf6Cf?d`~?N4zQnp)SwCC@,lP]@W.t]wWC:|XuD5."oT? *Α82yu8s!rT7nj;ZS p4zD?*Yc!crv@ fueyy"W3׎;:.zrA.4ܜzGtîi5`J Rn|IRB}n87G/|DӨEv U3H@IAg&b>$}lrLhq9\)sʱ.^ **dkP9w4GSW%ˀ>S>͎r91\e`nɰ5 9.rYKK ;2p"^|~Z ~vPq|ŵY~^lz~~au.+\ h{ ݮXP*$ٞS}[ g֩}+Iř1ƁV\:7My4U ϗ+P-6]%\%ږ,W>^d1kc%D%:iۗ4ٻ4Aw<Coܣ3z<l찵Vo؇X,>^+GrK4$ÚAU^i@e"y9`$/豢EhQQCE,Eg,ᢅ&(fffF=5/i~5ǹKj81]KHn)6;u~=}g;>spdޜ͋U)jskAoPL[ݦ}V Hkvxr{%*[+I8!4T͸;2RV`q?\IRR6*[ s A]`-Z:4=㪬Hʨ)ܳPO E8_I+0*ە"*mHl18,BeB>MV92fV&^kR>yRZslSlmn ޮPؒ=Y-Fc'K=uӨ F룭[_fX]~.RU/,Z:4{1SS[ްk JVeIpm¥ ?Zzޮ9/&J>V7k1x uG{c1PO OzJq֑4ę2#GqL8n [վ% لMLQRlx/N׾#̙LYN`NS.5b30fw* {Do 'X0{r`} _HS?ჽ tlN.q] *[/^lټ:^|}Z[^,jڿ.S[Y Rƭxa!6ZAY|{Z>o֏E99SyIMZA&KN_(] S!9ÍAa@pȌWbbbR:1v4Fb{c$ DEʠCg(r9QSivR GNK"̜ƴ@P 5MT?-FȂ_66GSJJbƁ@8L۬cm@;ww{XSy-JYwLXʺc)쥣x9tu̶Ē4ş˸_4ӣ׏w~{Px`8jiZ\+}*^WcF'3OegzD dg~ѯ x&1'E송ѥP}>ɨxXNO|UiRyiҢ4R̃,;H2,/dI4,I#|Nu2{$?OJ8LJ0!+a&VR2#sYll˞>ѦŬ͓KCz| uPe!hb+μQdCW͚9~` RM7Tɵ4jvdN3dp3QWyB*:yp̾"|+rsM Vkĝ<Ϝp:iɮj:w읾mc:P\q|B_Yݴ*;XC q *{e%[vlAV W9+VƀBffj-ťTX%!lTY-:-A&ʱ fHa]l Jm(fg';fr)1xZf%[:򬘄 w% g0N6UdXgմs < UD֮}%fZ]X$S2E @0:yZ)Z8af%R!ޫޥ*;* /OCQ#UJ]qgؠ˜xX-%X[X_&\Ze:i=nUZ)bZ[áٟed?~ˎ3lXKx~9BQ89 {VWeii{pUB84@JW𦉢o9(-eB8E?ZScEVEa"KSQbaNvznGʙ h%%KKvl9rrRuY''9o=?(>=-Q}˼p /3J51qptghv(YݬT?%ןE4"ʐ#vd`9~koklfWN{'ث3;+,7._SQػ۽{۽:NOdheɶ-,l@1v 2&)9 %udq3<6v&fh1t:&!!igS5(թ߷'K& t:ӿto~wﻻax˃_v5R7cgp(W7cV! ;8ۚN5u0{1 bfsql{Ce^9O$( HN$!BbV4O ?8$4o0;!|6_O Hə3H:mDFe2 Lev@luvY&cC& /| ET`]D%"{Ee>MN"UaЮ~Ni݅v݅v݁BMWZ/CH7IlnM47H3 \g.\ ׅ+qڎ$\5:'02_?/:ƻeT茋Yct W=9smX/*;wf/u{橡F9 $6X҃yK7kdl1>[L,i=S(o.k忓N5ce趄Sy95:<ǗsYa/ComqV[S3*ɑh8=ՔlRhaL8T a`8⏫sV]-$ưڌ{jZ`Ǹ8W55)^ kBEU,q8QT5j6R{5-vA%NMQoC Qϔ- ţ׀sl4lҒX\0ʉ9*-6ٺpUP?xQyIc+ pf480sS q'ʹQWGZ޽by[:?N TeׯOgVXp\_~GL)4;kJE;g:ܣ&=*1b$1wODOI,t]-)'%Öp"=}KVsz) 1PicNCG>HUUO牀HhA$ɿG,) ڲ*4dUhʍ&/HHz X>6]H3iE>XKq<5H+e`pc;2`+A^x&0[`f40 BMfpv5ro e//-3X]Ȋ1Ʋbe+_7R,AX݋ )tOGn;K[toq >uF z ({2adOa.Ó;};C2s2D_ J\h*Dvnnd8@8a6'=$ch4̕b{׻ۇ?4/߿׮?b\Rts7Gwx_;=[zg.oVBaJbDZd<X_|>>,wowKnߢު}E< 'Oݟ83w[?F?Uυ 36͇ܶ1%IHE^e Y3X|H,zW&4>Kj͘ZFִLQh¡>[5K/ M1V5"aą ~/iʘff4-}\+M!V' fN7$kmDnmxrFX 5&k}35SmDM%P$dtnrɨHWY{a/d& }vs~~ɼ4;Q2`:oa4ǀ=1-,4@BsNV1'$qRLȡfЧO eY{!aZ7ồbm2D`z#J&T,6IM?w$JbV!8^4 Lu3;A+x; H*2 JnIސܶ''dT9,wvyv|}?+@%<UbZT$hMn3T $9T`7, JR 5*@v1& GUY.շZJVTtV-2F7hլ)@ ٪dV NXhrH&uITI@H=xL[Cd٩cWt4(({LyX^p_Կ _mKWា%vVWv`c^H5wԙoNXN}ki*eOOm+VrІ́́.PBY( e,P~E~f2I=@DRDŽrBQG5ZjǢZgFKf__90 ްZit˃A[ϥ33͐-ZtE{P%(] Xdw{ B:"TC"54.?J4*hd5c=Ov#7t= {7@ɾv"v?.{F%P]{~5PqE]E+{2AnhTm֨tv=\kD±C{HvR;/Rn7:AV82)nxA*BT0.;46O?umBG^Ź' Y m}{ؐ!> endstream endobj 133 0 obj <> endobj 134 0 obj <> stream x]=n0 wB7'5%]2(^CdAq޾tҡ#OlkM%J^3]tK$5\ҴǷ|R|7wV@ujޥ_9=F{FF/F ƋFmy78;JEc"``$}EZ-"#]8O0lVqƊe+=+3 ΊCf½VʛI_2RP Ԧ endstream endobj 135 0 obj <> endobj 136 0 obj <> stream xy{|[ř7stdɶCG>zXmVlıcl'Ol /%q.6M\6J]򃒽e@Ch)GM4ts$Br?373gf@:Vwy =X?g_ kwLg.E»2ɑ͟GƧo4W]? @b(̽ &nw?7>1[DZ{s퓔= JE"p%BfrbTlP:i 4P0;~ 5GO*B zA9" hwTC 쇭X߀IPAx^_¿ Xg G>> Ѕg '7zHop~ r|1z"zEP`}$FѝѧBO"Z2H`#n>|H360?™g2I@MyZK#ڨ8n< w>8x w7iE_up\{Kw-ыG"X7-p;6<^g.@jRCVNr?7D/3Ɍcz>NB^y8f#z; ϕ(g7I`a Bw DwT\Bj'+ma +cDKhi't /sOx*<ü̼ʼv%ώ {]b#2 ~"uQG::=C8 o'ާ:7L"܊0ۋ7z!D=!xeM5.!s+'Ee崃IvYy@8M[FkiHw;A0}YD$L Ȭc62SC#̣!{L9lnesc/طwej BPvByN./wC\1H #2ϒE_gn%# -)0Eɍ E&7u]&^m!]L.a"fCe3L\([G=$j]k=IE_3LB#o] 5~GOO8OV1sԐ#->AU=<1pm@[} G.` zAr>Eۻ =ZBОЏLkkk*+KKEH`љF|߼J 4 +`^BTX LC jhHSBcS$4G2` t'?/H A[ 6AyC~>7Cs' CAGC};u Mgfc؝!pU{zڛfqo"[x܍ ^ܒo"*vaIzat>y&2` ֦ =09}M׏k1'Hbҵ1 XkUD Ԉ ?IީB+`fCpUp%2LhTtq}Pfg ,~r=?N5zrUp L8'6O|c>zT}V>&5!5|.D^Wrs?ss#7w#7͕qsܜss6.UShɊDRP*@w*׈kV5Ti2)QPb 0>Xn q`5u 2ۃ "Hڛ.F@HtxCZu^BDG&ԓZ덠Qkh+/ڧc:YDjR$HC]ә=AD3{bl5w D<;GŶ8xBn F~n yn\5 =' ^/; d߿1DW;~͎p㬸㬸c]ڱivP߃EjSE՗nk&k$U[wb<*%a!Tq(YLCƻS! B=l065Or2zZY)j_&VϒsH (A$`R*v͒-k\i>}b)*jZ;VpgN_2iI nALsvY>Paeh*=OqTGF#~\}DLѭhZ:Y5݊4g"xBk/w)5\v˟?b~q2eVw6uRa";Tm/ia/$fd ,K@ ?55p f3v9DVUI:LW kMÍ>Ⱦ U/.N{J%A( klo8wy,h]#޳V ?,b#ֽn_ż%WJvE;w'w$ĊK ll50v^_uu:fd*`,h`*EG0迡Ѩ%1ܖޱnDTqoEwv/q9+Jj]tȝfw**k >MA\zдW@QxTDЀ_EH%133/Vч%ZTKnb9#9iS ))eȓQS ҭ5V)Kv2WQ* T3"U_[Yk{. R4؊M2q*~ٕ1|/U5 d*IͫTd=O`$$)/qOA=h..jk0RrbV1wpSӑ@n'n* `ז !VirQ;?e%1"m{d_>7]u3[ ^Yۻ~,ȥ3{.ݖ ng-flE'wmm1YO둀9=%5uΦ(J)cOMa+d)*&lG^5a8Jƽ*"7fa9%#D~ce59!;cNX$gx8џ#萜:$dQ[s\[ K5\SѝdcVj(\^pVs[ &X`nsw66FSؾ֜÷W1|<ߖgq+2-d#<"@BgHVHsv.ss "2Pp/H`l.sk9}>nsbi0J#$/FJkȏ[Is6ȀX)I8> vQG%f(TeFwR [Ury[5<{;H fN1{ny荶gȟ;Q9wSܖ`Ss5.sYB_(l(cZ5݉ÉTXd+%2%M&•x^:A m@ 7):k;b~ۉgzRL>񮘢/_ /!d JəJ˳xN8vQf5v(UTIjry W$"XBEŒ+FKQTt_=Eֶ>ySen;p)wU9y,]o/^m>rCc7/N(%co-oMSߴ}ݽ:21{r,K&+TZ+4TJPpyY9kҫj͂vNbLX Jp#!su =~;=(BY(C`*, u8?ݸ JtDP$KkGtmꅚE]&r0 M yTt墆:J(rC5h+m)'Lwټu#Ct[ɩMW3^٧<}ZZ?7)EǮ}#)IVmþ'>K$0C]֊:Z(n542P:+~$)D!ـ/A[sqo =?|PX_V_ZUܼoj11 (ּXb`=,'t Tj.(f 2Q\߽]a߀oˇ`P*3f0{`TV'mh}n" :,+0r`>x&3EfL?\B.bS|PaW״A endstream endobj 137 0 obj <> endobj 138 0 obj <> endobj 139 0 obj <> stream x|y\[{ЂI@`l;ǎ-ŀ$qF6&M_i-v4~miq[M8q$静{l7v_?9s̙3g 4pxXS쳩͝Az99_yP'[@ o[0w}7>%5)amz{^@:b ~sW!R&ޟؕ"QR:> fNnj X,w [,o:q^ 8~<w5OBa 8 pV F|0 F⇕ {w)C6w8!9t@/OX4knJY| ^K:+%r p'1"Na<'9}QHX m=pDFpM9g|wJr2(J,\EPKn &2q0ph_+>-%'G#b%m!"&h!;ggL!{) 8 iQ} 18'N^#=hpG8&'wqrKLv^\yPP xQ`52^0f'٤Hn%cnr?yN>n^~??Ȉ\v)?@D3. yW,G#_D=N<7#KF@n"G/7|6UvHcٯ{wĝ$7,Eݸ^|@=gZG} }WjAl$4 N#~KCWNϙ\>O?O,!Wiw~ؤ]BS?0xJ<#o:L=1I|9XÉ,Ry] O>1ra \c,>&c ^ pd&vRRE $<y$!)y7!g8W5ruF p~׹w?~Eh&*~jd24*35&YSSSzA|P+WVL*~xSP(RW~]9L`{1J}'ܵ(%O!#/qt쾀'Rf)^ڒb.^j Sdˆvjw nagAf BQBSlpXӎFd7Nn7Ka8NL 8SS8* ˲762Thwohoj̶:JcӾ31@[&h)2BƋO9;\)].kpƘii\o?͏5펍*>Fs9c+q;O"n*`o $ {;Yc18jO&ane;aldO\8RRc#PYu*}5zALPv;nd K`s ᧃX!Kj1x:?&wf}{!/a@A3pQP6!Q_YR<<Žc ؠ`};Nm6j;|;ž;'quĸtH&:r`fdv;o1sNoLkꭉ V{-BIm z1 5ٜq<EO:KL;)1)'wM)U C1ĺ#fISstkIbj\ K2ƣ2'ܶel,yJL;cc+ʱcāvAo;w`ӎN%Nܑ[ygnԠrbNn0#ni?ǛmmvñcXnK{A3AOTl(1wN`8 @' v}1[ Q:/?W}R " ޣj.ǻdJ@F?qFy9HT ˠ)r0sF V@)R,8yN" NoNI:@nkGa Vo~}K0ÒT`96I̩$X }|T'AC0HMIp xMHߒ:$Zp Q"ZךG$Xk,gI0`տ:7O2X L#>3I}EXaѾ",WEh_+¢}EXaѾ",WEh_ 'Sdn`IfՈOF|wI J3E*9 AA# 3oH0]Q|VS_>Ot%l 62|H)~3)G$dcp6Q) [2o]+7 |~<'.'gpo`/cp 哽_O6ӹjU/ռ}̣OG2.)3vi 3w: ,m(܂,QJAF! jdxgV2Zqfi"[^ UC)HP9>l7!fmD~,aƺ B? FBO1 { LA\5dا4Q&ܵoto tlTB:/\#L^"j.SOj>D͌SdVrSc 7 Hi" 󸋼8},ނkqm]mEu[oBL+Ԛg>- HfZ!vȓgF̃lgvƎOڈowP!uTQ]{l;<( QGa\L8ھCZLJ]:^$XntyQP؅=D\_7^%E5eDy$cŶ(N2KY(j/,⩮Oa[Q-v`i"[vZT;ƧlWbsAM7.N]LbY {ųy~+/zYMZHf]̚]s!8;QM3QbT J1h?V_l9a7n:Yɬ:p {3 H'fߙ5d!wq ! <9s+\{;g=~ƛgϖtDN$evɄad0-*-grϬ=辩^a'eeql>F'=80:%Q ][af|%*j~+Q# ruiZC - g?{ & MFPvI('OG,P<6N̏ٷ!#39_̘w`zBKh E h04 uF"e&(&"yeե%X>ac76"p-k#Pq- ûP.&=H4t !ZZun?%"^$sp`QauG(rwuP "h!#GjFD$oi[m m׭֭֬nhZ$ԯҴMIn F茒)CptqvPO?;"a03;ClC]0・P&~% 'nBhg͍!Dfa+tFFpN 0ׅwE5P~dF@=aߐggM}Hm$;©@g;y@48g}B^1EnqBtC wEu.24>8/ /QQGS RihBL6v"l@g < ,͈#. /OВ Ɨh1J7G ;s6KRw_-yvB' #\Z`IEUPU4)iS3"K**V U++5ɽ`3221|g~LưCBNQ?(FB`gw (3g Ll뻃HTR䴥FL 5.4@`$2`-f: vbh #{0f4#whg$fQ3; D)R_WDNt>ATh8|,ܨ u.qa+ % &0 tyqv(2P84ӋN(D9M,[QQQEáaj06%,˭GP!u5Ek9P\C~ x.j0DGѴ0uB vF 7fP@_p;}A8 @YB(5r("PhW Ō"&]!q 12L}~10Gth?J#C cMpHzОG |F}ٯ;ˀR,.F"6ϣ Oq~}}M.^l@H+~pe/'WJWJ"˒5|zYZ }jze9n 7^G] `?Iɦr.7k' ˏ,g480bglEl6kjb XD&J_O],?qd\g?yW?4Qc՛I SX($], ,20Ovdy|>"~~9s۟b@'i"|*qr2Սb x41'e^6nLZX[Cl ԙGEİ}dsY'5*8j9zsp[Iۛ]jP%cR\O6\[B۵si\KY&cKr*78DΙ((iղr3px2˼fGz\(S/QMx˿xqC&w,%55KjxÄ 88d7*:+޺ʩ^՟'lV$ʰVmWVr\SH/)knyݵniD5T)'rs\Tu֬+/w{闊uaGRpdzj ˺蔌+WW׌/u:Kp}N\<əm+.E'nm*<:;=ϽyYy+uv^΢qc}Xx`]%zч9qBuԋ Fh|~$ L&T^}Ch2VW:ۗUB MoBVBS\)JL'.<.e s[>A3*h4~A]4 z YNZ#$=O486\Ƅ:ťO8QMKl.qZqcwLX;o;4a}9E=4a=]=ߕns#Ǭ8_䘒!eND"ʮ>s"ݯt6 e sGT\ 4kn]r5O)cK\ͱ׶rwiBVIް%& 1C340#qm@[I7g_3n+7:sayjKT;51~̖ͭ'-r $,ͱU>Mǹh~5mxc $CA$9 {?#N$l$sІ=VFf%S2t3J7~8n2 b4d"ќG#FsFg˙I^Q<$e>qxOO_ ESui^> [֨\ '"vuĒ+bj 3ijMS N/o>!T9%OAF*/CtHK\2߸Ԇ<. [/w5Ŋv`cosSIM?CCCHt~p9lÖq)d6F?f+IutRH\C")x'*)"xBF(AN%~3G]^=84nRKg)㨄#P}i }CR!LB!<ՓI_5ڵj[kayJmTVL m_,+U.Z\Yt;++{ˍ eF'O!+K NUjt-_QqXS-\sԐsw 7=2^JS{.]IڢK' j)Wk J(ϛZq]=uG&]kѐ <-IHOOϰ5niTt} <xkv' fП%duY)"U6AfHr2j1{N(2ҍ&TVeF]eQ-&1XWq_nQd-2qYXr-5Zm3f,9 {YS RϹ9;U5UK1,V 5Yi\9mMfMfLf1Mfdn9!pzhujOŖ&6o}"60^Pkm]/vfP; \`f&;CNsU:2,TJ~S6 -%˻&E˩^]]p\6Ge U$Ϸ oߡH9TB%.jr.[WiQVh{kޮ+ n .;VtYoven1_zx/c3gR[$Zӛkt/w20,&;t0Eibȧ_F5YYU]Y%Ԝ2Xm̥c)b:6XM[3[zl:?JurHj5ξQwnП&ЂmNM.' -P'WYChC*JjDJ2+wM<|1^m뉿5aD $<~=/v=l>%vݞk:eOzӲIczȫycϙx_+;{-}cɧo ʹ#ib4֑exqWo*3_I-RW], 6fd2 rʤBt|",Dg[tJŭ;SY]gmƢ JHIazqäP0)[c, .Wt\0lL}RH '\w o͵鴪\&i&NCTMhEV5S΍,L/FTU[}/h_`Xת^`1چ@lJI3r8)͆'DLxTٔNȜ\#vjWVo6:G*9Li;X_k) L֟IM˾Zơ9+k/Jm'o1椩s'z@hnOzcKvIcV5};nUkKS)*]NjtȂSyN͝:Ar;TTT=|P}0sirMO _/yL?V<Mo'cn*$%YTYlKVAi@IefْowZmzfSSsl6[/v.]Ai)@N==73D]Gdev+ss3 UJ.+SSgRdMqlez]Ü5x\,cJxLc91\ޕaƃTOiѩ0\q>Q;AqHxO!108G#qI.W "d[*"ٙ,S2f| xUV٣?;mxMC\:πjbVz coaF/W&-YM::n?NyKj%)^>od,˃}=Ẃv:^m\1l~5=;G?vuMv)~hRxڗWN)7[_Rtfu&_^RG֑DF̗*y)rW=ImKUsc=3B^ּ" ~pR jge~+b˭x|̙o(;AIL<1Qg۶i㕩YB}v'Kd;91)i^#1ط&گ!mYR5U %&2"ܹCh{WH,nXj]|g|_Mq߸iyAnWo!v~7 |ܚ>!VO%*s?"/s?WK՚vMp#)h}׈)ܧIJ7fI^oaMs'5hW4䔆h_Ҷẗ ]P2۪Ҥ&tAw)K"{\oMd:Y3E>mGVe uj\I?=k-5LiGMCm7 Re`}jg/fU:˷i |YL_^mĖKoRǹOL!%!HԵi,N~wt1~½"Wxҿ(g]C֒\oy芞wGy>?I~o֦/ ¢~yR/IBl^LK+f笖QۛH`-К*`G'K%^X_ %>뤶՛| ?sp.!(ɢB+M7h>W?*8GUa"u; ?6خ}_)֩h{' ˧T}*E'$Y endstream endobj 140 0 obj <> endobj 141 0 obj <> stream x]n D|`ĐJCDqnztEwmߴ6[$}K.㲒x UuP4 | W'_N'r!7S_7iF/FF" [/2hh#bƞqq|-R$[Nv0;cxp򋸚W:[H U\[Rit endstream endobj 142 0 obj <> endobj 143 0 obj <> stream x| \T׹9ـa 00sge`V\TP! V  "Xj$6͞TMS͓%4i4yI^żi.֤I۴isoswo?g."ҢġU<>lM`,iK׬w_!zu?3EH"/m`Jw?*j ß !6<6nw!.#H%onbߠ?̇*Q!KE(pOgi{W$u~]C蓠!2d݅,M<'N^RlBΉd4!Fȅ>Źt-ErTB(G5#'Z!7!"#V;h9E7T.'?2yzŠI܁W!?I{&O##Ndmx>z&b>@zv"ڈ^qF8t W+C0lħ'N=cG#4+ yUh B5s9i2}rP8 9CKP== x Gñ Jԇ\}8:N\K2 (:+q->*eIDh`=k\+p򽊼`!t x7 wɵ&\ȆfzF[V Eg%@7N y{^s \Ac} v"b6^WV߃;$vM qq)Ya]'Zڀj =^B$ٰ`gdYG7MsO|99T e}@?d!o=w^ +ʹ1|?̿X*oNVNH x,Tf4mAע Nt}B_OvX}3HMޏK~^RD|{9C"r\>8xTwVT^bUK3k3&R&5q\3Q6Lw A ׿` &iEx |kzq#nN<7nv?i|?g/p nNv:,"Ud%|[I]$B'yK\6亹^~}>RaST(/(-jF}ʣTJUQugI ܣH䷑&K )I ʉ]<ȵs&paΦ(Zmh&|!a/]4 s.)ߠK~J|0#T؇*7ȟ# ,h.r/ ONnEŗb{.gr?9'+V'x)"&0XqlEp7w# ?Ƈ2"Z< O8;j)Cp5U 1+_h;pdg3:A"`*!ʼngVa. DTG^C%w塓 ];9/Iވ8p "8ê*XJGY-` fTO;?EU؈/N)6)[k,s7xhb1{3z p z^/{Fa;e_A7Lފ'܀ZѪC`L"KQK(||W~o ȍM?*A/vM6spGn(b\u:||҆cPdXgAl*"ilUsJg**, s|ttE5-Ւb6 zAѨUJ* !Oq.^MAΨhj}M=[S{J= ,)dS^ /g^kaXaj[ bhᖶ0pl|PLv0!kbcE0Aj- 5\P1dv. q`P*X!<8t>g )2b; U:=xۘ|quC\ ϛ.?vlpv>\nf浵0q/l\ $\%ZuC&XP{wrVК9628VGRRPJ8Xi*8k RQ$l2YuQ N;M1uPibs Ð$&뜰4 FM|j1j~i7 %P/C  \Y(L OC>Pf&|(8=fgm#C.Aȇ?nuLB04p:YD$}CjIZM[Z78AB|4L m%C84Uʫׯ+In=@%N p/tV7,U,VcSn>sn%1`qаXkcqt+.iw+@/nyY?8sEB0V @S'uܺ)M2ZD.&hްroY~ XԬ!oW;삶u'DϬZZID bY ʳ 4SOa4F:a@/I~_n 0ŪfPhKF9t  p[ͫ8賈[9PAODa: s(ߊ> d"(D8 }C>tck4FX" ǡ]G*"p<ڠr0F:(LJ9T7Ga~FӗDa%WFaF 'OQ!p7Zn) ǣ0}=!_ёM-l}͡N;ڛB= 6:{sZÍN{2tW[j"bs{$/D›/­!e+<(io녩pgh{ Lbz0AqK/hzgWwvzz.`OQ6ahOW;흭llJKC0ˢF[XHuonEXȦ^YZ2s`UW?%e ]ǒ˛ v}LS) śui u4oi2~P;h1oz,lc`o<= 145-V*EYف@@Y] ܂ggkcz{J[lb|SxL "̴̀7G{Y^` 8? [&`R]]`hvF6 @ef`EghkOW5hk[{S5#6z[ArDqI/6vR-j NBSZAi #n=}MM -}LHXFSmw#nkE W&+0 Ư,dNBp_k lɁM¬EH%ܱr/" J* {a:?вS@f*H}LzP+ds%<%f-aP~`mS[0BfmoA&}5::;i4wn uuLIk8 p o׶7}=4ÛzB`Q{d%Q%9'ovvY70]Aٺӽ7JoKo塞yPCŁ[CT!U|`!fu 8`-#xLOC 7;w;2c CcsX+tll>"*ȋK[X(?mx?!C;9D/Qi<-w@G/7],^/Z|+=(9f4hEE4/#ތa$%5G{lPqv$Z~32o^(-ygcߠ?A"o+}Z }0F6t5DĽ;?ŽrWFģ08 ixpÀA(~HaH{ !o9wۈ06.X()PP> ϴ}~J@~xNhy/[l>oظhyڄr+8. ]]1wV2r 1bw25Iwwvv s'\ }>U\C\$B=@wZ?iHgXt>q[nnB:Z,=õ%eԜ& "RGXkhTGkC)ir 6sMH%BTi$kqm'hId'ߩ DeRa/ų4] 'hDM@#i50q6ϕqU\=<=*ɇBZ,{ v(tXŐSBTZ٠R(*(5{{U!+v b@[F8.H{!@zoCn) rO3RO:觃~:Aj䴥Rhrej )mPKr>'-:C."jH; @LIt,$Og | RiYy`0;|v|]:ȗ9e޲wisۼeGZ2~Yxe,`/JF)ytsQN=!!~Hexrryj'QzH A߈AnB\ƏW/[i?$>GXo: ?ꫢzSc80p뙙[AI֢`fm sỖ[Kr˒I6 àW C,Y^rTRsK7/զ@.ۥrSڪrmFf3";Ғ$+i?f gIvv_?۵߷kګt\*讖$</eGi_iڴlr-އau4V[hni%x46F+Hi9#)#߳=?̥F\mI"^F?%0B c|t:<9ԴèۏG=4>8>تddΑ()GJ3mz܊\mBnB1Y]q1"ypH.08sHX>-gqM!'"9fe<1J:EЍa>%#mo5m|k SCé1نCЗ㶣Y'ZKm:wg)h3x 4f͵-+=l[,bRC1d-5FQ 2aEzIRTORUkTWU*QJU% jASǨjW5R'M|ݧD%{LӜg@hNVНT f,_jrl_吺[1-cլU7Y 'nڛnŕCPe8*Gy&Tf/^h1f~LiCTZ7ôڡ< LV- $\Ex;XIݐtA7TJ m9h72 Q`;N >/N\.X檦t#Vbsvy'͜,aLdӰ ]ܴ,7tvb͇/7;2:qZƗx> >D }|мEg<Us}AY0t6@(7*洧ЯCphsй`5UԬnB FR\P;W{z;att*6?FתkUҵckU+ Ѽrƀ>4X󒅮L9M߱X_Psސm..M)m2}gr6 PwC>dh_0>}&V Jk_U9[:TZ1$5,Ŕ}upR.YtRE__-TN9pzGرӱDZqԡ J;@p/|*5~,I^盿܁ gHNHVAR~鯐xt߃QZestZ5:&.o4P7{ `\Z/+䲴<HY~LoUHB/ )<.M'Kmma@C/z|MTՇ{{ ݃!P@'VCrG)RiTh0ϐ LUS#HP02SN3oF&Yx bRTp ܀]o׻!é<$r/I %@Z(H{q$>݇;h;X9XmH݅RVPv!7pN{Hf%)$)h%{C{y]o=e鎉{Ywp\=/uta áXre  M41|I:.0٘lHPXCr yh⍿_\y9Ή?xuw+>ƛ^cΉJ*)_L43H:7Hq|.ɖ4%LpzљMR@ub7)f;P̝H+b-rO+ڐ\HP-B7P$BM:ɠIAC$O眇iu|= h:6>@(7/?[~!*fet9\DI0RNYNѹc=&Lv^߈lʔFPr@.,6b2Ԉ11HL23K(00& P83K0&*҃"Dֻk姍/\Ŋ^kNUQpq!ZYL>\=U&} F KFJtt#d"[͈ė'v8h;Ca5N`?dA/D:!XQK$C|Nt;u{utlFmzK߂M¡B+8I3p .4 %b8-hUdPU*U85iOxU`FT|\ 8d-RF~(G1wɄ˘zpثs:NTXeCݥC@~ H/.R})̮:,ZNrz{!·s'upwL<[/F_ ٱU( vNNδTо[-oJݢOESSi89uȉuސlT'(\./S,+v(N%1q s/:6:@ ؉%g8AA>?.vlHQD0;NGb u:Lσ)hR@.DdC#i#8B"zrC 8HڥJSBx*J+* _1V5޴ƫ{s)}n,~x<}-cZ;yIt^ t]24[b_y[n;=&#_*5+9^`; 8}Ԅ48i%#2L"e6d3s}zPp'ǧw^MWyF%\#D!S'Di{@M~b,9 x- țyP>.P-?3=1;72`=t0qhS)O{I)_hU(+$E5J|A{S(~*/oo߈6v٘ޖ 6}Kֵ{=Հz={Qߥ`c'ӟ㏫?CGjKP1XFq)<#ŕlZ$h5`5 4 P*$RaCs|Yh@2AbFɸ'QpSB[d^+qVbf#1Gt"4%g7">[SHM7Ml>]u* JZD%pO:#>1xN_~Emt,zS^n6?MZ|RŁAIIp.؛t $=7 #z\dw‡gf@ )_>ܐ|)O'Cgc0'j,v֢u/:H֒$h⎛(^c fLpilp/%:>`?];y~<ca)QKnXq/ |vXҏ+zqNQcj3J3`ap\ߠQ<ǡ u"EmAX@TV+/^u|&gŕobH "1 f f%4^0"#$QMRNl]x:F2?9p?~#܀Eu:cت$]OXRMiJ;}+]HVrX9!W:*WYH+{.&/--X쵺u֍VͺEwv =(ܯzBwBQ kWjmc݇‡u>OܚUZ ' Y&9hIVEO$mQ:BK?F^ĚHՖv!pct\RrZQ/$Ɛ~F:F>E):x.qq ?s ȷ) LyERKwˑ论op}&$\组/J M/Ԯbn!^X4hMSX=1 9W_;u?'巪m~ۭ3o[V|=kkW4Bp qlC G뭻-|?HʑR{l=?~vo{c1Q]kQ TG-% %{dfkABfI+XZޝ~nnnm%)-)dW7)WZZ3O$] %]%%J)j kJY֪[\W%RIuIi UC`'euoިruO@ɫwpk:Ecw6KݙB }6Ș8 јLrTRB$Nžh10ZV^@G/dSq5JRW>\ T$ 2F/@<y a曒;K@Vgt4j!w,Z'GݾgȎ>W8ؠnF.j^J%4r XDvŮiXL ^R,f Q*=.pɓ|zϥ[2q@i|d !J}3\|kXDP{:\BGN{a~ެ"v[tԻ%>zH`WD g_6/'Kmgߵ׸ފN6Wv{n {殳6:]p߱gMEԔ&3Lô<.n?tCxM=pź]"+&Yq*w'֓VZ4(. 2Ycl%1RNn NFth`F%i(kpјrn6wc˅n|23GO e?ޞL%1%Vi"'~vvl/{%;Kg''X`딏25ukꃁ'LGט]ꝚjzFY;Ւʢ4*֨ؔU`! 0-l^Y>LMMSk#eU>\[rdl~ڑrDzYVUv!+DSc$8ܮ8:*])ҵ v@q.\;?B)k>s4fJ 2z]vʏ|]]x>-`V>'e=J;>ްr[w=m޾/?|1UtIyސ6:Ӎ#n 5qY_lNQځƙ^JE^3{#//c4].Nb@xVh27=VmQ,FC L5 2Yr;}YuvA^KtI6}#(MDWp bGcRggLgwX'Xedھ`T 9fȢǺiC ;*χetj4JN#_]uqzłkcĬ@@ǤPp:S*BiW' 'ִ۝+n:dxZ/b}?W뤚~a1x`D,L]m{M{C!slKXTR]Ut$n=]-V_Lu(ל2kG!>e4Jouhf2"[p*WPe p0i <06y)0F!ƔV{cp˟J#vϒ(f}UkrIQX TMHLquv,N1~Ҥ+q;>;zq"TQY.4:B{=%+2# ;}+9^{:Py[|%њW%=״ }?yO/LƷ=ܒK?޾֔ñpRl]TKB=o.R,0,l`ScNMm27ӡfK=>&8V7zi5i75!?cҘ]pԹС7)eww \e^_+!aŌ*_'y5!bCZjG aѰ ~?^_`ßA=K&Z e^$k $8ZLhaaqs1xK - ņdC1 n$9#8XL$}1&z q TW7W]E%Meuz  ҜQ,DK?Y 6  KyB~.|zUjL%q nIoJY&4})%"_)/IeIvߠT'FlƉ* 1ll&I'e] E/ ;gXzA/V&O|< :㝻=em'Pl{%>S7ZoWݩ~Ӯ_Z~KiNrbwqo g}z{zW@NfVKz3ͫԁm 6DibVfY#*)ӛD*))+E$`nY!RPٟs:Lb Cϴ-zb1~_v:jGv5u[rz o<J>;':JATW1z2|J,ݜG̻:+a m"R_Ena}Rr˷H*hgy3-_87R^27Wk&lgz UlL[IS'B6"L\nF]llnlbsZ\k"Iu z-mAK/0>~l+I)ވosݘ ~<:}*'S -) 1jl݁^ H4bP%Hr*3 (1RtUZՠ6Hj󦥥]|rb^>FS/:Ao]w0b/P18 4c"vD퟉T{& EUH,+dBɂFǷ0tUB慗PD'\)eOL\s8r>t 4|W՞MJfYXu$C:ދ2*\E41P:S4(zs}JE*Q7WEeu7Qw?/maZ~ZAZ!0EhΟ2>`X kgĮѮdٰXmS&6oC ϊbc3b-XdNF$b$vݧ̗}K>-I\mAab9VI[@n%-lX'hMLĸx_\f<ѰBy{s9b(FSSzrVEQY=#f&tr3 &UZT(s`hgBT{|" H'%キBO%.!,MxٔɪUZ)N&ӳCCSer"tj9-%hI2FG?+5iI0;qm>+t z+o=I(y)ZdfaQNXG  ll!`$VWJ3H-4s>zOOG>ahlIybl5 ?OGKUAlWɬ//N|\|BkMʄ{zVwIԲ.ŻlJIv!ƂqL 3ر[N&DaaH~ཐ0' cD[ݲw;sҭ{֭ZWWT_1?Aj sU+W+Wf^n%iZ#ё^X~8g43X^CgHq}X5c!% *!S[rD7xj*Uh`4bt[]Љx)TF;CG%lf'z5*++TLJ_J_J_&;x)r;`; ܁ zH^uTȏ\0"81?+.D@P7ψ.e8֒$Wʖ-b"X5f1ETãG.m35o3xQkr +yegW+bpU&{UfalϾ{ÿgjZ-9>OmZ p mk]|Dtr1ƈj8Q>1G"H@BC9uj!$&Kq|JlY3 eZo٧Ǖ͏>qr{?O:'|q -[Mʼnyo0~ wo +^Dk 5YWM=%hìqY>#dJ|4~*nn慑#/c}n1 |boDַEj\ d!J!C ch(6u~*<$|0|ʞZ?`3Od>YD+ǭz,xapL |Gַ"T/_S}95z ²2,lm(_VaAa5H$bVW΅vn4>y%l'ފB=-ߌ K8,X,b]Ѩ8'Δl#gIGSt'T:?v8dթ[uOEU"Cp8jEj IG6VÞplt&CKXEQx˼/pwvH4#I''G+gۅׄ\n =>Ũ([u۠픍=;ohN+9g^KVVd/ż aEב5/9R05DLpԓ( Y0thD&F쁢; 6|jǿDQ$ޗ컋6y S_dTŹw="6a NU4{[7]>JӴJ[}3<{|SGmte;wĘ_]gj'ѧn&Gqx%Dp۝+JTI1P@8`3[s.mwa{w;f91g,yR~Dvt뮶]ŇL<?XcOkO9x^V[?Z岤mj2)\QŻҕRD~"xwyW~Oٴ0?lD [_\dO 'K?\251׳TqxQ\PGJ ) 6+x-q16&7. NC\P%gI3 B怬68k;Sl6\`\$SyQr)B&m3 7p#0Q1U\WQ<i >Eí6hDC %MZ u.3:}0l*;:OkHRDQSPt 9MD`"lSGafک`*t"iQ`B33De '3 ?ΟeAK '!p"o?kXwԸ %Ҽ[.n[٫7Dm9^!..^ػ|u]{{ε{|L WOІl`Z권n>ޚD.Qv֧,kV6+[T}+}zCn{ &kMKtZ.⨆:6[J[ p:tSH_tԑ&Iͤkg5fBÚG^"B)|  ?,\=aoxf~|S0!untf[80&/xwautLypA.ަ1\ZW+#ø-1\Z*0vU/FԶƾ5!]q!SGi'wZ6&ꨣޭ:C MY gSu?)ahzwj"-y1[>K`R9=s3C `K!kׁeљS'o~o47ih)u鼰,7vm{/ta=+}+/s}rϵmmRG~2$kO-8 F6?qG% "j R+ZY `]xnvo)~db,ne]By(Ya6KyLmDmJ) 99cfsJC̭S^?m1R:F]J/sG'̩.5u{>vǽ'mwG= B>$ܕ̓ffQE%VWq RS6<f2܃i]ppxޮ>/>;U%s`wMZ-üq|쓟[c3g>f =n&Q"GOsZXCؓOGfiQ(vxB#g(9?O Uo03aZn-? יo7O̜R_Aftx.91oW?tM*/3s;wNC=7P'gKx#E DAq)`E;gf# zP=rܤ5 1DFD4zYA'  Na.0$Hd-<|p@m#QglD1qM- -n:y8}I Xu͒iB+ e~B7m`ejUњLB m{>Gv0/& ̿\uiw_71OcT9=vrΟ6 " [2r *0 lH(YUj*xR\Itj)_Q5@duY BP2))aDi DherR, "XFHJNcQ3"WZ59dPBt 9nǕK-?}hHp1##'0ۅ8QKe@Khn&e^/OTuux~rT\/~hn.3Sڭ .SWW׊7w>q85%Ӷ~9^䍤}hdQf5 Pm*w7;ccIUvcdTpg8L=?R'LȣD#.`*oZJȪ(o" 8g.Y0U B* \)F\@ v7'j.p5a‰Oon_M(d0oǮ3 gK\ś޼%ַU}7_aWbwOW_?0 {yPф#V|oEGB@#AQZ gYC <yJ]8h/#H㟎6ڭVJ@q`Mqfd҃mEҋ0~јx?ȳ!5鋦C&~'pxbQr$wKTD"]G,v?y ȉ|1c=5p˛(ȚjiOct 5R5,C+}MA6w9AiWKW'?f~tO-=gyx k< tY0K-ckqf{OA-_'-0μb;'zSTɯYu^Id@ hġ25DcK4,tKwX^)P]a86)}xx3 &)3e1?}_CߞٍbWw[oNϞ_`_a{%{yh5B]<#4[+R~Uԁ^caJ.:dFxBx($!g9CdJ'Hg 4 ۰3|91G\Ib TJQ(Z,%X?y҈d P>bl]6C&\.C}>/-G<G(? z,}6D]I͏D䲲xQ">/?(Sp.?%ݞb>t$*{{0d;u_8^t`͎1Ǵ㔃s O7W \u% TՑ73ט!m'ki/yS/FiO2,ފIeuGڂ53/e3zr Cըs KʙG& dfUe}{~ۢbO~݋,gh7ԃ],*JsaP+q?ݫ7m-5 rW[{]qO?IMsu|k|'am[ r,\&^iZH OIf!5&UqY7z[k?"x7zX ;;`owfO3P( \K'' gEI<KN&'&jr0JҺרNhK` {͞-ҁ~5_d ܓVx,NZ<TQco{Ruz T2L*Y98%45ag 1p^ȥ0B7] Iຫk.0ln޼\o B> gcguu],gr@|N^+0qo)&ju *|ǜJd]Dn yjWB|S2 j2f00fFLsl??gTYRZϫb!A?Qҿ m(?ІQ.h9%pnkp!U'mxІGmcI~Yvw($w1$ݿ}^{եF)) y}O[VR"aBb/M|~}u++-^[ BCWtT{IkԒ֨%t8Zҿ맀O~me븕-޾u+E8<="4kpזY+$L.'}z=J&C+?]7"d%QJVF1ITp@J$%I,>4< V>G",XT4焜m y9'6Ȣ0!jCE6C-Ig {Lߦ/P\.+>j6vڦnߙ(((|ԥ]>|ZEНz"Y &0"UVm55Jm6ZMEi{lqkj%56"Qd@:l4a(3\%ھ(􎓉$?)v c>ᇂIe&$s`v0Md',JYώV &+4`9`alsF2F@ҹ:/x}lͪamdv[MD,i'L|cgo\ر_`-x˂g !ڧϜ(ؚ&b0B9I`f w`'4t7t0_ h*ø  <<6JpLT eE\i{<ŏk9],},{? 1f}1mw˅45b^6VP4S4L&:m}66kX+Pv+f֬88x'lOL/8 Dc # ȄÚJR+axh"3*NDVʸ!  4Bc͘㣽$EH ،rZNeHYvAlV;T\UK֒g m uz>A0`:}yަ`jbcte:j;J5[\v>T)'u?>ٝ^gqWvF5 [ث+c[C^{G.Ud,0!?nr0EIeKcy*mIhK3C`ѡr d\ESK|sF儦pa; ! ӸXykt($48 `t"U%=XdD˙ES%X7r=ՒsCpt019U*xU|kni[pgt[|g~W9?\S侐W?:_Ͽϩ[[2{ݟv3]׸q tAg4&Y " sPb2Ǐ |XRw<7^K+ޅV< gɏT>Әx[ǔdOS*ʸJ%T@X =y_Pś+)ݬMJl'Q6ݿ|?c7룩=-_e7kdտ/L?w|Vx ~4]i*nk\kI1Fy1ҁXb_it JsNoML XBN{E*ˡvzN"n0r#WJ jp2WhPv,^&{dN [`::;?`ޜ1rT_/Nhz9GIX% ,F:R,sȕb*P'USY>2Umx㧷7ʌq5g9xD#Պki]9tfl^VM&6xeo_`6- `,-b/{?XXHw-d]2MSW˖MxIwRxA:c0?cjPPH۠?wȏiwB7y3n7Y+cs|(:ģ qbd@eRjDw't::δ`ry4yd~1k9~QoelpӃ-NggGPpP-&-CNwv49 >H#P'F ތ.Z #%Z/du3lۘYŌ䜝SXwr=''x1«W&YʍH=x/·M&{{Kvq" Ϸ}7!YG"lAOZ=S(yg}$tƾe(z.Cꮜ <cA,U`gldn59Ӵ2GwPkGj}A_,}cܻ=ѭc%1礓uN.=J1 }idc+\V#Hˏ9[t/]&͌idӴ"Cz`cYOz'mN+m4vH&?[0euWF -@b!%d9oDHWK&EC$ i'PQ`^h?$r'drpY$ÜuV߱ 겝!EqyFe#OpuѓS0W,Y6{ܶo_jwX{Vu$}7{2ҫK?ꋯoӡw3=BxeB"46j׍ntSFnyHa NXs͜:Y>s^jl@~#&x=F9b37xr?P$m a3UԘb\6GRHOvGShlecȴtR:1:mx34" <}7x-=Aڶھٶ{)^%>V~z+ͫe+ 9[ .CTƺ>NJg9a"cɜ ݧܯ9h{Z1h~W3ϩ]1aJgFi)&\TW ⱺw)^|3_J'&rϚ%3_^\uu櫙?a?4҄*_XnU3M@SRM e Mn颤qbdKt(gU )8 Ky3Dכ^X9Qx# DjUIOjڔEFbjzĂT Ԯ" BJrW %-+4(r:uݟ$jo4b!Ĉ'uԠ:f!4QG6ݟ?;QzH ֞k3ϖמTiT)&O[2\_(-t /+gXJ+{{k&JݖS2pNi" VH~WTR񨊲(r3FZa!&t+ZRx'O6!Р+#"IQ󈢖H&+J(l* :?1tD6!\P":1*!IHC~DwftrdƪF$:G5D"{Py03^&Tc2A1թaf4P y t9|~IJ#]"h.qJTQOd·?'fԠ:)ftTώ礦3Q̜&J϶&n A"JAi} ,H?O"Vk>cYs y"=s> ddFFЊ$@'"|@uA[Ox/d1(G3AM d!ink; lķJׇ,zSyuߐAf,G)f~aw@R~KuW7+f1YiٽbPwMіjTDTeTtKLiEŨ 4岑hFbuuNh}:-RJԬI۸x>[rn2pzһܺZZZ]ZYQ{k;;O}GSQ)9]BLb{Ewec`o+O\7r{K"P !ZDRoEff#h)~/]DIjgM.g FqmML0 hRl69HͼdMj͗NW:mNyLkkO9לa7Q.k \2qFD1þ6]I5=p0JlO3]CRЃèw><ꨗYu8~rxHv\3|#-n %*oGTB eud`';)8#B!٨\%\u.Iκ@|F%=ֻo=SԳ_BOgu)z~uR'\5kQ:  !t~S~F#Ŕ~A x_-ړv^>;X >X}!Jme a z#,)mNmogI9qbKI3ɤ[7wCDLsS"s,31P;6!!Q6hvfTKȟɿNFHd5)EԒGw ]Nj R`J+=BϢ ! fY82jɷ.X̲'$d0]r-TrxCա w ;,>>ctSѩq "\NTRx_h)A ! <9rH.h1B"iO9զˉzYB{ExcoDVѰlDuN;}*\B l BFWvz̼i97\e" y\s;挷i5QE9N@F&>X| my2%0@ׁ14?{HNHzlS6#[v"+qGQ!s.6Ɇ]c P}@`0)~-˴ .kFo;w֣"LŁig9OPNG1`g1`OT·h_oU%7WoX%6"kͻfO#ɋ|epaA6`;}L81͢a^dKr/Y^0kU9R,\"-7@opAhgص-cmG/j{2Wf_/[zɎWktμl4gӋZ>Kb%B/|u7 ot_ţ/?aM|~yVaMMhYaVs" zh 0(6H" HAY#uɺ*uQ uno]k-FKR -GhZIF2t9Z֢uh=ڀ0ڈ6dQtǓ7%},:{m!í <֒R+kHQXBH9KJ5\E)+I؃|]\Ay=j#e'ˠd#(2;_}d\r\do%E?BvKńΟ~-'[^BuW\MIkEm,& !͐"a'u9B!jaw;d<{!` gP̛|HBlZZ! Y endstream endobj 144 0 obj <> endobj 145 0 obj <> stream x]Ar E;رgoMt^c"!΢tх4< Q.KZ6]}5|ѦBQ鉮KRu%lOn>O&;UM/; L1qTGS|6(010 a%AV֣F-(2zV\d٪mrV8Jnӎ;h;v15;x`j9ƦãJ [C\G^34B-1} endstream endobj 146 0 obj <> endobj 147 0 obj <> endobj 148 0 obj <>>> stream x}{s$)t>fwcL$ ?TUSgM D%2|!~֎ɚ~]\=<{lظg 7+Wg9PsChŰy8?&w+5X>)09}0a6y4~sv;_\  -qܞQq1WT6c^ru0 ~1~sʯhx0ӯ?1n?ffĹ~L\x;.="sG.T̖91{K"J1fo[X=rGJ9xhVٹ?SR~Gk0xe[J?>Dos.#,CCZnnR vQZul_(k||b ݷ2O0Z;^0ٽc]7 a9\ud.^n)#Ӹ?6̙"m{Z6Y<^(}Y~ ޥ}t֘|NVQ< Ӣ$7\a4fku"BX6c̡,iQsqCe0Dj1Z3(k*Go ? ~DB}O-:?< cm.mq&U>t"9 -◰>FOݔJ„' bg >e'Bl?kJ+&DG218#ҥSFH#Te#w9iin' $BM;R e`F j*UwE\J=c9QD#L"^IEJW?ĸayUCBיP|&9} Y 3&դaN%"Wh?2HZ(aކEh0vg"l#eW-d@2&eagLUR eDfZ,M7)eL=}Hku>M{'|H\Ul.llY]1o}p-/hIfQ$R1o#t '7N]j煎uRF9IJIKz1I]ls }ld*cP5.Lq۷2$7\(4J18>z8m{L[1Sƙ)Cx^B7.XĊ|`$M`.;jpPxڭg} 33NIq :: A4!f#K'fdpM*u[NvyG"Ð&:TӶ GaPhJ4 p#{ # \F A]A|:zC>~;keʹY +lK@(ȯD;WQV'Yf],D ExY}S6 u|'8LI䨄ZO&Vە fE?+5!gh(u,oynKr,ۇRUz2bV7o{iw:ä ҶlǐC}a#6HRv(UlYnV5@H( PӪ}6niϲ# [ǘFhͱz+?yHm)]-}Lw@/ Z-1ax'.J L 8Zy#n6Rڷd@Cv׊\v;)jȬcmw&n(XSmi$M`ƛq.+Ni#Inf(9]tW4Vݲ7a I r> 9JV0q.}"6 @v4SՑ$FMl;>RCp v2F{Y zhdtNPƵB+_[m ϊ}(a˥ .5pQ6hn 6=,8[nҋ dm~پڋ]@#6h,VKuAjZKZtdKaAt@::RQ]w`iwںw 2dMT3A%$nAEyZ .aDqzmh@lFGc#a;m^ԣF*Z[T"P u4KǎfÔlv+~v jK XZա>G!\שׂzP+4z- 8d5x/rEW 8h!X@ב@G[ ~E3_atC .pг8CI;.+"yDZ7mJѠ' eɐvBR$ixY[$(zFǸ[Ø,/4 .DҠtV[`O ?BʨYDS|h+QM+Q" Y3ԻȊU^P’:yR'ޑ"Yׅwc](dڄ8Mm%yhmDhτCaA ʺ#"',i%CjVVpH) 2.pq2BLj2[/yʘDĀ{u+|2_N$^Ό4vvaUXgjnH!Kv;wڌa+7XR2.q+X͒JE 1hTP\0ɃS91,[%-q4I}& ke`S;xi[rl`mwf<DZXX+Gؗwm_Hð%S$9q*dG?nj \q{PjU^ً H]*+־44Z1x|4*rf6[Skhz(,'=;G}3J-"B˅\=:AqEۘ2= &#]ttum"o ON#=? )ġ!ajIw%3Tl3NivfI% ;PN弰!a@KY'h߾= Iؕ 泖Nʛ;WF u̺Ț+ L!fX9du^mZoX_gឲtWϾ+'3t̆3kZH=ę̤^FR٭ `;&SI%-/]̣E)EI;TRvH56嬔`Շ#Ym&z1ʐє`6M.%H=Xe4Ʋw6,R''Q`f;rPǩGI+7}:>_f=6#)iYfzIj tI?7/,.6$H%w8sR?7μGqc^RUhftLʠ i8Qi6z!n W_ODZ2ٯyؘ;[01<0+`+GdWu:d#L#_ZceHBd?DRPJUp6y$+ASNj*9>Sy|6tr@6wuͱ̞0-q;lAjEGto70Yr׻Ԓ}_Bl2;h>@FZY$ƹ@kAڶ~ ]ej*PJPSoI RPr>+n)=hV0gaGHɕ|%aqٳ"L9dti:7%"3y4g&Qj*-uu9 ׅȌ ՠG z(.֘qll8;b9jLKc]?c(p\IGR5]9jn!"# 'xlc_<<"ѴC$V/bFP1F4;aĥ)Zp` 9dzEqZnX9o#AF;jC$d5r mG:C_=l7UQCG,n`Eek$Uk0Qo~[/ҥqUw-z=\^ ,F!)H$WO fcrns#_# 򇢨@,؎1O4h)AF\@y!l^> Z;^&IjX)!ku[c:->@KZ~^:ѳ%8rl7ek^=ߵa^˙GjBuŹ}s!"0! |ۗ4R|ފ` .BL|o &2 $ EcW}#gPiα-<~3?m!-9#McQ&.RM3Ɵab8{?1c 8N2@}b=VpRcR(yM" K9iWg >ٸdC:jV›2hDz.4xxGJs;|L;nf)ϵъ;,ĎDeQ2˼#qe;\CC"ɡj5U4^DtaLʷo &;WR=j{яr+eyPH>m9HyiVaũ9;5A) x5O:S!HG!QK]ukX\e躼/ {5S2Y+o,5}@n4IE\[6M2C~Q\lМɊ5.Zqu{aB/3RN0qlG'^c_{p ጅJa^avb MWzdK*Č;2Ci/@ s!')BH1?hu:%)qI̥Iӄq&{%Bb*c{ےC~kfv y5GL<4IcӄvedbyeCD}`l?Kr6#`*r|cs3GVb_Tb}S9&\8ٱu%!~R?coy r%Ѵ7nK%<||%7cc㨁/G>Hv9KՓا\uQEN7P^*V%̀7!9i $?L5lÚ[f. [do:;dA)r9=q)0NY n;^R*dYti>uBD5<5KƘQ 瘘C 1Ĺd:oaQ,wBIo3:?+06RYu<ξ{*XpF5cDۙ qOo|̌Fr?BGVf5bC$`qvA!Mǭ< !|%KYdq8OcU>+f]t2-=I,&F#_/Vΐ!%u Rh_.Hdo~ !'֮\P*s~-.x3V+ggU>WSϫx5g4}vQFbuzߧ19\ޔw1o /=1{tuC\)<6 u즈ǔK:t:tQ}d;ȡ Ma;mPŸT]\@+-=4X q թn }d7E`b9sB˯K-/ԆEZRoY}ipt YyN!c㣩OMX$Q̠w-P׻YDƷ6-]˩Uπ?E??vcÎ;O ПeX<'pV#f OI&y7{kٯ'AݴƱܑM{O*fLd eDL{_KS=F(a;.=n|zϛuUo/HW9 gL嚲DKgۦ}rS<"kkaz#ʅft[qiIÑs:=9_|1>y|;b>B]_S.6SOQ¯gw2+>*tze@x[L=n1Ax{l|vVռC &@Z)gfMW4ZifYtcwL $Q;(VQS>{YfD3Ю⎞d~}FgetW&[45?ŹOSWCDRMWy D98f9xtXf7hjVy;r\c!3@V?@Y$Ȃ9'jt@ ڡ2{E<_1;J:-8DKN_MP):xץ%;ǢVtie/UVř ހӛ36x 3xeE?Cy.> |Ѳ HJ^=IVܯܐwU@/uqޗ[y%N1޾m{AEoFjY{S;Pߊl(߸[y2Nnw迚fW_v;t8E wTvw轫rH1H3TןQ>o >tlKzvG_%/휢ǘ#o;~ffZ-;O)5 endstream endobj 149 0 obj <> stream xS(T0T0BCs#s3K= K\B=K85532W57730(+*r endstream endobj 150 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 153 0 obj <> stream 5 scnrRGB XYZ acsp,desc`wtptcprt( A2B083descadhocXYZ ,textnonemft2 $o/)eM <{S]\$ / "<{^KO[a`AO ge TK\u$ / ~<gKu[z*,KN;[tK ~J% 90 HN<1KLz [TpH,_) mT1 %] 0a = K m\zU!eJh$ m! u]e  } t% c0 x=L"\# JG Y y s  j \ )i&X1Bm>H+Ls ].  [  { O 6X 3xM8'd2i?$Mf^ zj1^m. j#G>(tT3x @3!N!#<_$$?%'%H z% Kw&;&L'5 [,()a(4*Az"+@O& ,``/}0000"0X #k0h11 =2E!!3+9#S46>%5B(6QQ~,7a <8 <!< b!=! "J=p#G=u$>e&?#'?,*1@7,AD/CS;2D~c(uKQ 2(K` (K [)dK*L+Lpo,`L-M%/No.2O^94PtF7}QU4:Se1K[ l1o[ 1[2:\'2\w3\57]k6^'8^1':_<,=i`H@Rb!WnCcgm7Gg-[PW ?X`V$ E/ Z<sK[e<EPwht XH=x) $ ^/  <HK[}cOrxA>  % (q0 <KP %[X^HK 5j5 K%a 0d =! @K> \$ VN A q ` 6 b  C %x 0 =L%6P\    v :6  7 |*_ -&"1>KLD]2  ^ h  AR  ;v. V'h2l?'9MI^/Snbf ZK(w3|N @76"N!#t_=%a%)%I+,% % N&:>)&'m ^(8))(4 [*y$>&?F#(i@,*A7-+BD0CRS>3]Dc(K 5)K )QK ^)K*L=+Lr,M1.^M%0>N.2tO95PF7QU7;2SKe1[ o1\ !2'\)2\_3b\4_]5]74^M'9_1+;I` S}UL]9 P `f M Y  pC[;o'op^2ts?/M.^&95uUi FRyqD( 533!I@>"N"d#_$"% F%%2% &C V&F '8' e~())4!A*A$*+P 'r-Q`j070;01 .1T12H 2!"p3+D$46H'25C*6Q-c8aa!=hC"=w"a= m"= #>$>%?'n?#)N@,+Aw8.BD0CSE4BE*c)K <)L *6L, f*Lb+qL,nMy-M/CNP%1$O.3YP 95Q F8R\U?<Se2\o v2\~ )3 \3\4G]#5D]6^ 8^'9_12<.`}<6>aHAbWxDd1gsF@'d~ SRt 3$ h/<K& 4[y7&/[5UY%|F k"x D$ 3/UH<?K0 [b%pS G } ]% 0"< KcQ `[Y}-kMG_ = DH p <%u +0xx @=4` |K \Q 8u  a? - } t < q  % 0p=X'L9\   i " q 0  gsv@W&1>_LJ]E c &r FR|f   7POj5'{%29?;kuM^! QuC A  _?, (+ 3"@K #KN#$_1&U&e&?& Q' bN'uR'#( r)t) 8*c4"+xA%,P(.`w1f1uG11 ;B2?2 3$"3!#4+P&*5s6U(6C+7Q.9'a#w>.P#>= #>] y$f> %!>&?N'b?(@#*AN- -B=8/CRD2DSR5Ec+LL I+pL +L r,;M(,Mx-M/7Nm0O%2O/4P: 7kQF:TS"UK=Te4"]5 4F]D 54]d5]*5]6^U8 ^ 9_';~`T1>=aD &1 =JLK\ 5 Y  $F  C2 4R&1T>q=?L]W:I ixI FZa/X'0H2\?MM!^3C? u~ .{/qP c>0!/(e"3#3@]"$nN&$%_C'y''Q'Q' (- t(d)"]) >*)"t+4%,A'-P)+2/:`22YB22 M ~3=!{3"426$O4"&05+b(e66g*7C#-8Q1$:Kb%?Rb%?a &!? &? '\@(Y@r)@+-A#-Bq-/CC`8"1DuD4ESd8Gc-M [-M -N .vNL/1N0.O1sO3P:%4Q/7Q:9S F$-04 B< ~KCe [uZ  d8   `| %%0 <} 1K[ [ @K c[@ z .3  k + i%I Y0L^ n= G K [    0 A  0 >   ts @ %) 0 =_(K\E uc   ~  9 * 6 { &!1"=Ld8\9k\z8' [J%k&x1W>@M!,]p)Lx 7I&mzG'32?f!"M$^LG# O G 7!CS!W4"( j#3"$@u%%N)''\_\)@ )T)1i)g ) *"}*!b+U #B,!)%w-5(.%A*/`PA.50`!4!4"r"F4B"4x e#4 $~52%5O'S6e")371+{+h8 6-95C<0:pQ4';b!(@z(@ -)$A )AA *_A+\A,B .1C/#0C-62GD8;4ED7G:S};Hc0Op t0O &0O 1zO25P&32P4wQ6Q%7R//:S:4b6( @c1jBct   %6 09q <Y )K{[ D @S_ s S c  <  y b%h Q0l; f=($Kl\t   -b ( w P ?` l ` %0={"L \emn}5[(" X&>|1B=sL"0\c.:rW {j r&q14>"M/%f%] 3n!)q W&Fjeg' 2"?% N (!^l!!#!C!^"G f["W#< 0#v"$($F%3&&@)'O-)T_{*`+  1+* +` !m+ "j,#,%>-M '.*)T/5 +0A.1ZPa22`%6 %6: &6p '^6,([7+)7n+/8^"<-9)+/E:61;-C[4Jc4hQj 4Qy F4Q 5WQ96R7R8SS#9S%;T/O=Uw:T@VGCpWUFY+e==a =aa =b >+bAt>b?b A)c \Bd.(+Dd1FeR<@V+&@V/vBW:zEKXG7H3Z6UK{[fBdJ B&dY BqdyBdCdBDej1Ee G}f(RI^gh1KhX T uy v E  _Kx,+C% `40"H=K%K)\1   ,CR O@>G_%!+0#=~&L)`\dY- `M =lp M<&"+1%@='|LZ+@\ X-~} %qg d5"F&${1'>S)&L-9]:6"*<q 9!f#$'?'$2D)>,M/ ] `! %!kE!{" # 7$ &x!j(X"5(*#%3 -$9?0%uNa3L&^%2&o%V&"%'& 'R &' '( )(*)?,* )+.*401Q,@4:-JOp7._*?0V*c0eh*0+.0 [+1 ,1u.+1E/2!13t*q34c5v6^5xB29G6P<8a00;e40T;t0; ^1 ; 1<2<q4=5="7>+9?r6 7~H^ 7H 8H=9IN,:IkKM-@L<8C.MQElFNSI_OdR>V ?V ?SV ?W)@Wx7AW&BXmxDaY&FFAY/HvZ:K[GeM]!UQ5^fKGg5 #GgE H)gdLHgIdgpJahU`Kh M6i(OjT1QLkC#c$%'0)=,L/V\hS 9w<cBr -u"@#`%+%'0*r/=-[kL:0\B  6!VA "S#6%''&L)=1O+> .L1N\!7!F"f8"#N \$KWK%'l)U&+5E1-Y>0M3]q$M,$q;m$[%<a% &K(9J)~+J'v- :2{0k!O?63U"M6#^'"'"I(%"("=)`#: *]#+$/&-2$/%(R1H&3W3'@6(N:*G^+*[,*jY,[*,* L-+ .+{/,61h, 3I-y)b5~.i4f8 /}A":0O>;2`03131i314) 24y934)45m|6v6!J8V6*:75=8Bi@:"PCJ;aN6>k7>7Z? 7?9 8?9?:@~GA,'@|B7,C CCEE2RnI;Fb=K '=K >8K P>L ?sLRt@pLcAMFCFM$E&N-G[O8IPELQT)PS`dEZ2 EZB FZa IFZGIZnHF[R]I[K\&}L]P/O0^@:Q_UGT`V"WafNtj ZNj NjOck PkYQkRalM Sl(Um2Xn=ZoI]|qX\`rgh$.%%_W%>& z'j(*l,,L%.01=37L/7@\%QF%t%o&?&A ')<5*,&.11p=4XLG7N\&y&?+&4' j' (%*+W-w#&5/182:'=5#cLz8j\'r''(au)9 * +^-_,,.&113>K6zL9F]1)k/O)>)^x*Y+ ,N-V.0M' 2<25 R>8r!MP;"], $,8 3, S#- - G.!D6/!1"wW3q#B'5$2283%G?v;&M>c'^\/}&}/&/&0k&|1('2 #2%'3i('f4(36)(9*3;+@R>,NA.?_83.S3.b4".4. 5]/ 26Z/s#7/u9/0 B;1r)=D2a4?3vAaB4OF6`G87,87907U98! :k8px;h8i<9e><:!@:*BS;5DQ-K?~a>B>B]?!B ?C1 Q@\CAZCBDu:D.E# FE,gHDF7kJGD'MI*RQJcEO fEO FO FO G;PJH8PI|Q?K Q$LR."O"S9&QTETUThWWWdMf^* _M^9 M^Y NT^O^P _JQR_R`~&TaI0Vb9; YcMG\ndVa_efV =6pL@~\./t/h/g0@ 124Q4u6V&}81;>=>LAI!N]#0P 0t0:A1@p1 e2*T4=5]t7)&9 1?X"iMB#]y2J2mI238 =3 k 4 65!_&7" 9"'S;#2W>g$?AQ&MD'x]4$C5$5b$l5%6%_ 7%8&T:n&(3A)?C+NDGB,l^8\+8+8+3H9J+i:+ k;,#\;3 {?83k@|4B5- C5)F#64H7AK98P/N:`A!H?`+0K1@Q65MAeBPBQuSDaGGSGGbHG HG I;H@J8Hr0K|HM I#QNJq,Q#K`7SLuDpVMRYOcVNoT NT+ aNTK O]TUPTQU<R[U>SVo% UW:.jXX*9oZY>F+]wZzT`[eVEb Vib ZVb W3cNWcfXcZ0dZ7[e']e0c_f;hbdgH$eMiVhjsg _s# _>s2_sR `s`s/atCct!rduv)?fwvA2hw1=k9xEJ^n"yXqjziD7z7z8>8n9y. :v;#W=K$?+&Aa 1C!>CF"LJ$<])8/-8S<8\ 99 -:M<o==? L&A!<1DN"P>[G7#LJ$]B899i<9 :Z `;O< P>u p@V!&B"1E#>H%MKI&h]u:Q!&j:u!5:!U;@!;! <"E><"?#xA$D'%C%32*Fp&H>IY'MkL(]%%@5&yxA'#EC''E(2Hh)?dKQ+.MN,^J>)?)G?b)?**:@*y A*B+n$Do,FP,(PH-3UK.@M0#NQC1^B]0pB0.#B0NCK0 D0 E1?FH1G2rI3=),K4,41N{5A@Qe6}OqT7_F7F82G8#G8Z &H<8 I99J}9L:G M;*RPX?`KA^KAmxLALA lMJBNGB}OCUQC"#RD|+U2Ek6WFCBZGQ]Ib'QLmEQL|RL nRL S> endobj 156 0 obj <> endobj 157 0 obj <> endobj 158 0 obj <> stream x| |SǙ{OeIOiٲ%?cbaG0-ۀI(98r@miJB]!iimnHlvKҤ-mҴiflLvcfg{=0BHv"56 #;huh?#훇?}!ŋ]~XBޑN}eFcю׾Un(01B7!4Uj?;zQ)m_)_0blTΆ~'bk |m2dw!$[l=ȊԻ.@`reF䞼~< y}pzEKc5{е5t i~qȍjaĠȈeAZ=tQ=68ueԇףSUAN^^̼o,2"ԏބܷ{3u-}Gh2S#=o"'jCsީh:~ZFdoN^(6SL}(#}LDkr[8TԂq'&*`GwGo /Xx^ǿ֣a [Qt "[FVA>tCp=ngCdTTԯP>j@?9.0X;ٹ!YMMt/o8w0;Lz֢D4]֢8ڌoUCϣ?O|{AM݀[Zko+aہJh7`z,.x}xb䌓`~&W_r2T0A@F/pBcfS ϣk̯[}em';^.0,gx|?ey͖lfapoˢ#dSS.0úrQ*Es:6IMh/ nt}A/@ 5움nw >_/wa\ra2]̭Üc`>`ml; I-q7%+gvW~"嫗/NOLjMZ&4y&=zjE(+|x 4~ki&0r2\w t,拓َ2/77O}Uf^Gw@TbN0fT)?! ϸ{3Zx aDи؎.ԏE"~GfKtV9`~:4Bֈ}Lnd>bVϱe چYޙM>{\iuM~ Dcޔ|[V0je^A ӌnC4nf@7Nd8ֶE6]fAߣ-X:vx:P+侉5`#B00p/їoAV-fߜ\DxnC`m59oozaب`_B=S݊nGZʩà7OrK¬Rб/z{zo;˞A{Y5uQVڄ~x[ĞE%˙S ~Pr4= YtH!ݳew`UX5ysJK¡`aA ?ϟz.جɘa:&]R*2e0*s/l$s/ZTH(Dg%(ZxuF WegZRKq%JTYX Թk8^{]3wֺ[E /~ kv:PgMK.ܽ;Nq 45jFwql)*3HE%-ں]KVduюduuV kȽ &N$t./8qmh w;뚓l̡I +YPӼkv[gHv]Buͳk$ni1waޅ0Ҝķ„ٓ]/$U׷a,{hňsbOMG:aoSۙ[h1(),8%R@f6mN3xdEI]4aOsIυfk+IjPΓIw {$*{ .a4@2?0( kOeǙ Fm"w: yo$w^,:P%ɴ5YH隙mn9_d%:>;"AuL_鮿nmP-rRܙ @xVm&O]i[kLf4VE+K]73248ǸB LK0ɷ-44>E+R{JVϻ*`7ݻ7]mڹ-fyo]4ǧNnM.6э+w\|#Q35m Z{2@2`@*F%mo=%"r1e2.cDZF~DS45*X-sѧC>\k!%O`A7 byYa\ˮM (c'S02(Hܬ62dbL)X\̢@oδQ"q VT&[N V)8uzSFs} ֢uuL`))E9sP"ˑ^"+PL%?U&{)895o5tTb5Z}{ ֢+z2B* iy”R +)|U)ID# h$$FK4`F,H%ID# h$$XK4"pڬ^FYZ ?BatLg(9}Ggi)lm1sfq̂=;ΧE RS+g_9kY#iV&4Q'e/szT+|8NiB^G?G ͬL6e3mwݗE YTii5t5 ^+`A 31ꛠv-rH6q(BOVu,'t;?v&@i ѵ'mR] 'Ade7ܝtd_ FkNܚ*J]V%c άF #sU#5Cp24a'ˠ~9 B Ї PJ⥴JVBL(x-RGO iF|w\b?]e? i;ML8ЬqO)#~xfvzuô/_YDM"'11ZEGQA/BlP:ΑJ圞; Gۡbo+Xl([Rc~|)O@ʳ )F" ]])m/,\o(ڛ m违;H屏#|fiA:N;v34RG5HK4RŴ$Qt]L,7?bJs \o FJ3WZơ)35 _Lsgy ,{<PcO劣픪}A322_jҎ $;O'$)j\>OG [B9X3_ ??C{lHfH᠊#g̥y>JPB,VT0AMi kU+ N5+#"OYo￳ҹe/$ܓҶdM+>%1~)Hj~(Ez3@gh,?鷺|ob)θiL>gf{ ,HIEeѢ)Z0еSoV#Y+"ďJI$DK.omR+SI+$bhN*U_JkH<%=3*ҹc)۔1/0tO 6c>|o6%V7SZKJ%Rks*HMY4V%.L=32I5l %b+ɘs$Ϭ_˞49K<1:(LkawiF:V? 7I 4~'g'-V(&b[9Q"Kmn&NHd`n`Au!48p\aaHÃgc,RUK幀 y8; L  n>юhJ>b[cdý`46nNIW<4^BJ|!8H)uPD LQ,qC;Ih`6e{tPkPЦЦ!Mfh!B:?AROv%?w!PJik`SG/.؂5:\1]?}1Cq{YcE2jU8;Wsr@Qn.t$~E zH#c,N]VqmIn)w@G.7TK/fM]/ K{0F.WP|uBQYݱbq@Sbb+.sC(xg4Jk~5`A (+cTBbA~ט?XQ 09A?PD1U} 6H4À> dOjNiŨzatsCh}AbRa: !&I(Hb0{=rA;{P_w @m(CIz TφTz?[!~`M7ôP*=|a,@tzbҙCZ &)tmu)ssU7NQjSmn67B+av$/!!X '!> -^?wuEgN@vs]ɩ#BM:6FkcctRH)Xe  B)Z> 9N&%vCƅk [XJhX_紩U;U,TajTv:[6YQEE $Z$ \7r~~ӦWTZPբQ-s([ 8<~!pP._Pe(G#|RtNtPR"IM#6ZLt#R!jPJ^9#AX9 4@seX!KCx.o 6u"\gp2XYU], 2 qqwq oWVq!wq;q[zfkKKKw,eFb$=1jUcvC|;X8 B|J E CAEbGu"U,lhEICP!G(m-Ahy! -w@<݇ ~kQ!kb~ pZxְks9,a+jI4~{h\Ec]xK4-i=4vjS՚jM^F3"'0Y4i\ f:585vj|˩pjq~6] Ic5}4^Bcvh^th84sj ~h4)]ahecA4SՐLV^ hÐ}g'4炣: _‹9s*#^@]>*VD? KI?ix1-V7G 6-YBtG .@G @rhA/$Fd׏V; yҶyȽ^+u- jf]I.Y؍tQ7dr!lMmE^j.^\4UoQOy/8Z 8 ֍>ga!xFcIǿqǫGg ƕPq`'Ihc]i!7T:^x QMϒeMPR0߱cwCX i wxGg,% c9ȇ}nUsN3eHŐbb:D ZjINyh:[dpsb=!0[@K2ݽ @ IH'ҒOSUsZOé*(Lu=3H@<4leC ΕɅde]Rlmé_Mȟ|WWyXlx g\kkKN*5+bjÐ?$? B j]] y!ʀPa%!?_ C7CuB#%l![Xg%31cF;tZ)[.&HGJҪu,4/Cxo -f׶ # h00`@@(MjGx҃ 40I4lCHf#2Re }pS̙Q$ƙ?Ţ4N`dVegA,C*ǕK&*QeNS8tY`^eS$pg_c~]pDxgVӭ/Ҟ-|zk.g sdsuy9 KV(3sx_Y ZPwuFLEMnٳ}{kX1ۡ#_[z뷑mV&.K&*/`"T: Q+h `_8;+S(S> l]$2zR9!MRds&W,)]r.eYIiH}ݾx~5L'lڳy+gm?BsIYW 3>R.n:9l6{A qQ R9 *) 6CzlY!kab&s#dD+|62ϙYF ) ALWs,G,6k烳[ctf7c /.h^`` PQV^^Vs"!k@P̢]&5fhT뻎}mDjVTe*l PS1[%$8EX VW?G`H$ߒ/}Z֍xAGJ|Q,$eDʂ|}m>Χ'(v} h"4|"2jFĥ<,f ͚c[YyOULf;9[6L-@y[ Ȝ$ʧ!?R1[PKڙ%w m ݴ@=D*j2VTxa&O:{87kVN~(Q `̎ů*Ld$Bd&ΞT,V<—/ך6*Co}PT}T%Lo2>>1fΙe,s٘cRj:|yq0h1&"h N3P*gKt^fǧ4[1̤!c}FOUU$WsHT#z]:w$p[;p $=uspߡItCs'w0L':tq e1X9mzrogq۲o5rJ\ƺ~+'txm̄dD4?`NL/3b~[\4G{B|3gPd(ˠV/ʥJW*/"֋ 'gS[儕)yU^ϫro޺9y| l@tдV t5{8K*h}S^YTH,wnvߍu8څ%ٽݷF4|_O>yǓpIhyvʶw j~6 Zވgԛ*o>QDt@N_?`,M'p&f@t1XY?c)p TlR ꉌp[Gr8{RRL<}vpť,)ۈl3Dv{g~OdhT26;Sڲs JBU~|ǡa*}VѪt>ͮr4:Y ޢX6SIe$ 74hT,b]*6, ~Ufz]mviv {}P )){SWt/?y ݛou?${JWoe W$cT4*ff+Uϴfmxl.=cGq%Q39q|BLW:6+;[T)mJ}CZQ?΄>N Q>.lK9lwd5F&J{/r6:ժ 2Lw۟TT?b;Z-ة",#^(.Rdj}b\6LZe.Íߌ𺈿hu^:v_'z`=0_ !}Rd\f^=%Z{r4CorJ厔rK^VkXj ?j i sYܬbLL|Mmnd\}ȋMvw76fE@Q8s*N N^ 4!aڧܧi~Y|xl|XHS)=}DҪqXNJJdVjrs4e:vC~ >&ۨ [.R]LvܥTQmk*0L.]*p v9Aݥ7 oa2pP`ifg&*}Xs0<ǓzⲎ)Z9 ((. ?7SfT(xן,yXpzE ivR ګ-L҈H/B P%U@>Iq+sf+,=XEdu$K"C {''v wT;W0{&{_Y2aeA6nsgy*W4_q{{֘%@8Hm%!wR] ֜;ʕ+tVevXӭrXNA4B7 ̑f_Sy^N)qX٨lSg甬#͔TS{`R̡j<*;w:;ٰd:9/z@1*l@:$qTT yaIU&f3))>3N J*| ]|8b Xta-^A ᔐ].DQYggCӕ=ǪƕN '3kglnUgCFwT]*UUX,~l/o_4ߍ {ƅŸ:tqE 7Lo3Ja8]At1NN5&* Ld2#l6 s~86!xvl62*p8ׯ  $ yЙt>;q1f^'ķ/ $xOHh*:TJNr٥L9p$@]:OSRY*,E|dGL!q| cΌHח4`̝p6('gѬj.d6'՞LmJ8r_;Ck<6ochlx;{/^o`7z?GTv~h)?al 9 e 3flxyb.htͬNK$tu z0.+`p~[i*fARzVEǧ?p)pts]U=<&/# t] ĺqCF跧u-!@"@@ :>4h}.\%$^Y fCBCZbXz67| ;6 +jȇ 1!lMNSGS&'|S"lC #P60o'2#+wU*J?e~1MK_#ͻf^< V;*j/oqd1[IGVt\,pXD<(v F#6/W*' byV`ì92!GarMFrb[EN][ɛ"/çM"+6L@24M!63Ye i,GN)75Aσz+͓&;Ϳ<ד}{4v=}`?|e߅+qͫ:&(@-}z a_( MC!ۍ6ňii/푛sFr=A[lyzۿa=oMtZJ]aU8ݠhn# npoY~83JҀ,%l-eq`~U b1 2glS)@bNK-S}089{N/K󔼵.#7&>GnL$gޏ#1Hjm&ߗg` \s~ ZwJ鍊q\vaЁ0Q;kXz1:ʍ[V: L+gǓ?%Vt߿薦FsCl/G=vN{mZ#;'Ӣɸl" ЄWbVkěmx?OӉhfW+qRfytL~qhRaJGF(^D?-A~_J^#hơa4sH.[Vʪ%IDO|tFnz^7#wd q£ȧ3^CRمm8_-l~ EVYy<=d$YDxFԤ>΋|qם{1,Vm'ww]K"%KdXEu[M?dr7>:|ztϞo??sH!Y7H281R†[}/_(d{/dLcê^q{n70Aakw/%{pʓ%nwxn}sysL?Nj (["X͆VӅ~+7_tg;6[d {2;D/Wd ^ѨhSYJD]?'Z@_4K/ ʐiq˱slyJAI%[΢E dg=\=3n5x($Iu(%)Eĺ5 L@_E.ɋHCZݢ}aC%QUPܞP\4g.!ݖQ:?`G3# OfR G'HׁĒew+p:1].yuO7YV"hͷ*߿}dTϽpvfUD}7֜܃uǁ r9.'=1Y# `1j8?ʓpWʭ77e埭C!f]Qަޥ٥E+p;\4%RMYNINiNd-+,3U\a5ה-,oR֬W88ʬM&sx]ɺueѲju^ښV  C"cÇCg?1p⣊ʹVgk;pVԔ=TdVt))5? ʣ2] k9&r7u-Rv|HFϼǂ=gv=8j+h8gNi-AEA! Q/WDe@Y&.H( n^1QZr&@37jŔj-~@UtĨe@C60 <86/k3 KW4W՝.=bhSHڤpa]$a [.y9ۙX҇;#y㓾A.@#^Cuݻ?xv^s49k8# :/޹zG%w햵ŝtO̎%oGb-^ˬYk߈72s6ڕ!g~acVsLRV:s9+fpFmA5c`/hQSQzN2f;vv~߉jˆDŽVR+QxvP22ZW \+S2HTAz:%v;)t8KoȒ=3]Mg#M珮.Qx<s>4sڌux>z8`5o>peMŦl[_^!_*q^7][=ˍ2! r'J7Qtӛ tkTpFSkOp #'5^RN2dpP;$Q']UѕVa>NχC(1JLe0 AmWeI]9tuކ|1BO+9"׍9izd:oף bu"KNXr~[8 +ar{H5W]QKY u|1uW~X#/J<朥o28\10>W[/z< & x S*DX IԏIL.cS(eVUOY"3Ur"]RAkʈC~RJ,6H(WZf*OP %Ϛ-*G,k嵊z"kYѬlIkNo4z^uۺd3YY9m,[m[Эʽݡ=Ew+T=-X'|XI'lO<S)N<'Oԗs>tb=*nwr1EL٭bUK!ź&t]mT4*תYNٲC(,_6/j+꧙E)>PZBm=aQfdbzct6ycN0.^0L%"&ޟ Swkd.!5)UXk+(z'@AXL?[Se'a2$-8EIn |o>U%s.Sl/[` L|eǞMuǦX_:lcxBa 'wlWg:byް +b_ƠCQ^Ɏ F8{ c Ul$O9 2bK(scVʕ ~%GXcV*V)38_;iuŀXVpnF[\mt?p>zXgx{G EVsG6C .Ck!,s"8$U s܋xЭ=!&ВdUn;{~Uu&Wn bO0<<R,bd^ EnQTX}s}D ֔ .t !ޥ]* Ur^a[%BXUa0g &"Xxޅ 31.iwB(SBAq4®ܹ-le*\@|NpI|AwV +#Ag~xRoZ.#z! Y$7J6%R̎uk!םÌf@0(ၚ! g$M#U3R@ܼQ~ fG&u$(; g'#.vn͎?;W U"JC%"s.+%bAJR2gfDbow-x9',|>_.8)5fdH␱=2vt-˪RߟPh(_:6]`w,x/7 E K"%>L)R %R:cvl85g4WӊlN0jljwMܸs:7IF9\lR7, Si{ξ|l1k|ߧ07m+fhoٍo?p ͫ6&bJ8^~ǻRnM$ 8gb[gqk{Lޫ'OTóFe*}VъC!-{'RTtZ+Fri7c"t*NX+^'X ͳߕ^h^(.59]<a蕢z7wO<8IJ.P O*^/Q2\yAhJVZIz i(TR1F$P$AY:4i@AS9IL IT [+jRcBj1ŧVOH#Z\O$neCZ{ Gr`ZGudWJw*@~yV #Q8 V X .&0J{'CE5ݛO6VA?ؼogaЕd…8ݡvkZ&޹{Σm1s"mj |`+si=>vvOsVёo[4M ̌<Єl%xynxe%ڶTi穹Y5CZJ(leQ3NE-W.@ C#Q4WBkBa;g@YaZ&96u d՗s`:?RbXV#ՅWLY9+ߎn/}k…dOT[La0K4ܥNWQR )WMZED<* Qo42ZE T073c~,jE#N)f\oSGu#NmM_c6[[_hwA 潡#B! QT:;;q' P'EǜU$|9Gj}0tj aN02*55!r \ٟ`|?om ;,؎ۯ܉k(w0P.̶g n3~İPxZBAO;;ne?y: |.fUEjIBvu!]KhI*t%)8SbvC)OO0ꋐ,>HrAs36Y0Όq` J!|[F7!X~+5OnA_R2kRQQ@Vi>fcNmICU'@8 )DT&D>|JkU`0L'__2jW֊y{[6/pG .u#ǻRl>7t?ꛭw .# !:-x\n$BѬ.j@.|<(J+9!K p4O+iMz)|qCB H?ԓL_ʮV UnZFl^~Fw; ,*̳!L4o?fጁS.W$Ln ݒHfu('rתȵNζk%WF ae7f\/F$,6XhjmtVmn)8iys{@91kx {}=GC_`LyEI3u30K[wyx] k< hdt-3Ϝpr~Ei O+fpLj?3sóaeo7PKuU{v"P.' i*քφV"Ra&'8;FbsFvpok~(++̯ 4k:eCݎ_)ӼKk5=\E?l8/$˱|}VʑuT+&٫ݽ1] ZIs$'R.O2N&< JA[DHڢÀMR -@~݈DvwɍLػR&wsOv`$lт_^hkO}p%>v'26M>${><΢t jZkU у:nLGku]f]#]d]E#lQHE|xTd ע(QT[؅}xܛ`+)|䢅S=zRJi_"Ohz6>6m2ݰ\¿h2Ai̍РE,d?xvϬyBW.BsgF }9>1:BMof6jnkC^RkzɖDsr"/A4TQN\Svc-#AtMv Oi؆[U<4Xiט^| A|U ڛZEAԟmUWWN:!$4remE"0Zd\|D{W4&h buJ1|zI= N#&[d;gg?yK}Hcߺ{*v+ _BSgT2Ls3yf#{v1Wr5vEI4Fb{n;o]:?,M&w=aJ$\;sC dv)#4+qV ' RH$pT$J*Qdƣh^>`ZRu(7p^)ha=fje$IJ2 xW49ҎRP.@$\PA*Jne5 ۢNe@ ]3ʤSґ2Sk,LٲYU Rhtv((H ), 7}|gGkS]/Ek Щ5W̝3Dn'ɅNrjN6ΙY:*(ck|&l2g`, 'WXZzJVS%SE3^6cyּd~l0JQ4ɏgyB~1,1 /A A%PcZnGJC ?hD 4|3P/; v\hWS>߉Yȱ\5pEms[k3bͮ1bo\{뮉wh_V*CfPK$w;'Vn XPS?h 5J-Qu*pJMA<@ |1hm* O pn4G)`FE6t 9*R:8'_ D}mZzin!ѭk%$<1R5svh^ uc& +-GL⃕R|;AħCjQ(ۂIښnho1gŸQ Vq`mmewvy͵L9d̈́e)_>ѹHnP;e V QqEVjo*/*xL3ʬV.*FL(: ]Ty! &HַNrD3۶57woڳ0a0m.yftC@ww~"Y! ԺG0%¬K0_yhl!DcH)Rm"/@#)Q8F4>Eȳ3 'PEiM*6]V|-8夐8'9 ! zE$ꌃt@E bZv8ދ^K2ZWu[{XyxgӤ!/f`΄T̕8î>rIfjo&:f*S&QA{|]5hSǣƏ@Y5 X_C:zNiJy/n=}:PQZR"K=tn 㺙zD3e4Z19 *D {&㸼ȕDn{^@ лl7M'hI~_)D S-XO. &kŋSDPQ3aeylSG&J i8lrd^"e3 k=ɄIAO I O Lȉf @kQ񚧼^G*UUF]ޑi;xc:pddlYYaЈ4Œ[SZa|=J|n "JsAϺ{}ä1 tY jAMqnMĒq16{-U"bPSCE}.N# u74{ߢ#-Rܤǎ/M=sQܾ}۹-5{տ:\޼uhs[O9Oʎ]Y浣d7 wݶyӄ!BW9Gf[nKvsJRRתrx}4u%4M[*JxszYZwnnsj%g7YlVpCݷm޲?z}m=!iG/1h_` xfG!FcZTFnu8~섂Jmf&@:gt+v~8807(ĹDJp TE}".‹PôK^p?;`~螇?—w;?>W7t84~1Lϸבd7Dp]H*E;ҠԞ"ghC, Bl$6::bSi^Yk [Љ+C1.I=f:nbL#WJAAe3P2Y tt&iμE&Ittf2u hLj`boc?df|GpЇcړ p6(0 pU8Ų'ak4fG"/*T>yըd|K^/öקuIEA'EҐ'.[n]ewܱo֘?2c7ߛKremNPIA M^^K\TKI`jYԲ>فδ~{+/Q5[FlL0ͼa|$ Տg~/[P4I6 "`MUr:ڢ`h#!#~FƘhha&-n/)TV*9`}ttM:G|-cr,hj.m*)@Aq7͙liK+X!D{%6BܫWcȵtNIv_,OOX!v̚D.h}٘d=.9 2))9kMså37>lJOWbFh 0H4{=ղY ?*yrv6rq0#p!`VħA{B_9Hᢓo /1K3E1!l?OG0JEDےiN(|R:Ñ-L6ㆼ7coԎL#Gߏzߝ=i*"oG X*OjBxkQu[W]Ru[Ima~/S7Ybhu: ǟlJ6 lxV0KY5!BCMZ>sXlQ--^.-X]nݥ^Om~*bTc!RS9ޕ> MƘ(r*բEVդa X#@H1"R N?, eKGK٭sdh8 )Ç>Ւ +x4D$bXԹ҆!Wu0 mтSd,ǟg1Y~p}}y"7х$|Be/Y."Ini$O9_pnY{KW.?^7+~&9,Z`iM;)nz"?luޏ%+#r"7"!'(imrumևvFhtk?πk<7^D*hxg%N$'I,%WkG $ye;)ȯ* jGvM>ڍA4i(CWkhyMh^3‹;߽pEt: _(]yxDPOPzՓZO[SEˍd%&3H2N&!5n@QRUTj$/ÇHg. H&nHyA-?BIrGhO=k#09()o'J{KUԋ$j$ʆQeGAo 凟> endobj 160 0 obj <> stream x]=n0 wB7, -ɒED" 3}O9OlkMKNF.YuNKܞ$g[(?4 h=ܨt'%D!_IMmyr2?K{'0x00F/FF"  |F"`8xp`t^txC2ɋ 8t~ #"E#>h ҢJZq+NY#?J+D<לxt|Jy^xKՖKC{# endstream endobj 161 0 obj <> endobj 162 0 obj <> stream xy|T8~νwٗ̚LΚe,@@[@$LH$`]VE%ЀZi]۷Y}_5jdsoBP}?ssܙ(!-ڍXrEKOp/>(>': o CHkps^ԭ) ${esh_C(ߝw`nGР٩BH@wb?;ۿw *_׬|G|/1G 䰈4J :/x;9Me%݊߂)鳲-ȟN'[ o GMXvFT~A B5ktk;CFVGp<݄lC?2FW+ԁ^Drt.ET^FӛI*GסӿE .^K.Bѷke"t݀m8W+Pְ=N21Ah9ZZft0 D/م0S+郈UP!L8}e|CP}݅~#x>[G6S:l>l>䁫ހ@`^DٍGS Dף_ |Lҗ0OZ މ=@''a7^qòR?Kֵ]h7sX3"7̖F=DPv=h/\a ǹ_1:F2W2w}a ӏ)Z R Rdw}CGOt8y)38K5gDRh z 6wwUJ{sS QvR7{M;ЎIЉI,o vj_7bRfd1flpq]&>J#Mh_ſƯ7 e*f` yy9RkLI4v({ $ k[d\6sWsorOKe\-T~H~D; "WXRbBK9n+{1*Ys߆_a&)Fe,b ftq-oDKxcg.@Jj5Xq)٫?sSП&ًN`5ނaXT"}7n܄O mf2βзAoNLm>ڏ <A^9P>+Nǘ;}K B[]&|F߃yهqr ^kb(`7zbֱ\1 t5jJt|vvgh7N3L77lex[R[x&ޓٰ;^fcUqYgp3[BAǬ6Bӷr;[B.-'?elVO֚kjjuF!~ 3NZS6O>aV!77u`'ksB#+TQ'Wo71gj@h</\a%zeukUWUVJK‚p~^nN('۝r:6l2f:FR*2e0*h/ȏ6s!Ņ<4-:gH1 b נϏ'Uoǧ(L[(|Eۺ76ꌅt8C q0b 0 RjaQNC@V0+W66޶‚qÿi-ӌ+4| ?\prIڴ1w׷62Gfm]v~b=AF),Ŀ`w$XU娈Y$ ,% u| ΐ]`5%X;$X+?l`Z*?2TK0Fzq f%*S `XFUg$XJmI]9":J0Go`/WI_`=-VvGCDa$_+¢|EXaQ",WE(_+¢|EXaQ",ʗ'  m_%…krs/}ikkE3#5™ Q/،ȣmL$(a}4[7oxcE_m:Z#H{uQ}.}%P.:%zmq՛$K?OB9tWs^s3ۨN}"?;Bm')BM#Κt:Ȝtz~x:7/NӢƩ f譸/T/Y ;9Go;*͹ޮKҋs+qB{v?j7 DDV5(nj~ZhGc g%G8Lo=ZwPJC9d꥜#kx_E3D$M9Y9w0L}u?s\ R$=]AճHBy*Q oxS!DFdkQY T *GeH!ԉaeՐmD_>>m8AjgB=%kjƨ!* )$eTz@rR<МH_'bYȣ~imCl4vP&E1<6'᪨Eh־m& Hs忚[@5Gz3럒ḨsȌG{\Ii aəp%\|.m-R4HҝJZM8 Fv9~jŝ7ʃ%L4RP/.T惴xzF$>#"3}ΟlcHk9GcE]&|u4 C;~'qzCM LFa!5OF(QSO@J[:?͞"#wgN%17f~*^3:w$G5 y`CCខ~~#7ć_%Ғø⪪BD^~u$:L mKtK$ꁾx#xg/>pb(À_Cf~EWWwdb{7Ef(UjR~pP/T=CɁ<yeK޼f5K-YXfɊE% 4nlln\FXݓgL`X`bhxqvCQH2oGFȎmt#!Jvߗ$D<(CD_8·?i8#[ PO!g(1;w [59AQqM#@9П̢,+f{Gzadbx7L]$a`;灋=xggљx/?Du4Q|ß^ToO_LB mIjAG6$<@Kdw_|G q(?t\:Hi:;CuSdHo'P_>I&zD=²`x9ťUw}>Y`63`p5AXR򹕱<(VTRmƢX |EyYUY6{xx:ݾ}{oF}sm"7 ŷ^IâRptc?ԓ//,uWPe*جw %`".NjmD07р5~'g'.VD 440O&nފ,XmwDȐ6H [O}eѧsD:G"$ȕH•Ԟ  $GA!@m#ɃQ;ヒ%o&HH Bc`dwN6 @ ª/L Glؒ o_5)jPq,vt[$Eg0{|pkA{77L~Kn&}"a(B:^_>d\qԑHj~>0VU}= Z eʛP䰘#Pއ!#|ݏ{]6%4].2bNĶ GWd䑄 'I35FOdM PEhuBPX{bz/b;Jx2M1V`y0_T<~\ZyIN@xH0RjG"WK]Gڢ%ҷ *!4*A\J&JJɘR#A_b| G3%8, JR ?N `a:ZZrwKAN,ޒGu^ue5kڀ`e{\(D{vxv#B@x*6() CrwU0_^Mk"V>”]嵗8kxmJE齈䎧H,FHZLbI<J9QC (TÑv ?M=q:@h[n(]PBŴ~P°HU"?&(lEwxS(Z#aoz^͐Gt44Ꙇ K'x?I$?@=S$=U|zZQJa͞Eůxjx=*pSsEtx~6lV?)>Y[4~)QRlU(M AQ(W*| ¬4* JRP*r%dHiL)ors60 ZMlԲ`"4H 7V^zpԴ?3VqcjZIִN4qDbEkolkCmu:cmfբϹms{=~GSKcmM[3;3W8^l\M񢆶Y4P+ m&hݻ(%"FZThA5#xx{<D(nP Rspdt✖t6JqpGW;\wt>_Ӳ7l=D kaA]'p:R3 6h\3.6>kuCrfUX_XO@I\_9 <"u9&=^ni {T%322L 4_p(8n4 Qx> #q%a:.MO6vL& 0N8Ep=.=갱 0 D I*pNer$%E cJc<#oQtrÙT,܊ <{ C$NEf4l~Nw.FsITvX>p󻧦P}"EyEyY,' KK\ai\WwõobA^Yʴk=Qmu#7:&xoV^OyGAͳW=}Oܟ8 6r ގp`q6;g15Ygza^氟Fy26`P6C8r3̄9?#OM>:L2LM2ڪp&_d]dƆ˙kZUsqv `!OS.n]!WL%s P/>?tոS՗ry_}U7io~P2O߇QP] +ggJ__Ph8om#^-@Wht7ܝ6/,)+2Y\*pEn.GpTB:f o||Qp{KXf*t,.wb{}f7-lV}dRP)Y_!bpP[ȹD]L _Oj"-HjAxł:Qx]~,t߇:bdp=|&(>s:N$ij'bX`.V4<=`G)l89{W;j2CM,̹x+fj-Ux+JK*@+* 94ZmT^^krJY='>mPgRWEuj@t vV哻V8r-`0TI|G`m[:2GrXJ%{t",ꅆm0?s=>d|͂JUYóIdf] f/N%|>jBgqA0f 4Ųs,M7q:辜m=pG;_yzۣ3O=F׽qyȗmI-鯹1gSO?_qա^o|5~Q/[*C㨃qvOu9wdY§ccYOflږuY *grLZ  (6( w<~/f-w]c}t\ +"LD[ [ĭ T o*"Q`\'\Fn-X:b /d Uc8{L(p(658@f[, dV&8D*` TfI\Mվ&,gBf2`#!XiD!< pOM:sip3gS)B,nLf0ELFvRکWW1 $Rj ^jC+Wx)Z?s罻^V>蟿骫M̆=w]FW𽬲f5AW_~e0e-zӬ;d4ƬْX(Lx$7ߔ U@*sUu.ϰjX;-|7ty.v0jcffke}^ 0,#EiQVTIW=my0kDEb=5:bsyԼ;}He2Sy e?3Fbe',)0SV.d<DH]^?.i[aq_fb͋}*Ѯo?_;GV? lumS`ӝ߽5zppJr&C 8gƲIkjl{b#ifLLQ]gԂ $&$ؚ^Eڞ0Vi7bf]0n6.Ql ?aP]nh !Z*H7H3LR̈́9焹C\sDQE**bNgB&"!kck 7{; P^S^]὚{tn/}=9;?hnq}Ӻg G"ODDUꕚŅkrf^Y[j&"j#" Sz-,@~^X acA)c>~'LU:)/'yw{Ys~Q_1cћp'`+C'p9wJ^SgSԗ>U zTĈ{Lf*"n4*a} %AO)x^O厬/,񬮖2Yn_k־Gkr%E>PUm7X-68U[粕vz?֯ <?KlO3Tb6ՙn{1~U %3k@EhU !CvNK>31&u?7:l@Gڟ'<

el>.ʢ(aǜYSGNتDzFTJuRL &\WsHjjfo2 M*b Upa<?~L;Bb +LΔ " sy;Fnn ʖZQ$uvx^8td>W3rM- ryh7+p)+"[Ijsʈ2Zeé9 3n!z7\Re y'f a6C¦ސˌ|(5RG%ͬ*2 ƕF`ƧH>;x(˧ˍ:\HkX\qRUhl*?1X@8ęNNåJeJZagˈ,W @nZjl6{nnN^U.)@Tye9XH$zDp:7ҩnλ s6^&!_(5l*rrvf(sح*^@ >"U}^Nyq͂7YSgNQD{t;E|dğm:0(k5{ ʝ랧xQ>?&C6YmٌYL5\XlhF$r8::t!{ђwի.ۍl+cK.,:ye4Z k6uWXߢj A:gmkSn6ff`Pހo{ȃLޚŕ.Mkd7L\RwGЈLUZg4FQ5z^  7~f?___y~~~~~m&m y1=?Ts|,"=>b1>UUnr;sܹ ,w+v#rx3 9s ,!Ao6l "s%E~*|>GnR8JT2| *>!z3 *oq3YH8J9Dy< #j #,mF{$AZ`_|D v>B03NCN/z^r'鑜1/c3)km-u3hsgLYUh=~UPs֚f~{ṉA*=y{[k*Kaq]U4*b{w_8xeӁKkCY5kS{V<.#'ms J z:h7؃REJ򃕪yًKKT3.V^dX]DАCd9?Tee)}*UJ̅* \2Vr.RF,G8sU]Y~9Bf޷I蛧H1n=s< $+o?G6u3uHéY!>X rElD 5U( 'LZT%QҁK6TaIg?$QQƴ~"!2[Jo"_0OZfw;7%܁c"l6]PT2Ψ-Xn*U 4vk緋Z^v\̕9-Ovj)#4?9%Mk5kʪ,MhneqZyB7u=|:xKNBJt-B1X tY-:sG]ߌ8Fܹu daމ.'ysR#e "<ʡ`l ANbG]~$=9@c<ܱ(3 9CTPI?.{5LMG VDD>BrĺvTD8MN%5m TB 9?F|Ve&r|`ECV]罒%V[YhL<;_ݼ~IqӻnT5+Zfz2Arbve+rMKnqʵ?Dl<LiU/Ux-{ꒌyٿT]ݙ9&ܼ"Ԍ3xjv|\<ky/"ZbU'f"%H#b/B,w gӼcaVLh5OMj'21_Q:Ќi$Dc,6Y1'J_䜳?bkXb3nͫJ!RwykdWU8!'0c+:a} ZlW2}Ơ0oГBceS9]mWr~,uxހ9<9!#"*Ry $>&,/mjw S͌1yٲc?7xv3$(C;/ M2P=`?igW a8 IqNhVsjJSm#RHzdL~TjOEs%-{ŗx|cY!HS93f^"oMM4pוkks}5,~͉_ѱk]c#b< F:81 vag;.spX >86&5R(<^VՓ%z2i<:ЏN` +hV*vV: œ}ٜK$4BJ+J4(@g8E4Z6g4}oAHLkx&[l?'dn&?q2m2yՕUwfߺ*AĆL߼q]E"\>,~ק!#uV Zj GqYqRׅxQc?TgX, o'^ʯ_g9k!cNO`je 2ITgd EًU9HH;jc}?1̩$@Z.q?nǩZa^SVp^kCZN\\`A2S퐚A@tA|J߻If835"A'~1Pjf3kXfr4#|=@$a@NeZb1å[{jSkɪ+B^˂._|ӘrlK۲}Xk.2dD!CeȊݞzdYjܶ.m z x!tuLHvcj{H-2sw<eN8NȾcvbhTg;Oxs\JoLP2+|ь9z$>)Tg jcLd2s5#6Hn=`cVvm,o+6ֶrɳbEņ b ZjY0/vK+w3|qQPO2YGJ ?i_BM h8߭93şП c"=_#z9<@j$FRH$I J57ڂUjn^NQ7o5ևZI)SK6F*u ,*v_u)]7duRo^aOR?>*YT)-T\v<(b_xϹEG~|%R~brT=_K'vEע7.̋u_.im۴ E΁n9!\y5c5I-hA}/~A4yr'g܏~l8BPr.F*GPͧzz17}Zt!HzkGQ }^;H^f ;L_JOB4F "7tW-sfxL6 3󾸤=nϺ1Uhޘ>nGXʆ95*0|^z,lG"jFۇ: endstream endobj 163 0 obj <> endobj 164 0 obj <> stream x]n0D b;/%FU f|rwvIzaV<<;2Cs8sZuYMS*ݖ{tIYR\$3^ǢX~4 4o||u^޴N\&1R`L9(ӿni`e A "c0հkL`D2 zESQv|R$;Nv0:1;r0l;{G rK2׷r\ER^{;M~OY oiHm~ endstream endobj 165 0 obj <> endobj 166 0 obj <> stream x8 T[Ǖw= G0֓`>a$M- Smq>OSMu*;MRɞ&ٜ&ml8N6-OK6yRIOg;W3sΝ;? 4-hqR>bqG?L'dnǦ18W8MYgpUXPur?@Z2vh/ ;%ڄ9Hm駜Q]2u^ԁ%EHc?0O;c1T+@uX0OTH>UkA cFr8 VḂ cס%tn5z0A:>PC"r[`= ZX x yp3P-hV8onx>< >#GBGC~a#~z/8z,2LC㨟D$I} %.t68FQ4\&QHhGJ, [~=<*E^%1t'=jƨoBhK`-l?G) 0II9$H3|vz\ڸmܻ%jrA`PSh ϵ858VX66}pawAFD9C8 %*d##'Oj$O9A^$ ZDi)]@jO0=I?e};̽5|w;xOA$A& gVa#܄0ۋ#G1= x_ko].sa)&$=raQq6ctƙqj 3WsKeJn{ pc/xʗMz~???ſĿQUC9yu:U]nQfP&G%D'Pd7o$g?iW,:Rn,iC|xEpMZpEs(GUC$DCk'yI,CPY| 1AI'$+4zq-=|ܻ~jpuS*ɡWyiF&L;woL4NVE' # ^߁7we fi~gUUeKf,,wس˴eK3ezڴԔds)1!>hDQA9J -նMmܹ|]hEd^#mx5W}AtNiX9[W] Kz< " [nsKIk7u \Fkss`DCT$J 4]6BAV)-'K.fe}rBەjzssdR! ͑vEjndu,(݈l8p836t[mNӷ#s>/h~]rwΙ?'q5rCnsȡEVVz lK3jۆjЋ-"Fz=2ً]l$lT%7㴭(i5 &eHAhJXHqC*WJ^kH 5IvJrsF ưcGb$:j?%S0EaS%"iF,vhG1f6 uF5L^Nn9mP0Hǀ Z/Qg>85vBD9E+zVnΦ "V>hBet&րڑw.iSG{e$cI1$S$%Oo0Żdb?,o.o[S&xTh*H1(O)3-S+A4 mnjֿQ tRϛE̔ט=ġַ.^-4.X+yōW g OVBS0mDDpHq\}(> K'0<)Ē#8G|"a:ku.зoYbMubOG A>&ld uخ4?UD፸_)}V4D`<\ -䘲Lsyt6 o !aPVcja@iՌۀy=l²Oj7"*7A+5`L{5ۃo#D6j>b¸Q)(eR:XI%@FdUhZVNKAf"I,;O$[b>YhWQhكفyL/,K_f_onKdЏ3jӋJ䤳T~N>" ;%p0\, va8CN4q&Vj4P hwvVyV nIMi}y> {,4-r\ hHڻ?5R{^vQ"74qP: MU檸Jci+Hi4twgl/H;d6WxYXXFGwwR/(J}8UmVRryGqc5j1(:0`(]""rkqXDd@Q/ ,b-9;G,vrj_Ŏ'9]-t OwpU:8D |dMl0Q0YhX` F1 m"rcW* "?7j-b*t^]Kh!x 4mK-{?LTir#܎ Z<9JRt톋V 4*%yfUٮn85(/7)8W/p/])UV_,~ {gR25 J3DR %WtY^QR/GaΝb n,@jjaqT'HfwBjh7L;CUxո1~pWjK\ZJROVlJg f2m ubBifNL*LSl]|ySS'W*/Q2ϜYtMNN얘\mRum.7%->ZL.[a_tWT.oay!{^uK7ړEevwY#?~Ίl.++\5A>-5w 2%,3W@m;t12=H숵q[xNLN(k9*u"VN ű7ٞ{#R 2 Xiՙ ib$#}ae)~eޞOo{68cZRY^>}zS?nŭen5޻y]]1Vc;G>yȱwX錎Q5pQ2$ 6l>S.\/beZ8KLL۞~{ݎ,Tۮ;~=u:H J1zΚUexthtAV?ur6hg=I% Eݪ vu^^5Gu_(=7rZxjXhU"| fr|~CoVx|g` Y^X΅LX|mg:d8[Z\]È a=0Oqgd pY-F8^_X|Н0"?uF}ǚp@xͳPRFxoU+ endstream endobj 167 0 obj <> endobj 168 0 obj <> endobj 169 0 obj <> stream x{|Ź8>3ޯnlk.l !ِA@ ۆB bmEKzi˲ jVXVsU{fM)=|333@עpzF?(- o)\݅u=*M3 0 J5N}0K%@k/|E" -D}t'=N4ъJP;r39ì! %8 CMl%\-ҡbX}2h0 ta7emE'qKKO' #(݉DCJnS:a@AT+݀nB?= Xx!o-ǽ3Bgq&אjrparԋ~8;Ƚ)ɔ|xP^}z j7nBzS*7u.n@C,JXE vv>!N%vn7tE`t==?S#`d5nķQrn-w$,CY9Alu:O>ju-IxCvti^3]x.~/c1o'ɿ䲹:^U[;g)g u"(JJܓx#qI! 4Ղvm_pڅ<ߏ~~ z6{N ϰ ygx5ތw>D4O6)%ZrTvs>K y\z@zZvRWz(#~wtQ6W-)wAx <4g/'KUQx(J/}>IAS( SdjA[Zqd+>W|'648zzC穕M'2+UIV/`ܧ8=c$.q_KGw M ,}qhKj@湗Qo >NUԏ^"̢~=dCw[a΄CdIp/Imt[^ ) LPCHf؀9Auг'6/ '&HAx 6g{YwHS ߂&+VDžMc]Ǥ?\VtN w/>'XgX/iF؎fߞYW9|NYIqQaA~^(7'Jw96lJM1xNQ L*F9ކV!hJ ri mZ45\Zp!f0>13*QenP? x,DO1BNV>0ֽۧVzk#OP P؇-UR_ ڽuQRmѦnwsnNvxۣ;?2T˖jrCwnI5ζ\[3]u뢖-'0vٽngG՝; ys3cug, `Fnl^7’ ݕnJ|o (tÇ'^عrvxO‚žܜ}Ad>> hL:_:YL). P {Ccèh'H'mWv:>*^a'4{ [ڒ-2? ՓUi8 FkA@cM{5oۚ+n7-aź1 6GI+92cZE{M o&Gb*3ysJ}wEIwD_»xB$o&ϙKBє՜$!X/(dZYJ)u\ZZ[yM&NQ8?,If"xa} `I,^fN} vl ;[wM&{޻+;[%:8|#fD7m%h>/y0yŚՇxvݼru`R:yVZL+ 'Q.ǡ0BX5z$FM1݆Q$x\*{;^.g;  ?il'/T!$pɃ ɷ]Y'9,0-EP/ML~"+1&a!y(@>MJtғU˔$a5MkP~ keI_֡u+_10ACiP%(HR1M2d6Hr;3&a%M}. &YVr4YCO֡ ` κ1 K}1ЮImg0\ SX?H v͐%( V&+¢|EXaQ",WE(_+¢|EXaQ",WERXEyeW6jh76&a *<нؾ~ QͷMo`$LS(m$ MBFBy)Y4Q|Ð=л G.Oq R }mm~hM=R"@$g]&A (k|vH)"00;9[ 4U\dܾ(;26 E0_><zrae͚YMܙs)пddDeJ^-+ R櫇DZbrf <.rr;vEqErܓԡQm$Y8άY2eci<=71|j+ֶaQTպڨkLKm3Ӟ$eNhebOr,2k9lΤAlZ=)_& 9E.%Zŕv1ȩ?iU{fkM1a6d!BWft@k"s!}̋A+u2N,3=4Ko\S̮{f$$|72ir]I8ewGkvSAAhUI?yXEQ=M+;T>'te4u"D:yr%`/i}]#js+t$Odm6E~U@OheT /Z.FL*8S*cJQ D4٩F 2_ >>owun tIz[J Oo'?J-2?& 1M4=ЬXb|BO3hcztL3;Z` 3i}LGkK9h3ig[30VOc5K2f΢vfϟz*z^Y`29@g`޻٦p11Eڦ9ҟOyڑmJƌF\2:O lz"Ɖ_lh6o9[0ioR뺙=Pdf~(.<ȃ/JBIüw0 ϓӟYt$e ƈ: h>O؍IZEmbgEڒQ/Tśtd5zgnc7Yɸ|ar O< fσ|yJWױEM(43wL>c龼ϝ3stuDG>a#$Ե])N&->WP^ YaH.Y=2,\ E:Wl K#K7="jlj(wńPSFu mD+e]]!SG6wZhz-*,24L. =C]#Y pjӊ\ܸr鲕 ֬\lAX~zK뗮Ԫ=4) D DFf_?6=hGqac; y`盆$mBoOGE""}#!uE>9r1tkۆ"B&:{"#BPtZ# e3` i e OͰbf0mX[h[{/=<=:$ ͳ]釡/\.gc:;{ CLrh-7yz{6 " osQ庀3h{op7]ٽm\ATq9tB oo\ e::"C} %fc=T}mx3{`2kKR2gtɴG'uF*(ª5B9,K(+_TZ Ő e%%ZU@E^͛CѿiMD͔`@̴b tc.,i ((/*d6ļS"mIAiI=K:A}m`9G{:4mBgdg=UHAc$2mJ¦~ `xԻkW:a:6 QB`k{v6uFs\s jXx>qf"@QLGݠB;hl2BVT`XD6(fH 6 /{> O뤊9itl DFFۘ+leCOټZ `axdD6Dfܘ|:#reGnv 8P}yOg9:,I{aFЦm[Z1C:~QC;;F-R~`MmGz^Cul4Bix=B_9K5Ch-/i @tmņ@k࢘]w34< K;Z+~6b#.aWW4ؿ.?m#: |/bX X=8}q&$BeWݥ%̕JJ%s$a0\s@MaDP? Xn];1h$9f0$DNƽ/ ZTʽ %"(ӡ|J'/p/!- =_ GYBw r0t:ef֨r_g( *+t Ora a7>}mDu,.\ʃDw29pI` h^_`"XQn2CQZd1uIo ,{ (ńVWxF=QV;3Sj7P>$L}wWG}bD##$C;='{ po]XSǀ,<]}8? z̈́RG)z̘о>V?ͽA"@ I[l+&:W1Xw( inwĵџB#=w= WB[!1$ =D q4ְ c"ƭ1|˟,:]@ K'T?-e^syX 1<*]!c k&˞H@+ؖN2Q qp7wrB >HQHd! ֢JaO(ӐjHBz HR @{> .Hf̃:yR+mtiHrt˅uo!) m":r58M)rdOoE[V**o5(%h YYr@M+&%+%L+eEks㧍llр|ǘ(CoV]qwƏooqGs8 7:* ~ߊ%.2,Ys[[9A$65d>uT}D}L-ʎȎNNˤMVـll>%ϓW2Z0>ȣ.X}B>ațjWCFE!4f,/?ii"tv='<<=ڵrvN 8iEОWK~A,h+@,/yX*: x&|ELO@ZNˮrMrJVwEZ GR(!(RbjDAD":OAKM,ZV"5(r$DzP|rBi+b(>S4?c]߇Q& PN quUa?4PR#L(~AX XWǺn{PAl;QñFt <(c%PlUXI:t=އAqfź{]r#-(uE%lKb% t-On,Xv>UŲP9W B1' zz90ϲC']}@Xݵ ɜ$F׵ugvе;0Ii6 okD7f \Uiv2ڐIz/uuFØHzW[FײZQhaXu(j,')P.kUSNa P8$Z~]R>Λ _SF)4 B)$ DR''A TE+0'4'`AP4[L- .'. .ʛXo5#hq=;UD8j\o(y'qA`8o:hp7yZm27}I֚?`3z9H8GU"dC}!ͫn[)mù6*P#-EU Bn_U H`4v6w eH- @,I{Q6[0[Ьm_ 3u(ʾ 3?ݓ/ f[!@2'0O[e.ƒ%hme[$:Eu¾y{5ۇVׯ\ou8RWmkXz 1֜kdkdsZK{v/k ҵZKKZ/7ާ@k׊QZZf~\a  u9Ώj!Ѯܚ&Mt]k#. hZS gdd>aVc$XaLif4z h8Xz_ccA(  fj׍l;"cND ?;RuDwX }['=˕%)K5c3Av ՑpnyP Vl\f Ό Q6Dl>WIh~'9E8I%qH%Gp Rb? YʩʥƩJT 0|mC$9ϐ 9B4.6`REjT&j\c}߄5δ:O9 %8#e^OlJur{y%mq|ON+ Jܰj~#E)(dTna \]]mR$k<˸Kd|ePR-7Pv)QMT01Qs{${IzJFr4f^L3ҍIwҿ4Y8v#3 Ea!s,0 &5K)W 'd14 hTa? ( AVT yaԄ;5=.PLݭZ OnlpTKe{$:NT3 iCd 5g% jIaUk8[pD:"y^"SkTFLT3٬vs`V vCbiǙR:g;j2ڑ P\0Ͳk ĩrȀj,i[²2@gۗ^;XUtldW%mN淧 m2+ޝ;[|wν@zM}?~I0gv0] ?~do-fB:Ir 40p:]_W`6) J,mf' [Z*jONßqKϐ {-2K r ʃ ?*]n,_ݟ=~u}ߟٰ<<;lvt( L~B~qrDV1:9M*"m4YbĞ6*ŊIη_'n ;i4fOc F.naYt{}U7wuQ$#..qǡcgfdae*cfL=l2gs>Ӌ&Z!X.2`z o]IRk=oj&;Ȟe$?;N]J=Ֆ)RG ʑw?u,njWiȌ~]t z@;vڑ[ 6`vkQ hZ 6鈼,鍩k&%FR0Z7zs5| |{g;760SڝteĖXqIラx8H Ejg!dSfL)-DrBZ-Tᔩi!_ L$;P(H"eQb/3\$#WMbɄ{j.!\I"jWD!>DB8O5pNdFs=dy]%68`kJ'`9~YsL*r%9Zʏdi:?Rڥ~, 3 A&[lCFMHRf'E(^sέ*^=~=6~+[]kҍ= ݼ'aYH/J$ !ɧ`xiYbS(hhW#S_gE91}=vtNNGGT2!.j**N"ETMw$(DpT|F) ./(x'-SY/!\LT- cZC5X2^LN!UW~T\ho V[ *.3g.׺D[lseR-4ʃ/yNU&+=̐ ?,/M` | 6P!#KZD?ZFE`T>4vW, >͝R#0?WpιK:*FSnP/tk&oJ?t#7}䛃FDWi' ;:XqeZzSݘa-ϝ+ ,@Pn4u]o.OKvЋ6H> uҪUx.|_Z)ă-AvHuTZj48S?M,b^ar F1ԛF%8NG.۸^V;K=A. y~[sK~{W!~ i8ݵ(?.STn|v~9ؤ"Ƞ6@STf?K +ވQܻi̷_!3K'gjc95d\3 )i˕Pۧ-GӁcL }ˉ[ FNP7pFXpǿxe[VY_n:M/x?8o_{ozx0m6uYXb֯)U/ ֳ?YZU`F3:)U*Z*\/2ޤ9EYҼ3E~A\ k: L?CjRbE?X>Ks$ j/BvQgu.jZ䥷TW Zcqx2 f,A vj!{YՃp-.Z Pm~@0{8]#+YUiШzR {_9fW-kyC 4-EޱhSDnx!Zog|8Ƣ;_ze\uUcƛx ||{7['+#ŸlҋrU!&Nz/IӖx)/wlvl}XbWX?}f)42.rjiѥz=^g&Ns;yNzx89yǒ!$CEH t=LKJ I[Iߏs5&z6ƅThHVwJGNU&/C-Jy =[tW[YdJ"dM~[ ӟ3͹y8Cv;ԚBSfM1UaXn/qs/{L-Jz'w7YU\vdC IW^劗4]l {~RtƻC'$n,87\nͿZqio.w+~g X}á.{tI7/^9}c}Yw5ku55<*E`n򀿵ڋ=uł' &w#@V{ai]`]R[;U!=wT]n Ho6~br$?qB p$VC O*7uܛ*ُi8jj9{)x:פ=;-pȟu%HBNj{Ց-3[j`S[Յ׹.:??ߔ?_4_D^ՔKNWxePWp!yܙJ*j"edj'k'0$'Oy͵]wwc{)uZk{ˤKcK;~rd]H($WK;G=˜xGNDU,c{:i},ys,ȏJѲuMESwNEۊvW-R>am$FMQRZmYrPh(BCXx_ a&f 56%؉54pD w aI'7LX*` dH7RfefeejW:jIZ-JRʴ̬l@ʶh* i *[ʤT0QrebG5*4tDa0jđo 8F9)un.ԽWYISe%}e,*PsW"! ad/kIv^QJقR[,db6w/--h."&8+pT+SRIQ"(P*+_ƿϯ+ %`կ km&k~,|~ͭm8wdd~?p#d28-J6YƦ!kebm[sUEa%_^+v%\umKkr_=^^D^/_ȲdK]twC >=r)skՐ^P3DJan-PDU<)@e90''8IѼƢYtoя.*Rᢹ "UHbbbb^ÊU( b@UpaƬ HnԒG`겮[>cmz5㋭Z˩Αe.?d1uy(oqIбK2, @`A9.-sdƽgtāQϥ$o (}.כs'L+ਖ{nNRXvT/)N +I B*J~ds! KwAh ֧`!h Sp U5v!Pndb%J0+sB RL!Os yG2epiyb D1T]a]z;N|R;@Aq,X)e_ʚ9!onXèfozjRZYty?pVB}Aȕw/鯃Ŷ\Wge΋ mFcБ$G27k3dTILs}7}>u՝6 ?hb>Y8#RT _NrPMh:\AZ/(嶘Ubge8#\]Ai z'JGY.'gɰl I~^ϕ@UpZY~Q,ݩҷ aI'vɏO9$>V,e!l/ cKxx.{*v#Ϝi9u?b8Om\WRa]#x}Lߏ$콼J~qϾ_Y7jքJUZ=$`&oN\>/Puյ$2m9|-DdNK;$SȆ nUߪ!,Skm ۰$53]OLP?CʈNMI ;K$H/uI4;lO֤VPNOq^ʑc)\NC;?î`ǂPES'[C_"_ߘ3ޒ1. G o56_ePmf|Tg9;G:y6??N%lF߆i1íM>W#yLzll|"=O?]5 >]GS_|㳟}I3_=_=_=_=_=_=_=_=_=_=_=_=OY* ]͂<2Ar"$@PfB9l$?$kgH,PI$ hN@]Ȁ=KdD)QS͖,,5oQ&93sBTQ Lh9Ϸ jc)x^Q\X=N'.hqt?Lcr[EC*\Z2;$eN/ \e(K. M'Ή>)+GM_LK$h]p>M㿒mF J⾉ 6[/:}' (-i_XَoHQiyK endstream endobj 170 0 obj <> endobj 171 0 obj <> stream x];n0D{7ݸH$M- Z.r̮)f',Qu> endobj 173 0 obj <> endobj 174 0 obj <>>> stream x][dq~_v~ i2eG!$/ οWEX<=zXU,u#/9WC|wᏯre>yw\fvmNWW=h^ssx6u >`VUZ-wϮ-\j:~>d_+%j-9}c|pGӾe|3<_wM:| KJRr?UM:9\4qk?`F g֔-ó#p++&_\hKӄ}*?S>8VP~EmTEtmpkD<%fLYЁ +m ВUm{Sv~K(jV5w +>B5jG>h$P YK;'Uw.M>6DIUmH?9W|pF߇ #Жy7c}yM*]T{MgSDC-I:rm\I4icQ=_6_RNs DS킷Z2MJ WT/䰨&\˾a0֢p(n+b; ^ʘkV~} " \Lg`c։-fS:,Dvmğ G|M6.*^`)9Wy4y9[5QP-_욀\v ,9hiS$ĵMذ4X s,E{Eyh& &΀BJXhm*azukڰo~q8šhb8Q+@J74i˙vQ[M(Ԇ'6hXA~>h7S$~nV]=^>q\O\9Js:^=wSD68Ltu}|+L5쵿QlY]XǑif^6]Gc٢XkoOa|B\:F*.Œad8,:%թiK0 9꒍oRӗX#Ҫnr:Ctr{֯{aq F7&t/3 |0 딻.=2X6}4vc% 肘°s_uJͽț7kWq#b`{QK۔ߴ>rc9>۳N+l[ǒE>s?G Y{~M@esuZ%dݢ]{k'tr |9Z),M8pHI {2rh/% CrXXy ?}$~j#iQ"9RwGl1E͑CS`+6߁z@Ngׄܞrs~ lN6o-ۼ>eptڂ'J +X!珳J;I*8+L@58d〜ђww^$e'rٓN!U2I?gi??n(x^vr.(9[ush9^O-PwfG:1Yi{OL853<0殞1Na ys|dA˸4{ 5[,ֱx姑h(Tan؛{l\`[Չ. V^`,x!!ylc[L>?%3#:^3S21{Nw W-p?sfcAg~L!Q}13%\o) Ȁjcbq-Q㕩 RzmLYq`4ɲְsr{uB;w9e'h >m1s8qo0|Qmٽe_fX7MyY}#0׫-[k%d -f9f=u wYp΀Ɇp D F몴!+%F D)7!͑0E6%Gp %yo:I,іXԞZYU&;RLKS;ZB6kM-}5iFGޡQ׌l{].Zb9_SUtVdIMhê=E@Ym(w+XY#16fgDGFH&І~x|;ϡ~\"թZBĪM|GgBEaocMU})Zt>@gJ5&cǵ GNHϡ&$Q]u06} :PNn3S[)KXܸkh'ɀtDK g.WO\mlrK 7 1j!s2pر;])jۃ]iWMи8'U( fy1^ ),'!$W3ctи/92zui4; YKidxe.Ul[A:P'\Hk)xt[Bv6z5wBU_axdׁԒ*%cPT۵GHYs9O˰|DȔw|bw|GG/S&BًUS)g4Q%1$mP5^S_\:{O4W=|2*eF]:NFPLß9+=8yxFBM(F*kB~67=Ile+I2\19oOI d)V>J`sR+JK =)[@ yZ!SA]V‰_2&'g= '6X93g9jGnRYwRJ ;@ yb!S烐HI\gg Yvׄ#y ҕXa*aqV!lbNs16@6!pSufP*j;aa ) H=7fzd:i( 2s64$l^;+} Œ]5ti; J-|*P Swrj@)Џգ Agm| ֕s Zҋj̒6Uf?@1d&DѝqT9xirqtw3G!=GL;>A= =0~eoq-ƚ̧E4fgGkYi[?5}-wwt#َtd@n;EߛJKE֢YFU-)G]^ZE M#nU?:TXvpJSB3sX%}Un\&tSG JZPd-5C{Z?aw]X)Db#Q`K g.sq.':xl؆jTsu\ժt"ck:`U=zu 湪|DٿI(%3zbp~LI"R-,w ܞ<,拓>)_Rv_-C8{?}( !Pަ9LuJ1.O*BI5'HPc-KlC8<Cϓʙ*&fa7K1Y-fDi/=cXOҳi" uPݔ@c ,W }}A歗If^)uVj`\h^Ƶބ Q5X]iR qkJ% :3 =bkL-QiT7kj1蕙 ,vGq_kϝX]^o=@^jRpׯY~7gҾ~͖䩨q^~y/Ng.`<\-y)zqRU A|^S lXőWWWk/;~)OJqc*AՊuN9ƅ\UlڤWd1ݛt%<:Sdk)U%ܘ rKQt*-(TLoBn=v4f:P)3\!T|צ.W =0!)`׀ׄܞb$.~?ni߫Z>Qy^ Z? XH\I8rDTu+[5- ڵXCK M̐DmBsQ)ol|t'*9MN(: R) tuG,0D./46+2xՋj1՘g> 3AX."1&bhҬQszʽ%iQǴ6-/Є&jB"-NՋT5٦xɯ[~8_$6aDwE5g[2 H1t$&%Bԃ}:LOʯmʏ6~aDEQ9bj %l?+']滩" SN&?aOcJ|CgD$coKΩ+?< Q!Dž}.l$S_U`XOd‚ 0:I۫YqAnhٟZhOE8 m6â[BՃ0XTH*DiC60Dn2α&$biR)b6l8_}\W<&Bg<ǚ˙˵Wfi#47>"[2$-|`CZ0>hF(<:h"YF$_J{%<NJLܷVD$xhkB\Wv}kFF_inTp *ϋ@^2 &A 5e[A2 Pܘh?HE·E}cDI6Be }^emdΧ4~b PI}G6G&MIg endstream endobj 175 0 obj <> stream xS(T0T0BCs#s3K= K\B=K85532W57730*+*r endstream endobj 176 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 179 0 obj <> stream 5 scnrRGB XYZ acsp,desc`wtptcprt( A2B083descadhocXYZ ,textnonemft2 $o/)eM <{S]\$ / "<{^KO[a`AO ge TK\u$ / ~<gKu[z*,KN;[tK ~J% 90 HN<1KLz [TpH,_) mT1 %] 0a = K m\zU!eJh$ m! u]e  } t% c0 x=L"\# JG Y y s  j \ )i&X1Bm>H+Ls ].  [  { O 6X 3xM8'd2i?$Mf^ zj1^m. j#G>(tT3x @3!N!#<_$$?%'%H z% Kw&;&L'5 [,()a(4*Az"+@O& ,``/}0000"0X #k0h11 =2E!!3+9#S46>%5B(6QQ~,7a <8 <!< b!=! "J=p#G=u$>e&?#'?,*1@7,AD/CS;2D~c(uKQ 2(K` (K [)dK*L+Lpo,`L-M%/No.2O^94PtF7}QU4:Se1K[ l1o[ 1[2:\'2\w3\57]k6^'8^1':_<,=i`H@Rb!WnCcgm7Gg-[PW ?X`V$ E/ Z<sK[e<EPwht XH=x) $ ^/  <HK[}cOrxA>  % (q0 <KP %[X^HK 5j5 K%a 0d =! @K> \$ VN A q ` 6 b  C %x 0 =L%6P\    v :6  7 |*_ -&"1>KLD]2  ^ h  AR  ;v. V'h2l?'9MI^/Snbf ZK(w3|N @76"N!#t_=%a%)%I+,% % N&:>)&'m ^(8))(4 [*y$>&?F#(i@,*A7-+BD0CRS>3]Dc(K 5)K )QK ^)K*L=+Lr,M1.^M%0>N.2tO95PF7QU7;2SKe1[ o1\ !2'\)2\_3b\4_]5]74^M'9_1+;I` S}UL]9 P `f M Y  pC[;o'op^2ts?/M.^&95uUi FRyqD( 533!I@>"N"d#_$"% F%%2% &C V&F '8' e~())4!A*A$*+P 'r-Q`j070;01 .1T12H 2!"p3+D$46H'25C*6Q-c8aa!=hC"=w"a= m"= #>$>%?'n?#)N@,+Aw8.BD0CSE4BE*c)K <)L *6L, f*Lb+qL,nMy-M/CNP%1$O.3YP 95Q F8R\U?<Se2\o v2\~ )3 \3\4G]#5D]6^ 8^'9_12<.`}<6>aHAbWxDd1gsF@'d~ SRt 3$ h/<K& 4[y7&/[5UY%|F k"x D$ 3/UH<?K0 [b%pS G } ]% 0"< KcQ `[Y}-kMG_ = DH p <%u +0xx @=4` |K \Q 8u  a? - } t < q  % 0p=X'L9\   i " q 0  gsv@W&1>_LJ]E c &r FR|f   7POj5'{%29?;kuM^! QuC A  _?, (+ 3"@K #KN#$_1&U&e&?& Q' bN'uR'#( r)t) 8*c4"+xA%,P(.`w1f1uG11 ;B2?2 3$"3!#4+P&*5s6U(6C+7Q.9'a#w>.P#>= #>] y$f> %!>&?N'b?(@#*AN- -B=8/CRD2DSR5Ec+LL I+pL +L r,;M(,Mx-M/7Nm0O%2O/4P: 7kQF:TS"UK=Te4"]5 4F]D 54]d5]*5]6^U8 ^ 9_';~`T1>=aD &1 =JLK\ 5 Y  $F  C2 4R&1T>q=?L]W:I ixI FZa/X'0H2\?MM!^3C? u~ .{/qP c>0!/(e"3#3@]"$nN&$%_C'y''Q'Q' (- t(d)"]) >*)"t+4%,A'-P)+2/:`22YB22 M ~3=!{3"426$O4"&05+b(e66g*7C#-8Q1$:Kb%?Rb%?a &!? &? '\@(Y@r)@+-A#-Bq-/CC`8"1DuD4ESd8Gc-M [-M -N .vNL/1N0.O1sO3P:%4Q/7Q:9S F$-04 B< ~KCe [uZ  d8   `| %%0 <} 1K[ [ @K c[@ z .3  k + i%I Y0L^ n= G K [    0 A  0 >   ts @ %) 0 =_(K\E uc   ~  9 * 6 { &!1"=Ld8\9k\z8' [J%k&x1W>@M!,]p)Lx 7I&mzG'32?f!"M$^LG# O G 7!CS!W4"( j#3"$@u%%N)''\_\)@ )T)1i)g ) *"}*!b+U #B,!)%w-5(.%A*/`PA.50`!4!4"r"F4B"4x e#4 $~52%5O'S6e")371+{+h8 6-95C<0:pQ4';b!(@z(@ -)$A )AA *_A+\A,B .1C/#0C-62GD8;4ED7G:S};Hc0Op t0O &0O 1zO25P&32P4wQ6Q%7R//:S:4b6( @c1jBct   %6 09q <Y )K{[ D @S_ s S c  <  y b%h Q0l; f=($Kl\t   -b ( w P ?` l ` %0={"L \emn}5[(" X&>|1B=sL"0\c.:rW {j r&q14>"M/%f%] 3n!)q W&Fjeg' 2"?% N (!^l!!#!C!^"G f["W#< 0#v"$($F%3&&@)'O-)T_{*`+  1+* +` !m+ "j,#,%>-M '.*)T/5 +0A.1ZPa22`%6 %6: &6p '^6,([7+)7n+/8^"<-9)+/E:61;-C[4Jc4hQj 4Qy F4Q 5WQ96R7R8SS#9S%;T/O=Uw:T@VGCpWUFY+e==a =aa =b >+bAt>b?b A)c \Bd.(+Dd1FeR<@V+&@V/vBW:zEKXG7H3Z6UK{[fBdJ B&dY BqdyBdCdBDej1Ee G}f(RI^gh1KhX T uy v E  _Kx,+C% `40"H=K%K)\1   ,CR O@>G_%!+0#=~&L)`\dY- `M =lp M<&"+1%@='|LZ+@\ X-~} %qg d5"F&${1'>S)&L-9]:6"*<q 9!f#$'?'$2D)>,M/ ] `! %!kE!{" # 7$ &x!j(X"5(*#%3 -$9?0%uNa3L&^%2&o%V&"%'& 'R &' '( )(*)?,* )+.*401Q,@4:-JOp7._*?0V*c0eh*0+.0 [+1 ,1u.+1E/2!13t*q34c5v6^5xB29G6P<8a00;e40T;t0; ^1 ; 1<2<q4=5="7>+9?r6 7~H^ 7H 8H=9IN,:IkKM-@L<8C.MQElFNSI_OdR>V ?V ?SV ?W)@Wx7AW&BXmxDaY&FFAY/HvZ:K[GeM]!UQ5^fKGg5 #GgE H)gdLHgIdgpJahU`Kh M6i(OjT1QLkC#c$%'0)=,L/V\hS 9w<cBr -u"@#`%+%'0*r/=-[kL:0\B  6!VA "S#6%''&L)=1O+> .L1N\!7!F"f8"#N \$KWK%'l)U&+5E1-Y>0M3]q$M,$q;m$[%<a% &K(9J)~+J'v- :2{0k!O?63U"M6#^'"'"I(%"("=)`#: *]#+$/&-2$/%(R1H&3W3'@6(N:*G^+*[,*jY,[*,* L-+ .+{/,61h, 3I-y)b5~.i4f8 /}A":0O>;2`03131i314) 24y934)45m|6v6!J8V6*:75=8Bi@:"PCJ;aN6>k7>7Z? 7?9 8?9?:@~GA,'@|B7,C CCEE2RnI;Fb=K '=K >8K P>L ?sLRt@pLcAMFCFM$E&N-G[O8IPELQT)PS`dEZ2 EZB FZa IFZGIZnHF[R]I[K\&}L]P/O0^@:Q_UGT`V"WafNtj ZNj NjOck PkYQkRalM Sl(Um2Xn=ZoI]|qX\`rgh$.%%_W%>& z'j(*l,,L%.01=37L/7@\%QF%t%o&?&A ')<5*,&.11p=4XLG7N\&y&?+&4' j' (%*+W-w#&5/182:'=5#cLz8j\'r''(au)9 * +^-_,,.&113>K6zL9F]1)k/O)>)^x*Y+ ,N-V.0M' 2<25 R>8r!MP;"], $,8 3, S#- - G.!D6/!1"wW3q#B'5$2283%G?v;&M>c'^\/}&}/&/&0k&|1('2 #2%'3i('f4(36)(9*3;+@R>,NA.?_83.S3.b4".4. 5]/ 26Z/s#7/u9/0 B;1r)=D2a4?3vAaB4OF6`G87,87907U98! :k8px;h8i<9e><:!@:*BS;5DQ-K?~a>B>B]?!B ?C1 Q@\CAZCBDu:D.E# FE,gHDF7kJGD'MI*RQJcEO fEO FO FO G;PJH8PI|Q?K Q$LR."O"S9&QTETUThWWWdMf^* _M^9 M^Y NT^O^P _JQR_R`~&TaI0Vb9; YcMG\ndVa_efV =6pL@~\./t/h/g0@ 124Q4u6V&}81;>=>LAI!N]#0P 0t0:A1@p1 e2*T4=5]t7)&9 1?X"iMB#]y2J2mI238 =3 k 4 65!_&7" 9"'S;#2W>g$?AQ&MD'x]4$C5$5b$l5%6%_ 7%8&T:n&(3A)?C+NDGB,l^8\+8+8+3H9J+i:+ k;,#\;3 {?83k@|4B5- C5)F#64H7AK98P/N:`A!H?`+0K1@Q65MAeBPBQuSDaGGSGGbHG HG I;H@J8Hr0K|HM I#QNJq,Q#K`7SLuDpVMRYOcVNoT NT+ aNTK O]TUPTQU<R[U>SVo% UW:.jXX*9oZY>F+]wZzT`[eVEb Vib ZVb W3cNWcfXcZ0dZ7[e']e0c_f;hbdgH$eMiVhjsg _s# _>s2_sR `s`s/atCct!rduv)?fwvA2hw1=k9xEJ^n"yXqjziD7z7z8>8n9y. :v;#W=K$?+&Aa 1C!>CF"LJ$<])8/-8S<8\ 99 -:M<o==? L&A!<1DN"P>[G7#LJ$]B899i<9 :Z `;O< P>u p@V!&B"1E#>H%MKI&h]u:Q!&j:u!5:!U;@!;! <"E><"?#xA$D'%C%32*Fp&H>IY'MkL(]%%@5&yxA'#EC''E(2Hh)?dKQ+.MN,^J>)?)G?b)?**:@*y A*B+n$Do,FP,(PH-3UK.@M0#NQC1^B]0pB0.#B0NCK0 D0 E1?FH1G2rI3=),K4,41N{5A@Qe6}OqT7_F7F82G8#G8Z &H<8 I99J}9L:G M;*RPX?`KA^KAmxLALA lMJBNGB}OCUQC"#RD|+U2Ek6WFCBZGQ]Ib'QLmEQL|RL nRL S> endobj 182 0 obj <> endobj 183 0 obj <> endobj 184 0 obj <> stream x| |Tչ923%ˬfI2"@DPdH&L2I@T @\VQ`@[U[}kk|Zږڪ$I{s9|Ϲ ҢC5+C^![ݲ1#ݿZc˦~9EHr[O?=(GH޵M/Hȸ́ʒ0)BoccuBXKDlTu=ZE tv%x{a.'Ev7B ݋lM &L^m@k's) !G^ G/3h zUZt/d ȃCȇȄeA6Z=tP56B?U!F;'OV]x%  { 2'߂wZȀ26mdDעW')Eh=z߈?D.Ԍ h:~ZRG]c؄L=!Qz3$/;GW(7q yB/$H^0 Z]QƛVb]|7eh]r]ޓ:q>1P˄*hۍ#, wPLL$F0G0Ess+lE CpKEM<4Eh6E1 mF^D_`ο$^=@[?sa4 כJ`r~^AB> 9wAnw >_¯w"nTd!i'u/9K$pvmkw{Gv텵Op=O+|?! ĄiL"jRCVNbp8zM.q\{%O>ėvu - SV%퓽 ɋʏ?_RTL*}`~>fBq,0s=xPLN.ndmNA04vsNY׆D0y\$pogIOt/4XkTF3%2>|N= pkh,pB?\\js~k'd,W1XCcAv~4^ 6 /p2_xZl[;@r Fg t=܉d/qr;n 'AZj&6 FWW?X:9Ic ,Bg;r"qު:bUsJg*).*,rsYLq#nZ̦AKjI*B.9QNga0oEr'CT-gHhfh•"`} S0iLQynP~#|O04e `-.< T;CYZcytwL43?%T4dæTUv &5d,x qHP5U l.WCnY?{-a>R= z+ '-Tu6/U9̯lAc]kh_OuTf5XX8o^$ I.OSXbMCe+\q4L꺵IW-c58#,lNn_\=W?Si NQoaϾ`Ñ̘{9g3x WK3^3c-:*?mC[`;ZS`LeOԟ Vdty-`ϞB3 A4NR°V[ OtAi9V@}`gAFV'Pnf81@Og m.;t?V&@m ЙpOqU =Oσx sQ赏ͽ#[WT߬TL;и /ozk.:aqhc臽/] +Yau(\tM !_ꫠf%䔃WC/Ul7Hkvk4QwEz%*YP)}gŀg=4L4`u Lδ.s=K/GF/̈́IgIvյ^wCbhb0iTr1 exq8$313:V-PƨkKR,:͉>nքǡ\Yg=2٪,SZoڒڕv;c7c=m /$>]͔:Ҩ}mc+\Hb7 pwy\jZ%0[ar3VZ_K.͝Vr͌7gZ\\ƌdi5S͠ _Ҫ|LIe蟭|,fk*(iPe}O-_AK3]_YքxŝO'$M n\ֱGZ Z=XKn_2:BKìO͜*Ae=PGrNdz}6Ԇz"B 0CKQk{CT@rfVFE1ZO6JK2I}z16/)9ջ>fIb ^[enc)\!qF4)9mi[};мxBfB= |?)F*fRXQwbuqfe$=fv3nmJxɷI44#$EXiZ'ژ1$s_g:&nIcs>}̵N[V&#Si]"f'Z-OiӾ%}l] `|gcBl]ۧAM8Lv);bz?iXbWђFxFke#lAS=YϞݐDWD [Ae]%ME,+lh++8szb3z"Ɠ-W`&~!5 B #Y:XߒI1>ɛ~v͌S6bЗaq7<_Z΅ OVtw +}hk]h$#э!Oξh<*tv jPB2-Ot Ѯ@˛Kd"x0/:[ⱾX[t]rY ϯ[\\Y(,]x XS1x'Օ @vlJKK3ˡqF[˓I0ͱ~Iڀ2o`}Wg_Ƚ1EzP]Е1z,nHw džiuD݉f}VM T|vfIxki< $fݲ)O? >:/VV B`vѬ,aVpQ8Rp~~Q g JKKI=e͛6N1%qNDfJ Pf?u;[aK#VJ&lqfCMK}[g_D# AiIdKcݭ澞(kΖPMasOhuZ ~`#w`}_Mh}V JS>ac &76%HGAot"N* `ф@$%E^4aQ7tMxlP^lɁEFĬ*hSkD@\2r3Tk8͋ce'Z 0AOF=3]Ls()7RmoֶtDTΖ>ԍ'Ihr;]GhW]p8]`[b=]Sz6nYl#$9Ymci\Ox\5,1IB[c-)r/tE$i[Iך_(AcWhc?&31NOm>9E%ޅϰrmdAY7;m Bp-Pq?NC:ɝ+wY+Ɗ^w|55#M,< +?6iʼnjU-[ wWC;ZfN/͵m C{i3FW0zy!N3ܻ#UU(ʽAy?ݗ oW:]t/@w!-\PnJ ahRpHH((t΍N.w#87΍@0! 8{НA~YV+{ wfcjwp B>R*T<ǵEmĒQ* "ɉRGq5:5C*kCe2ׂnDP*^HE@⹖aoy[6*Fqm2>OsV@$\.*,gS9լQmWqz DUJq9Ʌ kdgePW ggղ!Yy'r EyY#.#? WQfuzӫuX-k2[O_Ci$hMHM& 7AN,硔tZAN[j!5CIʧ[HК y?%p;-i,3C.@ı@j j 'ڛ!Y' gMϒKb$L,,WTnȌFch:<1_,;xj|5|W8ȇrب \ .(v.vVp;ۂ|dibEsWKW ЧFaO>tce9=lú# XulZfrs"w߰nx?;8I5|=gN8%(^=<39w".'GsڝփhV/u>Y|Λr@aū!gsiaB(feg#Q:0q3F{TV:E9~zj59BEBPd(TQW&+5$R)WJDb~*gy 4tg(&+!c574+X=\14;X=F1n!szPZu~`{a.-o\=tU>] Hf3ό7U+s |M֜ȃ̟9cCOg4 P`2zjiIKbU NZ4ԟדު_a IrZPhȍGRbZp햐^) ] C@_4@^֗8(ȃԙnfgu3(9>rlf×=>i: 6ƗqHA('_ o[[͞(;6ucM|9o^AHt跞股VXk[hsijj?"F GH'amkX}MghgXOTMs5m~UMǪc=!>ƪ^1WSy IQ'>4\ =srqe;#p[`Ð3oH 6VV&NڔL?O45e;%PmCAd\0 fVJZY=~[>T^5$6/hzQr+V|r@TO_w&w̽ͽ۽}- Ors M~U ؘP?z?G$ ίtv1D(R!dǐB+$w =ip\ns!H+ 2&+Jer,,0C9\QTצ ;>9$W$mC}A GpO`?)ADprpl0 @b}Z^FlGHf2Re~T9=d(3JRP8F\v pR Z>^\|x9X 2 v]3D DrnD' v.Iګ28CPVSIi//ccaԈq?OhV\NRMBn| \ KN|K۾Kdw'ͣO>sȃ9fs(Y|r 0&$$pcJq)ݘGcqQfa2FYkvu=5UoxWCO|r=0#񮴺t(9|:[w_.TΒI+*YXBwS+SϱT]ejmyUj7ˢߵh~}.zË_:KfR`if3 4%|RwVHYc,Q^Ҋ[ aigKo[y$c `4r d WaH%td/ H (, H-TŦBm48 ["Z)f6Ӌl9kT)x^4FQtiδi\(ΆMפ#:6Шe@ֱ R,7D $qOD"`w{JPe%wOqMѪRUe ڏ}{E;jNTe*I6x0Hg$Xa+*+_`y^H_/{VցȋN GD2Y-Z(։FE?~oM(cv@r}c*7{=^ 0+|v[a)~O7[L"w)ǩkba=)!3#Kd,NY6K7gEMToޔ^X2g(2GNٿ/ܴŪޒ~G^[UxQYQO}cEGp]Wx8 ]9P,= fy3̢lB#\;al.{@:܉ҡῈ2RC8t dh(xtxqc9+(7P!+E &5WhHMO7bJOWJ <;=I?yoN*m9ðFoVե&"f:Gzz\XB. *aZkޠ7Q7AWd~j~) veEfK[Lfʤ63,W[vv բȵfjL)vR* E^fm-G-r+51H5)M)m)|(V)X Y8  bjmd79M^'ȟXݗB$э.6A{+{yv V"!x!aD1D/<}'zO=;>l}> V~'QaM kJ+UUI nuʚ%5^tI T+U<===J99o>r,Vf;G=%FΆqx+:8}?!CEIkT?Eu-a<N ifdO\ Ǜ`=1I,"4>+N!)Bjp>fXcE]LOp,^18f, I6$/'xqy]>/$0.!>w=vr3$U<;ZMc:G`J 9t,W°Gd֧CrVQv;u{=rYLCݡڊl"f7g>g[NFP>EH ){R(R,Y% .$"O0" cq,RH &lݧ2fv"7~RGdIn#2421iɜbʖPh(2zK <-uJD6x|o|lxkv_#ik]-燞u#8^4Q?`w{s(7DQ1SmQg h Ž TnR\ix&o~"ِl#'1#TD#v:#Ԡ 'I!I)Ѥ$vS3oc(Q<"8$[wR~&ڔ:VP9k]4]jlvsE:i1/be0YRĪX!>O)ynn~ՠ[_ZV׮plow$vww9v:=֓^4Uoto@3?e|Qm Z DB]dSMt%QؔiT[u^;vAj1`G+8R q83"$n5JKKOW*UJ(\Tr0Y4H;Fb &&%?)ld1l#HEtV#9/(c19QCЌcXExcv)C@HwaK!S5:VY JWxMiod:C Og_ޝ|>>ϕӄ;[zF_9P&[Zֱ t*|##Z?}H3] z.|V[$l~D^RF.iBѕQT z2xvYoz)|ϧا-sir5ՑM KzAeZosYOeJkZP8u,!^N8QSBP&ՖY,oV47}G/m;vn/{5NϽiSz-)"AAsg)܁bUzVdJ'y*){P/+fSFB8~,Tkm~azy1omѓ|%8-W}vsۣ:e=v]=uL+Ӂb"S9B8DB\yAcnj'tJҮKL.wp_p=%o65({l_nyĒi Yo!BX\rc.{yeS-R_u)TqSJS*i5n֝Ɍf>bU*6rb'lק[&T1Ԧb/& PNp . [ +En~QrR) EWN~$2[NqV9罾Q?:=\hd|=`XcoEt:1譶$UcI6e]+g'z)a{S_7]WPiBi,)x?W񲩒v";&#u AR,/2I}ivu[ZVެ-s 9`-t U`" P%_?Йq2R-ڀ.K͇ƫUs w7~f~Y5C"/ s%f.=i9Y6 ʂ9Tj.+ j :hy?2d9_)o^lZZLCךl~){Bpڬ.wpӦty=ityQC8-[f'ͦp 1%dXLDT"go D,< \g\g]]r>`Bu@wJ؁ `tNQ.mTUeb=*^3]h S5XfԬ7"4:yN-YjJ.L%J/EvE3_jjozjrJؤ/5t64~&Ɠ>7~ҦlHs22}_g4nɏ-EGbwckwl 8N.e/9G&"6ϒ\n(_=р qݩF4{.NR0YF14}X/9g  b;b1 ;Y$+%vrƺrSוDu[Mid({Af~J!AQXЗ0>^ c@؄cZƇS9|396`D"QdЈXAv7][ TÉƊR [XjL7}$Ki KR㩥D4Co'@P#B5e{$|YXk=UTb[Tnk@ ͹jNK .yJT/i9ZB|Gl蘘⩤fETr~M.̉[Ak(2 a({t=QeεU?ş1"6T@2I\l!iħ墙 ɓ&|;ރWDR:j%?JΊ!ez@!i҃#P*\]L ad)Saf-k-iZ]utc5W/J$Wk4Dny=>;ܹ8CeA7+Ց iP)-cEzM\(g~73]յTUM6oSwjTc$@}&uAC؛{=>wқ&nwzo|{?N=VOZ#JVb 啅ۼl%qӦs/`C#HfwyDz{DuǘtzEYQPo@F蒓1FJ#{P/f)F.RAqח`gK"%l%iҝ4;U1NW9-Kt}cAaHPBؘԺ1 CŪAOc;/fӗ |dyB񆅂B$ v q|W{Տ?&ח:pXn.f*L=o' Co/-fƁo|cy0vꅗRB'OlDT<5u?qr/>t)t}]^vb6Y#Z`5t|eɂ5 exxdvM&K&ie(L߯'o8z=.ɷv FmH[QQQLesy!8r ⹤[Ž3캪EEu5YN$Bg\g6+\Wx]YɜZeyBٜpYOݫz0|(t&엃g>)K]mC1b;_oÉS]Q[PݖsSP*rMrFd'~+<;@> ^,:E;K!i9gᜁ3:8zM 8yʛ&^],7BTd6{X/OaPP=JҦoM}0{VU!Q" IB3tY>#9eHNe^:a:\oTբnӶ[|cC#lʃ]Fm֕a]iaX̎4z p "yp}#:v~;"班 g?޵۳2'2du%ADqۮ[XmzG〃w">V0ٿt}Dhm/6R. uE@}yrbHSMPgZB']t)g![RGu~u4D@_/[:BlBq^ҵϥTUO[N0l;CEaFJ.^ɗʷxǗY)ȬTeTdefpC3ᗗ'KVNrglأJ5g8P fѝ^RRA2$JzeHM!9;>搬l *a> a)0f hܖc)8dږm)Ʃs /氯UGV_,%H2Я\y\75YXrQ@ ,?n]DTe2kfnR%<>_XLf߽빢:%cmxzp6;k> #ƭ}bo|Xk%"mBȁm]VR!}5qBggS %$vUƫDDP Y!E%*4$")),/U)H6*OJUͅ%U_zR%˃u@H Xlفy(||ZV'W+5p]~Uѥv6n77)6%]As:Vu@6N}ghgxW=IA^۽B)V=~z'C#Ig? L})3aIG(ߥgۺ1gw.UD*ZԹ(PlkBׄZEr( ==mr+J*+&1*;6H 5V+K3$UWO/_]ݮT%cJR,[^2~[fil[dψM$N԰R!hj mVݡJJb 6;TCJCrpb `:)IT yOJ=\M~S~s~9I2U+ԶV)" +\TZY yl(v8+{z^*ueMd#CB$bc%,ƁĚ,Y y36A$!gxIc`f< $(q^-Lf^}J[k99|c_<#s稈{eA*l=]'I-/jx͉^,;Bq>P Gtg2^[#+LVQY4tM#(~?n]bW:җEXgviĝ33SKr;-Q ]YFLvW ؀|؛Zj\<^֗ ~ėRUO|dcLnHlo"]([>ܫ4WwtpkޒaYn:c {IoM`Y$8Y|wEC@uŊ "0xxTw А`0D5E 1$Ɲb\j \&  9K!H ֍4%9Oᬥ`w!.q\pc\ S6jVR1Dzw7M~dDWz%/D=Is+ t8?|wo ΍A%,b(${"Yv0w0y21IJ%.a u>?e]݌U<o*o zUd8+1+^Bxyxe:RhY1C1dU3ZpNzsZY2iLGȢzT"8F%S9xN٠$`f\ܩr.vXB0N,)T+]hWNt),y{T`55-Wha^s kՖյ5]zV/lym^&`  "Y=sݚԭVSĀ5feZh5X{epd-AyCfKn?Bܫ2a"IF1v4X3\SQfVEހic@*Ԩ:NM=2S*VE`!y{h`i qS+r,8-d_馑: X`%j;3*N4f'!Y1\Iǝì̙mNä6%̼͘3X\3 gBp3 Iܭ!QC[;-+iu^ReS,;)@{Rȫ@-Z \oܧښ" F7(<>B?D)yhDyt$ *O$;np$7o)RKrْ$;~m{\~S?}oޔ{m<)vT Ksw%n}oh??V_Iοy {IEI:?1Fԩ*[ADAm[a [ Q[3an fKlbN7Q<}17#>MM." 1plhL8Me.G`4~tY)I Ahj)}jP)MGMreN%u{NvA<=;msEϊ A/cxJڣi#3f"8kՋZEېm6m3L!l)fS:1IqF'ud52~p)(8 !-O`MA9;iG Ӹɑ|a -ѕV+NۄOWjcW/}i{a8ۿ?٩/ <'n" 04@G 0o-L4cf&0scGbaBFQ(vxBsPN܌ Um62!zzn88c8bGBrZy܅WMжĘ<Q }\k9-?LD,>gFQg 2<,֛ub,\L*9͉ɔ?틯b|d߶DDK/ޫ/+63l߷.UJynF\VIP(*0k*I@F )a/%X^BO 56*t4[e8B = @ըDUif3]nϳTU"7%|1C-uDBexk0Zi,^Jü X P+d7gh2-7sh9p10+8Q#+WVK"ձҭ[7LfJV*1m67rr*+.aI%nt6( Rbh.WTR>ܢGmJ[N{Bpf1=E8(Ĭ g;=ei/UvL c+keeus0E n2!"H@&O)>26c^iEÔnppKguF,F\@uv3&jNp4a{_v ٰy٢>=+%J(|++C}G@ZB/׳]M^0yiՌ5!A>6GМ;%:9gi|(u%8m@ =`hX(a |5aǥS3q!OI/BE}@@X"n8)W ,Gn 01vG#>I=-Dhb;u\VrZ&ИWBDL սZ T((Lvo+V&yuwo5al̼YmccxGk̷G]1?wB)> IP|[l8rc9T gMIr&>)"b` r5ilv{!bA/ŠSzL^Pn~)a5~ހK1ȸoe硂Y4:m[ #Sq|$cy-<a"Τù!۲sH}D=ƼqaQeXr8O98 X==zhu֚7N16}~n&ku\7K@jze$!M6f[jƭIjM̈́Pڝ E!iy~Z9Qh~?R/Y?b6sG'F|h4UBkL̖U{sC;R}j YKWKj4~N\Nĭ̍m7gPhnܺ}}|j9Yg?p[_zvk0x*bj?"/" {7\n3?bID mm@Y$KczP}Recˏ禈Ej6+=ccchM<= wʀF:tB5I ex1]  :Kv &91yn&vCJz&[ڦBjqܳ{k4W'Kt $@ 4(ؚ>,5#tZ7t DC~ ,g7uѣLBRچ-6ݜ5YGGcOx|5gVձg`{uh+({?qە_]'5 FӪTT8k4ƯS;:eY|M=s-_|-\G+j9yUU@>6kp+ N2BAN¶LpdN`l S-БUkVfc#Vp,@/iAMV뚃2ez&ZX@XDJJ4BDڱj( `*@$\ P6A*'OSDA9cK4FT!mnjxݎ]6tم6Gh} <%;囮͊h2U|b4t ݛإ^XPizf$aa:}F qdL8f`Cf6h?= 6EI_4(6!؎n†;JTk&_ DԨhB{bN 43i0P5Ț5F_]]QXsH9Q|16pg:>ȀHc: %p@1ɵxqJwV4Q?ct@lҨ$$0̎*{PJkT lD"h)XouM[#r.I6csxe54GƾjmIYe7NxHc<-Fp(:дb*0}!}n'tB\HG:۶dI[[-+\$رIֶd>6l@nl^;Bun2 n sM@痘Dc+ᗔj[[`i"U=J='y!r| \ǂJ瓠-i<75! zEdmd<6>BԗTm{k!ߘo7;@rllĔN8pfmFw!֖TxȊǬiYzػtBu/~߭au|Q أr N'վRH92f&P>BZZƵ- Wn}xkZ5j V(Q@[_[:nmm4aZN6Gs]o ]t{ioWNE tuI'~ܴ)W?FDg,0Ta"0 6hԱ|Ue再)măwlܽݸɴ]V7oԽe%5FG @MPӔ.^rzrv g6l+ 5J+9*Xh_nѭ>~n t6~Gvu k[D{׮n"sa-+|@!ۚ O_EI)R>/H j*wz7^vH09!ǘĻv,ʁ3YH"#ldih$6ml]z6#N]i35o,`Vh/>a dq5ѕ-.}ɵk1S1hYQnou1f#1"3@9W-w?W_TE x갩T a#nWAD ajhf@a5cHCYIIq .[t=\z" K{]Kb>Lo-xzV̷[`gm}߾f~I#@9Oځ9Tm7Y7)^"4Ąs|VYrk$L: }Z85L&K6>5"P @jѮOw"l%,OIOO*KsLzX 0=8LOgƒHUUF36Ȣ,!1kjA2c? <(3l%lfc/g*;=eQV2tb |v+4\d?k2~Fl XO6JѨ>j3lQ!|Sk>xK痸`[wӍ; {E;dx85zo߹9zcߴkcQo`xg !g(X"b0B9벊`f w`'44t0O-tΨ*ø VJp" TZueE\i{4~|2sIw2/n܁1uN`-L k%4Ch L,`erf]¨%Q,D6)l&'zQBďj1qiJ$Hn^4#>Mk颈[ v/KzQuQRt`šBFeL4~; \ \{uʈ<.@G%uqU4ܙK%k[s/=ӹ3;Gd2R@ՠ-%d%w]DJ'P:6~FeXCQp% QaZ`Ƅ) ReBbBhcl2)ܚQ@A-h5J5ƫՔ5UVk\K6;n)*oKGmYYHuM0`*EvN0!4)08ZoWN5@gW_3.*\˯Ԇ˥$[|a>ps_q_QU쵴og)H _vL??`@(kr EIeC=y*ivIhK37C`ѡr Eꬉ\H U6eG$ gᆀLc93n y;ѠM :(;"Q6b9dQ4j+(1y*.z<̓g=],˷Q`F\ntROHW lcQjΒ/K)("+՛Pp a){Kv *wAoflF *wM# @d/W;\aw=v>ݖ?\|᎐:}?0UE %Jo Sg*H3G['mF>g i9b7ڒk-4 ԈzT1R6J5^: @';`zGzwMg8bu 4Y,&.Eamf\)%N5(X^A}h[0IO}أ 2dPA7G1mm8 Tw&i/I#t+"6hEf¦b !g2*xJVDCQN+Fe,BTMl&Hu6g*EfI"lڵ.߂qkYg;VUS(l^2[ F["M Oӝ٫WM-5@#y/j^ / 3S3g1G8v~G;ǧ13F#6%q)X`<$ j%2PԤp7"zI#H6oD*vN?_Zc7~6?G>a"dp-G#۩J+MyROB,(цxF7?HRQK]vX ~&i8!#d*㕩Q9m!?~2yR?Ͽbx%JEjGUؕ߇1)T`*8[WA5[M!!L >zRg _P>t"l@~rso&V^e_ Y|{=DphaDh69" DX (N^df18Ҵ2FP֎qc;^0CM 5~|6LC?_it4vX/$7G4gFkB!%9oDIWs*F]D i'P^Y!٘o>,rH'$R=HpY uV߱ j!Evia}$hr2׷-BJ+=^nr&%S?~ y|X,嫗o~? _p纊Sg>Bw&[\yWwx=| <[ VTVX ,`6hEv< =逅;nc!l"l&{5} ,j*{Z ?s=1nG{snLN#H~F1HѥLJ)#?Q۫-2xr'"5xY6iwU??uжͺ{h=rZf`1W˖5hﳞnw'r <0F Ƥ{ȅ\^r͸N^v\comsQ"j̝)Β]g0aJgz`'I8LUW :^x]L'mu}5<5+vlk*ۮa^*ng93HeM o%4!%0h.XDR ܤ.J+VJTO,]6v ю b"tVw@"9j3`Q,=YSZ2WL PXXU$O)HIŃ!R {N-H퍰@l io AP UKWGY]k4`DM'4"|bQ1\s HU K bt;:~,6`v IIrM):b,k:K}wr|"E 4$\t!3 P+.Mr-8$rW5lk57pMC]pH#5-gO#̿;u=S V05Թ.bT%00O2Q@2o8IQHay '7J#.exgqSerR)C[ s*w_*xJ34^Y?MoYz s\9))+~%c = ryu:/>&pT~xDp&fߌo?Vu]#Y^RiN$餵CUGV4'qGw8=|UӦ]^yVɌKvG\(D$8# _YpB0Hy9`H撈؄LE> {&`QH sQet?`.L6U\C}PA3D]:<*T\dGj _EJ`N~QPOʳ Y{rwzrD@A?!$QAxI :LBWWBJ3#[3].}~Bi< 6C|%^Ź;??DgԔ(ϛ[wnvXTx׬$yЍϟ1!ؒgO5%8L|vdNɼ!FMyQ*5Z5ZF4$DU Yrl@zyG7Xܐ~| M4M1ڀcFTKtjuQ󦉂TJq[:x5?d0ఫF=Vcbv{gb ©|7REJvZ[ͯLHˬMSOweN?/~'̓gg2?W9]"3y >ʥS[&.s6WdZw{{ww=;}{RgDTr#DZ#|&M.MդsKf3l6CAMyD:{5Le[TOuy'"G-ىlB(^A tb'C'xhbɌEynTA& ٣KC~|?PO%K)7#pXD)!nՄҶRS~ļ+]'hqJPPOe7'fpԠ:S1dLtˎY(sg3m d|&@D)(O6njM۳9}($|{>GO@S )H N!Ba_]C\SfG'-B V#6tQT8uBS*Y|暸g#->>>Ԟ |HbvSjIZ',tpcK06Ć;ԫՖAqй":6loRznv[v}ߐO"vCt8uFY!+bFΡVf$ݸn.SUY0"C׋ŞzJD@f5WS7}^oZ B󧪵jJ%'vֈX굆w"8RRw$v'ľNb^).MWU5SZMzrTfVRJXk9B8%oT@ \h(B! V"b>ËE?UiCgn?t {׊iBA\9<ꨇYH^=yֹYH=\h$Hʛ4Ul?R}WI~]<3 }R}4JzD):iqkc{w< I$G*BbQ:|-xuXHUo%r6lZPN!27 V'g:quU 2pȎzb6։IpdD!ᰤWN]d"yNR|TEGIJ^@u ^qVsyꝼ)YRKNg5')z>uR1P:h%C-CHߔ_8Hw1/]9A|0KX}kVS=پqי CK`j\O}5O%9>c;dmFOL2ito: "f~{P)Nsm,9a1P;6!Q6hvfDZ2ͽNFhd5)EĜCaw -P 8z腔6&C O? (@ 6CmYgZnx1;2'd ƝR-Rzukߛ)P^a>ts{s'꿙D&mm|GSO?( n2 Q>Fi 'H|)FvrRvT}>$gv5̃mfּ(v-{`_a}o䙼RA3g΍˹fغ39,dqiSF}9 LiQdMϊ)b/rr|<Ԍly%kʱzFL?E_p:^>߁Hfrx?V:.<-&!.wCd##;l 9qڴna9b:COQm,vDۥwT y+{wN\DE3'W_OYeqgꏻ -l<ygygygygygygygygygygygyg_1D?7oB+_fmڐ9"H!뤚BlBT*wTήnԳy`+WX˯Xa#[^/]y/g4I3( _F*2jG:Q&=DWEhZVhAki B+zmDf4F]IidYtE: SZATEym H_C!},ІRΒ'e=)J 0uI(ېD&'e_Qz#Z 6(d_ ?8 qq:fJ ٶ@>v ڀοE:I i/%FwQYj#'鷒'8N6CFjH!X𡃏os/.ǟ4o'ֻ?1: endstream endobj 185 0 obj <> endobj 186 0 obj <> stream x];n0 ] tТh{Y zHIӦ/rt[5钲zSO!Zv+5'HU/uӲ8E9{ՙc^=J9<^xd'&9 }wNI33: 0cq` 4L0 F0Fc&Nj -_eQ|domZ[^+Mv/坦L4BvŁ endstream endobj 187 0 obj <> endobj 188 0 obj <> stream xy|T8~νw53Y3;kIf&3@nH$@H&$,@PV.u)Z늖xV}_ZE[9NB@ys9 gb7upq+Ļ0~ +anfǟ2ȄRYʬ`ژabafbN1/üʼ$,DmaEFثا_f˾~ Gn n3w5$."9*weRYlla٘,r Z:(c.U Œq7],b F6syN=3,P\|t1Õ_rp'؛4~t SEVt[@o. 4ff' }۠q|hi!3*~` ~P>-ʎǙ;̱ B[]F\軰1d?X9%a1{qEcʙl+WĂ7>]=`>nt;  y 3t`3J2oM@brH r68ہA|Ȟ@~2XōlYjS5InTSuߥ^d Vng?)c=5&wKf{h SEGP>]PSp_3f9r2N|3hv,? MU9^ili?ӉW G DгM-yH^)T͛[98E¡‚`~^nNzܼ+ۙ۬shJˤe0*.ȏ6r…mYGyZp!(b q b 3XWˏR'k̏NR_`:uZ~oFl]Q#i i1wo='9g))O@U b=V18DE5Kc72v6-AjFYԏ9TMdeiX"̂4,CG,:E~VJ.UaIӰuva= k:}EH?$͘YTO2gҰ3ҰY3ZҰ uό#GƌӰ՘~LCVr˳iXbOҰ]1(d̓`P]kݑ9_Ma ( k),%2 ͭT&SXNm4 6#i_+"EXa",WE_+"EXaV6a*7xzj"0" k^n{6 s(vt0% IݘI(lEs,gR4 v7ʹ/ qaǾr&Q9k^y]ta2Ϋq4 8X iQؓa|//}gggE=͗Ù6y`m/4j40B}ࡦÑ3+QtA\B( PVCnW@Ͱ!k7im{;хzh@A]+]~vh#upn桽3j.u2J vɁBkRKtB[SŗГR: M y chByF>?2G7J]xEPKi}4pFZi&….ItH~~3;O>_?E﮴, SCPI[Gxf6(maڗϯG}WBtFQJym$(}{}szNhN`D9 e9tJQWzedP"mPMAKP,1k1h@궸MiG"]]H)"{/,Zo29 M snRA:x!B&gAmW9^jMzt~^b)Emmvo`+%RTf8$x;(Rnζvi8'wG\l&HHQ1-?y{<۠>AǞM(W{/E>?2)h}WxN]ݞy|%`ڀ/i^DjS3ͦti xj- yýJtW4fZ%KQ UDF'U@z+Xۨjv Kw-YSݧh7FrJF%z)J`1^&~e`ԖQ7#EӣOcQ(zZKeXִg-%G;ZۨtvwP } Rz1Q^b%;6Q-+WL˩h RKҗRX:@s>6MwX x?HN5';^sYISAor"Ƌl 4MwnZ͔_&N[^Am"ϊ*Jvoщj)gG}xZ/_Mͧ#uE욱O(s3ȴE{\F0Q2y\0#3[`;-uӖp )/Zq3 &t&f)c6~z? -}F[7=Gjk3i}ޞl}*RV+^`+'鈥Nk.NJO@}F#~ʓ 0qoz0p+L tlQD80s ߝqĴMߘe-|ǟ{H-?ƯL}}CP um!uKd0{ Я}Lt~#x3{eCmCyL6֚^uK<ӡ fSbz u j ܲxi_ZTVG" Ūp/%ePE8cǎP4zfDhAh* ZA6F`]}]mCŭE(jIH}GߟhMNrbmD4XMoe-4 h]AB2m5ֶu!цyP7ʟ&o&HlKtw wo{ZO6ÀWw'Ãl:HӺuXAQ*a%mX"Anh` [E|5_(As;3D n"y n(Dbn"_ޅiŧ_CEboػ[pfwOOI藎_kr 蛵˯fR{NL_pW͕qѯɯ(#82C_:2ԇ[ytK]O2:X. "NuuQa`cyѓ6OC@)$! 188A{M͟JD`<0z@Bb ${熢UX} aH'ث*\j ;(Zq:! q>:\ϱV|7 rMkGăQSeHO;`{ x[̑0Yf@r,c^ (7#YuD̍>~\BXs]; |0LP$|z Hr޵.ՓE$_D= =cy1yQe0;Oecl ='/Fjevy .1zW-f<\5B1Zb)/I3w v

აBHGM%5YDV(2 ˵r\)˥rNȑ4zCoLR=ɤs3  ZFl440!K- 6*](75ma?Iw+xQCjX9 ȣ V)ZD|AkolnFU*ü_pۘ V MkFw6F r67^į[s\^W{dkN/mA@lҽ\$#h"EsG ;zUW{8\?:Lqs"= GGoS%z:|R#(G=>@8盽bny7m=/10꺚ekubnϣrq|^)ͣJQw>8"UJNq[tZn*.&M ΤIK>/O7YIM7:&95\nYjO:0A@Sk Fmku֮ڡ0H'nTNA/:3;HF b DYƬ`d#AnƃC7%0(J4~)!8P1*M0IOYqbdK%B+'SKg+*Qsp+3~1Ax9A>i0&0~MPu?XYdzcrA M9q ɳ r:|r.8s|Ns)5($)*4='q{zX ʄ =p*blۗTꧦNA`qTKag4X"M)w@N8^3MRYIi4(-fy=c0.)% "(q)B҂wkc񆑆yysL_ %s ,O$/ϱqޜ˝Evf>P.  Ck]__,-uf"bќ >e+5MCgt!?{P*kQR!yU$yk"RUM}k,>;uFvR_(p3bLwcN_V%57⿭IV$5RNC&dJh6Bs)4OeIn6(BXP \̆OEXٜܼ}t"7?|" ʱZ҉G]fǗ2FTo')&pٸ\*dȎg v<*as:|!g I25OHjܥú 6GPqa Rbr p|`2?aPrr6ܭ1HDҊOᏑ~OwӖ cilKE93RY]|.+^95]at{d؀^%j+~Fe`*ћGL^ȃ*69+{^OⰷʻԻ{nwOx-J|w9<<=vOoiWvDL"' ᬰl`^z=Ҡr*nyN˝L3˛u{LnkfEV&hTxR*r֓a<48C 3ɉWUϜ`?#qOΓ#R5h4XWu8bOKz]^Fy%x6$բmlxdgw-f:,ckJ|ٖ%1<tkT5uͪ!vՎw_>p ]>˶KV_dkr}]Φg|UG-(l2z|NDŽ1svC6v_u9wdY§YO*7gmϺYפ1Qy2mc<tz$+j7ȝ2</-}. I2L)u\c|dw:\: ^ KCLHe0S+dPaYcb;O9/;n Z`g~X˙qX1M)[w̠aS,qQ2+Sƒb~VCjLVF;y' ,X˃b(xfٷϾs`L%xP5Y*S9Pr^SZB=dE|LTm@FX^b^B1$[he{;ٳW\w62jw,q3Y=Ց'%ԻMIӼ`ܖMڃڐw5mɐnF~T^T_R iFQ:+NeMnÝt 6=q<:a:0jY,vkIնsi+ُTTw<5^^4*9'D?*ߟz pe<zWB%E*{yVa2)9 eLR| '}FA(+K}GmY*&l\`x7O|~m[f7 tuUoӝ?\eagt`Ok<W⹿Z1Z H,Bv"&k`LҤf y皬Uߝʜ;uN6ą}<[6JkeA,pqlggɗ pgE u^z BWJMUTsFi @g2i|N?&'f 20؄7arx]&+`4f~3K^XA3 v=g cvm;QҚGv8-gWN6#ﷳgQ ؈ r KPk$2`$וQe>j5l觨%|6!ʍLF \a!8C &A-+V /y,X9]] ^+H'؊ l9n}'`>ȝI6`4S9@s⑞%0_lT~x*?Ӱ;/;aǷol~גsן넶7O~~lb!~)įe`2f~7=̟w+JOD{Drk{{duS*G_9sJgn`6: ȒD*3#W6[LfE)w!$\1dȕN9/b{O{-Rja {LiyGN/5>L |({jJ͠Y|i{`L!~2P~#}'fL3h[ vӓp)gFvݻ6Ov,+ͷpTg8;؊wk~o.'q6&w)X9xpW->mO[GGw~oн(_/\Y^xr@ Q߭[{Q C'sgC'gCr2u•ad1-R/._ 5!N (s3ݙ,4!ʡ2CǑB4(#~?.nMB(c9m8''vWY}n *6b94,?~ bt J\rtw:*oi<|?gr "p4$#M216& $,@CD|mGvƫ?i ᲨkET tzZHe@}ۅ^9]eM?o/Z|ӏTRa*#wZ`O.o[A2ppei` TK Y9R"7 P3zAv\;JbxR^1JAn:_h y0$<1bkُ@;d?Q-vrIv)XdE0]8ϖrq<->e0γ Q[UgOne*++tpl  eA8N/~ vbǁU%ߋ 8i_XqklLXROK|l[>|,dqY֎~[F*/ޔ^ |⦓ȕ8>v1qfI5CpaN 0X8**:5R";Д_{<^d0 f!T> |޳ 5PCmGrAQ1eVog%H6;hn+Χˍn-O>?_uZW+_ԾH^)q N>F%I`PcSI8169Xzmڀ5RH5jaߐ^ADZUz|2%~K]Ypѱ$C|m.tڀW%ߐm6~߀k=kIFGEc`6L\ OHKr 1jV-SujF` 47t!{HzHvH~6&J^=>͌|#.]a:Snw;H3WN-xwq{>##[|Ey:^CB sѢ2ǖ#1vE'[N(D]ޛNPr=z> ŗ8 m [ŧ<6Ҧ%H/m4(0[ʂE2̘<-Ѡ/eX<r$ ,O0L(y7ܜ<8KS/We=T/W5,'suc r W˓%ɣWF\RfvhHʯ2,?+"wc@_'X]ߎrܖW؉,jSw)bJc+Vk=q-i+ʲԲ΍`E`+>i]CLƜf( L Fx,q+3` 'R#ax ήWe2gq e٧Of G Z?2LUޱgx) ,xIp-soS!N-ɴd(/C:ڧG}iYn4ͭ2 iKB#QKymY>~f.8*D"3p$o"/ N"1Q-lT*]<*N !E9w~\ƊV>Hŷߥ AR*Ȥ sM%o/Y\̩:/4g^ݻtqo옻^G)NujWqx4v\_!)t=yU VWBqL|\LM|GW tHF%jss\ '䘥H3>bZU^-ɩ/S`13Ӓ ^OQ[<ôXr@/XC̮bJSSMnuqZi0*WӒQB͐T,}'c /Y2;zܰȭj)YB>W]UEk m ׿j-{fV@D[wonn,F|6}X)s=ev]$% i#JF3ƆҴZZcقRJb9ΉD] e.j?4LNmuC{.?Srӹbl86tdb֠)Xb,S_o4ž+eso]I/&N+-+͊4MZ*Z欯\eR01*Yy5h)|X@ceGʏTk;^vB֒- \b{d]ul|Wp>X.K«VJܞdV殈45"M Wk5ċ22d#fsELyyeEk<Ӝ9BԴU`o.3Bysn"e6?R&mloCS\f!#r`V!ڐPS3#!$@47x?".&2x$~?1ňJa5~}cgݑ|#߆se?۰?Hmg'?*xɳaQ}I3IyfZ]04֎؟=)&dvmgTFP# k|EQ했9SkdzAx9 NQ@ Ay.VTA/c;y}eD\,fB&_,\KeX-P;!6xN'Ub; y/Cv;yrRqҙ`P|׻ְ~r䅆zlCzJ8_Y>&>NJyIdsQX TsD#fKQST,.޼E쁷vܸrsV2bve\ȖLU e>}xSfV!-ǫyO>dW\kݞ orL˅QOyԈϸkf<&Te\.my7Ry}D!()X)F c,ep#d)8/,g)^ AA],~-mLi!<6"wMʡ4 4&8m6yyX -nU:{qSk~vI^grg˒vQ_Y2JrM+AW6&S2#)q*NgUe*r$*,Ux)ހ9<9A>$WMu+ GT޺*Q؆ ״v]i4XGy}݆LD"&2f,..a~}+-`55.lgSߧyyդOɜU1oYf4U)Ok~a~o!+-^"IJfdV$9}yDaj7FLօ l@]"RCi\R ZͦkT*ǫTXu[6=0 c*T=EOMj1ÀֲBiB~֓^B|ƨ%/SdR--e/9x ,H6+8 %7x 13Ac=)QYvWO 3ǒo\f*um>^L"!uƷL_L?"N'׹%w]OID٦jS59-0}e$$K$?@7}Q>z$w o0D7C;n&ʼn)OKy'KJHb(u>`/J/‹üStm"CtM> endobj 190 0 obj <> stream x]Mn A+YlM 0D^[Y}3Nt> endobj 192 0 obj <> stream x9 T\յ{ 0`~|wa`` B $$|$`Bbh䥉D!p/\[p+`2>KC t`r2RHpЄ切6b}?% PB@+qp/<¯o̅DF> ?ЎkmId$7x \r|.|,r78P+{~JyaSx[K?>s'YNxO #X\3wc< H N*҄ 3p-p#p$|H yyIE|pC< \p-lő߄;Nu I CIA/0f:nf;.\\+Z5uIP d-Qv00;G}>%p>J$GBC ,#ZE"y|Di-et)mk(SOtWY1# KϘ7Y`=7s<GȕH 5Vmpo‡4܍ 츟VjAEauwt'D { ,z hk&.| r% !߅ l';$&F1̈Rtk.u_?Rޯ^;9(>'/E/w^IW\A_ hSGĄrJ+CX/+xs97D)$hEP!Y'P l R!(N <)ē8QE|>K!j;G pq\Ȇ1dq#GG6 lFr9oX^Ƶ o8 8.,/\zxkZ;8k4q@ꆖzgޑ掿Nb5)=xK `SF2ҋLm3QA؃C0E+{7.{ry/لFl#CB@ValpZ\Ø8 ߷ F؂u?՘ݷ ԋ8fƽl8{-;7#RN-#ب FnX/*v 5u͸͝9$43l9߮5T ;~#{R'@{jYbLbLT<)M}O6uT6V6/Z6U/*Mʦ ٔU(xy\!˥rVN O 8(U ThVTidR"O`hS{) KM~Y 4!ӽ M| -9vv&>hQ`5įmTzWTcp^4? fY"cGe;dS"wJN\CΦvNS;cm `2hiϱoڞ1~^nzW j; :|<ޙjOu<-w:kn|Ez+2Ke+f-ŒŒŒ-qƺꛖCM'^(b{*hdKgN=Z)ڭb1 QPZASS-aQEE+,'ȣQ_z6 ꆼB;fgxk_"\! “&!O1JbdlܱlQϻyw:*w-<Ƣ }.rɋ \=)7~ɵI`ܓb.!42Mĵ(#HvAB yCzT7Ϯ4ࢪLƹ=\S~%WhaXV:FZCׅȈ.EE;%ݵS&OO7%gq=4/M%4s:O '11rfLnM&03YQj3ڪ]R:C x"ݨ3A}&QWXd).,()xؒħK.]Eüiq'/y[g ~з ]AǢEb{Hh݅יAQt:2a23YGBS$%%bKLJ zQft`0ff}!\!1Q5:z7ahOzZ)}6@=T)2HxnJU4ȽʆypY-lo ͢]PeUsgsmY k:Cǣ%Srwޣ? 1QKeqX6^'87 +JB:j6eR>ffCҒ>!籷T7u3HsA_J:$ivamgk[/2o,_miuUE" ~F?&wJ՞Bߋ ZWn^]r_\޵f$n{gS>>.Km=k .&{(NOPZ8vEO.scN6;9gRxRF0g UbT;&۫WfHSf*tWDs'K0Ĕ*Lq-w'2S)CX bچ̔L| Y:Btǽ6 [ǀ-s n$:r4j1T`lɠH2I+Y[zhc޿w3$VnPzMԳBJo'oBC/=ПxmCnͫJs/`sROzXoͷ2EKL^Ȋ b,*Ur!XkAĨpiavNu%^1 h?;?{> q< 2XK8V*742[IǸb d@( rjă#^ZőH,bG/zR crno>vzךV}˛YS}=;V]Y笶մU72n>h]ߵyXז|kof U ݼkV=qmgfh"I'݂E$bŒ=SD`4!S!P j*XiT/6%59R*۹sޗ l)\_Xj)^U۩i,*7>jN!-ͽw &Y4{v H8d%{{OZcP5-,XP lqdKӒdSf <Ӡt[2͖4L%kUI*y:pU*pxjQ2cM'PI0# BU$V l|U? e$Gӄb!  T@+fI^ ,;^O&˪ =?q~Zp⦮̔إ&g|ch},iv$ׯ &-)h܎Tj֪oޓ =PKV1|&gO |eӟ|:pkT 3 o+l][-zϱvWuK@ԊSa_ ?!?> ׿I!›4Q m&,/ϟ,w֯o@YA?0֜P vaXvv(zX p(2yW\ FoX/[H3gF,-PJY't~UbaeA89i'VܟS#EV̒nXr%E endstream endobj 193 0 obj <> endobj 194 0 obj <> endobj 195 0 obj <> stream xy|8>3糛>ln†lH\ Iɵ!;Xz۶,ZZJ"Vj)C{<~}̼g=kFiġ%lK6El$4BѷvCl6鱵ݣ"~er^/]Е8R$Ƴ鞆zF熡˓x"Z.=R 'Qi|'8BzZ5W҆HK oE~XJ㾇%ރk%>/HG .VSCף !=kCu8V" ""8bYP򢅨E{P!>݃D'hB *=wr5HJ`&t%ev!|nPڌNaNlBF_ P== ˹ bPt=8^}y7jnLzC 7u.G3,JXŸ vv>#N%+Vnh ҄"0rmEO#|Y-r[! KEpSiBhz[3 `5_w~ O߉LG"Ij{%n[-OD Qؙ'vBh|Zzݎ<߇~~ z.{N ϱ yg\ݥx%ވwE>D4OAZ19ǩ8/W]~C2*- ~iIO'Q+~GD) 4/l[RnG x 8~hCO#mP^|8&P+i/Ԁ4V|Nx?g'DH5v@.#M!mro8qk\/̓$|ttMz~I_&d>3 Oߑ'O@}6: _&';qþJ0tPЎ֐q+wr~DEHR˺g{=^!1I?D/;SX ndu:@ɻDNƟAk lC-} ?" ft}NV?1TɬdDV:&^"ى?տ_|0zk\]ā~/ ZG46$,3t+A$'@kCu,qZ^B1;WQ?C{@03ߐBC ^V S.6.؇ ̰D3q+^jgJOl_NN6Jx6g{YwHSm4߄0+VEM#ҝǥ?LV.{tN / >'gX7iA5؎fߞL2Q?{@; FW.kAzmԖa3 IY˽2t6 k!' I'f.lPZNٸ>& /A`'5H W/WUήUYVZR\TX dge}^[p;vb6 ^ըUJ\&p:f!oJyh -4ͽ'*434B0`v|3,b01/T\+DV+vQbp=w2X :kgB]tH玺ZnZU㭉r^@5@Qo/TbK]^Z *jEmZJAյGuݍyQ\m">PP [&*2B I؛{x hӁT:^*^ag4{ [Z-2 Փ)UI8Dsrk@@c%厌{}5o[n7Ma 薥+źZ14FI39ғuh7S{%a$L0# sh%(OR1J2d6,Kr=5$a%I}> &YVe_-JZn+ PJr]g]%оRhWYw'a ʱ2JMf}> KC˩\%a+]c3$a ʵI(_+¢|EXaQ",WE(_+¢|EXaQVQ^f'aMڍIXl"5t/'avuTmG0g|? yDs[" m28c%a.e S˒؋lfے0_`ߟ) vPALL>JTvw$agPpN o9?$ qgp$ 8)4+K1m_iiirLe9<7u2U$^ڻ-0>P-ko9SeZ=hx gH\b*@yIVÈn(/1k!6boGྰz76)N/?aSڡ ?ߙ VbPJS+`$xz/;)t\fdw&g ~٩/v28Eu1Wzhm^\Bf=?k!ojz\ /ͅT2h "^- R櫃.GZbrfK<.rvEq'e rܕԡam$Y(Oi2fci<=70|j+݌ֶaQT:ڨk LJm#Ӟ$ev6hf`Mr,2m9j@lZ5)_%L 9E.Zvȩ?iUd ӵ&{ iKtESyڠߑEzv~]EKman`˝S̮$$|3iNrI8 fwNGkvSAAhU}I/пyeQ=M+ۘT{ /tf4u'#D:yr%`I|#js+%Odm:E~O@OjhcLT /ZF%L 0YS*cfR hSi ee}|ۘgjun tJz[J2Oo&?J-?"&) 1M14=X`|BO3hcrdL3=Z`=i=LGkIh#ig[# VOc5K2{΢Vf/z*znY`29@gmc޻٦p01E&9қ)O~ڑmHƌFZ2:O lz"Ɖ_tNi6o:[z iwR:'=@dd~(.OZIZEm`gE ڔQ/Tśd{mg5|'gna7iAɸ|ar O|fχ|yJW>װEM(85wōL>cɾ/Ss/tEDŽwށށ-(Զ | R>LX=L[=00*ȃ((Tww w. FF"˻6DőŽZzG6 z;b@dmPd .tCb2$’.D#;-89Sv_S ގl aYE_xsT/ddh~MeuBE-^UiU;IS M ׻vsh0;v:`7 IZHD6DzB# lC-]=0rb6 DHL6 w DچG ꅵzFF--}IK^K-M7 FkWwxI;Y һa=w #hCږMQEDKm)rK`/Cg"zvC]tbC7 _o\3DE8@ 7ntSM!4|@t-_ 6bv/lݡn^|�kG_|F 툋`$ ~AU>_ P{q }]9WN~.%.IdF2C2S̖,v>-Ņ=x}Y4c=kI/ƴ n(<e XVvA=#n4փbs$3E`,'jO! `% ~ꘋ#=ƴ;7ƧjĘ>(\sG aDP/ X^!]3)ӧh $9f0$XNǘƽ+(1ZPʽy=P/ȍl~ۄ|9oc:qƲrU#ܕ eG%PvscE.)A4}g(NťANǔڢn9lq0L=mAf;]LP>]3?zŴW+77pjg3P@"z~}' O@4h>*>A2Ss p㨏{t/r4<ȀUܕ )֫ǔ:Jٕ1c CrL+z{-DcckQSwVvYtbJ Q0p3ZƉk?*Fz:6811m/j/@: SH@[{X@aL/?ŭbtŮgyy[b&1>-%Y-1L{,/*x[68ͱƔԌ tZ)t9;.g,Re,g[*?;@Fe20b1*1P3 E!I@E^,B'X{8 tBTHB:IZ!h/! P!Cj}C: Ipy-B[ E!_$r@G.' B.h3L6s%Eԗ[^G Ͳ +kV)(eX٠x$1yy1a?3픓#pBKd mn$..]4[\:nPsZPQaQ4*;,;*;!;-6Țe}-d2<_^%$k B"h ;ijÐe y!o` A\owBx!y ߆< gehƉ 8AWcc@1F1y} } xo27B_ y70 yț1oB@~/w!q(*Hn䮱ܢ-䮘!H4VEk...\h-qRݱbQ^nuh$@~/!bG!?>A.'r.xv'uSXM Ѡ0C.kePE)k', eX~)aWw?GjY24?b.Ca 3dh#tv<'==<RvN8iEО ˂~A(h@ ],/}D*:Kx&|YLO/CZN˩tsJVwEZ Gb((RbDBD":WAKM,V"-(kc9^(>u8G#(>/4b?PPIquUb4PR𣱜,(d@X0XG:nPFYl;zt }|(zcPU XI:t-ދAqa:r{Mr#M(uFlb%s$Z\H-Y±@-r"bf, xbY?H.M42DXudC먃AGQ)UeP,>#~ըͨB~|y8$Gx\cfAqq}ֺ&׻zNI׫9v^ ƳrէaюVמ6O0,z4k`}_"ם9.8Ềmu]5 0T5te}˵..dqu\ꄍ1\ͥo̵aaJ1b\:hP0 K[.OUB(T B*IO/pSeg2 % ."XAMD 剋3 V;xapZ*D.cUQwX9Jnhq#:LDns~GUJChnWdɼ6pc .9w,\21ZDqa4QAM$iѸ $uvYh$ jTIѠ}44kVVHK^F!j#q7TĐ~ .taZs J0S-^^z;Kc=RHm$ p?9쑞auHћF:-g$W2ֶNZD#Hm[+읽+Wڽhe{W#uޖƱ`Skͼ+&N6+ibV?]89xaʽ 4fX nc*r[v (RʫΫ]`ҴKG)ezq?u] |<ym;ubA֚B?5+YjďѸ;8q@kY],? Ct ӹÕG+OTr֟G8;w"+KR@j@g808LC$+ٸ8 l:x^!$Mќ}?/sp JJ.y#B&}pOj>| 3 `dn I9;|.,E#Ar9\L=l;r?^7ר$ Mոإj돿 ki:3q U:s BܔR:cFiI˼iɌ")U1%eg`֥]ݹE.3(r9[n9N)(½dTna \]]mb$ʯ?˸Kdt aP=R%70#Sp`cI\uS@uEU6i0p̈Tkg1"AdA$_ډ(mJ%)-r$|l\7*pŌL(dZeS}(/A@͚]F ><ݢpDk6O5լ [<C'Iz=jF# 2=!-`(l!-Q *`hn:^Gd^FQh$29Ld6r29,,' t吥XZq2يVd51Lԏq\G@72)-)A5bNFf-fsqQٌ2n3KZ0;,>:4򳂚63`S3EyhMxOgT(X{'>h@9LueRHՂ{q)Rx{CK[p?2Wd3!a^ ]`}yA߫ߣx0 USEd%.Ó`MMD*cSg3^M"C G6ϭwMȸtX(7H;?⪺\/kBIf3{`Gipƍ'G#*JaϼLihRi18İQAE-QstRIy)c|CMit=bmCx%މU6gL4DUUg(fm"lAfC 1&ԬN+`0=$V:xV U $1!5BTWAMnw)20^1#a7𰬘k8{ku ߌwv}yA$#d~u]͏ߺ`|1PGN>БK;Sn7?f||(EVFRxV"DpAixM^HȎh@X'kQ*\H KUHE63xI6u [ytNC-w~gN5g& |TVUOI1tمK+tnCS!'Ssq誛[}'W\6|EgN &zݡe} .4տʪ VG`"1K*S9a1xoa1$0dR*gȫoH <>^yG3Cl8ye;e:r'Ֆ%:3?K&0SB"1tT)4AdFSyZqފ=@^;R\ȭ M@NkPXn6|FY3̔j0Vԛq{7Y=z^WƷ_Qyy5YδGv+S '6mNJOMK|ĩ]-RR?"D=6cJl>kzn2Y6٬ǎ0N4IV$=cFx$L%u--uj綴Ғ{U!M P+baQem^mGm ǵO;cZ3y^Jv,nӢVb%Q8fi*1zEnM^3%^7Su:=aj ^b :"ޓ֊I>9P\JЛyq0T>Q -;Q ~^?q 즂N}D܎%'M ( NJ5BVğa1o^ n9hlG. cX239[w҂uU?穜s,2գB^]ŖSs߈AWvN9P*+·iƈcH59O5#?Eڲ̚'& m0@kJo>Y|f m8_1ijTa㦂?7P4ސv5BfCN"@`5XwŮ%ߪq8jȎ{6뿋f4l.r$/|٭G}ޙ=\_O[PSncxhժ '_Írj/猿ݑ]o?sǟëWfSd#$_!^>eؔD(.(+Y7-XjQLWsMnWݩ(J&֙ ţTũT8僒(Nj0/h^S8z<:&u܂32k79j2s p\TrT&%~_,檖;T#TM;%U/J^T} @uVzV1w&ǿ47wde:zVP!+ ȗ)OB.-Y ZΥ#JѿLOwRMY$ giڌT3D|(˗ALӘ>6 *3Vb$C R RRV5} ؞(2&30>NR` Uj`Myl}&71K`ٺ ޘeĥqE$7)% ǯ~C/ ;hG8.KR NqNjixB®wQVJֹު*\ TU5MpNYr܇ݤvqoqG"=Nߌ@ hFa/Dg'7Lz50w&ENwNݸ?f4iCoԄ4=tN۷!NkE 4ͧYD8AcŭCbV蕘gZFW5x7d!np`]aL7 wOT_ķP42ģ>IzAU(WS( RJחϽEv}nDs$jOJ]Ə'.Bp8HS1Eho зyEu(*ХTdMZOq p|+T{Mˑud3%35ˮJfd RACv#P,L3.|-ۭCK0yX%7Z-2LRbXf֑vtf6ܥ?`=|qZD+ET4mL ېs U.#1B@J?  ĮSh(89~O٭v"k>ÇM ,2 k8Ee!@E|2cH:8VCj i ć1CH3 )iCJՆd8Bj d-d p#ﵨKy8#,߾m|7yeɦ֭lm[F2!~o/`-;* cMCe%p=oXA$kB?e=k9+#Q!=Xp<^-^GЈii#7~G>neWix i4k*cfM׳B<sDڭȼ|C1A<.Xi N%#ߴœ[`o/d!KuB%8#Ζ? :C\J8@ns͔ H , b^JNuIRJM{~;xS6ר:=k}]ݦ _տ5ShIXz䓥\~fn4RҨ2 S45=#T/Uʥ0caP΂S9:,NN8rKx>PV*ǑA%R.5lYEMR]j? A*Ek,Bf,8aS4d8 zu!pM.:Cw|>`pCV2OBQH e|ŴDS_4  !$=Xi $$ZbC6?4C4~s۵Pgo;q9;{^|%\qE}f  p-EoMRSߏ?Cx!]M?ܿ 6Eyp NZ ]iIkȍHdI :6:6znx{4_+߭>Kq}j@ poCty^O r܎-34xzy~_1xeS_L&W@xa9$e#a&CWyM=b{TABz4F;D#'*}j~*+@ITggrSsq9/g[8G"9 Z (44k2}#X|9Cr%xI/2r+ܰ#{F|E|acKn_?};Z+]FudO{.qByᐵnNJ< +-<}6{@F۳ 䥝 +#5WN/XoRo]#SWկ`Ѝ׏pxSgcJk(|[ i˸hrde/7|ڷ\9t-\+?O2^2S( tJp@ ;,yK:LxozWKfʮn̻:-Ƞ:Fn{"|h⶟#ٗ-3 &&>U,?cSY齷c(M[lYǭ/>}-Y<ׂ|hZRx=qbΩxK_PH: emU^g=bj|anJ;-+m6946nW N,FAȂ&M蝼PS, K%H=~̪VA{E+oG "/;+5;;KԼyVKjQ UM&geREVI,[V }vNv5pQ .Z+-;VgI U' %<}[M֎o`ǹ[i' mº.RX^EM͖14`smW"! ad~ _XiP rn A-0\m黗~4py Yq 8OK))$,/Ifƣsjgɢ 3EUֺt5ﯿ3rr>-ϭ;wd#se>t!d8-J6YF&&uebu/qyT*ȂI!%7&neaZpޏ*{1ͼc)Ku) ,KWZ:KXTܕwOU6T+,wʟ'*U sC,n&2%,\T fr}'*$ų닯*v?.~ſ+>U+ųRnED1,"&vŽ/+~PEK5*8 摢])?Xفe]ckc}*}kXǗX 8/>ו[+ɭͮ\>B*fJAJNqTWn$JR 菨Y YU vP_FʊaWzZJ aiY*f\*^9@3hL\a~1ȇ~g+‰3'y1`z UToLD%ݧ:55_,OxNہۧtC:tseOӦcYbE3= z;%?`QM¾4D"2֍RK8:Ǟ?j=[TZ#h}m*L-hǮ%η֕e;V+UXxusv>낚EKg}&{{A$KCA*%ҹ4\*e~#uiy+3=#R2\qvpyeKep7+Õb EpT=nNU)\JIM Rugk ʡRPYfd<< Gx$Sr$)8p I0\YJ72Sfc%LJAVu) ҧHZNV&kNgÙG394VV^B.ɴ-F>-EP Tod׽pf~fC]*S5U: P !NGN: +P7{_ _m-u+Κٌƀ#kQ>eV?fȬ.xiMⷭ/gdh.ny2;D-[5gUj:NU$UZnJYՙ.6yV3S%|ߡ jPwtr|  I$F !~iGƔTE!ؘlritFLT>5Hd t/#A\Bsz(\9tt!/GMl>GGYHN"TJP)LLh)G_^P[+ ]J;_mit:qA/Hi0!"BB mT=--?Kҗ/\%([> N&Ή) /%A.&`I@'qF iM9F_& K|> endobj 197 0 obj <> stream x]1n0 EwB70؎\%C#/KV;qr_9un8I擩o>}$ȴI zSo5a|U#b7Ml$vLhhb(8zVU@lkvqv@ < x((NQݞUDpz*"K~`pV-_Z %l]fY?ҒJ/ұ| endstream endobj 198 0 obj <> endobj 199 0 obj <> endobj 200 0 obj <>>> stream x]Ys$q~ǯh41C"Ta.] K ]_:.jc#*j|719=)7?\|w&[3]_w kh>Njg ט|z@;8BOs}}Q 3Sv\^}p1OA mMlS;vR:SmK-0v!cNֆ6YNL!4R~t@aMLgXtױ.۶+gN6v<>ݓ%&w ]*:9+Wp#8+޻*z}u~Ƽw/WބݟT.Dh2drne;ˀnx9`p Q.ZƕmAzȶNT2Ͽ]ZkJ8IR `v߱Ol{wH bƼ{Gz+Zɔ=0 d.➞1*shyer*;vl\cAO| U\ Ԅ;$T e_yh>?]m=pmV IaE[q~#Mk0<`H=`.xe5M!ɧlzaan?_p2g\tͰmNGO<7p uBMzńF.Zp~2d7|u S*۩ߓeBރK !oрV- yn\ˡ}bt/WӋx9 džNeQQ/7Ӌci8:i@obfaLzi]>*y3FD}@:g 8  f0@ԳKBՒܽ$:M 8a89 N*ɕ4RlfI|ɿ$qmoz,#?]://Ё+(;ZnܱD;^{*kqv1ڏEa;֤KOt mNȇ{+QA%Q6Y 舅^<_ F6yA"8FuqrP yJu=F-.eP98 ab´ g:0*m⛾m3N/Z6heu$hѷ9 Q3xmv1⣼(O}ra Ʃ+8. ZͰkV}gG攙@\kh|(m5-] }4w#bK LשO L{bc{}FB~!#\Q>tqpfX!La^ae $aY=^3沊wO-.AtJY  +BVj ِT?']5x Kzvb@48.ep8~'"Y#(2o!"S}}@8BݣHeeb2 0U@캜ú^OtGua3l,(b-"aZX SAl.i龁"qߤl) {<.~2h9M`\}9О*lݏaMb!>88ao6Ɖ"{S˴$֦ښ͢ɑwp3z8LwhD|fg @RaF*mq]B5iBB5s A#yH> eٽu`= SD&9v%L{ T;g/ ;!mc5Cqg / }o|$- Ȉ >@@$v cA+!j9(Xlpg0*b8W3F!/\͌,4?Ǒb~ X E/4;̹؄Bbj 3BɜRDXᴅkT1^ꨙWrX:z3%1 3>++W66ק0PBB9 4LiXf8~<.g83pw0Y%%d6(%~T5Yr},K?z^"Y Һ bo*DՀwTUHL]u$@4C뜷k g3nXLVZKI*@y] Y!ō<`9#T!IRI2 rkTT2;PZ UIkYoЁ'R $ x"\'Msy>nqRoǥlNh^y*>|.G0KKe '.FTQt  Z ( cVNtGua3- n*ݻR=ϺJ2 -ji.(LYs1ڜ}Լzc5CqgIć%> 4.gM2ֹz&A^_`h1Ħfz&` u'$wh$9.&r,uP6ܙq@ :pBd70u(a SxS)оKRd7|b8L:_Yփfa./U_-^#Xϴ>YZh5Y7~aJ{ BLZn#IʇwwIoW_ ǧ|2-W }ː{ yvXqkA&$?wtw_,S s|5xYn}5RsKr<IP].mOg⠅t8q&tbdžpx2hkMvu}qkw،z^n5p-9.m‘DM7 5JF;)zl` sQa)G:׃th2Qn553]_%9\^Jf;֝dpRb[RV1uLX~+Uc)d92TC]Xo_981A*7JF@g㊴-/:qT*VwSúe}oe2RFaqTq/I `mP׳1rX:G*TgHc8vj|KsvdO0?֒v`X% irC3'q!x |½&tP}'6&|uO!CQM^mo9[QǷ3(xZIq8ιzj3|cΙsF9Dg< Ϲzj3ǝ bSs%%UIEɩi>r%@mS4V\'ò;t0)4@k=TI>HӼ-G i2o$ F͚X'kau}IbYT7yE5O/Jc)~(%68ױ$!R8b Qx<\fH~{1d\[];QWCz[]4T{BNA/cX17輍GqNȃ?{faIUYb-P 71>Hqץ֓ϝC Vym-kILLhjb,k/6RKޫZ5h+gϔOnaÈFpqXQZ>9AP@">82u/9Tg!ZyZ;[Vy7GQZmsdyo䕗0m, ֺBլ::msS륇œ{ab+0d״yP&Aqu8Ƈcn|άdVs36`¼ 7kLw7X֎]j4ޘ|jBCqx yG)E1NKhT֮$,Hˋ*j`>|+(.ꟓ(of-~kg+gނVwʕ'~E^a.d6MڨXоXiU{]A儱R?= Ɗ1Xj6By9lƝ~i$IID_2Kۏ.Pй/oR.9BRur!7wGUPk"MzA >w/H·!.$/ޔD,_R~arLtGua3,_Q3nT ydb2^ C+7~V2?ag["h|6.%iеi*,xzA>g9Ȗ0peȩa}L \5 :2Zi}a=[,ZV;,jdd(C0ȋ?i@f~D\2 D͇R0~=@*g;sb$D>|]" ,k7ٻыՇ> ƠBXè4:OQRBȌЧnM~lXU"EiXz@'Yy D>+Lř} ֜,怜5C~[x1YaqkSK>M#}>y*>bTǰ4/W,p^}z1W}&-.t>Zq)kwVb I\(3epl:] @A|Ο`R2E{KVZ!Ds 9lƝDTP?2L{fwA[V𰾗<sIPlih*9c- %ү1Ƈwy{.6˫nٍQY;w *i`~Y9W$Z.f V6( YgeQx|Jv<ɇ4NП!(e;ޘѼ]FMXK{_ Izf6k:0ѹ9ރ %̙?4O0fW?Rpz4JV=Xv$ѯ"ȇNm~{HylA<P:ž|t3fU῁AC_{k[\:A}hڭǝ#5mCbJWͻ!ݩfoI= jE=cjS,m!-N!%'Ÿ 3)ͨp,uSΤ>wwN]0Pr]4pu |.zsC)sUn(O/·a)_K.e[9w$M#:Q<4Ǫ? endstream endobj 201 0 obj <> stream xS(T0T0BCs#s3K= K\B=K85532W57730)+*r endstream endobj 202 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 205 0 obj <> stream 5 scnrRGB XYZ acsp,desc`wtptcprt( A2B083descadhocXYZ ,textnonemft2 $o/)eM <{S]\$ / "<{^KO[a`AO ge TK\u$ / ~<gKu[z*,KN;[tK ~J% 90 HN<1KLz [TpH,_) mT1 %] 0a = K m\zU!eJh$ m! u]e  } t% c0 x=L"\# JG Y y s  j \ )i&X1Bm>H+Ls ].  [  { O 6X 3xM8'd2i?$Mf^ zj1^m. j#G>(tT3x @3!N!#<_$$?%'%H z% Kw&;&L'5 [,()a(4*Az"+@O& ,``/}0000"0X #k0h11 =2E!!3+9#S46>%5B(6QQ~,7a <8 <!< b!=! "J=p#G=u$>e&?#'?,*1@7,AD/CS;2D~c(uKQ 2(K` (K [)dK*L+Lpo,`L-M%/No.2O^94PtF7}QU4:Se1K[ l1o[ 1[2:\'2\w3\57]k6^'8^1':_<,=i`H@Rb!WnCcgm7Gg-[PW ?X`V$ E/ Z<sK[e<EPwht XH=x) $ ^/  <HK[}cOrxA>  % (q0 <KP %[X^HK 5j5 K%a 0d =! @K> \$ VN A q ` 6 b  C %x 0 =L%6P\    v :6  7 |*_ -&"1>KLD]2  ^ h  AR  ;v. V'h2l?'9MI^/Snbf ZK(w3|N @76"N!#t_=%a%)%I+,% % N&:>)&'m ^(8))(4 [*y$>&?F#(i@,*A7-+BD0CRS>3]Dc(K 5)K )QK ^)K*L=+Lr,M1.^M%0>N.2tO95PF7QU7;2SKe1[ o1\ !2'\)2\_3b\4_]5]74^M'9_1+;I` S}UL]9 P `f M Y  pC[;o'op^2ts?/M.^&95uUi FRyqD( 533!I@>"N"d#_$"% F%%2% &C V&F '8' e~())4!A*A$*+P 'r-Q`j070;01 .1T12H 2!"p3+D$46H'25C*6Q-c8aa!=hC"=w"a= m"= #>$>%?'n?#)N@,+Aw8.BD0CSE4BE*c)K <)L *6L, f*Lb+qL,nMy-M/CNP%1$O.3YP 95Q F8R\U?<Se2\o v2\~ )3 \3\4G]#5D]6^ 8^'9_12<.`}<6>aHAbWxDd1gsF@'d~ SRt 3$ h/<K& 4[y7&/[5UY%|F k"x D$ 3/UH<?K0 [b%pS G } ]% 0"< KcQ `[Y}-kMG_ = DH p <%u +0xx @=4` |K \Q 8u  a? - } t < q  % 0p=X'L9\   i " q 0  gsv@W&1>_LJ]E c &r FR|f   7POj5'{%29?;kuM^! QuC A  _?, (+ 3"@K #KN#$_1&U&e&?& Q' bN'uR'#( r)t) 8*c4"+xA%,P(.`w1f1uG11 ;B2?2 3$"3!#4+P&*5s6U(6C+7Q.9'a#w>.P#>= #>] y$f> %!>&?N'b?(@#*AN- -B=8/CRD2DSR5Ec+LL I+pL +L r,;M(,Mx-M/7Nm0O%2O/4P: 7kQF:TS"UK=Te4"]5 4F]D 54]d5]*5]6^U8 ^ 9_';~`T1>=aD &1 =JLK\ 5 Y  $F  C2 4R&1T>q=?L]W:I ixI FZa/X'0H2\?MM!^3C? u~ .{/qP c>0!/(e"3#3@]"$nN&$%_C'y''Q'Q' (- t(d)"]) >*)"t+4%,A'-P)+2/:`22YB22 M ~3=!{3"426$O4"&05+b(e66g*7C#-8Q1$:Kb%?Rb%?a &!? &? '\@(Y@r)@+-A#-Bq-/CC`8"1DuD4ESd8Gc-M [-M -N .vNL/1N0.O1sO3P:%4Q/7Q:9S F$-04 B< ~KCe [uZ  d8   `| %%0 <} 1K[ [ @K c[@ z .3  k + i%I Y0L^ n= G K [    0 A  0 >   ts @ %) 0 =_(K\E uc   ~  9 * 6 { &!1"=Ld8\9k\z8' [J%k&x1W>@M!,]p)Lx 7I&mzG'32?f!"M$^LG# O G 7!CS!W4"( j#3"$@u%%N)''\_\)@ )T)1i)g ) *"}*!b+U #B,!)%w-5(.%A*/`PA.50`!4!4"r"F4B"4x e#4 $~52%5O'S6e")371+{+h8 6-95C<0:pQ4';b!(@z(@ -)$A )AA *_A+\A,B .1C/#0C-62GD8;4ED7G:S};Hc0Op t0O &0O 1zO25P&32P4wQ6Q%7R//:S:4b6( @c1jBct   %6 09q <Y )K{[ D @S_ s S c  <  y b%h Q0l; f=($Kl\t   -b ( w P ?` l ` %0={"L \emn}5[(" X&>|1B=sL"0\c.:rW {j r&q14>"M/%f%] 3n!)q W&Fjeg' 2"?% N (!^l!!#!C!^"G f["W#< 0#v"$($F%3&&@)'O-)T_{*`+  1+* +` !m+ "j,#,%>-M '.*)T/5 +0A.1ZPa22`%6 %6: &6p '^6,([7+)7n+/8^"<-9)+/E:61;-C[4Jc4hQj 4Qy F4Q 5WQ96R7R8SS#9S%;T/O=Uw:T@VGCpWUFY+e==a =aa =b >+bAt>b?b A)c \Bd.(+Dd1FeR<@V+&@V/vBW:zEKXG7H3Z6UK{[fBdJ B&dY BqdyBdCdBDej1Ee G}f(RI^gh1KhX T uy v E  _Kx,+C% `40"H=K%K)\1   ,CR O@>G_%!+0#=~&L)`\dY- `M =lp M<&"+1%@='|LZ+@\ X-~} %qg d5"F&${1'>S)&L-9]:6"*<q 9!f#$'?'$2D)>,M/ ] `! %!kE!{" # 7$ &x!j(X"5(*#%3 -$9?0%uNa3L&^%2&o%V&"%'& 'R &' '( )(*)?,* )+.*401Q,@4:-JOp7._*?0V*c0eh*0+.0 [+1 ,1u.+1E/2!13t*q34c5v6^5xB29G6P<8a00;e40T;t0; ^1 ; 1<2<q4=5="7>+9?r6 7~H^ 7H 8H=9IN,:IkKM-@L<8C.MQElFNSI_OdR>V ?V ?SV ?W)@Wx7AW&BXmxDaY&FFAY/HvZ:K[GeM]!UQ5^fKGg5 #GgE H)gdLHgIdgpJahU`Kh M6i(OjT1QLkC#c$%'0)=,L/V\hS 9w<cBr -u"@#`%+%'0*r/=-[kL:0\B  6!VA "S#6%''&L)=1O+> .L1N\!7!F"f8"#N \$KWK%'l)U&+5E1-Y>0M3]q$M,$q;m$[%<a% &K(9J)~+J'v- :2{0k!O?63U"M6#^'"'"I(%"("=)`#: *]#+$/&-2$/%(R1H&3W3'@6(N:*G^+*[,*jY,[*,* L-+ .+{/,61h, 3I-y)b5~.i4f8 /}A":0O>;2`03131i314) 24y934)45m|6v6!J8V6*:75=8Bi@:"PCJ;aN6>k7>7Z? 7?9 8?9?:@~GA,'@|B7,C CCEE2RnI;Fb=K '=K >8K P>L ?sLRt@pLcAMFCFM$E&N-G[O8IPELQT)PS`dEZ2 EZB FZa IFZGIZnHF[R]I[K\&}L]P/O0^@:Q_UGT`V"WafNtj ZNj NjOck PkYQkRalM Sl(Um2Xn=ZoI]|qX\`rgh$.%%_W%>& z'j(*l,,L%.01=37L/7@\%QF%t%o&?&A ')<5*,&.11p=4XLG7N\&y&?+&4' j' (%*+W-w#&5/182:'=5#cLz8j\'r''(au)9 * +^-_,,.&113>K6zL9F]1)k/O)>)^x*Y+ ,N-V.0M' 2<25 R>8r!MP;"], $,8 3, S#- - G.!D6/!1"wW3q#B'5$2283%G?v;&M>c'^\/}&}/&/&0k&|1('2 #2%'3i('f4(36)(9*3;+@R>,NA.?_83.S3.b4".4. 5]/ 26Z/s#7/u9/0 B;1r)=D2a4?3vAaB4OF6`G87,87907U98! :k8px;h8i<9e><:!@:*BS;5DQ-K?~a>B>B]?!B ?C1 Q@\CAZCBDu:D.E# FE,gHDF7kJGD'MI*RQJcEO fEO FO FO G;PJH8PI|Q?K Q$LR."O"S9&QTETUThWWWdMf^* _M^9 M^Y NT^O^P _JQR_R`~&TaI0Vb9; YcMG\ndVa_efV =6pL@~\./t/h/g0@ 124Q4u6V&}81;>=>LAI!N]#0P 0t0:A1@p1 e2*T4=5]t7)&9 1?X"iMB#]y2J2mI238 =3 k 4 65!_&7" 9"'S;#2W>g$?AQ&MD'x]4$C5$5b$l5%6%_ 7%8&T:n&(3A)?C+NDGB,l^8\+8+8+3H9J+i:+ k;,#\;3 {?83k@|4B5- C5)F#64H7AK98P/N:`A!H?`+0K1@Q65MAeBPBQuSDaGGSGGbHG HG I;H@J8Hr0K|HM I#QNJq,Q#K`7SLuDpVMRYOcVNoT NT+ aNTK O]TUPTQU<R[U>SVo% UW:.jXX*9oZY>F+]wZzT`[eVEb Vib ZVb W3cNWcfXcZ0dZ7[e']e0c_f;hbdgH$eMiVhjsg _s# _>s2_sR `s`s/atCct!rduv)?fwvA2hw1=k9xEJ^n"yXqjziD7z7z8>8n9y. :v;#W=K$?+&Aa 1C!>CF"LJ$<])8/-8S<8\ 99 -:M<o==? L&A!<1DN"P>[G7#LJ$]B899i<9 :Z `;O< P>u p@V!&B"1E#>H%MKI&h]u:Q!&j:u!5:!U;@!;! <"E><"?#xA$D'%C%32*Fp&H>IY'MkL(]%%@5&yxA'#EC''E(2Hh)?dKQ+.MN,^J>)?)G?b)?**:@*y A*B+n$Do,FP,(PH-3UK.@M0#NQC1^B]0pB0.#B0NCK0 D0 E1?FH1G2rI3=),K4,41N{5A@Qe6}OqT7_F7F82G8#G8Z &H<8 I99J}9L:G M;*RPX?`KA^KAmxLALA lMJBNGB}OCUQC"#RD|+U2Ek6WFCBZGQ]Ib'QLmEQL|RL nRL S> endobj 208 0 obj <> endobj 209 0 obj <> endobj 210 0 obj <> stream x| |S9޼I&i&iJOH BYзM[Q:s'8Eqt:ݦ?˩{6tۘ{({MKQ~=9*!=CjlX(FF6tl 6"=سOf 'RW|uzo|. ^0!BosV֑|p9 5| a>$v B 2^ Ofh.O)V!' ^dG(kH!72b \?ǥo$B^tڏ\^BSh%zUFt/Z@GQ2ځxAb'"h)`zAQ.:rQ=6rvt'_ʏǷE)h5ڡxKsèDZOc3}O)jUh Cm8)_jB&>Nx ԆF5D_!n=E7\}:N"\D,Բ<qt<_*3UԸ9xfp?zָVGŗnvGCW@||o -DWM(k՗?GD=_Qܠh {}'piMMإx ^{^|o㷉/W(0Sr>Ծ{^f aGo"R Wm^c3f8Q|@ʖFׁ iC3\2'p暸^{ܿQ0b"8 0^hA-i /nB7qE{tz}@8[An_߃~_ſq/*RCr%gț=.vqc{;ɽ#b-WܩxJ}UjjO_ʿrW3h&}s3ͼ8ߋ 0 X>2x~_I<~~p3&XoZ^Wo5~o_oƽۅ-V|7 ={;',> wp ^C$;!HY  mqrɥp^ sC܃ܿq/q?!©S*U+K)PUXT56nRDW{Z}} (ÊTzr *v@1%i/r?Rt \%8 朊 ݅05H~ϛqy_ϒWCtŏy3l, ;y%MTxUr'jK>ӊދ8 (z >|aM!4$%D«#z KB-GM̸\ g2J݀9ٙAiu`M~b+R rW֢ j%G¯ݎi;P]3|Ms 5>X6f#Lni=΍YD8>[y~--0Gx/֯a-r[Ks  ttO qʚpF(HdNР}||* (ธ=l$1Ϡ BC@pKErQ9)Y~fi-S-elenxD:{AHK뭈%ׯ_YoOж'}\[r<{R+< zk75 ./Uc)5͜sl*kf::U2TAY ƄrޒrM/Q<,XEW<_nlRߴi|<銶`Ǘzĥf(xOq\`],'ǖ -9w\}Lw|J#M%-DzZK+HVL5o?%!4ZyV;&1bu::&\':?j)jSB 5S6 裑l\w Q?q6A6@|!,6A%b1D3 dN70?Y5+,O*\5&&` ]HI 'EuПgu 8]c^w AF&He,N m GtƊDFBs}(t֠o&$ri$KX9AeϙsFnt0pbV[ #\ cz6j-7 ) v &hDO01)vFpBcg"vN}Åb"33u=ZDl<뭆f;q]00ý71S8U7;)4gKýf Od>GZ-F,sy~ys7NVC R PKUjAN9 fcAZۄpZRdS;[/Sqa9B<-4<;Ѹ/!?tnvul,}ﭬ Փ~F.&](:([B6/xPM#9/(3˫]LrQ;w@]?_7ϤW$/JylOYu&d> f2֛HYaRT!^Y9%aX?Aa6?f)^|R)uU<Pv?ṘfA"u2Jf.:Γ[y#-6qH3oaܜorqgʶoQ;MmV &cVJ?)CjGc9G)L.6n:X: D?A3E%LmOvd-:6;ߧ(SK#dz +l/S+t$<|P z>zV|Bv; 65o=O Bk&Q [#YDaf+?AZB} kKqZ)ۍ GYn`GvfaEa1ZO㸑6K2Y|f'}ŬV0$2zw3(Rm"Y+x?JhDxee!'Axɾ_ˉ#~),h \]Y/YOL3%dm[RUm,R6RΏ"Z3wI,ב9e웳Oß,ssȬEe{lds a٨E˳`Ngyo$0iBzg-a4G-ո+}r?)]2)Z'=I*: cdZo~lhw_'- \e me"nHĨW *)i6b\aC;|^ٙ7 2츢gg".a=d o0K@ h-kls3NUfss7wtOM]@dĚHt0 EX 7t2q] +`\Q(,/VkzzGŵ]]m]M}[5]ŵCbS4ٵ5"Fbbox+) #u:1<"fMņnB7LXG+6tE%`P] GGXz7[ݴi5M+ֈ KU+j֬[]IOjGfKa@q0슎젻- `}F;Q:#st+}ovum-07Kl ȑ+v]}0YTvuZ.e;<(<:SEk?Gm~@{xkdh~kxm`Hvuuu|z"Pq`o wvQi Q&u:h |}tC=2<" \7ЂUFn\2w?jp%e ]NJ˛ F2@bެpod~[.OoNvfh#᎑< 'is:@a6wNG*hB1wa<e-`4 )n]}=V~Q\1ln6P-; JSaqkeF lZONyv~ή@d E۟0`4P(!&ƬEH-ҿr{4* Jy*善:?в,@N*HLFƮ`h~[D@ Gvk;zQ*0H_ǰ &4~~pwDFg'WD7uv#Ge9lfm o:,KE \5,YB;#ippuc0{lHݫP@Mf`pec?mO%B gmeAc Cp<كP|q^t;7W!Ͽfsw]Vx_ (P~zq ?!VC(;9V$.Qi<-w@G/T.f%.\pg^>ыo?B4jOq>^WW,MBr"7mH(&krCN8;fg-X$/g_?A"ܯ(Wu<_|Z<2`KDĽs<+x 5U X ~{;ɝH8l,F)@:$E.H{!#NHH ;< E ģ&P!:䆱wq"3wr_fPC5w@ Jy7ƍ$)T;]t/@w!-\?[PnK hqt'~'Pn'Pn'>7} M&sP% z8$tSΰ[!}=uN!9H-qm{/?i B( ok:ڮr T'sFHBR-$ 8OskV5.nKk5+D!Vk5cNЈF4jn\6N1PU@!-SVƴS3ZEL9<frkcZNЊڠV6jN>P}\4i$h"w-6FZG#x  x2@?3@j P -! &Zs-ch R&C-}| '=:C> EH8VwH mD{;$%k̶It,X LX>aXrCf21Qy38j1+XW( >9S4,4t'ՓuKpTꛖ'U񵱅s0b <55ҪSmwiymwT,>\HzSLYbEi۪U7Ϛ~]s-b 3[c觹՞"hi>o Cuki=erA*iAGn qmbꮫ=v˝^+h'Xy,Xjt#" A026Ad1xic wk>|iA^u0'WRC׵~ s[56Yu"tv^Zbt:=pg4w氧kj>!uNp'\r]5Wgn]1.:Y ]hOҵZt''ZkcjGFnֵ>~[I-c4W, /TQI"*VDpt+a8H#`ЉalpB -#Z}ȷ LU&$zCI* ȦV*^v84x Y}‡*+W_DU CVt]F/d8Gǒ}D~ (4ܤ"JA>SFrn$=1p x$͡dw+RN_` jŭ؜MTsAMw{xk\+wDq| ^yS~a!$e 7)M4I|c'>nM)KRJs@GfۍWl7):әfx+??I19 rZH4NciqT`%ĥ'ߴRR+Q`r/ev#Kt/z iO@RIL#Ui~Q ܦ:P{+ zN0 H~uK,$M{ܳ^$,tz"!P(̴'A2iQMl#NnC E"ؼ6u V,O;( 0QL)S ^mf7nFNef P,,nv5d&ْ cf,ߜRjZS 7'{`I+)._Pnv %+M/ݼP UԖ-/%Ve3'yW#8AUfN9pUX3*Jhfp*U+TO9~sM-W4I~U{ַ-o[ωa1Cv-fɴ4UYj[fc+6B,6MlDZ^? hh4RjL5\{mxNs%`y>1HHʮ>e_O#QD]< ȰKRj]d/yAΒ?59O/^Jۭ/N KCU)j^ ~A󆆠֡ylFt.m݂b/ E[bQÜ R`R)RT|ws8G:g{mo<|Oc1ܿqi:V|KOЩd_ON\X(Q4`:&t! ԅ5uIKn ['QzoI*T5<7u*UYYpխPM⻎ h?~&\ N!ID f긠}T!8y<úI ɾOv'ɻRTNR4?+BRl%TߛctEj雎VMNBY?GvW]W orvv(^/܌\ڜ8IW7c>jP7pl5|r4,WœZҘf1xYUoű[߸α{f#ಥx;}/^~垯\װGNPmNfZQ>P03ڑt =Mm=ܥLMCx_ d:lV1œFļNGN+uzЪ ɤRTj5ǫ:5r9xz-/XQ+j Cj-i5sG9MIV\ˀ  A)ʖ.Ăl􄛩)g;&XB*d$38}fb~NV#0?ȴ<}xIn\@*T/%RZB"xIA}SnŜFwҪxNrk$C3hBt8,ԵˀpGs I2?!5[n:TMr9' |OoqhГ||LZTFm F3QR '@XHCX"8k4@qwL>>l` jA DCI@П_ѫ4qk/eR[Pr1BdNqd GtbGIdFI332sa@ϼP.LO8 ;w(hdA/$94FlHҍv{5S72Z6gD\-fª'̬RJ-L24,V8\-fuױMw'v M{w86<,+0|JU%zz ڂ]*95bvA 4pO_5Eg֯,ƿB.u(wwِ ^5ej]mXO.SB8%/$;&ɱS`Wsy?9rvWzd"?_=qY1AB%4(i4`Evq@'tN,/dZKp@UT=p9TK7]\Y VL*},>w(" 3hTz\e% "VޛF#r9L1K6 Fξ{idג|Got-tϗ׼tqdķ6wqL{jZyFH%T;͵, #"׳vξl@WScIp{ttlJY;w]yf鋭/}kmd:/P0G a WNTME!) ]TP"v"_PjvY(gGpHNMN6]?󦐻wýչ1 o6Ks{LnG'wzSE ,9sknfGwg[K_]*ŭRSOl9D 6"K׫Yb֘M[ئݭoywv[v8ֿMN)eui>^)zb\r[}NPR;FciL &Li)nM<4? f$Iؐ&`/H&[+:e:| X`ye¬&lS jonN^N~ԁ5*_R!{ EH,Zor! '; SP95TM" d=5RcY2(l+˔F5 >Aӎo\=t_vV%zۚs{f _))vգO/L}%ۋregz΄W|Ϳ}yfO pzQn$J5[fsjVrۜvhvc2V|)m<jskcsj.Au]͵gԜLԓ?C0#e2r]v7:"_c!j;м*Jgͽy.JV]S-K$gA0HeI/zde2Y9#Pȃޗՙp[J[* Zn6Ly&+z%/IW˄d$Jfi6I0UJ%NhI'lzMfdl\|҃$íՒzzZ:T# 2AJedJcKt.;I}F!A֡J<B$].c&ٵElT%Vz4rrJwYgF@k#\bI%`T0"^{[wVٜ+_=:GSo{+NFjKMk3A*|U֭C[߱hAZ\f҂9 * CyUXB2[Y݀YwFhX,Zayzxl?D-]WX6ˆum߱|f]d9:tiWVqɳo ѺnSrEY?jdܔ;Jj٬ӹ?<,-GfEAA_323~f]q(坬l,eU'SsNcbvyPX[iGeυQ&. [JLWS1Z\UXd 0 j1 0 jې$*U&3ho? w$;MTjzF͖Ϩ|"!Sȗ#Yy 77;Ϭ rl%k"͛oF+8@C@@BizZqj|–.LWsJdwq>ޫ(hVX8@ .r@w OVP,.h 1Q\l`O'RC`O2cB((`+\.D_0,*zg)+!#{UJsxWdh^ze-̶+Eѝ37ެ#C_ص?Kc_ 8-$%+؀ D!@4ƊIT:S]~2a҃/At[yr- Rr{$!`|Hhl ^ 췂th=BomiއtZ! l R8*99=X dgeϾGSz;|֝z~QLכ|T?Mxٔɱo![28W~!œv0˭ӣzkLI)C%dQģI+5iI0;q[Ҝ>tr68MrQZIK`i0qU&J  N05}" ef~\%8bUzH#jl'-)clmv^m+UقbKMY >8kbJC3בv'*tdAWdsDP)6i,t.q:cgA 7c>0[aH !65ErzFXUK);/\FiY'g~3שp?$3}cx*eIҮR gt!ȏ)2BT *bP` y\\TMŴuף)fzs9+Ŗ4(;ainw7bIt*WҸzFZ/I]WP*f*%oIHJU! D W,IT'efMO$jU:T< zNQzeO|<0C25Ke'fӺrlCIgډv܎Y4UUcU&cbNsdU"rI++TjG{֤[[҈KPi?9lG:OԄtڐ=L5YYM* 5X۬+;VJ=H?),MrK%#Ov/*t@%!rCyyy{KƼ+NH d2OaTRrH(lL *|AUXUf@vCѨo5e.kHz8 pGU/o1$kO@hɬXV(ãHY|!QjIjtE7QiC"2fd Sn"E(-TTk2p eeb1u"̝|!4nmffϸ$HzwUߵ>"*JFӝ;1( F*OPpvט uk߼[ .;,MjTMj]?ppn " A:4ߒNt>u#?U(k5ȗp[k]j=?W5==I!)i]fGp&LL-Zp!^H, H 'SB ALJ)scB(񆴥azCJJQI㙜GLA.޷ny=oEFdz۳y͂R|͉ocٷpفl6cǞƿv_?!`)$ {< Z0&lHLcwFiZ:#'YYoDRbi7(Yxt&HBI&SRWP1oQKtNx_ob ZBЌL,egLѦ(קzyrB[D1c}ʀ^;^eO5:(2WU2>u|ٲU%>i{&&8?8 X@Zٷ^^OZb`AҲ IO|D: Ү VW)6׊I ~_;luJH5gUg82k0L՜iH҉9iciG8gھ4ǼF%Meeͮ!z(XFe%$ucW$gxu7['"Y+|E8~yJ8fc`Ye#j#L$LE)3@BwkVw`>=6\iB#\Xz^+et3/[a ߪ 5~ﵟD{TLHt:-Ռt3 ̊df0A a$U3J HFzӊ5;`BAU̺B??g6EZ-3 4aolmebKT)jjei4bud$wYT8j@ūO]J[M95}Rv bOw ErJNv:d)kJ3/1 Rql6k)lb،PrVjVE8喲uRҦiN6Ͳt4JFSW(um)?!o.p)vUzvG{ *t*P=Q,,%4 &ҤLdOۃ)OhHTĒK~O.&ϨqFEhIiG/b*j'ifj)dj3275f p < /Rh4Ǝ)GT?PCo=gf>g;;ޕvW;K$KVIZ2ac54R"o{r0d(AjM|ۄۤ!uih4 HwfWȴi}_9s̙33w~|?goz327˽ʱqIy'g@ؼ.; E!;쀑XȻtln1o+ӽ "uh4T|""'9 LFxY 3=N;jv:DTfr7kn u;Iptݬg@#΄~yG~dGR R]]uLt:j|c 4cEtS#|b?OO+𗍂tK o{o0ϰ;_KvkE@9kbR)P(D\ s 樥ᦨM,'\Rrf 8tmEaq~YX֙aI’ ؖO琓^ȥZ$cJ MD+J֓=Bł^zoHqDgmۤm/pp4NZs,Щ9&9FOQiDd(u%΍ť͸]&  Oee-`A3t r:q*{zd;58^s`)Ǣϲ&4h@9L@j%${m!j]9X!ZIp+ןR|)ş#՛ w`΀-ZxCT`"R_ +wI_+93mc=h2Z;򥙶|2ٻ/tGkx? ~-_|ڎGNt c޽AYSteCkdRSf -~ggl≑9Yo.'. e_Ey;cs6ߒ,ѭn&|H5 'ʿqR9~쩱LǚںOO_54'I[M0e@#Uy@h9sG9Rpn&iml_4#1_ AaKN&t=>wyd_GlY e|<[>Yf"ײ P\ٙx'<`+)YK ?zN݉IiK4@:#bBڐv@tcJ `iNwn>-T.?+oh.j`c/0k h/,3b 0J)R9镅ۃ g{K:bZAa'z9-,]rzENߜ. #BLa5` aWqH1g_g82CBj5gj ٜ#SJG{ΚR#MVvqxC4k27dtF0!S0ޥ {"=!< xp֩1dza#s66 -ksswtQy&MS֦EhMp͹eK%0ƔH4u(FπZEuѫnnNG丶sSLs&#ӽX5oU37p::t/Kϟje>=f4YAh657Ud5ZS7L=\k%K\{输{}*cJ9趪o L q?Ddf1ҭ p,RòR"R':HpT՚Zq>(@Ԓ/h\cpIsRL+`պIRHJ*aΚf!: f֥肄^DRUXFkqin8VuJQNKSSS̋JU".qZq4)!7 Rx8W(tw56eyS5| RݓDnv*L\a{B73)Һ̉kujB&0g֡5Wv"Dr^9O'xDJ)x+& SLa0.. ɮ/ xqJܩUaFΤRaf.h{4 \ bWEtM^M]78ѧul~e的WtƂ\ͻoԾ'{d1L):JՑMX2w#%;3+jcVs(IA~)ԒNGd-PZnp-zw|ihm-O l~B&9$0??JpAÓ&l,ڡSC Q??!2ѴV%5Ltl&uuvi`:eb6ZX ;;`oOOD`}5lQd7lf{7|Tj[ݴpځO‰lvj|E]'݅ټ,9SB!P$Pÿׂdf667u M@ H)ڶXxIO56RcM%ҿhE(ꡐ8 !sS jAd-dW<3X \lB7Tq@hkd`*08Emy g&5U} lNmntOmCuΆGmx6e]mg@A'w>>CNB߻?"U6Š#&.2~mYѭ:EȅL4=_69x`rq\Ӻv [ >hNmkjj V[v}P( ynCZ})J 9zywq,iC.EpGC.7m/}Yjo&:f2<6QARm@T;wiЦ :.vnvQ[ͽyFQ@Ԙ Tte~-Y2꒐7(]3h{һl4ܵ,ouQw(-`u>zGs3z D3e4ZxC- "_ҳCCcMq2r#  !w\)LR>%Do< ?3A8TLT\`>֕fmD2U&rhyMe[HAۘإ2]Z=Yٺ{|%ofh޺,@ (񲌧yk+S%]xk:Plxtfа0 ~O/0{)gx&1› \ԳV(ox&5nhM jAmIӮ$RI[<6^"bPSCxC]0" Бj:)*nR܅[+}ۧ~;yjgC<Bڇ׳e}n5#}puC#H9s3=]=޽[) $\wZm5:H%duk"UP2ڰ H>R6 df(%+SE]"%" GIRs,Xkȓ>(B/Ў"Hj,dy fZD.+2($@H,;0-[ Ma4Kҙ0 %UXZrDwM%?xPB;-;A_mz2BzZ"Zd2U!b[Oh0\ \M֦js5c5Z!G5|BIRXc#?uL&Mqc D2Ӯf0JtT' I9䦸Ke&DXf43f2s 2Baɪ [XA@M1Bc}4xp>k!ۧkĻmi z$ Ԑjj nt/#Qе'?޶=رy{=}O雟$JǕ]`%:քg! X<ٌ`Ld5Jwi vl:68Lg/4+?sdV)F #LPX"-SKYrI'7a-]1pu\y)`y~C[Y&?j!*ɤUPd0V tC)#^^hTs7օ>Po76 owݞ;:m׹*;m.ql:JzC+5E;f EH3I1~g&4?dyBfBhc|2 U@ ִZ+SK5S)[2.ɮbq(k8dom)" jKy:Ӧ`j8W:,u Zoʥ$[?_~YX}JTQ~y,:~`gD7~W rLQR >JGtҜBXt3C:k9brF E4eVC2"XhCY ,a( 0t-h 3>U0x#۝nˍ9GAth~G?|ܗ_ ~5Gs(w)V.+TLz<],wxp ԠC3c J(l69B!9J(03gib?K Q%}zW|xq_M{$ rcݚS*&Ӟ@2QCv?!c a){Kлsb{GowoF *wM# @d?$VV;<Odz1up#{uE։{y+N~[ 52$꛳pje,C URQ֬+ zum,D#oš ,"W2xF$ DC\/Fy2󥵈X];tqPs١ :3!"lڵqkYg]۪W({n\mix=o'0 OXNʟN|:iu@~roC/'NW~ʾe(z.rg\Y1*=cA,eNɄjp43F7QmG^j$BP_|׍ܻ?=լSݔs:p&A0?IuJQYY-,Ql!. D]zȕg`R kQuӎT=-izvkkҸ> iUHdQث(7Lgb2cx2\B^Ȝ6qsZ2B뭴abS4$>ɜdOZ`Bsm$NlD<΁ޚ(%?4h8K4k,-i5ΐ҃7׋*OnCL i&ՓzXBl05Sϋ/ޗMn&p9 vr;tpYs} Iw_z ;Ljr?hpUZYiU\}@;)nAVϿOL(WZQYMhXfYmcyC<-8U]Pې~±6Nr|iy^!~j$ +Sj s=1eVgn^LoP$*FjL1R.h#)+j{x"u[X01(&Z~"YC琝 Vߏ3L#ruBzAd>ǃx6boogh}*~(Y ;of}h2`{X ,"&06Ix0yϢ'g2-`E22APc"Na DT:k/@ "|~ފ/2UWJ\)+ r%R3űuYd __-+<1[[۶O• 0&TUjCbUN7=MyH65̋*A0w -]ޤXwz:Dd)wXJ "O/5sQ{z(V*:Jwimļ^19H=bA*byjWqs\J't@ ^ISԮSUJv#hs[[pa0]Ù@c9r.B[ʷ?T~P!lŬZҦL-I5`-ސ9nK+fcR2q,.Rf"z WT2(r3&EDQyI.pDD%)sfbNfL&RSZ,^z+y%LE+R&a<KHFQ|vH@Bm ^ QId@%Fy#)_Ҝi 6L[川牔ELb+}Z4*S~^zIzUbO%K"!N 7c 簀RGϦ)f`}2|Z!rϤ/|\>e& `-3Y\Ș35> >2)rqe  / sZF%8 L5P//1.&ҕ8([VMׯ~o^W_\Ng>Dc0`rS)X\D-k-y!|&PW ѣ'|5+D}4え?F1Nq L ώgaY{mQ/w^{2?+?tQ p,O!=QFQ췽3f3,b.B{Ba7\ЖjP@3g &Q! MTft+)c<:f]RǪ/[_HQ,xŚﲾa{; ņ!4\ݩF^-l#-`U-VF{2>k>)t=.>:NrcBgL =,{;G{ M>$>܍A.R1Uy*3DHX쩷Zhe-{x?H$ZxVy,jg%v"GQ &1 I)Z%oH ׌F"ɚ_UR//ZlHRJY[\sq8FD!.&_4pFxaOcQY'e K@WmBM楟H%Thb,% ,Iw2uNw-}V6[B{ݛ?>>oy$sBL "rlI<7ABxWԝd),gy/iK$x.OrH\v1Q+2ZG@ (epL?YH2boa-G"2v'eFݟǥ|#J@ ]ʼn+oN\fŜNNVqB挧4萬[)(#,26qyNQk_ Wϻ\[ghV?y C]x=G&Vq%!P!0FͫWb+A;osIX1al v} 6l=d0Ͼlؿn{ ~}3!Wްzq&>>/olˢ+C"1UlJ7k F~^X!D~Ol3)ZDI%(j]%Fhm;w3?} ~.re?G＀ s ωE^B>Gum"(Jr( MR<*2j' I5ԉFf-h+چ4hEףB4Fj}F:v/Wa8J WNk $$r)O/1u4O'!@d&QI H6H~6d߼$Ý .Ar_H?_n]|ԏ5$ɘ{ץkLu"66Е_59% $2v;C agN?mE[^89JFB endstream endobj 211 0 obj <> endobj 212 0 obj <> stream x]n0 V&9m:FgN7uY _G< endstream endobj 213 0 obj <> endobj 214 0 obj <> stream x8mtSǕwfdC_2Oy?!6-ے cH$v0رJiR9&-)%ɄT$)8iҦgݜ %9ٸi$4'ntٹ5sܹ<D ڗ* R^fg{0J~4yFGB9ag/ߋy Qd=uwu^LYً ] 2ҹFFҳ7Rz ^aݛq"dp`x$q^yw^D{ؽPZ9XG! @NyJ=~&V ypRx .iR0)p{0  t=x8՜A> = j!z9Ksbx]"z(<1tP g O>f^դzf7)8/H)9DgOʯ *a-t!| ~zO?PP6Waz W""z?70 3zЈij$~* 'C`BV&a1x{i"IϨ6-LMy| m$] a+|.CTZRO|ut9mgo4rcI0Zf\g'A`;fnGc!H3?K|@(Qa>B-1d%a(K%FRB1wkpFv0raUqEGvStŝw"-f6ew}}`O d(WõsC{;gjVCT'U?S]R vuWk4jp~ 8 *d7ѓ8F4%sD pa3 =&Ud55'RxMY;;n~nN0^CGd'I;9Dc|ꠐ3YZ͝"yBPϫY5:A7ym|~.A;9/GB8|ɡp2Q9̡Ȳ߰'H&} j͘q+4'ĝwȓ'|7*Ay{dPG]mM.(_VZRl**W+frf2dfΞ%%&k4Z1J*)%qw(FK2SG\5a57|J4OkPu%łU-$kV8c4[#8!0q`q VeguYp@YljK!G41)] zAh&@A^Ib2En}j2%i]MQI,3BxXO eJs;&kb'$NxViY3+JJt8浸|-h.5.4)(+QV]W*='6{\7c |J>tF!Kt-s1v",dΔt1$!V;-`uuLG(K0#$#'״HiYjXGIݸ#}R\˧QxIU >q8W,TThZäYEcb)&iep$H\ԑ-ugujƿrPPt )՘fҵ3%:S[O{ iخ Q2LɪPfĦTڛ 萊1\Q \RaN`.9)$Wc8C!~%a.Mnp{+lA<0480, {J{Jed}lqK(ޑa;v/k\bmo|o]cO/SxJyxk' x2%Mmoă֍~_%wəʦ=@ޖia->j}=UD8Ӄ>DFu|X`n<v߆͸+b+=h/#TH4HݑvymeJK&rrtOdbk`)/Hɩ+Ptsma9+]W2H+zG s 6 |cA 0S5 yٕfU䌹=-~lMFI$hF4TA٤ȻdzؤIغ] -|TbRl`lʀцg4Xkdn- lQ> >ۼµ#?ȖhSP9IN44oSvhbuIfH;!`>;]]^w{"EhmQ`fZ&͍Vmq6(aNAKH6qbq\8Xl3E,ZMhɉJ?A㵸U,)M?XٷZcƎ8 OC< xWKĪJK&"JRq1QƎZcsHd L[L*J kE)yHɩ09#W)GM5U8ZaxC SS(ԦRk_kՇꠡ.Tdcr6pC`7*76y3P30  29a2E%(k O69KQێF?2M4W5% q5ZØ~,k,硬feNȨHnEB|ysieAQaxIu*4G/BTTJuYNiz^-ޖ[6#-L:8vȓOlz<2Tғ2]UZ5K|o|_ჯp^c:00??ho߼h0hU!  iB tC\v2uz7vJk\)R!UYUGYNb,)Hx睷j^NFVlE1ˆn1ul56^uIx Ҷ>esAz2ɾWGtArx޾WMϓZXZ`>OCC,4WRL1 =U XY^1ULJ*۷uv_z+t:M͢ K8p!v$?>Y V9|Ji9%>EYVPZǶo9zDh ؍)e,`nj7cT`>OS};! n]UMv41~x J?_.r^&y߿^ endstream endobj 215 0 obj <> endobj 216 0 obj <> endobj 217 0 obj <> stream x{ xSǵW ^fڲb[%XƖ& ҵ-%Ey!Yp6ifk__HmH doڴi_KBKH_B҅I߀{%ː~˽̙3gΜuf@:׶Z?u۱ (KW_X{x@+K66@JwK_\zdӿpFD&b7]]WHw9~q俱׹=+W"R9{F?~v5(;x (rW`AS^܎RYU {G];Ʊe8.( I*V7lN7aHga&qB\==k@ B,u41X7] :~bo`%%EحYn%Yd"WeQ1 AVhn8 \SͰ.Jmp YHRj"Z; s`T%P7wxXR\<Yd&) /ľ|`Jz+ O/@ZiСy|# ~p'_H l“c5Opv%S;{ݣ469Fff=X^;㱙uv̓c-H$ 5Y1"Jn=3~J$2HA')K{韄=_⇱c5zN}Q9Nhɭ2DIxFsLs*@ MP eЂ+`S/+3<\Cn"vrK>7W;BTHDUsv9v}FnY61CG;372 -$d;\K Ji@ l(n ^o5;4c`qp ݆Uv{ a?<F1?/p5~N%3H>Kn@+d/-flZ@ߥ? W Fׄ11IXmԴ{5h7h:u삳??X،c-c;kc=;3U؝%;,9DUp'+#p~k {>BAcTMt=^r?Q y#S4ZJ+i=]AEe=~z}~@DŽY R,\Sx]8&'Fۈ|(j[^!)!>C3<^h~dm,[U +lRKIqтMƂ|0gܜ쬙3O1erzZj$NJal萢推h6\YF'"I4QI)Hu]'(IK}(.EOrwr8| 9{(цAGG=JM3)%0`*B,c`d-#Y! t*kwDsL`r8um(s;`\RI/Eu|ô[⣃f@gGQvnj vFf[~xOk)y4Otd{$I>-y4RSC`.}+3bv) g(JFtlˍ=[;QX??k?;i͘3;g M#9v)gHIPFb͡ST -=c j\0'aWaD%Q*VU0B2| Ί 褺jgSQ Ɠq)3` D|xE,`qCGxaIq(ȐAAsNk.E32jNDwkSt =J;Ȍ ldw|$1È{Wޜ7%c4GOuaYol16&9;T6N)U1Nk wQF8|Jp~͙1-K_=i}xZ7v 2.@>E[ƞ1x=SHz @PaG*l:SPFTX|` O'-Pe* )ZN)U8]{d4ٕQdRa e*,@UIEiQa e:TX ٙUX=L<“n*BΘ©89N[*.ľddGIȬ>9_E_a Hk_SayuSazϱ0sqx_VX+U`ſ W*_VX+U`ſ )&9[TmSTOWuOE|{TX^OF>9a^?PaTI6dV>739ޯ 9O*|rwr8ӿŒqNZwvҺo*B'Ϩ'O_ _'o #->-/iq 5]<)7և%RIP ¬v")$xqzw79&$GIЄ [erZ ePBV^ln!gG~!,Aڍkx$Xm?#Ή38pAnp뿡Xea. D> \7~9~^kwq l\C\Qzn }F~瘅/sqm\uqA{sf1-dC:e8?%'Yϱ8XK qcslI;nWpMKHчEPu;k[O*H+nF GqB+Z cqg dx(E{ׂz.}9zPNi2Zʾ1Z?qez>XͽNDقIw!΅flyέ#=ޏmo JլXf;S=Y⨟Vzx(zdl`Qd/qu,s=+qJ,B|'`\]2l)M ]S-nN_[V3W;N|},U-4~ l8Q/Š|.wn/%Oe3ǽէ ٦ب/nE}ޗȉ.S&}Z/?/.Qڟ_KOb gq%܉c$#Eʚ͜W"| Q8hM-~4qMjp?w z1B äe7LN3+w`yN@VaNb;pJ)c05dI=J9[r%KK=È? {>)uYzgyRLj{# Vp^e%XY-R+tCz9$dwWIk~i{Lj :r3Mw}bRPrPvKF -R3,&imWErܒ =Hfs>gQiU/!jY\&k+<#5'nn)QțZ׬m]հu5i:ǚTbXӚ Iḑ 0AggA+EB9 #lǵrA{CSBd;+8dvz|83W(E8]?-V® m~Ha /ܽ GW-4q!nU]9}U9ėq}.9S5rsP?ucy0|Y >CO/c.# 𸏙bNU/gENLpatqF3\6J%ҼReyUIYEY٤IYV^^QuR\p)=pwߛTt3[`JPȩ%@񃞐W,]qQΠ|ʃ-w`CaNu`e5 V}ntOF=W In9ƴHѽΐn,Q9̦J^wH˅JA2rcjnEԏя +`) "྘O%!SHw$o1rPIm}|b>扮HP07RK<-w~ma s@rGx EBlf ሓo^̽,[ Dna+$aq8΀LyKz^<::=^.$Iߏ@/etd$I߿-uv;wR"(6n+Ȉސf:ƽk&*k*ـćgY˗*YPb}6E?c¨p)FYjS?3@z@O Wf #! c" C3X(XbXD*<6=煇6r2'4.q%Y9]9 MB -֏mQl,Aɼ:TƉ66gxm*#\jz.[S R[i ª5-1{ĖV]jkztIԘᨵʚS=Z6e!LU&YZI ް@S e6/#nf*~--؇oS ƢL]m)`F53f`kVs6%P1v"lSmiamiu*d.%o ֢!yoƞ6V`.Z ̶*\=ŌO2[ǥ`F,JT[ U*>$^^D?R!T [͔څ$:w ayX`~!kF@qt?2E1r" $Q|=@JL";L6 5Bu="oUTWVH/HW^AvNXME^7؞+ҟҿ+H[tEJk2R鰔ejr)0r ]B1l0lsjs j" ]|FrO FɓJ~"?9Ą^}`igM$r?"/7lw2}c /Ǟ=_~W(%O~e~iTDg9SfdD"Wg~`!'>p1o 1hRa%pZPl8r1fXQmh05ԕbXfPm@ӆŅ*|-O_0CI5l|:2n]t:JHW+3i^Ջzq{ݯ hEVΠ%z BtH+GuѪ+چ4FS~b%)6F5$:[g#q)O(Op?鑗_iYNۆn,qypdGSˣPS]n֦Eaag_wX49#OCt:TR[Rˆ0dP5"CE0--!j'B{p1tƶ!o/rd{_?4F6IsD8)*" xVpB ]tv qLVI8zƮ/(O> { Z *˨ѧSSgLjr l!"%=4u9䠽bKY 3S DSSk !/Ot\:% ;(=6ߕ;R6R*f˰T<}4f_]~72mFS|z͛~}DYI\^F6o.D03fΜ1]k,}qmLuŠb͚å&MOӲU˯[V^?$˴Ԥ Vgr'wgr%nHAs͆e օ5RtTG߼߼߼߼߼߼_NWbsȪ_PkT('w+E>Sp*6ɬo?c==x˔%s0k3?חaLn endstream endobj 218 0 obj <> endobj 219 0 obj <> stream x]O10 ,. 2D! }I$.|D/J`H_#49U a:8 d >LY7eS􆖠DTZ b'(qJI5FT"c|) S endstream endobj 220 0 obj <> endobj 221 0 obj <> stream xļ |T0>3g׳=={Mds !9! r J6$r'WbmVm˲A ^*UkBk[i-ڊEڪ|ل~.333좎MmR[:FG֫= o Ru lؔX ƨM~bC. _|7u: .ChBh,놆4,B4rYjC0PoGT߱njlTZ=FmS,72ҪexDߛMbw8PԎ).yKY྅\M hz7x3FO^:uKRJ}Z@3L8Ԁ$v@W%G6$h jBTp-Gw!Z݊ CWWqzF?ESoiqXhz4?&0v'oZ,Mh%zCk%ShCW4:oGeVTV4]=#?~l{`ID`$wex4! ÷݋7ruȀJ`ut'gvS:6t_ +JwЏso0۔Z0RjEף瞅؈xc&~ށDYO{𕤆\-/j10"t1E!,K`]d\Iq7dٲL=( WG`_@@^ p#-_?u9Eݰk˱p:p1.]ⷉ; ij7t`tzCDCFFad n1bnwL.{T3Ilɓu:Ojo B[}s؅3ayx1̴w{|񿈝DE$?!qͅznW{٧ʶIwSکT^:ͤ_@6/FFB?G{}O@bh(a?¹?#aRFuj>p~DE^G?RRU|vIIޞstQ6W-)wAQ4<  4J'ы1:x(J/8&Q+^mi1_w%~?=!Gj&r izA"7C-y|pY\ŹCܯBZBFOe//wo#YKS)m{weIZSI)US#P}n×Ȣd7"e-, $td{|뻹?r'W#$gB_Y'᷸6#q7Wv:[4֣ "!|ty?J^ AOȓhڏbDOЭ'àwq>:yZYtr>Qɨ$t)əX:: ExП@%#K\2ѝA`/`A#\ Z+; 2N,Y/gI-XO.O-Pΰ^= =x$9 \n{ΐ_0ס`96X_,Aԇ҉2Q 69d֣~vG7;9]x.uP[P>gaT'e= 3 :l> a@nT!&(7ljV8 Ud #cYrTf{|Y~vXS=jneŜҒ‚h~^n$ >tgjIO3xAj*B.F B< Ѻ f5hZp>N\heh"`v}S0L U*/Wh vQo ]/q_0ڽ;b\tPP P8m՘Py ; qR mk]^os^nu??n0Tǖ+JCwnu[#Ngۺ5qaqSsU\f^#];kfzi sX\кk,}0q*V#5`IJ_@[Z/j|K[A4]qr7tGN"gk7^7gLGVnw܃IbA1L:,Bą(Y=͡Yl1ӌaT$W׵+i;yc?-mEQɌA4D0UehfҼ r&m[seR8!vķX#J 1iVstr!>33| % 3ִ8ԿdɊk]).Y}^M3ӗiuk8IAű^Pu3ȴFែ)uRZZ η.fbŹa)2㕑sϫGnBd굻vi[h׮~a]mSu•] zFW|MͰn\ J~|Ê"a5GxvݰzM`R:`ZL+ 'Q.WXc#֦nècHmEeޜZG^?Ajȿ̴Ƙ.ǘ(4vBw@[/_ަ/Wj_cY:Sz?e;idR3خջ/ъ/,S^BNIڛ0m\;df3m,$9oє;Ҫlhb;Od.ty>[zNiRۘrgf魴T/ I;97F&^+0W3蚭{Pm/Y@J?:vtN?QrtAhw&վ`s>73z( 'yi?Hz>&qƦ%nI;a>`KxZbmus\ S=UMA33ӯZة3r8i Q ;h{!Z,B)IpvQe"TZ#@Y%DQ>>oOut:-iۧ7?J-"?R& 1M14<ЬXb|BO3hcztL3;Z`)3e}LGkKh?<5,F:Xn$eR/ALƾYA?gŴJ^=GL%Y;gb)C?bLi,gv'av,eyR1ׅΝ>H:Hq7Rʹ 1/KYfhT6GbiJZ4brvtП%S?1iwHz?C=3i ts#u2Hޥ5\,BtT{=w>h6o9[S0ioJ뺙=Pdf|Pjŝ&o7K/_06yq)`2`'?uHfx}1u?igc7h8mhk*F>WP]nJKy>8=sϚM LٙG$Ie`(#P,_斬NC37oWc/V~ğ{XW[GLxXXGIjz;@ɄUi˰VTAV/ +{6t +cñXMaaYlLXٿ!aP[glSF.& 6 ĆbBO0FQXՕ/u X7OTEņBvcOPpHC\ڴ*"7^|jW/ZLX@Xa٪ V5zaad"bC#[f06н<ڷ[7ӑl:cCla:I CئXH úFcBH[O9ɆΞXHk9a 12uz7@f_l ϰbf0mh[^ {x862{tpa_olxmH? utt|qpooCWbzKoa۳naxcCG$^1п=tKb-BwC/clP_jC)pwNP]_>Iz$Q=YH[9Ӎi3:dc:m#UB=1Q+jNbVAy 9,l7wtzwm$Ř lچ1~PX| `nS kO'O"(I(4ԿyC7(lQG;ʼ%X4;J%ѵyHr`sLK$o^=T uREi0lncs.eC(vbTzESϰ2 +!zJ.Տ;Ux 3wh)Kو_9v5~4I{mDga`W_f*,ej&$=B̮ң 'r2Z6WV'+͑y%\aOKnq!_)]_6~5؄ZϮ1m'ꩣ2nH2DvNڑpf=->4{'.փ秀90+zV#CCHDdeKƳ>zK"#ƴlOոqcZXsBMaDP?1D^!];01!Ӈh;$8f%a4qo% J$`5զso=?~L( y߸/}пmA9}?Aw%r1% :Kdj5܃07J6&<“}@Ƚ?RO𖢧(Nc|CQHt'j}Z7ۜxFf*zsۑqW! pW',Or`hg,޽ U1-j^s oڙМ"TnB0O} @4h>*>@ spܛh{t72rK8x#ׁ; W 'i :CQkh9$ğًnf[=nwNu%YTOs۹'bkqhH5T!qHBjjMcIn-(a(<-/dZIn (rnYH`ڻl|NeQ2e _jN9 n\c3HBe`͑qt[mv•ʁ` ŌET+bdVH!!@E^,B'Y+=)H }@{!t g $g D`(yEHC( )1.֡"@R[}#:r&Uy6O6lɶɷL*4[$^J|eCVުPoWsjQݤx&SGb(Dm3VVc:poAwiajԾ^kG/kk|A"M C^@!Z_n;a -HB^< H->AHBᓊL`ŸYH))Ih֦}z/1O**ߪ-DrfP`8ƙz |̸ @>=#ww@FZZV8&y<1{&ȡD6ŸT$hQF8n(j?k5d1 @G,嗊݀{O^٧OOOOΧ_/ѩ!7X!gmAQ#}X奏=%zw  _0"K$՞ N M4H4BJ4™h"-xVM D$bU%WAV*Tנ' LP|rCI+(>S廓4]߅_Q6ȣPN$kqiu|U 4'HO8P" Ńp{{]P|7uItDv/ofE!V']=h3 $P'Kؘ9=St|f.f%н>ͺסR6FʒtZ=nHm,b"\hՉpy]($Ǹ<]\Yj*pȠGɓʁ"3RQ5#ʔS,>'$ldAonKG;Вv!~vkVqܼ-Y=qrFL)::#܌5sbAd>rcDΫ/Y&9^D)wx#\PlE#624TM6juAYh 4 f9CZ+!Fnu !}WZ0 t"-Mދl)Pf QE!@8*b+ugK?@'0>_F!BdNOl <>oo cVC Rkn{|{ MLm?V 5{ ZӰz5b>1Ooo_v՜9֜ddsZ{v/k ҵZel%+%MkuR9NVyf3k ᇐ6hW^m^-]O.s'C.MhS32>avc$aLif'ppn{O qwGQ$"- Xv}+ koq#wE!dQC: ~&wxjhƓ7O;w2+OQ@j@fllP G薧ym\E`9`X̆HjB 9}_"9rSiH.{C9*9=kEVMV-T5NV +,𚼦 d8C>r)dG_"ߔoDf$f0⣘[X/YJ܏nldtKY%>:N⣓ f@d@izF Y ChjFdUEla"B:NXӭD;.; 2)‘Qd|(,#֎y ve#4 >WA<ӕ@CB%eeEVUӺߧTn۬"P$ 7/j\o ꒯4!ǜ#L7/r䁗㽻Vt=7<{c`0yaf+;tTm蚧"o_I0E:+K@h"*$W)uíI &c~ĆbxF~zsǧ?GpKϔ{-xKJM%!ʃ Ӻ3Yx\(/2˻?}`0{vע^!p .QzW @~HqYosDh1ĚA&V1[&/*.Z}j 2ȱgDr"1?3F;O5x7bV2^`d)TSs(bJkT0n]J_) ų2aaL&sb0W@x\ZxjIW*xX^5}GvDž7voxuq,} Vs.ncH`2BDu:Vh1F%:dyoBA~q'wm:5tGdg~[G:{ڦ"z?} ,mj+I 2\nQPPkǙ&g;vJ#24mvp䪫P h +`~ K:${<>^urKWzu|[g|o^ºȢlywFe'Ī;OMw%%zHnzQx;畷~Ơukl^ۦUc5QVm YF^#/%^?tdAՄ&(&a d`|y#EQVl}_8_ GAh =?tJjjcN \׌/2ϥhPLtkqeI\:zف'߾y &./kڱpXxɭ:s _p-ڵUxdcQY;VSEϋSo/h)GujZS1!TRl@T[otڙhhbbizP~Om/4 + Yk3[]6qٓh3ՏO{¨,77ZKOtz6 KݜR9!s.b Ajƣ!F lK)Ҁq ӈKVm9X R+D 魚 Rd@H$0%nD-L䧧JB=gy"6g~wۯ k=ߌ%<2n~9R1x{NfcL<DDr}W2Ż?l-wrLjn<=Q x 'p )u5ߒݥOCrF:*Rv/\wDnWpXtJ=bF-VΦYs]P˕[ǔo)F9)Dh&<>%rwDXw[9S,Ȩ艾+8=Ǝ@jU)a ~p( R0OJW!G@#~2ULW9^r@i2*6_hh9Bu!RYD]W𡐮-rŏ\io܀Ӡk\yu{;Y9EBPrEbٻ2۶gA @+6*ejM..r&DB\H҄!rnfK3^cؚ;1cd/hޑ9+?;u nZ;AK! np+3wW)!['q :8a1CۈIWgfy:>npWІ E&pJHʧLUY3pwVIr;; )%[>WFh0 ' ?+5ܱMT3tZǗ%OU >|SFGMT39[՘S+*0$ORzI.*zQ¨YBAd104Y 2 H+8X2Ĥx=N6NLi kR V7Eyؽ|u䙻zϿQP'-˫NeϏ+_VĜQ+&qsﲤcgS4 =w*d20vۼ*p?ج*X]&? M.\+| !! wȮxA])vUW<Sч#h*.FJ7!a]6v{C^Lyò,/-TS$Jx@L3t8P!jc*Uwf{ RjG181q F ٣QL%@,&?}\@Kq|_0^4l!X̯/qrH%޿=ݼ2k{e>ot?HO2bq7ߝW5 牌1veu6-#JJvj23̒rqYa!-UuRH0{dbvO?U~ RP+46l#6Mou]tQaakTڋ RYKj[\@.TQ0 5pQ0=fboFϘADyR^ԉN gAw(=CIF9|rEMIgb}iAATWz%04?R+SgD:Hdb݄ӚB 4}hNjxu% Y!>%{&F\C`{^Lޖw9O-z k;%J&O~ۖ)ЦO [&Q0h9%˖Rr\ fWq yxM[ҕ^]uS>;;yܺwMMɛ3AvtglZ&mqQƝNi;,z\mY?"zRJmH>+L|S ̍fpVk4:\5f_lxCnL7_fo챿_ШW~NvD 1rHwJM> ('p!PQ*1Ѥ  ^oߚhB#?}Ә< #Ho.ɖBf,EqQä, 5jNS^εE2ԥPt!/# Vg\Ad! x =:h @dmUn]2H/뼞7UX J ![^O,^x!j3Dg⽸Wۓ&={/Uwy+p-ٛeɭrI%x7K!<|Xssȹ©v2:|J3#/טkwQ>믝)t72.b5 Rt߷#3S3>5>쳅3|P05()yi`¯^B57X' a~6Ѫ ( @nY,!gg%'J*fnD Zk,󔑲 ̵#xgkAZ%'bTZ1CaGs4ޯ}LQ1je~yi!/w7b:y`v/kTyTDM< \q0u:M]})aU=r9ݒzCaTkDrF E.jϹ.mOj_ҾdԃA7Ӌ niS}-2s}7[S?OJKʊoܳ#Z+Eg9ց늻=r<6:͢c.G7ww_@zvA'uEl{OZabnXڝ%>:' Jg C}>6?8e=Jg6oTL}*rWX7w9{Nyad'?g>? ׌*Ucj#xЛNݷxg7I CcʼJѾb[H4y~ӿ~Ȭ+n#S'G1'c7:|Įas_^xduf~ ސл֧|<`8l *%Y!'#H0, Ou_wgcȝ&bI_sx5N"Ҡrd貎 9,32/׉d 0OBoQ3,8O_tx/GYa\ 2h}QSF@g?"z1}~%Cj#-@Chk#v88vSE fvlo"{` w(ˑ!Եv"ŞxFlZmvMQ4vRMlvŅ pN6up ҅VRm6'sHj槎M%sSht'IX;`yUU4UUѧ抡 ph̏cNCI s3쀬pҗ$U>nT\["}<,%B6m3}28&u/H+)},diN¬RtEEde\I;td!Gi5J6:y%iX;?#' [ЊuSC,- |EXU_rcm;KjVۖW*~y/w9]ѹ I)1=~gʷ?o |s=ܚ\Yn}N1 _kϨey89&"/Vo&buk5~Ȃ-11)fʅ]TΗ"?(oerǼ9^`ȏ[9AvCP,^`QVMo.ѳL ,zK'pM̮ ;3B\8Juw tӕYif,#hמkv']ذx5 $-z}qݒo V]T#Sd.6WF6Sc.ZNj CF#!C/*vŒRZs+i9C rĜ99qMf7Gppd/dq ɍ;1+6}wQe(a9jN 5gԍ?ECg1I2vezy0r93D ̗:G&<Pv33WuypO_!P?z\Zulmll .P8ؔzD-5%҃8S-u8֭\tNR)*4K/*,˚7䚂i./ٺ?wQOTĪVѿWql.WL>UxqUZNs :l[t%L3b=NaLm(rrL.:b ~wJǣd ?JTփ㼌wϹ>cH9rV"IO<{өEX}a}Z 9E/-zȂ&o2FRt@a&~ m7GFmQ6@yvޙ'r ۍ;M$[E%/?^kkKjԙikit+sR$7_п`{ucusպ;o ڃђ<[e򥟾)+ȼߺzOpkI-vn3“ߜ랃vIZYfA.(K[ӻ-1teP yKK?m4KE\7UEVMYJP5TE.X^`ه\4|gj+{bҵ_A06k %a*EΨƷOr|{geY*C%LktN!Jsx,) {Wr6H/S٠ϔJ2̞LLfL+,G:*AJۦh)KRoZ,\zmC[U҉-7^4ͿKsOzUz޽\17VG<׉QHQ#"Q(lqոpx<5'&Jߍ3F=ѷ\Hll+pJ9>JyE('{܀ 9s9E%!+m)V}SB J/yXA.c?9EO<55FGT`u SSs4}F_-i8{T9 KKJRx^}cd,aE5V|ҴYw"M:ɱ>TgR !R]t{yhd5tXrYRWID귗J>](iY=T_"91qV|/z[W }3lk $]^!h@ ppgbh$sTrTU`h!]8ehI柟C m@=Bg҃jJz:?C! T :<45M`|T{ˊmJA2/R^*tl䷇v;0O 7oMV 8 1M P'R,m 8Ҳ;ev]O#jgs&5G6|޿6߆>0Dӵ%Ra!w|&>hunF>g_ڽeX2[],[s=ڲ0tC5}s<|@In~9~,] fy"O3fIpcwTwJGDOoPș)}Zgn$A{| R M4[^I'q"9s4"R4N gξ{& P8p\&mQZ\! oWqSfO`dq"h3-~Kzym!lo/Vma$\b*mbVSlTlӜ,utCQ#^u2Gz+_jGwOёtu9"'[vԸ~pjOgu_.YIt8o~LhѦ^49]ފ=0ObZɬ<ʴWӂHJLW%!TԪEUlp)A5KZSZ [u_`Ur-]}&2VN1{Gn}i1?kUhzaJtn"pd4[RM~Bjs)`>#A&iPsU^ 9"5'ϰEձ;_ m 'ouxzM/z_ҷhb7הG{ĘJsÎ6D4 pyƨcb[ bMK2o=b:-vww?OOMHEnr[ 4^,|+΍~:B n O̶d=N[l皡[!cA;T$>mTUS> 5%ކ"w$˪PU+׫1N kxRTrj_N;p(*`tPް .HO%ǟ1ou.E)k|g߻kX)٥{ghg}#!{KkENkmQdSRLh^uOa]_1k]<U]FLi}5F|ݽ{~m`ps},-9)s})n;gh2q˲+| OHڰ13I,?n7Xe|)MC6t~ M\!%J$c&wVe(w.CF j+ۧ  2!ka DL@jP{iAlAWPчgMt a 㳱3KdDQ"čyqHݦAW%2NF:gˮr3,#3nO1z@@ɛ#gL.~y^ߣ1HH%e-}9Un+zDH[s!z)r&-0pN#+l'S,`+j+pEGG5(5ҥu>a q4lrQ "7GS]9h=j1;[.+c+u;*_=+> TdAjH+0Wv-QpIra[nxABsn~=6j49* XPqkX hVqWβsJNU*<3BcDI= {־/ w|Te&0? +E H'h=PTSLji9 *Okc Uh58)CW8oKI$QIj '#ƚwKkl,L %&]oR7j&h D!{r) j֟82xj[l#]q\uxbf/v#m +yY43 ޙ0# દPKK!`V0܊i,yDAXypM+mp}_7~rTW_TYa/|<ί 1+X _w sÞ^ ້ ^,,^ /W64}BBN=2˖#5EۛR}`.̅0\ sa.̅0E!QFy?$"Br2 F:ry4;+;Qe%hph)"@#G/\s]OFoMĶS MitQB!p팂0P> endobj 223 0 obj <> stream x]1n0 EwB7X Z%C > endobj 225 0 obj <> endobj 226 0 obj <>>> stream x[Ks$W c7`MRxeiF:PlҚ >LrL<*]Cw{pa@t"2|u?ɘ\ܜ|. {XRE{3Ec;wh 6"vbzc =v X-,&e%h+N8Tt:39lPa}ƅ 3؉MU?1O Δ7P7ϖS{m{(Iđ RChIFHϨL 4ZJt{!"1~ۗvBRa-[8Nt#CXOVI *MgeAca̛ެC5GF[{6+x2,ࡦ<ӌ {Tyc,buy+4ټ@ }"I~OM 1fX}"`sy>yro ON;[kR2ƂRaV$.(8|n6km3킽^pR&+3#>E;ZBTMBR<EP [Ol)y* C4yjh\@ MCuDnpͣe߯9I"HH'DfvH4Z ~'sYZgnx[=?6p(_J1#\ 1zD~׌! =#PG+4: BFe5_9/FZ.LCPƙk m!dc&ZĎEDc ?~5S{6H?p)8`c.%{)=VnȽ xsuNrDtw A@q p0sS\in+V , R͟ ́8Jv"|YH1 vLXu6s0DGLe$]˱8 vveVA~RK&DGah: uDZ#ꐴFLRK au{Y5n|D֎Ȫ`GAn dpNssa¥:!(G;F*P'K^yCǰj\Bs;ObC65lN$p2j9VP k)`'1OF}M<+͝h\-sWEZ䬂`'UQLy)'p ~%T|J J@C rVgrqy YN$\D=qVY^N8#XZ^p mDNՠ5axo3k|Xk's4`SzHIP5kD<׈:xr`mj,ZSpYF%g&;]KB´̆k"{bˋs^&u.s!ĭw'ATUKNJ+j5*Gr0ְ[ᥰfϑzNxhM9zj.*Zn4~v`XT,:y6a<r\|(TKe{!՝+S9٤`e5:Khih~7*ƒ(;¸(09# \Wb+! ~8]^̝3hS Xxr>[_bayq IL)nfy+g58oPn UЭDF BT@Qgp1ע+D ul>*҂Si?}qӯiISDoG2 ZZ }5s܁AȲ,HZ`F5VѼ&0Fp L 8xCi5VIj u7nTLs`QC_/{Bp*TYPN`Gk4]ֈ&uUZ#z.YqAߞ"v}{}$?)"\T ή&%S#zD;ࢴMnE晼1KL m_o`r`RWrɏ5K$QɨY+O1?,&o}IVsR\aVa+bN)_%IJ{7ꙢۛHöz #e{ 8v}~H>eVb j&p[HrS_Ѝ-"2ĺ*lgEzrcevQܔ ˥]烐XL>>?b2o̮QU&*+?/x,y*mD/m4m'eEdk%FcyJ]˗ *M5kD׈^No囌ؿjHPXz^lt/cqԊn\,7SqyZS6kkvOI ^"] E aӁ@8Dȿ,k 8}K2>xa''-ٛF΋dJW$|8"h.SZH 7 Q Y`$Gn%g+YATkEq!zuxU)E#EZoY~kxV)35Gɯo9<&*Bg0BhUD{}cz}#~̿Dm$e K'SYGRUWL3h]b%+g#=-VDSӫ&"5*/4_(SHfhXǩ9UN rLHҚW[ߤcDӷOz@ endstream endobj 227 0 obj <> stream xS(T0T0BCs#s3K= K\B=K85532W57730++*r endstream endobj 228 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 204 0 obj 4453 endobj 178 0 obj 6949 endobj 152 0 obj 7200 endobj 126 0 obj 8963 endobj 3 0 obj <> endobj 11 0 obj <> endobj 231 0 obj <> endobj 15 0 obj <> endobj 21 0 obj <> endobj 232 0 obj <> endobj 24 0 obj <> endobj 28 0 obj <> endobj 233 0 obj <> endobj 31 0 obj <> endobj 34 0 obj <> endobj 38 0 obj <> endobj 234 0 obj <> endobj 230 0 obj <> endobj 41 0 obj <> endobj 47 0 obj <> endobj 236 0 obj <> endobj 50 0 obj <> endobj 56 0 obj <> endobj 59 0 obj <> endobj 237 0 obj <> endobj 63 0 obj <> endobj 67 0 obj <> endobj 238 0 obj <> endobj 70 0 obj <> endobj 73 0 obj <> endobj 76 0 obj <> endobj 239 0 obj <> endobj 235 0 obj <> endobj 79 0 obj <> endobj 82 0 obj <> endobj 241 0 obj <> endobj 85 0 obj <> endobj 88 0 obj <> endobj 242 0 obj <> endobj 91 0 obj <> endobj 94 0 obj <> endobj 243 0 obj <> endobj 98 0 obj <> endobj 101 0 obj <> endobj 104 0 obj <> endobj 244 0 obj <> endobj 240 0 obj <> endobj 107 0 obj <> endobj 110 0 obj <> endobj 246 0 obj <> endobj 113 0 obj <> endobj 116 0 obj <> endobj 119 0 obj <> endobj 247 0 obj <> endobj 122 0 obj <> endobj 125 0 obj <> endobj 248 0 obj <> endobj 151 0 obj <> endobj 177 0 obj <> endobj 203 0 obj <> endobj 249 0 obj <> endobj 245 0 obj <> endobj 229 0 obj <> endobj 2 0 obj <> endobj 1 0 obj <> endobj 250 0 obj [312.5 375 312.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 562.5 0 0 0 0 0 0 0 849.5 0 812.5 862.3 738.4 707.2 884.3 879.6 419 0 0 675.9 1067.1 879.6 844.9 768.5 844.9 839.1 625 782.4 864.6 0 0 849.5 0 0 0 0 0 0 0 0 546.9 625 500 625 513.3 343.8 562.5 625 312.5 0 593.8 312.5 937.5 625 562.5 625 593.8 459.5 443.8 437.5 625 593.8 812.5 593.8 593.8] endobj 251 0 obj <> stream xڕX XWp-T+EqEQ4 kwn}[FAk&QȟD"7߻՘d{n{KƘ12br ;.p4Y3mI{,#\|ߕu8=yW>q_:^gd2.,Lljmm3lg7zg6kGPoOP9pghРY'Opq>kث׋;-"-볪Ϲ9;տ[l2jnK~r68Ѳe+d]h'm%60yEI $sqyn U,@qAZg rUWp!Nd=0.7; ~ǎj \*(.k}z8*;Z )1IQ129R@E %^/Y(%& 0Ē8 cXasl}!$/,jo!` \˙g(Cp12z ̂@b#ÃB@bTFw1р09.vJG5xYN*Q47^Í=V=2Ze p\ԣ/P%:E%$΅HDEo(AZ=oKb>fuȊں4?ٚVӦ0wp˸x@G!s X'#1h\ aa41r 5nn_|}pW߾to?_qw/%14kñkP*ohl=%luS㩉цkS4IjHnO: &DQaQH2'1|E6-XADU*"5xy;"6Mj: 폱/ZxDSnH#1|=ɚG/ >MxƖcWԕ){!=PtaۧCI?2w._/&=pXۦq(#qJfB}Zϴ=٣la0 2=$h\4,8H2z_>8M;7*tٙ׋rҿBpp&z'FnI d UW8>. X|Lcޢ—ˉMDF#Gիn{ `=Gh"'ov9%/ 7,=BfGϣ0ǰ.Vg:~%'OUwyP=[x_d+3& quA;wٺKvטs0%=|!/npD{?G(S^5izG- .XtX/AAto,&PN#Bد5շ5 w΋SpAPEURi2dQq.+X^wۨę,E[%;0>II{0/\9ƽd#Hޛ7/1nGEш$8ƴ+(g/M,})>s+8a!)p<kT`yOԝ6s zj5<1|ܵFQGm} %š̭ Xukp@Ղ|қa3Gsjw%`2%8iThwRXk mFۂã(;8)`/xYtDPU'!Bvg9]ޕ< ̿6*g^^@={M],~mdwW!7PWj(6xKyx"&^Q6 :ۉӿP'kZtL|o)lj{d8kZ(VFFdX(~JlC|g+f1YƎi|\VN+u+&t~U%W({,tӊbZFEf.΁PJ[MIR].sEaL}G:SI.ћ8nBkbAmK * Vz~z+opN ך߬j{pAU\G368U͕6VZA=v6KZg%2q] TpDx)L'DYuhPnIqQofAb9 hJvڄ$ }Gkx2RhY_4~VwJM8C4.Jˑ<+{&9\g3k()=<e; 7QdŒxԀu&lf@_;u1b(t+Oo[(;4TC1;P3$(!5Z ~aT$^Mx LjMM:mJy%:iv*M<]|1C\ۖoB>bhkѦ2285 %AjȈASm .pl a&mʏ:@ҫr5ay5©3a -Ta#*!t쬜G_ׯ7'DVEM~)=JNhBYCܽoX% +X,}9=t(v8$%v_sdդO!qƿp$X&p3:><(B!Z8òTiP~i76N2XR~0Z"c Ay;2LcjoU&Y\,@ .K}%.!3$=ꉗc)y ^S (GwI tEbLz$Ow;Q}^=9J*Zk 3XJSr+ KAhQeB9%( ՒOn'o~ͪyAbZd^a=̡G2O0W3CC#[TRTRXڲlqZ8m'شݗ9u> dR%l5!\7b~*CuR8NVOXV;hDZ6Np0h$+CFVGGB0vxOUY}^}¦DQ̒w>GZ2I)B/$]*Z@7:r &ÞOC+Yh.9fֳnndRy %ڋ 83%4_kϵWPk0le'աs ~`=EWC&蜷ZRNFű'^DBƯN޹li+]2BS֘tJ)7"tY%b_SRBzm&2.~qE/+hjj\hG䞄FW&?; 8Ps*i-Ntd!!>,!q.Opل(J](LJh9Yݩ ;MdVѐedb5j1 a s ʋ7HZGŅCb+AuK} !Vϙ"[%tmrnr$~kB ]g pqr \)dVBe\:ZkX)'M2B\Jk5Rُ4%8KMuUs;Z~Mn n٥~j)kq3΅eS %ǎF`f)poL2B)A3 2/gd4p˓PmrN- J jt%vڭOBgRe*|FQjyv&ܣM'U64Dl %yzOh`]Ʀ&NOMdШyd%aDZY AoZ;eD%UM@fk,ڰ0kѪR3_XOx*'/+k|i>*+)B$'j4SG[boƷdZqE;6`b/P[$/C :ed@sKwTJU8pմf ^1ʥKi%|4)eB,V'i4,@<(e"zde;G$D$XmuX)z\ !e~!a>.TBZNY4;WA6g(y8W/U-0^ګs! endstream endobj 252 0 obj [726.9 0 0 0 0 638.4 0 0 0 0 0 0 0 0 750 0 0 0 550 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 500 450 300 0 0 0 0 0 250 800 550 500 0 0 412.5 400 325 525 0 0 0 475] endobj 253 0 obj <> stream xڭVyp_YB,UR7 b &! ps88mB>eYuؖmY 6`.s W 2 9$J'3m[y>B3N;dF4}.('Z|yײsWfd&Y6aǽHq/S8M0W 2EߞMKS2xNORk**R'Y8K.LOWH*ftʢR\H7 UEJJN37gJfE^tJ醢"H.}O[']++-a=.ijyv7A;a CmdʧR(%¼`q/^ArNQb"Y/5H .U67TѦ0xޞԩFhY<6khvCXjmOWl0C9gKF+Բ`'h36ƻGt?%s;{5 6\.;3"Q$l'caX\'(:d4^,hN.pUh]h| F T1UIAh Np9 AYi1ŁAラSCDYP^1GhQ¬'tЌo9m~"ms8x;6j<> #AFft:qokq4.w7WI!qɮTb3#d$-ur$;?_@ 88=&ǐ1:fapZeG@ JH!;CTw;?rA~xMW%=;~y w 7Z;*C["}P*`A Pܴ)+-✦&iCc>ľF\YlvWR5i`2 <#Ԛ un\;lQ6j dWmyJ5{,zcTl(gz7n7pMlxx8WVaRv"1Gi S~,1nID΂Āeq;arO[@*|tnتy?#0: D&S ich!Rx Ոu҆wY fe3e="K:Z̛^i‰Q!&Ds~GUR<Y: bѯ8S/zO >M{+ax_N4 b텖 զ:"bjǣ;@_'Yd+e|c\vr̸Ezj~pNWK>b)vMKH\䣑'vQe&nЛ'~##Sp\605Nsm~U߭%z7!A8YRn|Ά?pgb@"^A3 S,S.r@toBAWcYV r}}+B5գb_0z>48*j@K[--ў#+jf+JA鸵?Jiص/[7x_F4N V8\dk]EOYS ٮڪM{#Fȥ5esp ͑S0D22Xk;r^R~'~بiPay^} m"Kh)Qx"Ɂ (;9dm``㨑 \ay+Cr0c΢.{D>kCqK$G ~e`: Yfre;[f&%z7C,;¯co?2M2`H86tƕ318l:"NMs۪M}Zb))ܸ|wyz%h@l8$n[ ]a~;0*uqAx|BD; O.܁ endstream endobj 254 0 obj [693.3 0 0 706.6 628.2 602.1 0 0 327.6 0 0 0 0 693.3 719.8 628.2 0 0 510.9 667.6 0 0 0 693.3 0 0 0 0 0 0 0 0 458.6 0 0 510.9 406.4 275.8 0 510.9 249.6 0 0 249.6 0 0 458.6 0 0 354.1 359.4 354.1 510.9] endobj 255 0 obj <> stream xuUyPwf J+fcdQ]]#`x`D" 80 03oaQ r.e6I6n+nsJ㏭ڭ4J4=c-  [|<]uHIIPH\Pa>8ya !#5R;7b`<[pyYzbرװhq$ rqnd&.%~"<>X%JlG@WSNZD O LMK\ ǻbm4m63z&ZAGDf~]/ڰJ%z ^ha&ald6gcP6^a&*a=nv۬1n$ vvq+$&n=jثSz@%$S W*|}1J cK0!d0snAur$.E|A*|Cnk<.coIf=ANd::F9ں#6>1C;`@!mpm&AA&(/%3~tsˋ 'B5KfU]L;s[W.0TjMM DzT\ !>}yG̞rtʂb#WGVVuGn'tr~pRC.+Y+#25>\;dz5f?Ѹ٘* nGoA; :nې/5̀y|ܠi@&GS,4BP]^P:yVUoDK:7g;iI;AtC,@va~A.$d&,P~13tvHl4Q1$A46t)f;y[BSzkkDe9`l۟` q݋ $k@mՏk鞷q?m Jԫb+{6,4գҪ"(4L np4Oa7䇧/GQhhiac>ݘ{-Иm8Z5f@Nʚ_+-Eu7}2)o"*/!,d@o |eg^c%V.envvS^(eC>UX('k0"Wi[ӴjL^t kpM-z FØ:~a{8ߨӥgu̦:[@Ͳʜ|z2b7KMc؉zb^ mlglB )x|GB{>y2H4T9^Ν 0KJkK+Sk.0ښUґ`UET9{m(oc.,j*^k#(ȹf(1T&,;9b3"wkE}8.޸/EsϫxVX%3@+8kWWeh 8v3{3]@TZĖFk+O>CxU> ?_Z endstream endobj 256 0 obj <> stream x]n0< HHM\z#fHrIr?J?(kX׫i< ^y"`m/͝rhF70|yz7[RD,v ,ޫ&*Ս,= x̅v<ӂՑyH}P^pJc 'H0:s,TMrOcAPjS>#@MKk++k}9稉//3!\*線o&3͈۫ (mfZڋ#)8!6˔gcqֽ_G^@ endstream endobj 257 0 obj [833.3 0 0 0 0 0 0 0 0 722.2 583.3 555.6 555.6 833.3 0 0 0 0 0 0 0 500 0 0 0 0 0 0 0 0 0 0 0 500 0 0 0 777.8 277.8 388.9 388.9 0 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 0 777.8 0 0 0 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8 0 0 0 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 500 0 0 0 500] endobj 258 0 obj <> stream xڭzTTGX2,wcW5 V7&0aʞz/PBT&k4ML̹䐼\zykq9{DTH$iтV|‹)=ъD񜈗uQhO_mǘa6D$OΜ2mIƏ8/(8*toHQ8~Эn}k39Ǔ*Zԃ E=)ACEzQ)km՗T?ޡޥl);?5Hqd0=j85IFSc8j<5HM&SS4j:@}H}D͠RSsy|jZD-PKerjZEPk)Gj@m6Q *ЍQɢnk]|[sx5V&%%f4Esf 1oM{cn=z~˵WNo`s7=-i~ ձ~cjOo0m_*>$ P g>h6$~ȷCC8~mzuFhG>R3W[_+Qھ]̯h_&iҢ!4)qڦ$LR:rK$)S{1LVuvo$:RXu鹸MeC%)!İu*`>|l녦spA2<u3ll%x3߷zsx3S vPI j&KL(yol?t.3h2_9<+aXl7NMX7[YPI,>_cm=#Y~PP&0XV{ )xפ331%ÒUY8FwXo6f)` ]Eo~ߠkW6B#vz&N YOn5H0Z:ZAԅV$ L|[{}dCXhYAtђ.;.61Z줷5Z CL< e0Jv,urmq,c_TFE>gOx)Q>}Vқ*Tz|wP3 Oۈ\Ⲡ*U1 Q;䯀{TR.)C<՛TIYe'Cq`GԎZ7F`o(X5ʠ6"S ύ)Nay5":~scO /eQ65tIxH@wSa]}CB8#g:H=Īd+p.ᅚ`a4Vמ89,q59]^T{ALrD7wicѮ턖G5ּ-6(zzBd .}Z}@sm7/``2T%~px,i03>N.&=Ր!{7!7# Zd=`*RjДD08 ,o<6q]*SU\6<$Br|+^7jhUKKhXj$P5tl$DD@ $i4BI>GŎ@EǞ kxg!gg:6VKV8)TX^hT,FUh%{Bt=VUUU/:ƿ+旴;iyLNbU:)qH"+1ˇlC|rSIpe" 7Rn^C!̄`vꄦY{?q}UKFJ#YOKbޏ-}8|$Ɵ6ʙG?Ac=% GOP˄m_~bs0L^e_8croU(o/<-DsH{쒰#9i1;W^@  M3>'ѣYϥB{/쭊 <&3|YLU,tT>AU!.CI0M2$iH; (In/.t"ߓ)aꂍa~./F"dO]Zڅ/oW ȁLhs&C477E3~3==K$OulZ[Vn?e&mO7[P}鯼#¢0m_ʚj`楫ӒeZj:"qS"-NI y$@R  )!5=Mh̨Bo'ld/ s saALM,ڼ-7y˔sQwW=:u8|䁴٢lQC45+M[_T+gq?<8D& 31wtXI; / n@1s-`Y^ `l>+wO)U1w|0* M۰Yb(:~ E ,ol2x@C45<3/b}uCJiv.n(b>3qsJ_ƴ[6RM<>~ćsqwnvʉ5G3+u^͑1Kn,z{fedk3{Ôy_DoZ{tg'?LpÒG 18nU\48w32,aDEGܿA,F2aZQ;'shjy}>fc` Uki}=y!5[sRfѓN~EA/)W׺+v2>-|isEI,}!fIt}fP]#(:}*KK^^Ǿ,X;dxUIo9b~H26%O1Vbl6xpݩ۫imc\]N߂޵E 9'=Tvk 4{ugoWBl&> AkQ 5Xl6:d3͡|7i}F+HN]t4,=Ld;{p$W YG-\??P 9\\f9'MF O_0 -o9%1=T<@~@2dCFPjP{,fް?7XPSRJ C@Er[ #}W)xv%S.w>׶bW&2@>Eɐ9ϒ~۳{z&i XgSDU @"4>dFc ƾrIҌrH d&{ $ǒC%S (YVBzXƘ%AHnqOV j֌lGkǕkHlB^ ig=-an J)Bf%шB-{z߷Vp͓7zςK7}ɑ[V1|H]M?0(eKii+AKZtvc)Wx8Gk$SDd< Iw\O2]tv_̷?u\E⫞^^2pnCq_x"Kgξ'X(֨ႿZa~~\Pǐs+/놗Ԋ\upszZ؊ϖNv uGQ4`u -wWy]1H5e΅e?9uv3tS>&qxi&^Gq$h㧱hyMQAj*RpHd|٢ ѤĬ8 nd7#N"N0\尡{/CWNݐWcǃ?W/X6|M1RbMj M:t08 FàBh[Z\Zb6!35i{:.H^_o7e3%!(qʶ3Q;TюlbVITؿJRFmvZH/T+RtT%?mVNL>dt>'ݤٶm^~NY0sO+Twy.nBX^dNp%h 9 Q.{h|iȺHrO9:-}\"9͔^쇑A2⟊_Dhg7ߗI0x` O{~Ό6UfcXYE ].dE@ C7=ALfgʏ 2΋iA65OEƎ I-U5 #`rY4EoP?@cA!<@mzU#CQ06TeCBdHP:;C<\n"X66RHf=4_1`. ;!dW Cf'鉉(v!9L4:}F Ög|N?n2Ex4##L[xR4^TgFQY>݁@H,'@>RP@1CT g[!v! u?AKΡ΃,'N/NW@ (ؖtDֻ]dn,CF4 0/7#9DÃEHb0B42"]nlݬy݂QIfqWT}-kOlc+?]{RSrSG!ѐČ<٢;һ^ue^oYj1?ESB5:iB=6GW54 J MKL["G!%RHpU/:oE }JK2lqJlD`Gz]hgR[t$ʲ 9hEq^ePѮPk{FHz=lOny=sWa??Z /ҿM2P(TJKmbYr6qo]9u'sm΍,/LEa$ry?,sf~9BAS$cDљOjM4I]NVӠ$EHZ$,|/'T0]"L}6PF1qoc4A<^ FmFr<‡Rn7 ʠ:o}y.> XY漷\8>'U{U''xǓ?Ǝ@$DU)ڂL& =)gIFy[7hm.p¤(凚w͋stfySX37:i.3(oxx? IG=ҤW(ƀ YN6;Y.̫ݰ[2y6GpR0@1S<7쾍?NB,v0>je1!Ƣ]_j4}8/ӑ_zeg'KJ $ޛLI{Yfޮb"qehD$)Lzt`kp3dfH mfPiwFCh宂qa{Bǡ ZZhaqΉ D4:5TFg;U46c lʈhdK)JM cWx}gpkt2nLu?籈}~Y]s.]F}'Z}N;m*".k\NHUP4 vʠBW]`Y=N0ߎФ 2B*,265Ky|Uԇ]V,0 U쒌E՞$]nn5nɍ[cvDm_FN%be+x0E֨χqP{hCUBu~-@; c/8tX-{;Lqq떳3D9uN]a_U;(o~s[±3sWs8ux..XbW4pYбqk3OJO,V|$kz%ZwD_V[%c*A&1V˃CM!Jsi5!T-ֹǣ_%}XaY)ΉSr)6)2EE?tgl'{|YW84^x X ]׀=:y DEF"ɚJI}iUJX r:hVN$©ӇB]TAr}PK x2ֶ|."Oڗ́E rdyEޛ s5h9# i)t+%VbK% 3?$"4붘CXo E؟ǐz!؉u}9A)WZ`ܵVEQh,eC/Rzg_F LzIumC]v3,:-ʛ8).> n.rR XFW:PuOV'<D  —ft2]&s/rkI\2>yhkb ȟŃi ;3w}R)z}Fu싻ҫ# X:18i+=jmD<0A;Lj*WNzu.,u%r ?Ħ2&<:֤ 3is<u65\g5ץNWR'bKז閯&sU{feZ(N0Mw9 &uYDǮ3޸x*!QtFkEkd[T!gC*%Zے<ˆ,hQ9,Fs?jCѲP!~h pCs"Ua*" 4؏G7Г7/;Mơo^'hz&Gc9i1WY%\@?X1?ev=+p_&PE-p_6'^JδQ2s+ob2 hhƒ=tӐ'٦S RRK\pt->hɫɉ8y>RNk@P&%n<βUZah#ݠ V4eN@Fb;S;NTtcAU!mZ!IM# ק*Wvy`e:1jD={[ ZC4d ^v.dA $ĥ(ϴc0-AAAsv&fS_uSھ{n^f0-fMrCrLU5LE^ $1qG0ӛ*N@Uf*ˉKIӇtʣQNz ޢ-&,դZ[,F&U&V^%\ѯ<0"۔m8ڠKA(ߑŖL2呅fih:^v\R3 2cr0yIdЛBJI1H" M漕dK=`FhfxWLԡwwg?{L\eAryPI^X^!w*妠0cȮJyE(0'$ǹ^{ztf2y endstream endobj 259 0 obj [525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 0 525 525 0 0 525 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 0 0 0 525 0 525 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525] endobj 260 0 obj <> stream xڍx XWv@O 1_7%j j4j(1";00l:SÎ0/K͢Ť:9gXo<< =}NUze5#VpX0~$g'S6pFzU&$XIì06r;r'kg)' S9Ӥ3ޞ4yKw'[EonQE;RmjzwpP'8U~NK}}>x8u:=ϼ*{FeV>]KvkA/ӏ2;f 33 f3Caȼ gFdF0#טQhf 3ynjg`&2o2$f23yLcf33;f.3,`230qg0213KeYx2+OU}Ӈ.(tG}yOnVZݵ^d}fnvU>A+r_ӷߠ~_s[mA\ 8tA ͠ۃM?+b? 9d'o }aÆmv!p?|Nz? $YA5P"b[R!Vtf-do`3|rJZ:h(>#7IW@D $={v_h=xv bG͚1mS}b^ܒk`Ǯ<`92o 77%+÷~VNr_ȉOh ƊӶmܾ*wq~#ÔZ_-q!A߃c|dbgq.;:ʠTEN~1a? (g]9?2&ApVp+ZfƝI=sGfݻݑ/ᐮWsvG%>!O4Q0Tfԙ`.Tsk HMI<TMB9demkS~8_u{go(/Tvv^.AUq ?V'%K[ oPi4?߾ ;41;A4^15=92x g$ >Bٯߣ-SHA!ygz 6Q9m8j;R-\q.S]Σ>l4-!d3> ll7p鬡<#9KzV )CD-PQg P=XE/X\[sK ⿭;pNs$۳f '߄QD͉\=݇p;bf&~ktOO/^utѲBklدa-D;v<$>4+;;ʸhCRX>P2H7XEiibѮ(5tRRy~NQT@QJAR.}h+٪O.6*AE[ <wWB/)娪H(!S_oLh%,wiA4P2iҒ 2)[^M H bo68i㫦[ SE(JߖqyRg/ qp!F,̟Zj- KP>uCyJ & -)ֵkXųlZKӂ:mε饙+)#Q`hjGo]a/I=ғS[@ _cXIuGX/EǶ{;!QLІ>3|=pSqspjM̘Fhh!V$|-+5;\ⰻS88D~4Ѧ8 $Vaµ&ff>`^mVVJ"Bb+1ClNt=]/Ў+6il%G`=5tk+|y|}W13_bsp;50=YKO1~lk)i-G 7AHqJmE^6XZ!co}Sl 2d$vÎ8 %m_#É+Yqih"@sϢL)HkzH "~]RRHe]((aZ^;爐i^KF-j.qҚ|vDvڌ(!>ڬl(}qۭ? n̘F=[H uN ]NƧ,H4%#h]iŚV+' !i!M:4 9IJ3UFh5.˷; H٩9)Pyyř9?`N Nƾy&FIXFѽEu#sKk|Ž 3~~{CB,.nZW]SӣB):ZXGO"dFw#{W^"v ( G8r o hN.(\ s` "'C[lB$Zz3Qk_{Dի58hw} WXp<2AwȗA9+Sw//oοs߃ 9'dlK(RZCc>2VzS1n+}XGCrN.DC}Iv5{ fE,:S_cU^;Xh0nSuGj:UV@#4VFBx!3",>v'pd&I肹P8xB \Р2j 㗰%8]8x{*]#ft4C7]9 gRRĹONcSÁ.X-࿑ gs?QNqUX2Λ߹$+:mfΨίYMƯz/uMoR2Nrthh˶B8QYQH"@YItn NZcʒTO]($j\IRQMjHؚNw|ٺԓCv3CPp=zZ!ۯ 1 ͐{vsz6$ksKWCvs풼p?~ã l*{|d'UA8m U] 9'U,ڒWl"zL8YaxeU>'}DSd쉬kJGDͱ8=X]B7l,%gm"uotly?$mJ q;# J w^9G$GJ,3YHnB ë4 'O׵Y)i+vW7$edr${ںQ07[-@}zCF2Y s /=-p>v.o)DnLrw~.‘[pTgqȈhBQcVLɁGZۣjP#(ޗDiE_8u3'.|uf[-xa_dF32>҄XHҦV7mޕף?dQWXp}$x9W۟G=;-J?/hv ׻IB#zI9!Yő(O 2޸i@e^gj/W.]xdGG!&)3VS eZ]+JCպݓHнK"FE\J񜣱?rs|pu&L`+̑Xz JC/QؒPUZ}gcaY 9? )Ѵ7GCӧs ga$˽8{WXv8ɏRk{4&7 9RWVUP}tkc *9A+ (IM`+V'xM}CA+s+'MxHɰ[BqbQ?fξ"75jJ:pmhSY7c>ꀂExГyOV%|^QQ.y 5k{MSbK4kq]N~(YVkynۣfڦKې†'z=3U<2DMna$'B m  qL\^U yW؃>Cۋ¬tg(2^{shW&_@Tƃ.]zD9.QM =eȖ~ Cwa2e7ICr;_a}Rʠ֣:qG [U \իUBD~3\ܮܻ]oqT_p/SWi(3$.E9;;k^yL` 2)1UYLevH9W۴_wPɈޥRxFָhf泘*|+Mհ@y3|KAX.)T_r'ፁlAfIdZJKޫΦfo]W/@#ܗ& kznG_M>n*)'L;;|v9{sv[ Zl%ͥ14 oԳDFnްasȢ<(7+ vPFt1IV*%ZIk,-b<E"g;jxѱ[j&쉾(Hjzc6G:_hu#4H[*3n78rS]}qf%Uٞ-oVJaL9-YU*: wG*Fmvz)ҷ[։.{bSۭHNn!,#c 2fCϧطE#l#mBe4}| lWϐ}ߔdi*1@ 8Z9V9#^ᫍӁ>;r0:dYi^>W\l;@gjWj endstream endobj 261 0 obj <> stream x]Pn Mӈi/Ƥxv="<-Ix+hdf2LV51:@vV`Fy%B6$g ǔn9 G,ܧsun9}nu }:v o9ԘBQ{s_lO 6#ML8eL*PuIШo&c9+76L)Grq0cPFxeKE_ǀKg]Tt endstream endobj 262 0 obj [777.8 0 777.8 0 0 0 0 0 0 0 0 0 0 1000 0 500] endobj 263 0 obj <> stream x%KQupѥ|H%Y5CP UA4awqj%p\EwNT"zb^?!x]6[byUfۅq&a dyicР 1eW:7:O' 7:)}_Q{΢ʦ׳ꭲ=v:U ǵRj endstream endobj 264 0 obj [277.8 0 277.8 500 500 500 500 500 500 500 500 0 0 500 0 0 0 0 0 0 0 750 0 722.2 763.9 680.6 652.8 784.7 750 361.1 0 0 625 916.7 750 777.8 680.6 0 736.1 555.6 722.2 750 0 0 750 0 0 0 0 0 0 0 0 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 0 0 277.8 833.3 555.6 500 0 527.8 391.7 394.4 388.9 555.6 527.8 0 527.8 527.8] endobj 265 0 obj <> stream xڵYyxSն?!4 "5) 2(PEF S esK649YI6NR*3 ATPTT'w_e5o68$!"5O- AQxTEFQ'1ԓXJHSgIdyj 5FMfP3Y;5zKLBͧ< uj%ZMR FʋLyS[6j;^Dļ?Us 2+_vC&yvhϰþ~5eڑ#G1מژ'P!,W7s|h8Kߟ:nGB 05fm^)3U EƤǷK B@G [J#⢣e&{}d$`SlJϝt -%`](PH4+z5!RgK TEb0 hr8Yy?Ao}›qI&OF<"%(kux!_y =PO=h>B-nI ʱ<1$.=s{=ռ >7Xm! X>UQ8]?Jbg%FnBWMhwdJ t`q*3M}._Cݷ\&XugVNk f+h{Cg/49>?YԮ-jnېVK;{i*؞x,v{HfC 8IhOl< #jhʤX$᰸8uk;tеuiկ|{$ArUm0 {>ϯ==?e֮Vہ Ȗ>}9Do)$*Vm 3$P 3:Њ|MsռS>'s=,@4sz]{}E&2iT)KX:9Ct LoCWq:Xh(27Hrof*\;AuV4ZQ5(p{ l5ۥj+e P)`,kL"I>c '>dz] )*<$3~OV r.5rk&̜sn7h,"MTK kFYox?G&RX^?ll?z=]yc`AtL,:*j> >Ɠz{EbY8Z։wW| gJV6Y }_#roI@)ȲХߥorQ%>7} Tl̚kuqR&h[Cuk0=;PbIp;__Ct8L.OxvЍi>Z,n9/r4v@Z)df'yɼ׭ ^9M;ܚj^c%+r2U N%ǯiưU:)E)[ 0W;RH#4iƠF$zWA}7:CBM= b! FR& uX&UTBiirggy@}͛Vw&RCN>  б|(;)Q0ލw hPzu+Jj *"'緳+Q-E:y9Y !!u@s+t{!8M*vcU+cb?}AǣvMv!`A"tL+CDW4r + X|:ab^ <|P"b!ЉNc1!!,W[Nc~c-åU0DŽ=*VUw@{2 _r*#op^|cP[7đ/eG&?vcE0}pk=&H:Ia/ixcPU7H  8"ƽ[KPsor"ڬ0i,[`0*Nr-]a$n0FND^\Z҈+z*x;iB @#;[ȟ /EHWE~hAi^Id!ֶ|4">~ڈ= 9}aJzt׊&D h{ b"}xH7W-BN~uu'&*KNXq;ѷ{]i tɻo߇NWHa`"@.0K̵6g&UAȋ7mK̺|Dz5#?3)j.=^h1P|Yn:W\`l" ? 0xґq2yHz_s_>D͢]qK?c#TC;ҧH!Mdr1$،\lhV>4ʠ5!:K_R3&{"!f6c@ ܇-DJs X$`{]>W!4F6{D,/|YUH$%]Xj|&7^F&u*%h V#sPn-FoTTwa=A:IAoajSfrF -6(5 D,u`ⓒB"=m"la6v.PM2DChPz''8ы!'!O?v'p^b.N cEi5h%~rd.^(Uѩٙ*)1ԒXVIںF ԧ$'~w:nY| fK8,.ZJ5&8U]`K,FkBBÁٸ߉4 e_XV.~ixL^/fX]鐷KqR"LޯEWrM9hupg8I$" +ElߝBJ0W6n<tgpպ)Wd4r+^96mUw-&jAA;bk꺰y ~l X#p (Z Fg=YN>Bi)ϝ'H<␇S1cÿ|*|;?_)BB# ɘk# %7UkL*ӓB}cvQR2##;ZMb?yXy\AR!sU&+C-X.o<ł_ѨHP+INxc֢%vnrZkk' Ant0-Х^#24(;2[y& oݶ677tkv(2ĪrdFg$7*ڻ%K*mzKd|.؊/wa .AcSW`s.Fq1@)Jkke^6z,+r})Rds"/yLl䒩o$F#֦FF&Ԥۛ<o^ .Xd#p|n14@G9x-VTGI9$[QF-mA+N5 uN6u%6X >$d>RŻqysӹJ#)̖+=i\7Q.No5k){g封HX1Q^4B_f9݀adx+]u._b&R:\Zb6Gt*)|R̰U4ǛxQ7ГU]l6iHe$)C8/"gGVHns='~NЌֹ$2fl{a$ p=,d_U5K^VIkt@AN*Stb_ !桱dD7`e &INcD(Q 2,pkdyծCэv endstream endobj 266 0 obj [319.4 383.3 0 0 575 575 575 575 575 575 575 575 0 575 0 0 0 0 0 0 0 869.4 0 830.6 881.9 755.6 723.6 904.2 900 436.1 0 0 691.7 1091.7 900 863.9 786.1 0 862.5 638.9 800 884.7 0 0 869.4 0 0 0 0 0 0 0 0 559 638.9 511.1 638.9 527.1 0 0 638.9 319.4 0 0 319.4 0 638.9 575 638.9 0 473.6 453.6 447.2 0 606.9 830.6] endobj 267 0 obj <> stream xڝXiXg4JF0ڍh4+H @>"+J@i١ݸ&$'ˌ1FGDOw2sSP|u=ZXY12. y}yeyrbe7XK0(4zK/[f렡fӋmXd|Jxy:kO􄨈$'P7)3f4kӼАXE!I1!IMNB“ҝ\gF&%m~sI!1"fy8F%E:- O OH sMrZ4O\Eqa 4N;7 W1!VML전A)2e=`^fOƁɌe3gƅqewƓLf)̫4f:3f|_Əy,bc0K f%Ȭb& bd1'e,cиArGa+޺>p ^)?08h!\~)k6 l~ͳ[ow6eؤa=2#✤$:jpVI!*!h4ggmT9ҵ"CP6A^CJP[O>tY&{_4|Y.}|#9nz1π[*IX^y#$g:|dŝeup>MZ-xD)_쪒v|IOrYC *vџ"*5e|OfH,s8E臔0APԜV +>_pGngd \4eɱJ8'* }%!i`|4&D8z[TGӻ03,|Z}o͹D=4k[[뛎*Õ;͇v6qFdȈqZ].[ͦSe>e2p[ TXåwG7ܼjP@WRp&681Dɗ|˥%ݥAmQ2t}:Ȉk1~mB3؝#,}Ӿp;fGq 7XSZw24hC#ѺD[]dX s `|iQ H75J0l9]x-7e",, 9g24ONY0)N{کǦc8쀥2J\Ýp=a?VwO.>8M(H 1|Tm\kk݁K!ǐQdtRT gxXcc%b'ܫqx XrD=M+4 x,Ɉ!SUa< #IO,C9 KiVl2M2(1RA,i>|:a)D '3)Ei~|P.Ś YyD MSl,ӠRzc^m@=)=JϿR,i&iZ(=eWS%)~(MWVEO@< !!o@!ơU鷨2!t[ha^xQ}n5"s>$ 1Mp@e̚Q.8J.rt1+;QK>Fwf#n&( UEMAMZo0 l{@5n]LҼB,b)8]# dJќ< cYe L\H(Yd,W)2cK3AX9V ׸Ap["cH +skLtv> J g?ί<+'Vd7Pk׺EZd\;}[d9;ooZ4BJJz AzG']|)u@YY $r :]&Q'XZ;N@Uz>KjxIsX4`Rl-k2ޅԟ<I< Y0@Bx<]Ȫ'}0UTMvn8Z95z!ct]탽}^|v3ޯ#Snnÿ L$q%Pt"0 3C}V䢰mR5 WsO4ݖ|wL [훼)vcҵ2ҍq_ɛ/*+؋s|ކd8˔ b E{&a;[ф؈C8nx9Afpb'>Gd_e߰_׎ 8fwA4F5E~w!jTWtr?nO6V5#[YM ZA@dmIe:e/\v Х,еOP5^Myj$O⧈!)qZAJi@Nѻ5x#)`1mx2|qj瓽Ҡ@(3Y=CVV}Gmm @F#-d'Y(moU ':ckMdu54 QP'"1I3mvW`^kW[?9ؓ1Uh;U zϲʶȹ?;2^56%-\էܩP+q K3OЎ¸К#oP݆+7 }8ŭhPӥoX~CSjCCSu۩ JE/NZH:$dr 8E ~[B/x1;@ aiš1BUE+?τ%ɐ7w*m/l`otm4D*q :S#Ѳ5DϪ/"Ω=" BrN&_}z*~g\t.A>xG4LN%d#*,%hcu )A^#jс(iݨB7uL¡OMEB%UǽPf,-~m~2Um-1jC~i.KMN3:[h]6&$İ9U `La,[mnmش=l)̮z(,++?<ʥ%%kK8q/ {V9*z;I( endstream endobj 268 0 obj <> stream x]n0 '[ /0AR4.≮e.]Lnड़g,.)^~Js+QdKyO#WS\ ds9$}h49'.Kb[pcg,og%Zcu ԈqJHo7l҅'KbttN|˔Jbl1,ȇ1ĸǗ 4fj endstream endobj 269 0 obj [639.7 0 517.7 444.4 405.9 437.5 0 469.4 0 0 0 602.5 0 0 0 0 0 0 0 595.8 0 651.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 277.8 277.8 0 500 0 0 0 750 0 0 827.9 738.2 643.1 0 0 0 0 0 0 0 0 0 0 0 759.3 0 0 0 0 0 828.5 580.6 0 0 0 0 0 0 0 0 0 0 520.5 0 0 0 576.2 0 0 0 298.4 0 0 0 0 0 0 468.8 361.1 0 0 0 571.5 490.3 465] endobj 270 0 obj <> stream xڍWytSeڿ!%^u&[P6R"vPYDBi}MCm&Om4mJAPbR #}ΛzM;y̜39}{^@p8m~vc6mX5{=‰͙ˍݗ@]>S"Nu* <ܳ"MKG32s33ELaYE~QiP)KY^>~,5-miziL'N eʕ+,MK[X(,I8ST/RV-^\YYY\Z*}j”|q^6aP$f<[Z"NٜY,L4u#X(JT-xNCKPD $ݔmNN6Gc0p1AE&sy2b%XGl 6ۉ.b7xI$ 8MSL}Uiީg!2~_Șq晼oޥ1IQcœoscHGKROebԑ5So{W/2<=[v "&zд&D*J d J쩧TY@n)aDt~ʙ 'iȁr2)V6.Ap"q,> c>6}5 r]gYICGkf-Nz`{yaּjWN> ${:va^:)U_m뷿`lQ^`gBw^CKEͬSCC[?cd8Cu@HTRu@FZiWr/j 'slaGKͤ?c^>=Ћ)X (z89$*ANy-;(/X*<{/{a׆χ8'΢i.0v k? H5VA ~'ցM  1m2w v)κY^E &KIsr(KtN`ԩ_xbt~i-o:hrT4e04ZPwgfeԆ \8|LԕNt%Cc؞!zKl+[roYh!@baGC z΍hحY1U$˅y w@% g}5±!Bw4yA^9R&}UĬj2H5j{oβ!c.Ñ6+}Ǡ; U4f#S#^ e.! wO":oьOu 5jfm^v@Kɨ͆=iUuvW lBτbPusRčm_͇e\( <6a(I-j{B`H`lVVۏ4=~8 {[@Q Z {8;q0*ɤq:nm\P˜c~-vY q|&]5a=| ȡ¾] s9,VG}ڻt,Rar^ի&QUaA㧬۬dX}pncO$nser ޣ"62/wҍ d9-%%%%---ф6h?&:]P)*- wQ~ؽbikhX@%Ő:Ct'cX[O/8bqcl4oI`P̤ʣaA̺h_43>f?4kapSQ[[WOglg}[+箽~+@vURDMT֨R}v4V釐O zi<>U` ]ШӫIVz{B:kS߁8'?-6iW)WTFsQ)%(:AGxJ2ބ:NMsYT,rai5y4$OeˁL"<4)`dL7r?m]׺g{8p뭀97CZbcxHXi0t?hX:#]ą4W=]^Q'4 wa42|G^_2GJ$JڊGS`A1YhF+Lvvn[lw 4 )V9h:fKy4Tkb]&*I@Z ЙtbڈU_~.6BSY+6z%䝸ՇZTWgn;uM䥬`OQ><_Woq_8uY48{n3ʤmNP] {MV|)Z̦h§oWN9(y-M㗚+!p%xd5 g~ |] l'+D~C*Xʶh4c^iD/k+q亳\0D\AE.W(JqFqcoBމQ,zlG_lv`Q\J77xlQӸ_x8Z0b923Ձ3*򁔨]?WQRU89<>Cg_\ƖJTU>ikaԋvxK|x'q,[cEsؔMyN @nrW n;Uh8}|譁_|H]f͒mWoI`[e|a>Wl#x/6`d̮Tu,"p Mav|{7 {{eG c2hH*PUPOKlzl<~ƗF]v!tiՒm95tvB3x5_ϣߴb'lNFiT)q,UaȤCX@a黃"x+q%qzt{#Dt endstream endobj 271 0 obj [562.2 587.8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 306.7 408.9 408.9 0 766.7 306.7 357.8 306.7 0 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 511.1 306.7 0 0 0 0 0 0 743.3 703.9 715.6 755 678.3 652.8 773.6 743.3 385.6 525 768.9 0 896.7 743.3 766.7 678.3 0 729.4 562.2 715.6 743.3 743.3 998.9 0 0 0 0 0 0 0 0 0 511.1 460 460 511.1 460 306.7 460 511.1 306.7 0 460 255.6 817.8 562.2 511.1 511.1 460 421.7 408.9 332.2 536.7 460 664.4 463.9 485.6 0 511.1] endobj 272 0 obj <> stream xڵz xUvB ` %PEDE-"v}ofic~pU'狇3ǼLrX詅-Y9}n鋗/_6EO_<}Cxf\tRx&O)љy>'srr'e,LI}~9q7EgDgGGM%%9sIGm_8kMJRjVft )QΉ>9c-zަqWLLN$s(Dw_΃I?30G<™ <ƙ͙Ù˙yg>g!I"bS9prqYyy*gg=u N0g#gg3g g+gg;gg'g'f q,1y,Ż4vؾq]"vʉH;>C&L`pw =䑯LCVGluC3f;ggb˚z9fqq{nnM7y%@kp^C=1N/Tu r(@IKAWen}=4h,c ֦k]b49Ocsח/7~m}zhDsMU]WDH1R|JP⿂dim TEr;Oa݄|ٛ?rou=v ސSP &bu#(NC_UR9"[%{KHl5dҟN Fp ]w4)>.^A?)%YKeU+hT_狎LM6:2ɨ˨c?دmHzPZZB 5ްdQ*AM5ovqC%-bAR.Q%oL*h7{7κdu7K<]ނ|hxh{C_T?;H@񫎭s9ȧCRU7 :XR*9fRU|{>K~esCR3·.>%w.5UiVhʩodun1-b0"W!lX[=dPG|p}Mr7 ϕK' 6dՃ Vz석-4PNU*2w& 5W^c3FZp~`vҸ΁C2tAGp[%P@ŋRsTU?ykr{ oAOԴ\}K(AjMmr#;C@V+ku.1|TnU4z.$'DHP4F YU^ ZtܪV0'޶7qme`Kr@vd7\FRT{usKR],zoh zMC^{y "cGmf_"tAT2pCe]jρDx+?;Pl3UJK6zn~ь2F@OaGHvnH=KL==),\/xՂ5*q]P+ [o\ ~wGAؕ(J̬ijzh!1x.{|w<|ZCo65xZ[|̤3T 2vs2,D|'^1.'C&*(m`)R"Ϙ†B[olJF%bCI+x&笀XDMĥ? H|ާ.\ዽ\djO#3O"^X DI} ^Xct|]'ʀ0X.v!z噴Wcߡ,=~7txhPl7mrZGTd°+v#ga)~YF%9"H؁WI= ԲA Go1vO34[N0+@ҀgxE/࣍h3GYh`2`C '㠥svmz9|%P~ v jk d'딂vt27b:n=iDQ6UʀR_HNE:+M⪷Q)hUٹ/fj$ڼI|ĩOzTDW닼+ BMXlEBS !Ob (ЃRSnwg-'N'dV@1eyP}n޾ZcPNiELbV@ 匍_ R}֦Bu%:YRJXi4P#u'FJ噯gR3\hgcdx2Z}cvԐ7$fYf; TJFEFD$o`7O S꩑q?]=={7%l}^k)Sz F]6>"~&2\E{:^*]y2͋z\9gϝ>Wým'dUjʤ`b!C}wK_ $atnoJxSD s_" ^c$ T!4[ ϯ=y>詡.eт  T!ԬӵqQfL_&_ o:+["pnx_xLklim&g+.'WV~ʨ&*|O!<)fvPc)%,Z+nvxF9Di2( pgᯌDD)';aKg ?=;z:!=75Rz3 P9@"Q|Oz4\vΖCZYNS1ï q[~z ʱpQX%F֯Sh+LI7"d5 -kࢹѷxCl=_d#*OܙEQ I=r?^0T,߶h=- ~aW:Mx'䷴ps EE "s2QOIYnbQ7:y)-J~Z0,ܺ5)yg&`6 P ux+DϢ !{0P-*,ۭ)\jI-%2Z+ߜ$J*I@`5x'wGiWljZEo^@xC^jlFِC ysɿ lwoLhݪrB2ŶXjѪ9K^|q4ԚMN0SL-d*i h!z-!3Y FY(zѥ;o1ЬIkMHMr͉v1<zӭ;MkWӐWjŸʹP𰸓;$Ifk 70dϕd#J}W&SU ZKX̣w+U^0^+$u̫NjI@L&`p4G3j̰Z"‰TDY DGtJ>j:|mrʡ)!ѨHz!)A(JBX[?cmn5bxP!"#>7ޡLmDcFLALb/w8;M622:#UL'3 M_Sze9%`kƵ58QȈ֋F%FmC&"ca1נI6D}?=/h?UWqa(2CJgi3DqxTURuJ-nX{QFcWULL6FG`)P *cAc@zt*9.~,Qן7sgn2[h6jʽ=l+GM,jC.*`odnvK瞌8 'G8.p_J~ȧ2yIxUH]D<^:x{>HCVnQ!ڰb VoaM?9p}:4Xbzh(<3WZ {KJ9 Z-iXs^+hjY+h,Gs :DGC|v j2ь:0ڻwl1H~MFB]\4 cײTYNqmc`Xk!,x>AS>{YTBzM>P[8MÁ=gu֯+Dmoa'1XF7RG oԿFؑ kJ"Rw-ptz++5VSoG,Q65|>өd CMzV(Ih *.ȝ6x1'5)ϱf椤efz/}P: 3o඀h?B3ٰ{-9SkwvwsWՒkCJպ626…e55#"*3Õ8PpgܐBoM|=I!A/ΉפaPQ@5rAʎ3V je0?07e UD`O? 沺SŶ L5h%kAǘNo=ȴ؂]eB: zҽ635KeGȮR̓揬}RhlDiV[fSSkwL,kCq4[hͯ \y b㥃!%{)LVGl߲1d %3?NPM 66N"mNx>>Ά(X( k^S2 ={j5 J#/ՠ :Q1 >&cM dZt*O# +S%;Uod x# ߽͗^8|4WGv 尕EgFa3%ٙ)!o =ޅ|h*N}bAUWsrgHH%mTfɯl(ػOxb;=<nFqY"B^)λG+h0tgk S¥|Ə^Oy߫F)^f䋛H{omwɓh1уv3iNEy)^Bu$)I݇kcdۧl52w@@ͿhI$"?(SPHp=χjl'~ m )JhҖ1ݩ^R?-D#"jι='D4:2R.nGoC7yl2 R1w%H%:˖ԜL/L)\@5WgF_bdz-Ad6πʩl$==;!7s>m]-Me @}u= 8QdI-9@-?ek+;~0A=TxopxnvK[' 5ա;z̐`> stream x]Pj0 +t(I =@C[ m琿_v@OIzUsl ?ȩjͤ:eyڨV)Qzƫ9"Vos]|xbcL`>p ]/{'d[&me?NRNBv@&Q%CVE׫IL"vEhTE{Owj&M?Hrc&|TXm endstream endobj 274 0 obj [365.7] endobj 275 0 obj <> stream xcd`aa`dd swtrv 4 ضa5 YrL?=b$UD~@:`b`edd㭪+(M500300r/,L(QHT04Q020TpM-LNSM,HM,rr3SK*4l2JJ s4u3K2RSRSJsS>%E )Ey@1v&FF|?7-Q> stream xڝW T׶c `ƿboHR*Uga@ 2D@H$ 0@@DT꫾=^kV^[ϏNz]ozk%gs>{P66@ _b϶Ӽl 缨J@ FR!?#%+Y)dy/be#0l73fy)$Ƅ]]?;qHyLx,qL&&ep\ L3O) t s(r\R9E.ϴ.^=q*y.yLn&DM6JJDQj2DPSԧʝZ@yRʋZJ-Jj5ZKS&j3RFPʆ| h F ot|e6W$Eћ.F7nd'\Gݵ~O'5bt %(!=6Ě##cc"kbkj5qh7hǥ%<l떢E\l?!}l%dN/EA½CjOJ!;~>> o;yAhw]Nx()24"g leyg`vs?B,;,. ScN|W# { ?/RYAn%RrOfFs uYPw~ph|#h.r?=aB~'^Z5aN&~NZb<R=t7pQ̋2$=!J⟰[RE@o"F-CZ5١ڴ-*tt\6{'K =_[Jr3k,׌z E?y"IB9 h5W74A%0w뜀C u7. 1},ށpwi8u|ɣ*S[xC9ًA`vc$NɻC.B!0ߔ~[cauY )<*Ό/ү`a #J /ۗMї$so3JsYE@w mCVt̴Ă[L[O 6;r:g!;|p93I=sMCW T`R #[x(^WT|x3_$sm <_P* ,<>*8jAPJ)hQ< S ÐC$.5 8t= J9 7,0a MQ%؃_U"xa#|&NC!fo΄57t/Th SMA:~w$G t%5w8[+ 4'űOtp\DA^{4Pof-g Ј4 agXF]VA_ν_Oz}C /)#vov| D1ѦrK9ⱘ}F! /RFHR- *3YјWY#/$GȞD$U%C DGwh/@tjOT5YN쭓#L`rfY<'gd}+Ilh4B{p~$Ȱi4AB %UPMxl?c2~Oc$FyYtn?h2uSfiaթw.B;a{ep.x<Rd0 wb-tvH HydޗF <"\w뉚 7~jX!U}b}%RUG T8te Σh,f,]Gc~.!5Z6t'0D^elv<\^Sj+LU`'\dݼ3\w++Śaj UC+ٷ)Z:'݆ Sź>z8\P}{9_Ai-zy6~)61:u "#{Dh5NV.ז; ec2;8'y*&*:JkF.x> DP$G oo3:߄|!Pw( R&פ)߮oh='-uj0B"[Z+ʄ}/5=rHn%g.qD肣onk=]JO[)Z_<\$f}KR烨Q;_ΙځqLayi-&+o_Ks 8y#9rUa,\pnUVa}1?(,'`S4kҎs ch?o {be>,^}"f777_c|]2"mc$h(l,2)_d2՚aI[!bUmݪͽ(W~'ZHMjd)p%DDW5+e/T%d@v[YMΘ6> stream x]n0 } 6RIa$ƴ*io?AvHe;J3_v5ZYƫz ^wo94&š1̀Y|kPzf_mqt;B7f{E >*`q5G18! ž%9*L#6 >Po4 \ZXnI-qN+[f9rE(i̜:ʳӬߘ N0!.<3׺cj- ku5>ʌe j endstream endobj 279 0 obj [658.7 0 0 455.9 0 0 0 0 0 0 599.5 0 0 0 588.2 0 0 0 0 611.7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 285.5 0 0 0 0 0 770.7 0 0 0 756.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 592.2 0 0 0 306.7 0 0 0 0 0 463.7 0 0 0 0 0 0 0 478] endobj 280 0 obj <> stream x]ypw-bR.qH'C `C& [e˲e [~:Vn[dasJ a:!!J&Cd~r3%7}$rs $g-X_q K'^g1fٷlaNv/\ۍ) 73'웯NX%q}1$gF#Q4$5RF(H 2yi%֨:F`w<OFwK"# xA;:p!zz"H뽻C;mh^"qt6k\*}lmJ S'9XIೂklI67O6v@B3DmQk7+jnn2A/S+:b?G 6c2hݒ0Ũn}>.c H<ܟ"|~9,P I$K:+k* 0 7C}oP hd M\W ֱvK;LSCJ}á`V«2٢>ܞ$2;/[9PyC!cmmj +b  ,VXЊmt=ؑcPap{gr!^b\X_o[0`# 0.ĥ1txs}}ˀIv; o.쇥ZX6[F*xC QXgٲ$7*ع|aqh0#z.x{җy($"CdvK=\c/ 8jrW ޡbCzϓjc>Wh]Qec9Bg9Zh=b x}<%qǎ6~&^ܰ_~iuٸ.0D%\+Ÿp>ieh).UB_uoe"Xs 3)@aSь%8ǓH˜ ZmD>H@3p p㇅:yl^G#OV˨)g6; vpsڳ$a4%/xWʘx:M. tH `1S`3~_h@RP aCL#LU<3t>щ`n6ߨ0(\h0&hH[2t'T|ɍucf쵳<?l,;~hgWǍB;tQy:p:1 ^4ahխ58'*Vͩg -TЂZcSuwR@Rj'):4du\@s0ɞ『v kTe7TKɪNQ GF:309&GbA*s勑MGc\.0aچ*9hA7ܽPaQ~סgIӧrצ;ښ=, O9){iӸoYA"27^klV2ʐhvoNgׄaJYIjZd@4wigyyY endstream endobj 281 0 obj [603.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 419.8 419.8 0 0 0 367.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 734.6 0 696.3 0 794.1 0 395.7 0 0 0 0 0 787 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 524.7 472.2 472.2 524.7 472.2 314.8 472.2 524.7 314.8 0 0 262.3 839.5 577.2 524.7 524.7 472.2 432.9 419.8 341.1 550.9 0 682.1 473.8] endobj 282 0 obj <> stream xWiP[W,"?;gS,wl=}'8N1^qeE,!@ -  @@q/vN8'݉3cT&W̥f ՝TwUV|9; b0omڳqKȨk?`ӜQc9L)~?+Ŗ 2`}2p2fyr<)FI /ED%.IXr͚/&-a(%$ ] )I% rs^ H$a|aNXK_ Bw&$C7dfn BDZ,qn(4*31IAP>>Ẍfi&Ƙa,`,b,a,cD0&֑{MFcyb;cc'c#xAO!1=.obAlTzZA]>gqs!A!LaO~]!{]^?2kѕ2FR2^[ Ci:P6 xv"FvA HpїؑcK*@ E TR**H Zބ掠\$a=`(B}򎁧:&RZ^!wRW4-u8^4\Udw *\(QC%q2ۨ2v<^X56zggfvIod{Z[$یFP&]S _Åx%`&l+lrU e,l t2n^jf%'+-ণ h0pXWVnJLQE5#5 l`4; ]-ѕ-L7~!/GL+aJ.xeoj LAwQH˟RZ5^V|UMJC<ףzwb|>PFV:س?—N} D: @UeƟ YC h'pi:4/ZMn!C pR~<`Rƅx ]d렁t eCj#./:]#N/އѭ{,_vL:]c$%;Х8\}k'RjEhxyWn*iw@˼!tRQ7d8+^om[-[*IKLK/@:d[fS QBGTX}Cls}GTQoKuH5b{ZtuAW8v^*jg-7G8Z+qꔽWZ]v4v S2Zvg}Ӆ*'GS|W˚ihfmHۻ?&C/Lв&i*MMJIFRA7L-myb?ipU:ORkAP>w#nHJNK/:_sDZz=G|-jΚޔN:$ظ}|D rOatEc46`6YLd6yJS|GmE n1^28 } XOOhE1VULC>ajklӨ'* po[ihAS4)ZуByТhxr-qBaj\ZB@7lldE5r\үIM8q˂ Gp_pU2;pY!5IeK =߷pT USTQKU^rYFG{ 7ڿ.o0;yQPTxj-1^?tնUw~2$FOEr LD%*/ 74 V\73 @ޗB[]昋*z}؅9\V,/+OԮ$-Y)Eiہڪ=[Ep-dgUR:/=4Lr z{[;xFeӈT!6#CU"8&1xVn z|or9Pmϕna2VYNvG=$5>u]]ǀ @W> stream xڕW PTW~~ODF̘pG:&(6b݀-& }E@iQDP EDhPKk\R_0fjI_u^};9~)q8-~b!q'E;b{{bLY4 Ort6q|ePDm~*;-̘TGvse!۷(Vd>*`ܲ]wSfN6'p$eȶ9¶vBBe[**>2'*Y VY8QDϣQK*jQ~t DXQ!GPj15MSIdj 5 5GZH<,VR_P)Wj-%NMYREz}b3I乥ewE}IKXvwx}XYsbغy6Eh 5uY裝S"Fo8x{E~yg<<'F):X8[ge7F WXW0'myx:8WӝR "XSb\CG.K,4(Cv 4 ~ʙ28 tWɥG1mcj7/H\7]gɺtEƃT# YهOғ~`+ -GHac] XPړH#}'C# oPi?HkO+ k/iSajwٻSΏŷ4XYPTCN]ݹ<`X PiV&kFA.8Z#]< =~CMAWyiC,X$[bDԇ5bNj8OPQՐ+q Zh顃'*/-͆0a*oӕfjBUf4vp"vrНjb;境/\tAY.n y솯r(JN=#AaΪE_RӸԤV mb^b_u,`s!5 5H(*rG\mofJX=ZW312`bb_B-Tx r^)%~@1̿>n ae9a'U k[Ut`@F6D{~%uTWa}z_bRk` "q08YOad8g~\zW 7n$]?;gua\Mܓ.{.@WHEōgaX^4Ox f,4tЍEfL00@$:mKBA[[ɨ<&96_dƳAQ'Dݗmm} X%..G.6K #Q͒y 4FN lwDʈ _$aX. bcI!8x#xl1?†`ۅ%}~qc<¡R4xrD'-tK~O/}H(^ IQ8TH `k` BZ(Ԕ`F&t<!Ѣ})<:b1h} b <KfmIz1*6Mܲ썧z1B1 K%d[>ұ~-^KJoڔ1?Gaj_zlv`g%pc"!.})i6[Ez'5cJX!IEr~a8O4 ..E!*a&?IGfgw.Qx\ZG;FL ɳYՂ@1(LIK.'o׋ClgƙPHDC ^:49:_Xa4P;w,ܼuV/V/PLZ rvp 3M\ZfP_8&޲nSu#_] ddUO+NL"Z#8$İAa&ca^ťE0Kp?<=FT#AM4iVt슩ug:7[DWtkq Aqd,0Cӣk4&LWGYx<8\ VgҐÒ@}!ЩcR&$Qv.wfH~xFZL3'xݙW ,#2pL_eupG@0olm^|5XY# nJ:+W*PcuaJN\NKpwG͐y{-M2Do/^<J(:_"#5={Ԡ%+{bJd"Ë](⤫1'܎E`XP܉>5|PUptyCFаؓ_ Ш''A@Be+ 3Tuo"m#NhG+%h8Cx> stream x]Pn07*Q)*MUȐl˘/6(C;{z**%DVtR ,Gh$nB3$/|!lc_ۭ)VD3UQϣáR4%"8:;(t/~wT=ny6dTbeA.Y-q-p4eGqiYfw+/ 鐑tY4^G}&哵 /3xV? o endstream endobj 286 0 obj [531.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 288.2] endobj 287 0 obj <> stream xcd`aa`ddptv aYs>Yr?~(0g{IEH2?@:Hx##xKԼҜԒTc=#ʢdMCKKs#KԢ<Ē 'G!8?93RA&J_\/1X/(NSG<$C!(8,5E-?D/17U=0霟[PZZZt%jg``fddqc߯dtɓK...F|߷lYp>0RT5 咻2k qhn9cnsowow_Is8_[n:4> stream xcd`aa`dd q v 2ɰC Yr?Yd G TB ,%zFE% ɚ : F Eɉy %%@NBp~rfjIMFII~yy^bn^~QByfIBPjqjQYj[~^_bnz 9?$H7?%($FCYt޽M3~_+ۻsO/{Vw\B ۡ݇>ģ)]{y?g}ϟ:yi웸qso|&"zr endstream endobj 290 0 obj [795.8] endobj 291 0 obj <> stream xcd`aa`ddt sv gi2?d~1g{I |" Hu +QZi``g``_PYQ`hii`d``ZXX('gT*hdX뗗%i(gd(((%*&s JKR|SRbt:Oe֏|Zi>wܢNI]]U Lx~ ͨi/)ܽ{V$}ۂ߶515u]=uvoqiͬ뮖ұ?]+[[9~qwYp:mlqý&~Ee endstream endobj 292 0 obj [272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 812.6 568.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 461.2] endobj 293 0 obj <> stream x-oLud琬^,qS_,-$ơ쏺NPZKWhsWJ׻ki Gc4e&e|1_-{e4{G|ILIeOK MMlNhme+R>OIAhb8D̎>޷/b0$jx:^HQX]*fcN9YOWi{Շ=W{ 0GN8^w}M競;]׏V1.yc=l˜;Yf7{nip9^4:XO/AW>=DQOO0-:]5^ | FXņ{i$($ `8FgX2*ۺ[%䵭K}e욜[ψU"ダΛ@$ϥaހqN{EԆ:;ZSc!a BM4;2G(.+pŸO;ߚ`qy N$ zR`F BdfwkiruIYHb!~'npH=FCR}ώ_(υCL䫭fHbv۵ʍD"EOS!̇{Gr~aGd!A/0Q ZDªS TYX2r;XjFsRpB:MHڋiV1C◴qnPP)sPft*:ūB R +K7uRZ?sۏbvo؏?ƿNckqk ߏbE(° 6Ӈj )KhM?V`yPD-<+ DSוv5p] o< + vZ*5[JYJEb齽Ŕł7X endstream endobj 294 0 obj [875 875 0 0 0 0 0 0 0 0 0 0 0 0 0 0 875 875 875 875] endobj 295 0 obj <> stream x}PKLQGK;֊`RAHHʀX0FӀ.?0qâ2 -@(RΛE 1$0F&M\?1a1&oʫ>w޹'7{V u*iE4sfJEtH9RJ*P"`? Gd$L2ʏ:5Wo>0<ߢ}+r3'pEfdYiC[ URFUlTMۨ+^s8}ɷ3^'/mq3|*LVrmʩo0 `\T=N/Cm_Yg8'/C*@$  m5$V@'5fNsD*k| Nߥ760IN ) 0q>Xp.ijjk{qtiŁLCrQ̿3 PBMUaǵqA,1 0bV< lϗF& SP.}Z1` rE%!Gy:4:l&Tfg1F."JzZZ=ǰ ~S/{m(,.y{'s#iu_;dҩCZ;Yl endstream endobj 4 0 obj <> endobj 296 0 obj <> endobj 5 0 obj <> endobj 297 0 obj <> endobj 6 0 obj <> endobj 298 0 obj <> endobj 7 0 obj <> endobj 299 0 obj <> endobj 8 0 obj <> endobj 300 0 obj <> endobj 12 0 obj <> endobj 301 0 obj <> endobj 16 0 obj <> endobj 302 0 obj <> endobj 17 0 obj <> endobj 303 0 obj <> endobj 18 0 obj <> endobj 304 0 obj <> endobj 25 0 obj <> endobj 305 0 obj <> endobj 35 0 obj <> endobj 306 0 obj <> endobj 42 0 obj <> endobj 307 0 obj <> endobj 43 0 obj <> endobj 308 0 obj <> endobj 44 0 obj <> endobj 309 0 obj <> endobj 51 0 obj <> endobj 310 0 obj <> endobj 52 0 obj <> endobj 311 0 obj <> endobj 53 0 obj <> endobj 312 0 obj <> endobj 60 0 obj <> endobj 313 0 obj <> endobj 64 0 obj <> endobj 314 0 obj <> endobj 95 0 obj <> endobj 315 0 obj <> endobj xref 0 316 0000000000 65535 f 0000450625 00000 n 0000450491 00000 n 0000445661 00000 n 0000522847 00000 n 0000523164 00000 n 0000523481 00000 n 0000523789 00000 n 0000524115 00000 n 0000000015 00000 n 0000000522 00000 n 0000445739 00000 n 0000524424 00000 n 0000000637 00000 n 0000001496 00000 n 0000445894 00000 n 0000524753 00000 n 0000525070 00000 n 0000525388 00000 n 0000001594 00000 n 0000002890 00000 n 0000445974 00000 n 0000003010 00000 n 0000003168 00000 n 0000446130 00000 n 0000525724 00000 n 0000003247 00000 n 0000004963 00000 n 0000446210 00000 n 0000005071 00000 n 0000005435 00000 n 0000446366 00000 n 0000005524 00000 n 0000008531 00000 n 0000446446 00000 n 0000526042 00000 n 0000008650 00000 n 0000011854 00000 n 0000446526 00000 n 0000011994 00000 n 0000014284 00000 n 0000446783 00000 n 0000526369 00000 n 0000526677 00000 n 0000527011 00000 n 0000014425 00000 n 0000017135 00000 n 0000446863 00000 n 0000017299 00000 n 0000020421 00000 n 0000447019 00000 n 0000527327 00000 n 0000527635 00000 n 0000527963 00000 n 0000020552 00000 n 0000023307 00000 n 0000447099 00000 n 0000023502 00000 n 0000026393 00000 n 0000447179 00000 n 0000528270 00000 n 0000026566 00000 n 0000029156 00000 n 0000447342 00000 n 0000528585 00000 n 0000029327 00000 n 0000031391 00000 n 0000447422 00000 n 0000031542 00000 n 0000033879 00000 n 0000447578 00000 n 0000034052 00000 n 0000035806 00000 n 0000447658 00000 n 0000035948 00000 n 0000037725 00000 n 0000447738 00000 n 0000037876 00000 n 0000039626 00000 n 0000447996 00000 n 0000039776 00000 n 0000042408 00000 n 0000448076 00000 n 0000042581 00000 n 0000045186 00000 n 0000448232 00000 n 0000045327 00000 n 0000047108 00000 n 0000448312 00000 n 0000047259 00000 n 0000048117 00000 n 0000448468 00000 n 0000048215 00000 n 0000049424 00000 n 0000448548 00000 n 0000528903 00000 n 0000049531 00000 n 0000050976 00000 n 0000448704 00000 n 0000051138 00000 n 0000052352 00000 n 0000448785 00000 n 0000052517 00000 n 0000054037 00000 n 0000448868 00000 n 0000054178 00000 n 0000055722 00000 n 0000449130 00000 n 0000055885 00000 n 0000057070 00000 n 0000449213 00000 n 0000057235 00000 n 0000058520 00000 n 0000449374 00000 n 0000058672 00000 n 0000060415 00000 n 0000449457 00000 n 0000060590 00000 n 0000062935 00000 n 0000449540 00000 n 0000063056 00000 n 0000063546 00000 n 0000449709 00000 n 0000063648 00000 n 0000063802 00000 n 0000449792 00000 n 0000445639 00000 n 0000063883 00000 n 0000077512 00000 n 0000077549 00000 n 0000077583 00000 n 0000077626 00000 n 0000077659 00000 n 0000100233 00000 n 0000100456 00000 n 0000100796 00000 n 0000101218 00000 n 0000107827 00000 n 0000108024 00000 n 0000108210 00000 n 0000120210 00000 n 0000120438 00000 n 0000120737 00000 n 0000121110 00000 n 0000156662 00000 n 0000156870 00000 n 0000157195 00000 n 0000157723 00000 n 0000157793 00000 n 0000166987 00000 n 0000167122 00000 n 0000449953 00000 n 0000445617 00000 n 0000167208 00000 n 0000180837 00000 n 0000180874 00000 n 0000180908 00000 n 0000180951 00000 n 0000180984 00000 n 0000209603 00000 n 0000209823 00000 n 0000210170 00000 n 0000210592 00000 n 0000226208 00000 n 0000226436 00000 n 0000226763 00000 n 0000227152 00000 n 0000231776 00000 n 0000231973 00000 n 0000232132 00000 n 0000250174 00000 n 0000250402 00000 n 0000250727 00000 n 0000251119 00000 n 0000251189 00000 n 0000258620 00000 n 0000258755 00000 n 0000450036 00000 n 0000445595 00000 n 0000258841 00000 n 0000272470 00000 n 0000272507 00000 n 0000272541 00000 n 0000272584 00000 n 0000272617 00000 n 0000306119 00000 n 0000306339 00000 n 0000306662 00000 n 0000307114 00000 n 0000325190 00000 n 0000325418 00000 n 0000325754 00000 n 0000326159 00000 n 0000332242 00000 n 0000332439 00000 n 0000332618 00000 n 0000350832 00000 n 0000351060 00000 n 0000351379 00000 n 0000351771 00000 n 0000351841 00000 n 0000359021 00000 n 0000359156 00000 n 0000450119 00000 n 0000445573 00000 n 0000359242 00000 n 0000372871 00000 n 0000372908 00000 n 0000372942 00000 n 0000372985 00000 n 0000373018 00000 n 0000402047 00000 n 0000402267 00000 n 0000402625 00000 n 0000403061 00000 n 0000406845 00000 n 0000407041 00000 n 0000407187 00000 n 0000415563 00000 n 0000415791 00000 n 0000416021 00000 n 0000416191 00000 n 0000439611 00000 n 0000439834 00000 n 0000440170 00000 n 0000440598 00000 n 0000440668 00000 n 0000445352 00000 n 0000445487 00000 n 0000450383 00000 n 0000446689 00000 n 0000445819 00000 n 0000446054 00000 n 0000446290 00000 n 0000446606 00000 n 0000447901 00000 n 0000446943 00000 n 0000447259 00000 n 0000447502 00000 n 0000447818 00000 n 0000449036 00000 n 0000448156 00000 n 0000448392 00000 n 0000448628 00000 n 0000448951 00000 n 0000450288 00000 n 0000449296 00000 n 0000449623 00000 n 0000449875 00000 n 0000450202 00000 n 0000450672 00000 n 0000451056 00000 n 0000456647 00000 n 0000456820 00000 n 0000459177 00000 n 0000459394 00000 n 0000461965 00000 n 0000462373 00000 n 0000462941 00000 n 0000471560 00000 n 0000471885 00000 n 0000478060 00000 n 0000478379 00000 n 0000478443 00000 n 0000479125 00000 n 0000479464 00000 n 0000485477 00000 n 0000485801 00000 n 0000490458 00000 n 0000490885 00000 n 0000491230 00000 n 0000495326 00000 n 0000495815 00000 n 0000503737 00000 n 0000504040 00000 n 0000504065 00000 n 0000504495 00000 n 0000504773 00000 n 0000508297 00000 n 0000508661 00000 n 0000508950 00000 n 0000511024 00000 n 0000511377 00000 n 0000515077 00000 n 0000515356 00000 n 0000518859 00000 n 0000519172 00000 n 0000519269 00000 n 0000519794 00000 n 0000519819 00000 n 0000520247 00000 n 0000520272 00000 n 0000520792 00000 n 0000520939 00000 n 0000521990 00000 n 0000522061 00000 n 0000522978 00000 n 0000523295 00000 n 0000523611 00000 n 0000523936 00000 n 0000524246 00000 n 0000524572 00000 n 0000524885 00000 n 0000525202 00000 n 0000525538 00000 n 0000525856 00000 n 0000526190 00000 n 0000526499 00000 n 0000526826 00000 n 0000527142 00000 n 0000527457 00000 n 0000527783 00000 n 0000528092 00000 n 0000528400 00000 n 0000528717 00000 n 0000529034 00000 n trailer <<051d9570f3f76ebf301c136c6ab7a951>]/Size 316>> startxref 529208 %%EOF sofa/20150209/c/doc/sofa_ts_c.pdf0000644000113000011300000055062412507252060015311 0ustar bellsbells%PDF-1.4 % 9 0 obj <>/Rect[235.772 169.184 361.771 179.184]>> endobj 10 0 obj <> stream xmS0 :ڇ7إ \v. Ц!3MbR2'=Yg0i|QP¾lQeCuZy e T шC=uPdމw)wׁ3QZZ2eQQj)wS=(])g H{Vnfff\ | *xe+g  =87 vBS ˙a]A,KB8Хhaˊ5I qGY|bx:µ*XJz+ɱRhUr~"dC劤h>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 14 0 obj <> stream xڵUMs0+|Cg|LJ;iiItAqD#HA[ʯgK:I^$u3ATiPuxG߸(0)tDK/=7},oIQgEb22X -~L3k0 ز}㮵I:Gᒷކ +B99s()P,VE(-j+,rQa `t/Q˵şr+l!5>g zD' +nt^qv9q'kɊ sSPwrW0gқ/6Tmǐ}?L_nʵP/5YG9y3Ûji;&dCt)=Z7Aawp#`T'sh4gL@w'֡B?wir_lʬ ר&d́An.~&ޞAeyDiyj; Pb?u6sqrI@ct}Qd}K8Liý~,ƑB)d[vnhA`UV'6AFAؕ\j lk;5y0Z=7sh^Z-xj" &]nVz1:lK\g;*ۇm>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 19 0 obj <>/Rect[72 683.438 161.183 691.013]>> endobj 20 0 obj <>/Rect[88.364 669.888 173.182 677.464]>> endobj 21 0 obj <>/Rect[88.364 654.218 167.485 663.915]>> endobj 22 0 obj <>/Rect[88.364 642.79 276.728 650.366]>> endobj 23 0 obj <>/Rect[88.364 629.241 200.122 636.817]>> endobj 24 0 obj <>/Rect[88.364 613.57 262.91 623.267]>> endobj 25 0 obj <>/Rect[88.364 602.142 180.212 609.718]>> endobj 26 0 obj <>/Rect[72 577.684 178.775 585.26]>> endobj 27 0 obj <>/Rect[88.364 562.014 205.697 571.711]>> endobj 28 0 obj <>/Rect[88.364 548.464 225.819 558.04]>> endobj 29 0 obj <>/Rect[88.364 537.036 166.94 544.612]>> endobj 30 0 obj <>/Rect[88.364 521.366 246.667 531.063]>> endobj 31 0 obj <>/Rect[72 499.029 151.768 506.605]>> endobj 32 0 obj <>/Rect[88.364 483.359 204.455 492.934]>> endobj 33 0 obj <>/Rect[88.364 469.809 254.455 479.506]>> endobj 34 0 obj <>/Rect[88.364 458.381 238.364 465.957]>> endobj 35 0 obj <>/Rect[88.364 444.832 199.818 452.287]>> endobj 36 0 obj <>/Rect[88.364 431.283 244.394 438.859]>> endobj 37 0 obj <>/Rect[113.455 415.613 211.061 425.31]>> endobj 38 0 obj <>/Rect[113.455 404.185 185.788 411.76]>> endobj 39 0 obj <>/Rect[88.364 388.514 373.501 398.211]>> endobj 40 0 obj <>/Rect[113.455 374.965 354.516 384.662]>> endobj 41 0 obj <>/Rect[113.455 363.537 164.121 370.992]>> endobj 42 0 obj <>/Rect[113.455 347.867 335.379 357.564]>> endobj 43 0 obj <>/Rect[113.455 336.439 221.016 344.014]>> endobj 44 0 obj <>/Rect[113.455 322.889 172.303 330.344]>> endobj 45 0 obj <>/Rect[72 298.431 339.458 306.007]>> endobj 46 0 obj <>/Rect[88.364 284.882 172.909 292.458]>> endobj 47 0 obj <>/Rect[88.364 269.211 263.97 278.908]>> endobj 48 0 obj <>/Rect[88.364 255.662 256.031 265.359]>> endobj 49 0 obj <>/Rect[113.455 244.234 229.334 251.689]>> endobj 50 0 obj <>/Rect[113.455 230.685 224.485 238.14]>> endobj 51 0 obj <>/Rect[113.455 217.136 221.152 224.59]>> endobj 52 0 obj <>/Rect[113.455 203.587 223.576 211.041]>> endobj 53 0 obj <>/Rect[88.364 187.916 398.91 197.613]>> endobj 54 0 obj <>/Rect[88.364 176.488 196.667 184.064]>> endobj 55 0 obj <>/Rect[72 149.909 175.007 159.606]>> endobj 56 0 obj <> stream xKs6:R3JH7?bO2SFcN$R!)''ЩȚDL/v ̾,,E4a cfv~f0,fV@ x~.޾_o{{ʲ_y+l $Sjaqњ3Rk|R`<]q08_0D.7eU4%JI $(t0V@LE9J -R PC~F5 ' !Āj#HS|+c]t!:'p@D)$$;޼CGgǮ_J=DMQd\1aqJ Bb#0ɫ/vWK>f8$=.wQfN5(%ifT3ӞӖZ; ?"&MH!P_wz5id?A E 56?6,d1d@'bV@P\BlCچa=$̠PLͪc>>)X岝==$O5 XC3iE l0Q5fLF6}huOK1m7ʾވ(PS&ESIGz ~7|:s4L$m-F 6,/ttp0@O{!Xr.zb]Ue7;%L"$L\\G )zTUH# B"%D ;i?i,ID5[֚(uʈJ;]STm%/}^Wfdd{֨~ekxNw:sdmOj* ۆ\}o u~;7wфJC Q(*ni_]Di/B*򀾻7ֱoQ®`Sm@mʞĮUd&5O~9-3L_;ɭw:駄"ErsrO>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 59 0 obj <> stream xS(T0T0BCs#s3K= K\}7C=KK4#= 3]cK=CHJFRNb^FAbzflkB  endstream endobj 60 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 63 0 obj <>/Rect[284.246 404.726 298.185 411.756]>> endobj 64 0 obj <>/Rect[320.967 404.726 334.906 411.756]>> endobj 65 0 obj <>/Rect[171.796 391.177 177.251 398.207]>> endobj 66 0 obj <> stream xڵXYs6~#413}8cOgCy  w d$[nNf"`ǷK{{ %q槙:xgA歷^>"/Zzoěy%ж7?qI;[t8; ELSPYB*(t蛝]C6<"(OiRCF=Ap+b3 y>B&aa vC^:1e *^P )u2xEZ)b3jJםn-7X?Vf;bߔE?7HB!@!}ƀ`) =os3r%"2V ]"Mƶ =Kt$iA! Ud5jK۾Tx KޝŐ Vo5bˋXMH%2T.1za҂Ϗox\"0R.ѨOOz/mÈ%3% ?3W(@Z3 /R)}@:\n2E-M{wY}/C̍5ЈAIM.zw'^ p(rkA ?3!㺖K&;ehfM5:m]IM"j@X="ΝLȧ:E8ylL1bʥ0M^Mo;K"0glaLhG>$.W۫'}Jm5M7ó8,m_:Y ';/)%Yx]`i*m6dM 18m<ȁz趦aO0*(,'0۶g#YH_{>.jJ&w7FfXr"0l])y(苤&It xgSWg<9fNgY'A$\sKQ! h'%uݹ(]N s0~[@`w/q;lɓFlT ۟ G|40P^ x5~*%X]P'ܹ@qm;^xGCE/j\Sz$y-Ok#Fjk,\̇ˋˋy endstream endobj 67 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 69 0 obj <>/Rect[430.152 245.93 435.607 252.96]>> endobj 70 0 obj <> stream xڝXr8WrHSC- srIHBx~ MENF~x|usRI/3lyu9, s5XgW\}„lB~0`ƙd9 -Ȓ$²`Kp#5dcn#NFHY2*X=uk!6>?"P O"Vclv55*Gn4-<؋ pֵd-%06)<$ZAԢƜ$y0Z5fO#%j B"ÇUimd0RdEPG&T'A,67 <n3$ge#"24GSNn+= 6]#j•uZ"Rв\ÍB%B)Y;堝PȈ*{ ^DPLR ;[% n]הy`(j5'䋢%m~CHDzY0)͙ ]٦복YB͊?}1GLIhtF''2rBOy?hTm=U`!60;(FO1zќ,5`?3~WmU\2hHA20yXLkYѨ3f+]a'_o.%V.=_@/aLGWd 6-)5k rvw/[Y endstream endobj 71 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 73 0 obj <> stream xڵUn8}߯ &)ڲS'ASŢ7\XRJQ);H-.Z03 G;x8ƣ1Z2A%+8cCL#dðG !Y7jYU5uk=p817xX "=$$ZBLҖn_KhbYf(TȔezg^bAYa[+|ɫܫE9 3epNt|avYшbVQhN&)b3ζ!tas{ 8_gtpy9];_Ce% ,6,m*-rŭ}BQ5| oMtWlh TZEe2/`ש/|(r3!PXbll|̄zs^{R}& &f]`6_,үaԋ\EVtp*mf倐/Ou_7!4tPgž̇\&\,챶.NZ]jKRs.#WKHҳT# JRe0a=\-x󓬧d=֋;tmԅR2$t'p5zyoFPU޽ߋJv ~ŅM endstream endobj 74 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 78 0 obj <> stream xڅY0JW4!"-ahgHoTȥ7X`qoE^^iyH( {XY)o['߶A) !BZGa|ZÝ_sj-!-+( T, bfʼn[KgK6e bfD(%F_V*9rJG҉i8b¤`LF~kt_ř<ꎯ5NoMYWx㛉2hXȻC0G'V:=V7ە Wd Ɂ@]ZYo .$z0Hu`88Z6wL[l?MFwW"+b=@fppxeo!r As]#ҷU u# ` ɔzt fa9 ȝ:P.Om?:tp@hj!Pʆ ƣJ'Ƹ^8]=8*~5k5i6h]&%pmeߡKvNbҗBK!h-[zgʾ0qb?6 qm=cM6h1N<#( $2dлwb*!@f5Tp_wW#(apzjB,[sVNpD cOwtiNJgKh`#I( *H@aTME+LRV@z6Ɂh8|H$ MPֺiN 9I=Dj ZߨGv]Cum,@JtB̍e )ȠH5,u@8.|wn,Q+Жej0$atYB hSPRD?6疛 c7H#!jB|}+覔`$wMBxeԸI$b^11qįR#He͓+,@okㄏ<ϧlMB$e<ʂNDL]tFQMTYpTNPeʧȥ#+SjMϸ 0aNǁw;~ z`/~ ; K zYWްݺMگ ?JbU;DzМoJWD`c]G*$mlz@>G$^(ͻAhʠBl= @QWv26u[s/x00ĶC&P0 b 0g=bLZ ,g/Q\\2*{aGuoAzz^W(7(ʯ[M]=fRh *6+`7:aUx25|B t)ܝ0od~)H`~>ċY lf; 6&p"aɦcwBgں_nO-\aFV ʩmՎ[ti5cFJ-|pZ;_ mo#>"/6v{ٷ ^^ \kJSyt!?őF+Æjd;N$TeAL |b\S oqVQ@$6L36xEP #xlX]l 3Vƨ-L`.,08\35Ji!V FaFPD)i ~mOߔpYE]w9lqs̡tA"AE䉧"#s ee)h4H~HmZ*DPJy_T,KsxUr^޻宧/ 3j/GսW/{ QD c7?2` fށΏX2=Io3 󢸁 SꇸzK_~^}k"j:w2:/zz *÷^ԉQw󙵵:7^yunʹ/|y50cEݔٿ~~6 endstream endobj 79 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 81 0 obj <>/Rect[98.364 203.169 102.598 208.306]>> endobj 84 0 obj <>/Rect[134.938 77.845 146.713 83.624]>> endobj 85 0 obj <>/Rect[222.416 66.886 241.359 72.665]>> endobj 86 0 obj <> stream xڝَF}0 f z@O<‘Z7"x[WԌ^,}TUW] 2di"ջ<Б*"ڤJShTZ(*:p[n`QD HMuUQ詫aZ'& oCxfw{ۼ%Hut‡ȼ>V_yphǮ+c:ų_!c$DANXHgNm7xhSѧmjo^[X |yeTD%B5F2VEKOg:T^ɜOL(mupL\,kiv >G9sspl8Ɓp;EQֈ-Vʩ s zf¡m/$ ˣkV&]WnPoHreaLAzL5O98UE&ؖ>Q\d&kUGYQ<5Mua#i'}K:XXfefA:*_hFE+ "MwQ9h}Jtov,~J"HJ\:UbW6}Ug^PVGME X p@<,-!^v\_'p('u' 1yDqqHvd8:l;6{^^} ppmСSA GCp$r= yG۽+{`L 1Au{(w58UaDk ^c#n?=C(޺ ȰEUI!<֔`Aq:u-Z`K[g̡C)Rt}ؓ]!PԻBJ)V467Tlp;n~E }-Dw܄N1 K( vH1 DB'u垬XFaLj/)5B6M=ܻikGakGY҂rGLed{nPCȮm"[ qʑ5J?*kW6t:dt|9,_RY9tB AYd$&169;<[T[95;/{dTK@\,&K}!cƺNl1c ~ ؁<1Aŕ0Jb6Z0Ѫ [^ߣ =%0-q`P%v% 4t+:n< y(^`yd:Dzy/بq:R9\]'ɂ{ZD,nk\ai؂&閝{W K<̼ K ~Q|?gNo΢ t6O/~0gii{`PM2{E0ja6,k|D2,ZL;EBX|vѕiB,'XM44v ޡU"= Yklf:H-tF8GQaIF*Nkc; ʦy5Of(qɄQ"& j *INf(_J7F/%[^u--l -k*Lf0-Cѓ`*-9- [;>ԓ00!r<@̈B*HlQis$F"RtUS 6_ҢVI|X5s 戕) MA/k?B0 - J 秲JAGŢ U:ky=Uۦ$t`'E C͹fֵk6욐O޸M)'6(^髿π,~@| %Jxf,<Oym 4yFTM^xکn\/pj`@%l܉ HA!6 ӹ~ૢ{znnÏIIl!` _+zPb[baϰ0#skDMpwJf7Zʛo~ SA RAN$U*e޵PS7S!a0ck$|WG^0f,.'e҆_Y!nǎÉVE;W_$f({cQJ7բӂjuZ__p4r endstream endobj 87 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 89 0 obj <> stream xڵnF_AC%)ȃ'mE~D"qU;Re@Źgm}¯bϊę%V~[^rM8^(ߚv4_l} Tk߼}~2}9/&3ߞ H9IB+[T*IѹiV:\5B>$A;CEB'OEv+!T>黼[ٔEvE]' I#["5] ajF6 `D7E4( Cr!oi4c_'Jh;(=u#0.04o}2sZ-(mTE˜a͊2%wu@_%v Ss!E|ޮ uēh$rq007 a M1˪Fs-DuѓVZHS50\0*VJ8c|C[SVŒ&BWI_'+$WD ˏ2HqL8Gp@A@D,ϓi \l쮨t|o(Jo `rS~92B$ _\g DZc'!9:„D8rShI3q*YJjV=P09vA Bu>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 92 0 obj <>/Rect[357.896 468.279 371.835 475.309]>> endobj 94 0 obj <>/Rect[222.601 375.201 236.54 382.231]>> endobj 95 0 obj <> stream xڝWm6~Bj\(}E m/v>Ֆtᐲ"wm83|(H?e*L":GRBz +VpDLqalU$lk0=+~sV {8A/N: wB|X!#yQe띅3 ͺiEQEP)p"V*U)SiyNKӔSZ=5_CzU 4un>:~eIr+$__f Y-"J4<_@_KgG3AF'UЇ:c'QdCw+T,0r{S`jF~յ@ ڶ$cGkpENMKgȄ3ehNr0luJrI#<^^KER GkaȆUݖf ٰ R{K׬ "U=8ZOK *E#I(ת׈UZ:]kixĒyd9WsY@0vW5o2NjΞ!R0Pt$ aoVrdJ ) WSϢw}0--aYQzA0hv0eU!B7մ'5'~zK.r(f}s4:omͯᇬ gg }FfHAxp[ݷ-REĕ`?44~a[ȇ sG)Ɂom/KS(B^S4HQ+SM-7̽hmIy+š-q%:X:]TϤP0D.Sd݉mZ(v%\C9,Rg |og0^Q׃ 1P۶#14#\UC ݷ{C#,@ld-""7qq ~R, Ď1"T . Fb|*B@=J (]'q<kpVx#{o"'S[ˠ# Z'<1oǾl8ho8xc LŽ HS;8;h͖_, P=P~}!Fy.>1zF㐃Ǧqïw74it`9u VʸX b dȅnwI2hBfԩjROJ{޵Na|TA􀜊_lokΓKeL!oQ~ruŷ˯LׄHM"]7F훷8l7H >$L]$STw$-±v_ÞєӇù3woeʥXhehJv܈of,|SבpZqvUZؿ忪` endstream endobj 96 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 98 0 obj <> stream xڝێ0y kEβz|c[HDi\TK!68oS0cgD!Ab%} 8X Tf'_"A)R_gIB^~4}H0>OHLi]+^4-i=3I Ҳ0GnH˕'qoZHoIfXQZPiHzi nIUq"y׳Đ<n: 7R_){x|aZSfb`(VHv+=6t 1el>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 101 0 obj <>/Rect[406.789 370.382 411.023 375.518]>> endobj 102 0 obj <>/Rect[350.031 183.125 354.265 188.261]>> endobj 103 0 obj <>/Rect[429.021 99.763 440.796 105.541]>> endobj 105 0 obj <> stream xڍnrRӌDQi;;I KZǧ^TKca.V"߃8/rY2h*/&#UFeP= TU[b2JLQbUDqMX< ᎃT nw=i~88|"FVn9w~u6(º6 8KgwŦal\oXX":X^8q Aak|a4관8&N.yΌ҅2qOfc=ϐvhࢄgad'[Q=pq; ?qאE~@5ЦI!Nuc~ՏrU҈4Gf @0~УhgfO@uq8C*~ uLFCn_B{!RX,uuUsajֈzG2dd*@K|CΕ7z췻W gow$ 8inu\pv8fJOd{\mzl:Bp@;ȶ;i)mML"  =H׫Pb{^5ĥ!ʷE5QL~+B@i<:?+iSESbO/l! OiQk}YQTL(09J ;,U>,8r!n`6]X2K]r_ = d0 о.k (TbQ"0zR[B^| zF{D Rb.12vC/ʁawz2'늼,̛zBR4L!!jQhƩ!;AxE:+ڠ<>=1$#rW;oR{/7~d|0[Il`O 2+@&!m9ޭxf]^ *y'-` L?XZ$8;N io(7')dW4Ù1ࣹ!3_ ),ѳI'Ҍ,ήJmK-# |!Yj烣IUЗc'ICK`'Zu%_煊Tcɵ%?'6X;B䏖Ps+3Ҋ@VIo.$ H;@6~+)a(;b"?8 #[er&3ʮ+]XjPI/bkR8:A\@DiBVQzYP2) Y1ܡFH@ֶE\#`Ml$G3\X[^p~<(Z˔P!\I+ݒ4W(dZe0l [&w\6M཈ӭƓTSdZr{`ڵLI0X+slzψ2k8]K/VV8c)(NrwԈEy'=!Kj% <̎3cBq0L6.74])g}DQל`]@o "5f4N?μ݇Nq KeEn*XXBm~Pn`0WX?.?' endstream endobj 106 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 108 0 obj <>/Rect[473.274 610.729 487.213 617.76]>> endobj 109 0 obj <>/Rect[107.939 453.598 113.394 460.629]>> endobj 110 0 obj <>/Rect[305.046 215.174 310.5 222.204]>> endobj 111 0 obj <> stream xڝY[sۺ~Ԍ#^EOqn$u>$,"7%M ,˷EX_ċM^Ew"Z\lca,hQ8< #Yʲ vJ4{׷w4햗(|5ʒV_G4&7s-AծF5L_Zu0wӠ7}rk>v-OvͭGYd?-|3 Z)I4lpۻ S?hsߺBaomu$,|hgvm8saouA[e\P8}7X^5wYMŒWprlHiX.U˃HyG X]ui'YlSseI0qi{#[;%\b `"GlkaޣhOh7tc^(dӞٲبEúb JvjhY U8xYu0M{d،tD GF)LA_gufvíy`a:1(h;|66gAL?}Th"1Fvs009&\g$X%*u|zdў4D D{ d|"5Cv?9Mw-#W+7X,2siqOHAP+C( D2(RƥQ"^`R28[P ZGl0,/~dM{Y&Ev"<4KA O4"֫v7p<νAjGFb3!ʽ7G$?߾iy|ڵ` r]#=q%iH2Ն8 \Xn;rILF:xme|icɌ ؚ'N0pQ $ze&?R zW܃hM)ɥ|7Q2q71)(@|##˩s*PLr;q$,w Q1S qRL$!u=l<] g>rL= "vFr"!{?6)UWI)^+ TJph qZo*̐( KjiDd8 >i d d $sHawO^h|V{gA! !Ɵ"YSѷz`&ҊаƁ,ėPĸxg.HŅ< 4ؑA,2!#qF&[IsOʛ^H$&RY2uaIpϗo ؼ,,rlګ{ imB1(:ð'!g)=KΉ`d֦zx`qRMaq_f|Q:+"/F_%RP5H‚HF#LRYXd^k!a2Pȗv `a.uyia \$D'99,MA\m74h^y(ZV5KmQ`;䜱qpSHj02pi+Qm0=UJQ? %Pe! pn[6Y>2:g?[C0V%Ux-Ds$C86Oǡi1AL|ƵY*JM~)BG&n`CC?L@j(M"aW~@c?^u+!c,Oo! ڹ=dcb?3Q_GgA~a6TJʒ8i+/hT18j'X)C9c;rL#:>]#-!,Φ<-U]I6JSW_TX@ﰖ1Ik' jlM~ zra /!J F/jqr0h+2~֪^g 'aN:9:9S)(ōF?lfn endstream endobj 112 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 116 0 obj <> stream xڭZ˲5 z l(EHpU >zxF3GeqVK&]!N/0))2  xί?\?\^{h0Kh %$ IE'诱uEҵHvt2+N z2"Dªu2ET) $;BIB-)ct'_-IdjqQhR MKt (Fl 3 x4hL$A൶h@@ѹv^x<2}źr1IȎ"K4~eXl{mwɼUBj\#L,:-p RY+2ϑukDpm+3b-PTd)A^=G5'GHm%哕ҎJ>*dž8=soOʼnE=KOrw,{Wij)[JhW_@m0_by@-AXA-ŕP vb5,c)aBRԊmP cDvurI:6Jib(;E4dՋJdplEa/cG < .v\MnG5:bmi+sniq%8^ROog`i}@~H'5,֩gXEFDr|0*`>'*y}Ə q|eH[ TGӫT{SBvPWiuS8CHtXvd]pW!əq# "e[aԞܮfՏߓfUPh[nePشfX󆹤Vbo5,J@ ۶7^GlEYr)&o3.~9J9e9( X9ڦO=dBHKXXx 66l3 VȒ(nBj_16`oL5[Iy G5mR6v_߄Od ShE)m鈟;lnoyuqz@vX7_ ]֦ˍekR`QZ.؞<̊Z-Ȁ.g q֋ &^6EM8݂7" n߈& lp* &ݘ:n+Zu ׻LRjTƴu:}P|eHךrD1S3[Pm0mhyt331si4It-6`-|q"n@G4Rfief]Ҫ1vFָ3Ѫdj> /@@VY: um` l r n;QhUttn2vHY, t]̰ETSmgc[w2Xݜַ[>skIoҤ3ݮ-a<_wZI[^v*uLS斬pn6NuW]s #]gc,5+#Fasv_s/Hjܞs [ѩ퇐g_xֲ))ÿ7]ݣ_>Mo'w{:}p~?}\5o?Rq endstream endobj 117 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 119 0 obj <>/Rect[157.293 707.896 162.747 714.926]>> endobj 120 0 obj <>/Rect[290.622 527.184 294.856 532.32]>> endobj 121 0 obj <>/Rect[157.196 415.676 179.62 422.706]>> endobj 122 0 obj <>/Rect[262.857 406.085 267.091 411.222]>> endobj 124 0 obj <> stream xڝYY~ϯP%T>'zwlgL0"FBV"eqg$Ij`h4}|ZE,ʢz=.l-(zyĊuRq4 d͟H8*,r]uwufۯdu͛ލ:fĨnwakU&s|a@;ol([{rq)ƽՁ;ݣP<έᬋeR]&U0j׾X=vwէ>h;n0" }Z%0Yw) SRqQڞ+Y8uМ\wdkZἥM{dthCF5z2)gݢ\r 0O:5* heުĶ-6)vJVĽ'Zng&k6X4-'Ki*T-_]8҅A*5_ Kwa hN(Gk:}=4䙈ciipQں[r/Gdf QDǛƾkA( 1@ڻx^!q=N12HX 0t_G3EڶnӸ =4 4W̜%Bk1VK0,1᜛:1FxjPiJFJ*'^Ept#vew(iIh`Q3V"OB(^cWoM_ @2K\I\E@%aLٯ Pe։;68D{gӠdF` x"ރOD_2H eJy컣l+M" C O \}lS (v t>h qEz:D kMF$_A#vǶA^] #ϣ86IyQ<`HIQBN[YzӊlVh^]z 0oP&Fm037t-n.el,tp |b{S<XR"qϤ;F'%Xab2x)b#YUc$p{l/k "ld&s-gJ)-Nٕ+ I"Nk%0!SuRkc)MeԄ6X.6 v\Ӥasw.޽~nM!p/wPS{1/YXª!q47RNBFL<BԑH$?){X=HFmfpsKl,Y4vR3u ļad 0Nw'Hn܌ճ@'C)_V+p9X.aXA EȘHp܈ҽX^u+K1Tڣp' $bv[dh֎h(Q'uK{GG;;ē;sjIk@Gm1eJ;-HTo4)t-@3|yU~A>qCi&E ޾ıy&DǴ7ӫuIcF m_𯘫=)U9o W>GУ͎Jßa}.J:LmL+Ignu)GY}Uj,4EĽ6JޓMgkHF,QiIW2mq'v$uH#ىS-h=9]1i`쀔Fk m0œU8.*x"w#bP;y]$4K~Q|%#49P[]mB.x}7\5\ylV '}-@NX̷2oLy#A,}CĖxMn^Wg/+| ƗEY=Pܣ3l( !EF }0zcS%'[gYB=mntI' Pyl'!s9Z7UmĴ@&¡& ,}m\kc7Q%ug\5 ԠKl |Ȩ 48&R[꘧V95})թ&G\deLn- GQMjf(RW<ܾC*^ʕ#9qjaYo/cUWKjxc/M O~FQ,>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 127 0 obj <>/Rect[171.834 448.422 177.288 455.453]>> endobj 128 0 obj <> stream xYK۸WHՎ_N`;vʮM#Cb$cS~VĮ!)45uV*ӫ,-¼X՛"*Viն{z( nM>W1&UH3m+}#05 072U1xe\x¢y޵4/}PB42n`Sv΃֎4&lۺgܯu<3swkuI珰Qn K7 T*ݒ BRDa{COSc*2}$j&A6 7E`O4QD-~\i{::l%.6geikA6I$pRck][FЬMũ5J-Ak扸 H`CGh͑ \"OAzkۑ[m!gɘh6>YXX<:v#E$] ;l\0a/;5nLwL+H1\oerU=Ӏwa{:,ivtF ݏPp@0Zq $?Ox{3)elcd9 # =frH2Y?9)'*JDgeEDQh8tT(]ߒ2 tÞ=_dɎt yܻpԍ4%H=@(asiPs|xn_2%&*?aN.֖Iid%h[&/)N7,i_tǺF3$x"fωFKФAܫ,M [L 0\#9c"G c> c`Gk: ]nH.͇5rM|!cowIꎛC7pn<=wؕKHSJvk%آĕ#t7=nظonQBU#w |L=íkjl(r£ZSogYAn/b|:\{oZ(x]@1&̸B[:xn ~cbRY%ryaiC_::[$}E.c6F ʋP'azfA:E#K0`L@(A9b"3`׊It^ 11Ěaaޏ3L4dsR@퐀#4f,㗃SIcH5fx uܭ2-f֎^C{YOG#BbA<4hwί#gZr0  D>fj;uL*wc 'aM/\nЖئRQEXM%_XX -.0Dن IkZrbrL"JDT % 婯х5!2cء˽T2c` G:~@vӰ$dzLHp58;,k2TIVqX4Ad&䧼"J.$] @!@`.|ņ:@] ѩH)Ԓ!Nb$Wd?29F0SCnrlؑ* )ab} <\ϥhgGEƕooO/~)X.S 6n d+ \I1J38xrgo j6$PgGUJ(J 3ǹ)L]z=72i?kmm 34 *R8q)T>G9Hy&䊶j{*ZTR Dfb7* b++zC/c+`Q w;K({4 3X|Gy`bPYA]_vpndY^ Z50E#ͷ0ue͔ XIXCC4+qTEEh2vR \j P*aBunam@0>gpCk[N0Q? Uv%5)b =ȁQZ㸛%`s9;N%*pBC  j(QQ̼y~DGQꛯ*8_m$ tH#Zyc5c Ia.TEp܈KTf_5<nG0{ARR*VyS[zf2o  OM%jO)?Tb!xl#@:&`GKUUy}zB^o#-'W[?Q=I5P#Ngd~>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 131 0 obj <>/Rect[158.879 453.391 172.818 460.422]>> endobj 132 0 obj <>/Rect[440.553 139.745 444.787 144.882]>> endobj 133 0 obj <> stream xڭYK۸Wb1V:ZWjS& H'?>EEZ7j4 4u7| TIPUTVA}l* 6NH`G?7\p\Ee ȡW몪͏nWk?~iazUƚjTI8غk wǽܰ_XJS+47ѲgСWMte rcE'zfɪK)ȬNRWT.RE)X,X*4햏N<ˁ'?t4qM R'OzjNUK2zT؍׎"QMdz)&kB30nU(e  ˔a{SK{{'T#zFe[Rd{_Yw}oVEQ?<4Lom;p}]\Jğqyhe,SZ'yXCxSH+Îށye{fh ݃?24L~1cN/V3pDqֶoe5RXc=`mBrpv$`jL=&_0Ӗ8,d9FK Hpdh-e>Ӹ!TIP<흏R8O0]" O]=skh@ȿ;Lpe]V1$20 ]X7],`GZ'GD;jQ@A,~G4;-A&r{*BhdEw¯9 O] W4A4~qOm}oеsg"p'_A y8BgpPu8]oinsufѴ3v&"nxf{4Ix!0>GܸG7M`sbf pl-w^,B%R >u(:8hI(+#s=9 88Q׋ yċ-73翇=^ž=@8! ?s(qz$%\k~+TeLG =R9Ɂ!)$KfcD^"R\tbM@A`Gaa>E0   =I#AaHp0S=0# AL7nI2HaÇ5T 9\hpK^q`GHI<ЏHnn`\"{eL ϟtVx@(YJ6#6*ti81 E(hȂ*`?{2nճb>UE.F,|lXA<PFae$ڋ9 z!d{Y-ϑpyX#Q.wI+6"J I(6l߳l6W x$Q,{$-ͱR{J|I/A“B? [gv9,C/fdsI{l! 0*pWHvq\r-* 0̠t|0gJ9$|{ߠ[Tkx#)ҖiĆm|ja3 FgO-;As 4v@ m,I, \pީ=lÈ/)!\%?..`bzKqsjOۚ9F嬥SAdkkPKŨ嘥p/ܫ$$#xI8Rإ(`4-50B`'*3A c0M)N\]yz CnܑC?ݞv!8fA_fHB$#Cx'vz-;}wN4ZjȸS ŜłD϶TPEeLXAvMF3V(?ɲ aD`RE^'4 yBk;N&i5B~`aY239)AޡC-nS9e%֬YՇT_ ؾK!2й <3 qUncLIy)CPKdSL8qXFf endstream endobj 134 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 136 0 obj <>/Rect[445.122 306.902 449.356 312.039]>> endobj 137 0 obj <>/Rect[296 225.681 309.94 232.711]>> endobj 139 0 obj <> stream xڍXKs8mC+[{H'TNV{)b o@Q6ٲ6 *?UaQnnCRQXFj{8 U$aި(7Iꚺjsl:Ёqou^qo߱?ϰXq%\JIf TXgܭ)3EAӳ`]@ me=t,*XۭCydEȽÝ3:A56CO.r3f`* ӔԴз⡭8oqz8'-(f8 ƁEqX:v-7wֱxzƐYt]<ة(3dVWuҲ(Wby.'?Q#?!F3$ {n]CM w}M^@Ң|x3{kּ 265ۚ,Mz e돯7>-IMlMΈ 0`O>2xfX\Q0 } {XٍۡĬmi{жs#2?$tДLc aM~б:XTE40LQ`*pǪ6';nMb,s\>K8+ 4* ˌ6woEfV9Pgg=>ίZ"gl(5pc apd˽"[Xɨm _T9Qd\{9 5/&\rSGkFoܗġ*4QKvUl7Y/}Ov=]Hxjp!EpEхDR`$, Sog0V8`&0;^Ђ Pu|u @*†6ǃ N/w<ף )p\Β,0Xnum`B8f p`Dt0=^`3%7&ӸWO.$iQ(-Кĥpipp{F}6., 9e1Zp*F?7V3ޱ" gy2!>9h'B&C,âX:7#=Z;k8Ғoٜo{lyDjOaI?]iJ@~fn8w!Nk.d(SaXaXߩR3O:\m%Oft6Pr܏~rPk~FZa9Q,`8 l7D6(\ "'b׈;xaD@ǖ4wk2\Rs&.'lV(n+u~9_ᝩ6c [A'-P8Y24y6%T9V2W[>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 144 0 obj <> stream xZKW| U!ċ$aw-?YR3b,cG~}IIjMn`u|_bgf/V-xLj{XqXW$<[~ŌBf"\1/+)Uų^u^a1n}:)wr iR7˓ak{K]m6{z8qy7历mڦe8cQ׻dW-WHڕ[K[AWmW%a1g˕"6j>>O}>v50u@f PXv'Mv7:yܻw8ʞӬʮʡ3֏"ϓH1$7YtA=H<_䨣EΤ\Hf26M@$Gims=W,5B禲UȠml0b^@dKOeOe[eWv?oK;L2}tx)!ؗaR.U|@ qKz&SS %JRLA}kJnqV7-xK! ڽ%b\͔^8LO§>#w镏C̕(Id#_Aԋ7l3WāqpXf!k Tނɀy' 7eh8o0R,8+](r}`9y%)Ֆ˲  ws:^,~>t~.l5Fza0";JFp S  zuR)!"蕏%7:|zz_>3;`RRVJMj0५a!%F^y&ҥRߎ!vzr=4~]_yҥڹ!4|,C:W88㇬Bz,7@sSQ7R@=w0iyL]xHmІ``2p6];gv!y;/qy.^,P-!.T Z5,1NM;ZŮxfʹC>X1>)`~տQ "l Vyztr`šP6X*fPGym3 h8We `SѸ:ȣQ4Z@ӰKV\Uh#Ml k9<_.pl?#X_+tֱUe}ZPHo)t^vJ8桧akepfEGQFvI-I2+zQـ>+ZjfqY ]l8)k49!S>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 147 0 obj <>/Rect[191.182 455.743 195.416 460.879]>> endobj 148 0 obj <>/Rect[391.425 385.632 413.849 392.663]>> endobj 149 0 obj <> stream xڥX[o~p*cV(JE&bCERvd#J3`|M\+C\͗ӛ<֩mfӇbcb?.J}(UvqGfK4૲4acMn3D;;pCeWY0`Ll | :'Q_rjrnTe6}4WܤdpG&Ȣp"jxO=% kFwDgG<|."Oe7h|:nAc[vxԇyR6+<3=l~H?a'q3g&E3``r9*&uV%&UҕLԞ,o&nEgɘ!L**Ekwȗ)Jd=  sO!sG{w<l"4WxY .wOlI,֣n@Ir2F~K"3~rR:YeDw+Ɩ^+ԪB_ʲkR(ݙI^9.x{}..gpD+]ڵg Q`TnNwU*ڵ k]YFͥAf92w߯ցYͷfULfU} u{Y.)v_ؑj2qj}q.G@HZ%I_R&_Hژ5eo âzj(u X'SWa ߷ hJ~ M튓3I.M)^ndE r<5/(;; f*w"jw*@x&I0z 0 b{vdևc}ޡ¯#lMP~䶰B$E(NuDݭvwd\YR) ab?U2j [?3g.:^jQ`XB`qhUh*N t] ТmVic/Z90hdDW{ٿJU 4{0آ߸I̋K̚ l 3TIϚ<H0%h~ڑe)1iP+sQlUXX̱0Xȶbr#5! OQhR;*/bpF,.5BEQڄ-{8TiB]%AQy-]f\HY[KE% g;HA-G'YFY4A3]hc5L(>l5x'P>UtkǺ1bgp#AϛPݙJp5Fo=i q/%$DH(ṝDX9/> ̑k~-MebRߞ54n>m~A򂣏2`2Z&i->XKT^\{pvNl+ؗ7DhI$NOR9XHWkG&pK1/"O2&"_xߎOhW;C5x 2ΝRP0BN# sxIY |ߖB%vYf)atΒY +h=$>t^@Sx w .`BA5r/(I1GY>\̨T2c#a ,GKsii : Z  F8pJg#,,rD%k ÙgjI\+h$S j endstream endobj 150 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 152 0 obj <>/Rect[415.583 630.097 421.038 637.128]>> endobj 153 0 obj <>/Rect[124.858 467.763 138.798 474.793]>> endobj 154 0 obj <>/Rect[388.23 357.507 393.685 364.537]>> endobj 155 0 obj <>/Rect[485.771 357.507 491.226 364.537]>> endobj 156 0 obj <>/Rect[231.406 190.692 245.345 197.722]>> endobj 157 0 obj <>/Rect[351.885 163.593 374.309 170.624]>> endobj 158 0 obj <> stream xڝ]s۸BoGD,~=t|q܋.:C,\$R!H;w Q\31b/fgjzgeXz;y9M2SQXFlBϖͿUbB4,s Dd(2Xn$xw3WJW81կ.>|,j^$@v:~_#n23q Kk,E'`2j#W[ul2mf vJSVENvN*XىV,,4(R϶ F:ƶ?ڴn.eA|r2k['/+L#L`tnqiz0g \{qQFѢ7(ClLfl'>`tn!^ 0#bg6p [cӰyzҺkЏjpgb B+ۆEY3}eq'kGn|CآD5:ug)0\$k TʘRV-U"X~|n 3` 3$nwٶvxN ;"X4tǍNoH @mm[ 7r1y.h_gH4,΁z/BqxUNj#M^#: nJCؗ9u/xd*E בGJs8JKg%2zc?Q `C]! g(b(Bˇ!rI9Cyf 򄜉G,h M3R 49cA$Zsv8zme"m(.0)L,Iqg`{CEbf2~,Çv |TZF)ؐ@:=i-&1La*8 %aJ0޻E\)T/޷͗'@ iHVi!')arF*|eq "L E^ 맊=Eac [ #,;upU=E47pÙ̠pF{'@CL *8zcj]E\.(fʑ<!Rs~zMcxdz99f/Dz@S'87;q@ha߮mF^N3z*dqk /RcD`HA|` 6V0l^yWVIøUâ-( AOs麇ڷ Am]z.EXJQPR9O X[Zb]T}Óo~շox "; Sb: $n$*H$0 nӴgg!"nԤr ,dFb Kn#ԁ>wf%(71 xfCJk?fL{Вv781!]H~MW;c֡. '6z[+F^ Pbh9': ȟXabЮ C ^*WiI\L7\ x'ObRm}qMRWASZfuO5IHX>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 161 0 obj <> stream xڭMs6+8䦏{J2>%{Pq*Kr$RA  eI*{yh6$ǻvb7rg'?8ݝv|vbwϠ8 ׽ɩqDɩRrpp|<ЯO7Ǔ h6r~Vk7(v؝ =փe'|9 "s#A dF ͞Nٟ}X@|>vRx`>WU> 6D |$/<籣->O%(vf4)xt{hΒ[V'*KFYr0muc+k+KlS c+ɭcGX%ߛȢ SvD|yC) !v=X3B9D_Lћ4>wbU} 51Hn]e7OvP a: qp ,peqʼzfJ(=Lpx } jC<)![[u 0M,{6W8* MT`r6\婀ꘘ +d'yfQ;6LH]zʭYbcBr*#V0vI/ RcȌؔnz.\V _95Wv4$WK\L̈́])ӜvnvP"_h j+Ua=8rk 1R{S5ι?͓\`XKvaKҹ|v]eYz%6A5c:V!/EVBeBNԆ9`=nIS5rJ1v]t;JkBMv÷0xCdJ|߰;T;ZcG9CW!Td18h Yd{mYbr>A'dL3Ա%8M͋z0(ċ+=3KMmCNTt6yYjsYRՎt a:lPYP ݂mHTndXxӤApCnAٙ6B۫@\T]^"'=;{8*uTJn'֚%q 4I4Y|ъyfZ hD`RA5U>-1؆]kSc;wﶅyrCJX:uʆz81bu6>Y0c}0 joǻ\>l@ќa YJd!m3aej 4isuޘխf<}i? 3)|=@O0}DD,H9i?iG>˜"}rp|2d{3tX H[7!+أ jb`Մ؂=sÀWt` yIG˵s)հbi`#A]5dc䷠)9 [6xxur{d5CwP8Hu@6SP(@mMT`]AхYK%ą ^{9 D'* zH:aMY>ry:Ix9iBRbg[\}I Zg[efeJ@'D9 jIhTKh]nHp`hGvp@iA5j6E?YJW¡prDFGTxtq(nK'ǫV$$mV n77A㜤~|;0F][C]{p /6S҇>/1rFaԴhFbAL b.ދq#亩#|N-؀@f_<^wnx9- yk+*z-ƋUAڭ: UѰѷգ&1h=#dW6ק:Ϩ8 [۔\+&R{d9á[{-aˆW(hcyiYV:XC ⣇K>8Hhl.BVHYrnzyNSi O1XI&!ǩ?DOa3/JkI-Eq'9ycyAv@ mE|uQA+ j zXB!&8~EFdt@HUG׿UOZ'R_ WUx3;Bs0x>>=}ߞnC#m ˉmQzu?a#|߁6{;Fbtra~v21Hoc]R?]߇:~=ǯo$W 3 endstream endobj 162 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 164 0 obj <>/Rect[418.395 698.305 422.629 703.442]>> endobj 166 0 obj <> stream x]o6B[xiCn\\4V<0+ګtW#PZ~H;lp8a%Q "JegyF?kq@ LƋ[fB%,dVywu*hs/Y,aMYBl_559a#Emfgm[[wMij3KUSwU׻w艍@9 \VROCV/ʁB$J?w^ Ww ܒA-ҷAaUw4cneۺmyĵ FnrUMd`[aVs|4< Oÿ&#w@ WyLO2Mg+z0Ϲ6Gy4a++C]D:Y[S⵼ИK օYd N65&h|o Į^5ޣ;+?']˽.ΡQ,61,"c "z5&Qa\zubnփmN;.{ak;O5ybPL|a9%̗v͂UUh^0s "J}կ qvG kGXs%(*Zph(9~m@<s !U}}LfTŧ.dPě[Lx}>P")Z*KO=ܟv2B2m6ˮu60/doNiLnefL أ SFV^)F H  8T! z:Z ~/bXgإtw1"rZ(# *n#EROu)M |mD3ä Oj9p.'lrĮ6@Ql"MGEi >눸ngZ d*)O  $CwI1%LA"RK|VT2!<DMS ~zGbM' endstream endobj 167 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 169 0 obj <>/Rect[122.332 634.068 127.786 641.098]>> endobj 170 0 obj <>/Rect[122.429 506.441 127.883 513.472]>> endobj 171 0 obj <>/Rect[433.455 479.343 447.395 486.373]>> endobj 173 0 obj <>/Rect[121.844 119.426 127.298 126.456]>> endobj 174 0 obj <>/Rect[275.654 105.877 289.594 112.907]>> endobj 175 0 obj <> stream xڭXo8B|=.mh8AXmnL%Np8p8:mIa.{tUdKmV>ĔkDVK"&SF)M= !i[/cMԇ_@LJɉr$Ǘc|͈NlHEV}p, kTu=y‹?~ӵǍ_Wym]=U_q,c`R8FitW!:F%,FHA_((~2W㱫1yD?{|?E`P>' E ?om9@-F vUߴǦK/]%MV5\>X qBt0΀d j0~aꡯw~êtO ;5uU[?gB 먩:D9Dijww`{ :K^{K/2_C,1@pI)]|6{dZoUTxU|]{xpUwσKٻzNBj]K'of2OuY12UҤZ5d #d)*3d8os6ϢQ Ide!]QPCi(&.Pus2)2:HUtͤ N*PvShY-i;uRBJ99k&A>m&px3:7ܒ)2;s*# 0 ywWvq9M2<~Cup;eY` )C -Vl7e9; 3lɓ7%_뇭!z;\nrRWلZb%fъIӓM_#pu<\wW uǾC_RYxqq *%T)!!e9GZ4>`fǗ*~p}xH&ܩt?ݻ43)Dl:e '۫&d s9Fsbr rIc%rdKeDe endstream endobj 176 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 178 0 obj <>/Rect[120.268 667.586 125.723 674.616]>> endobj 179 0 obj <>/Rect[452.842 568.502 475.266 575.532]>> endobj 180 0 obj <>/Rect[120.113 473.74 125.568 480.771]>> endobj 181 0 obj <>/Rect[390.728 446.642 413.152 453.672]>> endobj 183 0 obj <> stream xڽXK۸Wf2Bc0veM8FZ>$e{ӍnPԈǦ*5U#h4_cV*ի4Ebfe*bUWkf*"O)zyTbcrn3W_n͛/:޾f {ޭuPz?EA2*y.dD"z9 ` ]*:<"V˫H^VcрߧadBZ0p'sa(b ϷxpGe?6E: 0ɺڰ cr Lz>m]OG]Cbw2`Kjv)@H eY?ڦ ʨkڮkZۨL풑c,Ji:M |;$qq[8"3`R #؍)62m- ϋ٬(+O'3P08hlfӳ=^y #2t'S:{pA1KhqHpBBep!0.&6]\7Y.Eb6䷰AҹױQ2 ]]4?< kh]j@r"KNAMYlXVmy ,t)A$َltZ}y~=Sfvc'6֟U&ω4(ϛiM4E@ a a#,lz>UF$6X9WSQd`~oP OzD]nrJ3#F-IMѝ8j˶cϡN2p:|yNbUʞ`ќϘX1w4&W@4zJg&34C+pkM u8KNWPtrG(V!q(Uށ 0xEqH´6.p?.EAvUȠ({ }5w%iNa,ۭcz$}7*9|GɱNLꎖq Qq] /3@H@IzVz,@(=Uד?:>t֣bqI #&M%-y28OHg ϾDel $ gE_ cSh|p٩3T1HK!k|OE=tAa4 ;K76 i<ЫͰ ^2-+`ȼ%>*RuavCyAhCTzBN>~~`1^$Y07DCB7`5kBc|Kp O_xg糚A'69c|NBk_*Eqrt#zlx}D7 zP}v_A8W]7biχ`,=]hoo.e=HFu NK1Dw aC7 S$* t2|g.qs9ۙi &md:xLV/yٲ $'^p"3Ȇ9UZv(:N1̳ʑTD׎L=YQ U Ljc?ЄܾLWZOkᬲ7K1wnV?p<Fn-k7\ϿO endstream endobj 184 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 186 0 obj <> stream xڵVKs0WhzH 6 ˜vڙI3-5bDHȥvi>V>60&> iNo H8'9 i!۶rLj쮤+W郉=6dlЧ0[Ek2̫(3q*"@xbB)؊bEBz&5`8= ,A l5Kq9W ,߁o93-:dyKӕYGɪ,>7"nkH\7k*تƀ\+%rwT_x!j>(14J +zk!uEX¸fm,Lm:"?oˢe-;Tm`'5P,h" &~|$xf)e,i4\ BTe!iϋٔM([ȃh7MI,fA\ !yMjݿzڤ|8`\xHKDσM鷎/ĺEDsho5}iX$8T!pfs D7.&[+֒B_buK)A{ɛ{eDLׂxy;֚}tqMGbfaA=ݎM4lOfz? ʇ|xVA9[ l!Z7!{m78c \x_q;Ef` .F%-HBމ'Vv^ΖEA{cchy?7iĔ9LU( >QͧHڵ@C=.ڊD[PEn2bS*XHYV"_  endstream endobj 187 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 189 0 obj <> stream xWmo0_aUbJpٴIvL+h`>>X]p&ωC`-6FRb?.6T?@6A຃jRTjة9.DF, :^!:ED=[F9OUuC *(ڻH4j5$QW%25Ժ!}l[iswhiM#fQV5ʘ$>JK Z[Xj<Hf<|Agt'!&$oE0I^RSXi9p=ts^2&"G~R{Ŕ.j DMmW-%efJ -y_ltL1W͙<^zF`vʧ\nv-͗v<3r\ft"6Y!Xzr8 %WSynvhIVſS1ׇWLVLkEgb baM&ka4 xyV2%CI3kӂ E]}Zjd͎֬%䰯 d9K8^aevzv3T9t?Oh촗+S&;E=YoOv"~}ޯ( endstream endobj 190 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 192 0 obj <> stream xڵr6ޯd-F0"EwzH[)! EebAZT{F2Ox?O ye$o"+2V@192Obz6YRLBnvks'R{,Y (U$R1yVlNř[Q+nRZ_  [=ЦƏg\2._FZZ{;`~w ]_^&@"gy}sӂRs䷯"WӺo֧QqχnP'+<&`@ -MD6aMW򁢪ePxȖn JȽ|D؞WXƃ5",%WB]:ÿx}\HOݬ^quɬ*,2UPo^=J2)D^wod~ΡRsK ZeP!)DlfS!\,H&hlypǵwt`Y( -neb5q-߶1~ H;׵Dz3%Avm7wPJR?Fx~ =)h]MnfZl6/rh1y횚ɧyF4]ca*DA2!жt5MSK1BHyMC.Y { ݊66v~lHVi NHkso][i++p UB-!G]<]f{$t}|Lѥ3ĩ~jf(?v+uhw͊6bs=wn0[l#_/cyRzOůIAyY؛XZcش֤ <,<᜕HI{3b0H3NŒ{~ =-<]em\o #Gf> "] ݘ(G(dԢrd^8`~]PB Ork@P6ZPZyY&y,g EAz=!RU^cKYzJ 70:XJ[<;GD=C0M}MqY05RP5ytXCAKv .aؙ)Nz5Ae;[wPx^f0)c9Q^$*B [:t4JqAVGl'[8~ E': pf|5~RD`y98b? bm endstream endobj 193 0 obj <>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 195 0 obj <> stream xmVr6+X9AN$vSb+CDAbPp\O/h_QiTgQ]5>iPDi7IgUjȪ߫_@y75QMӈէ< 0KT,=^^,lQe/_1Vi4jXՎ0z~k߷"NVeJzOփbV> Z9`!|db^:y{e@Fza-gS^)يQLwJTkM.inJ/㲤  STCw /uwD(k|v;(ڃVڱ^[s2 6_6ڡg87c0ZG׃ x6/\,NVHh%&nGQ)&Auڼ#bKⶕ#ڽ,8!TE/35&u<8ed) Z/*dKBʰAGyFo3{<̽4%#VRnlj2n`8 r8ަҢhZ ;Rf@u-o;3 2Z 4 >5 X6 |`= vdΎP&OEM#SxЂ^XP\ f]cOd:FhNeEᩬX> M j)Nmh+ɞCWU|)Sf&9ۍ,g6W=`g&w؈M߅ݐߒ|-.rz!yH0Ը.8X3jbyh]7!ޛ0vpcBUyݣ" #CGkvd=W^:| ~ƁR7֫z, :"dv _>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 198 0 obj <> stream xڕUKo6WPRnn=02%wPX>oş)*BBMMqy Rj;bɊbQU$ 3.qU$MD"rtW6n:WSr 3w;;١]#^O{ z2&@#52I~ 9 I W1IJQ-A1LДPRwDw Zfo:EۣKi@z /aXj;F#˕P ]8 L2ǔ@Oé.B/HC$mؿIMF} DMIłIw7WʾO dCq’4^]^jk>\ga:v\b+`)pJⓙ* cU;$rH]Rf7;0r2\8dN@WgD)0 Z`bۊyT_п>*"ZUl[~:# HHʧDG!0,NrtlSPNIEfq跲ȸN?5(CBRx} 'ۖ(tSDRr~' ) ONkoߛܳ7 5rq$@Aܼ_Ze\}tmВY(ƚs' t`WXhz9Ccty4{ŅLe~jT*\ߞngF8Zؙ#.}O";K A;@1,|@HD>7ԨX S >Ei藦&R>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>> endobj 205 0 obj <> endobj 211 0 obj <> endobj 217 0 obj <> endobj 224 0 obj <> endobj 225 0 obj <> endobj 231 0 obj <> endobj 237 0 obj <> endobj 243 0 obj <> endobj 250 0 obj <> endobj 251 0 obj <> endobj 257 0 obj <> endobj 263 0 obj <> endobj 269 0 obj <> endobj 276 0 obj <> endobj 277 0 obj <> endobj 283 0 obj <> endobj 289 0 obj <> endobj 295 0 obj <> endobj 302 0 obj <> endobj 303 0 obj <> endobj 304 0 obj <> endobj 212 0 obj [68 0 R/XYZ 72 284.37 null] endobj 213 0 obj [68 0 R/XYZ 72 263.97 null] endobj 214 0 obj [68 0 R/XYZ 72 238.71 null] endobj 215 0 obj [113 0 R/XYZ 181.47 106.28 null] endobj 216 0 obj [160 0 R/XYZ 118.3 160.57 null] endobj 253 0 obj [12 0 R/XYZ 71 756.72 null] endobj 255 0 obj [58 0 R/XYZ 71 756.72 null] endobj 254 0 obj [16 0 R/XYZ 71 756.72 null] endobj 264 0 obj [61 0 R/XYZ 72 697.09 null] endobj 265 0 obj [61 0 R/XYZ 72 476.42 null] endobj 266 0 obj [61 0 R/XYZ 72 362.4 null] endobj 267 0 obj [68 0 R/XYZ 72 525.96 null] endobj 268 0 obj [68 0 R/XYZ 72 372.85 null] endobj 270 0 obj [72 0 R/XYZ 72 482.25 null] endobj 201 0 obj [80 0 R/XYZ 88.59 99.76 null] endobj 202 0 obj [100 0 R/XYZ 88.59 110.72 null] endobj 203 0 obj [100 0 R/XYZ 88.59 99.76 null] endobj 204 0 obj [118 0 R/XYZ 88.59 154.56 null] endobj 206 0 obj [118 0 R/XYZ 88.59 132.64 null] endobj 207 0 obj [130 0 R/XYZ 88.59 99.76 null] endobj 208 0 obj [135 0 R/XYZ 88.59 99.76 null] endobj 209 0 obj [146 0 R/XYZ 88.59 110.72 null] endobj 210 0 obj [163 0 R/XYZ 88.59 110.72 null] endobj 271 0 obj [75 0 R/XYZ 72 697.08 null] endobj 272 0 obj [75 0 R/XYZ 72 432.84 null] endobj 273 0 obj [80 0 R/XYZ 72 297.17 null] endobj 274 0 obj [91 0 R/XYZ 72 578.82 null] endobj 219 0 obj [107 0 R/XYZ 71 756.72 null] endobj 220 0 obj [113 0 R/XYZ 71 756.72 null] endobj 221 0 obj [118 0 R/XYZ 71 756.72 null] endobj 222 0 obj [126 0 R/XYZ 71 756.72 null] endobj 223 0 obj [130 0 R/XYZ 71 756.72 null] endobj 200 0 obj [3 0 R/XYZ 72 718.85 null] endobj 226 0 obj [135 0 R/XYZ 71 756.72 null] endobj 227 0 obj [141 0 R/XYZ 71 756.72 null] endobj 228 0 obj [146 0 R/XYZ 71 756.72 null] endobj 229 0 obj [151 0 R/XYZ 71 756.72 null] endobj 230 0 obj [160 0 R/XYZ 71 756.72 null] endobj 233 0 obj [163 0 R/XYZ 71 756.72 null] endobj 234 0 obj [168 0 R/XYZ 71 756.72 null] endobj 235 0 obj [177 0 R/XYZ 71 756.72 null] endobj 236 0 obj [185 0 R/XYZ 71 756.72 null] endobj 238 0 obj [188 0 R/XYZ 71 756.72 null] endobj 239 0 obj [191 0 R/XYZ 71 756.72 null] endobj 240 0 obj [194 0 R/XYZ 71 756.72 null] endobj 241 0 obj [197 0 R/XYZ 71 756.72 null] endobj 290 0 obj [126 0 R/XYZ 72 504.19 null] endobj 291 0 obj [130 0 R/XYZ 72 435.25 null] endobj 256 0 obj [16 0 R/XYZ 72 725.83 null] endobj 218 0 obj [61 0 R/XYZ 71 756.72 null] endobj 232 0 obj [68 0 R/XYZ 71 756.72 null] endobj 242 0 obj [72 0 R/XYZ 71 756.72 null] endobj 244 0 obj [75 0 R/XYZ 71 756.72 null] endobj 245 0 obj [80 0 R/XYZ 71 756.72 null] endobj 246 0 obj [88 0 R/XYZ 71 756.72 null] endobj 247 0 obj [91 0 R/XYZ 71 756.72 null] endobj 248 0 obj [97 0 R/XYZ 71 756.72 null] endobj 249 0 obj [100 0 R/XYZ 71 756.72 null] endobj 275 0 obj [100 0 R/XYZ 72 697.06 null] endobj 278 0 obj [100 0 R/XYZ 72 525.85 null] endobj 279 0 obj [107 0 R/XYZ 72 300.48 null] endobj 280 0 obj [118 0 R/XYZ 72 648.98 null] endobj 281 0 obj [118 0 R/XYZ 72 370.31 null] endobj 282 0 obj [130 0 R/XYZ 72 192.41 null] endobj 252 0 obj [3 0 R/XYZ 71 756.72 null] endobj 292 0 obj [135 0 R/XYZ 72 501.41 null] endobj 293 0 obj [135 0 R/XYZ 72 373.53 null] endobj 294 0 obj [135 0 R/XYZ 72 181.12 null] endobj 296 0 obj [141 0 R/XYZ 72 591.26 null] endobj 297 0 obj [146 0 R/XYZ 72 718.85 null] endobj 284 0 obj [151 0 R/XYZ 72 696.28 null] endobj 285 0 obj [151 0 R/XYZ 72 270.42 null] endobj 286 0 obj [168 0 R/XYZ 72 690.47 null] endobj 287 0 obj [177 0 R/XYZ 72 166.48 null] endobj 258 0 obj [61 0 R/XYZ 72 718.85 null] endobj 288 0 obj [191 0 R/XYZ 72 325.89 null] endobj 259 0 obj [75 0 R/XYZ 72 718.85 null] endobj 260 0 obj [100 0 R/XYZ 72 718.85 null] endobj 261 0 obj [151 0 R/XYZ 72 718.85 null] endobj 262 0 obj [197 0 R/XYZ 72 718.85 null] endobj 298 0 obj [168 0 R/XYZ 72 564.57 null] endobj 299 0 obj [168 0 R/XYZ 72 177.55 null] endobj 300 0 obj [177 0 R/XYZ 72 718.85 null] endobj 301 0 obj [177 0 R/XYZ 72 543.11 null] endobj 305 0 obj <> endobj 308 0 obj <>/Parent 307 0 R/Next 309 0 R>> endobj 309 0 obj <>/Parent 307 0 R/Prev 308 0 R/Next 310 0 R>> endobj 310 0 obj <>/Parent 307 0 R/Prev 309 0 R/Next 311 0 R>> endobj 311 0 obj <>/Parent 307 0 R/Prev 310 0 R/Next 312 0 R>> endobj 312 0 obj <>/Parent 307 0 R/Prev 311 0 R/Next 313 0 R>> endobj 313 0 obj <>/Parent 307 0 R/Prev 312 0 R>> endobj 307 0 obj <>/First 308 0 R/Last 313 0 R/Count -6/Parent 306 0 R/Next 314 0 R>> endobj 315 0 obj <>/Parent 314 0 R/Next 316 0 R>> endobj 316 0 obj <>/Parent 314 0 R/Prev 315 0 R/Next 317 0 R>> endobj 317 0 obj <>/Parent 314 0 R/Prev 316 0 R/Next 318 0 R>> endobj 318 0 obj <>/Parent 314 0 R/Prev 317 0 R>> endobj 314 0 obj <>/First 315 0 R/Last 318 0 R/Count -4/Parent 306 0 R/Prev 307 0 R/Next 319 0 R>> endobj 320 0 obj <>/Parent 319 0 R/Next 321 0 R>> endobj 321 0 obj <>/Parent 319 0 R/Prev 320 0 R/Next 322 0 R>> endobj 322 0 obj <>/Parent 319 0 R/Prev 321 0 R/Next 323 0 R>> endobj 323 0 obj <>/Parent 319 0 R/Prev 322 0 R/Next 324 0 R>> endobj 325 0 obj <>/Parent 324 0 R/Next 326 0 R>> endobj 326 0 obj <>/Parent 324 0 R/Prev 325 0 R>> endobj 324 0 obj <>/First 325 0 R/Last 326 0 R/Count -2/Parent 319 0 R/Prev 323 0 R/Next 327 0 R>> endobj 328 0 obj <>/Parent 327 0 R/Next 329 0 R>> endobj 329 0 obj <>/Parent 327 0 R/Prev 328 0 R/Next 330 0 R>> endobj 330 0 obj <>/Parent 327 0 R/Prev 329 0 R/Next 331 0 R>> endobj 331 0 obj <>/Parent 327 0 R/Prev 330 0 R/Next 332 0 R>> endobj 332 0 obj <>/Parent 327 0 R/Prev 331 0 R>> endobj 327 0 obj <>/First 328 0 R/Last 332 0 R/Count -5/Parent 319 0 R/Prev 324 0 R>> endobj 319 0 obj <>/First 320 0 R/Last 327 0 R/Count -6/Parent 306 0 R/Prev 314 0 R/Next 333 0 R>> endobj 334 0 obj <>/Parent 333 0 R/Next 335 0 R>> endobj 335 0 obj <>/Parent 333 0 R/Prev 334 0 R/Next 336 0 R>> endobj 337 0 obj <>/Parent 336 0 R/Next 338 0 R>> endobj 338 0 obj <>/Parent 336 0 R/Prev 337 0 R/Next 339 0 R>> endobj 339 0 obj <>/Parent 336 0 R/Prev 338 0 R/Next 340 0 R>> endobj 340 0 obj <>/Parent 336 0 R/Prev 339 0 R>> endobj 336 0 obj <>/First 337 0 R/Last 340 0 R/Count -4/Parent 333 0 R/Prev 335 0 R/Next 341 0 R>> endobj 341 0 obj <>/Parent 333 0 R/Prev 336 0 R/Next 342 0 R>> endobj 342 0 obj <>/Parent 333 0 R/Prev 341 0 R>> endobj 333 0 obj <>/First 334 0 R/Last 342 0 R/Count -5/Parent 306 0 R/Prev 319 0 R/Next 343 0 R>> endobj 343 0 obj <>/Parent 306 0 R/Prev 333 0 R>> endobj 306 0 obj <> endobj 346 0 obj [9 0 R] endobj 3 0 obj <> endobj 12 0 obj <> endobj 348 0 obj [19 0 R 20 0 R 21 0 R 22 0 R 23 0 R 24 0 R 25 0 R 26 0 R 27 0 R 28 0 R 29 0 R 30 0 R 31 0 R 32 0 R 33 0 R 34 0 R 35 0 R 36 0 R 37 0 R 38 0 R 39 0 R 40 0 R 41 0 R 42 0 R 43 0 R 44 0 R 45 0 R 46 0 R 47 0 R 48 0 R 49 0 R 50 0 R 51 0 R 52 0 R 53 0 R 54 0 R 55 0 R] endobj 16 0 obj <> endobj 347 0 obj <> endobj 58 0 obj <> endobj 350 0 obj [63 0 R 64 0 R 65 0 R] endobj 61 0 obj <> endobj 349 0 obj <> endobj 352 0 obj [69 0 R] endobj 68 0 obj <> endobj 72 0 obj <> endobj 351 0 obj <> endobj 345 0 obj <> endobj 75 0 obj <> endobj 355 0 obj [81 0 R 84 0 R 85 0 R] endobj 80 0 obj <> endobj 354 0 obj <> endobj 88 0 obj <> endobj 357 0 obj [92 0 R 94 0 R] endobj 91 0 obj <> endobj 356 0 obj <> endobj 97 0 obj <> endobj 359 0 obj [101 0 R 102 0 R 103 0 R] endobj 100 0 obj <> endobj 358 0 obj <> endobj 361 0 obj [108 0 R 109 0 R 110 0 R] endobj 107 0 obj <> endobj 113 0 obj <> endobj 360 0 obj <> endobj 353 0 obj <> endobj 364 0 obj [119 0 R 120 0 R 121 0 R 122 0 R] endobj 118 0 obj <> endobj 365 0 obj [127 0 R] endobj 126 0 obj <> endobj 363 0 obj <> endobj 367 0 obj [131 0 R 132 0 R] endobj 130 0 obj <> endobj 368 0 obj [136 0 R 137 0 R] endobj 135 0 obj <> endobj 366 0 obj <> endobj 141 0 obj <> endobj 370 0 obj [147 0 R 148 0 R] endobj 146 0 obj <> endobj 369 0 obj <> endobj 372 0 obj [152 0 R 153 0 R 154 0 R 155 0 R 156 0 R 157 0 R] endobj 151 0 obj <> endobj 160 0 obj <> endobj 371 0 obj <> endobj 362 0 obj <> endobj 375 0 obj [164 0 R] endobj 163 0 obj <> endobj 376 0 obj [169 0 R 170 0 R 171 0 R 173 0 R 174 0 R] endobj 168 0 obj <> endobj 374 0 obj <> endobj 378 0 obj [178 0 R 179 0 R 180 0 R 181 0 R] endobj 177 0 obj <> endobj 185 0 obj <> endobj 377 0 obj <> endobj 188 0 obj <> endobj 191 0 obj <> endobj 379 0 obj <> endobj 194 0 obj <> endobj 197 0 obj <> endobj 380 0 obj <> endobj 373 0 obj <> endobj 344 0 obj <> endobj 2 0 obj <> endobj 1 0 obj <>/PageLabels<>4<>]>>/Names 305 0 R/Outlines 306 0 R/Pages 344 0 R/Type/Catalog>> endobj 381 0 obj [312.5 0 312.5 0 562.5 562.5 562.5 562.5 562.5 562.5 562.5 0 0 0 312.5 0 0 0 0 0 0 849.5 799.8 812.5 862.3 0 707.2 884.3 0 419 581 0 0 0 0 844.9 768.5 844.9 839.1 625 782.4 864.6 0 0 0 0 0 0 0 0 0 0 0 546.9 625 500 625 513.3 343.8 562.5 625 312.5 0 593.8 312.5 937.5 625 562.5 625 593.8 459.5 443.8 437.5 625 593.8 0 593.8 593.8] endobj 382 0 obj <> stream xڍW XWDĵjp5n$(t#Ȧ (ݧeYd[hҢ4`\⮉QhDs\}s$3tuխss_ caH$;9Opr]qΌdPF*ubH+|}|O/XH$\d 88L0)l{*? nqvgϜh7a?Ue2"/DAۭ m7vn@D9SDEEMVOS7n]T`Djp?UsXh e]ת'ws پ3Oe 180J K0=^L/ӏf 3Ό`F21Xf<3q`4f:3Y81 E3Y¸0K+Yɸ1f-Yϸ3Mc7FX0%Jmp7L&mnQh9re[/{n`k9UݛX=Y;Yz޲yfo/ע^z;uUK}U}m Y_q:HqK1 K5{QrZ ޼̃/!zo_$P}}:_)]mվۂ}| Ǐ5 4HcZ*-` I @O ŘARUBx俼U5p1&f+$ĆDEmO N&1X"XJe;$_F]bهВy QF A7hjz #MdkVx5$qa ^)KLvILJ1)o(8ү5 n[b9~jcG4;Q˾R7~$y|$D&5DsYYOG~7%0c3F .j8Շ})a/շ8L곋wns6sXa1]QybgVC5)8!$+gG:^ISC2q3Dde&q)KHEȷƋe}*!!m+mxȈDu/X(Y"xr@̛'~@<VB6 >gNB9 !1kϦ5<x%uCn9idwAB :mvn^1&u|+,k9x̸jkȶh_8)FYO0HRqCb8VG&Iq/e\ "Id2EGơE*J!4 {D»;Rvhͥs|_p廯rO]ʣdnoW TS(ȑOJAr6kq, #DEy dzOF1wO& <1^K9Rjw)s\[F1Y;2ep)6 ԟc_d{/7QlAa-q A|ғkQr2i4狆ύop'inâ GX n@ƍvW O9Hѥr0׀n/z;PחOABOxC hM1hgWW7nPn cP_h ]i<PS܏y2@KFe8js_LJK8b_“hpfl]v3LYr~lY- mB<,%3"AS \)dэ-Z隽MҍS0}G"g~#)o"^SEӇN9XӀȏ&h!Ȉ.#Н-@67z=:|H*)崽9#{1(h AIc ܃o5~7,}=3t3 HMYh,2C!&Yz̓wl"]NKF^ESTg5Tz ۷z#*}0Ч $(EP~ J:/8 sf˷d*ME] JAhfCY^/B!Dr43:h:o~?e2 6fɛ7xSm_ʓI b;~h` KןK8A>{ްIϨ{p]>A~Sg5ЧsfX531SeaŁFIJ*`w>/=Ѥ'ھd -{'[8fSFIO]YZw!a3E#,e z##^AsT|iib]\x+Wl{\MqY]r%o -7ňk*5}.7<*p4WaU4ÌQ/{pɷE1"Sv,uCFipyBW=^j,?AngTT6aAo"'qO]*ZBptLuLm>\f,hoX@~FW!?;+r]8 *`\!|(?<4羼!Pc|b_.=8.2ť5JA>>a{{Wt|kX͹]YqΣwf^Q Q ZEV|-lm>O8O'q|KP`0* V5@J}u[|Nnhش06O;9GtyCg drXicYM(6@M+͆ۥ'8ϯ:˴.$.Z;FgPur'zPcr\A&v: X):l^EzRj1U0-+8Xv{۬$zpQ+( P՜yc@$hc32;ϴԵ4w $tMrNrW&~x]_icJs3TG=A{/.X5҃MFj@Kv7_ߖ~[-ா30nS^G2s2 |> q擗T;Xv!=;xpoV2ބ f|C!dC2wƵʝ*n8짯q4 !T7Dm KEd뚝zة]iu]3i2eMTȞ>)7ոP+x '#^@[y4g9͑bfʹnqۀ[/ZE-wWb޼ym0_pvbwC4c]Yi(ov?!̅@X%MTFf1U`+]=פbO}ӗТٛV5ydcթU}pb ( R RJ4ݿZWKŶ'uO@C!u<+OT@)d.ҩqcD]]hͰ&|D#k)EڒF)ӌ;6T#ni<GhQ.!+j/Ooq7AZ9_w1WC*p92~g>s69y Rt:7ܟ%-h_-JKBV GtYdFJ< \Ib/>3_e3@upM'M:ߖǣftEanp/1*5>645~P E񐐩̓:^٨ > stream xڭV{lSPJami(v@J!$1q~|~$~$qljCB  ^EJRQ2Smtwm`4Md߽wNzzfZSU):Ҍ zMPH*ftʢR\H7 UEJEJNoϑQk~MZ)ʊ"=tH:}WTOWfE=%{TQ_IO^ҩyRj9ʦ֐=kɮ\j#ʧR(%¼&`U·&.x^A8I;圢nE^.+C@\m׹-nMa2]==ݩxll 6Zo!j&=` r>?ߗ: VepuHwg8mV#-~ߟ J@]Ew5jmg\vpu!gE.:INnPZEOP$t$郩h]+X:+:\Er AэbV z,&rcfYt#cC'S4a T6b,ТYO,䡙pD[/F/G0،XdckřA"тh⧿{booSf!qgɮTgG.I[Hv\@I88}ޝG&ǐ1:aa;Όw#aoOC'(! Qތe!♃-񄛆Jzv г9oixwT4FKTjʱe#.iSI=VZ9M1 ҆|Nͥ}/1*8jTxf7!>6ܸfmm;t))ɮpt *j;Yh-ض7g:7n7pMnxx$WVaRv*1Wi S~,1nID΃Āeq;brO[@"|tnتy?#0: D&S ic":QAk :%̾ͼ7,A$i1oZzN 醘x>z0VIP̊Ї 3y7;c9\&y$.3qԯJQ4lOcN,L}s$Bi%4;2,B)/ z{z ܝJ M[@QQZZji4YP3۠h߮+-'cj0Ů}^񾸍?8XpuC,?]x}|]~Ҵ>b\ZS60 ;s C$s;*#w%gHz ?b5 ݝ72CЫM}-% O&"9r`pexx-5r!/|4wYx^FpL#y4~^g,^E8(E\?}}R>⦈n1j5XNC>!!\r.6IGGfуeUyG^^FL{3k@Ng\);ǜ#F!#$9Gnﰭڤg% ~'`gki1OW]Wց^OHе./]i 2o['NT,LK?#h endstream endobj 385 0 obj [693.3 0 667.6 0 0 602.1 0 0 0 0 0 0 0 0 719.8 0 0 0 510.9 667.6 0 0 0 0 0 0 0 0 0 0 0 0 458.6 0 406.4 510.9 406.4 0 0 0 249.6 0 0 249.6 772.1 510.9 458.6 0 0 354.1 359.4] endobj 386 0 obj <> stream xڵ{PTa='^Z$I4(b/7К "&^]. ."(0J@.\,c5I8ӚXcvF߳ibڙ̙wg={hJ*h~}{G^2ѫ^iaI9yEϝ)Vz{. ,JJlqsXk!aaˣ5jba"ŲU—(RPe&+*bZ*C_qTVXFfF(3rB4ه-QjՊݪU1UbV]RLzњ\*[IQeNYGESTRtI6MQ/S *ZAS-T,]\Y~MI)=NK$MrY!lðL` ƀx,/u'I.RŸm=P{vj[rbCUQf0L|.i]6 {A],@,z _9 /]-w['9#X,%ၿxGgd- %IP_ǥdj7,ZI(`@'F~vG6W5"G8g }SOt2 Ei` .E Yks:-wC' /N ᖉl=e :\-%p{W}p/$ޕxWJ!$D$$D|,ո_0%mr?Ѿ]f?[~I01]-F\C=` js86z_ NAXK5X,ysK%L, jG{Bd/J'?Opr"X9>I͙Cp~Zve{\V"eajλE?B y^MyAǪ|mXUͶ_CKEh J1,2fR;kRlwL-GlOyX-!PØ{$,,L6Á=EVxk;o%22_?=g1vnV_'F5Od mnad ZJhL M 1̳#pGH$vgƠ޳]5n>x7Yvb R;2k&@“T&X$ eM,djgۏ4k!m^Zu( @"ޡ'҉EXo-Xo2`=.$ɻvѱ֓4OpU V@&'X ?OiXUu͕5 Yc>=Cg j3veU|F'|z'Pd;b-4AOrd$Lꪙ6m1m:7EL{Gf~q?{ endstream endobj 387 0 obj <> stream x]=o0w6I RAeH[dF̑"c2g _^߇ +RufNv187#.x!4{˾,~{/ފp|*D qkpޗyu'K$ 8ڀdm >a49Rݴ '|IrhpԵDS+H7G. k C.\đeC^&x&};^ֱ],<3'##uϞ%q<۵kdQ_.پmU$,|ڐ.U6 /Ҳхd7c앻aҽw 4r/ endstream endobj 388 0 obj [833.3 0 0 0 0 0 0 0 0 0 583.3 555.6 555.6 833.3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 0 777.8 277.8 388.9 388.9 0 777.8 277.8 333.3 277.8 500 500 500 500 500 500 500 500 500 500 500 277.8 277.8 0 777.8 0 0 0 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 0 0 611.1 277.8 500 277.8 0 0 277.8 500 555.6 444.4 555.6 444.4 305.6 500 555.6 277.8 305.6 527.8 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 722.2 527.8 527.8 444.4 0 1000 0 0 500] endobj 389 0 obj <> stream xڭzt ŀMl +SBH ` z3 &mȖ4{ll B !%5/kS?//w9ޙofD"Q,ܲx+L(|0 +;-!z21;%H]gMYD~Q~a.'N0qA!۽F4sv'Nig%nKKnmvHѳ‚>| .C>3.|{Pv V{uk>9??Hb"#$hGDF MٿE<('_zSTNCAR(+?5HYSRMޢަl([j5Bq0j85zIFSc8j<5zHM&SS4j:5Em>y|j ZD-PKerjZE}JPkuzjDmP[)5DE( jhR) ϖK,+,̔,H}Ib.m[هSV_I,),n_р 09L)~㭩ofMMA+]q;wb]gqTDE^W/^JKThSuf L#/3}/㲡S "bE/WB)_CU[R`kM5n1au. PGqz j+@wub(dINOMϽ~І:Kf~E-DMDs9Ǫf-qMߴ^n(e̴zF ;n5E !%YZ7qB,B8!ȉo.@}} uC9pɘ_7yXmAzmC{boCU_D1M5AWTh;,pjh0kt(߻4~c5+ ?X] -\khx/{ zx\nd*/Z =@y?:3z%}px,0;[o.&#M){7& = :d u0T T.y1<9xzUfp9p/ꕇpVɌ2 DeEFRP C W+)pp-c# < d%J 8(^ hn@fWxA^FNNgjbe,pRI-˼˗M6Zu\JĨb4n>uЀj@GN6=_MVpJ}MJN -G#ic5^GYż3:•+4V` SfG07mR ?GBپkN_ gYw܃/td)E}g:"KG笅9"ŲkAM6uɖ.[l GVLW!I2'rd6ӧ>ENwCLzE4q'#[$t[aK'=⺼ o.I ί4gͳ֭및BA eOyZRYHRb[{yĠ;Q_2Y y"ڋ*K6踑sV1FT Ùt| իnWh4dH$k v)P\kX4Y$s_ԥ2:Mݻ9"-4_4̻.Lv*Vs;$vhi9 ͯGQV{F4Hb%)nG#k7, G~Fˍn5h|)n+8G{y3h#mP&{7?C,TST[lt(KҫgL$E: L2r\v0mˊ,ԹfFaUKg6kG}5ˣL>ۦ,d'$uynq~oiAWreHjQ31nWc,ڕxM<8X&} Yp;yS:',]sSVBYWTIV0(M(/URz§{b>f XT u~j)"&(d~^f%'PIѳH3 2x@ sC4|kܷf1w IE7QO RbbOVL[ ?E?^z~eM(]+mn9mW98^s}ɏܰrCGΰ4m5uA}YBy##Y!ȗx1dnltvtu s dI[vgh~'# |VPypO~qHb<ߴ對}_Q c%nGs7o>0J#,g/ONz]:jC:Vee 6 M;+l˲E*? 싂#$eL$/1j:lJ:3ALn]?DnrY!dSWWonW}S m@rG[% 뿅={[5-d}$ b3 69d",\bչ(aDfk$?psߋEVơulXe:&JOs̭᷸^~咋:>%1 ;.[3cq_f@:V*ЧÖ l9 )7wg>#Q#xZdɁ8N$$v3xntHF<ڎ6C"=рGbAULd(.L (7xo:8} OS3NYsWN4A$hh)ZIx ;"~OR$_i{?͞#Vym Zz$!YfT[F[LhIo!ؗBIZP.)b!xB<xȯ!M'㦡JX0-mi (̿n{Ic;'|yal*ytcZ5nk;zl-mXoCo7מ~ x_ַf<`4OAkdҘpbLO}eF`c^{+7KU1:/vGŊ!B;{{B鏅b Q;.V/om1 s/sY>[X}YBJ1  {/woLR [9rqd0sS>G7)axgvUcϬ-{ g="? $qC2BhTG!f?)t]ogE1(] 8-?{S`69 (?Bf9T2vlJj-.mKj9E48SK93eTg3 ޿Rd{(rD 3Gr38@S$Fa#j'4rΓ*H&Ѱ]5,R C?ģe嗾KOXrzgkL@4-G@=^a)5{4{}̥kU'#:Q\BzCDR4O>Z| }sjC,z۰MB#p#_^G`32JPڑ2AI^c_:$鉉Hv 9L4Z]f.hnN+?^2Yxtݓ 3ː}ބn,sBL I"LhZa-%P9TP@C87a{ O:7z8$-WW $LЧO.{Ȭ,Y4hmBk8~_2k?E &s;DolhbY ٪U*eC͢έN-hF82SiW낅횲`BI*Zukym10 VͿ&x6|(]zzcLg阇XBq\i3ܢƣg~.pկWT p} vŠ$t/ehzd,IMoII5!e~ cTVC(8v1vvңy ;v-8mBip~a*HC``dxƣu.I rŗcpY+jIdUj4 }C[BmDTjYSBWV]x<c)Zdѥd2I;s"']PTqB+RM <6xC /hv#bIRXo_ܥȍ=1@~e&/b&}#S^ VIs;Zw \J\|J&~QDhpu1|Xg8屿#/?#) NeA!KF8R ^ys3r'Sfho0m 1vHv3J'jKvkuzFgtzt K؇B&}0\(>t0g-qOL HSΗf4=*?K/crcA\ɏ6>мX( rfۤR+-S7g7G{UK?c Ö;iTxfb%jgNzqx-u&r #Au)3i Lz 1Z4g6y榃ױU3MόZmi))_SF[ qr"A6wq>g*orOiz=/=X qԄTG+<wQ`ޮ R~K!y hInfݘTF=qgΜ⎅=<bea2"I4؏G7S.7=C߿&Xz6LD9iQWU-\Ɣn{X1?dw/L ݦAFDuj]e-P2{h2Zk֪Âܴ򓐦#dR!ҲraG\pOt-9hίɉ8y.Bx^cP:%n"ζjR4nV6H lRHk"uN\2?3bN )BWrun#AS"kMz>IM^ yGEZ1jB={W d8ܠv.SgA4D'ĥ(W̶Kb" ݫ5K;z[jV=Ĭ{՟w]3k+[B2V~݅Q6YhIbbLp7K{Tgl9 ԅUw/'.!+NKF:x(lF?klSsi(zzτA٤(.|GӲPTD[r'X1KQbB_q.+8OH%c426f<.m i tK.Slc3*:W1X=A(5-;> stream xڍxXg, cCe%jE%` "- ,e ˡtإ(h Œo4E1Xޘ5Y/sΞ>Y cnH$KV_IW$jK-fFAjfHR+Coҋp+\"B"aҤ)'M? Lmf|If)<.sUz*鍏jmn0۱=ʀY:7h}lC=܂!nm)mv:=߀`vv7f9;^TY%ub60a1}L??3d2#g0<3X36kpuF`Df3yŌf0cqxf"3Lc33f.3Y,d1{ƁY,e1˙OJfqd0k'fld cF_Ul&5ĬD:_ K'瘷Yhcd[dAq}b.o\~߭Sj~M*(6s]/hؽXupY.}ulO h5INUT#qF]UY)'!;[]]78ׯB9QU,ߞWc{8 5"?zӺl =_'c"^aAZe ie@\7'&AV.݀VL݋  R2ɠ6 9<ه"cq^vq9I@?X\H#5?9J39bO R|x~{_{}^Kpx"2qicv \|VhUnAk,B 8UWFkzY_xxך4N[PZ$BIt&UQўBdYgdCn@-HN u6 LiNO $ku )K,H@ k¬NJP_A4)g^{~]eM5gy[s\u)JG;GH6=<#Z #Y4G#8d>/X Y&"gc:lSD$"KB3\)}{,NNPyEb$5ΤNxp}y%` >XZ&jo7ώ}Uw 3t/ZY@>8hov5"ȷ-NHеB9depZ?mgy\> 3b>Fgd| Ar9hׯMƐhFD"w1T *HNvDhS& ep >}$YDVA=Ě &%'nbAY>.>1 ԜO ݓ VʠTc}̓/pMbIΞ9}GmLV#GwכhJ{GS0<:}҆m#-֞S܍_hb*XaݻB.p_ww7# ;Pq׬ C9X8>W/$nyG33@U epG+q CAn:g_h%uWP"݇|\hh?y&00؞}ܓe깛= 9?I)QQ,3;8MoumS ?h{K`HFY8o@ BFfή:9<Ⴥ/Òә94:eqHo-Bs>JOJ 7L@4 ͟܃PD! * Җ7G528 $?Fɯad3AntpڒlokR4Y@JП\GdkJlk=_O~l7~ؤ2`<;ԓ1XRW'db紥iiPș#o0UL{#4=n=fp4`an9r߷ltZeop3G?{w y!KVk"+ɟ+5ndu&-_mps/h,ʝ+}FGq>PjcK^]љ Y` SK`AM!zhHFV˼zۏbq? h/C aՁTjQkլyVӴ` n`xiVgOy";oؾb5sR{PU8 Rxn֮ļc -A"C=A#dhޞI~qpzszAKjK F|-;{hp4GlD"k?տТYI"EoȀ ?ycFsw}";}fJW /'˛>K$L-[šLv;cЂ*4FTڑK`U-h8D?.=:5Y AlW˼C,,^xTY1#*GYPS=fRW~X-k(higTvz]B*~CD&e^mW=ej_.^v⛦ʬk7yN)>8b畓,:zp;T:E=yjW+z~=@/V~[_J72ڈ]D+VR|x͎p8rR W]ԩ󺴲ՉKX|!6c _m(L圶-Æm55;?O)M)I)}X"@QO5wVan~_}EvMGl=?UGmh>vUPNOzp^?֝:.yr,uHf^gLnTUnօ<)&M 7dU(P NND6%-̔SNF[몞0f\1֮|viӳOaT~.p>ER5يjȦWBf#g9Cb$EFɋ|4-dо<2HעC^'/ ;ldx_Yg愗T^C5ߑJjsS '5UVZ`uug(?J%a<3AGws1_F==٤m?4 Q4 YFk:q~8ܞņB*A|`\E(ǁ}SGn0O7.;wgOa{z~\7`PԸ%|$ IMRmn+?E}qbGJ]IL}B^B4 PkIWB.<λzpj٘#27{m-BQ+?ɠ~a5uz/v1w'W~rՎa~% XIn6ueЄ_PoL,F LAtINP[`|sUsܷ:8Ui_-5<+,#ˣe<ꅝŵ?n*#ŧut[YKvΜ>[՝UٕĠk\}Ys Cii4w\$DpG}/WفhQͳsxt,{IK 3=tܮЋz onB۹u8߷Ǽw}c(P*,^wz!dhW5~݂L(15wgEtHZe!]B]#QTeGDv [G/N~|AK?;ZU5e!|m;E)?ўv @uX(BчƉjg>q,L?O@34+-K^0iyv%Q]gm?K>m)5#4nb+Zjhw.WnB@UGuOL 4*8⽡tW+Ufδsr77ϵ^1è3s!5$ rmq6:X渔ĬoY0P CRV˟kʌtE_GWݰg[(ML O %9 ݊sZsLw}@Mgs7Q۱k V)n% 쒿:o.75Ln( ^"_R0QaD3zl.=sjG__q`[)D YKƒAdŶWOR#@ ns6knI_ҾxFH KKCRY.l"& z`7#ȋX@ h3~H́*Tw[uF^wB x+NKb 7TyعlmY1MF.Дd,28-ϢHw+$7R.3.X-5o?@k߿|;R endstream endobj 392 0 obj <> stream x]j0>b].uGMF+|QC7L&aܴ#׫G[BMk.@j"UW LO=By9T9{]3r-\0b80vﺯk_NkM[ZRLbf$ kO8R+MAXq%,ZU~Je E0_ U瞥gRzΈ <">PͷWRP/ۭ+?.2M?5[  endstream endobj 393 0 obj [777.8 277.8 777.8 0 0 0 777.8 0 0 0 0 0 0 1000 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000 0 0 0 0 0 777.8 0 1000] endobj 394 0 obj <> stream x]mL[UmKB Kd` LǀIlARhp{giQFiOoQ6efeb2 A>e0} j8POGƜyyNyHB H̬k8jձZJtɓJۿ%fR$-!Ѥ'RBvRJ ȗHjQVR?xܓEt OFN-=vg8b]j4=t?<~xӕtU=}P_HTTKu egxkbx馛,z#郕yaV̘h!f t#keNbSp*B&rGp܋Z0,x AXN :/]LA`+ĺz MLNiFǽ*%-˰N|RSA N'"\)r~GDhF3`f~ X#BC (/tq [L"q1q[o6+2hy0؎8= aHӰsTxT`/a jDN4jQ"2.e˥Vz>"筗A⏟ַ48diLLOkU`Lh{2W?”[1 xFr4;Z[:1E E+{ܳZl '"yt\}mxrXCn/~5O4M#~_m ұ ͻHRgn67 +bL 練{?zoR:P=S(4 |oV߹| 7 ^aT'ܴx}8|6jgc&:xJդ)#ǂ4*]L  endstream endobj 395 0 obj [277.8 0 277.8 0 0 500 500 500 500 500 500 0 0 0 277.8 0 0 0 0 0 0 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 0 625 916.7 750 777.8 680.6 0 736.1 555.6 722.2 750 0 0 0 0 0 0 0 0 0 0 0 500 555.6 444.4 555.6 444.4 305.6 0 555.6 277.8 0 0 277.8 833.3 555.6 500 555.6 527.8 391.7 394.4 388.9 555.6 527.8 0 527.8 527.8] endobj 396 0 obj <> stream xڵYytSe!p!M# BQ6Y,K(]iiK{47o&toBAupqeAPAQQ񻙯sK[tg$yySFD"V]h˧>*wa %<.$h7٭8AOP(a׫hyn=z}<D"&%||3ca\|ZbHI^_|q3^3||^kE"2<6XAxąF+Ҽ&F*񳽽SSS&MKҤgR^k“SüTx }ZqɊDqa;IÞQgS,w[#v %Qj$R)ij,5OM&Rj*9MPөgsj!zZL-QR+*ʟZM:j=DR3Q"ʍOQEDWm܂z${hȂ!=C=L3+K==<#䡐N<lytGwF%<$K%ғ叙"pAn!71`3Wmxg既A?pE] *(/r_hi54%*>6VQhiv4<njmtE,s> &D9E~!x>W6a80J᳧Ckc;LaϞ1`3 Xzn. MO?Qжb!-`i^ꗕZ=۸P`"Bzv?x | S#B;E--u*dy[Oq[9,1x,Q*ِir}r'H֢?]/B>?ߋ~t&Ylhfb >I sݯiN6.2mrWdB? gfV!݇qWONWqR۞}-{Es90;䐤\>|c$"yzNy UG9j aXP87Hy\sz=z7KT\&d2)r^5<`vmzc"c!xeN>邹8'*aw; AhgEբ(UxݝWS6^E,dV0#ǁ9}Ej<8/aK`:Xs/Z599%_E pg5-" Ux~z DGEgnצςʷsٙMʴ[ހ3qxLi#T~ػT| _ {| lJ&|yǞ?WC#VFBqU =.fG\llryE_qsH79eբVbP\rUzsdNzoI# SckS}oZm % uʛt#d *; QWsYza+t;!Y@d /kgϞq2HB:kGp;1|ƔB3vd*^DjwqQ 0Fwr{|fU_7+/Þ2ϳ=hi6yߖE>xO_qUi݊ pN%A}'vڝ6-8x=u+$j5BzƺĚUCBp0ހӰb8ˡS1he *MlEVm\Z&R@sDq拓]pSX,^ *d2m`61N38"m1ԌQZN4%looY吮K>vLۗڜ/~zmJv=";n&EjFoD&p6YZ*}%gҸt.3}RE =Q]ާB{1]49(!@?wX,g0!8Hb$mrThsiR┊"3?w {^`yk,b! @uY@'iQކ7T!4G~.w)Jn -"',vv)e$c-梋]|̓𰅰cg ]5^8Nࣤ*X|!`[؏ER.a1 BA?9D$K$-cU`\nBX\5Z"hw)京 Pc# \ MHqNb![8$A|>hIDFܩfc{!V:{7J'. $*&.fw!&6%(ĺk[plŏs 7N< /)IH{J?yo {?j=6XmOp6-2C6;=i1(MUb Cw)Ǩ,i!Xlg'|r>i9}!H/H}sS񻽧$}p+:fez0~q>=]:߇](X4I^X |!bZ8.17A>ߑ16/ƽ<Ժ:%Yerz/? w:ah8x-Qyh(h+ڈQW;0"\nES#꽻:VrG{M(CTm}͡chm4KxDF.tWksE)R^X颦 +$cvtģ~ 9kYܜt?.g\i(ătw o /AijWy5d0}}zΪ)Ar7DEEDuZ=Pر>:L,aJPXm[׏~,ƒxS8JO#y}KAV ^u$uK z C13ѐw9R2Hg|<3~aDˠ\ .ιLK[m0Gl[Sb_BBCP ?m[U^(I(wƴ^GC/?)t}1)2B6$,kx>bL?cT tOC<%rI'dzz.F3 j!__[88=!=㲟&޸A܅-~>%0\D*9h@S) 7~Oj|G9S B9RS9a俐.\(@4ZXךkGi5EOXEX]&ScwegTjUr(,8d,o%'KՀdGsm] J E-ٲyu::yPyx/Lc^6 8xV,ާ5ÉM%[nBZV HJLf[t^W $YHb=kQDHH(F{ #J2zuFojj_Jj &b:\IIƢ!>xF6lKMe4o4z/ ,d54$zugeK,Fxm(WQꛪYز ?AX+GA lVF<8cɚ \A1?K$\] oTh<<>2jUI[h2 5dUϱ4ʉ粚*WXnSb"6Lز:Dɡʂ:zv/0k;܁ckKzF,Clk2١4Էs!hveh;0Vɟiyݲu[K~1={0)p^'$cwE°/ĈƲ!tMNiMCPٸ8uҘ0K4u6Z Buf[,)yp؜ž.Co \ޣĂpA' e;ItZ6BF pPoM 'o2U[[[ 8t rsUf X'1ߤ=h=ZLv.MNھ&x z-pT%Ƽ&VqcE5JwS*jC%bt h#y;9G}9#Ή+/[0 g؉mC؇CaIO3ɩm,5q ZpouT+3,Me7=^׿Od%tS`EV~)"oOrCR^'EX*Dr]9t\AL&Sb֬"]\/Q .W6"os]QZ[yBE$lXStFL4Mh6gzx'R{T5VMOMLyDugNG.ja%N| $rJO,axkpْj"6€]po{BY"2yxVkf8‡H~17nK$1@}V=U-?wߏW,' Mn20O@b{Jt 8&& sUYd'S"h "|#&rEuz%jtd=) <4\_ F_j:B$:RZb4Du)Iw;*- u[ 0ckѪ#l>Ђ@o!TA܎rEȓƥ9OO-h{"1uoK\xȖNn%1t>+;A &X,"`{i$RD?+M^Ũ7l Q@EPe0DIYe2K W.fcۏĉq~A/ɚ{@Н[#<]Tb!]g}U;-,b_cM]|uu~[$ˈ"0J[Alp;yEt1eyOMg.3 Ҿe\H][V7uJ~`F΃|1!tʋm_KNM* @'*=FOpX۰W͐\~~E׺/%РcX@:f۾٘1VkW!I )q.xFG*qAʚ_$icބ2޾]b`p!⮹w\sHe_gmE*$֑_dYW#0 d`oNKRDGe*07BӐjHK2>xd,ʷ8xcaPYCеm3 endstream endobj 397 0 obj [319.4 383.3 319.4 0 0 575 575 575 575 575 575 575 575 575 319.4 0 0 0 0 0 0 869.4 818.1 830.6 881.9 0 723.6 904.2 0 436.1 0 0 691.7 0 0 863.9 786.1 0 862.5 638.9 800 884.7 0 0 0 0 0 0 0 0 0 0 0 559 638.9 511.1 638.9 527.1 351.4 575 638.9 319.4 0 606.9 319.4 958.3 638.9 575 638.9 0 473.6 453.6 447.2 638.9 606.9 830.6 606.9 606.9] endobj 398 0 obj <> stream xڍWy\WPi+1ݨn(nqL\Q PQ@ ʾ"ݧEY JwM_L2*&&8)rmf2{tߺwΕ1ffL&Xb/X9+Ip3}g.# Iri{ #DLӳc9>dd2>6 Ntp ,@_ϯ`Ie5dfTVx8 rL'4576+-[ JbK c_9 PL-fǩK=pVqULTj%~6"L <#DyAgz+HAjR?޺#9}lرb֣~sMxF L^~"~+WGdtT ?lt~u&+ֶI+V\%*x@x}ڞ-p8xgg mMbO.rpVPP .{kVl._[ k._e sC =v6jxb dPsGLb|w}wV䇕@ qn7'\>onZC+aix%zo=z7SE3T^?^J@fu's]1즖cam{Jw'2nW&[B]Q B ˓}9C6 Èy8^ bn pgkEpJٵV@01zǍ#IlI6IKV;ʥiBa3mGwdI |7T՟cz84(R>@?Dl'U?{ƾBdI9g-:/[X"Z38phG=J+` .=gq*dd}z MLWv9`/ YGTo>?\+;[ "MLlh7EWQv %M3sզXjɉP75{2_j|c@y5ȕ'A*wP/0cew1Dg~0(2  TӮ!hå!h'GNafkp=f#q(/UEMW u-|Tȶ[2uR-:)"6m='(%tbkz9S.b |*k4q5X,N9Io^d-~,(-MÑ^튤KCnz)rAib"gF!B㟓^ߐʮoO5ST'7[ -P\DFpK̕.z|+hNmPlez3I[.{UU>{(Z뺧9ے4E35pyh+?+dxVhˀ*GUit0HNYjETUGbڽjv,W ңUd1{`0嶵Y}$3s6h܍Tf.ȚDAKB!s:KiGGhݮ{^͞D9\HgLKp|X@)?@RwH(e4!+E6@BnF?G)-9!#rb||ƾQ EpkmҍE\v퍖{|ӐUJ} l._ *xZ ?%c݈ΩkVU5)p(Z ;sU4jHn*xR%M|"N&p'mPbj8DI42=#8k Y$(#NijJ.\9sE{^ZJi VkBB);X{YH'aUwr8r :ZQt.iE >gqO8“Osԕ flp]IUk;t$TP)(ɻS3MNo88\z_$}MGFȩt>i(d u(dA՚عJR.z;x\UPSg;:>(`.GӢݪBҷԚXZ)Hׅ7cgkWȓ"Htcz`E)`TO]MzNf8&CGv!zv G\Ppf߱vh-Ae^aN]FIvvC[7S9_?XNU[;;\zϦS K;|OlT}StxT]ϝ6Sp*S/a^q=>М#&PI 8hRK_ue WP*Z`ÚhWjkҍһՖuM7q;}PQ>]\" SށU$}ƛ˞e'h?>((g QĆ[֘~g,M98Xd=K.CLC[)( 'ڪ96pH"J[Ĺ>4B 917h=[yZɹDkJnd>Wg0CmL*Q};+s4g~YߏI? 2i(; KR?!8+" EF3Ě*aMڝ!gZ0?#uuӠt]vEeh dN|g2ӨO.ʻh?ZY6Ęo%@IiF|+Qs"n5lk.rek(:iZ5E~Z?ߦEh'71+VBVAn+ew/Khwsr6^Cfviwؙڝ;g[EμAd#tڐutM+Ba- 7gW^Ж 9ܼ(^s5{@pU{YH+Q 4&z-"b C+l\Lx3qQX5"zm0t+hiYP)]Rޅ W- %޹پ !{_ezYHWS endstream endobj 399 0 obj <> stream x]n0 ~vT|hIr`bYy' ,=s'{gm3\ c+[r7c~=1%lPMhlŜ',ri:iBp8N1mB^,"`s8c|gvcA,k-9'vŒ|$HHȌ8C&D}lj^-FIJVeV E(T(3DpLӁ{qsP߬u4O|xK@`Q) endstream endobj 400 0 obj [817.8 0 0 0 0 0 0 0 0 0 0 562.2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 306.7 408.9 408.9 0 0 306.7 357.8 306.7 0 511.1 0 511.1 511.1 0 0 0 0 0 0 306.7 0 0 0 0 511.1 0 743.3 703.9 715.6 755 678.3 652.8 773.6 0 385.6 525 0 0 896.7 0 766.7 0 0 729.4 562.2 715.6 0 0 998.9 0 0 0 0 0 0 0 0 0 511.1 460 460 511.1 460 306.7 460 511.1 306.7 0 0 255.6 817.8 562.2 511.1 511.1 0 421.7 408.9 332.2 536.7 460 664.4 463.9 485.6] endobj 401 0 obj <> stream xڭY tSu~!P+DSuJE( bZZ/tOifM,MmڦKB -;b,(238"^x3_Zt3sr4w{"F$X,-Â_}akgeITBQ=#r 3'Hu:0fA3zыL3Yl.yڰf߆r M&'׽uMС\8Yt&|xHJ0JYz|eь pjR^6mF_օ6̖!Ե>hb;1 nˡo=CDA@Xt2ѻ([ F0M&E 3!PP悒,,|$gamj]|gM[nƜAΰ飴W`x{ ά9d0z>Ӆu9:(&|B+`W;ځޝ:W1çgmKf*u=-ˁ}=nͼi@\^z|)ٱ.{yuً: J)NcLXjl:w#i <i!KV~Z/`4w@+44;\Y{ׇ^yCy"׬T,%I "F;qzuځb\[n;.}8)˷"ȖZjTkQW`Bh}N +%4AyB>;ŇjW:uZʌ0/:p%Ưi \dBbjJ~ kR2+s].Ok$9|P"b-@zW3 wc{_o#;U(*>5 <=?9n|WZEY.'w7ۓ"S2H5uIRy QBa.zM 16ڌFq_ Wk$Zm>.ZWd74cTS`L%Ғrl̢Q9pkZ){ ]۽L`/ E wsxZ ! İu̵QL ۽ j}ICsAnn3˹i]48(? >&?>˰Y#v5B>F%bFRO9XYF(tMߊgr$0)0:%C8wL/?Yfޙrp#\]΄CHPB*Cd"D&3 (ЮS ZYLx}@n@c ~E ҕXxgvfX5Ѳv6M(egR̹_ yWw0OR͛qeb '4E<\^v\P:&5 ZmQ{Q6YF\[ KFzJ z bP ԊܕY\@ZK'Z?4i Zs%AWסU+ ff?3 ߏ=ع݉S|9lK'4g9,9snhse|&2 w3h;ŢN|;k 4r y@~As19˰%r'g90e9QCXfjj ~ 3(Pfnْ94D\mL^}"3Tyy]x(jϡJ"8=G+(D$U"%$rb֘ =2T7%'Ynli78 uP '{q+SgV uv}d(=+ٱ}~.qFSڟfR;C"*&eA9k9˖LJ:cz޳;FUЩ1Fob:[e[CSȇfywz%6Lo5&( MϷ6^·t\~>vf:YnI'>I)Eg7BD)k$Jz\zނVcIqbE^0,wnj zNgu@jvNv xi4 ,")[ͬԑc#G jH5(6?= k@ }~`UWSRV1?3](\ILUibeB˜Fd/`~Pe>#-^AFc㓼< ;J@B_S BʈKچ:r,RP?]+S]\F?ylCz5s *u? Xi=A?]֕^$֙}cx7J O*I}aXf:3e^ߪ+ǻaCqdng6/ ~e'[(8Bc= }IRHguFγ lCKlZ6Pk%ZLE NA\w5fb ӪCY}DchA1H]W(_ь8zW4j׺14f\bAm0ڋ7P-6~@C mºzGסי oSO+2 IϘrc9>w^ME"=>T%6}A \ibz2+Kzsf jSBk Zv(́4q."eɐ 90}{^`¬}pWuPe57&wZ ޺IBEyn!x ѹ.4ڡBoQ ={Se}8br?4+.Y:mvk5ed(r,c_d]$' ZyNs^#^/Td C@ I#tv߃nkہvfǸšQTbHXJk,+NKEGuWbx!&2e+QsZS8.Hf4Lw`5&wG`_wi)ysw0do.dۢ;-hL큆{ydY:a$coٱ<Tk`+hEOSQ[ִ;s \#;qud;iGӌC]S4aSÍu}%ىح;`njLAxĠv edkAٟ3ZҳȍJ3lhjmleC;hx7;+w)ݒ@>n Ja x2? 6G,;35Ǜq绐wn/GSMqG^oN-:Q%K))1W9KEYˌ|!^>'j3ݒ =XQӏE O[*{9(pؓ HU\޼?$mQG9Cm2 *Z= aGqVJ?՛tFE6YE?~^ezy<榦$rG6 >o`5c=>3 TDj-ƯVV&N_BSA{K}}>Ep?zG5P~>ĦCJdf,7 ۙbf6>nXi& 䬳)'ђ>O'=Opl[We|8u\m퇅2@:A%њګV(k9R7$[.A3h!*1 ?2+$1m C=m{a݋=PMS@DFIPrMt&NFI!0l(Mo]aܬSaS0OfzPe:cegG:3 cJ"*uً- ٦B {WtOf uUl<$qT͏#´BI+=JAmSqV~xkJDT'H>2Pq>r;1;C|Ke(:*Z-Oҝt_|iSG/򔨠MW}YWPa"l]c/sxyǎ_5'ǀqh endstream endobj 402 0 obj [531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 531.3 0 0 0 0 0 0 0 0 752.1 767.4 0 0 0 833.5 0 0 0 0 0 0 0 0 0 0 0 0 767.4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 590.3 0 0 0 590.3 0 0 0 0 885.4 0 0 0 0 0 419.1] endobj 403 0 obj <> stream xڍU{P5])nƊU[TU)B RUT4B DH(D^$_Gx*O bQ@PDZk>{)تgCgB3۹;̙9! $I~ko톥Qi{#*O'񬈟A]J<~iޙ8Zg i+@:9Tq)QrdN\e˖Kyx,G)%krYlZXH6£e/Z`ARR؄(h\A OEHUJ䃰Xd⧊ۭK֪"dJ)1ޗ 6%.+1L0b*1xIsJ"@=iAD:7nʸQae@6YjAwuxKd!">]ayW;~RUQ9Mots|ŵS?xdbzhhH|C'7.(Bڍ*"]0 zc3<(hp)"uZwV~fS7;_䩧HPZP(SQn(4F/̾]Ǣ#eM{mz蟺p0;+~y6O8ƈuIY[ɟfh/U$B={M>C['ֿ]ދ USC]q=O"1c̪e fJΠG\@i{[s|nEALiNkF;ersi/lTp1%z0)>N-S^~aI 4H+rT;cc}Xݦ`2|F-5lҤ] oz <FWmY4=Ɠfnyl gn]S`\KC2Z[UJևS>k<=Lޞۖ-9wg/M ?]`4Qu[&fS\ӱ<ʄe,AzMG T74cyȑvԝ+ջmj8'??T 1д:ظhPE{0 ,Jâ.nGr#H0oa2D֞.fƯ8_dP6՜[pEQ$~HB;^V& V7Ydld*8f03mˊQGCbwbyqhP E.t{ Yx>7 = ՠU_<ѫwY2+`z-ъ4V:(oALk^7ڢSPOpvSPMHn5I3HU@«Dը>;=[3iVz<}b;^>bZPڿOլ(壎De_pehym= sBЎTRrHb pPlBBɨPBIu^Qnym|^N7 I|?s$;F<@WES 9Eo,v71_z< rmk(^h 9 3r$I.MRK pa9)bWBTNFP쀈߃0z_gƔ] t)BUPGMǠ *ZP vskXM}rk}dtFreC&HhbbfU endstream endobj 404 0 obj [602.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 277.8 277.8 0 0 0 0 0 0 0 0 0 0 0 786.2 0 0 0 0 0 970.1 0 762.8 0 0 0 0 0 682.8 0 0 0 0 0 0 0 0 0 0 0 0 0 432.8 520.5 0 0 477 0 0 0 0 0 0 0 0 0 0 0 0 361.1 0 484.7 0 571.5 490.3 465] endobj 405 0 obj <> stream xڍU{xS?)倵.N WXؚ֬wy@a؄"`<<|d5VvE x} } q<:Nx@ꭌ<$iA 0P6nkg-˛@hHE/ = S40nR(1oa7da {F#  4dU̺IrI-ՐY@g1hu7[\A,f3o2(*V0έ? ĸ-`y, FOEGk?^QFl~nnϝb-uկ\T&ѽ}G Ng]ZiyUWӝEy )/c /X@<$A*$Gɧ'W hkF9O?9".dzvn^upVդҳ#?Q&O"utJʳSE DOer3qZ ?(Pk] ѱ\Cˋl,;6 mwnN}ءY*6r09^4M@*]mII +bgP FvJji}핑A9ϮVSzrԯ$zFy$8s ¡f*nI(9ɟDh6pBρ^Uh`~Dֳ+x6~_tftNϿ**?G66zp {gsQ{0 'Ѭs#@yvrh8kI6/I{Vw=AoIw YB֫9xHh&͟:(nS-6EMd߈oBt\yJ^;F_qMFi8чfڱѣ@]l^Al|G*JoCy/]f @3RT(Kkڅ+$zVi0~H| 4? ܌Ӳw *)Pkl,氺"|;r=%tu^B]kcհ*ތxKSBMϻfh+Fv,Glxx-}* V]Su`/h0lI>Eşƒd<t NT1I,> jֹ0_9 ޺5TېY* ʰȸIRM+l^&dRVW:^+`SpynN ~T6Nl\VUT]dt׏x;z{f2+6Y_٠WnN`ڻf=P/YFh80x? ,.,_{=89m 䭪s0{r Rl}-H8I)Vuce7gh_lJdr?>5υ7"yS9#sڪvj*P)0$ʁzjWs0g`C~nؿwYθx`:6vn*^o01t [,i5rur,S;zF]9hA4Jc&F1TNM-Fc*Ӆ33%g4fdߕy`v6غt endstream endobj 406 0 obj [611.1 611.1 611.1 611.1 611.1 611.1 611.1 611.1 611.1 611.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 546.3 0 0 675.9 0 0 0 0 0 0 0 675.9 0 0 488] endobj 407 0 obj <> stream xuTkTSW@rQzGzoT |bQt D@ A3T aGЪ!ƄXcFlPPVu]2>jguf.ڟ3Yg}>)OOiVENY6p!zZߔx )CZ!pae~"R Aa'M3\CHHM|b$Y§CCBfUItyBR+t!MIJU'M2f) MfIS9*VRʣ4: Z%4uFN)(U"SoBePZ5Nԟ?5EEQj׃)O*rS>'%K%yzM:*/u eC̶=x_"-6`31#E@ЈF[xyU/+p~͑'w; \j\p`i̇0aGfFd`63͏$HV偐 R נ¼-\Rs'( v~-f@_t6CVJq֖zYGZ~6Eiaǝ*=rxcm#w5o6Xr'jatWQ.aJ$؎هW LsZV-ė/9{ ofVRXV]ƞΧP LGv&Ӧ|T/ 9S1-Mi%]Oa8ׄ{{v;}WlIY}+mwY{014i6n,~o::IK&p̚Ҧš̠XoPM+@n:K!/Y)go۾w7137i O^RPV*fn𦰠Oy]n{:mH*b vF$TnX7tBlnzy{Z6c BB<# K`AEq<-/682y94'OEeiuƍ igspJx+xDHlq/4Md6ťH5X/cH0"7VG47q춲8& U53C߄I&4/kC7"5 d1/#^Jw;o+dz┲*ӍӧՈ')hC-Y@0A>`' fߗ!s)sݢ<~)&ΐq LJ@lB~Ͽ] lk Y|Hp Qa> stream x]n0E /SU摗d!%&HTJS=HX,I]{O$Do;&vZY@/p4:9=v-ƐH@σw??Χ2^Pm(8 䱯>NW(~dtQ*Y =2.Ah W h2(.i,I y.k𜹚 |<,3 v-sīv! > stream xڥyTTG1:E!.(v;H^Ea3ghґ>A cKUCbkш51}K|zYkּeg2{wF".ZnzrS_ ڣLķn7Q0}e1]"B--ߟ`i9ogv7 QΣ-&M>mdK];;X,w rwv ,V:ow i1j{PߌCBB&8yN p3zE w [@.,Ypv0< r X%Jګt3J2ey=3661N挤'Hz1!L'ӛ1c0}~f c b3o30C0f83ɌbF3cƒLe3+#ff1%RfY0+U-Yìe1 FƎ׍0ݙ{ɓn_Jw_ݩ{dMLeeeni=rz3/x) 0 F {#fMzw䕵i9٧[߯!+Xxh ^.0*06#_{uQx+B cDAI ˉ4#RO^"HR_%]v!+Azy_ڎ+O_?M]^cqмhN&[s@=Zh)~_wr2!31=Uj 6JW;*qq1)i|nm4].J!!IBx ZNNL%@#D$Db?6p^`JdIϏI$%(8#1D`(]}&|\:Z8*%zFrPbOժx*JFQJ<.Д3dKP?(k:Lu{ݿv+TZ _cr)]À-2Rp/{{xVTWP҂Cw0Ty0pXυq3CX0yWaM ?{UV(D~ w>]ʭp1$oB `9L\EG/Qk`u)yF ,_:2 y8Uud &݇ꎞUFxM|sO@*nL2<,6j!АZ({?!OAȎIvƆŠ^B ^S|R)W[s>_O;sĉr}ƶyYo>9>СW~QZ^^PP^](?97);>]P!8oQh (Oh=`oA c[kP( 4m!rطsA;]: Tlso KP s`/ń+t |5)5=#2۩1JRā%ǫs y_>w2K ɩGO7r_G?'mj!Y\~yf!8ooQ|oa)ψDavannd+ qϵ{q 5?*nSClǽyIj" AC%;p0~uG϶B>4qa~!eeygOZRzIB+)FEQ}|cb";l` ox[h(m܆By.` u⅛6.SAH?Pe8_q1)%=|ޮd @#4Ǧf8)eG"wZe}`S8WJO_X@6A>?V1=zҐs' V/49+'0{EԽ@F'(Fp÷ovcbЬ6m;wK_&X҆_}3>%*"bK˕ D^p+ٙ{-9 _~:'P "5‹a>(ҞBP܏X3k(.LrM\[C ]IPWS ),/ȗ_9;ˬ;wtT7Vyzw|HNLNixD|IUT߾T5V 0yG  ԐՅ3ke^lI <hI`K8|07I"b 8l+[aȚ뭭v,nC=gUˤb{,k^_M|edo!B,}5EQ)^ -`ZBb' uz14;ӧeIuTa& ǃ~u:oj6`Ai93?a?q N# p>4!5GsCIDuۦ0J-!U%fdO'+bm7+.ЩRVdyrjuׅ"QV#=gmL8MMgbQ۟,HjXf쥯Yܗ.FqSd[Uְe5lM]Q7uL!KV44|uv:ַ #$Gh1TJ#.SVlUuسׯ[/8}^E`*=wϿ ;XC g뼗75՘t\~ːY0dl@Nqɜ5:?Dfv8Sr:=9edpT!VZ-j~c2`P:$&(:\>hAϥ;[DJl36Tf>87 Ab:p'Op,w҉)ËFS$2>~6.Q(y?"Xb2#} 2)YIZ.KRJS0wԥج 8NdA 媵k #&&"|gZ]돍cpnOkܜ|ooj\a%gm7RDQ5ِQlDg)զddF?qF$>/вp`ŖӎK)h)Nj%LicpOce!$&Y8=Sixm$p{Xc7e,ͷC %PMOLӕB.>Ydz'SvFm'KF`P_ V@skջ5vt5{3zUĤ[zxRW3Z)򥡥B8+jcͩ!9UV?Ҩ%ؔȩsRc3mR(!/XMˣpf2]㓜_̾8㻆UF778#K۩*:iWҼIEiɑr`%ZܸEV@ NgqQ޼is1>mivYS Zѵߋ#ߏOMϩj:sP`SJM=zGp)SZ|ic}G@Lְ=Џo,4b?KStb k+/TʹHfw!{)))gX җ?U{f(A%(VM'h|N Ե/3:7Дڽ!ԙ ꏡO*3z8%#u\y>.l},Fӎ#shl--eqlJ9fUҽ%wPT;$(q#ҟJ"fhvEQJ\r"T1'wӦbkiPQ9|*NSᜓa\m'œ^h~wAHaO.̞r@1;zH0Z.,ŘRI}53nѵn(oUx֡fȀ8Ut)EY9iy{ ΂8* e97z6TV}縕 bԅv-^] юu>ɡ^9I٩x~2<-T@j_qv~ivpaLPh"sJ죙a;qyͧs>vk/999Ǽl '.~ig#71pP[T撹jN#36'lhL̻*oe 3Jp)5NA ^ܨ+ΩYܒ  Ύ+(ǧ(uLsA棫x/;uS>#C`FeA2W3oYߖ?y uintJ.@zɋR\޼Ͼ:Ni|SOgP*«SbJ(7.@2ך?g uW_ٚ1GEs8Kꍾ/ee9|5ݣgt7((2xd:vtζ|]'' e;3 |E|\3 f橌 -9oܵU)`=#ןi2qL'ܑǁC"}|%?>(#NТ8~,:EN *`Cq|r388ߋV,CbW=_W&Ȭߟ$:<t4Yw/Dob-l v_|Wc(:J˃/E֙ [t6՝Dbȟz8p#3i1~[<7oٷh׿j` s+۾[jم4[ԥH V$**(ʮpl)hyiJhY(:ǥDŁ#ꨨ8BTQs_\u x}]iPp{M)U&9ݩ ]!$"47/19=3)~kJo5\ƐRe'τ;H@"98s&7_Zqpqq/>l KYV՗ -ky^nn\+WI-p&?yRN 5Kѻ 2%^RsNѢsKi J *j+yqu%k*3A8%h`qM+qPN].>ݸd3#O~1OH̆lHLOL{$#0(ӸabdR<|L* ޽F |T~㲳Kluf4 ,Jtg1j "jQm ی:u onqpF[ P^Y4d@jQs %#ǂ22<8yAˌ DFK>6 @ǕTANqR~85Xz ]*^m^Y7'(`gc h8[|3Kr.n*/MjpxPr.z27 .Ozrl` =[{MM[sL{ =O7큏_UN endstream endobj 411 0 obj <> stream x]Pj0+K)jKhݕ ݶnǘn&!ƃ_e=dxo:VZyH z蔖G39b4(H%6*nIRBVŹy~^q-̣ǡҝ<'IͰ{}}:NvעfRXVKH-i /KFPteq!)([SNA!D'sx.Q'V| o endstream endobj 412 0 obj [826.4 0 0 0 0 0 0 0 0 0 0 0 0 0 531.3] endobj 413 0 obj <> stream xcd`aa`ddu  v aYs>?~3g{I "? Hu X -T29 5/4''X9(3=DA#YS\GR17(391O7$#57QOL-Tа())///K-/JQ(,PJ-N-*KMQp+QKMU{CL:)槤t2vfFF͜|?}/4O墳v/ZT]-"[uiwI|?oNc;_#{wv~f\;wϿNm*jrK> stream xViT[e!iEĭiSދU.m*.Vj)ZJ)PBB ,o6H!%JRjkS:sn3GQ络˙/n8k~;'77qp8lLmںaMASMk0 9̢2 xgyYDJm x)5JJIY&PHJE҄ $Xf))k)/Iؔ/K񗲄lqAIT"bmr\.O/JK\>慘~sM#;c:oNeLv0mh`{j¬h,$Nr [hWm56U tv/NHON/˶,E]祇G#C#~ .WI%`r*A PIt&C^1a40ș~)M>ՃjMf U/  Z0-tG}/]JPo2:0^pP *bPVn[cj@>?,A7 v=K+MNG?B9nCb]U@>?? nٹHK- _Ŝ`ֺnzt~`rj"nw]K%㧁Gl6\IzE-+#;=le"VֳKDN$BrfO=6ZBå*E /ٗ͢du9$>ǝ?*ڭ.̂Z(=X,:Ma_.m,%iXiψn)v&!\O~OA 6ҫ=U&Q!0fF7q4x1 $hGC*Tε]>0|Q LR6+)vQp`a$fsA>ePϵ,&%Z}+)l֌{UL'A>+FhˬWXn[sato( ?X^d_5z }ȑ-vG%`U|ȭ*ԮXV2TB>1I6p%Q35W<6]xji8D tpF|'ިUcM˥@!] \@[9@n5}FÑ~ӶCG'<ӼZOC#XLLBC#}e}&~lk[+xl4>ȑqs{a^gn1c糋UR/] ^*6Ok5߫Y} tZ 7X ՘DHsOp=~_INE2٥X;>Q 8dgɦ z{+`#cC20J=đ\Er0s~F|<=bokl98,֘@ #6(k*Eu`7 3?;90+/Wp7Ƞ?bCTz]yc5@KCh/t9.:UGP8\,΀ r{<\wJ&s#_\m2Tkkz^zo" ' F3'"1AOGpѕi^]UU-w<;#Mݞp =AY2}.6Qgt8^W޿cèJ/}]$4(&Z[ Q:4}8\N7ryVTk;Si NJ/SFoeOudNv7'\w )X*|LhNyc ;vgo_w7], qa@~MrMc4򶆎9TW'EP H)ˎ31E[FC"ȬIE WCo]FIノkK>2w3|.=)mčQIc%m ~fR/{g9T%dSSNAWڤ66gy=4');+{bYϩ~nha]4|%Êp~6۷љ8> '~eB6Elk?Uwpx@`W։3s^R]kIԩ8|;f' Եݠ+3kB}糀f<qWu&U%1 +u1i$lp7X`\; endstream endobj 416 0 obj [1600 1600 1600 1600 0 0 0 0 0 0 0 0 2800 2800 2800 2800 3200 3200 3200 3200] endobj 417 0 obj <> stream xUOA 5HQ& ݘAI"Xbq`))<5*j41=={ѻ 3mv%3yٝ I"~pYrMue;pMA6.MaN\pVG"G^tũ6G[T:y/P64Ҹ˹|f+m)SӊH,(&leZi3K-y'2 @$JOdx ; ,a]_#,y\o[bTf$&bTtϢ]Gcdw`3R*ݳ.Ώ"@㦎,Q-L5FWEPҨڴ'Nj壢c GNW9ڣs|w7 w> stream xcd`aa`ddsurs54k¯ ?d~1gCE |" Hv .WԞhbhfl``g``_PYQ`hii`d``ZXX('gT*hdX뗗%i(gd(((%*@\|CR#beR @U[kGߒ{ ]}Ѕ{˯^|Z0"zߒ~˭.|6s(/q endstream endobj 420 0 obj [799.4] endobj 421 0 obj <> stream xcd`aa`dduq rv  a94L?=b$^D/@`b`ad(400300r/,L(QHT04Q020TpM-LNSM,HM,rr3SK*4l2JJ s4u3K2RSRSJsSn%E )Ey@G1]ǰEG+1>{y wWVU]V:{<_ ~Lcb19{6msxxC_{d! endstream endobj 422 0 obj [285.5] endobj 423 0 obj <> stream xcd`aa`dd q qv ugi2?d~1g{I |" Hu (.QZi``g``_PYQ`hii`d``ZXX('gT*hdX뗗%i(gd(((%*&s JKR|SRb:EGg`qPtEɒEEV-ZBtiӦ}_;q|I<\=<ܫr/ c endstream endobj 424 0 obj [778.7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 492.9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 383.7 0 0 0 598.1] endobj 425 0 obj <> stream x=}Lu?YC%sƽX ( Dfc ZF)-miܵRZi8Dܲed#a ?3 `1&%z]|ɓЃmoIAʱ X}f#g I|L(K#(>' v%H1!T P x>Gen.0|c"uM"49?G.//Vl/·J$ꉹzH>X!}n.L^Zhe:bp rsX[mmUg4ҳu"HKN B?p" g.N_5e{(Tݝ(oZ6<<w|:#'Yyҡxr+\ 9;qP H~8hdI dy)햕)r1J~}6v0`st[*|vGK4@X7p4ݗyu-Me߿5\y'<~w^e`jt:I'n_v]y dHcH86e(trJdT],%V2 endstream endobj 426 0 obj <> stream x]Pj0+渥EU+xm.,dtkb<5QC7/oo&*VAm5oA/8rH]|dDʼn3-sqV;7IdY&cz iJqrvQgSr. endstream endobj 427 0 obj [750 750 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 555.6] endobj 428 0 obj <> stream xmkHSaq̖v*E%ӢТUTy+K4T>ӏJ>A 0NIoU P<:MprĐC#_އb%Ѩ07M.Mdzsf?htFs; Kp'GF٧Z k4zތd@ew}D C֦Zzކ kw@&qEGYWxk-ysq~6#T G/%&F>˴J#f }^ endstream endobj 429 0 obj [657.4 591.7 0 0 0 0 460.2] endobj 430 0 obj <> stream xcd`aa`dd u vu aY4L?200AC$102rVu9Teg(h$k*ZZ(X*8e&')&d&99 ə% 6%%VzzEv: % AũEe) ny% ~ `GI܂Ғ"Ԣ<Kg`9%s|?U|;wi9~T;RQ-5]_~;6Fܝ"{վݛLΣ{"wۏo_ {.4;ߏǭ~lf\]?}.oߌ~ > stream xڍW TS׺>!(TZjVV[H !3( $SaRQZUm#UCֹo6{۷Z?|"ޞDÖmd%6ͳ- GV"WN,D[Oj8yRߏ>'ǨG#){dΙ:{R(WL2k޼3\fsY[[-ݭ&=.Ah) jjojڙC#f*N R]6GG,W*.kw8x׌k;g$C Ygv=87 8W$ՙ)Vt.3)hbxHMLulu"@ƸXWٹوJTL*[[,sfmU U})Nʫx0gkJM!+r)/cy#Fv4El&;&e_t:h誦";CUm\>: \\ddCHq7mP;AQbtKmO}HjOHAUS[&),Y5:hd4c}"{$y^A9s=fи{}IzCՁ!Op'!Hm4 If& dJT fC%sv^2 K&jh!Qh6[Nd%$u/Nx(d 퐮A$B_vuM0pIy{?sp̚JfA̳OΜv̎]`t@~>q|ͪ0hMe >gf jbtUͦH. &Դ=xho,SA9D9o|,A3i7ٴ#h:$mF3s0:Z.ڮKc݂N^ QɔcU`1 ^W";*!ɽ πP K&f&3k!|5I#rk6DYYğ rث_/&[nhcV<"3뱣 RV\ ,[X46OɀFsx$ڊR6%KS !6׍m%h:[FZ'łX:cc#XUUS&ĶBrJ8VG*36Xi5IMb'yayKz5dT"l~ҐT{D"t시`jкc>R`ݏbtb.Vҵ\2|Sss☢(rUw~ %V{ 7ϖ^Mm%8!))"[־cU67'}E7&Lj^˒S YO{5ЈwF* _c?YNbA8u9%_2]o kLdm=-'ݟ  'y WÑf韖TD!HGUbb o3+uGyAgC 6Ew|s78kAxrdt,{`Hnj*Tףc!SN$vpӍ%7:L,\ 'nIqk~husJ_/꣇><iUVy-hOY1l%恞I}1˨eϘ o5=7 LYaդBpeHUHcl+0_Ѣ> +I 8 RL̨fElhe#u>u5_ mb}]v8c2mn (J<ၴob]͆Ux}q1 {fUeg}Ǭ4TM\5D>x=GN(,}"!gWq!8Μ:ykIlfNxNhEV΂J7:5yw7gs[j~豠8B5 M)}z-[t=FzLc{O{9p,&bi 'өZe-K3.άNkN{C+kɉg";"?4: b7RHe2vO䬸O F$xE2CSKυ{v:,RTG}5dWZ/a7OX2=~J9b :4X,~Gjcv^`4pi A[3F\@Edzֳj8?a;͘ShJ}1PǓ,EH0E}V9Gw/SȮO ֑G?uv`},wWm!ZLZS#q8"d Շc7abaB!#q_6re8W%[#JR["2[= tn-+͵`~A'` 6p27v*6t66eXxNn=-h3`Ǣ9E˽V8ջ/XZ mfVHv_ +Su gx?I>hvp@+g.$1#4HBxwoG &bnaFo>|i'5 fQ"Yi\}~>T3b8L1<$ŗ$z4-)(CKFmW͈ؕ[R47 $hDZ Q%)r3ЫLY^*3dE(T?/XXR8*Ojjq0;:ZqCC ~ endstream endobj 433 0 obj <> stream x]Pj0 $7@Ip [I mg 7t@OIz o5GpJ`XpqkPNƒmTܫ,=Yw9#K,O/׾+Oq3#T{[-gnGuİUv ȈXmuWORN 턄E jVaT?2vL̪8VI=ܩ5(-7o'U?kUm endstream endobj 434 0 obj [365.7] endobj 435 0 obj <> stream xcd`aa`ddqu v 4 ضa5 YrL?=b$UD~@:`b`edd㭪+(M500300r/,L(QHT04Q020TpM-LNSM,HM,rr3SK*4l2JJ s4u3K2RSRSJsS>%E )Ey@1v&FF|?7-Q> endobj 436 0 obj <> endobj 5 0 obj <> endobj 437 0 obj <> endobj 6 0 obj <> endobj 438 0 obj <> endobj 7 0 obj <> endobj 439 0 obj <> endobj 8 0 obj <> endobj 440 0 obj <> endobj 13 0 obj <> endobj 441 0 obj <> endobj 17 0 obj <> endobj 442 0 obj <> endobj 18 0 obj <> endobj 443 0 obj <> endobj 62 0 obj <> endobj 444 0 obj <> endobj 76 0 obj <> endobj 445 0 obj <> endobj 77 0 obj <> endobj 446 0 obj <> endobj 82 0 obj <> endobj 447 0 obj <> endobj 83 0 obj <> endobj 448 0 obj <> endobj 93 0 obj <> endobj 449 0 obj <> endobj 104 0 obj <> endobj 450 0 obj <> endobj 114 0 obj <> endobj 451 0 obj <> endobj 115 0 obj <> endobj 452 0 obj <> endobj 123 0 obj <> endobj 453 0 obj <> endobj 138 0 obj <> endobj 454 0 obj <> endobj 142 0 obj <> endobj 455 0 obj <> endobj 143 0 obj <> endobj 456 0 obj <> endobj 165 0 obj <> endobj 457 0 obj <> endobj 172 0 obj <> endobj 458 0 obj <> endobj 182 0 obj <> endobj 459 0 obj <> endobj xref 0 460 0000000000 65535 f 0000092565 00000 n 0000092468 00000 n 0000087146 00000 n 0000167750 00000 n 0000168067 00000 n 0000168384 00000 n 0000168692 00000 n 0000169018 00000 n 0000000015 00000 n 0000000160 00000 n 0000000723 00000 n 0000087240 00000 n 0000169327 00000 n 0000000838 00000 n 0000001758 00000 n 0000087598 00000 n 0000169656 00000 n 0000169973 00000 n 0000001856 00000 n 0000001983 00000 n 0000002119 00000 n 0000002255 00000 n 0000002390 00000 n 0000002526 00000 n 0000002660 00000 n 0000002796 00000 n 0000002922 00000 n 0000003058 00000 n 0000003193 00000 n 0000003328 00000 n 0000003464 00000 n 0000003591 00000 n 0000003727 00000 n 0000003863 00000 n 0000003999 00000 n 0000004135 00000 n 0000004271 00000 n 0000004412 00000 n 0000004553 00000 n 0000004689 00000 n 0000004831 00000 n 0000004973 00000 n 0000005115 00000 n 0000005257 00000 n 0000005399 00000 n 0000005526 00000 n 0000005662 00000 n 0000005797 00000 n 0000005933 00000 n 0000006075 00000 n 0000006216 00000 n 0000006357 00000 n 0000006499 00000 n 0000006634 00000 n 0000006770 00000 n 0000006897 00000 n 0000008653 00000 n 0000087769 00000 n 0000008762 00000 n 0000008920 00000 n 0000087889 00000 n 0000170291 00000 n 0000008999 00000 n 0000009136 00000 n 0000009273 00000 n 0000009404 00000 n 0000011312 00000 n 0000088086 00000 n 0000011440 00000 n 0000011569 00000 n 0000013292 00000 n 0000088181 00000 n 0000013410 00000 n 0000014388 00000 n 0000088429 00000 n 0000170626 00000 n 0000170934 00000 n 0000014495 00000 n 0000016716 00000 n 0000088549 00000 n 0000016854 00000 n 0000171252 00000 n 0000171560 00000 n 0000016987 00000 n 0000017122 00000 n 0000017262 00000 n 0000019865 00000 n 0000088720 00000 n 0000020038 00000 n 0000021804 00000 n 0000088833 00000 n 0000021902 00000 n 0000171886 00000 n 0000022039 00000 n 0000022175 00000 n 0000024213 00000 n 0000089004 00000 n 0000024342 00000 n 0000024879 00000 n 0000089127 00000 n 0000024988 00000 n 0000025123 00000 n 0000025258 00000 n 0000172213 00000 n 0000025395 00000 n 0000027672 00000 n 0000089345 00000 n 0000027837 00000 n 0000027974 00000 n 0000028106 00000 n 0000028236 00000 n 0000031363 00000 n 0000089443 00000 n 0000172530 00000 n 0000172845 00000 n 0000031495 00000 n 0000033655 00000 n 0000089749 00000 n 0000033847 00000 n 0000033979 00000 n 0000034113 00000 n 0000034255 00000 n 0000173152 00000 n 0000034390 00000 n 0000037886 00000 n 0000089874 00000 n 0000038030 00000 n 0000038162 00000 n 0000041012 00000 n 0000090085 00000 n 0000041157 00000 n 0000041295 00000 n 0000041430 00000 n 0000044572 00000 n 0000090218 00000 n 0000044748 00000 n 0000044883 00000 n 0000173461 00000 n 0000045016 00000 n 0000047532 00000 n 0000090394 00000 n 0000173777 00000 n 0000174094 00000 n 0000047700 00000 n 0000051015 00000 n 0000090512 00000 n 0000051206 00000 n 0000051341 00000 n 0000051484 00000 n 0000053968 00000 n 0000090755 00000 n 0000054159 00000 n 0000054291 00000 n 0000054429 00000 n 0000054560 00000 n 0000054692 00000 n 0000054830 00000 n 0000054973 00000 n 0000057881 00000 n 0000090853 00000 n 0000058011 00000 n 0000061226 00000 n 0000091135 00000 n 0000061370 00000 n 0000174418 00000 n 0000061505 00000 n 0000063511 00000 n 0000091292 00000 n 0000063655 00000 n 0000063787 00000 n 0000063919 00000 n 0000174736 00000 n 0000064057 00000 n 0000064189 00000 n 0000064327 00000 n 0000066253 00000 n 0000091519 00000 n 0000066406 00000 n 0000066538 00000 n 0000066681 00000 n 0000066812 00000 n 0000175045 00000 n 0000066955 00000 n 0000069444 00000 n 0000091617 00000 n 0000069630 00000 n 0000070558 00000 n 0000091778 00000 n 0000070657 00000 n 0000071365 00000 n 0000091861 00000 n 0000071464 00000 n 0000072879 00000 n 0000092022 00000 n 0000072998 00000 n 0000074139 00000 n 0000092105 00000 n 0000074229 00000 n 0000075324 00000 n 0000080057 00000 n 0000079211 00000 n 0000079258 00000 n 0000079307 00000 n 0000079355 00000 n 0000075444 00000 n 0000079404 00000 n 0000079453 00000 n 0000079501 00000 n 0000079549 00000 n 0000079598 00000 n 0000075605 00000 n 0000078573 00000 n 0000078618 00000 n 0000078663 00000 n 0000078708 00000 n 0000078758 00000 n 0000075770 00000 n 0000080836 00000 n 0000079827 00000 n 0000079873 00000 n 0000079919 00000 n 0000079965 00000 n 0000080011 00000 n 0000075906 00000 n 0000076057 00000 n 0000080101 00000 n 0000080147 00000 n 0000080193 00000 n 0000080239 00000 n 0000080285 00000 n 0000076146 00000 n 0000080881 00000 n 0000080331 00000 n 0000080377 00000 n 0000080423 00000 n 0000080469 00000 n 0000076283 00000 n 0000080515 00000 n 0000080561 00000 n 0000080607 00000 n 0000080653 00000 n 0000080926 00000 n 0000076418 00000 n 0000080971 00000 n 0000081016 00000 n 0000081061 00000 n 0000081106 00000 n 0000081151 00000 n 0000081196 00000 n 0000076553 00000 n 0000076698 00000 n 0000081518 00000 n 0000078807 00000 n 0000078897 00000 n 0000078852 00000 n 0000080791 00000 n 0000076784 00000 n 0000081976 00000 n 0000082067 00000 n 0000082112 00000 n 0000082158 00000 n 0000082204 00000 n 0000076926 00000 n 0000078942 00000 n 0000078987 00000 n 0000079032 00000 n 0000079076 00000 n 0000079121 00000 n 0000077077 00000 n 0000079166 00000 n 0000079647 00000 n 0000079692 00000 n 0000079737 00000 n 0000079782 00000 n 0000081242 00000 n 0000077263 00000 n 0000077472 00000 n 0000081288 00000 n 0000081334 00000 n 0000081380 00000 n 0000081426 00000 n 0000081472 00000 n 0000077565 00000 n 0000081792 00000 n 0000081838 00000 n 0000081884 00000 n 0000081930 00000 n 0000082021 00000 n 0000077751 00000 n 0000080699 00000 n 0000080745 00000 n 0000081562 00000 n 0000081608 00000 n 0000081654 00000 n 0000077937 00000 n 0000081700 00000 n 0000081746 00000 n 0000082250 00000 n 0000082296 00000 n 0000082342 00000 n 0000082388 00000 n 0000078158 00000 n 0000078407 00000 n 0000078513 00000 n 0000082434 00000 n 0000087064 00000 n 0000083167 00000 n 0000082470 00000 n 0000082571 00000 n 0000082684 00000 n 0000082817 00000 n 0000082936 00000 n 0000083065 00000 n 0000083760 00000 n 0000083300 00000 n 0000083407 00000 n 0000083531 00000 n 0000083644 00000 n 0000085531 00000 n 0000083908 00000 n 0000084014 00000 n 0000084144 00000 n 0000084273 00000 n 0000084598 00000 n 0000084391 00000 n 0000084497 00000 n 0000085359 00000 n 0000084759 00000 n 0000084894 00000 n 0000085003 00000 n 0000085144 00000 n 0000085262 00000 n 0000086789 00000 n 0000085675 00000 n 0000085776 00000 n 0000086362 00000 n 0000085910 00000 n 0000086017 00000 n 0000086137 00000 n 0000086256 00000 n 0000086528 00000 n 0000086685 00000 n 0000086965 00000 n 0000092360 00000 n 0000088337 00000 n 0000087121 00000 n 0000087693 00000 n 0000087320 00000 n 0000087984 00000 n 0000087849 00000 n 0000088261 00000 n 0000088060 00000 n 0000089604 00000 n 0000088644 00000 n 0000088509 00000 n 0000088928 00000 n 0000088800 00000 n 0000089225 00000 n 0000089084 00000 n 0000089526 00000 n 0000089302 00000 n 0000091014 00000 n 0000089972 00000 n 0000089698 00000 n 0000089847 00000 n 0000090316 00000 n 0000090050 00000 n 0000090183 00000 n 0000090610 00000 n 0000090477 00000 n 0000090936 00000 n 0000090688 00000 n 0000092266 00000 n 0000091390 00000 n 0000091108 00000 n 0000091233 00000 n 0000091700 00000 n 0000091468 00000 n 0000091944 00000 n 0000092188 00000 n 0000092763 00000 n 0000093110 00000 n 0000097895 00000 n 0000098068 00000 n 0000100426 00000 n 0000100615 00000 n 0000102661 00000 n 0000103071 00000 n 0000103634 00000 n 0000111851 00000 n 0000112192 00000 n 0000118557 00000 n 0000118905 00000 n 0000119039 00000 n 0000120186 00000 n 0000120531 00000 n 0000126197 00000 n 0000126546 00000 n 0000131723 00000 n 0000132155 00000 n 0000132602 00000 n 0000138724 00000 n 0000138951 00000 n 0000141410 00000 n 0000141687 00000 n 0000144129 00000 n 0000144338 00000 n 0000146331 00000 n 0000146726 00000 n 0000147193 00000 n 0000153658 00000 n 0000153968 00000 n 0000154025 00000 n 0000154514 00000 n 0000154711 00000 n 0000157361 00000 n 0000157456 00000 n 0000158145 00000 n 0000158208 00000 n 0000158619 00000 n 0000158644 00000 n 0000159044 00000 n 0000159069 00000 n 0000159466 00000 n 0000159605 00000 n 0000160639 00000 n 0000160958 00000 n 0000161115 00000 n 0000161980 00000 n 0000162025 00000 n 0000162632 00000 n 0000162915 00000 n 0000166993 00000 n 0000167295 00000 n 0000167320 00000 n 0000167881 00000 n 0000168198 00000 n 0000168514 00000 n 0000168839 00000 n 0000169149 00000 n 0000169475 00000 n 0000169788 00000 n 0000170105 00000 n 0000170440 00000 n 0000170756 00000 n 0000171066 00000 n 0000171382 00000 n 0000171708 00000 n 0000172033 00000 n 0000172345 00000 n 0000172665 00000 n 0000172977 00000 n 0000173281 00000 n 0000173592 00000 n 0000173909 00000 n 0000174244 00000 n 0000174551 00000 n 0000174868 00000 n 0000175194 00000 n trailer <<98f25573729cebea4cee7b1825dc9cf6>]/Size 460>> startxref 175373 %%EOF sofa/20150209/c/doc/sofa_vml.pdf0000644000113000011300000001675412507252060015160 0ustar bellsbells%PDF-1.2 %쏢 6 0 obj <> stream xWS7_/qNH?9CB)|'jt!lo%N۷o=K͟Es=[GQѻ[(I.^v _3ztqqvyJӏ͏B(-&P KK3'qkaf7o;{a.oj _("A`ANji&2,]q#8g)0b+`J琸`9 QWZxOߣK|3Đ͗h+:ķ5~DYPȫ Ip}6B#Bh>j])@%x 'lD7j!4nqg͈=qp,rmI1un׊Li>_Gtu}vyrvurleye}@6rN[Dn8xeRC۔ÉpAzx}bC QpN!=8.%ɋCu bZ p][yRnY[;(%ݞG.X}+SbBSOI^FB* vw{}4!5ܩIxR0  TnP]K%z6Y ˠ2bzW92MO\hEZ2ԓ9cj Q3̗4 /ZN334t(^e~د$;c_s4XT{5/J?͞L{S̛2ܯPyӴA*(nFv1Ur~/P,(̄9_Z2{tԺ~:3߼pC1T}XX 3~cl3}咚c:tPM> stream xVMsH̯e*J1- h%B)_iH3(1#1@TH_ԼGuI |^vo Πr- 8h8:=JWS$fw~P y-HiƩbD!\(,W$!VJƆ0"Ʒ' %(%<{"EȖ*FHs7p/PԵI1p+іEP(u!m=Dm$kbLgEW): @`ÿDBDRH(0:MZ|RPʄPcLEw+^h\`*&97!<%=J =xr,1x:fjgDEOy-yj ? lILtSHbNϡ݃Ji(Q od94bS=q, oG&I/1.ѶDP+%sghHդj Yܢ(Y ))?e.-ƛ1vU+a!Lj`U6VVPz W༒Ҿ:+ʢ`k8Y;yޱ4Qf-.M#xU?Yf9 HkHPUS7KQP ̶[Hms{w:ܬEUR_Śq5Cl͛?{9/giy[jU*m8qY"I{BP6U YQy3TGHf*?tąDgX)8f7N~S;MWZQWnVt5Y]skendstream endobj 15 0 obj 992 endobj 19 0 obj <> stream xV]o03⾭":BUI}L8ETiD>ꄮݯM오5 H{CC:GI%0{`|0gO/hԷ/p)R^rI'i{V㛿ye"Ee&NM=,QDG+vy!'"^@&lEYپļ(K,ei NܮGbGt}:d)R'& Ł\4:Ͻil"9Vq˜ ZVn KA2Wr 7ڠް5XWay2W؁5WqVޟ@.x/JR(lSJ DVJZ%۪OM$H6(ηpIi;SN6yLKf,ٝo4=zl ?n>vx:V1QRk]wXCoBдȳjͤ=_]ղK8l \O)0; U6H3w74ƭZT;<0'⥝sS(8y}-xvxn/[O+ۈª;,(EK/*&V7B׶e|҈;Hr*e#\/0pF0*8|u?[r, 3#pzwo5KRE͐Ăq-pW6zQG"iXLzHĸR@ uS.JUk 1@+esZ0Vp#LI:sl<܎M o[y9+E- Lu|7 p> stream x]o0+Rv.T&h=ۍhUi Z"_ܞlEŐY+3,k4^ cAW5> 6EBڭK|tZMYzhdǜp Q"ޅfSn_Fo}f;{'|ҥ 71+HБDƕ (L~5#l:"d]cb QȂlBj]Ҳ&iz `M/)V3 }RKf-$G҈4H,rxvy 'I$78i'w9jxus5k=,;ºв~ E~I%lN*z)%[#)iE`始%y/9F16sM#,*߫4 Y=>8)iV,0Wߓ/˟rY7Y:ߓlPN#UT4!;˱ O6OMg茴^k`M^䵨m . #g:#0~xgxNsL)sΎ(R0brQN:ʋA ,Y?wmORUSR!M$V^ \,sSnMtT1케;2Ο FE%rP?sˣC6 2.?dQjjح6dA6!5dJ\EMҒ> stream x}O [Ax1E%]Xۥ2R{. !_|zXVaOZug=6Kd7/M^5/@X2p|OeYC[: \8iuv˻|g)ӹS>W \Gtq )>R11=!?2P!ԽӀŠb|SMyjtuiu?o iSVѐF: TRcϐ'Q9gbY?䖦endstream endobj 30 0 obj 276 endobj 5 0 obj <> /Contents 6 0 R >> endobj 13 0 obj <> /Contents 14 0 R >> endobj 18 0 obj <> /Contents 19 0 R >> endobj 23 0 obj <> /Contents 24 0 R >> endobj 28 0 obj <> /Contents 29 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 5 0 R 13 0 R 18 0 R 23 0 R 28 0 R ] /Count 5 >> endobj 1 0 obj <> endobj 4 0 obj <> endobj 10 0 obj <> endobj 11 0 obj <> endobj 16 0 obj <> endobj 21 0 obj <> endobj 26 0 obj <> endobj 31 0 obj <> endobj 8 0 obj <> endobj 27 0 obj <> endobj 22 0 obj <> endobj 17 0 obj <> endobj 32 0 obj <> endobj 12 0 obj <> endobj 33 0 obj <> endobj 9 0 obj <> endobj 34 0 obj <> endobj 2 0 obj <>endobj xref 0 35 0000000000 65535 f 0000005911 00000 n 0000006832 00000 n 0000005824 00000 n 0000005959 00000 n 0000005088 00000 n 0000000015 00000 n 0000001795 00000 n 0000006202 00000 n 0000006689 00000 n 0000006014 00000 n 0000006044 00000 n 0000006545 00000 n 0000005248 00000 n 0000001815 00000 n 0000002879 00000 n 0000006074 00000 n 0000006401 00000 n 0000005392 00000 n 0000002899 00000 n 0000003855 00000 n 0000006106 00000 n 0000006330 00000 n 0000005536 00000 n 0000003875 00000 n 0000004700 00000 n 0000006138 00000 n 0000006259 00000 n 0000005680 00000 n 0000004720 00000 n 0000005068 00000 n 0000006170 00000 n 0000006488 00000 n 0000006632 00000 n 0000006774 00000 n trailer << /Size 35 /Root 1 0 R /Info 2 0 R >> startxref 6882 %%EOF sofa/20150209/c/doc/title.pdf0000644000113000011300000000252012507252060014455 0ustar bellsbells%PDF-1.2 %쏢 5 0 obj <> stream x]o0s7(a&e5S\X"иC p7p2;Sb}3aN!ýSýH.&q(SũmS2{+737z MuW;5} "-[7*!HdB nZԋqP?(RwPCJupk$ӂ4mp &H )iaDwh"G 0J~F=; 2@~N~-w;7lְ![=uVEUIE'˪ȳQcO AY\ -endstream endobj 6 0 obj 397 endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 8 0 obj <> endobj 7 0 obj <> endobj 2 0 obj <>endobj xref 0 9 0000000000 65535 f 0000000701 00000 n 0000000840 00000 n 0000000642 00000 n 0000000501 00000 n 0000000015 00000 n 0000000482 00000 n 0000000778 00000 n 0000000749 00000 n trailer << /Size 9 /Root 1 0 R /Info 2 0 R /ID [<89BD6E8698E4AAE95646E26C32495DF9><89BD6E8698E4AAE95646E26C32495DF9>] >> startxref 1029 %%EOF sofa/20150209/c/00READ.ME0000644000113000011300000000317112507252057013203 0ustar bellsbells SOFA-Issue: 2015-02-09 This is the IAU Standards of Fundamental Astronomy (SOFA) Libraries product, issued on 2015-02-09. The tag `SOFA-Issue' above defines this release and differentiates it from previous or subsequent releases of the SOFA product. The 00READ.ME file must remain with this distribution set. Changes made since the previous release are noted in the file changes.lis. Notes: 1/ Unix users: The distribution set contains a simple makefile which can be used to create a single object library for the SOFA Libraries. To build the object library: a/ Examine the makefile to be sure definition of the C compiler is correct for your system. You need an ANSI standard compliant C compiler. Edit the CCOMPC macro in the makefile as necessary. b/ To create libsofa.a, execute make: % make (where % is the shell prompt). c/ To remove the object files: % make clean To link with the SOFA library, include the library in the compile/link command in the normal Unix fashion, eg: % gcc myprog.c -o myprog libsofa.a You should specify the appropriate C compiler name for `gcc' in the above command sequence. 2/ Windows/DOS/Mac users: There is no `build' procedure to create a linkable object library or DLL for the SOFA Libraries. This is due to the many different C compilers and development environments available on Windows/DOS and Mac machines. To use the SOFA routines with your program(s), you must use your preferred development environment to create the appropriate library or DLL. IAU SOFA Center 2015/02/09