From 7f35cecb0913752590b1737c91d22fb2ccc96b84 Mon Sep 17 00:00:00 2001 From: Vlad Krasnov Date: Fri, 1 Sep 2023 09:51:45 -0400 Subject: [PATCH] ec: implement P521 signature verification This code almost entirely reuses the P384 code, and only implements the dedicated inversion routines on top of the code generated by generate_curves.py --- Cargo.toml | 1 + build.rs | 9 + crypto/fipsmodule/ec/gfp_p521.c | 93 ++ .../fipsmodule/ecdsa/ecdsa_verify_tests.txt | 668 +++++++++ mk/generate_curves.py | 2 +- src/ec.rs | 2 +- src/ec/suite_b/ecdsa/digest_scalar.rs | 16 +- src/ec/suite_b/ecdsa/verification.rs | 53 + src/ec/suite_b/ops.rs | 17 +- src/ec/suite_b/ops/elem.rs | 2 +- src/ec/suite_b/ops/p256.rs | 1 + src/ec/suite_b/ops/p384.rs | 1 + src/ec/suite_b/ops/p521.rs | 324 +++++ .../suite_b/ops/p521_point_mul_base_tests.txt | 1280 +++++++++++++++++ src/signature.rs | 3 +- 15 files changed, 2466 insertions(+), 6 deletions(-) create mode 100644 crypto/fipsmodule/ec/gfp_p521.c create mode 100644 src/ec/suite_b/ops/p521.rs create mode 100644 src/ec/suite_b/ops/p521_point_mul_base_tests.txt diff --git a/Cargo.toml b/Cargo.toml index 0585b60927..c9e586698d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -73,6 +73,7 @@ include = [ "crypto/fipsmodule/ec/gfp.h", "crypto/fipsmodule/ec/gfp_p256.c", "crypto/fipsmodule/ec/gfp_p384.c", + "crypto/fipsmodule/ec/gfp_p521.c", "crypto/fipsmodule/ec/p256.c", "crypto/fipsmodule/ec/p256-nistz-table.h", "crypto/fipsmodule/ec/p256-nistz.c", diff --git a/build.rs b/build.rs index daf2ebfbbd..bf4dfa22ea 100644 --- a/build.rs +++ b/build.rs @@ -42,6 +42,7 @@ const RING_SRCS: &[(&[&str], &str)] = &[ (&[], "crypto/fipsmodule/ec/ecp_nistz.c"), (&[], "crypto/fipsmodule/ec/gfp_p256.c"), (&[], "crypto/fipsmodule/ec/gfp_p384.c"), + (&[], "crypto/fipsmodule/ec/gfp_p521.c"), (&[], "crypto/fipsmodule/ec/p256.c"), (&[], "crypto/limbs/limbs.c"), (&[], "crypto/mem.c"), @@ -967,6 +968,14 @@ fn prefix_all_symbols(pp: char, prefix_prefix: &str, prefix: &str) -> String { "p384_point_double", "p384_point_mul", "p384_scalar_mul_mont", + "p521_elem_div_by_2", + "p521_elem_mul_mont", + "p521_elem_neg", + "p521_elem_sub", + "p521_point_add", + "p521_point_double", + "p521_point_mul", + "p521_scalar_mul_mont", "openssl_poly1305_neon2_addmulmod", "openssl_poly1305_neon2_blocks", "sha256_block_data_order", diff --git a/crypto/fipsmodule/ec/gfp_p521.c b/crypto/fipsmodule/ec/gfp_p521.c new file mode 100644 index 0000000000..3efa1a6ccc --- /dev/null +++ b/crypto/fipsmodule/ec/gfp_p521.c @@ -0,0 +1,93 @@ + +/* Copyright 2016-2023 Brian Smith. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ + +#include "../../limbs/limbs.h" +#include "../bn/internal.h" +#include "../../internal.h" + +#include "../../limbs/limbs.inl" + +#define BITS 521 + +#define P521_LIMBS ((521 + LIMB_BITS - 1) / LIMB_BITS) + +#define FE_LIMBS P521_LIMBS + +typedef Limb Elem[FE_LIMBS]; +typedef Limb ScalarMont[FE_LIMBS]; +typedef Limb Scalar[FE_LIMBS]; + +static const Elem Q = { +#if defined(OPENSSL_64_BIT) + 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, + 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, + 0x1ff +#else + 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1ff +#endif +}; + +static const Elem N = { +#if defined(OPENSSL_64_BIT) + 0xbb6fb71e91386409, 0x3bb5c9b8899c47ae, 0x7fcc0148f709a5d0, 0x51868783bf2f966b, + 0xfffffffffffffffa, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, + 0x1ff +#else + 0x91386409, 0xbb6fb71e, 0x899c47ae, 0x3bb5c9b8, 0xf709a5d0, 0x7fcc0148, + 0xbf2f966b, 0x51868783, 0xfffffffa, 0xffffffff, 0xffffffff, 0xffffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1ff +#endif +}; + +static const Elem ONE = { +#if defined(OPENSSL_64_BIT) + 0x80000000000000, 0, 0, 0, 0, 0, 0, 0, 0 +#else + 0x800000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +#endif +}; + +static const Elem Q_PLUS_1_SHR_1 = { +#if defined(OPENSSL_64_BIT) + 0, 0, 0, 0, 0, 0, 0, 0, 0x100 +#else + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x100 +#endif +}; + +static const BN_ULONG Q_N0[] = { + BN_MONT_CTX_N0(0, 1) +}; + +static const BN_ULONG N_N0[] = { + BN_MONT_CTX_N0(0x1d2f5ccd, 0x79a995c7) +}; + +/* XXX: MSVC for x86 warns when it fails to inline these functions it should + * probably inline. */ +#if defined(_MSC_VER) && !defined(__clang__) && defined(OPENSSL_X86) +#define INLINE_IF_POSSIBLE __forceinline +#else +#define INLINE_IF_POSSIBLE inline +#endif + +/* Window values that are Ok for P384 (look at `ecp_nistz.h`): 2, 5, 6, 7 */ +/* Window values that are Ok for P521 (look at `ecp_nistz.h`): 4 */ +#define W_BITS 4 + +#include "ecp_nistz.inl" + diff --git a/crypto/fipsmodule/ecdsa/ecdsa_verify_tests.txt b/crypto/fipsmodule/ecdsa/ecdsa_verify_tests.txt index c00af6c9e9..10f3a45aca 100644 --- a/crypto/fipsmodule/ecdsa/ecdsa_verify_tests.txt +++ b/crypto/fipsmodule/ecdsa/ecdsa_verify_tests.txt @@ -1175,6 +1175,592 @@ R = 575f87a8a7980555a198cfdec279cbb2f89551b5271d242397c29f6bc4bf413dc30312a7e626 S = f0b7d759246ad36ba8240c537b1eeb5d148c38d324f48028c598eaef6e49d79ff3f6cfe3a32fbbf6f3ed3aaaec31d572 Invalid = Y +Curve = P-521 +X = 01939b25d13ee8e04203643ba3709526a92912b0e98f06962fb217ed18d1ba52bff192640f980d3f7f92c116b5d94dfd48c25a26b72acb9425e316b3d2ac130a6943 +Y = 0122d0809c5de123c6e5373c1680a4d566c565408b6750d942c024d56c0d6761807adf9dab454b84254671dc68f6917f09a442643e6db1bb35e6796816dd3e5c6a7a +Digest = 6f89ccb8daf6d4ee583b04786812da9e2960a6e5 +R = 0144c1a1e075aced5e10f50ab7ab0f795bac07439c953ca0c749dc12d50a7e4dce21850dac1fd773e46576335a555f20d266842a8bb47fb464fe3fe297e9ee356e48 +S = 0125f3b6f1cf7eb704bd37391a43034df9260c4d5fdccd583bf65dd5ab4b007c8f837a31a0b7c5a0be3743a187b2569841fc4c69f816c8234d8ae845b92fb9263242 +Invalid = Y + +Curve = P-521 +X = 00882e2cfed1286668e62699ab20c6c40068b460917b306e51ce7f72a4d760e19b3f6cb5897de599cfd84ae70c26d1a39144772b90f8ba1ec2d0f09395265f0308cf +Y = 0020b80b99778dcdd3dc47da42b279cc289eaae369b9e2c4b0322d2eee9b1a76eed6b5b70d03d83f1db81a67ad6bea98ce71b120e9f83f0178cd6fa3f109a87b1fa9 +Digest = 838b0206f0df827b5aa38abedc972a8ed59611fa +R = 013ec7124331d896832b77440854c043cb605ae9cc7d20cb358513a5bab26371903c6abc6e4860a0b4940bc5429755341a10251195e5f8af42494c002340ccc57bc9 +S = 01460bda2fd76ef05dcbe1cd17b9c5663b03551cce586c56e103179069fbef6ecae47f6555db755860f0b06eb1bf247312ae0f9d64c5cf13fbc42b923d6bee151b5f +Invalid = Y + +Curve = P-521 +X = 011a5a6f7166fe435c5cc4238daf92a2d1af483543b7f505785ec4e2d93b2ca1d1eed3bccc31761aa60f7dadc97629475d2712998c2eccb82a78d6da7b0524662e9f +Y = 00c66d54768f5daf947cd414a1296a54c90e2b65a14cb94aecf0ba51c280676c160c39539955f2a8194357a983a1311845f8cac51cdca1e209bbac32cc809f0e4e10 +Digest = b14bfba79b3a36303dd4c5c7e6bb6981cf37bcc8 +R = 010f45ccf0b4de7d2af890d65395c715043dc5ca1489c79b820347d51848f599ebd4aa558c62ce8769c5d5a294679f9aa74414ca6a1b82f183f23558b0a8dc6cce68 +S = 01adaf876dc35310ac592d1e3ba89f148c3b76417799f43aa1b24c1d2e3f544c018f066ed7baef480f7488820593bcbb25ce08183fc14c6c12fce0c118743f04e281 +Invalid = Y + +Curve = P-521 +X = 00f3bd2590cbf620991d990b84efee86073f6c789deb07b89a1f278e6cc9ea573d8586ac395958ce4e1b09bda73af1b1e6f2a8c09ecc697c021974c024564ed87165 +Y = 00514871935c187e57d1aac376aeb018acf57c4d005d85cc939a6c83256f38b2c9ecb1a0ec8d132e0f5169843faca4ae664459124bf5f30309fa86f87a2604058150 +Digest = d9cba47d31015f5fe70b1bf0c2a7ce40676bd1e8 +R = 0083e6155dd97bf9ba7c60dbcdcba7824b125a73df1433fcb46f57c51f63ae161ce67393d327d174aec7f0b552decb8131a192ae940deb84acc3b45be61917fc580c +S = 001fbfe61d75dc3fd814eeabdececf361a0a066b8c06c40f0e057faf8e4e7b206dfbbd3a99ef55df67234a29fb1a618620d2e27636d35bb98eb7535d1749c4b7e7d2 +Invalid = Y + +Curve = P-521 +X = 013136c4e5dee983f761955bce7c196a000cb26863a1dea762884bb041e45363a1ab1665c0ca69d1167e555bd63bceba08f6ee14571acd06eea3e1e5d9c11a036984 +Y = 011c830e1fd29ee4e10d7c6db7e90d6c1319c9858f87a944542c28679d83680747eaf71a29362ea2c22a89d78e2ce020dfbba74448d2f46b3f84b99f22604075b22e +Digest = eb4d89e3ce396c525fdbb67e4620ca99d9585d31 +R = 0124b3bcdae17413de84721e6ebe64409d80ac07a3b6c9a603ef19c5162566076108d30ec79426d24c72ac12af6fa1caa4830d55b4e6fcee900b0e4b20cdae0eaf70 +S = 003e0724d156c3fe5cb799a17972fbb891f0e11cfb650a1c524f6f2aab134c70fb114084a7821e0e12054fe071c516cbfb393fe9d98c840e1cc9e8475d3add81e0c7 +Invalid = Y + +Curve = P-521 +X = 019eb73393f070160d871cc396cd8d6973d828d6f3c17bcec7168843f0342c1b54f3c02a1b11348da1035833df6fa469d75692ecaa2feddce9210a813bdb0e1f9936 +Y = 00e030c5a11e2317ba10a20ec373cf69c96660b434445235efff0a9d23904c5d3ef49efdf0897222e51624f047b567ed61814f3f9e8c62f16ac27160897d5a09f476 +Digest = 43a5c6621edef91f6938507b2dc2092c6b17fc9e +R = 00ca41bcf9e80780687ba70d7f5ffec7da25542dc22144d9f6843889e941cad2fd8d8771755f38c0ef77909416371726b066464d1d41f888efa39456dee859f0ce98 +S = 01770961a369ca70f9d73b61aec34662735cf228299a7c668aa24afbc9d7f621cb3acff79cee19d107361614c1e71ff1f32ae4f02b7bf94486f0fcd61b6f76f304e4 +Invalid = Y + +Curve = P-521 +X = 000c12d47011ed272aaabcb0fb6c12d8627f33bda02b2b3c3ec7b5ed60eaa577add4205d222b8ba0485b1d98ade9df18ee1e1ad9e0a9e78242322201e3c664bf8c9f +Y = 00d1b86d4a1171bc80822e0e1094a96bdf7e031201ec212ab7d0e7b55394cad8335050701327a0a1a17181b586b89ff24a658e4b0ee16b8418dfcac122f2457f67b1 +Digest = 35802e4fd349e7cdff4b85c76a417977c3e40b65 +R = 00e4678311d0c068eab2118fc0a59014ec32c89cfd1e0273b966634b87783011b58a99204d266014d0236bd6f276f49c693a4d62b0601c307c936252cf718e239dfc +S = 0149f5cc02a6aaa126a99a59b83ae34f405f8076b597540625fa76e27dd29a85b6a4b0fc3e73a245a91d64a8f2b13ac345553b7a40835af76a9528cb48ac8d0be364 +Invalid = Y + +Curve = P-521 +X = 00f50a08703250c15f043c8c46e99783435245cf98f4f2694b0e2f8d029a514dd6f0b086d4ed892000cd5590107aae69c4c0a7a95f7cf74e5770a07d5db55bce4ab4 +Y = 00f2c770bab8b9be4cdb6ecd3dc26c698da0d2599cebf3d904f7f9ca3a55e64731810d73cd317264e50baba4bc2860857e16d6cbb79501bc9e3a32bd172ea8a71dee +Digest = ca6b94a2773e9b7392b2a6b2863efb113fea8bba +R = 001e7cbb20c9a66abf149c79d11859051d35cfddd04f420dd23bd3206c82b29e782453cabfefe792e4e3e68c9bf6bf50d5a00ba5dd73b41378fb46e91ca797dbb250 +S = 00f1e9252573c003cb77f22c8c6d56f2149f7e8d88d699983da9250c8edfd4b9f864a46c48819524651886e3fd56492f4b6c75fb50a1d59e8bfc25f9fd42dc4e1d37 + +Curve = P-521 +X = 00fc6486a5cc9a366b2c25d57f3f1caadf93659223c7eb38c310916cd44bc49d3ecf1cfbd429b57e329e1eab5f552abaf828ad9cfbc2f7534dc8c87f54d252e7b69b +Y = 01c0010af6c5cdfe26b068990cf44b1bcf324d0940bce1e953f7366c757aadaf25ff7dee4947879f305d3deb1e9a849db3cffb83bc1c7e5e82777be140931d58d177 +Digest = adb7456d405053624755076f2654f24f2bb521d6 +R = 00a58843085162864b2246c619d6cd38626657eb8f13ed5921b73071b6bddd56640ec9a55e7f2190481ef5e356425749e626a4b988b811cc12dd21c61cea89640095 +S = 019fbd1f9b108aad0208d1a27735ead4685f04d01882ed18c217d8e0e0fc71d8a98d3c45c471327e4dfa631cf4b826ead3bd5fd4bc0426fcc95b58bd354d012cfcd2 +Invalid = Y + +Curve = P-521 +X = 000933ee70d1470acaea66626394023020ed521d5b9a52e068b827d23af283bdbbbf3999b0c2ced0abf607b467fa86ef89bee3852d4e993df3c2c73a49488740cabf +Y = 010231bba67cba896274e7af7f9c65403e48c56356fba772120aa8781611239d0f50b8958ec8709a301078379b59123b47c5edb87bc2327cf607f876154904b93e92 +Digest = 40d6902c8bdedd45f6f6789f8657e8716c66d6d3 +R = 016f79df89a498ac65bb39d62e1ce82e5578eaf778084ec5926a638d50ee5943c87955c8255340a90f800fd43d4dca125b68dfe957d148533126d5761d711412bcb9 +S = 0175198228ce2eb0222d64eeaa403c0571989046e638419ef96612a90094a26fb819ff1addd823f8912e07ff32ac72790c38c601505b45dbb9cafd1b46f352aaea0e +Invalid = Y + +Curve = P-521 +X = 0007a5694d537eea406d753532b307c5b86e8823d31e81f6e7371e6def61f31c8f706c1b89f8655e54f68e6821096e6b96a7c3752e47d8d3ef5da135f881927ed92a +Y = 005810620b7d83d3e7e48f7338b18e03c2e97dde5dacdd5d54e4c7e75d736f159dc45431d5d3c07153a334fa60567307271bfb85cb0fcae142cbd7baaddcbdfdc018 +Digest = 6067b9f7fd22c43c4a91550c461201318220cd1d +R = 002cba23e78a1f9c6c18bd26321cec0c26db4f1100b986d37a0f24fc42c75ce4731a2876e8865ae21700289734ad5bae3611418ea37a13fae67db2d1a58a86f85422 +S = 00c438e76249b5016e0b83ddef5447420fd13aee6f099a0b9ffafcba4e7227f70cc5dd5abba03532ebc50424fefdd4f6d258ffe044573aa51b8a5d1d5c6e5dbf318a + +Curve = P-521 +X = 00a00f34f4572450d93607d3ffb1fffe7c86334426ad60fda27aa647e67c34b2cb1f0a12f4707336f1f708b3ba1f3cdd599ae92a2be92f9ae5526eba9d4adc052fa4 +Y = 0166808273466ec1ef2865e92b263b897131c5ea97fce1adb1ef88c8ac2e63eab97567d82db9c0825510812db1b2e4cba705ba64d33ffdce676b7f3aa2e343f7834e +Digest = 3d0012d4148fc6bf2e703ddfec9293c27a9fc4fd +R = 018ada7d95f4d05350ae95494b7c81e233168ec88c5ebffa2d2a3ac74cf90b6d9f80407276f92bd9b3ca949e5d5cd51166e29678aae58a284b9e6ceda3a550b08c15 +S = 01ff12f5e9b12efd941e8a445ac036d735e7bf64237972002568e8eeb0dbb887709b53cfa67186f4df215e2a9f7b9feb045270c72196e19335a9c554a19cee0a8397 +Invalid = Y + +Curve = P-521 +X = 0013a5c825a9ffe6179cd106b4a2343fd3318d83cf3be58d971704d0328486738f7536041cc69e6f9548851cf591ba080c4a1c4b4f5d95d216138d72bc56eb63779d +Y = 00e79075f5acb9f52b67f8411f310c02aac5a98dcce0275438e59f8a2a3754ebe57815247a00d3506fd342d3d43607ba67d4cb608da3a9296d57619223c02e0c4f8e +Digest = 4ee72ed3337db64795f3b859021c9b6b405bfaef +R = 01ad988418099c6483e6a8d62fc16a9fe571ad35c8cf111c3f35e680541a2f5ed96896715efa4943f8b46d20a0abb228852bdd5cfce1787c150d01231abc065718e3 +S = 0095c1e7dcd09375d1760700c5351ab23618b1fdf1b2b02e918c0ec341e5156300b602f7960e0eee2c027aa0076b194080e63155dc56a81699e8aea36ddfe703b94f +Invalid = Y + +Curve = P-521 +X = 0092bf4245f0ece3a8c3a723de152c6413526c333a64f4f2455e7b45396c1614c473460246f49c65e957dcf779af0b675eaf5ed7800539d3619a6fb131f1bc610968 +Y = 0047689692e52baa835ee9c49793bca7b01ed3bc4d4c396a54eaefe0520840a31fa3c35cc0d2317ce367881a15a3c06e7c26b192e90fe16c10e84c92233910d7df7d +Digest = 8f0ab491cf25b8526f8da76e329bf886a84c279a +R = 0141f936c6a5ca580e5a18caeb85fc13e9ff57d50d89b8447c8645ff66202e71eff4303d57c28ee6b68915de6767a124f3652c22940656f4227d61ff30b17c2b9aeb +S = 01c7bb4c22e68920bc6b9df0626b09ac79e5b76ba29d0b632c0b892c8661087461c4131771a2b3a9834ea4b3d3bddac9910331774643ae22b613bd0b2464a12cfabb +Invalid = Y + +Curve = P-521 +X = 0194cc7f51d9caff692137190541f5aea160977bedb0d3b67c3deed6669bff160696a96550934b3dba4129e204f068901c84c821523bec91ec40336dce0d2673e794 +Y = 00709279f85ef54164fd7347afcdbfe42d8d14e6808002b3e0b59bcbed80ce0c16e2db1b320c1d98ccdd75efc50fcd6ce91df6baaa99ecbee6df41da9c142a74386c +Digest = 4eab87203ae54fe6b3c0913cb865266d7be8bda4 +R = 00d2542223b0a5322249e8f1af6d559a87c39aa5c3c7e595b07fb7be4d3bd0184a419651f96811f3e8c9c578a4be68188a8a3a1ff0ccba4af5429ef95c64f34d645b +S = 01ee3123fd300cceabe2ad99bd1975c4594005ac9ec31d44ee4b9fe325d39049a5a83b4ac2a7f0b603c82dd88d136507bca2d383c7e8375c36eda82a169b3e4b4034 + +Curve = P-521 +X = 0145896c96ede10f5b049edc0475870c0c6a09ab9cc47667146deca1729d98c124bbe009e5e161b88c7ff61e79d6f85b9c4673c0664e039dab852e8f99fb0ae70a64 +Y = 005afb810a0a9c7f008850e8ecc67d907a74ff9e58f6d60ed14b3ed31e4751077a60de444a43d4d9a9b944905b79ff0c0ab431b21e0fb160cce8f08784677fb58bbf +Digest = 7cbce9271d00009eab429db9025bb4edc9ff7151ec964873f74a5277 +R = 012f63284068bb815ba935833f382ee2a8a5f64e2dbc9869be281ec7d3a28e2d7d2a84e214d79598213f82217d95ba9868da4dc3a3ec7fcfd7c8c457a053e8b0ce5e +S = 012b62183c893455324b94b7cea2fa2e1c912362f99e5159e229ce67a80f45c7c0d27340e57b4a8f40b80a4d572345df083061d311b578a73c8faaba4e6a194b4726 +Invalid = Y + +Curve = P-521 +X = 0113a72cee148a7428065d8f8e89dce2dc7e1bffad46a130af8f6fc8d0fabf26ad76bb64ee078ee66fbf0212987e363e176f0106369eb1e43297851ff409e935e216 +Y = 01a723ee3f44aa68e1b43185a50bfca99f349ad47d848dba8f9dfbd773f9f53bc0298bf43130e19ccb8021be39ed70c7b1f7295cfd034e713878f47d7508059a4f81 +Digest = 0068909a03ecb0947b2d585eea1f5496a6b3e50861089cdeb75b516f +R = 0010b883cb3b76612b6cd8f9288459d373d58c2e0366f300623ff6b28224036ad1df47d1d9df8037a18e774e0bcb42910e96dc7d7fee0b53686d5d3af13485453c66 +S = 00a29c87d9be8e91da4333089043693425892f50333c7f93ab27dabfa5cf89697f366573621a86d523e850caf31a4c26051e76b91ad3e20a391ba724d4e58641cc00 +Invalid = Y + +Curve = P-521 +X = 005766da7e6d9ebbe7cbb5b9bcdd657edf36fc4a7d4a173b99bd1caa804e35e937289e05cec2cedf86f0f7a8de42958e6052500c8a63b496ebea88252cf1b44ee5da +Y = 00ad35038ce07b53148cd7d0b4ee8c8ad6d89a2c68c0458d0d694036120893ba24a52792e0c8097f86591dce015151659908829f323a5dfaecfc51470779f8e5a5fb +Digest = f743f4bafec75012878f74c39b30bcdfe1a0d0e4da1ba84ba8320796 +R = 011c5357042c1d98133e76f0a696e27a22738c78ff17c903d8a5190b3c5fb186374fce58fe47d9933c2b361cb20546d730bb5602fab6c8d14e0114a64f9d2b1d892c +S = 0115ece7d8ab1b578b0e870faa8139d009f6cc3cdacf3172c047bffc1a31e2c66b198ac1ab8c90e826af291de58990e32b18e71b26fe01b6bcbaf86db6b1a726f51b +Invalid = Y + +Curve = P-521 +X = 00ea4254c3111118d3d859c704474251fa951b0cfbfd2f249bd32f70cecd80526e8fb72c1258c994d8067539e478890d5637ad925ef43e2caf297fd1eb49d9acac77 +Y = 01ed78a277869d8bf7f2d5eb9c2753aedd89197fbfcaf36a633a4f3b2bdb5e706983641156f0aa6e13d38e907546a2603bb1cec785bc334fb03033600a77fed391f2 +Digest = e2a441ca0e946139960943cb42fd6a1d6b6d6fbfb9739d8fba72ead7 +R = 0127570a0c0141bb4c2ababef5fa879e55c1637407686b49535fd17b3b911452650e302e9186d539782cde4d48ee43c258572ec299ee63d961def2333a4f1f8d2af9 +S = 012ed61b0b4c889bb36ff9ba648318a2b11604be6fcff858adbba8e59fa49fa30e2e20df5f2d26a8b9e6d989ab4e50586732adfdd4ca49ddee11cd889f0176a59ca9 + +Curve = P-521 +X = 00549a23bf1b24fba2e921c5c2ba78809d6b0623fb1b92a506690b668c946daa393ec42ddb113f10a34f1b11475ac1250f119e83149d5211791dbf6cfe4f591b6f44 +Y = 01ecdd45de1ee27f6abc1270fe11f770d4e26d5dd12d0a7baae6f3fc9c7f074541bb05ff0137c3923e1f858d643ec63f7c50f776f45009f2998a0b4f37c192210ce3 +Digest = c063ab8a65966f0b7d6c4127d45ad56f57e5922f5bb0537f71ec51d3 +R = 012bf2daa304f162454686f98330f526a21d066b430969547ccb0ace347cadb4af7bf62b473e33aa1f62b5959b7c431451913d5b1ad297b4c1f6bc5f3afc9e052794 +S = 008c7c58e4703f46fe0885f353f97bfefbecf5f10b95a02d4ac7764a0a713919004a153ff443ce417d24db60d325357408b59dbe7ad043e7fc7c1c23cda14a867d83 +Invalid = Y + +Curve = P-521 +X = 0087784b171cb62451eec46449a2a1ab769225288a092d833aeb823c99de8542ebef8c290f96636a45e2a9cab678a2c55e10283ceea6780c8d61d341952643903f51 +Y = 014a9315a888dc2f774633ed1c5ba95e09b6898764dc5a9d568d727b56fb50d3b288eb77c9db3b1cd31aa204ebf0f2402fa513b782527ce5c5652a97df6bb05e35c8 +Digest = 4a06dfd0dc3fe089a1081066ae40a7297c9bf929dca9a6b6f2a41a49 +R = 0137a47e2f3e1c2916a4a590adea04e93b4d18f2d548a3cf832401bcc42b1b35ad820e88a7efbc15d1462f518342cf81d41a40abd68651bef73816f58d1ace55e338 +S = 0101e3233d8da91e092a6ed4db279c594494f73bd8d6d7bf5f6a8437146a29b1ba78fe3694502ca987cf108af9f461b6341735b8c2a21653d1b52010bf2ee02e02b6 +Invalid = Y + +Curve = P-521 +X = 00b97948459489a548f94459fdbcff544e87f5b93c3ffd8baaa997f616eba75187f7a8fb13d848ddf427aaefc3cd001553c213bd1b1c5d892847eaff2d2663d90637 +Y = 000eb07b08b69af1f15260ab6a8eb84f9337d9d3f99148e61f5ee06c5a031f1eb467e897b65c0d14773018929d9da129d3cd66b8f9c11ddede32bf9f339e3de57b13 +Digest = ab236a98d4f9487b888cfd01d52f7d3746ffc189207b6eb31d4eac5e +R = 01a31ea52171394839ce630bb1c2912b42b045c5143c3bb1c04a5b97a738887f8367c9607971b00964d5d9fc5d921877cd6b099a84e19024cd77249d263e729e7f7e +S = 007600944031efbf27face352b6267349f3cb72eca5679d74d4a0d47fa6e84b391f4743cf2f4704afcbb9dcf7b522d812d268a1ff393d0ff1b44b11b6d75fb84d750 +Invalid = Y + +Curve = P-521 +X = 00edc8ee8d40918ab15122d92522bd862e9d46bbb6550ef22a52de0e4fbb6e4a4635be48406bf54bfb24dc385f506086c0a6e1297cea60ec847007e798a632867cab +Y = 003e92534bf025440635fcd4d40e4b97c5396f33eb16fb1e3390830f24737b6b1645262b0336fe74284afdb99ed6b8551f82a449d80911b0c0f02592c7d210958b94 +Digest = d8704904fd8939d7a1017495a039883a8b07f371eba096b2a54d3057 +R = 00a1f835da9b892687201294cf15769d7390e62e46efe1f61ce7ddc80fc47dc83c86db35a5096cee41289d66d7803f7e8e11fb9c9ca867123027af343fddf2b1b89d +S = 000b5b9653b2533da8e52292f37b86aaef201743c6d12352470656ca165092d74a8f97ab1772299c62b93d61ec097c957ae231d3c80ef1b9dad1f40b06e0c92ece2d +Invalid = Y + +Curve = P-521 +X = 01f1464035dcc9c6dbc5e32c318b6b3e9def33cd2feb02b7d4b7249155078915034ef823a4d55fcefecfe6a10603891a4a9c3e6ccc1a05809bc510032d5fd30030e5 +Y = 00ec160b9da57cd8e55630ab9524301ae7f0f53be5d55f7e7b99270272f6e6a33d6fa5fba73195d242e7ababa5cb69f6bfe9165ae3fcc1645df5ca4b6254460029b7 +Digest = a824681278f1dcdd937c6d7d97e5c028106277a07c3926150c7bfd39 +R = 013489e2917236dce23e929f8c1ed0057b0d70c68762073c7b1787bd3cbdd084174f24aef0af10d09c77530c3f76099ce53b63598c0d8f8ce53df83a9af11b7e173d +S = 0111e1868e71f5e83eb5e38f97fbc466a9e729e19165169ad81cfd214a1ad1e56fa47bc97ef47a93511397c849e9da3f7cee68bccfca4c5c60762d99b8c41393b879 +Invalid = Y + +Curve = P-521 +X = 001248e0953894616aa4b5573644bf4c0b1f45a5c0a47a193c3ebd2215b29dcd387d76ac98183894bed359f06c6de7bb94e975c3e6f9c1be3fbe3b763e2501b524cb +Y = 01971e69438e24b67baa6203ac5904159763202c16d6afa91298fb43eafc867bead0e61be1601a3fd70219af962f7140cd0a29cc26ebf765c22b895ad0f91aca7500 +Digest = 4d9ded4947fe2a964a6d54f6262292162a14b054b5d8606342d32523 +R = 00215d8b547b0fcb9d18eeb5acf277f90d97ab6371aaa6e8a3c1dfe66d2c6ba5fef45260028d25cf600bb24560e599238b285a823a0dec5e014db4cddfb89ce64aaa +S = 00bc5c4dba8bea55b73866c0b4bf739c764ba67121b9b1fb261b282fc1882f22eeaecb5c89edbedf90318ae8537554dd8604930bb893d21ba36ea445d0cfeaa28664 + +Curve = P-521 +X = 00bb34185d844a096f7f673f86b317c27e84fbd6938c1e22e4afb1120489c38508dc643a92ecc963b694dd6f2c7d0958966d49b20883daad4b00a8d0107f2b8ea2ed +Y = 01e5d3adceda7ed7c7177040b1845fa8064e187a16b9336294c1402ea2eb89e6c14bdd392bbdd2ab516aa7ff3987bc44f6dda8109452db403b39cba9536a39f1ddeb +Digest = 2f2a916d2c907ab764986fb1ee972907379a8b66a281ff6996e1d158 +R = 00d1f2dd7534f9f093a281fb538660324fef9cec2dbabd3527b1482f980dc08cc84de25f83b062ee5cfe1d3372555b7bcf618c71fc464caeef5a8bb141f39531f15c +S = 01a1be81c9379abd578ae9663cad8fdc892ff46144f77da469b832fec4e5eee8a6465be3f211f26e3b72de5a9e45aafa064e24d501fc1963733388af20c7b9c9959f +Invalid = Y + +Curve = P-521 +X = 012918b48baedcb53edc782cef70d772232d1d9e1f5e995f70c76b510f3effcd5c239625e3ec5e37d202b37e4e6047a28d70b489b44bf5bfc2b2cf03c8abaabcc4fa +Y = 015ada9031e346257778a7b6a7d8285b9d66cbb27b1686ce3de3490c08a3d0a64495906f0ed6e1e4b7edf1ff657091f97bcc383e16f2ddb3c723c53d559fa0c5ffac +Digest = b1e5176dee3fe3678e36e8471f4e5769b366271eaee73858e53d22fc +R = 0074cc58e3fdbee1b3b09fd82621bd593118fd4fb372adfedf8895f1775add9bb38fceefb42298c16cacff33af75e38443388b448ae251ff8c049a09fc7af3cf6ad6 +S = 00c51622876dadca150cb6be19dd5de70446cffd2bcaacfb8dfae4e1c7d58c41defa4589668b45958cb5f164bec71353ee57817e0a882c8643fa7bc6339dd88480ac +Invalid = Y + +Curve = P-521 +X = 015f8a3371c14a76d932a83f242c56097843ca370385db632fd91e05939ce0f87a94028f9f197c435e89525da4624db332ab1b36a1a59cca8c1ebba281ef5ea48bd0 +Y = 01bdd578714cab38b3d07f28f286a55659cb4de6bdbf13ffc149f0cdf71be6be2d11ef800614a1ab97731886179f50360bb98a8c74ec5a222dbc9b6762a4f56734e7 +Digest = 3f9668946bb66d9f63774aa4bd7f15c9dc94da241867b13570e7e4aa +R = 00c15e0d1c06abac899b90c86ba6e37c8b8cc982780262e303c94a0c9a1ac52554423257dfaedb70760e6ecd66f9b74913a283a2e44d05dc8eb85e5aaee5a4323015 +S = 0014783e744895c7b6084d536a58e9d05a1a53a4ab96321d09cc4c89a908f75f01515c45df3c471ea02cca0bf9f07d1873bb3404d3ba5b51dcccf30e9a5ea0bb151f +Invalid = Y + +Curve = P-521 +X = 00af896543430ecf3b22534a1a3c1c84fa0ae28f1cc659432417426fcfa814faef9397801f16da3bd610206c2ad62f775ca01ebaf380fe64e928cfcb48213a268cdd +Y = 01bf669b84b415f99e8e997b4e67d0b9f359823e0df92688c760ca99c08350f0375b301c404eee80d86af5de31e95d64ca95d9494e2d8622edda97282732e7e2757d +Digest = 5d90c46baf8cfe5541ab3ee8f3aa02e881db1d12692dc16b0d013420 +R = 0191e914f1520532b8b3ccc536b103e4eaf2aceda838117b7090de8b3c2ea03fbfc1f54d15d6fe8e6d2cbb794d0206ae3387e808661518bf5c6dd608b5a40756e24b +S = 0152e95ec2ba49b5e4d65a3f50a29d140b144f10d2eeba729e439f34ecd7b97dbe672dcc25647446a49e43f5710280d79fe01c0a7b7956fd80bf35cb6d7e560cc983 +Invalid = Y + +Curve = P-521 +X = 01ccee36646013645ac83b532106a9d78828cb387819bdec3f7d982ad2744292281a00d59cd4c1290365d5b821cfeccdbaa8ebd5f10aa1b4b1342bbca27e7619023e +Y = 0171cfb6c2a95aae42458b6bb582d8efbeaf7219594dca5904b2b3c22a203eac193068e603acf1afd10125306595d0056e2bdee05aeef2d4b774498619cd5f1a3664 +Digest = e201f8ff4c18ef73b7ee6ea2ab3cc482e785bc77b71badf828d9ef29 +R = 004347e5389a6b4a3de2e543d7474c28e5fa284f5268e474f8998395a7dd154fd0c09253b8160f9bae840189161bc3c85db268d500d6aa82a3c383aa025553fc25c9 +S = 010623dda9d2c39d5e6d463d96dc1ae91f0c3f34df698dec0de2e1840467aa54a5bdbe7815426b175f6c19d1a5f09cec6f5270658a80ccbfcf58a30e10cb342e9e01 + +Curve = P-521 +X = 015bd9bf7a35cc60147b32b64e0e4e54bf9ac2173cc6784b3d4ebd076aa5d45c1e3d0846b20b61d6342341a8801a2f63028c991831318245c2fe31f8acde6bf2003e +Y = 01afb67c9c700ed332b47a2d148e6ddd3571e138f02a81c3cfe6d4dee0f512d92e76574fe5797c5566c05b3239fabb212c735615e719e718fb40fa6783c964357f72 +Digest = 3dfb0c771418d4f1ffd092de8aae7a563af2c9e559ad0b53a5b61090ea77eacd +R = 01a341d0e8906239faace79554b90d1445bd28f703d7c7cc8eb163337ad3d4bfb3725cb06e618991491534d399866df5c5bdef897c889947b21148d89c657e64124d +S = 005c5b728837d44b7b6935efb2b721b4f45c1675d803d87f70158e451434176d9682034c9b356b5f9181e07599bdcb55e5bc808fdd36fef9c19ddb6342c975262024 +Invalid = Y + +Curve = P-521 +X = 009f21a6e7295b183656709089b3c647140c81f71b0b3812e6de22c52245335599ade6a3116cb70277dc2485f91c7b1f46d62afb60fc17a110358c9a02e02e010960 +Y = 01e914284cea47dd6836e7ce899d0c9a88d67fc9d039ffa9fa5bee58d247e0d0dc9251be8b82afd3add327f98c5570bdcd8ad8827820032774d19db09232aeba190a +Digest = 6b7b1a121d5e8f4d3d0294abbb62ae16561f37b6fbdd6d519209c6663669323b +R = 00ce4b2ac68afd071531027b90d4b92d9b0e1044b824ccebb2c9ab241d5b909ead1ffa2dc3d330f57187efbea7374bc77c4f7ce7ee689aa5a1e27aa78abc3cc1e751 +S = 00aa85d84f9c7fecd25064dbae69c16d6fcff38040027bf476c7f913746272b5d4b9bd34d2482e27730522df724895b99253aed86011139928fa9a272892f8c99d8f +Invalid = Y + +Curve = P-521 +X = 01098be00de7b2ee7390f26eff82ba5b6de8f04d7f11909193923866d2feefad9b01c5d78b699ce0a6900dc2a3073a03505ae946aa6f384ab0573ec9d17fa775dacd +Y = 0106e122e7148b547a0314da646b6f834e66c2ff7f64f39da9dc7983e80e84063e23c8ce12994e8495b7786c2b3180d7f22bd2d2becf1e1ba2029cbbe8d4801b65b1 +Digest = a1aa4766ee9db4cb7bcc31a333214b096fa608623acf5a246ba0de66067d61de +R = 01092e5ccfc4f966c3281a3924cd527606ce8e64cfd78f57373cfd702f528368beb71eb1a2cd64005bb172cb35b4ea61af88cb06bc8f1a38e2d75b235d23947dc209 +S = 01aff29a28d935d0e10bf8015f38ec128e0ec047f04020d1474366807b140e4d4a6d069aefc8dce723fcb4fc803df30b3880cc6d0dfc75c291d848d89e06ab7e24d1 +Invalid = Y + +Curve = P-521 +X = 001ec67de63455605b31a460d4faa664697cc505885577c0844472842dee78fa6d522e4b942d3c7e2de684e6399f6a44a328ccaab5e678cd99d49f015e35a934cdd9 +Y = 019b41da41e7506cbcb7c31d39751669cda166fd045c86e1fac68d39d2ebb0f1ed50b8a923511e1306952888e068092b19130181c2de5f25c5e1fc4fd9ea202258d6 +Digest = f00b9327fbfba5a3fdd7bd9331582822b7bf8bd8f2fc97f0af5ba207fcc92b71 +R = 01e1882a3d98c236189a35ffddc9fecdb7cb5fc5e3d0784eabb69d9c37862dbb38eed6c5567a0abc4f74099329681b9a0921515f1df83ba8948b51d3871866a8f7ce +S = 0025ff707889678f7cd05665c941a2bbe13622a1e75ab986cc86778658c62e527f55804ab27d0643f6bb8adaab0614eac47f33f0e1fba109c63b28fa6732a5afbe49 +Invalid = Y + +Curve = P-521 +X = 00defff5ef7cc5de0e1ac32261e7a74e8c434c0b51f76df7566b612cc5b8201e7b38c51aa6118b6307f436394bf452a72224c977e37e410eae9525df2ee00a8123bf +Y = 00263b7db73558ddc783824f0b19776802aaf5e46ccb1b1d1dda07d2d6c5843f5036ae8d381b235ccd2ed04eb90c5d51e32cbd7acdc7031cae63c06797556fb66fe3 +Digest = 63c7b65f78581fc15992ac54b1221f16545a6e50a0c740e3f3a1685f09f358a8 +R = 0089bd129a537840a52ef434d5a8ba4add952f72f22a84ac4523ea0bc02cbfa8b681ab0ed3fa2bca24ae575f23fce7efbb9bfd28e465174158a5ad2b08fd9e0b7132 +S = 0004ed533337791e05f8d097eabdf4be96b3fcc9f876d47fb8c5c7a05cbddba398cded2edf5ec9b7dbb4e32c1374b46953d66a193c211ef12de4b9d73adc369d5e95 +Invalid = Y + +Curve = P-521 +X = 0180f1e933054473e81ac82aa458094b7cb95d4b8d399600420cfb082e37980414909a133d5e42ebb7d2defddb34a9fb51fe4ab72e88526fc28608e152aaaba3ee5b +Y = 01c5cee9fd322d1c3af1726366e8a1e3f22099d9246d4bb02708eed89ecef1fc73926dc97a5c263afa235edb39a9e63d9690608846abc482397a2d8673c5d472c970 +Digest = 1f2f2957156270593c0998ba0d12c6d2adfe8728ccacf3332f9e6c936c33c805 +R = 017f1fd4df519ef432f68b5f426ff23a8f36b5729fdf7c8363d73f4e707d9800c7b50174fc3d66d89813a5265f8734602e5c998c2d7b51bdef6e90ee5a527e1357e0 +S = 010560ed68f152d649493c02c1e32bf4138aacb5f2d7f449e7685336edde24e5ce1cfaa2c54530f1419593614971896f1a877dda7bc5d56ccdbab18e770647287979 +Invalid = Y + +Curve = P-521 +X = 006d8c16536b17cab6ff41f5df4038fe416c05ccb601710909708dc561b02ceed9cf020441d9daa075e8fd604531ff58084035b1c19a498b82582f5b20f9cedf61f9 +Y = 00e89d71c66e55c4f5bf245413388bfe9de83944b11d1abdb4692db7da8a086442965ee512f7089f89464dda5d7786e52cc26a8a30bc8824cc56a289fefcd42bdfd2 +Digest = 2e139493b5db177dd536c562e0c90445b59a686eeb27e0a7b7cd93d72fa4ab7d +R = 0087f86cf4bd36e8253097ac1bc8500dedafdbccbe5767ec25e53c73c4f053f3b37acd1d5ea4c16e4058919b61d2a67393220ffefe07535d53923ace6815463c4c31 +S = 01def2582fd0df89fa28c9ce882f5c3846135f51bdf7f4b2497b190136ef04618eaa22a8c5a117b0adfc6425eac3111b6558df145a8b14ad39524b98659e01d51c21 +Invalid = Y + +Curve = P-521 +X = 01c7fb4747a409a3723177c38c9943b81b2d0aee867b8f424e227f3a664f1877c560d37953e7cc09390e05599292bde1ea345073ec365834d99ac59332f6e5bd29d7 +Y = 01b7485b454d5ed5d581c7897a7e68f425d8c23cd89b934747d90765a5fda1cfc3d997af61728f328cc8bdfca8a3ae1b3b90be13cf164c343d199b8e16b0400f3e33 +Digest = 8ba31656449e19607c84d9a8d689193f30a6111aa87b8f978b9cff5abac9f827 +R = 01552ac2dfbe67c6abad8d3325713c1e28537eae620d805a73dbaa4e5e04acff6ae0498346d6e41df1cbdb20b70d8e548564da8fa239fe6c6f28b6c2a6ef57973097 +S = 00cc9e60b694d792f36cbe9adff8dc79f0f75b3ec11ff2d54419227c7566e0bd441655eb30b558c78a55ac613c1bf3c3058ea7a4bb70adbf5b49fcae15e54defd6db +Invalid = Y + +Curve = P-521 +X = 016c0e1d1fc81e5069e9c02794fdfe1f5a8ac5008305d9ac2234eb0117e565203acc6777c570f41661c5db1adb26097d7f5f2a1762c4f8039f1b68caad75915baab8 +Y = 000b3690995d6d881dc1564f792ab174cdc1a0fc6f12d69a21088d5e82de4a7d56947a2dad0ce64d9ad0675e72b6da755e3ef82c9cc6d532378c23112210236889d6 +Digest = 4d3c537785e9dc1d434091ddd3be8a48b86a02df7e6ffa269642d44cf8f32c25 +R = 01316e9a934cad1aa0f7dbade1c9ad942d61bbe1bf41b7b95e3b25b761b9899f6125790369277aa09fa57340a2b8c3c609a08ae7be5a3c09dd4d081e6cb54d9f3061 +S = 00d6b285f91c3c8d6192af624336caf793ad5300d96262f5e25228dfb60896c4e28e61be22e92ca7d6e11a02f36655441032bf291f895aaa117f6bfdfb422286f255 +Invalid = Y + +Curve = P-521 +X = 006194b1780a2416dde8c9402e3ddbf310c51ed87fc40530ad5c97931b99336c00098337fcca7b01c634e56a7874309177364e6d4c24c2ab33d6a1a09a84689ad0b5 +Y = 00c5bfcdf640c0a7573ecf4a9dc1aa75db298ddf1a679609e0669182a594b9b9a8186ee961b902d84fe998e3b380c304a0be98974514966965bfef9971f05a57c162 +Digest = 23e932281d4fb08520bb7c563808e6b9ff43e83fc59977df1ff2c00ab5a0f7b5 +R = 018051118c2d8b841c6d78e2e5068c7305039cbae1f8b5a479b9bba559ebc45d8c8ac18d1f6033713871e656fa4eba9c1c0892e7263bb22c46ec3c72aae92afe2c79 +S = 00de0db6a6ba5e6a953a126be3b87d6c895f4bc2db27be223109dc67cf115bbc8c566e1c9a1bdf1a87e632f8a0e4b31331a086caeb60793e87f03b404140aba206ae +Invalid = Y + +Curve = P-521 +X = 00397714abcc503eaa0c18abd1fd26586d28ec1b1035d37ac710f2823911ec9afa429b41ea89cec13d5bcae9d6d7147794407e409f3b267cf4dd27e8c77e7ccf4d36 +Y = 00a3a4b749d19b84708e42b59e9faa5a99ac0f0a01121655fab87785fca38c8cd4277c8c2c9a0024ff608c3cce954596315dfe0e3b133aeab08bb5389eb2a4f1fb42 +Digest = 61bcad3941eeb4005c391745635dbca42b451c3222b6123af2cd1279f89f3b2d +R = 019da96a866db12948e0aec7231f797061f345739d439bdaaba63e4d03e0bb52c3fea2fb593347d983f24a3afa6a77f476e6bb49a5de843b4c4755cddce97b8b909e +S = 001bb442f428b2ca445a75ad88ed49d965d6659d748d02cebf78faa1ecc187b606f284d11d47791d585dc371c2d91848a55ca7b092f06d561efcf64e0de0814e1db4 + +Curve = P-521 +X = 01af06b10d357fc3c807854b4be235f81d5036da4df1af6a054a03ff800c1aa2d59c2ad5c0e25ed25c002057cae4b4adb92b95c36cf422a46c8833fd8968e0f32441 +Y = 018432172be0e535a3f3a5f6d6927dfbf6a00051cc1983ba25410ee3598a60dd1f7c38526de7ee23f8e9ee973ffddff49eb3edb28adc7d094cd95b63d52ba45ecb58 +Digest = 006e84c19a348fd59fd011cfc5c189d0bbb68bdd2ad30448e13ce2e01f2cdde0 +R = 01396b4f044919d0ba5ad43004cd37b8bb0626ea5549d57c532339358ee1794988a7c9eab91a9340dc2aa0f18e89b236a6c20d03a6e98f35c011430fc4213cd65dbd +S = 0101e5a788a867d9b5a4444554c9651173f9f8e15c0f39f9adb66c18ef8075243f23b95d5229ccf5f56b87f5c50920b01b22ab7476ecf4c865a3d6d8f2242d422d8d +Invalid = Y + +Curve = P-521 +X = 0176f1276918fed24a098d6d03077f3c33ae543316df1b6b06ce877e74b69b2cd4131fdf797e77e5f6391b0b32411120d03c0c59ba1721a7187d18708121d6f3a86f +Y = 010f9d38b30a2da1a745840de7c9994578e32bb10f9334b46f533b6eab550aa55048e4ac601889564ac8314e01b61613fc7b8e2bd3f1a188c5c5e869af16a8d61d9b +Digest = c11b8b03fcd4f2ae25f60af2ec2ccc9afcbf760f61782fad21a02d69b1024cdb +R = 019cb5639a321e95214c90a612d29c9ffd5ae5aaa2a814ee2d66ac1ce1d2ab3229009129ec9d472061444cbfbf50c7e4cba09aab65299a42740bce7af3fddf2a1f46 +S = 00082ce6bf1d809d3bb4f9f09a95590bb64b0c41bcee5fcdd332947a9b59618da5da897fff44968d92635e7833dec1e91d8d99bd8b527609393b446c83d109a32243 + +Curve = P-521 +X = 0089565cf5838658fd36b70cf5246cbe999a394562c46e9d8057928e0aa9e04ade6002cfb83f315e06790e58ea833b3bd64fba8e93c5fdba8319c5d38be7cf25a21a +Y = 008faeff531e683d28d817045a03b2dd22e50e6168f1e5fda5b5abc71859effc5e5c45b88705b62ca090e3362a8313dc472ec2ed970bbb5029200318e7582643d613 +Digest = ae3204e3df3b8aa0265cfeec6b0facd4b3025af6af26fab931ee5f2188fb4864 +R = 006b5237ad17da6037aef116532b3aaa70172d0ca0eebdc478c35e6f8bd0f9a6472d052c5a18a23dcced7be6e5e7b6d0bcb5b3cea707000e7d114b6f41084d6f5620 +S = 005e2556425b35e6495b137f7dab522c7e7b812004c87a002f6ce4f4b6cc5f967b8f5b7d3786a17d5f717d3ac467b73e176e90cdd8c5151a6e62fc4604cbeab7e717 +Invalid = Y + +Curve = P-521 +X = 00aa42473f80d9d81f6d41ed05c8ba35c005f90e2690f71dfdb12555b7590c7a8e95b618368c39f4e84d6cba25f522c9bdd256c60d3f8c8425ad313701225a9cc9c4 +Y = 01992b7966b925f42c91f810eb05d602b804301849ea278466a68e5b616e3a0bce110fc9250db14f9c8f5929347e1bb8727bcf8072c6aebc26958954fe96df04e139 +Digest = b7e0d79517efe3d961ca5bbdc0916bab7a32743f5150d53cd60300b3edceff49 +R = 00cbb35513420f206bd26b568712503b66e159a54e154c8d4e9c661aa954e0bf425871275fff5e8f368c8ccc77ffe6adf84ba88a84483d8ba5cc862bd408f6a192c1 +S = 002ffb4e461e3161c801ad217a0483045181013deed29eec29cca94776139ddf5fe9d7771e5ac7b637a4bf7e5276940489bd8ae36f41ef6be93cff4b96bd0e1f3e59 + +Curve = P-521 +X = 00984cf3de2bbaf1b37ad4e9121a1294a0128d8a031ddfac7a8c5d7c9db83699de26c50012d42223d902cbd4be7e6fb611f4502ce8444d43d3eb0685aee07349d0c5 +Y = 017165e8feaada26cc599ee394dfb5de7e2201004f755ebecb92ffda0a24be55aba88ab9b3c7a575884ffa7b78b631806f54e01ef875c5819fd2d52dd6369d649615 +Digest = a0f94fba76704fb2749e4cd454312e47f7606ece0b2013748096de2ff30626c3c7c7aaa855f33908ed60fc8943101625 +R = 0036c8554602661d9d8f4bfecbb099f01e9e314136e50c6d026de2297bbaf66213ea72fce13b73bb07e6e333523f19d3910983ea5842a1b634b3e3ec8157d270b496 +S = 0129b439d3ba2d66c89c34be2a674013128dccfcef33f5d3844c4465381453c361ce80e1b52b6a611749bc70933655caa56da2c5dd6b04defcd8baeb2d9be06f3caf +Invalid = Y + +Curve = P-521 +X = 00f976d58a015d3015a14997fa3f59ca8d762a6541861be923d6110c9e742a0a2a77d59a6a9335c67f13a626d9545b27c072349c3d20b80c35b0a9490f3e6c5c1b3c +Y = 00425c22ac0755c58fe3497c1f1a9f537d5e26127d9b031359c2378fd4b13f83691a854444eac3fa346bb5a63bb9567c122945ce99d2aeb0bb1b956ad348f7c9c461 +Digest = dd84b1706091da5e5e27099894e439027b9f45c56e0f31ea0cc528dd587f13a45b9dc87aeb90bb2003e16f56c60b8ad8 +R = 01ca7346a2efe39e03e627ee9480a9b7c925a6677dc80932ffd67ca52b7e46acd2063402545d678d218ac579a64cf1fa4eff4f32f92d3fa4510eea22472dbd3daa72 +S = 00893d86a6502d5973f6c766413e7c7ecbc4583577c58672ef36a76c83755a0ab65af0e0af0ad0f3e6cb8f9ef67669132ce7e996d6122cbbe1dec710a7ba9c9d1ff9 +Invalid = Y + +Curve = P-521 +X = 0066ad5c073425bbbe3a1d97ce6e1a9f2c298392c5afb95c60eee1393f7cd5c9a12c283258b1a53f2ed4abd13ba1287f3a1b051a09cb0f337cb6cf616dffd16aacc2 +Y = 009d2b2afc181bd82043b13b8222cd206b9264d73b229c71d9abcf74a478a7f7088bc8c7bb1e54882fee693340a3cf1aa56ccc2fb81d2675b19bba754dae0c2f00c3 +Digest = 89990b6ae2d21961eba4f7c9efd2e910ecf1c7809e1171d219236f2a8a38bceaefb553bbef7083114af5ea891fe44e89 +R = 004e6f08380c43f225169acb0e9f3ff61cdd2e9b713d149f63b5b6a4510d381409648fc1d442fa1bbbce2a8fe1ff7d1de0597f72d7681c79d3a876db6d3ef89ed192 +S = 011745ab4dec3542cbf37d10090d6038bd1ef9cce8216a4069b21e4a08075e7e8502ec97b99d3b18fd314d6ab6826bbbfaa2343ada1abc7c3b551c0b854dc45ffa75 +Invalid = Y + +Curve = P-521 +X = 0068801cdbb1e07f4b72218c52aa24bda872f1b2ab4e0c13b686cb8b10096ff88018e82196769359227192752a1c4c884f08cfa7f947ac428651f528bd41d1034073 +Y = 01aeb335cb89ecae3cbc05681e2170870dcf40d486db4011c4d7bd84c58c6b3204161d9ca3516760b0c42466605077c96c0540939c635bf5d7d11e1407b6da30c094 +Digest = ad6637c97ce73a8476c08eab09a8e98f42ae6253517f9abed3b3527942075dac7132122d96978a68324ca4dc11193d47 +R = 01ce67a3509d59f8a0f171b86559f1d84589ff2693ff7d3ad3ae64b0e5af85db2fd99bfd7eda6e8f984a87f16767231cbd9026bed0a9a49d74ea5047201227c98f41 +S = 0032b0e4c043df8e81ff22c9bead36f704c992ec160d6be7764640200e1307002421b5d73154eccde012b463aeefd11138c5b9b705623c2c849736da23c122df06f9 + +Curve = P-521 +X = 001dd34056fd2ff3009bca2d0bbfa70ea0fb678597d41dc545358263ce2cef9a2efc016622c12099c2a50257609d6a14f3c5ffac8a52661e4a34689a3aebdbe86163 +Y = 017926740659acf72f7c7a147a3a320d501efadef8519bb289ebc33e348d6b9efd65fa516048101678548898619d311b8ef2a0d4a6f59f86810e9e6534176a24faf9 +Digest = 1cd3273e0dd337d53131614aaab0b6ffaba8d4c17863a1ddf1e7cf4965bc548628e7230f7331e1ae72b1ed9d1d2f8ae8 +R = 019043db42f44b957784a0e1f09d2e0a0dd548b865947f93b516f249ef1757402544ce5dc402cf8c1f180e9a3be01657258a1dfc14b25ef564805651763d6f609d43 +S = 01e0b45e00bde9c4e8dfe094f9bcd7af5a19b631db850a69bf0b6291fd3df6e26f4c712e3b5d4b7b8572f637874057d5652fa2bcd1977065a695d26a80669a23f0e9 +Invalid = Y + +Curve = P-521 +X = 016e5b4f4ff81c1b1e7956103c5cde951c56b37259fb8bf735b386e4d8b3d44063ef062d6e179f618a506ec8ad9773cfe99044748e2c8ae229a51bca6262aaefe2f5 +Y = 000069bfdb9123885d8ce4ce67c63311055aa9a1a5150197717a853d0549bd17d2683e427fc90a0b78af5dc96465ea3f2862cf98e8f3ee2a07089e8837aa8d09d97f +Digest = 9949e2a22eee8ae6aa35dae08f3c81a11e0e2c546ccc11428133c65c43d36686c40b17bfb6ecdb47f3279c01defec943 +R = 011550cb365daec01901b5a5cabe7930c10d79128c5e510d58b7593c88647eee811e6fa736b26351558cbe7f17d7c882bfd1ffa72ca3bf4bc1cf1c05f31f5e8bc057 +S = 00d6fc97ad14639a5157c92b39cfd1315d7e940a454f1289c8e95c8cbbce8731ad37180554e7a91565d86cffb3f5caf4ef883184d717e03eb776af714a32234e3f5f +Invalid = Y + +Curve = P-521 +X = 00202896ccf6710cf780bef8908a2783b3c8d5b8356f1546a1b6b909b0d65ffd7999a16112d8d68c837597656e520a56c2f6578e322df6dd794d2c08bc5d8f9f4c37 +Y = 00576152d30218c941e83080a502cdfbf9de7ca2c394969e779b76c359ffcb84902ff89e37125dea7dcdea0ba928ce2305c619b1906955e6be5ce40d087c5245eb45 +Digest = 90de70a32a54280bcf6acec4f4d2ff996855de0a224f538e2002106c06b695c8d9d143cfe0c90a1679a2fca7a15bf3ed +R = 00bc6a7f5d77cb6ebb36a261e80d739f42b67ddc7a6496acc0ba7804d14b4850cf3fe4d8b56cdd8c019ef9f0d33aa26746018fbb4c69f4587b6da1adcf2feee2b438 +S = 00f09c6a94a8550a2781e70b4542096407fc07617f537cd27f1a1ddd15c599d5a9e3fa41da57094456277b44b89d40b26f2cc054fbe657788fa9d71659008d0d698c + +Curve = P-521 +X = 006ee95783b768c895e2af569bb84b0b1b00c8b72eec022df255892527987ffecdd81bd8afe267408a8912cce80982bad79c30610571a37d2a0e027e73ad23923b8d +Y = 01ca3f60a37b18bd8b08529da1e39f93d518ae3feead5d00e07150d80d641b20e887c62e8e910ca1c2f64cdcfa678c89b2e3012e3d9b96088ae31dd660dfe6369cb6 +Digest = 8a27d78796a750bf11f75bbed9fa9807633adb4d907125004f69d29b881ec79d14feac2f0e0ed5f113932563eb38c63f +R = 006823e8f6514e42e79d50a112f0f320ecd53963729038ef0d66d5fb59e1c664fda493027678a02b139fcf290657fffd7a529f4f38ac73542f316e1b0b25b3b88cfd +S = 01b3bf9e54b0f48bfcc7289d187e831d94d165949db3c660cb63106be1b933e10614e3673bb8078bd8b80ba052c63d566899e618ea31e2a37e0c9c10da111ad11560 +Invalid = Y + +Curve = P-521 +X = 01ba73e2af308df78d4f2a9e552c3b9fd35d35bf20126fdf751d8ad9917cc58d734fb9de27553cd07c02eabc077f16ad4532871a8aeb59bbec82e46ef1581e4abac0 +Y = 00cf888c75582fb50bd0de724a9f4834ea127a1eea437b9a05935d1ec06815bace3464c230314b7f796423ba9fa983b2e6d1eb0260a32cf2f163a5ff46a9623ff149 +Digest = c9a34291213a5edc7474aee794f9de901be35159890bb660f9596efaf8ae7b02118457dfc3d8d2649cfd0bf5c7eea0eb +R = 01df7e724658f1666aee8d5d75609e3f5215228ac32b978ea53434b7d154dd4edf661c688083d0937e43836c3611526c75f6f26b08f7844a95113ea4a6f1ab824a0b +S = 019d40a7e03bd69ca568f70a066a4a57c0e6ab82dc8c2c8aa52b00c3ee4c327a87eeb7d837b0c4de68e25f7ac7cf6c0d8bbe0393b98dd61ac4961c7f8c70b40082e0 +Invalid = Y + +Curve = P-521 +X = 01419bc65174998ac21026f81e6807d8b42f0477396e7ff8a330e17c1d84bdc9b39b2a310767b46c41711f3f2fe503504350c86bf3d2b39473b64822ee32dec526e4 +Y = 0184c968f6ad79bf0da00520e5339751cd9c50e41e7cd21ef37756bd0e36e23a8071e5f0240988b73acb3bb2b6002002e09bc7ef70ffcfc7cf42d6b7c65110f54ae0 +Digest = c1c0b91842d461d466e94b411c673069d3737c898435972eda2f6ba1118ce9db013d57d3970b137071446a1fa2477930 +R = 00d785b38c5283466f796988242aba08398ed2493aaabf959ed0e8b7b915cbb711d7694f94206db74641a518642d43c843ea7f43b8354a956a3695764021cc5d2774 +S = 012c20c6ab988ae911c7cdea0549de2e40e3e68c47cfe58fb777ebc204641bbb44f2c8b6a0196d330ea2ffa1d8cdc1dd9be353f1c657e43f7fe3c094898a569c45b6 +Invalid = Y + +Curve = P-521 +X = 010f3bb1c96a753d278ddf6435e7a79a53bc2855d26d9f8d5c1337b0fd7d70bccf204377a02a1cbe95cb63e21a9e8a3ce8ee7c8d4ade16ff4083dcacbc6c4b2a350e +Y = 01f98a0273c48fa78a91c0f8c1a43f59c7bccb74780fa38b08989d334f2ba0353a3619e6d4a1072e4e052720ed10e4f2c07e12d0c81a062fe912708dc51d4cdba97c +Digest = 38688d539ee5c3792c29a505d8f8c01ad86efeb2fa3292e49cb921a76eca20dc536ae3feddf2e473dbe798926eb73fa9 +R = 014c4b9e23f51df21b4e02ed7611a8530466d1ed799b50b34b5fcac3bd1d63fa345925122414119cca76d22c167c18ad0fa8e1b47b53ab0f201bd4ca7ea25e011965 +S = 00ce91a050938119f80b5f584a9d9515c998212f6e122780f1607cebdb9b538dceb2d4039ab5e1b13736f4166e73d86c720516f20ad8f24e4b9fadd459c2988534ed +Invalid = Y + +Curve = P-521 +X = 00819178ace7bf1e6e942fd6ed69193386f6c90cf65b42e9204d34ec96a0ce8fb92552ca57a7ba658422dc8b53bee150170362e6e74bdda24fb458271602aaa9b832 +Y = 014af772624921f61b3d1275591ec2d68702fbf348382e9e552a9b6c110eebf6e93f20c8bff287d504fa08ae3628e611fc1262736916fa9edd87db1c78ed2426cab2 +Digest = dda4a591219b9762f682a9c9a626f172b9cb78ce191cf8acacf137ebbd3e28857e768a9e4f2407c990b192f07c5cf5ed +R = 012c45d6ac0b5dbd9647211f770c3cca4411666aa39b6988a968bab345129237597b6c9b3bd788c5f9f39a38463a8afb159ad72f19e7e33e7f9ce8d67d611c3d9b46 +S = 01684000b3d7381aded85b18576832c4a89b4faeea0515454677e29e3f072097e786fef11f72f229b63defa1c2fd3c07090b34f9147647035854cf2950c12a8b16d8 +Invalid = Y + +Curve = P-521 +X = 011f8e50ed6905b029ce4b16c8acb8ed9136b1c5adf6f11bfb5f3dd8bb1e208ca8329a0aff9bf286e3be90e4d61d5147bcaf2293f934862cca6aead51d6e0a083093 +Y = 01963e84a2f06a9cb273a424ee5fa1ae5900fef348371cc91c99323f58bbcd8742a4495a4f7ef52677501a4d5d663658c1f6c8f6edef8b7880e6894ff9e52bb617da +Digest = c55e6d3091b6eb8f48794749ae0c7e9394ca3cb7b083ad65177f8f8db938a76ed6d3c1286a3d51b333c74d1c0f8032b7 +R = 012fc3e0c18c4edbcda4f82b5136c893a6307c3f60affa15d0d99fc0e4a3576b7daefa363b3a362014d14f631c35619f6861bdff9a7b503825bf9f027fcb9a31fd8a +S = 01a138d6b02fd2a7ba45f7f952b2f329ba6a8e25697379330dddd91d1d6e865d3df1541bc4717d3e09b10a57cf38dcef587ac31b4a8abedef43e4f6cdf6ec3f49eea +Invalid = Y + +Curve = P-521 +X = 01efc81c1efc7a9bc36ed49a5ef6fa1ba641360fa5c0f96cc1e4a3f4d973c95e86935d979fc2101370777637ab210a56fc4173a50a758725d60e9f925f2066d2bc00 +Y = 0108225fc94ab33c74aff785dcc68c45cfc3cbbdfa3481fd2a3f97308be671fb32fc8d268c129d97f140210def188dceecc9d712ac397793dbc39c5cac332671ec54 +Digest = 5fe56235e4684bd7419e321db508565d30cd351086ef67d943aa5b932f93efdce875be295920ce5210b7d3f092f401e6 +R = 00480c48a24e7a7ef832547d107769254fcdb4e7982d0e6abd16822837fd4f3b66d81e1d4a018606881abebd220ed8ca865d7e00499ac9651a98c65502baebf34a98 +S = 00ccd22d1b44a1701c99f662535aea9abff7e27f73628101f42708737db8b07effdc2b0b05d4ef233c5910b6261ae9d9c540115f27d2af766c0494c33d31bd56b3db +Invalid = Y + +Curve = P-521 +X = 00a15c8040f94235b8b444f7a74ca293ed1b718449911eefbdb74332687850a644395394c690aa98e8064f6eca600fc3f659208c0f8a21a1e7113bed0c6e00e3176e +Y = 004bebea7037b731d175043dec3630b2ee85c680a81256921a89407c14507c10ac043deb5d474602211ad58cb569a8b805686bdac3ef7ff62a4d25b27200706b603d +Digest = d27a626bc9154bfc85b03724329b8a06454d5dc005997bd565f64a80134c865e73a2e123d2b433927efcbdfa3eafa827 +R = 00c1a70919025aceb29dbabdfc2a43715192cc60fc3d1ceababb40f91e3110b2cdd8f6e9c1bafe7415a26fa4179f8fc261b143ddb094fe61117afb13adae9db8943d +S = 00197d7f87aea8d6ccd2178614b147b290ec780c8075f8439137803c0e9a589e415d84fa23f5f31d61c1674f87142d4ba4f8473fc92d7715c281dcf3f1ee5c2f1390 + +Curve = P-521 +X = 012a593f568ca2571e543e00066ecd3a3272a57e1c94fe311e5df96afc1b792e5862720fc730e62052bbf3e118d3a078f0144fc00c9d8baaaa8298ff63981d09d911 +Y = 017cea5ae75a74100ee03cdf2468393eef55ddabfe8fd5718e88903eb9fd241e8cbf9c68ae16f4a1db26c6352afcb1894a9812da6d32cb862021c86cd8aa483afc26 +Digest = 7679eaaf0495725fa99c51a2dd0c35c8882b840e1c2340ba793013b1e2567471cba35c0dd6247cc2c2ca14f6556912a5687023fb2f0ee02114393bed4c598742 +R = 01aac7692baf3aa94a97907307010895efc1337cdd686f9ef2fd8404796a74701e55b03ceef41f3e6f50a0eeea11869c4789a3e8ab5b77324961d081e1a3377ccc91 +S = 0009c1e7d93d056b5a97759458d58c49134a45071854b8a6b8272f9fe7e78e1f3d8097e8a6e731f7ab4851eb26d5aa4fdadba6296dc7af835fe3d1b6dba4b031d5f3 +Invalid = Y + +Curve = P-521 +X = 01d6aef44370325a8a5882f4667c21172cdc8fa41d712562883ececff53883ac8ee276124e825088c79d6c9d96323cb7b8c0b7ea44d3f0026e2538f4b62d785bb1af +Y = 0027203959a6e944b91fe6306debe74dc5dde9831fd0ec27e8be2d0b56807d63151b15f6495b8632e919e1e6b015f5ae5f2b6fb8cf75b5f848f00cf4ee457cebed3a +Digest = b99c410653ce928e365d3613331b5df067020e92f634696279d5cee80f1f4a82f7d976a059e318b36eb25314b56f8765a81070d0944f4c86e8407d9c3e2aa7da +R = 004417ff74889dde6bb1820b5d13da5c81dcf9b0723ee89bb1ff0d3faa90d497685709f315b2cbe55481dee43ebb6d25b1501ae69494dd69e7bffb72f987d1573b93 +S = 00fd7aa027c665458c7ac11d54d4f32cb4a1e727b499ce27b08d3d647c636cc3222a4f0a6057732249ddc22574d7cb80c3769c3ea9de3d33db3edd8ea90cb3f8dc8a +Invalid = Y + +Curve = P-521 +X = 0153eb2be05438e5c1effb41b413efc2843b927cbf19f0bc9cc14b693eee26394a0d8880dc946a06656bcd09871544a5f15c7a1fa68e00cdc728c7cfb9c448034867 +Y = 0143ae8eecbce8fcf6b16e6159b2970a9ceb32c17c1d878c09317311b7519ed5ece3374e7929f338ddd0ec0522d81f2fa4fa47033ef0c0872dc049bb89233eef9bc1 +Digest = 97ff5a81fc88f7ddd3bc58154ffd2695912fe50ce7c63b62bd798fb673c6aa49f54bc7301fb7bddc6edc51b7e0d0b4dec9f80851fff02a33671ad9a406bbabe5 +R = 00dd633947446d0d51a96a0173c01125858abb2bece670af922a92dedcec067136c1fa92e5fa73d7116ac9c1a42b9cb642e4ac19310b049e48c53011ffc6e7461c36 +S = 00efbdc6a414bb8d663bb5cdb7c586bccfe7589049076f98cee82cdb5d203fddb2e0ffb77954959dfa5ed0de850e42a86f5a63c5a6592e9b9b8bd1b40557b9cd0cc0 + +Curve = P-521 +X = 01184b27a48e223891cbd1f4a0255747d078f82768157e5adcc8e78355a2ff17d8363dfa39bcdb48e2fae759ea3bd6a8909ce1b2e7c20653915b7cd7b94d8f110349 +Y = 003bd6e273ee4278743f1bb71ff7aefe1f2c52954d674c96f268f3985e69727f22adbe31e0dbe01da91e3e6d19baf8efa4dcb4d1cacd06a8efe1b617bd681839e6b9 +Digest = ee21776d7174103b7fb65f03fd5d78744d2706c6726ece81e3943cf90f60fad6d8978af6cae9bc059aee2412ef86d0600694447a10b9d21079b9ca77500634a9 +R = 004c1d88d03878f967133eb56714945d3c89c3200fad08bd2d3b930190246bf8d43e453643c94fdab9c646c5a11271c800d5df25c11927c000263e785251d62acd59 +S = 012e31766af5c605a1a67834702052e7e56bbd9e2381163a9bf16b579912a98bebabb70587da58bec621c1e779a8a21c193dda0785018fd58034f9a6ac3e297e3790 +Invalid = Y + +Curve = P-521 +X = 01d9020b8e6717254eebe619d46dd5a9dda7ba5491a7d1b6820fba888e236fafd71179200437f4d61284fb5a3dfbada66bac3e6909ccbeee03c2b93a8bebe41a73f4 +Y = 0048a5f09174fda12704acdd8ed560695dec42864b6300a030768a0be7f09d25f82d7b126125e41417a145641937807ed8d1af7a53f5bc3fc3c57427d755dcce3e25 +Digest = cc4e8efb1e9061500bd2dcc5233c2bfa3d3bd89067c26cfee4fff4a5a7c9c9b15151aec1fa91e78b67cfe3efd966ce65681dd3daf36b887d844033a473be592d +R = 0092df2dcb457fc7578eaacc98ffd73ade07d764e9553506f3dc958cdb3f65d37665528cb2f5f8bded0db0a57e6fa73bfad1aaf94718379d1655db4f32d4c505a785 +S = 010e0c31479c2b29dc2726fe9f75b397d9e37a17619e96bc631c62e9ece71f05b199804cc803940d43ddee41171dd7787668c7db05049dd5b63e4f63562aa700ca81 +Invalid = Y + +Curve = P-521 +X = 0007067d2cf7b7619b9fcff2c898246ae0950439b8bab92d809624970eda18456cb99953ce1ae45ee5d36ef02fcd5caa4d951de8581f0c21e572caad56d6dce60da3 +Y = 01913c59007a309005f226b6a30122828d60b4d0390359e1977f88b5347dacf2056dd362648e8b1d6fc038a3bd3fde6f1140c740efa9075ab8b4a64b334c5cd43f09 +Digest = 996010910456dee59309f1631f30e3dbf7ac2da7d5d7f69223c8a18f491cb18f7e11d0ca09352b715354a071e6d392a8c1dc0751569bdfcf36c158c8b07a5ba6 +R = 012aa4a532c108aa3cfb1753f95ca626bb72bd96a423d727656d4ebdc3f406d6cc6c44d3718f9abae8a0b46be9b57f8fd3a540326b63d0d4a8a93165715920437787 +S = 001badaf38e16efd75915f4806f054d40abd2d11e402039bd48c832f66cbfd145e4dac93357d476b7e608d7b75a017374ae76eee86c505f2cc16eaa19075827ccd60 +Invalid = Y + +Curve = P-521 +X = 00365388d9589c18ae608124b4cf746ff488183a912e07d26b6e867c5defb552a5a0df5a16b6342014dd1b0b6760072bcd60045d6a9a514fc74d16047c2e8765636d +Y = 01a5319b26fd555f2a12e557418f6aa65a3461aeaea5c0c6d8698ceaa5495eed7a7d2fed0b76e77b5be11834f36e413d5288e47231c0eb0e9007d4b042bb7a1b6014 +Digest = f8e150be2f657c8266fadc9bdb04648fc5a51f3c3f7521022aaf58d24165f8af4ad66319d8aa2dab48fe8a2f773c8d0e6c8c4f732e0fdfbae4b91918530c1f91 +R = 01d9ef377063a592cf81e27815a2c20789ff9b60f7f125e618b52d90b35abdd41cd7f437cfad337953ab0314fe8e79a2f2d27fa08597d4b28313358f714a737321fb +S = 00f01d4f150e0a174674a6a61a58a4ba781406024f6dd1b5252e04807b8a807a4ff8d52883eaa258286e506ef4b04ca890e6f81a79ed9a0cd5ed585094fea0bc5c43 + +Curve = P-521 +X = 00fd0cac24aeb75ca50c50a72340256b43649050e0fa155f72342877bf49c3d57ac2b51b828385ee6aea94bae38587e63390f5ef4ac5540a9e6fc6f1c1e79b524693 +Y = 0107b227bdd307efd7a8d4034f733d150c41601215e76eea2bac62ad2427dff52f75f46da3d5fe31bfaedf071d2a8bb5e3c82bf6c84ecdf89ca233c92d599d376309 +Digest = d0d8c24bc5b6f34bf35b08f25dc2d6ebcd36b565f96bee9c1b47030428f10c3ad2904de19247b29650690c08517404e8ca55f366ab176e5089a4c9c661f90eb2 +R = 01c00196aa5dcbc4c4404fa76504a5eacbc96aa66c3ba531a3a679f3fb675ce58f863e08b0d2bdeae74d96ad93a39a78ed4bb3749e26567d0ca5c48a71079925b617 +S = 00f1188eba4f0943f4003ddad6a54606c13af26014db2eb8e60534fad3dae8f07c021cea0990987f1e02dce03fe53360472c3dee3c305bb3ef4b0b53ea6625bf152a +Invalid = Y + +Curve = P-521 +X = 0104a96beea09d88ea6789a9925880c8a9ece8d764be931675640c1bf847ac8e7a8b14f408ba6722c2bf6295db9132d6ad2fe287fa6e6855f7c58ed238148a896944 +Y = 01b5e8e643fae552261427ea7d521f380adf605579462315c75e9203203ebdc9ee33dd7ba885b6cccccbd2327462988223c4b31485311c935a341ee87ba1ee820ce0 +Digest = e9ea3c8aeae3133be537da09b98c096b9a9eb287a02b3542efd30f0026ea9cb3f242b842b2cedbf02e70b44ff8a0b1bcf6f31956eaf6c0dd9a023bea36440068 +R = 00ba2c57827baae684d2c637590275c782a6db263a5358c8e1a08b5460ca3cf0f5ff8d4119a6b0d55fc68a75c793098e0a5622a0b4e2fcb0f17943440138d751797b +S = 01594beb73b2ebb7c573ff07b5c43e722dc05979df0eef53587e9fe06a920f61d2efcc7671e6cb875df4e4d92cd4d37cc3eadcb9b6aee8f2097790ce24d6dcda8706 +Invalid = Y + +Curve = P-521 +X = 010d587aa82a4d8e690672c00e3fd71826d892862d14dc4fbad4935aaab86924dc7ee6f7fd3e2bbe86a8652589448494dab83d363d1d623cbae59f6c2670706a0576 +Y = 01a9734c99b6ff21267050738937c30971d0f6fe07e29794748a5017ea1036c975c9a52e6d3739ca0e8d70e784529cc1a7437aac5d75c69121b69020a95356137f1d +Digest = 8814a9dbef9e6d9b8322bdf8d471b207388bb7bf831d9fba8ad29da52d528d5d5108c01e4459f5ca13e26bf5da3c848195558828d7a00f53abb9fce47ef35091 +R = 0188dcb840dfc573a97117009226d58dbb930ba8ec848931786abc770611f3519c8ba73cceb5b489170805bcf04974672fe66c908ba379aca99fa67fec81a994c2d1 +S = 000b1a185512dc6a65e454ea2bdb8049ef8f012a53ae87b759fb5d9edba51ea32e254e80545a99eb4b7c58af96b7c433535fa3f009cc644b1c97666d88355af9fc19 + +Curve = P-521 +X = 0182c957a62e2e27aa28acee2e2f7b1ed6aef81c68001d2648da47d2b621e8b8bd18d991cd1e3fb9afb84f639fbed1050584428cd2a1d50f877532ffdefdd4e6f7ba +Y = 005fadeef58cc0d79362b599e94636f9c70e3e5580c085b7ea52a5fd24fe4a892120b8f28ba53ec249c42d6d3b36268b8ca8464e54b72d37327d7504d9b7ce534d95 +Digest = e1838cf6ab5daf5ed28dc1b3365eb03466e01cc30f6fec9756c966cc7b89ef5ddb32754302a33b5aa309c871f98de082a21cf734ba8a368794d89b0cde1cfcf7 +R = 01e3a78e973fef6b6de8a0356401e89f435ae5f49c0173f073c4dbb9c91463e420f5265eade8305f11d30fa8d97e5b4c5ab33975f73385aea81fbdde2f7ddf7fdf16 +S = 00efeca10b5362e05a8f2e3df6661d0d536b32ca1e0a62515df2d94eb314aadb5eb40468483e24b16efe85c503d6c231ef860aabe674b72ed1ddd93853338e5e4e50 +Invalid = Y + +Curve = P-521 +X = 009911b41f9af525c874e05bfdf050331bf830296911bcb18eec16275027d63fa106c8989b07921c7e58b02711b5b5880cc4e6d9174e0d31060548cf643bf7ed4f0c +Y = 0184fc0fac3c2c80c69c1c0293f4e5e22fa08c267b1f36ac5ad6dfdf4da1754f7942f48cb56f56cba05e22b91508fe4db3703066e8f697aca56f974f3fe530c9640c +Digest = 365868aac67d82cc0510bcfb012f9035f99b5841329344f1b45f0489463cfe22c2f3641f7d6c59a3703aa2804323db8fec4fb3804f521149e5f7d38c9e1e94f2 +R = 017b8a22fd8f73112310867909f234fad6aa82999c28ea5a2e74b4b4bc79b2f89008b4d361ef7e797c7656f7d9317eff3e5a4982799b8cc0db82618bd2aa3959f617 +S = 01edacc6d1c0004b2090d2025d615de1fd53a96e826a3930c7cafaf3c87f34b2583997534cfa127485600a7ae04e6af4a2e98c77fd04507195e520e80014aa982a3c +Invalid = Y + +Curve = P-521 +X = 006da3b694e3123ef96b3fd2ab964f85a36110590720dc1724a5d50d3050498957211c6a1535032cf1f31240bfab967cc0cf3b442c35a1bfa3e72470df1863d2593a +Y = 017d0a5dc460c85d0365c7bdc2e9300e276b8aa97368af9972744f4422442afc601ecfe7903a33b0354c901c7b61f29d2d3c5610192cd188291c5651754b385b87a8 +Digest = 4e992e9e5403eb9822958f2737b70fa8096474a845a0f37244af744a6009e3b6e6e008faa7192fc01755bb785e03e4e3d2caef03eeadfe32a7fbc7e3bda49f5e +R = 01f9cb1f4e2e65282a929acd8b685ab34da176f5c73bcb374fd1b09bc995385ce3902d6c5496b02916fd5a28f6f8bb662828a76aa0ad14b01bc24a63b328c7bb949b +S = 001d6b3a2f34e3b7bf63d06b11ace172ca61ac5a911a4b408d766eb586c9ab820d42f555e546d892643e12a6752465427c213e3839e4f8cb3a7e4fd83642843e8544 +Invalid = Y + +Curve = P-521 +X = 00b7e03f0d623a0998add5360dfb0bfe836fcb0a46b0d6f697ba6b3766bd8698ac8c7af62f50511c6aa5e613f4a99fa28f70b220ba1cddb22482be74c969953ae6e5 +Y = 00d4ee40ee4441dc85356760f87ba32e2e7c269a2e53a2e8425d5ff02f5e4fe8d65cefe20e162c3915d2eb9ad1354bd28595a86dbdc94a5d40c5b44b1e3aa3965455 +Digest = 8ebb37c7b60ba4622070391864a70b5e797dc2464151304b1d9614b77f0bcb92fce230f42cf98f9b2612f481c21f70564f5cbfc4e81e48e08ae27b466f717e02 +R = 01fcba4781de6506f7c3f26521f0e036b5225f651e69e115d6784b2176a666edf69d759627468400a73a136f599fb8db4643fcc16bdeeef6384a1875e1c81c36b962 +S = 00a21cfaa7e1ee0eff7efc3d7e936378500283b00687363070974483ad474c58c6b55b77f678d78e7cb44d9745f79394659bdd26b72663608384b5ae9cac1c888d13 +Invalid = Y + +Curve = P-521 +X = 001bb7c623fde41beec7ddfb96f65848c2f52b50b39576bf06de6ccf157b8ec49889528728480928236300447da7171f58c8f0e0ba8fd3e2cf378b88619aa6c1e0bc +Y = 01f8b20a1a7df319bf78c2cee03581a1ffe8ca5107fbfd40760fbd5ef5247e2df1092d5caf504a9ee653ded2995f0cdd841d6af29c9f720770056ebbc128705f68e6 +Digest = c18be2e3f935561d1ad1cacf6ae06e733a463c7e5063cbb0cfaf162a579522786755dff879d2bb0b63d4eea9120a2ed648d601a5cb2dee936dbada679bcc134b +R = 0000db4c31f316912295c5b9506aabc24b0b2dc2b2358e6b023148889d9200bcf44762e88575e359b4868b2d93ba7bdb24800b09fc22eade0744b9832b71ee784e9c +S = 018c84437fac7cd82099a2a4230084ac27ec7ea9c92e1c9d9a71290df9b37dc881f9ba59ed331c22dca4b2cbb837cd916e0a78398d2b7aaf8e88f113a942beac48c0 +Invalid = Y + + # The following tests use digests equal to the order and 2^n - 1, where n is # the number of bits in the order. This is to test the truncated digest not # being fully reduced. @@ -1207,6 +1793,20 @@ Digest = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff R = 9d923e199d98272e44b8fba382bf3c19660ecb4a9aae3513ff6802a73fef510c15c202807c3f9334b0bce7d6c6a80839 S = 520784e6290d04d9b61993ee5ebc6fa8ff527fb0777c43cdefc7586701e60edb399005a5648ff852de80208232849fbd +Curve = P-521 +X = 00056cc489982829b728978193d047596325a91ee2e2c9110f7da605fd2d1b78424e87d85500f391fe9f54209c42e582ca3284484afc6edfe2acdc69c3591f6c47cf +Y = 010e91be6632da7afd03caedebdb572fd41cb1a7221e9c2d984016bac4693b3d10c5b1d76ba32b89f5fadd157df122be9cd85151977b99176998cfccbd3f9a03ba3f +Digest = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409 +R = 00bd5e59a9bc97de61588d143990ad7fd5405ac53aa8e6332a085a301138b23beaba126b41549db1167df47362a9de77c73b1bfaa14b31114644b4db8d35179f706a +S = 000cbb560f68b7240e309301ed4e6dc20d329f7e2098bcae26a07dd364e6177bb408eb5d0b47a3fcf36def98b951af9a55a47d24d95cd66cc11973269694e2f6f8d1 + +Curve = P-521 +X = 002aca58eeac43152b292f42a6a677d327386337409ba7de17acae1978e097f21e49d47f707c6ed6045c66551c93df9ef9bcc442db804e62fcac9f0574876d6d7fea +Y = 01862ed4f9d235afcc4e6b45e491da363104d4db7b97f12d869c40ab09a3c8c72519a9712ca733ddf046ad039842e8caed2425ecaf42d5171b3e236c11fee8699684 +Digest = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +R = 00ec0b91fa4386a8acdc0e46dd9c1d1775abbe0da8ead424aa4ace58e284a5be00e2c1ef95b6f4d861615564e1e7305656567f95275ce63b534420eae77ec37492c2 +S = 01e1099fb389db498ab4cf23b4f06a74b9326878ae3c76ea13832e50702b30fe8303093a59cc9a0995f1dfc15e6f7dabca8a2acaf03ec005447d29fb429a252064ec + # The following tests are intended to stress the final comparison in ECDSA. # ECDSA verification computes some curve point (x, y), picking the fully-reduced # representive of x mod p, and checking that x mod n is r. (n is the order of @@ -1360,3 +1960,71 @@ Digest = 1fcdb6059ce05172a26bbe2a3ccc88ed5a8cd5fc53edfd9053304d429296a6da23b1cd9 R = 000000000000000000000000000000000000000000000000389cb27e0bc8d21fa7e5f24cb74f58851313e696333ad68e S = ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52970 Invalid = Y + +# r = 1, x = 1 is valid. +Curve = P-521 +X = 00f07e0b593332d09ec4fd0bae93f648a3da04dd224faae3f64cc490ec8fce3a6fe53d1b2c9e326be076cafb921b7e3f8b2288db491819522d65472870668c3808c9 +Y = 018e42509aca542a8de421589c38ba653e8cfd69322336217042a9dc0f67f6d7ae2cd4e385f480ffaf8981f715c7ca3765d9867dfd5a02947b0895f82eaf8b257e88 +Digest = 8710339dcb6814d0d9d2290ef422285c9322b7163951f9a0ca8f883d3305286f44139aa374848e4174f5aada663027e4548637b6d19894aec4fb6c46a139fbf9 +R = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +S = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386406 + +# r = 1 + n, x = 1 is invalid. r must already be reduced. +Curve = P-521 +X = 00f07e0b593332d09ec4fd0bae93f648a3da04dd224faae3f64cc490ec8fce3a6fe53d1b2c9e326be076cafb921b7e3f8b2288db491819522d65472870668c3808c9 +Y = 018e42509aca542a8de421589c38ba653e8cfd69322336217042a9dc0f67f6d7ae2cd4e385f480ffaf8981f715c7ca3765d9867dfd5a02947b0895f82eaf8b257e88 +Digest = 8710339dcb6814d0d9d2290ef422285c9322b7163951f9a0ca8f883d3305286f44139aa374848e4174f5aada663027e4548637b6d19894aec4fb6c46a139fbf9 +R = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e9138640a +S = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386406 +Invalid = Y + +# r = n-2, x = n-2 is the largest x without a reduction. +Curve = P-521 +X = 002a61afb982e49f030dd4e6ba0e495703abe0442b1283ee693fffc1b558f49f0a4cb4f138ea0604e667958495b86c61f358dce7e7f170da47372be3e4168408a260 +Y = 01baa19e8929fc8e7208e854e706a3d7f21479d1f6922a65ae3490fd5f52ae6580513b1fdd5bee927d002a9608abbb925b6727bdc110a3145fc8622d1fa8154c82d8 +Digest = 8710339dcb6814d0d9d2290ef422285c9322b7163951f9a0ca8f883d3305286f44139aa374848e4174f5aada663027e4548637b6d19894aec4fb6c46a139fbf9 +R = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386407 +S = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386406 + +# r = n-3, x = n-2 is incorrect. +Curve = P-521 +X = 002a61afb982e49f030dd4e6ba0e495703abe0442b1283ee693fffc1b558f49f0a4cb4f138ea0604e667958495b86c61f358dce7e7f170da47372be3e4168408a260 +Y = 01baa19e8929fc8e7208e854e706a3d7f21479d1f6922a65ae3490fd5f52ae6580513b1fdd5bee927d002a9608abbb925b6727bdc110a3145fc8622d1fa8154c82d8 +Digest = 8710339dcb6814d0d9d2290ef422285c9322b7163951f9a0ca8f883d3305286f44139aa374848e4174f5aada663027e4548637b6d19894aec4fb6c46a139fbf9 +R = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386406 +S = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386406 +Invalid = Y + +# r = 1, x = n+1 is the smallest x with a reduction. +Curve = P-521 +X = 0049bbb2d3267a6eab2c59fac5b138b9e9c383db6637fcfe5d9f430e4c4c2ba0332340975448bd86c92a55c1a8288adf7f774096022419aa8c497499dafee7b93257 +Y = 00bb52fd444ec497ce228135f2498d40fb84eb6f674df1245d3aaac3c75b55ff5fff8e90b6f0189a3132cb9fd8d6e74fda5866fe2b9fc7484c628fde97e0b00f2b67 +Digest = 8710339dcb6814d0d9d2290ef422285c9322b7163951f9a0ca8f883d3305286f44139aa374848e4174f5aada663027e4548637b6d19894aec4fb6c46a139fbf9 +R = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +S = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386406 + +# r = 2, x = n+1 is incorrect. +Curve = P-521 +X = 0049bbb2d3267a6eab2c59fac5b138b9e9c383db6637fcfe5d9f430e4c4c2ba0332340975448bd86c92a55c1a8288adf7f774096022419aa8c497499dafee7b93257 +Y = 00bb52fd444ec497ce228135f2498d40fb84eb6f674df1245d3aaac3c75b55ff5fff8e90b6f0189a3132cb9fd8d6e74fda5866fe2b9fc7484c628fde97e0b00f2b67 +Digest = 8710339dcb6814d0d9d2290ef422285c9322b7163951f9a0ca8f883d3305286f44139aa374848e4174f5aada663027e4548637b6d19894aec4fb6c46a139fbf9 +R = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002 +S = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386406 +Invalid = Y + +# r = p-1-n, x = p-1 is the largest valid x. +Curve = P-521 +X = 00f651d53d45bf6fd55a5f184e580d11259bc65200387dbc1bf7fb867d2d12a207d2962204ccf38e9d37d23ed95bd01ec576c457127766ecb8ad00342a476ea82078 +Y = 0196caedf64fbaa9a12c16836e0564e36f733957375706edb5f32911991a994c2d6a1ea5db2ee764835a9d6aff379e195f722b48e8d2b60fc50de2a5160c77c3f06c +Digest = 8710339dcb6814d0d9d2290ef422285c9322b7163951f9a0ca8f883d3305286f44139aa374848e4174f5aada663027e4548637b6d19894aec4fb6c46a139fbf9 +R = 00000000000000000000000000000000000000000000000000000000000000000005ae79787c40d069948033feb708f65a2fc44a36477663b851449048e16ec79bf5 +S = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386406 + +# r = p-n+1, x = 1 is incorrect. r is too large to compare r+n with x. +Curve = P-521 +X = 009eeb7f956230c3744ca5b683f413009363107aad18a027fa7af6ac07a699911e94143d3ef00c0062d4187c2ea74dc9322c05431a6b7fed51ee71b047ce3a0e967c +Y = 007d2c089a6720f7c7886ce8aa6aeb9b821adde0eb025ef63c62d37c32b2d6823c857ce7743b8181c35c8f34e6aeb4487dd693e01d69dfe883c07c25ebe89bdc4d56 +Digest = 8710339dcb6814d0d9d2290ef422285c9322b7163951f9a0ca8f883d3305286f44139aa374848e4174f5aada663027e4548637b6d19894aec4fb6c46a139fbf9 +R = 00000000000000000000000000000000000000000000000000000000000000000005ae79787c40d069948033feb708f65a2fc44a36477663b851449048e16ec79bf7 +S = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386406 +Invalid = Y diff --git a/mk/generate_curves.py b/mk/generate_curves.py index fed6d96f36..3fcef9b22d 100644 --- a/mk/generate_curves.py +++ b/mk/generate_curves.py @@ -348,7 +348,7 @@ def generate_rs(g, out_dir): #define BITS %(bits)d -#define P%(bits)d_LIMBS (%(bits)du / LIMB_BITS) +#define P%(bits)d_LIMBS ((%(bits)d + LIMB_BITS - 1) / LIMB_BITS) #define FE_LIMBS P%(bits)d_LIMBS diff --git a/src/ec.rs b/src/ec.rs index 576d4911af..b2931ca0fe 100644 --- a/src/ec.rs +++ b/src/ec.rs @@ -41,7 +41,7 @@ pub enum CurveID { P384, } -const ELEM_MAX_BITS: usize = 384; +const ELEM_MAX_BITS: usize = 521; pub const ELEM_MAX_BYTES: usize = (ELEM_MAX_BITS + 7) / 8; pub const SCALAR_MAX_BYTES: usize = ELEM_MAX_BYTES; diff --git a/src/ec/suite_b/ecdsa/digest_scalar.rs b/src/ec/suite_b/ecdsa/digest_scalar.rs index 76206d9ee5..200c9e72f0 100644 --- a/src/ec/suite_b/ecdsa/digest_scalar.rs +++ b/src/ec/suite_b/ecdsa/digest_scalar.rs @@ -55,12 +55,26 @@ pub(crate) fn digest_bytes_scalar(ops: &ScalarOps, digest: &[u8]) -> Scalar { // values like all-zero values and values larger than `n`. fn digest_scalar_(ops: &ScalarOps, digest: &[u8]) -> Scalar { let len = ops.scalar_bytes_len(); - let digest = if digest.len() > len { + let mut digest = if digest.len() > len { &digest[..len] } else { digest }; + let mut digest_shift = [0u8; MAX_LIMBS * crate::limb::LIMB_BYTES]; + let shift = (digest.len() * 8).saturating_sub(ops.common.order_bits()); + if shift > 0 { + // If the digest is too long after byte trancation + // shift right to get the proper number of bits + // This should not happen in practice for the supported curve/digest combos + debug_assert!(shift < 8); + digest_shift[0] = digest[0] >> shift; + for i in 1..len { + digest_shift[i] = digest[i] >> shift | digest[i - 1] << (8 - shift); + } + digest = &digest_shift[..len]; + } + scalar_parse_big_endian_partially_reduced_variable_consttime( ops.common, untrusted::Input::from(digest), diff --git a/src/ec/suite_b/ecdsa/verification.rs b/src/ec/suite_b/ecdsa/verification.rs index 657bc30050..67bf9c8e0d 100644 --- a/src/ec/suite_b/ecdsa/verification.rs +++ b/src/ec/suite_b/ecdsa/verification.rs @@ -45,6 +45,10 @@ enum AlgorithmID { ECDSA_P384_SHA256_ASN1, ECDSA_P384_SHA384_ASN1, ECDSA_P384_SHA384_FIXED, + ECDSA_P521_SHA384_FIXED, + ECDSA_P521_SHA512_FIXED, + ECDSA_P521_SHA384_ASN1, + ECDSA_P521_SHA512_ASN1, } derive_debug_via_id!(EcdsaVerificationAlgorithm); @@ -214,6 +218,30 @@ pub static ECDSA_P384_SHA384_FIXED: EcdsaVerificationAlgorithm = EcdsaVerificati id: AlgorithmID::ECDSA_P384_SHA384_FIXED, }; +/// Verification of fixed-length (PKCS#11 style) ECDSA signatures using the +/// P-521 curve and SHA-384. +/// +/// See "`ECDSA_*_FIXED` Details" in `ring::signature`'s module-level +/// documentation for more details. +pub static ECDSA_P521_SHA384_FIXED: EcdsaVerificationAlgorithm = EcdsaVerificationAlgorithm { + ops: &p521::PUBLIC_SCALAR_OPS, + digest_alg: &digest::SHA384, + split_rs: split_rs_fixed, + id: AlgorithmID::ECDSA_P521_SHA384_FIXED, +}; + +/// Verification of fixed-length (PKCS#11 style) ECDSA signatures using the +/// P-521 curve and SHA-512. +/// +/// See "`ECDSA_*_FIXED` Details" in `ring::signature`'s module-level +/// documentation for more details. +pub static ECDSA_P521_SHA512_FIXED: EcdsaVerificationAlgorithm = EcdsaVerificationAlgorithm { + ops: &p521::PUBLIC_SCALAR_OPS, + digest_alg: &digest::SHA512, + split_rs: split_rs_fixed, + id: AlgorithmID::ECDSA_P521_SHA512_FIXED, +}; + /// Verification of ASN.1 DER-encoded ECDSA signatures using the P-256 curve /// and SHA-256. /// @@ -272,6 +300,30 @@ pub static ECDSA_P384_SHA384_ASN1: EcdsaVerificationAlgorithm = EcdsaVerificatio id: AlgorithmID::ECDSA_P384_SHA384_ASN1, }; +/// Verification of ASN.1 DER-encoded ECDSA signatures using the P-521 curve +/// and SHA-384. +/// +/// See "`ECDSA_*_ASN1` Details" in `ring::signature`'s module-level +/// documentation for more details. +pub static ECDSA_P521_SHA384_ASN1: EcdsaVerificationAlgorithm = EcdsaVerificationAlgorithm { + ops: &p521::PUBLIC_SCALAR_OPS, + digest_alg: &digest::SHA384, + split_rs: split_rs_asn1, + id: AlgorithmID::ECDSA_P521_SHA384_ASN1, +}; + +/// Verification of ASN.1 DER-encoded ECDSA signatures using the P-521 curve +/// and SHA-512. +/// +/// See "`ECDSA_*_ASN1` Details" in `ring::signature`'s module-level +/// documentation for more details. +pub static ECDSA_P521_SHA512_ASN1: EcdsaVerificationAlgorithm = EcdsaVerificationAlgorithm { + ops: &p521::PUBLIC_SCALAR_OPS, + digest_alg: &digest::SHA512, + split_rs: split_rs_asn1, + id: AlgorithmID::ECDSA_P521_SHA512_ASN1, +}; + #[cfg(test)] mod tests { extern crate alloc; @@ -309,6 +361,7 @@ mod tests { let alg = match curve_name.as_str() { "P-256" => &ECDSA_P256_SHA256_FIXED, "P-384" => &ECDSA_P384_SHA384_FIXED, + "P-521" => &ECDSA_P521_SHA512_FIXED, _ => { panic!("Unsupported curve: {}", curve_name); } diff --git a/src/ec/suite_b/ops.rs b/src/ec/suite_b/ops.rs index 15be579828..7b75bea79c 100644 --- a/src/ec/suite_b/ops.rs +++ b/src/ec/suite_b/ops.rs @@ -53,6 +53,7 @@ impl Point { /// Operations and values needed by all curve operations. pub struct CommonOps { num_limbs: usize, + order_bits: usize, q: Modulus, n: Elem, @@ -70,7 +71,11 @@ impl CommonOps { // The length of a field element, which is the same as the length of a // scalar, in bytes. pub fn len(&self) -> usize { - self.num_limbs * LIMB_BYTES + (self.order_bits + 7) / 8 + } + + pub fn order_bits(&self) -> usize { + self.order_bits } #[cfg(test)] @@ -1014,6 +1019,15 @@ mod tests { ); } + #[test] + fn p521_point_mul_base_test() { + point_mul_base_tests( + &p521::PRIVATE_KEY_OPS, + |s| p521::PRIVATE_KEY_OPS.point_mul_base(s), + test_file!("ops/p521_point_mul_base_tests.txt"), + ); + } + pub(super) fn point_mul_base_tests( ops: &PrivateKeyOps, f: impl Fn(&Scalar) -> Point, @@ -1216,3 +1230,4 @@ mod tests { mod elem; pub mod p256; pub mod p384; +pub mod p521; diff --git a/src/ec/suite_b/ops/elem.rs b/src/ec/suite_b/ops/elem.rs index e8479f2af6..e84ff38c98 100644 --- a/src/ec/suite_b/ops/elem.rs +++ b/src/ec/suite_b/ops/elem.rs @@ -128,4 +128,4 @@ pub fn unary_op_from_binary_op_assign( unsafe { f(a.limbs.as_mut_ptr(), a.limbs.as_ptr(), a.limbs.as_ptr()) } } -pub const MAX_LIMBS: usize = (384 + (LIMB_BITS - 1)) / LIMB_BITS; +pub const MAX_LIMBS: usize = (521 + (LIMB_BITS - 1)) / LIMB_BITS; diff --git a/src/ec/suite_b/ops/p256.rs b/src/ec/suite_b/ops/p256.rs index 6b0323cb41..3618d14547 100644 --- a/src/ec/suite_b/ops/p256.rs +++ b/src/ec/suite_b/ops/p256.rs @@ -19,6 +19,7 @@ use super::{ pub static COMMON_OPS: CommonOps = CommonOps { num_limbs: 256 / LIMB_BITS, + order_bits: 256, q: Modulus { p: limbs_from_hex("ffffffff00000001000000000000000000000000ffffffffffffffffffffffff"), diff --git a/src/ec/suite_b/ops/p384.rs b/src/ec/suite_b/ops/p384.rs index 01a43d6af2..ec54379bb6 100644 --- a/src/ec/suite_b/ops/p384.rs +++ b/src/ec/suite_b/ops/p384.rs @@ -19,6 +19,7 @@ use super::{ pub static COMMON_OPS: CommonOps = CommonOps { num_limbs: 384 / LIMB_BITS, + order_bits: 384, q: Modulus { p: limbs_from_hex("fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff"), diff --git a/src/ec/suite_b/ops/p521.rs b/src/ec/suite_b/ops/p521.rs new file mode 100644 index 0000000000..eb1f16d683 --- /dev/null +++ b/src/ec/suite_b/ops/p521.rs @@ -0,0 +1,324 @@ +// Copyright 2016-2024 Brian Smith. +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHORS DISCLAIM ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY +// SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +// OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +use super::{ + elem::{binary_op, binary_op_assign}, + elem_sqr_mul, Modulus, *, +}; + +pub static COMMON_OPS: CommonOps = CommonOps { + num_limbs: (521 + LIMB_BITS - 1) / LIMB_BITS, + order_bits: 521, + + q: Modulus { + p: limbs_from_hex("1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), + rr: limbs_from_hex( + if cfg!(target_pointer_width = "64") { + "4000000000000000000000000000" + } else { + "400000000000" + }), + }, + n: Elem::from_hex("1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386409"), + + a: Elem::from_hex( + if cfg!(target_pointer_width = "64") { + "1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffff" + } else { + "1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffff" + }), + b: Elem::from_hex( + if cfg!(target_pointer_width = "64") { + "4d0fc94d10d05b42a077516d392dccd98af9dc5a44c8c77884f0ab0c9ca8f63f49bd8b29605e9dd8df839ab9efc41e961a78f7a28fea35a81f8014654fae586387" + } else { + "15cb0c70e4d0fc94d10d05b42a077516d392dccd98af9dc5a44c8c77884f0ab0c9ca8f63f49bd8b29605e9dd8df839ab9efc41e961a78f7a28fea35a81f8014654f" + }), + + elem_mul_mont: p521_elem_mul_mont, + elem_sqr_mont: p521_elem_sqr_mont, + + point_add_jacobian_impl: p521_point_add, +}; + +pub(super) static GENERATOR: (Elem, Elem) = ( + Elem::from_hex(if cfg!(target_pointer_width = "64") { + "74e6cf1f65b311cada214e32409c829fda90fc1457b035a69edd50a5af3bf7f3ac947f0ee093d17fd46f19a459e0c2b5214dfcbf3f18e172deb331a16381adc101" + } else { + "1035b820274e6cf1f65b311cada214e32409c829fda90fc1457b035a69edd50a5af3bf7f3ac947f0ee093d17fd46f19a459e0c2b5214dfcbf3f18e172deb331a163" + }), + Elem::from_hex(if cfg!(target_pointer_width = "64") { + "1e0022e452fda163e8deccc7aa224abcda2340bd7de8b939f33164bf7394caf7a132062a85c809fd683b09a9e384351396120445f4a3b4fe8b328460e4a5a9e268e" + } else { + "b53c4d1de0022e452fda163e8deccc7aa224abcda2340bd7de8b939f33164bf7394caf7a132062a85c809fd683b09a9e384351396120445f4a3b4fe8b328460e4a" + }), +); + +pub static PRIVATE_KEY_OPS: PrivateKeyOps = PrivateKeyOps { + common: &COMMON_OPS, + elem_inv_squared: p521_elem_inv_squared, + point_mul_base_impl: p521_point_mul_base_impl, + point_mul_impl: p521_point_mul, +}; + +fn p521_elem_inv_squared(a: &Elem) -> Elem { + // Calculate a**-2 (mod q) == a**(q - 3) (mod q) + // + // The exponent (q - 3) is: + // + // 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\ + // ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\ + // c + + #[inline] + fn sqr_mul(a: &Elem, squarings: usize, b: &Elem) -> Elem { + elem_sqr_mul(&COMMON_OPS, a, squarings, b) + } + + let b_1 = &a; + let b_11 = sqr_mul(b_1, 1, b_1); + let f = sqr_mul(&b_11, 2, &b_11); + let ff = sqr_mul(&f, 4, &f); + let ffff = sqr_mul(&ff, 8, &ff); + let ffff_ffff = sqr_mul(&ffff, 16, &ffff); + let ffff_ffff_ffff_ffff = sqr_mul(&ffff_ffff, 32, &ffff_ffff); + let fx32 = sqr_mul(&ffff_ffff_ffff_ffff, 64, &ffff_ffff_ffff_ffff); + let fx64 = sqr_mul(&fx32, 128, &fx32); + let fx128 = sqr_mul(&fx64, 256, &fx64); + let fx129 = sqr_mul(&fx128, 4, &f); + let fx129_11 = sqr_mul(&fx129, 2, &b_11); + let mut acc = sqr_mul(&fx129_11, 1, b_1); + + COMMON_OPS.elem_square(&mut acc); + COMMON_OPS.elem_square(&mut acc); + + acc +} + +fn p521_point_mul_base_impl(a: &Scalar) -> Point { + // XXX: Not efficient. TODO: Precompute multiples of the generator. + PRIVATE_KEY_OPS.point_mul(a, &GENERATOR) +} + +pub static PUBLIC_KEY_OPS: PublicKeyOps = PublicKeyOps { + common: &COMMON_OPS, +}; + +pub static SCALAR_OPS: ScalarOps = ScalarOps { + common: &COMMON_OPS, + scalar_mul_mont: p521_scalar_mul_mont, +}; + +pub static PUBLIC_SCALAR_OPS: PublicScalarOps = PublicScalarOps { + scalar_ops: &SCALAR_OPS, + public_key_ops: &PUBLIC_KEY_OPS, + twin_mul: |g_scalar, p_scalar, p_xy| { + twin_mul_inefficient(&PRIVATE_KEY_OPS, g_scalar, p_scalar, p_xy) + }, + + q_minus_n: Elem::from_hex("5ae79787c40d069948033feb708f65a2fc44a36477663b851449048e16ec79bf6"), + + // TODO: Use an optimized variable-time implementation. + scalar_inv_to_mont_vartime: |s| PRIVATE_SCALAR_OPS.scalar_inv_to_mont(s), +}; + +pub static PRIVATE_SCALAR_OPS: PrivateScalarOps = PrivateScalarOps { + scalar_ops: &SCALAR_OPS, + + oneRR_mod_n: Scalar::from_hex(if cfg!(target_pointer_width = "64") { + "3d2d8e03d1492d0d455bcc6d61a8e567bccff3d142b7756e3edd6e23d82e49c7dbd3721ef557f75e0612a78d38794573fff707badce5547ea3137cd04dcf15dd04" + } else { + "19a5b5a3afe8c44383d2d8e03d1492d0d455bcc6d61a8e567bccff3d142b7756e3a4fb35b72d34027055d4dd6d30791d9dc18354a564374a6421163115a61c64ca7" + }), + scalar_inv_to_mont: p521_scalar_inv_to_mont, +}; + +fn p521_scalar_inv_to_mont(a: Scalar) -> Scalar { + // Calculate the modular inverse of scalar |a| using Fermat's Little + // Theorem: + // + // a**-1 (mod n) == a**(n - 2) (mod n) + // + // The exponent (n - 2) is: + // + // 0x1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\ + // ffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e9138640\ + // 7 + + fn mul(a: &Scalar, b: &Scalar) -> Scalar { + binary_op(p521_scalar_mul_mont, a, b) + } + + fn sqr(a: &Scalar) -> Scalar { + binary_op(p521_scalar_mul_mont, a, a) + } + + fn sqr_mut(a: &mut Scalar) { + unary_op_from_binary_op_assign(p521_scalar_mul_mont, a); + } + + // Returns (`a` squared `squarings` times) * `b`. + fn sqr_mul(a: &Scalar, squarings: usize, b: &Scalar) -> Scalar { + debug_assert!(squarings >= 1); + let mut tmp = sqr(a); + for _ in 1..squarings { + sqr_mut(&mut tmp); + } + mul(&tmp, b) + } + + // Sets `acc` = (`acc` squared `squarings` times) * `b`. + fn sqr_mul_acc(acc: &mut Scalar, squarings: usize, b: &Scalar) { + debug_assert!(squarings >= 1); + for _ in 0..squarings { + sqr_mut(acc); + } + binary_op_assign(p521_scalar_mul_mont, acc, b) + } + + // Indexes into `d`. + // Indexes into `d`. + const B_1: usize = 0; + const B_11: usize = 1; + const B_101: usize = 2; + const B_111: usize = 3; + const B_1001: usize = 4; + const B_1011: usize = 5; + const B_1101: usize = 6; + const B_1111: usize = 7; + const DIGIT_COUNT: usize = 8; + + let mut d = [Scalar::zero(); DIGIT_COUNT]; + d[B_1] = a; + let b_10 = sqr(&d[B_1]); + for i in B_11..DIGIT_COUNT { + d[i] = mul(&d[i - 1], &b_10); + } + + let ff = sqr_mul(&d[B_1111], 0 + 4, &d[B_1111]); + let ffff = sqr_mul(&ff, 0 + 8, &ff); + let ffffffff = sqr_mul(&ffff, 0 + 16, &ffff); + let ffffffffffffffff = sqr_mul(&ffffffff, 0 + 32, &ffffffff); + let fx32 = sqr_mul(&ffffffffffffffff, 0 + 64, &ffffffffffffffff); + let mut acc = sqr_mul(&fx32, 0 + 128, &fx32); + + // After the first 256 bits, the remaining 265 bits are: + // 1fa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386407 + + // The rest of the exponent, in binary, is: + // + // 1111110100101000110000110100001111000001110111111001011111001011 + // 0011010110111111111001100000000010100100011110111000010011010010 + // 1110100000011101110110101110010011011100010001001100111000100011 + // 110101110101110110110111110110111000111101001000100111000011001 + // 0000000111 + + #[allow(clippy::cast_possible_truncation)] + static REMAINING_WINDOWS: [(u8, u8); 54] = [ + (4, B_1111 as u8), + (0 + 4, B_1101 as u8), + (2 + 3, B_101 as u8), + (3 + 2, B_11 as u8), + (4 + 4, B_1101 as u8), + (4 + 4, B_1111 as u8), + (5 + 3, B_111 as u8), + (1 + 4, B_1111 as u8), + (0 + 2, B_11 as u8), + (2 + 4, B_1011 as u8), + (0 + 3, B_111 as u8), + (2 + 4, B_1011 as u8), + (2 + 4, B_1101 as u8), + (1 + 4, B_1101 as u8), + (0 + 4, B_1111 as u8), + (0 + 4, B_1111 as u8), + (2 + 2, B_11 as u8), + (9 + 3, B_101 as u8), + (2 + 1, B_1 as u8), + (3 + 4, B_1111 as u8), + (1 + 3, B_111 as u8), + (4 + 4, B_1001 as u8), + (0 + 3, B_101 as u8), + (2 + 4, B_1011 as u8), + (0 + 3, B_101 as u8), + (6 + 3, B_111 as u8), + (1 + 3, B_111 as u8), + (1 + 4, B_1101 as u8), + (1 + 3, B_111 as u8), + (2 + 4, B_1001 as u8), + (0 + 4, B_1011 as u8), + (0 + 1, B_1 as u8), + (3 + 1, B_1 as u8), + (3 + 1, B_1 as u8), + (2 + 2, B_11 as u8), + (2 + 3, B_111 as u8), + (3 + 1, B_1 as u8), + (3 + 4, B_1111 as u8), + (1 + 4, B_1011 as u8), + (0 + 3, B_101 as u8), + (1 + 3, B_111 as u8), + (1 + 4, B_1101 as u8), + (0 + 4, B_1011 as u8), + (0 + 3, B_111 as u8), + (1 + 4, B_1101 as u8), + (0 + 2, B_11 as u8), + (3 + 4, B_1111 as u8), + (1 + 1, B_1 as u8), + (2 + 1, B_1 as u8), + (3 + 4, B_1001 as u8), + (0 + 2, B_11 as u8), + (4 + 2, B_11 as u8), + (2 + 1, B_1 as u8), + (7 + 3, B_111 as u8), + ]; + + for &(squarings, digit) in &REMAINING_WINDOWS[..] { + sqr_mul_acc(&mut acc, usize::from(squarings), &d[usize::from(digit)]); + } + + acc +} + +unsafe extern "C" fn p521_elem_sqr_mont( + r: *mut Limb, // [COMMON_OPS.num_limbs] + a: *const Limb, // [COMMON_OPS.num_limbs] +) { + // XXX: Inefficient. TODO: Make a dedicated squaring routine. + p521_elem_mul_mont(r, a, a); +} + +prefixed_extern! { + fn p521_elem_mul_mont( + r: *mut Limb, // [COMMON_OPS.num_limbs] + a: *const Limb, // [COMMON_OPS.num_limbs] + b: *const Limb, // [COMMON_OPS.num_limbs] + ); + + fn p521_point_add( + r: *mut Limb, // [3][COMMON_OPS.num_limbs] + a: *const Limb, // [3][COMMON_OPS.num_limbs] + b: *const Limb, // [3][COMMON_OPS.num_limbs] + ); + + fn p521_point_mul( + r: *mut Limb, // [3][COMMON_OPS.num_limbs] + p_scalar: *const Limb, // [COMMON_OPS.num_limbs] + p_x: *const Limb, // [COMMON_OPS.num_limbs] + p_y: *const Limb, // [COMMON_OPS.num_limbs] + ); + + fn p521_scalar_mul_mont( + r: *mut Limb, // [COMMON_OPS.num_limbs] + a: *const Limb, // [COMMON_OPS.num_limbs] + b: *const Limb, // [COMMON_OPS.num_limbs] + ); +} diff --git a/src/ec/suite_b/ops/p521_point_mul_base_tests.txt b/src/ec/suite_b/ops/p521_point_mul_base_tests.txt new file mode 100644 index 0000000000..ccfa3ea5ac --- /dev/null +++ b/src/ec/suite_b/ops/p521_point_mul_base_tests.txt @@ -0,0 +1,1280 @@ + +g_scalar = 00 +r = inf + +g_scalar = 01 +r = 00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66, 011839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650 + +g_scalar = 02 +r = 00433c219024277e7e682fcb288148c282747403279b1ccc06352c6e5505d769be97b3b204da6ef55507aa104a3a35c5af41cf2fa364d60fd967f43e3933ba6d783d, 00f4bb8cc7f86db26700a7f3eceeeed3f0b5c6b5107c4da97740ab21a29906c42dbbb3e377de9f251f6b93937fa99a3248f4eafcbe95edc0f4f71be356d661f41b02 + +g_scalar = 03 +r = 01a73d352443de29195dd91d6a64b5959479b52a6e5b123d9ab9e5ad7a112d7a8dd1ad3f164a3a4832051da6bd16b59fe21baeb490862c32ea05a5919d2ede37ad7d, 013e9b03b97dfa62ddd9979f86c6cab814f2f1557fa82a9d0317d2f8ab1fa355ceec2e2dd4cf8dc575b02d5aced1dec3c70cf105c9bc93a590425f588ca1ee86c0e5 + +g_scalar = 04 +r = 0035b5df64ae2ac204c354b483487c9070cdc61c891c5ff39afc06c5d55541d3ceac8659e24afe3d0750e8b88e9f078af066a1d5025b08e5a5e2fbc87412871902f3, 0082096f84261279d2b673e0178eb0b4abb65521aef6e6e32e1b5ae63fe2f19907f279f283e54ba385405224f750a95b85eebb7faef04699d1d9e21f47fc346e4d0d + +g_scalar = 05 +r = 00652bf3c52927a432c73dbc3391c04eb0bf7a596efdb53f0d24cf03dab8f177ace4383c0c6d5e3014237112feaf137e79a329d7e1e6d8931738d5ab5096ec8f3078, 015be6ef1bdd6601d6ec8a2b73114a8112911cd8fe8e872e0051edd817c9a0347087bb6897c9072cf374311540211cf5ff79d1f007257354f7f8173cc3e8deb090cb + +g_scalar = 06 +r = 01ee4569d6cdb59219532eff34f94480d195623d30977fd71cf3981506ade4ab01525fbcca16153f7394e0727a239531be8c2f66e95657f380ae23731bedf79206b9, 01de0255ad0cc64f586ae2dd270546e3b1112aabbb73da5a808e7240a926201a8a96cab72d0e56648c9df96c984de274f2203dc7b8b55ca0dade1eaccd7858d44f17 + +g_scalar = 07 +r = 0056d5d1d99d5b7f6346eeb65fda0b073a0c5f22e0e8f5483228f018d2c2f7114c5d8c308d0abfc698d8c9a6df30dce3bbc46f953f50fdc2619a01cead882816ecd4, 003d2d1b7d9baaa2a110d1d8317a39d68478b5c582d02824f0dd71dbd98a26cbde556bd0f293cdec9e2b9523a34591ce1a5f9e76712a5ddefc7b5c6b8bc90525251b + +g_scalar = 08 +r = 000822c40fb6301f7262a8348396b010e25bd4e29d8a9b003e0a8b8a3b05f826298f5bfea5b8579f49f08b598c1bc8d79e1ab56289b5a6f4040586f9ea54aa78ce68, 016331911d5542fc482048fdab6e78853b9a44f8ede9e2c0715b5083de610677a8f189e9c0aa5911b4bff0ba0df065c578699f3ba940094713538ad642f11f17801c + +g_scalar = 09 +r = 01585389e359e1e21826a2f5bf157156d488ed34541b988746992c4ab145b8c6b6657429e1396134da35f3c556df725a318f4f50babd85cd28661f45627967cbe207, 002a2e618c9a8aedf39f0b55557a27ae938e3088a654ee1cebb6c825ba263ddb446e0d69e5756057ac840ff56ecf4abfd87d736c2ae928880f343aa0ea86b9ad2a4e + +g_scalar = 0a +r = 0190eb8f22bda61f281dfcfe7bb6721ec4cd901d879ac09ac7c34a9246b11ada8910a2c7c178fcc263299daa4da9842093f37c2e411f1a8e819a87ff09a04f2f3320, 01eb5d96b8491614ba9dbaeab3b0ca2ba760c2eeb2144251b20ba97fd78a62ef62d2bf5349d44d9864bb536f6163dc57ebeff3689639739faa172954bc98135ec759 + +g_scalar = 0b +r = 008a75841259fdedff546f1a39573b4315cfed5dc7ed7c17849543ef2c54f2991652f3dbc5332663da1bd19b1aebe3191085015c024fa4c9a902ecc0e02dda0cdb9a, 0096fb303fcbba2129849d0ca877054fb2293add566210bd0493ed2e95d4e0b9b82b1bc8a90e8b42a4ab3892331914a95336dcac80e3f4819b5d58874f92ce48c808 + +g_scalar = 0c +r = 01c0d9dcec93f8221c5de4fae9749c7fde1e81874157958457b6107cf7a5967713a644e90b7c3fb81b31477fee9a60e938013774c75c530928b17be69571bf842d8c, 014048b5946a4927c0fe3ce1d103a682ca4763fe65ab71494da45e404abf6a17c097d6d18843d86fcdb6cc10a6f951b9b630884ba72224f5ae6c79e7b1a3281b17f0 + +g_scalar = 0d +r = 007e3e98f984c396ad9cd7865d2b4924861a93f736cde1b4c2384eedd2beaf5b866132c45908e03c996a3550a5e79ab88ee94bec3b00ab38eff81887848d32fbcda7, 0108ee58eb6d781feda91a1926daa3ed5a08ced50a386d5421c69c7a67ae5c1e212ac1bd5d5838bc763f26dfdd351cbfbbc36199eaaf9117e9f7291a01fb022a71c9 + +g_scalar = 0e +r = 01875bc7dc551b1b65a9e1b8ccfaaf84ded1958b401494116a2fd4fb0babe0b3199974fc06c8b897222d79df3e4b7bc744aa6767f6b812efbf5d2c9e682dd3432d74, 005ca4923575dacb5bd2d66290bbabb4bdfb8470122b8e51826a0847ce9b86d7ed62d07781b1b4f3584c11e89bf1d133dc0d5b690f53a87c84be41669f852700d54a + +g_scalar = 0f +r = 006b6ad89abcb92465f041558fc546d4300fb8fbcc30b40a0852d697b532df128e11b91cce27dbd00ffe7875bd1c8fc0331d9b8d96981e3f92bde9afe337bcb8db55, 01b468da271571391d6a7ce64d2333edbf63df0496a9bad20cba4b62106997485ed57e9062c899470a802148e2232c96c99246fd90cc446abdd956343480a1475465 + +g_scalar = 10 +r = 01d17d10d8a89c8ad05dda97da26ac743b0b2a87f66192fd3f3dd632f8d20b188a52943ff18861ca00a0e5965da7985630df0dbf5c8007dcdc533a6c508f81a8402f, 007a37343c582d77001fc714b18d3d3e69721335e4c3b800d50ec7ca30c94b6b82c1c182e1398db547aa0b3075ac9d9988529e3004d28d18633352e272f89bc73abe + +g_scalar = 11 +r = 01b00ddb707f130eda13a0b874645923906a99ee9e269fa2b3b4d66524f269250858760a69e674fe0287df4e799b5681380ff8c3042af0d1a41076f817a853110ae0, 0085683f1d7db16576dbc111d4e4aeddd106b799534cf69910a98d68ac2b22a1323df9da564ef6dd0bf0d2f6757f16adf420e6905594c2b755f535b9cb7c70e64647 + +g_scalar = 12 +r = 01bc33425e72a12779eacb2edcc5b63d1281f7e86dbc7bf99a7abd0cfe367de4666d6edbb8525bffe5222f0702c3096dec0884ce572f5a15c423fdf44d01dd99c61d, 010d06e999885b63535de3e74d33d9e63d024fb07ce0d196f2552c8e4a00ac84c044234aeb201f7a9133915d1b4b45209b9da79fe15b19f84fd135d841e2d8f9a86a + +g_scalar = 13 +r = 00998dcce486419c3487c0f948c2d5a1a07245b77e0755df547efff0acdb3790e7f1fa3b3096362669679232557d7a45970dfecf431e725bbde478ff0b2418d6a19b, 0137d5da0626a021ed5cc3942497535b245d67d28aee2b7bcf4acc50eee36545772773ad963ff2eb8cf9b0ec39991631c377f5a4d89ea9fbfe44a9091a695bfd0575 + +g_scalar = 14 +r = 018bdd7f1b889598a4653deeae39cc6f8cc2bd767c2ab0d93fb12e968fbed342b51709506339cb1049cb11dd48b9bdb3cd5cad792e43b74e16d8e2603bfb11b0344f, 00c5aadbe63f68ca5b6b6908296959bf0af89ee7f52b410b9444546c550952d311204da3bdddc6d4eae7edfaec1030da8ef837ccb22eee9cfc94dd3287fed0990f94 + +g_scalar = 15 +r = 01a1cbb2c11a742bd2fb3cc8550859ed3b10268bb98c2ed15e9819523e759c467fa946257eae4d62a309d9497eaed827d75b37ac920393a46d2d42ef399693c8c9ed, 011a209d7d4f8eeb3d482c12da7c5e40ce62e83c0059c5193e6c180a296f6bafa7f7df741a53da483295beb43a372c63eec57c9b0f17649ccb61e60bc43c9cba4df5 + +g_scalar = 16 +r = 009700ce6190c6d36ca5f1f6e66dc1eae621a7facca319d4b7aabde3122096c4089f74cbfe1018ffcd40adfffcca8b28ca1f904b3a12cae0af934e38650bb6f5a561, 01fb78827e13569356b061c78fad62100104be4a8d24e415f9c195e0fd06c5b46824f40ac9cdadfe028a2f22ec132ed14e5c5c43427efea6210d64319ad5a535acad + +g_scalar = 17 +r = 01ae0b275d7290159376db1cacec5f547b8eee7a39ba785fb282490d234d0cdd45101f6f83fc9af5b0afe9e3f8e9a5ec53e207e1f1ac26ae5806a1c6a5ece2af535c, 00f2c97a825e5385380668a2858fc068471c7d759ff890d05832b431647844c2dc0e10843361ee97fcf43c27b27bb07dd0c2213b4450a8d23856d815c3536fa0d000 + +g_scalar = 18 +r = 00968e98d1008e9d525db447ce5d4930becf0e49a0e6ec40736691391a8862c2cd7f93ad7a9b2d0e4f666fdefaa4a86f6559c710838fa0a4198f44a18c28b69bcef2, 01e1a7e96f293f75117ce44476658a352aa7a555cd2f64a2b032b4cd2b81880aa962a48f492cf3d075368385e09fa134f7930575ce65dd7dd9fd8a0b537a0b446729 + +g_scalar = 19 +r = 0154e84c6d5c5a9a1834a35874a6f5dff9d20073102651b107b11c772c8c5499994aa91856917c36ee4d56e87e2aa648ff27e41e0eb1c25d3fb13f8c2460bf70ace0, 00cd0fdce9171910473ae22a28f80bb60d3f15a923eb0022a0c7f66c2888151666a6dee3543572fbc1a0d1e2370a6a5972f5eede2a54672e6b6d4325bce404c78230 + +g_scalar = 1a +r = 017b61bd55cc8b533222d9857bb0c04dcd1331a02407e9a8576609bc2cbefa11d6aef686bfc27593b717007102d5dd038ed768dd29c10c73e41060d9e9a7e8c685c6, 01c34da05ea4b9de3bbea0196c0682be4633c8b4ac79f5a29ba2cbdc724709e1f426b4ddb8a4191a4648d74b5b2ac347d1335b8bff6c058ff572e74aacc5b9b4844b + +g_scalar = 1b +r = 0160373edf8218f9b6a762a4d4eb889e646f8739535d0e4f862c33f35187e135854d80b2123da719d48351353aeda0d3163cb215604492ec4568357643017002d68b, 00f1597050014dcfe1c5e5828401ac06a3fa9fd193c5cf52c3bb4a56f78e1a1b22011efa491ed92ebc5413b874f4a8bb572e463ffe709d45acb3f3e6aeca5d90b740 + +g_scalar = 1c +r = 019195646effed8e5f6fec5c29642dd68d1a988bb828d895ed5d116d7f87032133e2949da6c395738534b93220fe2ad07f0b291adc92433ee2dee160709ed9985b0c, 0177acd53b00c9f29f3ece28b4724f834f49606d3f34656a52ef5443c5d9216ae388b345b828c8b09a2b2e495cf2adcdd6b5886f4ded1741425ac31c832ba74eed38 + +g_scalar = 1d +r = 0174c644d6c94b68287db3c1fbfcb65a085ff9f45131e86265ec28bef38f7664a1305ca9bc06876d72914003ab8e847ffb9ef33d8595d51f6d962c3927618eda25dc, 011af3a7c2f87f419e6805acc95b41b7b7820233ef8fcb6441fcb5cf5eb795ad34b7be0e21952ce0d90b50c2732d706d303f0679927c26ebbfbd187bbbc4821a0c30 + +g_scalar = 1e +r = 00d087d70d11074b36bb0b6913261570a6b33cf015e1f913a610ea52dbcbae2a3e4435573f35d14754c6352756cc169eac6bf7d9b10f1b0af5956117fab72ec4b081, 00c4d07f8c3cafdc1636811d7b95a6ac2dcebcde1cd94afbdbd3e47015660d29f15354d5b99d1d7d4adaf279efee5d860be9069edd46ff01cfc7b64d6af6579dbed3 + +g_scalar = 1f +r = 00d8e9920cf30f0c6615006a58cdb7307b7db574589657c2a6617260a83ca5e7726cd65543a904c9d429fc14c1ac09cd6b220dcfb5e488e248122257d0e0c16a8803, 0127b023b5454a663987df09c13a214a30ec8b5406328f10c8060aefb72cbed1aa30f76b8c3244d14790139a868cae4cc263aa1bd97c7b54318aca4677c739792d19 + +g_scalar = 20 +r = 0166ba3596d20a3a469443707af94ba15b343e3e16654e068038dba7ecefb9e5ebd6ea04a35dc73596ec67d69bd6ba5d1f949cf7475cd6c5c78247915ab876e56a9e, 00477b0ff4d1940ab8111635e75ff3e08268ff7bd8bf5ff01967c1df01c65c2dd77de204cdb818cdd6b9b74de1c7ea0f36dfcd98c965ab96163695ca9a9914a156aa + +g_scalar = 21 +r = 00284195f0978fb969e68c76eb4e3c76f58e52086d482be92613f381421a74236df0abdbea7e2b77ef1ae9a519a57aa53ac2a5ec59186b2ed12d5ea2e1fc649f308d, 007e43eb08c656dc636b7b7a3bc869056d3a24d513abe063c6639e016769614ac5f2e7656ecbf3d138bf00bd7216c16deb3a88effd5c228b58f36be95a3dd3e11c4d + +g_scalar = 22 +r = 0122f66451d0843fb59448c58962f5b7c130eb8db26b14dbf8bf0e7d84e588581cdea866a98b697d432cc1f1f8993db2173b55ac0435b8317a8ddfeab253d54e4d87, 01bed137b942249932f3c1f12141aee1538aa373f5aee0a89a48d357d7c04965b0515097293e4f87a6a413184d9be8ea91406baa5223db7571bcda9dba82fd9a06dc + +g_scalar = 23 +r = 00ddc300757549630a78398b62069e0ba392a267a642b593e0bfc4a780b56f97392bb4806c84fda74023ee4a618608f6b2cea92ff614b5dcc8d8dc1039c9ccd7d718, 00c1bd2d07f6ac7fc5cc1b83431f0c30dbbfa510936cb5d85bcf462796591a31db509ab1178bd2c701425c212522ee69e797deba4db422640a4d3eb1d3ef241e07f4 + +g_scalar = 24 +r = 01ad81c98659bd21e082514d5e71894c417b2a25afe471eb8ad9e81a91dac8198aa9f385da9cc679bb96e724672821b585e05323bdc821e585edae56cbf798bd6ef0, 01217026e6cf8e6fc4e761aeda5705b3c0f8ca7f475441227b9761285bc6dc8f01af1af50b0bb140013a75db963d8698121dd2c4ba1759a98b43ac7712f8455c99ef + +g_scalar = 25 +r = 00944f64a6c21832b67139e798352ded5867c35c5d56c1d59e4229ed0ae6af9d5749bd445763a28856040e58e26ee0980df28c64e76ae4780273f1ac4d59b557a36f, 0150b7ee1b02028ab7410c4b9624f26cb192fe4e6ff21865f85926317da6b7991305dcbdbc2471c83f81b85c564995a057c331a4be4056988296312bf98394fb2a03 + +g_scalar = 26 +r = 0195aeb1530c7d932a18922563d71ef6e7449078207b610c2c77690815bcef8f312718413823ed8d4ba112ac2ecc9d4e688346f120cb19ae965d853028d72a5f4a8b, 00e0c42d3cc093242000c0ec0975884bb0308611d8bd49b6090a06c5bdf7d0e1544851f9ba596291ef1ee3e3c9a002b7985ba29e51d193b701e0c87e1acd797bd130 + +g_scalar = 27 +r = 0124a0b8f411fbad60755264126356a499029e9661a49b5b907238d9fd62359c6ea7256b0cc58626a1e2ac0bf434e5fa31795b4fa1d48083af670b704119ee33b77c, 001029616edc7335dce3602a9a406bbd399c68937baa8796154cdc0b1240c690db4818dc59feb96825aaa3caf2415944e762f212e74b698e40abd8dcdc61228b61a6 + +g_scalar = 28 +r = 002efdef97e46cd544553a0c67f41886ad969f67883679409022c4ad6090a169b596f85d832dc9767b2bb513eb4d0d01e18f067fffb5ac53dbcfaf456a57824c9d93, 00d88e2e3fdd283592d6c4c2a4687e65a6a823ffc6106dff96f75bb3141d0df516fe46a5357b21dc22404f4ef79e44aa97b22c101fec75d81e09b591f36738ae8e5c + +g_scalar = 29 +r = 0175a140ed79e85e24a763ebfd9d2883082552a523e4b28998a685b85f23864a60c816b931eaf495ccce4c08c3ddc8297bfaddfda1a522cc2af68e00ce952624381e, 01b09696d71855e2d4ed36f21343ca399be7ab59e580e9ee563223de821b22c82111b39e0e11ecf327da052a6e551fa28ebdf75dd758e7f3a3ecebeb760ec1028ecf + +g_scalar = 2a +r = 0161960dcd7bd7263ed37a0a1c0aa146f918874f472a2a5de6f2f5633364979e0bda2868fa8595d78243ea20d4e83c72305e420bebfa3767dcd4b7902612a9491855, 016ac1cfdd433815668a5c6ae0d1031bc121a00e6a6b58d1eec42da602f01cc43b7ef728d67c4e39de86324cba6a2c4cce08414fdd6ad7d0722338a50e352ad521ef + +g_scalar = 2b +r = 018c0148a165ec58e4fed55022d90544d8a070678aa2ec1419af8ef0f94438fea396fc66ad7aed7d37dda3a74e7a9b3d85ca51f0b62fdee07d20713e3083224f497e, 010abbaa1f099e78869aebf7a83c7aa3bf242677e91db1d144cd7a3037819f1a0bec67fd6098879b1cf1932d602b547ce17a94edb92f76b688d2895829067683adbf + +g_scalar = 2c +r = 013fdb51df11f0b29b485f0c48a04cca16cfe1cecbe9fd57f6507c3cfcbef88c88cf761e3e73e6509ec7e77fffe912d2b367b25aa02cb1d33a5378f253cdcde738d2, 01d14c8c184a7228a7034e4f65b3d0338f667aac908b39acf39c9ebedc0452b7c2f2a4460186aa2271d357733ea23d7284a8a123424f99a20b5242343b5cbafa661a + +g_scalar = 2d +r = 004969d186aca09e53b879596b8fff2bc0207a58f7f28c147cc07b2df5e3f197286779189b7df8a1f2d9dc8ea1ace5703f0fc2954607b66b70c4a32dec600fc95c1a, 01e81ec9b50cd8d3847d4d6ac21f3149fc7b15862a423270884135584a1bbcdb40a9b8d5b2802eadae85e6ed9e879be328e13463f5d90b37564f9498a7cd000903a9 + +g_scalar = 2e +r = 00bbdb162d8284a910021998e2d14f33a8c51a9cfb9a69a8fc5709f753aaf1c4d248a6ddb5626540f81d07c09231d2ec1549f672b6d2bd57d22f64f2ae8093e738a5, 013b86f0d5921216efe01fe9c7cabc10b00ab81c9fbd9674149d2ece424b786f6c372a1831112f54132d7d3af42dc8cd7e17b7ec80b09fa59f0e42c142895961259a + +g_scalar = 2f +r = 00afe31f8907048afd5f9cf5083ecc35882ce4e4fe2714033ff897233106c71dd0b2381864a0b9e922ac9cee75a3a9c4dd660a56a130d1ecbb672fda63c9abd59d11, 0012f95dc8657275fe9db4290cbbb54ff69a605f079349209f88ecea7f3276f064979276080b904982a6ebb760f478d825e711ca41599f10673bd3065d2f1d90e1d6 + +g_scalar = 30 +r = 01fb35de3b21557462ac8158e5caec62c8ccae7d6d6672102c334b3cc8a5803e72f42da0980f3f6fbfacdedc21b10ff08ee6641752bd214aea2c87027d612ad879ad, 018d34a5ac1587992deda855b9ec4bb3f5c176f27fc94d09e2cc871294f66cc2e1bae6214d64a1d97e37b7c142e0fb0e3c28596f24804841cae7b1958193d256d46b + +g_scalar = 31 +r = 00a5cb98fa3c0b8c1d57cba40a63bbaba0d39d45c347ae499839f581b8b111dea9eb6bc2a2df52f6284291d8c84e2e345fa87258dab1ac4c04ca0c8cb45049efc0ad, 0015dc95654090d77b971409b01bf72e151b749ee467877e5b7eb072c39d9da8bf835dd9775543d575c20c10f2ceebb72bb44b963fbfb0b88b1d0b9bf46a2c8884b4 + +g_scalar = 32 +r = 017176204957627b7a120baf0dbb1aa3f9ca5312b292e34a0cfbd8384cf1be365bc684804ab26d84fe02250a859beaced3f356b6ddab593aebf35386773de84d4766, 01ac713d5c2ffb0e111983e07ea5f688b03dd3032d3a9450b50c5def1db4859b504caf8c1321bb6c8d5fad93d2e5b9d0e75336298e21939f704f3f16ac6addc84f8f + +g_scalar = 33 +r = 0168395ba51e278415a2025d93b68145f3ccfdf9f5bde34fe9ba3ba316cbf9beea26c2edfe6af07390df1321ae1b1054cbc0fba689ef1d7be2dda8d916fffbcc9504, 0071cc10f3ca041a245639d9531942d3f57952dd878f21c480ce24e5b174adeb9b3c97bc2b68badb600c849c36096e3aeba50600aabed3a89e188eb9c45edd5c087b + +g_scalar = 34 +r = 001f32e875ce65d1e6d4c39a55b518749158a4dae03e0c1b4b4a58aef6be769f0693b9259354dcee33a4f00784311b6e5993955114f2afcab7a186177e368b29f6f3, 005a3c8e76fb7849180b895ea8b22ee1a6fc2cbf93bbae0f4ad4a0c126d318c397911e73a061b8098a91112577769cd77ef2bd6b45f989f292da9301992d481b07f8 + +g_scalar = 35 +r = 0143f6e249195ee693f77b3d0ffd310306dff8688be916895fb727e82f6f948100c44e210e637209a78ed3af581fba4fe12b08153da9c98808166285684cccb69906, 01053e8fcc9618eb2a74c5611a02575109877dc73fdde42c216935437e8053d10cb14fdf64f503cf3bb30f6a7a9de3b4cf8c040a3dfbc4abee6afd6ddaddd40c7861 + +g_scalar = 36 +r = 01938e65f2a40e6899c6414997e998e0e3e1cb09728861ea138fc6d866fdc6c98505393cf55982451c97dac4214e4dbf052bf707cab63228fdfcf5ae2048a0ce100c, 0163d556dd0941ce794e9c2868a692e89dbf943485186e2074e8222e0ed99fea4bd0c6069fa8017db8bec972b99ee0d7fcbc0f607d677492659bfa47b98bb8d1b411 + +g_scalar = 37 +r = 004b52fc4b6d310ce7c4b551e4155c6daca97cb03e9fd9d0a79d6472d4028e8da1a18cca93917cad27e6be17486b1e0b549a7fe9ab4bda96ac4e84ad7ccebd470f5e, 003585e54fe81461ae21385ea7907a1a7b2e619f44311a16a0b600fb114a7dbae15510aa85895c5a084cd69609e345b53586fa03a23006a096ea7a196cd230a36ef2 + +g_scalar = 38 +r = 003cd775038527f32baf7e9056e95b0cbef7638c12398e4b8b019cc29b3435be97f601378e253fef51d25730e56267acca241df04ea2e96c1840b3f739d5ae2df998, 00789bf7cf42095c5b1770e1a3561fc3e1232b0430e114f67a397c1e5b54987f4a28b52a737cbaa0ffa2c431863c1a8cbf15eba60fb5d8b4723dc10d9706f4083cba + +g_scalar = 39 +r = 00dc53c3e7fcf3c902e04463da75efb25ffa5a8defe72e6dbf85ef3c6d77a521b9f84af300bbde9118b2f66fd5bc64b8a5208372c8fff95c84503475330a4e9a13e2, 0074e88fccd4fdbd992b68073ee6c4d4f8f7b13d0dd2caf9d989b62e7eb390dff3ea3482530d0d3bd86a4a3f82056a929f73a9493190c62a553233ad7f7fd9c4248f + +g_scalar = 3a +r = 008bc46df1c09851ab92d53b6ad821b5026be61385c801f5277c9871b54c6764d3fdb96a728ad56c650d342a03e174a3106a5479d3ccb04647ad0f583210d81ab70d, 01d948ff92784e9946a27a4c58d40bfb0e0b765073f1f9a731aa52b53e4fe686134fee784bec8fca81a73b8ac3a45ca1b766cdec69190bf94d71fa08b29292c1205f + +g_scalar = 3b +r = 0035aeb454ad31876773063c60342df29eadc7223c5d98901999aae5c2934c222920055693c9b1344c691a90342d64373a8acba8524ec347208863be8a26eb16686b, 00187ecbec147e7e43b4db0b0ca0aff1ba7f15a48db3660903f4e22f2ef3cb6efd45b8cf8c44bc83d0b8c9fd5fddd64ffec3fd82c38cfaffe51acf4aa03c5381fa2e + +g_scalar = 3c +r = 00038a508e954435eff6ccb82b562ed32ff236f33caef52de9fdf79836e37bbe118392681661adc786c57fb6bf92d04b42fc051c3f6061c252749fd17ffbfca45bdc, 008dbd87d8b1e7bd4d2adb7a7399b931e7169b0ecf8e37baa0e9997df1a529560a5a5edb1e7a605abfd04b1ccdfa683285b4d748f73799f3e5d4f8464ad3910e9522 + +g_scalar = 3d +r = 0115544c4a011407425c92ca7c732a1c7d8f8b6cd17d5b660d1a4cd724b1be8b17177193c11a77dc0b39a5e7fce59a7b32d7952bad1671543c41cb53d8cfcfc376a1, 01153df9c6c0ac6485b307996d2a399c872c79af485fef422cbfec097a3aed58c6a003f78d54b7f553a8a834ff603afa032b56f22ee9c3fe5e24b8eff8cd4a17604b + +g_scalar = 3e +r = 01f605dada534c5c8ae020f6ed49f27734e2378b0b7bc177aeaf943ae59581dd5885a38bf246fec516fd213f3fe32bfd4e19f0a8c971ef2a16969627fe31114dc85e, 014ff96d82698b78d305a2252c7a4be38a37f2b0afd6935f4aaa50e685ccd164a2206284a831f6b296eacb156b6e7671eb7adda2d7e072a578a319f1002224aa57b5 + +g_scalar = 3f +r = 01c132753b64640c457fe82f799acb0a6e8e1ca21b5affa0ddc1e7f54fe4d51b08453ae99661308e125ec63996847586265e75af7d025770ac8d0f5beb6fce8888e5, 015347e184197a0538176d81ac89b205d7961a9e093286414006595e8c353aa2238005d3dbdcec1896bc13f78f82f0071283af657b5bf664a2ace9d15ad2a03dba15 + +g_scalar = 40 +r = 01ab9aa17dce1112ecd14f3d7c0392fec2a67ebdbba81860bbacb614b9ccf8872d271bebd3c5efda3773a7c02c1603e7001df5aab8029a04fd41b53dc38ce320f742, 00748d70eb848e920573aa10217c57b9586d9bb1cc8b2fb1dc1d0c63ba369e87ab8bac165ba1508d4b10f4a7b9e3af958043c1c1a5dba0653dd45af17058a5f8df5b + +g_scalar = 41 +r = 0088cf00856250b5d1d1df9ccf56efb4cb8c9249faa77bc139118e3d58e27b0cbfe2d78bba61a023860cd080a95294b5bb57b765155778f84544ba20742a3a199008, 01f4a90b77abdecab88e885550626fd8f489fbd116fbcb4b9096d3997e6b5a4cff4cf9debfc40e5b5f946a4f238b77a4af6888286024313fdc334ba52497eac95796 + +g_scalar = 42 +r = 00d0265c7dca66a7846dfacc8ee739c326153f686e19f14b72892428e75fd36d013292e215cdb1d2ebacedcd93e84330ac1342ed8dcb240da44a3a136d0fb21c2bb1, 017bf1dd3d12beb1620107e1cdc6acbb6dc797e9c9d6cb736bd1b45e787cff5fdf455ef92311dc9ef60697f2e9ddd7d9d2422f68bffbe56949d5c3319c8325d6cebe + +g_scalar = 43 +r = 00897444a8e1e3eb1604a001e26e7cd100fe439f7341721f469122a6579f9a48c37be117bfb59707331116ba3478cd900addd76306cae1c59e39183c408de269096a, 000f53373874693fa2a8b0d7c2a7d7687b62c149a1793147ec7183759f1b0bce88fa75a808a544541fb34711462b37586d91347c7cb68bea750a19917790490d9309 + +g_scalar = 44 +r = 0187856249ee6c43128dbc5e8632c8c616eed28a53f732ef9607126f693be764bc84a2df0c24f6226098981a65380734648e5e27dab300a7387af2dce52bdd19583a, 011fc65a7466a4f0ff119c010a72dee1770ab8aa021371ca816b85a09de59a8c0a3ff5c1b963cf123aadc5c9fc82142cee34db4632b1ded1e8694f4ad32b82886b5a + +g_scalar = 45 +r = 001cca70b1e1ee4b8b2a5cbed74a58296e1670a12a5f1aff495183b06f4d3ab277595bb39c83dc06ba5d5330845a5fbf6cbcab41c7bf8f643a20918859a4df52a9b6, 00faee895c5567d11588bd17555807e25caebf5fc6e81e79d8b7288b8a97c30100a95d35de8032f97dc0dfdfdedc3b8e7cd9eb8decd40b9bbf49ef033e442f431f17 + +g_scalar = 46 +r = 0041f8e12f5d988526f54b203a58f8847c8a14b1ed62d16e0a5e8f02ba247c755b4bfe7fc8693ddfc77e44d9cddc5697eba3408515d25eb98c55fa1d5ce0d4c8cffd, 003f25b47ceee0780f70ea913ed76ef2d5cc79d750cee358632825b5e18345a5a016a17966e42ada91d8a846c3712f526a64e4e5300c67d22bdec350e4d18ae496f1 + +g_scalar = 47 +r = 01048dad119e2014895b535e2de4ed3d087460291765e870d0faa8ef366e062d5c72df2c522f33b6498088b1c4692f2389fc41492df118e0ffecfa496f9d0d4b257b, 013c23c31b0d2fb9f5e7c60a97e91f4c3d15935c6789e878dd70c78085b6add33adfe6ae577455e93d412596a188e1b39dcc45f9c8e6ad206c2ffe800fba8f3a49ea + +g_scalar = 48 +r = 006e27727e5bc29c7c7112d8392ca1412dc35a73a2dd5e852310c2f8d6ef628ae8b903b5538a2fda721e0e5bdf58a768e9800074d66cf8fa119a8ad3a853c633ba6a, 01b3128544704cbcf531a457294c2045f33692daea297c3efe023cc011753f9d7d748743fa4a5096d6258f06268f7567e5b276bc2c00e9b842625f7d8fd8b794d12a + +g_scalar = 49 +r = 0175390e66e973c9ef9ffb6053390709de3609b24b24d10892827d68a78adb98922b40a38f3899d1e3638202310dcf99f233178bff873bb01b44bc16a86e871cebde, 0000eb7757b15cbaf37b84abed2752bd26a3b43e6055694234bfd87eeefa8e673384af5eb24f0f24919ead021083005e4e5f25a6ac25559c4e659937f13d4c1c76c7 + +g_scalar = 4a +r = 00a4f1a73bfa8af128ab8d2fc86790094deee8bde74dcf600a9ef8b6d75388fc5144ac380ce38c62d0da6a4cd1d723fe5d6e1018b36382e9759cbbd9106e688cc484, 007443b923cc3a4b7237d0f85e958a349e6f2811e64cb5cd869a72035bc531359bc3bdb3fc14a2fcd3431264746c86046506eb42f2cd91cbf7adbc4e5ddb73a01458 + +g_scalar = 4b +r = 0103ebfaf8e5e4a0634cd26593c80bda5e26de3db59f16e5f495f48f482a8bbfa62d9978c40779d5dcaaedeaf8c491d1f64f7c28b6533fb9148be5864b112fd7cc3e, 004f2c6f348526188ed3beb275f7c7cd39f0aa15e00940d0da73b118706518c5f829087cac1c09ab622e70403df94bb9fc0d4e4ffaf00b8c98042de916c2958590bb + +g_scalar = 4c +r = 00a32e162b8a90eb763ee2f62afaee2f58c158466923f42bd251a2fa6a4a143e36521224b6f575f50205f869e7bfc4d3d454e9a34a6b95a2d16fab345ca29230a7b5, 0102029849a6089a3aed6ff16342746366b602e3615d96350f9a9f73024775987127bc88aac988bf7cc3f4734515a9d4093182a7dd6d0f961d6d7dc6f4196f75fb34 + +g_scalar = 4d +r = 00ba2d4648a6f879ae7e3b9c8ed8941a0c0ae73c6a06fbfccfc858a6c1a9bb90d56125356b8c53b646ed9a41be88407ea3d61bd4018467c20918089fcd939590162d, 0139980a308d2e682c55d1f08a94035b551e324c569abcaa748a67d2c2416ea5530c7bba85a147fbc61e946f2b8cf1b38fa14f70cb7e2df3377972aa7035460273ea + +g_scalar = 4e +r = 00895f4196e13fe9bda154e9ebbdf9410a44251f3f808f971f1d6352248dcd6823ea6c7828bf0c562e70d893e7b3bb8490aa738d9e8e171bdd3ae30f6c7596fffdf7, 014f9091699d4d89f7a14754c502419be9514fbab146de4945599448f20f245a4d106398b6761c5be04674c63a2fb6abe4087996cbac5957bf8c622fda94fe7038d3 + +g_scalar = 4f +r = 0102b119cf781b996496d0f8349c97f7ee7911abaca7a4ff1323531f34e8ab3334e8a9c5abb221969eb5a47ae711e62027ef685815b8825a7dcf226c148f20520d17, 0178a456534a8c3e83b6c6c6aa598af8e187985d76aa9c396be198d750083a388230de4d561b7e99f86b045a1a192a14a9db9483b008d583b170d428eebeea5eddb2 + +g_scalar = 50 +r = 00bfc57327bef68d676e47749b5dd3f4d69954eced792db6458a31293a9daf8b0de1cdf7d2a0b83fc6bfe8c0b16e935976307fc53ae24007851ee19a15bd437e2bc8, 0152876ec0738c0595322444864e81ac01c223d4e7636a44b0ab8aff486ab293a9e31d9971d0fdb747c6cd66d0fea49882e888f136d2b737af357d44e666e7a2b137 + +g_scalar = 51 +r = 01d1bba380289a7726bbcd7d76d6d63469cc842de44d26646bbc45381fd72be7ee8109f67171227b5c923577f6b0a4731872575a0b029a7b251e5a339416299c8ae0, 01703aee0f7ad8244cc35bd69e91c0670f3e541c9ce6e3529b902a980e93172ebc8afec0368616e1e23b04b4d5dfca8343eb93b0c8870f7a6662ee1b2160cbb90f01 + +g_scalar = 52 +r = 0186532117fb68498bd0afa6c87cb363b8223945271f9b62d201fcb568193e2ff4ea4a00d41b10154c361d12bc2f736dfc666ad4b9d03ccd2db5771c222741ce628a, 002c7c57a1a0d804f28d1d9133561c08b55e5ff784a1a9e5f28c764c162a7e1ef0cca806aeb2a736c06164ced318d25daf33693473ec0ead9597edd3fd63e7aa8e14 + +g_scalar = 53 +r = 00ee23348a012184d84987a5c4721492fae380eef8a85014b584f9365e67c084bcadb27ba066235189f99dca384788266c5943a6b6c2eb173d439fe70061aa455066, 001a643c3b3f641df411f3d074eacc021245afa7b9fb9dabd032b50dee3e392843067711f41a9950e7c413c57eef2e51f0ef237a0aa9bf98159d5cbc933b1f47b3a9 + +g_scalar = 54 +r = 00af3f7fcf37f2725ff0513602ecacdb2dda279dc84d781c92763915f76f4da0f2c59247f675fcacf426717870279438d9426af29c23d5229b6f80cf728c229e93b0, 01923a52837ab37730a867981d6ea316703a1c089b0d18690c114abefa29ed57716ca0d01fd4013139ec2fd7e0110be51067f73e30dbabca1e148fbd56a72fe8ee2e + +g_scalar = 55 +r = 00d817da1cad286edbdd413b8edb128ea7dc1ac2036d36033582794812464f05574f2fb2f1717735bff677bf88c18ec5a6a0f5a3f135ac65e07de07ad00b3b7d0343, 01b561925a7e611d29ddec86992ed4fb53db176a3427482f27d7518e20ee7d3b50bc5973c2c89b8b0252ae41bbbf5213ee3cec10223e7222d821cccde2706d617b63 + +g_scalar = 56 +r = 01eeb59277bff476b7590e468fb37cb48b7c197d005fae66af35e4348f3f619607d12c888fe12690a726763addc5b612f0ea483528f0a809b91f11671affba8d37be, 01edbec996dae3095aa4f8ae623abaefd56a0d9a5d93e06de864942346e62a335b216c5bff04f90549585a76aebf73ad7783e3507a8a08dea27108c387b1e6d122c4 + +g_scalar = 57 +r = 00956941e97ba91ff0f858908c83fbc3f5c346ef71beef633bcae43c9b2c40ed327ea73bf7dd0d0d8040af76fe8d4f1fcd901f77e15db6e4cb0550e586ce88cdb2d4, 00df195a395876f2aa666169d174db06ff340a18bf966357f520a1279b9f745d6d67a9eaaa39d5aa6918c789370c3de0b51e782b467fb9be933f50b29fa04db5def2 + +g_scalar = 58 +r = 01c0f92e884ceef042ffbc1368d36c34e1bfa4090064cd2cba7645d0bd1eeb35d20e6914fc4032f63013165a8f4228b3d931f08e8bfaf98e931fc1c84695a5588f24, 01c91966e4b3f3f1717f2d976135e9febf5cf855e19d8e95e3afbecc5e0699069d14d5602f70a65ec21b54f01d05c3a403ee8c9981223f7dc1dd300cedf780af8caa + +g_scalar = 59 +r = 0054b37d5bfae1cd5f4591d2f5d54a66f5d3f05d9f4c7ed4aef6e97f1604d4125badbde215ea081dbf0ea9eba407aa6fec7e6e83a352035d6a8ef8ea4d5af9c53ed9, 004335f81df3a5b403dea0445eb75fb7a4ce09be3ce81ac823260f2c34eba167aae5f0b07e3ba4e3a07ae4f0de35e906aa8f6b27c997bae2bc7671d2926adb7df7d1 + +g_scalar = 5a +r = 00e2da37f8f1dc1dea416c2f00d6f562fa09d4e841eb61ff94204077c342e29c1a3b50e0e8952a7cfc815f3d880bdd7ceb6bbb6319ddbc4684fe52cbdbe818c17158, 0076daff55806bcc6d134a2da5db22662f0b44a7702da0042b249a2cb9ea415392d8eb849703f453f92041c4c9b04c41db649e72ce9cf2e66db0c00342824fbdbac3 + +g_scalar = 5b +r = 01f569893b956b8d815ed5223d1159b74856f52d9ec5cc51b1dd6076a7b5e5ffb047a9431055e36ac201b0b7e90a109319c45b365b133addeb5bc8d972e5067e2441, 00659ca6c923803107bd86ff58cf5fba0929b0223927f06c44f3e16088835d2839dfc6057ab5c00f88b2daed9bb311646df9d7335f404f8f83d47f8be74d2a8e7370 + +g_scalar = 5c +r = 013514414e572e8c9b3c118f808477c1247f4cb2d6fe97978be969f79033068621676d269091abcf9a432626706a4da80eab1d02210b19dbb07beb6ffacc9641ef8c, 0090246b260228d39fa5c2f93cd80ae3d10a891e6d6d8d1ae7a89e725eac8c72215d7721e9d10cf5c597116e64653fe3726108322c48da8086a817aa893b3dfa7e82 + +g_scalar = 5d +r = 00f1349be21c3783ea94d212963d3d0ce6bd144b277ccde614678662e69755aa6ad528ef00c47c3a5a788d8e1906fdc75398c77af793a974ff99e2e2792e7c45e607, 0106734130e618e110cc57ca929a51a5a1a36d60843788902f9ff5fb18dc67c662e31bd6fe9f8258834e3d2596c4d8d8aa978e305b1b93f5a896ac8fb0b5b6d01f0e + +g_scalar = 5e +r = 01b3eef06437e772f6fb1a26b95080c38df0088735a944f7040f440f7473542b1efe298af70d4a61c334d2a483dbceed2791060e0744d271f6e1e1c16b227a6baf63, 0027003f375f28c042c627615a6b9ab03b286e6ec41987c0102b21b82bbe88f6ad9b5bea8020c8dd3d7e8f97f3646bc9129d06a9b00ab2c481da72b359e4bf29bd1d + +g_scalar = 5f +r = 00fe55d40008cb5b022615731738db1a42091f36b3cc8c35641c5440fae19b5a66e8a20e1d691fc10eee05b8689917990e214d19d800fcffcdb8944fce04730f0ca9, 00ee047dbd50f46db9a9b4a5b020400ba4f39a8d21ddb94c8420689ae056ec3ea188e9ba4891145015894e839fad0c8d7b0f8fe7a1a3a934c5580ba3abea114d0fef + +g_scalar = 60 +r = 00732a9de556c4d6397b514395c15d2c26b62d462fdb7aa06cbf6a18ae708bfefe8ee186a6bde691a29c06eeb9d09e703eceaec73c0bede0567f363301988a0cdcae, 01ed6be2b1b7af01255282666fc7aa7ffa7f959253aa8424a686d86a7ffd33d9eac914415f7b7296e01ec5ec420f133ffd1f8edf1bf0bf3469bd4bb9959c933c845d + +g_scalar = 61 +r = 00b962dbd245500733f098e69c209725bd8107a8456ede711bffe1d13e159fed6bb9a848713d63a4c9f5f5ac6d14d51fd76381d81c9635ea7891c106803fa42ba4a0, 00e214bc30c2ec923c40b9dd6845d73225ffc3b2f58bd130ce7c5e55126749827719c820fdda37d17336f1c24e9c71be5c9b974bc7dfb91166bc2c354d2b7484b4f3 + +g_scalar = 62 +r = 0062ec959f78ed2d252c5e75d1977e9665219b5c1edd57c5286b8d3f1f22f07b84067d9476f2f45f29fad15ce3ced21b6b81b03539f8a40ed9169c87130c7ac4e261, 00021dd88b200c780f26cfa375d0809816b8b890cb9737e84d1a5f35864e5769d8e340cb325bc94c4649e9631809261e519058e97446ff5b37159adb806977a2d38f + +g_scalar = 63 +r = 018af68c0538b4081a5da86e760ad8efabba456b453c2b2a71a9cbc2876950901758f1a08e213ed6cd0f0405186ff25e9690b4ad7cf6bf70c63773ec4abb6845151c, 00ccbf5192263f6a73b23d5c791942fba4e94e02610b31f0fe8c510b2945e1f431c74c77772ca9c3e5e12688fb5f403057dec04d5dc0939500bb91294a31aa1e82f8 + +g_scalar = 64 +r = 01791452efeeedf01f41d8b75355ff121faa0f9eda2d5350d529e9a92eb5750205caaf0d863eafb524acfbf5afd166548bc56848993b78453e6eafb878628a04032f, 01847c2f0a72f2fe40aff2989b631612320a0a90013177ed6190e126e7b2208930af4912368de683f8750600d5163b333c964186596d8e851451f6880477017549e4 + +g_scalar = 65 +r = 015cdf95b6ed0c20a0ba2007a69d76e9705224d4152626c470b3ba021fa67c939d7b5bde1f6b5058c9378a3e02373d5c47197060d7db3d76950d0d46e8cf249b4ff4, 00947381683f97ca777a06a8fa14cfe88cd75678bd36f41984fcc2818ec5aff5a258d6a816280e262a93f357e4791b4f2000f352c3dbf7e40b8eb2b162e58646541f + +g_scalar = 66 +r = 00986b0ad91bb9b0219bd687f0a7a6f6ae739fe21c6ff753fe701a3cc13b9ade2819f61847d48927dde7175f8f8dff39e7d855a02546aa2af2357f907be55fe2054c, 01f8fd87eeb4c14de36ae9e388675c000dbeba5be48132e0403966a72146e0c87f2283e32ec38a0a4d82f4d85d8c59dd827118019246e5857bba234ec36df0d57457 + +g_scalar = 67 +r = 0035d1d662a604dc31af7f5604bd544e88f66677d4456c5206a518cb0945f581db3a3aea8ceab16452bef29e8d36c49ec204d3d7c6a279f0d45b1c3b6a70afc044e6, 0107721ee953a4abe63583680d870d55dd06e88e1b1af787e2b0df9aa8ce6a8beb23ca238a3674e725cc91ca680021af94c0f48bebfbc8aa5e264fff5b7b005f6506 + +g_scalar = 68 +r = 014b9e7f031a4d58b21372786fb0ca9c425ba699ff89c7eeaaa67c1277ceb7ec0362fef40cf2f9056d49cccbf116f52929591237d64a18478ab95ef94070551efca2, 01d9abe326b3022047d814f877ee8ff738f5218b4ff7c44f95a72b42cd9a353b9e0642982ebd7435f8cf6a3beeb84ed5f5c0961b85f8b54cba6d2ba7ffb501c2007b + +g_scalar = 69 +r = 00ddd8141e1a442714cf273d8d9bf21295d5c8dbcd7c980e1f49eb2965b4d0a5a3a9dd410663827b201f0c5f5f9da90297b1f22e3a9858123438d52b1f1795f085f5, 007f6e5f892e0a846bd9410b64c4e0842b9b9ffb7b27161541253d1d991008d996b01bdbf3ce5b7148f1f54de0f9285b5ea3a89f5c3edee3100c68e7924766e02a96 + +g_scalar = 6a +r = 01b9210be24805e37182c3b685fa9f04d46fc6d893f58a34654f5f2f4450f0ecede49d7a6c0a897d476b7f4ad475ee62c2baf7799b9b1914ab58b6c83ef022e1413b, 01b0c206c51f576353832b22b93d08f5816d5ee409f224105c85ba40fc32960d4e10025ca4992f2a2cc8cb6b9d76433ca4bbfd7173cca76db311d3e7a704ed99b287 + +g_scalar = 6b +r = 01ac2b8e14de77c870370151bd848d59a62fa58638d279d964e20f645d825bf0eebdee288501570c2c003265bdcd1b258e3b391680d95c11aa17b8acba716c05978e, 01e0dd54645757091f1e4d0ce4b1aaa64b5c16e07cfd40c4edd76745ea24e3c04a531fb80584703d7217537f1db640e2764107629b4c3ee1e3081a74d4d8af9123ec + +g_scalar = 6c +r = 01e056088747ba729a118b761cd9cac21385196dfa36b6a8271a79d1d4c89c0501a55ac3a930dc07845dc54e068f1ca43302232f97982f6c9fa59c3a30f4d40f534d, 01ea2cd06bed253b4510387c0e3b638ab0c6809f318029df4896a02c100f0e6c4012f9431b695455f6208415c24645fcc9856cba3574fa993f55be62db7398a066a5 + +g_scalar = 6d +r = 00058fe762e72228401cc06e57ec5ac7fd384764040270b1c57a7fa7ea8c8932a513b3f35fde15ca5e849fc49e04d62678897ec7d7eb7d77b7eb56fa6bc1643992ed, 00fda9ffe63f4d2b918b25ea0269dc6a112682f6c1fcef76bc8f52ced643e6c7c355bcf654516bbe824abea1aa391fccb08b29639318290f25a54889573711ffc02c + +g_scalar = 6e +r = 0047e4cf0f0f54d0f32eb17963bbae208a76d32e31613b6479a9c9985c24b9168616f402a76a7f66edc0469de9fd96c55dbe33e6f244a11b44955c622feeee806455, 00ea55a7d0e295dd16855beb4838eabfeeaee6ca434c478fba553aece6e2efe50e0509e34b2013090ff86d78f69e09036e6d5f4f134c17afdccb973584b2ffa90941 + +g_scalar = 6f +r = 001956dca13aed8181ff5deeb95e67ed3bb4f9e511651485523e9b76d5bf16541c759f686854c790915cf045813a8c89971ff995b45eab5c7deebeceae89e6e8c856, 00983b307563e75910413aec1463c7caa334d1b4d02fba8741bcef50edb0715bf321864a9429465e910b4fedc83de112d356371219c0d17fef79697a8a2ad39f0261 + +g_scalar = 70 +r = 01319ce6f0880d028c25551db00f8d0116e72c8dfcd8a39c61f7edd4115a3b9c4734a5b816f119b3dc8ed388a2233041c9dc65b390e9ba3231e42b05a8d8af1479f7, 0013d5f38e18259b440e05f26f5e1178c743933ec3a9705aa4184875fa4a30e731fb18f69214f5c81e679afa419e7541d91463fa7edad9eec2d677e037b1ba67433b + +g_scalar = 71 +r = 00b77f01270f63d5bf465cc5e120a4b33db178c0ee8b3154f9636ca459182ee7221ead2f3b8f9140bcd14926a2590a01cca9c5c3b80ca634c8247afb9a5c39607cf4, 0083af28857523d71323fe4ae69e69e0ae7d859046454959db503c6f40239e097b2cf438377139c3c51c579b76d31a48f47dcd6d072830df20f80e63f11bc1f3943f + +g_scalar = 72 +r = 00e79957cc814f311141e8e8fdaf93eeb7e6fa32060f8a82a3e770944f04ff802a415ca9cc6a7c4fb02ad803beecb588ee169c123f5012b895b587508b848fc64f73, 00cded99fd9cb4eac2e8af0f269a30f4d839c2897084007949ab91872d39b920d88fd216c4abdd2061a92e54af32fb48ee27cab92f5d3d1b891ff7ab07d509c7ad92 + +g_scalar = 73 +r = 00d97a6d19edab64d198820101cca22c57a556e1c85e0fe9d3a9a552e5b0b483b7d9be283f2c51e9cddbafbaee3d88255aff95132605e30edbc213a20ec56e906248, 00eb4c8a3dd346db1f3f3cda07d052c80287d5f759f3e606df87846ef04c0ebf3cb8f45d5c7f2b4a76c20f75915fbc1d5aac5c0d10bdef76dbef3978c5a5e31907ba + +g_scalar = 74 +r = 00c7c2df4a9f8d4468ad3580aaad193c47a0df9b187149a18caa339cff8de33f8c605ac60fbff0a3f77690491005f7da23a65a9f6bd2283712b50a1a0d1e0d976728, 0024047b8d33a345fed7b811ac252396584a6bdc27abb26f88fe35c2a78485af77decde0ea89a562bc429625c8852ecdcad00071ff590f8f62d2d0590d8d3ad276e3 + +g_scalar = 75 +r = 002c6dbe6459bc73bc992ce0fffcd9fee067b8a6d55070e6332544ddee48740a60c97bb93c02e0ce2f6331030ad2c334c32a4b12ed7adb93027d4012cede080a2d3b, 00cd1f71310a5df6c81878d029938dec5158be3e75b534a5b96c481ad6474f8c3fef94beda05c23cab1281ffd0e416ab4399b3165190fe49d9e72b014c3bb6d52c5e + +g_scalar = 76 +r = 01d0804034f3a455c963f0a56327632eeb2ed67f1d1c62afee649ee2253aa261be82327ffd1f8b9e6e2017c5c29b7ad739bff7e609e8c912362134bf5184336b14e3, 01f7fb2f95d6a2eac057bb2218c650f1db89746563a8f88da44b3f2a958a499c766ac765939cfd247a45da74a580a5f7a4a76be746724fb4457a3a8ab46393fc2f12 + +g_scalar = 77 +r = 0179d956e40c9c164a236bc5ea6b692b306d839c537402c148d3fdd018f5642b7d10473b63e87545f412d9b484e0c9d300b64ff94f2330caedf8ece68e59c7934e3d, 0079c259e9e900af731689e7efe1ea61d45f55acd0e40fbf47e83db1a2c1010e44c3f2a33da00bbb2063ea1b9b5cccc8ca2d02249c541e2763473ede65d6aba05898 + +g_scalar = 78 +r = 0102b06cdd46cc888d54f5dc89c450120a74347ff0e61de494f231c4e352ba0ec634cea2e3208b52d94dcafb508ece6d59cfed8983a692bac1b5f83fee145b67c212, 004ea4fc2e9c7a47841475e8f82f8bf7a320cbd089ad6dbe64e53e7ec155828b3c01739dcbfae5c16c009e20861cce1152e5cfa3a450d04473697436d5b911797b43 + +g_scalar = 79 +r = 00a367d0c6dfba2001fa6e2d78548c7943ad5c8e5d1087cf779202ca58486930c9a928adf60c2bcfdcdd75360bfbdbd211797ace4f4edb0348ee997465f203bf2751, 00c1b7b412cf7592686e0ba9c0d2d7bb4bc69189b35066189f82eecf38c54a08a9e4a91663da208b4ac3a333caa4ccc0cd8d7e0a98fb9adb1b946b164ce97fdf8192 + +g_scalar = 7a +r = 007e1f066038caf616aaec4b1f9566804b4bb3996d9f156682bc834fa0d0a69198b77a758abbe566110054477e6e9967bc11f7fa11846e8538b4e2f0cbf3a58a170e, 01a779634fb44fcf4ed6084877ecd8ec9d5581b50eb0e34bdf4e18e49831c02b1ceeafc4bff5a3b1656fc2b6e0ee8e33e8004d7c5a47b0ca3012d427c4ae647eef67 + +g_scalar = 7b +r = 00047b794db70fd9c3ab25e514edc855e64d8b69881b8ecc4aba36c78ae97f6aa840a84df39d5cb67910f4663f6e1f705ce4994f7743a735a86e2ed834c80f6f21c3, 01750614ce07ba8c9cb1b1d4b89fcd79031bc9ab4c37c283f5e6bf5573ecfca859e947b7b0ee618e1d5e8eb68410908fa1d7af23bfa31fd8383bc87c3b96618fad1f + +g_scalar = 7c +r = 0125cdbb938403812e7296648159fa5c61f9547e43238eabd8aa24f6760290a0761eb948eb03e093a2822f2743d6268ae0a03e9cef68caeb9fb8628c9e1e4819a436, 01a84d11c1e74f62dd69261abf9d186a1b70b66c20f76b104e054bb0e705d46cb854618379554971e292229c2b5a3dfb0dbd33523f2389d8911eb2df36647976b73f + +g_scalar = 7d +r = 011914c7e087fa5cd5ad7261d98b95d6368e9cfe339f763bdf36635c1cd374a35b9e4aced17351738652fcfaa62a97262e35d723b60eaba0461d3f5496302e54196f, 016c0cccb1b14bf87d2d304254d6dd3f38249caa476ce873511549c5e890adcb638548fcbfae8ef79f7b92c7b7cd965445f935a0b801172e74e3cc988dbf72658df1 + +g_scalar = 7e +r = 0092f8e1613fcd402c57e3952f9b151f6b16068d05aa0d50e8812e604c4dececfad36e073ca5306f0810237893e706ae3186fdacf1bf07ad405389f628da6be89ec2, 0140d0e311bfe2038646e4b475a15868e1cd20c7293ed83e46ca548f03795c27f1cf9654ff693ecb2ab7c365f0db7cb1735b9a19be6ba931beac3fc81ad788e7e2ca + +g_scalar = 7f +r = 0144988fc5358ea8ab5c3a6795becef6aadc3781ab9fd8aa4fee59f4c291704265cb26a6e4bc8fe6717636354a21bda4bc3768326ed09828610056553f2102f4bd89, 00400f9cba61124a48299ab5e7c69073ec86019153052bbd868bfa70efd35f9bd256df973081af45028dff6b70d534ec7e253fa1156488ed5bb59449c99e1c6e419f + +g_scalar = 80 +r = 017cd41259f27e381f83631c070153023fa83c9698bbc2d6dd2cd3124af75ce07d974e49496876271d7d51df70816a5f814f2e27e720e23413b576b026e5736fa9e0, 006f6e5df506a8283dce5330ffdefbc7a682dce01ed3e7df79661b4fabc3b1af9ca9a49ff4b0dc99ac8c4e69c32464ace6130e3434093472a8e4bc309412c9dfb131 + +g_scalar = 0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01aed26e2db636092ec870ff7c3fa65755262708e5427c4b6b4aa211b1107e4c635f96e1ff06c55b9aa332551c61bdca8d0dff1342112e8db0fdef192aeddba16581, 01948dcf43cbf355d9160f9d754e161b4257b78c7b7f34d0a37803c1cc4bbfc1318aa27197f3be839c9ac057595a1cc5af271602462d8a9a439d1fafd3c2533251d0 + +g_scalar = 0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00944742778bab26e65e9a3f5313c3a003a90251109d1dba7f8fddec1e75d45765473fa94ade7386b10fb226e6cf370a02f6c130a85d2d4e99969a0062d31c2df559, 018a709e156dedadf5b8d637639834e527b23a26a665e944f4a4b5cbfde924f2dfb553e96d2831a1b7e753fb9cd3cfec55a53826b0be65001ed7828ca5adfb997e14 + +g_scalar = 0c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0015cb1856652168bca7a39b106f093e4a57390fb5c1b2d340073889ddd42516f0428cc959d96c93b9a3b001aa0f2e3c9f328980cddeff77f891119638ae44d87d78, 00c541c1ea1c63d30563d091b141db79827f0d0879a3042222823e84edee6eb8db2c24b50dda14c7e9f7320813886ff4fb1268b6c5946ed3932c85adb26d33e39fbf + +g_scalar = 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01dbfa792d042aabee9ee9cc06ae1c77c1f9a0eabfdd7d3a7a09be260bc6db5552a64b9496ff60ccfb3c44ca5fa5c9e0fc05ce141a50bbd9c3921d45c5c8dd04afce, 009ffccfc561c516a10c49a72d31f0f0d74d3e75da6fc0d63f3208e851aa2f69af1ad9b61817621f1f7e1e07c6eb138f1a433f9ea54811b89e04f2224e6f72765171 + +g_scalar = 1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00cfcd9411a470cc643f5388c4036feec1d24cffa124a410cdee29d81a1a1cdb278a9a8f25db1d173b34ff524baf4f3a5b759703fa4d0edf339666fba7b2e7441cb4, 00d0f4ae77b201effc73856cf76a6c605d3161c34b5725f19838cb8acd29da67068cf97db78253a89eea9dfefe2390b313383175d10dbbdddf467b229e6550e05667 + +g_scalar = 1800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01a96d6bd5a7708071a2a1acae740f8b55801ec36351b5a4d300cb613dd111beed8699a065a2e85595accaf79afb764dcaece7d4dcb0476ad721f854e6e695c41349, 008514d44f006728ed6a2549b4a3bc96e422c981a814d175ce74c1470e300d93fee40de589f5ba499beb61b71ef7ea874ec875a9003c1050adf6fcac06c11f4f15a1 + +g_scalar = 1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01dc1bf9b4bd69acf0db5f5910069b67b5331ac5570417b750772957d2bb088fc6169956c1820b3026069f891dc9ebce06735b0338a5f1dd866d49e0ca1c42892d9a, 007a33a5a253d015112daa26e77d2f3256c984db9f10d607e3f171120f8c44755470ea4bdc8302c92a8d155bb477e235ca27c4ad8307318c693446de5fe669353a7c + +g_scalar = 2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00c5399bfab4d01892d15b1554abe819e310de786d182c22cd4cec96c9c25e69011813f89335138e0ebfb214e9cbf2b93ad371e8430c5036848441b3eb86bc1bd2ee, 007d2fb0d9e42f25a98d50b91634687d1ac835dec8af0e83d425ad49b05739a0dd543bff1940568251200b0d1b565ceb35c29cb43e2eb39471d02efaee912005a9f2 + +g_scalar = 2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0067ac9fa4b6b1aae7af9345f66864673ddfccdf5ba2479a4e45ac542188c994a594d6f0aeca76b597d063c9779c31f457fde49859aadaff418ed038e10098aa74ed, 016e3a3355d477869144576b6839e4b020423636cc653b562d8591aed3ead4bf91ca314125c767a730516b2cf611c14d0ec121a7738a5a83d2da39986f63daf67da6 + +g_scalar = 2800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01913031b4b85d498c9eff6c40655bd968ceb86061d190e481352d31c4b07584ce241f0661f67c72584f43bf13205c302b497db7688abe64a7d8592a00f52fd4129f, 0087080900be9525c540d6d02bdeb95dd93d4d7462830c6201a6d0ba4c9ba3b6a6e66ffeeb628db4d4f430a7f0901e19b42e47ddf3dac708bfb56d1df370da39b0ad + +g_scalar = 2c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 013adde7b3414c9ccbf245ab58a897459d6192f887dc5a606c684122f4cec694ff887c97a66c835a2ed4d19e866d800e4737e4c75d3c395b5c0171886834d7690fc3, 0119c3a7aa0fb757d2e0f70ddaecd46c3f37e0fac1952f10e9ae193c77d3da9048bcdbba907699c2bfb8458bceff1d2a2efb717c5c403c15400d4888d1b65b82f60a + +g_scalar = 3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01f0cd8e682cfc6fd78fbef8a59b239aefa5434aa5b02a7ce24117bccc4558c48be7ba0c42b0c106bd9d48521aa09f26cf745a76d8d37316f0b06dc021ef237051f4, 01f93849a2b213b480d3c54cf34ad3d5315062e6394a1c55f4e2c3f1456a2da9f712ed3a369e5e7e3e8b59eafab03fde74fa1d0ebcf19384dbd354da0bfbec41e617 + +g_scalar = 3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01f5a8bea0eafe0a2fef598b5b8281cef74e1ef59a06290a3a43e55179a44cc52de7bb14b0fc96ff0fdbfd1d87ed98400356c869883149e7772d554f4e01e1a1901b, 0057729c8f9f3b669b329169747658fe874b4dd1d060f32bd47667b8f15b59bdb6a4ed464f6e5941e835050fc6597ed87ed37772f5ac83091ee583f35a44c1cf2f7f + +g_scalar = 3800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 011e3984d98a88ea60f9d489ca93b1b1c892404f04d0221c513fdda39b8b7b9110a490b9aa22574386780c1ebb12a0b534f21db9517680613f6655b2e49b84859f5f, 01a520a3c09eae2a2f7df17bd3b1396bd6c5e2801b8628b8b73b99c60aa3e80e14065fe6a4bffca65227fc5265e2d2369b3d1ca1e7ed3c34c9bb054070a9f3709e67 + +g_scalar = 3c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0123b7444deba5036c625ef607f0256df86cfbba715d72d105a8df08066a72dd979579fc329600e0f5c8f69f8cf061c897f2dc3c3247b189a2b8870c1e3736ddfd22, 00b8a0aee196fd602765b28494a1de3eb146283cbce0b0dd538ab88ed5ce29768d32cfe6efa39f89252460192d001fef53f77906dced70b826efc97dcbbb76618530 + +g_scalar = 4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 015ced6ada6cdee22453e0c48d6d3e1d629ce375d1f56dd9630921c19a128743874b606e8133cd7d66c718e2132d8fd07282213c8896d5d37a5d58333c8c9c13146e, 01b8b6196e3ea3286e2cf6e1518fa500327427f4063d5201d0a408d4629ec43f0a4317b59edb427ad8d30e225368407cb796dd549898850241e9ea1c974547b194a6 + +g_scalar = 4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01cc076f050763dbe75ec4f10e92627455edf400b04de7478e8533c057be809c3a90564c1ba585f705d7f28fdeef24cc8574fdcf3a8e0c1de833ab13be75358d12fb, 003afb9c6874cf2d8d01de953152a8bc549c95df440d413ad3c2bf9bbefd5fea4082adefc587419c6ada69e1213f19018553215ecb0e87031c4fbbf51019fba54408 + +g_scalar = 4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 016d11e815d50d2e1b5ec18d6a99429c6a0a46dabd484abf99f07730f3786a2d59fe4eca6eb7ad21ce75c2455fc1dcb80465239f8f5cd9e1fac75de0315d0f25f057, 01f0239df5b197ef6372b3022ac3c87db07f3fc1036bdced60eb53dfbb109da3e98a39f4f8cc573bfcaffd0fe05ef23ad559d68770a41c919d581be54ee6fbc85582 + +g_scalar = 4c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0197f896cf5461899dbffd6b433f8597bf77d13dca41042243f9845db3fc24386ce9cb3c109f4063e1d89e8c804c3cced44c53fd59242f5163bb121a1faa628b01f3, 017debc4b07c885d11c49b4bc793ce4596a28996d71853524506ba829d8f2874f6b8a61a9c226bda746475025874932a0abcf5de662f1a1e947336b4a766059651f8 + +g_scalar = 5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0191f506a80a744f68ce15edce42d572b956a985b167046751831a54e6db67c77ed0cb2c0893eb4fc9edc62bd196501c68195548f7033a2217ed247078383c9d1905, 0073634577cbc87097d5890f8e55cf13684c6c1738b145d1a7f85b300487f3c22ce64fdb86ae9e299096cee768c70604d46a5919d9a95c4b37128dd93d2bf0e799ef + +g_scalar = 5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0046c3ed025d8d5174c5f1a908637a0ffc1f1987c3f0d98eed41b0815610fcb1983720b1d2af544fad8ba57acf499530b4af5c7bcd3e9864a0f7c9312a32892f16a0, 01525024247caf1573492bfc0e0c895def4cfd35b0060871637a7aac37f45cf31246a078cede8340a82c6ce861a772989b435ffa488b5e73e6cb3991a35b2b27680f + +g_scalar = 5800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0099b8d8e05d95cd0ddc8b160e1d08aeefae9a5fc1ceeb271c471b463b9911c233b73165b15946ba999ab9fb4887b4d3794fc153a2b53fc1068088c843caed8fad9f, 0086fbfba1a745183af7160f1a8bb77d584cfe90929c669a05a67e9ca07526278471123c49e1f71d57d11aaaadbeefb5ad14950e0d43eac055eaf5598edf1bdae3f8 + +g_scalar = 5c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0071636494c77c5300309ae7d18a0b578c3b5ddd97b4d68968ea5a2e5825f823a49bcaefa5737930b9bfe95da6c7bb5b36b4a8afc90bd1be6e6b0e3e4c64909cef29, 00618022a9e16732cf5aeb89bdb8a676c18b5fa4c1f9d1c1875a1d7ba56eae06c2425413212daa765e8f83997373c95cf5ec87d1ec90081dc1d2139e9917fd370534 + +g_scalar = 6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0094135e84a3c663afb1c97b3036d14415acf9af6b2e4a498c4603bce6957fcccc262065d3d9fda0477f412eb09864eaa79ad5486f1a7e893c1ae2f7d8e0c2c3a0ef, 01750475d7215820b4f2a99798ef0419daa96aa9aa8752e4959d4b79a6d31d2e85cde03926a69fd98cc4b985816282ee026822f40fd380ded50a43441426d7a1f341 + +g_scalar = 6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 016bcc3a03cce9bbbf4b688e4970e7aaf8ee725381ccf2e54c06932b3b3d12c13e0fab706508352e7010354ac483e3e9bafb8987d95a0f13de65a8908a7ba327305c, 00d70c355056be58525cbdff18561839d9bfc600b52ee4af3d2a2d138a6b2c00403eee5e28d60da8e5a749925228a41e2b7ef6a56ce8309987ea96fccc0c78dd9ded + +g_scalar = 6800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 012931201dd64a595fa9b321574d2b00c4e5689bbf627c5af6123e7fbdd569792854abe45762890b796fdb50bcfec5997988176e7323741603dec12e4ecfcc4c73de, 01a837695e400f6d2fcc5fee3625eca8a314d6bc79e8556553ba7e1d4fea1b0832db1cb7a74d9b71519fc1606e30c428dd1c7d5d1793ecefde219eddd381d0774429 + +g_scalar = 6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 004e53240cb412c9433e6b650fca0085091ce22769cf6e30c1af8a76d468f06b9d97cc78b89b2e86ee48ba59e448f4965639ca926bb7113f1654f69f996b27a66639, 002ba927069b7eac76379e299550583170333aaae6303a3f61198b4b9e205b7c7ba4dbc55439a917d56861da287326a94070fa400004aadf0b3271143ab63a443a77 + +g_scalar = 7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01829ebb46a2beca361c3950c7e1e68e0972c6b81a7755588a9c8802e3e2db5b0e12ed501e47f5249f37313d57a2351ecbe298877beea466bd015606f4ca4d4f6808, 01f301d91f255ead892d97e5b00ec4ddc5a84d830021737f47fc052ad0509cc68884782f4890e249304ff11bdd641b65fc3e3130d39d908fc6499eafd084149cbe81 + +g_scalar = 7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 000e0c6c06411700937573898c734e6bfee69ac9cb373e3f9ea9466fdb319cc4d4cb402baa8f8b0b4a3bea870f9e1e37bcd9030868022dee1e724d216e7cc20002ba, 016fffe740511527d4437d9414bb80ea26655bc580698be9a6a7ee25c326c90f34961e2999447ac8e1659be1a90a2469b5dfe1335302afb5e33c8cb0a919dfee4c2d + +g_scalar = 7800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00263c0bf749e8fe766908d2fc8c373d750ea70d2978cd0c44873aeb368fa1c680b47fb0918b2be550e7cffa2303821653639c1ecbb87e624d3c8d23806fabe0f515, 0080a5bef569b071548b6f1e47583325077047c8d399d0ce2edd8bc06faa3725109d9ca44b4513eb734ba28679ce3f3a945f730daca3583dd8b3fa4465f33d79c87a + +g_scalar = 7c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 005fb5a38e512ac2a9e8f829ff9f39284e6c22249d50f120f52f14c7c03c94c4164702a8f1ca4a7c43904c4cd7a5569e8385058d1be62f0b0adf22e5d2389010eb2b, 005ba108fbf0c40ba1eac51f29d4323b0bce4e22ab527f5a2e589e4d682f472061d6965217c268acce83a01395e58d6eadffc0ebe79136e25ca34d3fa78bb0039934 + +g_scalar = 8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 009238405b3095ecc14f253fe0d4f8dedde46fc3cae6eb2796f52b8cdbac00ef816fa93a2e815bd94e4868519ca7a37a388e3ae7db6e925c9d91593cf4108e41277f, 012f30b9b0f6967f2b7bb3d5202f0b18c14f175c04f6d78b5623f2bd03e3a37d72546861e53c2aa1cc1ab8d8c3e6eda1049814b326424633254927a7d0f67882df12 + +g_scalar = 8400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0139b13a70433042e756cb73671f776a4c33b855043c7ce778ec09b337c1b2a7bcaa847708b7b3b17a4ffdaa7dfe9986142d7afcef98b42c8fc8477b98157f6543df, 014efc1b325cec99e2ff4a7eb4ba434b44e77ab6c9f91af4c918f7ee244fd6fd69a405d10c14724301dbf79e655d154dce27ae47049e3feadedc94a145d16fd8916e + +g_scalar = 8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01ebad56d779350d02706075ce23bb294f7e9f3ede6942b8542fe18acd66fd3f3e45bf8fc263d2a58ce5747a68ecf1faf55c21976c8c71314e5f5ed9b51571be979c, 012f8a636794399c9fa057e7def038dd3a43d83f3ade3052c4d603cc38dd1c8c839f4a05f1008862b1589f587b0e5a0ff4e3c8c5b977bf17484a26a6a42f61fb7f55 + +g_scalar = 8c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0132697180f9538f000468387a40291e2d594770103bc58849619d5d3ac80a2655d6b28a4abda5b2a14747594751dcb56a809ebe7fc188d9363b5fa02de4abb5cbff, 01cbf54292ccfe409376860fe9caaba649ea46b089a370c85008838db98ec6dd678536785ec36d2811cad4f7dd8c13d3772ba4e024c9a36c712e6e562fb689ad44ac + +g_scalar = 9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00be43d67b30044d46e11eb07d1237c39b47c1055ad0388dbfeb934ad41e68753be7e937729f3e3039571d91347592a6f98b7c90ce48b6fb25b4ee492eda438e192d, 00ef6eb73fab386c5721ccc2e6dc2bdcc5066d1fae53d231cde95e0bee697ef46528794b7080037b574e4a4f2b013c83e1b583d18cfe0ab5ff5c99bd8d9fc100bbab + +g_scalar = 9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00bd5059baed6cd5d7be6f418335e4569fb2136ee17070b13a26dc5ff14d3f32b0c2b8a287c7aa0d03457334ddefdaf9a364d33f3dd4351d10975d491b902fc36af6, 00c55c648438046d95e0732a7642a3fdebae64547b9c850c92d1c034ad6e5e57bd17b48f8ce3bce01d4227761a3f3ae8038e177747a19fb67b0e67ea6efc5e6e53ad + +g_scalar = 9800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0104f7e55d4599b2ef6706af42aa5816e6a0c5ed96951457724890fad52ea8d5d3b8aeaeed72fd0c9751bb5e9e331bda46ff8cf73d296d8c3b3efb5e99eab75cc79a, 004f2cc291951791c468525cbbfd8b9efa4354e1ad73332d75e2a84d56712df0b87bac7678a226d0d39843b056774f75f35c530571f5369f8f102b24af2ec25f9384 + +g_scalar = 9c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0114150d4bd8d8fd49e40986f539cda7f597b7e44d52e209489121cefb9bbfcfd81f3b613dfc248143e24fad8c3aeadcabc8b57ef347222f579299f48b340c92b8d4, 01748c2cfae37121678f0e0f9018f98a8a738449ccf1bb414673fe4fcee9e105e3c0e2de2b97dca1b7ded7b07b32c3d26ff26865f2e9e4620bb9ed05f3e70da81475 + +g_scalar = a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 012ca55f9a3a604c26506d4f4900a8812dceea93a7981fedd37e968ddd07f43d59de274e6b70de3ccda447efdcbf86b18c9e6d436828a22d5a4544fb1a0d16ebc9f6, 003f16c189dda36b6f3d2230aaa8d74aecc6f412a302ccaae183ab8f1f7644236613256f92bf208cd62d2788ad11c98bbdf8c1a9267911b0efaa21b7ec64e633cfd4 + +g_scalar = a400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0057857b39e4253739627e5464d3dce83d9dc96bd081408991ed02932411c130c6ed7aa30dc2fc083049d7227a78e0cef3fc8190a5488fc4962a26312444e17cfaef, 00c247d0ace9415f4507ce6cbeece4c1af7d1db48cdb4a7bc0c4e1c83f346c31c382a685be6afa6c630995289c7d110a64ee63f4eb933ad865293e4402f076553258 + +g_scalar = a800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 015420b7b2f99aab0afc765d4c7961f6a97f2141db867ba6ce1acf38646fa40a1897727ee2c5d7a5d3a2232ab4a4f9d50f2d912502aa31d02b3aaf056b217ee9d5bb, 0196efbf4767bb94c0873c314e622092cd827b5201ae1e091dfdb81612c1920bcfc4e8204a0ac43577c3ba4122306b2dedcdf5863a634847b387e7fc4a16b97b85d4 + +g_scalar = ac00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 016d94fc7d908dfce0187c485882bc7c856980ea980126a8f8cfd372405c0e8ce7c1f232d26a86c3923ed2e3d507caa5f93d3dc631bc28c360ccd18483776bc79364, 005036fcb9d55ab84b5e80bfa34f3dd795d67af724aefe719b60be28e9e744d2708122fc25857677117e7234faac46893515d3e0031a2cbfb44093a8c42b1c6a1cf1 + +g_scalar = b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 018c70687823dad6de109385fb8294d498ba18d0ae6ea7d706f6811884e47069b6214f535568a9f2f046a609d69bf3c2d9bba06e49df791d957d591991bf0bf28a44, 004df34d7b164495318d73da679d5a1407198c0952a3b4e357e3c0dc49bfe86185bc8e0a354e6dcec707ac62159eb4f9c177ba47f73ee117dc849357efc6d67ffd7a + +g_scalar = b400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 002d60d3e4863e6fa19757ab0ea60ec7d30601ca35bca5d4ca9d6cec3b5c505d82001dafb81b8b4afbca8b1c2809d78f91382c7ce89a7f0adff26588a301603ef15d, 006638ec2edbcf49a196127713b93cd6a3ee9cf97510fc40b66a20d972c4d431ac96a3a7e678991ad795dcc80126e6c7879fe4ace3cc27a91cccc75bbbb9d2b957f5 + +g_scalar = b800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 010e21f6d3f1db074aacd099e1c7e4e6b65b53528e5bbba42a8081baf3d457aa77be8e09a5286f7bfb64568e1624b988b5f52ed13c878b96451c6bc515ee53371255, 01ad4c590763eabbf333fce9fcbef691d2ed57f2c04e9ff9fdd321be090cca049258caef1a02b26e5678b886db7c36adb8053343f89eede18e5be74356f6c6147bab + +g_scalar = bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01ceac615c0ab14a9e5799d6727a748c59b2956a46be1c976fd6d3bc747bceef1787d395c2f32abebcaa3a39d68000940279a9b25f4a66ac0bf0d6b6b9cb3d6ce0de, 0173293f966ae512e2f4c15f46ffb70556621299d56c18c17b203758af2135ca9af9d94d8c1b033cc2662a5a796f1946f0f1f0bebad8a669e05052f2ca630338144a + +g_scalar = c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00fcac9f1d5bddcd3a9a48cf506f04a647aff1753bdbc02af5d448333ac2d845b648563cad012b7968b3d6fe928343da91b3d8c7870c7ee974f83b770280731e2b92, 018c4cd3b987782c2ca219b6666948aa0ac1de81de053e387e0432d3441623f351ffd5182186ff5602fbeee9291114c56558c39a85654cb0ab5bf9b4124bcb40d52d + +g_scalar = c400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0054f5f7011ebac33349d4658570456b96bc61c2456be4f5834cd00244983a6bd9642e9a1278199b61bb72025d69e9d56a0ef9ae72f5a41b51caf821ae11db79765b, 003541d502d58eeec8da47081e111f9056f44a9faaf4101679ee1c487c8dcf3fb4434bedfef15e68a10456b1f4fae385fddc2b6f8c00e2693dae67c2e446ed1f9581 + +g_scalar = c800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01b06e4e2f7438199ea43547f5771f656f46043dde88334646a51da35e6ad514cf8ff4391a44b15b49198719c274bb6cd6a9b93575d40e51878ed88a5b49e8b10b8b, 0017b0c1dda7dac62a6ef99feec2eb5670d9e352b6ecdf039013d08b502b37b5aaeca5833bbe337755c921260c5027f38e86b349add3e4c10f4f8240f79257831100 + +g_scalar = cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01b86950a4b7f9b7cc97730b534f3b9d974aaf11e2ac51fb40778dc7f1be39764b9213e082b88c2b66df121174e99601e70c123736b614100ead43ae763323837bf7, 017930ce5072d77c95bd0ab8d3fad932d472e76bbd691971ca024b8505698134997c1ecd3f86c85f5c1cac0b411df65746c805af39f58e8d46ad2f0b868594ae95a3 + +g_scalar = d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00bf9200da5a70538e448b6de4ad5ea1e019747b08ea34bb906d26fa6aec03656d3e18882ba32b0f1d221c29e867ba161bea7142a556dd9ae750018d01f0a0c123cd, 013b1667e2ea93c96d645c5852fb55daf8501c51ef6f75183afe853d0ff9e0af48f11ab1f0758b630f4b4b0d2e193a21f0674b3de5ff481b5edf7621ee5f0d81c672 + +g_scalar = d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 016831ad03e2f9dfd6dbb2cb2e6778759cd2cf33635fde4d1a9ec80f31d31c1eb86ca744da17776f6a6332934232833688ffcddf09074db58f4d9205062a62158347, 01f3e09e30d16c68960ab577c45253048b8e7f39cb9318aa5171cfe764d00a4dc57ceb784d2aad40cc52c4e4f634b17b671ca0af716df6a9f1ac283e90484dac9ccd + +g_scalar = d800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0016947a5fa979ee0cb90a7949655f05cacb773c305e85a126a151495fcd3295194bc84969e28f0fd5ade49ff31c75c6fb152124b217b39704463cda63ce0aff7be3, 004110370d0488325d4a11c811f85dff5a402ef9fec68795990a3d8f589b548e1dd8fad5d7ed8b1a390325dbd6579375cdffb1e916dfaf83f98a10fc6b467e1070b9 + +g_scalar = dc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 003fa6fafc5b8797d3bdbce1edd0d7a86c89d56aefc2bfde8c34dce4f5df4ba600980973d7c9330aac858ef6b77d0ae5d103c7add3cfed876674890d74a35019ca7c, 015d26318bfb89ff24d4612cdd4dd0592aea3d1db6832ee58f81590e5732e00ddb63b3977c8d7f8eb0185921d589cca8b7ea46bcb893b09c9f0ab4a39d7d55952075 + +g_scalar = e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01bcc40216017bd19096c9ffba67ac80aa23b2ebdd8e48cfd981ad51bfe47410d98c2b6f3a5442c24ecae06a8e36ec1d25deb82a6ad62b9178a14c5ef880278b149a, 00569be8f6e3660c1ac7abefb310e8fa80e60a2dd5a632af71c9cd1d317a5b972cf581433f595e93cc48991ed1b7994725a4df3eb36555df1de679ea0be9b75f864b + +g_scalar = e400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 019eaeeecd7159024cdc14cff0cbe4461e19bd94c913785b1690e1c35b2046b01b3981d573bcf447bf3bfee5b5ad0e32f7eb100f812dfa658a56e9caae073559d3b7, 00775cb01eb49e2cc525ddf47e0c800f15728bfe1eaf47712373045bdde367cbe1bb7454fb053f2baac973005c7d644becdff54e79a8c3b6e7d9cd70fb7c818fa80f + +g_scalar = e800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00f1be1c5284d05b0302d746d5eeed1ffb3abc2cd92f954bf7bcfe5646a62ea28eb8e73aa547992a0af388b7af75181b73c880ab9b320d63bc73716ce6c023987714, 00d3060da01ec11040e466278a83e633ae7672fa98e356194868f33d35b6f5e00e95b5aeb6dc6b37a981aa6a93bce1ee66f1b8b6d8f2311f0dce94e3928a064e5b22 + +g_scalar = ec00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00999ca08cd3806771788087b679592aeacd26d275d1b48fb85b2149105d56ff3099adeb76ccacac3318b75debf827bd54e045edbd774334c68ea2636c3de9d08666, 01d9c24fa82ded93a9ff2c67f179e0393d1177364a830d3a5cac55d18acb0cccc3035cf5904c85a834af734e19eae5d6c511557d8ad594cf35d9cd241fc796d2c871 + +g_scalar = f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01cc27e0453c6d5a6c1b3d462ea2b5d105804f1dd2ae3a9e7a101b3b9c1d73518f695a59234a9e69ac283e4323b5954c2490d722e82999af6fc314fd09fe0448854c, 010b298138f4a0f4ea63016c4cc3ed7a467700033c700e032094c5eb495e4b93f32fe4caa06f50f6966d57786465682a4a9371d352d9f00c2de3d179d903a7e19e26 + +g_scalar = f400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00117828f7cc03639bc8e969a59cd02892567122df89ec671b7661a06acc80b1483b001ad4e3f933ea2e7d9932d5965839da79eed8c124a5b515ed52ef32027d94ea, 00b5159623b5ce0ddfa376e5127d2dceb40dedcbb0878ce167383098e7ba69c11a17e42b5c065115652d24a2e964fd26ba1e5a25fe685032f3460132f81e6a20399f + +g_scalar = f800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00dd225817c15145106aaae3e275a45e39b82f2294b2b90e3b6beb1b405d80ce10e761e8a13a7579e89ac8cadcb451d2b8fc9ce7df736f9bfbb0f3a35654e3338f04, 001b54c33791523a267af847dc76e7529f7cb1a92eb923219dcc2b23a7ec4714c0618e3f6601820d17c5ce86e2553dd21d96b7745f68dec42b25e5864331dc32fe52 + +g_scalar = fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0071745b555d83bee0243ef56b0bb2e4a7e1c326f305f7fdf8056c84c41a018876ac60c2d02bc81c0a91c6d1e78b0c52baa2ae5d3c030facd299612246f2c6bbae95, 01669973427279099d28ffd6503cd14cd6f86aca459c8e11af10cb659a0d0051c3a87706c4fddf446bd11f49b07fe3a2e559c9e9b202815e13dc125f3de25bb710c3 + +g_scalar = 010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 002da7db02840f023a36e1fffeaee16d3c47bb435bec6a231d4aab1ec5412f56fb90fcc4eaab9fd8571084cb9da252466c052d21913ce0fda47e61829972ce8f9a17, 00981af3a61455db8ae93161a2c05aaec208c1ac30542b23bf871365e44a4eb09c8a6265f9cb96a2b632cf7fdf77bf6dfc59cd2278b1a36611997259e71938d77a9e + +g_scalar = 010400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0062c4b123951f350d21622dab71d825ef61cfb230affd63c851013d0b87aa30a6dd623e6d7e58466de88c119810aea3d029885a42934385a7ea1edf65becd9bb2e5, 0199606e6ede49f4b2687db77ee481e6dba3d25a0fa5c381d08a8cf4d0e919b4d3f54cfd1b634007ce017396b99bba52e22df77ac8a6a5f1d423eea62e6c7f5c6af7 + +g_scalar = 010800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01a249aa95f0b19222e8c89cbd6e1dc7a160528b5d53a4047919a96fcc1df5b0f882c1d1307d18e6678507cd83da5f7d3f790e8b9db8b8a347b4ce6612410633a181, 0101cee381ed4d4a612e110833d1305ca11497e401c7acd7c8540aaf06d9458f41309be7ce30b9d70c107cce2324810c53703e2c592f73a34973e9f356d4e01bda3e + +g_scalar = 010c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00b152d1af02048fd042ee87fa7e8bed3634751c8ba679c3088d5671cf1a012a974374a56df6fabe47d59c2caa44ef1d5cf09f28765b46e6b5b0387c637f01acaa9b, 008cd31b1c52b79ca229b2a4034249b400e9c88bd04126c24f02b5e116145b25e5a8782e6657d519047e9c03382b9721c11fb95f4787a8ce72a68e1a3ea5cba380c5 + +g_scalar = 011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00a20482c48e05484475089336b8e8070477d56e038c8a8fcb4c230e3eb392a36fce092625ca44f9272a21a971fe094b4bd335b7cb1ca79de99cf35c2d433efc3707, 00b50468a9cd33d9d0bbf1499fdbb7b28dcd2c1d5a72179c704e29a9c429047af67ee6d7b22631cd7e40929aa011152dde3bf77576f39762c153d271c884c22e59e3 + +g_scalar = 011400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 008ee69202b7953e4dceb224ae5b988218d6632ba3fe3631e91bf21d00ca858e001be3d107281a3a9b84bd59b8afa0d5a565a332502d451b1f51e0f831fecae5da00, 0156d6db619c92376474c99aad730d6876237c7f1a7f9ae2d6c1428704ae08a607a713969b6abe43d179aade3bf0b8e002bbd7a5067ed816345810e451d6056063ea + +g_scalar = 011800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 000b6f03a82af1a98bb8434a5865569e388c64f1f755847a045d4231ed9c1154e6ffe678e013da3ca321d729e7e71716c00f97dec0d63f0d6cd9dedbb7962ecdf41c, 00ef9574a85fa90a66a6b8525bed552d5e109de2337ea2492847d94e8649a8071f9a6e7169b0105eef6aa482ac585fd66153cd4de8cf08647b2ea6c4bb758cdf5ed8 + +g_scalar = 011c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01ee80900b990d9ee301b4786b94542c1a6065d91688659581c3ef5b817d22261dced9020a8b116f24482ca3f4a1c8331230a706abcd6ef7afe64da1a71fa047e0e7, 0032538f6d41f0e75cc4db4072677834d31acd58fe3a09b32fd96e7f3e37fdd0f986e99a89a395df22f398238ea3a53f8a79c00b1394c36d2cc4e33b1c0dfb6dc0d2 + +g_scalar = 012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 010790a266a049055a9a2841a205c8a737d0a5c214b15ac98d274c5d491948efdfb4ef41800c9e12c3278eb4cd6d4db19322f0d46dada2c16061352b8174100a4441, 016d87e3c92e8baa2df723ad10f4e9d760d460012d3311c19617b518d34fe1edf6f9663c19a13068e9977fbcdddc371f81d320a66b506965272961451662123bd7e2 + +g_scalar = 012400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 012570184b83262b826ad87aeca12b580e304edfade0ad80e3e97fe4ecd3ec7c596e8ae2f2c59157cb8f5b8514623a891def4a204ac85eb3c487ecd88c2493a8f566, 01382494e8b979a80ad6708a2b183661d9f0e5fc2196601796b21ad8c6e57485cac5bb8930801714684d48e0b622aba79c04eb506019289a2a38c3f801e6cb7e9b19 + +g_scalar = 012800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 005a89bf187177a0915a52aba919d9c7ffa9c77f5cf336561ab3b6cfd08358554b69318c176be4db125b7a7a59cd9cb38d0a904b8319d2cabcd07cd90154cbff99b0, 01b6bfab1e0fc544ed0bd51753d5fb063d2c043f613ae395fab10b55c6f7d3a8a521df404d6933a489cf580a7a58317f86f129d5ee5bd9b3aa8a3ddc69721313bcb4 + +g_scalar = 012c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00d2fdd0b64099cd09b2d91c2ceb34988178f7c52f7be824471ceea27294fb75e528871694d228151adc6724394836e39f16e2d3c0fe032f89fb90eeab028acee287, 01f8a23e6783142f17a35a09f5eb79b8d6f5acb48e688fc93382629a9f08b674f1e2a8ab0fce60c8dec5b0a7afdddbc52500db07b802a321338eb7249d33d4272024 + +g_scalar = 013000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00da34c943ac7894751fad77843ad3120e282a4be44452b0f1247a2ee02e6c60c9010777f7811dbf74972ca13190ee888caa398ee10a31913834531f05f339346bec, 01de0f35524c891b309d8c6c487ea5866b10987ecda4e2bdb997bba21ada31d0c6657d4c92e77a4c0fd4a0869a68c48f3202c24d8999a832658ddb688c3bc5edbd94 + +g_scalar = 013400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 004f737b87b9d2b8294d55e4c1b64d265cae568800d15106e00b3507540bc521260409158f1621b47df2db8b62d219385e3089b658bfa92539b06f8ba39655d9063a, 0026df16cfbcedd49954578a5126afbe482d12dd9273486b9eb82f7a1b3d428ea01e760b91a4d56fa51f5c365d35e36f835b19346193a2a5bb668a325dca5f16e15e + +g_scalar = 013800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01b9b56af6080819ccc8cf2a3a1bd32327b94e81d1f7f9527fda6bf11042573e4369412cfa6cc9b795b39d52082fab48967506bc690754f72fbca65809cebf64db67, 003eada1ea185fdbea916ab9b45f46ecff724a86f6b7d5b4c8f52aa3c2dd9ec41fe0c3df7c6a7261b17d7c391557a30061262c6c657bbbe4a9a0d6c8b63550fa5704 + +g_scalar = 013c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0104eb98ee422202157a3fc9b0594779a94412fa49c70c705dd47b105e3a0f14fce3186e2ea009cd443c0b5ac973ff3c6bb196213260cda1194532cf2d19a05e4b27, 00e537b36116714d72950c50d2a394e2ac465f83e4096a445726bfead8ed78535871149dca16ed6965979dad36ced7206732bf1ea33c71f21f055de547080fededf4 + +g_scalar = 014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00331d6995655fae4fa746b9f89cc0b9158c9ddc5d888ed910a76e3d2bd397a58ecaf465f7d7174f5564783fd1661fd3ee35a56c78e0378519fd60e8e4d3ea396a57, 018b1f4d1b2e97415a56d071e57d61810f8738b8db0ed3613d1afd233e353e97f9fb067523a8d0f61df0536c9062e7c97954048d912b8c2576988475d7fc10440e6d + +g_scalar = 014400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 019785b502b30368a4b3e640306354c59eb0dca02a1d2cf973f5f6405b0597d585d9d0f86d22663d7f21b07f263193684666a0eb83fd759168b66a8f109b53812d49, 014439a053481ca1c41d50e934fa5463c3b5e6c380d0c95389336737df8b33b0ce78f174364402d4956b18ce3596fe912aad8992bb56ac3cce820828abf60b8ad8a5 + +g_scalar = 014800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00eb58a1cff68936d8b5e6e950a51071d840c794372c52a521a2038be0e07b6f4773b3ccf8347a046beee45436f62f1a3dac80505e4a2c8c3764c31ea3f326230ce1, 00c78b40e321be479ecd6353350f7098605f39dd29b03ec82b9660eb2cc430bc5192449fbe1d681a8763026aaaf8bfc96562594a615aa8980f35a6d631fe93b2ced0 + +g_scalar = 014c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00ff4219d9a428885f7839452d4b401855c3817a658c953433fceb3302b01cbb274bb77554fe675b655bb6b99a16c8033d4570ef31053329daccd9451fa2e7da0c08, 01e99beba012bb7e86d995d4b12d63e85d2b8ca4be50045e7f7a0c53684b900859f80cca0296a0785cfdafd30736a94de7631869d07de55b01bc189efa3dae658baa + +g_scalar = 015000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0146832a909563cf6e550265f3940a42c4be58dff973c422c929edad63dbf01be2a6dbf8e73961884b68c74d1ab94434154de62e36a1bb0a4f3349ae8f1070ca8c00, 00ff611097fbbb088d254b7e95ae9982f606312baa4b494bf1c655d3719961ac9e1d5ae4fb650e89fee02c63262568a1de3e7cba72b6999568604e37a0419311d161 + +g_scalar = 015400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0013972a475e903c51a5deda09e077a3a382602d080574be817a22e54bd49e0ccbd89df1f5781782e87b182a292ab49dcfe1ad417f554cf39d2d70c0167a2b6792c0, 01db8a2f1a5e29906a7703cfb7ccb27fee43d7c7203766842585e5822ae48ecb21ea34a71b127e7a4a5b2e86809a073e3eacbdf6d289f39f9f1765eea2e0b476e406 + +g_scalar = 015800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 005927cc12f5ccddf116bac0c667d36d387ccabc4a6b55f4b8f07eae83d1e00358ee3ad40a7748df67e0a792df3c686ba4cd859a568881ed221d31a49bf8b1d15608, 00b6736fb53ec3b61d3bae3e45b9959be64be3e0eecbd073f798abc7838dd8cb409c3110cbe96eaa22716f6bb589c9bdfe858792270e895d766aaea0e5ae801bd57e + +g_scalar = 015c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0092bd16d2dd8875d47ab1b53fa8533ac7a42d0c5c7299f84bed831a84c69d5b2db885953c08f60b83483af693bc43f4cc7bae19acf9ccc792037194eccc84b836da, 010a5d7df0d63e4c964a5a8b26701983ceef1e0e44946fba2d92e47aa701d3d5af13ad67cb2df40743e0871e95330c733385e6ede2452bdc0c71626a12c0629b2ab4 + +g_scalar = 016000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01f49a65e7c9c168c49869a402bc9e9594ba580631a3a1ca716d5d1ed97087264ba16f317a2eeb49eb952075eda6aae640fb65592e88c301f14446cc89c8e1538b7a, 0184ef0f89208af7d57d6fb0a036fa8917c086eb382e2c4ef2185d37c657c702dc31d44dd156098caa61a9e1c600e8649850dcbd05d00d4fe7693336ae27201b251f + +g_scalar = 016400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01c0ef3460f59206de308c78a15468289bca6ca665b1cbab17783ad0594147baa0ae5deb6206c9a37af4c5a3813309a016ee99cb6f8f1485f26f3893b31b57648998, 018f7aaffe04d0f402a44f13756cb1a6b7e6d8564febc6cb9cb9bc0ffbbb47015b184b0d5de75556b2a9981f7e26d9d56535abe3a91db6bc77c1d55f9d30d391168c + +g_scalar = 016800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01a519c27e8423821c89f41ea9f064eca5211ce1732ee62a917ad3e36935162a14d8d7fc33d700714dd58b111d86180740d6ae445a973f087121b3d3a883448a17d8, 0042ce0ad0fd202d7fd239ba45f421476a9c65442057528e4810751f34071a0337d3d6f5621bf7ef3bbabcff524316202e896c5b05ecfb152b2ebe8932874bebdd77 + +g_scalar = 016c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01d0c9ce3ad9c5e045fc66a3b7ef501d72a5f3c10228384a18e4eee3519053cb84fc6fc182b7418f9f6154e1d4674c1d159154071bb3352b112e7f9f8d6b8ca1bf81, 00cfd1ad3be6bf90fc1197388c24f8201967c8b73d1c562a8cb21955f4b50304743614cf4da2078ef5760fdfc8212c3ea88ba8a702e39117aa68bb560fe0872a8b26 + +g_scalar = 017000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0072b0a22ba293862325223728e7f3feeb543d90cf94a4d943ed71969b8d5f968f3e0669ef394b0d1ec7db94103c09f88dd73966c56c63e69c70a3c77c1306cb7558, 0156bcd8ae84eab100499f253ded386abd87a11111f0690f8a5b61d56ffc021a7f7d7eaec09e109de13ac0850f854f90d7039e8c6903ff0cc5bcaf972f56c79384ca + +g_scalar = 017400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01ba774db64ae161f5d9a9c29fb28639d638dcc89a5f150b95169743a9715eb27eb7bef61f6e1557f31fede62cbea22caa39152fdba682b1b811561580936e28cb0d, 00416af12dcd3b1a4edb989737f9f89d2f69b196140f3252992ad60c4c12cd5a7b523c6716c8cabaa4be362e5ba66c37d2b23ec1e49ff802c3b83be09ffe6695efa6 + +g_scalar = 017800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01a11a500717db787076897a4e862043bde0220ecab5092b86ca973d57e897514304797b17815594731329c3f57a9db06f9b69f5b7e770b6e6fbe8f66b959f3b8462, 01dc5672147e3a1df5eed37020c0276b8debfe30e3045a6db223b0428231d8cc69f27243328b081959e95ae9646b88a359509722f902e8186063a8fbfe3dd3d18b97 + +g_scalar = 017c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0191638ce084886df8d73a3391ecbbc50e0b7e1ece58d9234f461f7ac0c21af793978ce8b69c91d8569a4babb96d742de2169fa5de2210d4121248befef33cad2f35, 006bf89581d2ca11d907dc9306957c4236d4586c1314552f332e7dca5e94fde1e0e3ece7d4a3fe638da214374cf862ce691d43e0055b5d035486c86cd9f85246cedd + +g_scalar = 018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01f74217adc8eb1ce0feb706c685153282dfc337336f7a3c06d898bda6049c22ac9fa681acfc1c60b2b8365c51c94a97ebd44d4f1e3abc64f2eb129f3f88a1e73627, 00f447ccf36ff7f05252c6eb676678305319be2fa18c68c6844b46181b26f6f43cf9603450e0f1b9c84036db6e625c7ec3552fb7fa8e6c45139b1d147cd08ca52a15 + +g_scalar = 018400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 017db45ca1257b6b09bf3688fe7422cc1380b9cabd57e4d8b596adc90a8e4101d934b157b58ca4481e956d66833c96bd126338681c05590ccff9af774e62078342d7, 01f58566f82268062b7e623580137dc5c1049242c0ef478eaeb0fbb7f003808a952b86881e9ccf24db006aa38f6c1d8d1e2a3040a276ad41437955d532e7d1a83b42 + +g_scalar = 018800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0100752e9449af3128415321d7e3377f3cc4a20ec8784c297648ae822f74d4ea85c4e94a9e05267692d931a2cd2bc36907e80d11ebfbf5b4c3d6daf134a0ae058823, 00479a207a8ec3ee0bd3415b8f664b66aa5a54b376aba89979e6147d5fa451cc5bbefc55723311f471113f3431785565750ddab4554b2047b4d9380401061bfbb5a4 + +g_scalar = 018c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01662feb264478ec1a417a29ce149c5410501801d3449604a40aa80d23ba15e7aa852729188a349a0336bd0c15f8a61d91ff39cf27f05cd0b373558d7ecc6c287df4, 01b94862aeb518e33c4000f8ae7271b97f71dc4bd7402021fa8d9ff60cecea3ab3d9c5fb600e39105cc02f1fae509a84b973eba40d132b36ff974df04292eb10aa76 + +g_scalar = 019000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0101620e97a6567301e94cd5c375c5a1d15013ab26b4284ce4e65b9d4f7c0422b3ea9a2c5f83cb92002d5dfe84deef575da19f97bf97b2f2d948684f98e20dfe8ed3, 012ddcd54848e29f1d63d2df32edfc81a88c5b9a530809943deb2d6fa94ea7a7c015a62e09e35a4d3597be6e1a9e8c080df92e466a7715a1e2da6f9e40358e00ac90 + +g_scalar = 019400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0085fd8ebd27ae6bd5ddf720abb1ceb42d52f8eeb63f5ce49bd1c00f5aa8c424cb418b11f01d56fae4d70fed3e3e6bb57e6ede11282ca6fa2e86cc5272ee61b0486d, 007ad4621a406e00a12dc9f2ad8b5fac06578b81c72ec95151388b13b5c1dd1b0f804c95d0c6db48f4e6e7dd4e35ae86c44a866733bee156ffb8f36a5af9eaee4cc2 + +g_scalar = 019800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00c9600e653ce5cd6c065c258643a0f6e03b18ebb202f64155e1176f88e72a60e64428b97d427e0caa44c232f3fe66339d85fdbf2a8b8dc6725a5a0ba3b7341ded2b, 0043cfbcd560eee2a68020b55e662186f00fec0b1df77ea2fa591ed5e1fd4fd16a06a40fd3e543c3c41114c2c6d976b70fb515135e97af4d39ecd1c0df70146dbb58 + +g_scalar = 019c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 013f67ae8a49a4901304c2d59a26af2dadd1118e1081593056eb2570e29499f1a2497dd0cca3fe7f173fe0176d24566a24e5287eef3bc6b3be6cc2d8cc16cf30a574, 00c7e394e4e1796df4550837b6fe9001987a9fa6c6bf73a66d4a6612bad0b5507bb9f3d7ffb4b121ba9a4cd10a791ef7f46829f1d586b73f801cb863a04285c8a071 + +g_scalar = 01a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00870b18280f3771bbda3963d29308f0e0f55df551a6d23a300b31b27268c1d2c998a379f7d8d2d245a883d7cddb2158c9c728ed585975d3157b28caaf32d9a3c262, 008d53c161cc5d69b854ffb9be96a9f112c1d2e6cbeeb64e5875cba54751119d16fb24810a2eeb98c478c6516fbc4c23ab8447ec56f67429ab48f3c26e514364f7c1 + +g_scalar = 01a400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00451895d544c41870e400f4dedba0896fe97e6b667423cf3356620dab4bd681ffdb95e7cd88228bf8b5ac3cd0b5f3cba483b83e66531bdfbf78c0983ffd8de6f3f8, 005e4ae24448a7307e6ad2eedeaa953a276b5d5edb6a4722df3af06d958c54489a640d7d94d96f35b4a88063c10106c57f862e5906f48b0e92a173a5d1b689bbba1b + +g_scalar = 01a800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 0156eadb7b7126d984c944731ed3ea965cba9a8df3620e936f1a3d6985bf788c0cf61f068e4be76ea7f8fcb6fb78db0b5077f3bc75b56cbc3f501ebf9a1d9d968762, 00162998f74aff22c009f6cc7525bfcb58ff9c225458a07efa5dba4ad53f639859beee90dea5cbeb7e4d14eea69c5b5ca4e96f8fb21b21274bb8c929884952484000 + +g_scalar = 01ac00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00aedf2f3f3961a5d5358f27361624f55a5d93f55562988ae1da934a44aa0e862b627a61f186b3e861bae35d1a3ecb29e297293391a8a08ad28055a226ce99de677f, 012f6d0877d106fcc223955bfa75cb085d1d83081e03810489073dd57db15ec8eb665896808dbf54db4e3fd4a069d9b46fb7ec8e7b66f91adf3bb2074c0dc1a44cf0 + +g_scalar = 01b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 008ddc6d8956bb7b3a76c0601a453679a8cccef16ee8fafa4e621272ffce3c0fafc44783cc8efbe14f276d48ad0009b285094090ce64691ae98ea0c40abc83adb0e6, 012c7bcf4e1b6510456dabae590c028373c25e62709806ebae68263ac9a3be4100a0590abca82bf7831524f0b1778b9bfbe49971ef8fae327514e3b842bb2eab05d6 + +g_scalar = 01b400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 016571d6e019db708ecdb941957cf18cdc6dc021a3f570d7c4b2aadfbdfd54497901e42458106719c4ac74ded46dba104c25af2bf856900df01b8e153b55c3daa161, 01088c11312b73381b48943798f009313fabe605f6950c84ae7e34d531766693b7b1369e3069b6ab6bcb159c499af0900c33fe81e5dac335b2cd46dccb2c53e91c97 + +g_scalar = 01b800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 000674fd9d07e29e29f2e8b8d59ac7f9bf970afd9f9bd402be437ae8d2b0fef3b8bd4ca378038693ee7be94208bf3f571fa9da81c4c682efeafe6cb3a103ab408a58, 01ee344b89c29d20a263ef643c28976307932e4d73c6839c45a7d21e695384ed00ed1fc697fd82411356e7f33f33cdc08b59d07621e4c6207971bf125248398b5c78 + +g_scalar = 01bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01100244093dda1af934976d014d39c17e0d7eb1637939dbbaf8ac4fc4afb84a41b9e6259efd43e407c8479530b9aa886bf9c93cb5a366148e213301733a800b9905, 00d45d23abf9b590a6c9aa18aebed5bde48fc2847761f8d25d338dd5b0eb1416a228d261e9853493eab867499e22586b3dcd9052ae56d22e7ae46ac30f1e5e6bd4f7 + +g_scalar = 01c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01daea50ce556c3d05beb2f379fff633448948c3b03bc906f1d2d9129ecef245efaa524cc31db56d96dd9441e6f06f3b9515b079d52bbabdf029765a6a6afc884a2e, 000dbc4b63ae0678686fc0480be858f37470abe9c10cf3c0800fa330281002b1f51fc96b59a64397acc1bad7a4ced2fe7ed31163236c0cae0acaa23e9095a8b173f3 + +g_scalar = 01c400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00efaa3dd19575c0ee2c8cdae6bb0e06156f7c8300a5f604f8981e64af4bc6469505090c626022ea3c4a73e4818d7a793d09945557bf305ecab8baa13059e0f593ef, 013373173dd7f338358aac4c3dcce6424f00c4139c55b7ac9688d11cba3f9d7f0156f621daf81017884acee14b83ea3008911b76ed7541a10dae17bc60f9b4ca4623 + +g_scalar = 01c800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 018ce71e3818a3c0517e6d7adcaadfddc1a6eb7ef64cf4ab1b90ab817612fa6fccc6fb5bf6b206475918a50253f619416aff6370385043c787abc39ecf54bc671d89, 002eabf9dd307157bb642e9fd7d9682ee1da18784d235d24febd9b881e715818e0c0bf8eee9451ac9b3572d0bafdd5f203e5ab8c7de8fdc7fc0bde4993d5457a6db7 + +g_scalar = 01cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00451d8be0c66091948ef4db4ae2c9bf23fdc0579dc0a42371bc86ac34a1985e370c2aeab162cd3c368c41867508fba0dd71737ac49914483cfc07ac13a4669cedb5, 00c2df205b89b960beeaf3f691fafba0c3c48cc298f3fbecedfcf7b204649c055449ee1aa784916e2a476e643b36221dd4f09ab1c2a00242ecbe2f66cd4adf75ea4e + +g_scalar = 01d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01e8e10363a159dccb230f77737f7873aafaabb5dad7dda622eff6a6791a6392b30b1dc96964b96d1d6b08000874961f3d495522c2f8ed3a0a54fc5d689832a99055, 0065e5710cb27a33f8c0f89e667642ea2e93162b2fb3d35f2a3d1329778095bffbaae9386b6da7f25f9d78b72f311f795b76ac1ec083fc0a154c81e3488df1bf71a5 + +g_scalar = 01d400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01950e8a0a4bd24556c8338bfa0711d9d3f5c1fdd4296f79a8ceeb336f0233a0fd0c701b9c4b62be52941f67b537241fc7b6c4a87b21f5c8b3674236dc70947034b8, 001d400b8c64ce19d720b21e9e62e354db37fca48b15d65b3cd7a4b23755f7be5a2f0f5b4d3d257dbd33944ba6dbd6e3f06f08ba9264f8fc2e6d9bb6213068a22119 + +g_scalar = 01d800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01da6bd51b696d1991aec178fd2e0421c2be2f246fee57bea434f77c197451df4eedebf3467db0a1d22fdd03e58fd965ad3218349fe506be655fccba13cb2e0c4313, 010d7bcc903ed5a65af856be55c20ee89dda3443d4a993bcfa9ca24cbabd5ce0f2ff1cd75bc3c8feb5b7179db12630d3624a6e5caadcaaada55d466ac73285f4cbd6 + +g_scalar = 01dc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 018783202c1583d3375afcc949ab89f77bbf7b3003e10ad11995c739dc461d0d66dc912a79a880487cbbc1d5d0672cab71d7bb6812f9eaeecd13350053df0e32d2d2, 006745260b0f07b3582dae4a6fb18b985ff3cf39d2ad67e8c9a6da295e6f27fb3c6335928d4dbd58c6a6f9ea447dd58fc83840a077ce6b507ab7f4172b842cf7d94f + +g_scalar = 01e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01715494275bba59f1d96f6ec26cc183a19db909deed9d2974625114ea0c86e3991907085c1a6519f46f62187b569573326e8e35061c3994dfec46b205370108afb9, 00cc56aa25d3c8c6c16b383e1173db7bf9e5ad7b36b64525f1cf4f724215cdb91ef401344e25acbf2b687e37d3bbe04db9172a23a540f523ff8be08d535853666918 + +g_scalar = 01e400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00142e15daae57a8f9073f440adbcf7e1466d5f1c99b44cac8c06020bbe53d64cec95f931c441786d0acd11b6a2d8200cfd1cb1c54b13dbe0cd97b4e9a703b4af4c8, 01023f8076db5555f2d9811501c2a1417eabdf53393e19fe1363ada465208592bdd1959cd1e8258879fbe77bf16bab86170d00c1575d76844177a517fe97fb732d48 + +g_scalar = 01e800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01884c4eef5bb0a019b0bd6e4b34afa0c9a49eacd5e48684c5ddf735692da771ed5a6726bf1e31554a499759c2cbba71e3bad504b9e70b88519b152af61732ecc16c, 01881f2993031fde92f0c610ae1264fb0bc77ed6e9f6cc9e39105d99dfb77b3edbd37f83439230c7203048388ddf68790e679f8c064419128919fda20fb9f628bd6a + +g_scalar = 01ec00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01dfbbba801f4c6698181d8d764427a50c51a0f085f4561e33fcbc3c6628ac3815ff9e6806fe5a7557cf18de3e0163abf7db3d50808600d4feaf7f842831bfe2e378, 0060812f907bd5edd8b5db943ac0603ae469a1e964c60376f879bec98c4e34622ba9ba7819764a2a9766942571a791379003f415e18b683036f02966d76a1ed7b370 + +g_scalar = 01f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 013599f4f435dfac6fb9cc46cfce7796405a4a961a01a7293b579c760fe24c2181e238d29fcf1810e5921dcc56ef5b76ebe27b63bd2a855a388b5a604d048f974bfb, 01feb0124fe3f8c4c9d816b19a01602685ee7776e43b65e8d366886be6f28e906861f5f3a222a9e952548103ec55c09a1ec490d976b37e0242342eee1fba1f3fe453 + +g_scalar = 01f400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 004b781e0c1b8d5e57b331de588ba66e86066b52aacc1059bc2a49e7d3ddfede7a595d56a51b0ff20d11437e9584f510c0e55e9f38c65c36bb911036b6c30e447c67, 00c31a6f9d36da16cb6f2e008db6d57f41c998bd36eb6a6280fa2f2c9a772794e0d339d6bad35a2851541f6313690719f91c5192788bcd409b4798dd67e74c4e46c6 + +g_scalar = 01f800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 00808fb1e568cf84d3f6c0fcb72ab7158f85ffefdb1fcc161794f46134ffb7e55c4a95698079118d8260f745b48076afa69b49167ede8ed4208b10ede4a3c542f6d9, 00bcb3967c41ccefc3955ef2c12409dda1839868808cd2d962f0e0919ae65948b062998a8fc28cce29659a684b5a0928692513d51b6e9a14c3bf479faf9437054cdc + +g_scalar = 01fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +r = 01481214e81e36d8d23c6f9357c5e1eca7e36c6c57d0eca4da6d2ec7d8eb1010bd4df0359e05593e84a8ea805b0951c6222b511348f2e02a92515b66a31216fb6c89, 0050b3c77de0bf31c9932fe05bf74b57c42b50435b2817421f787ed9cb2f2bd8eb31445fe175b6abf0144cd24eb495ad1cbfc5c1bf70430ecec929f82d035e74f224 + +# g_scalar = n - 128 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386389 +r = 017cd41259f27e381f83631c070153023fa83c9698bbc2d6dd2cd3124af75ce07d974e49496876271d7d51df70816a5f814f2e27e720e23413b576b026e5736fa9e0, 019091a20af957d7c231accf00210438597d231fe12c18208699e4b0543c4e5063565b600b4f23665373b1963cdb9b5319ecf1cbcbf6cb8d571b43cf6bed36204ece + +# g_scalar = n - 127 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e9138638a +r = 0144988fc5358ea8ab5c3a6795becef6aadc3781ab9fd8aa4fee59f4c291704265cb26a6e4bc8fe6717636354a21bda4bc3768326ed09828610056553f2102f4bd89, 01bff063459eedb5b7d6654a18396f8c1379fe6eacfad4427974058f102ca0642da92068cf7e50bafd7200948f2acb1381dac05eea9b7712a44a6bb63661e391be60 + +# g_scalar = n - 126 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e9138638b +r = 0092f8e1613fcd402c57e3952f9b151f6b16068d05aa0d50e8812e604c4dececfad36e073ca5306f0810237893e706ae3186fdacf1bf07ad405389f628da6be89ec2, 00bf2f1cee401dfc79b91b4b8a5ea7971e32df38d6c127c1b935ab70fc86a3d80e3069ab0096c134d5483c9a0f24834e8ca465e6419456ce4153c037e52877181d35 + +# g_scalar = n - 125 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e9138638c +r = 011914c7e087fa5cd5ad7261d98b95d6368e9cfe339f763bdf36635c1cd374a35b9e4aced17351738652fcfaa62a97262e35d723b60eaba0461d3f5496302e54196f, 0093f3334e4eb40782d2cfbdab2922c0c7db6355b893178caeeab63a176f52349c7ab7034051710860846d38483269abba06ca5f47fee8d18b1c336772408d9a720e + +# g_scalar = n - 124 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e9138638d +r = 0125cdbb938403812e7296648159fa5c61f9547e43238eabd8aa24f6760290a0761eb948eb03e093a2822f2743d6268ae0a03e9cef68caeb9fb8628c9e1e4819a436, 0057b2ee3e18b09d2296d9e54062e795e48f4993df0894efb1fab44f18fa2b9347ab9e7c86aab68e1d6ddd63d4a5c204f242ccadc0dc76276ee14d20c99b868948c0 + +# g_scalar = n - 123 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e9138638e +r = 00047b794db70fd9c3ab25e514edc855e64d8b69881b8ecc4aba36c78ae97f6aa840a84df39d5cb67910f4663f6e1f705ce4994f7743a735a86e2ed834c80f6f21c3, 008af9eb31f84573634e4e2b47603286fce43654b3c83d7c0a1940aa8c130357a616b8484f119e71e2a171497bef6f705e2850dc405ce027c7c43783c4699e7052e0 + +# g_scalar = n - 122 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e9138638f +r = 007e1f066038caf616aaec4b1f9566804b4bb3996d9f156682bc834fa0d0a69198b77a758abbe566110054477e6e9967bc11f7fa11846e8538b4e2f0cbf3a58a170e, 0058869cb04bb030b129f7b78813271362aa7e4af14f1cb420b1e71b67ce3fd4e311503b400a5c4e9a903d491f1171cc17ffb283a5b84f35cfed2bd83b519b811098 + +# g_scalar = n - 121 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386390 +r = 00a367d0c6dfba2001fa6e2d78548c7943ad5c8e5d1087cf779202ca58486930c9a928adf60c2bcfdcdd75360bfbdbd211797ace4f4edb0348ee997465f203bf2751, 013e484bed308a6d9791f4563f2d2844b4396e764caf99e7607d1130c73ab5f7561b56e99c25df74b53c5ccc355b333f327281f567046524e46b94e9b31680207e6d + +# g_scalar = n - 120 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386391 +r = 0102b06cdd46cc888d54f5dc89c450120a74347ff0e61de494f231c4e352ba0ec634cea2e3208b52d94dcafb508ece6d59cfed8983a692bac1b5f83fee145b67c212, 01b15b03d16385b87beb8a1707d074085cdf342f765292419b1ac1813eaa7d74c3fe8c6234051a3e93ff61df79e331eead1a305c5baf2fbb8c968bc92a46ee8684bc + +# g_scalar = n - 119 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386392 +r = 0179d956e40c9c164a236bc5ea6b692b306d839c537402c148d3fdd018f5642b7d10473b63e87545f412d9b484e0c9d300b64ff94f2330caedf8ece68e59c7934e3d, 01863da61616ff508ce97618101e159e2ba0aa532f1bf040b817c24e5d3efef1bb3c0d5cc25ff444df9c15e464a3333735d2fddb63abe1d89cb8c1219a29545fa767 + +# g_scalar = n - 118 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386393 +r = 01d0804034f3a455c963f0a56327632eeb2ed67f1d1c62afee649ee2253aa261be82327ffd1f8b9e6e2017c5c29b7ad739bff7e609e8c912362134bf5184336b14e3, 000804d06a295d153fa844dde739af0e24768b9a9c5707725bb4c0d56a75b6638995389a6c6302db85ba258b5a7f5a085b589418b98db04bba85c5754b9c6c03d0ed + +# g_scalar = n - 117 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386394 +r = 002c6dbe6459bc73bc992ce0fffcd9fee067b8a6d55070e6332544ddee48740a60c97bb93c02e0ce2f6331030ad2c334c32a4b12ed7adb93027d4012cede080a2d3b, 0132e08ecef5a20937e7872fd66c7213aea741c18a4acb5a4693b7e529b8b073c0106b4125fa3dc354ed7e002f1be954bc664ce9ae6f01b62618d4feb3c4492ad3a1 + +# g_scalar = n - 116 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386395 +r = 00c7c2df4a9f8d4468ad3580aaad193c47a0df9b187149a18caa339cff8de33f8c605ac60fbff0a3f77690491005f7da23a65a9f6bd2283712b50a1a0d1e0d976728, 01dbfb8472cc5cba012847ee53dadc69a7b59423d8544d907701ca3d587b7a508821321f15765a9d43bd69da377ad132352fff8e00a6f0709d2d2fa6f272c52d891c + +# g_scalar = n - 115 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386396 +r = 00d97a6d19edab64d198820101cca22c57a556e1c85e0fe9d3a9a552e5b0b483b7d9be283f2c51e9cddbafbaee3d88255aff95132605e30edbc213a20ec56e906248, 0114b375c22cb924e0c0c325f82fad37fd782a08a60c19f920787b910fb3f140c3470ba2a380d4b5893df08a6ea043e2a553a3f2ef4210892410c6873a5a1ce6f845 + +# g_scalar = n - 114 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386397 +r = 00e79957cc814f311141e8e8fdaf93eeb7e6fa32060f8a82a3e770944f04ff802a415ca9cc6a7c4fb02ad803beecb588ee169c123f5012b895b587508b848fc64f73, 0132126602634b153d1750f0d965cf0b27c63d768f7bff86b6546e78d2c646df27702de93b5422df9e56d1ab50cd04b711d83546d0a2c2e476e00854f82af638526d + +# g_scalar = n - 113 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386398 +r = 00b77f01270f63d5bf465cc5e120a4b33db178c0ee8b3154f9636ca459182ee7221ead2f3b8f9140bcd14926a2590a01cca9c5c3b80ca634c8247afb9a5c39607cf4, 017c50d77a8adc28ecdc01b51961961f51827a6fb9bab6a624afc390bfdc61f684d30bc7c88ec63c3ae3a864892ce5b70b823292f8d7cf20df07f19c0ee43e0c6bc0 + +# g_scalar = n - 112 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386399 +r = 01319ce6f0880d028c25551db00f8d0116e72c8dfcd8a39c61f7edd4115a3b9c4734a5b816f119b3dc8ed388a2233041c9dc65b390e9ba3231e42b05a8d8af1479f7, 01ec2a0c71e7da64bbf1fa0d90a1ee8738bc6cc13c568fa55be7b78a05b5cf18ce04e7096deb0a37e1986505be618abe26eb9c05812526113d29881fc84e4598bcc4 + +# g_scalar = n - 111 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e9138639a +r = 001956dca13aed8181ff5deeb95e67ed3bb4f9e511651485523e9b76d5bf16541c759f686854c790915cf045813a8c89971ff995b45eab5c7deebeceae89e6e8c856, 0167c4cf8a9c18a6efbec513eb9c38355ccb2e4b2fd04578be4310af124f8ea40cde79b56bd6b9a16ef4b01237c21eed2ca9c8ede63f2e801086968575d52c60fd9e + +# g_scalar = n - 110 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e9138639b +r = 0047e4cf0f0f54d0f32eb17963bbae208a76d32e31613b6479a9c9985c24b9168616f402a76a7f66edc0469de9fd96c55dbe33e6f244a11b44955c622feeee806455, 0115aa582f1d6a22e97aa414b7c7154011511935bcb3b87045aac513191d101af1faf61cb4dfecf6f00792870961f6fc9192a0b0ecb3e850233468ca7b4d0056f6be + +# g_scalar = n - 109 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e9138639c +r = 00058fe762e72228401cc06e57ec5ac7fd384764040270b1c57a7fa7ea8c8932a513b3f35fde15ca5e849fc49e04d62678897ec7d7eb7d77b7eb56fa6bc1643992ed, 0102560019c0b2d46e74da15fd962395eed97d093e0310894370ad3129bc19383caa4309abae94417db5415e55c6e0334f74d69c6ce7d6f0da5ab776a8c8ee003fd3 + +# g_scalar = n - 108 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e9138639d +r = 01e056088747ba729a118b761cd9cac21385196dfa36b6a8271a79d1d4c89c0501a55ac3a930dc07845dc54e068f1ca43302232f97982f6c9fa59c3a30f4d40f534d, 0015d32f9412dac4baefc783f1c49c754f397f60ce7fd620b7695fd3eff0f193bfed06bce496abaa09df7bea3db9ba03367a9345ca8b0566c0aa419d248c675f995a + +# g_scalar = n - 107 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e9138639e +r = 01ac2b8e14de77c870370151bd848d59a62fa58638d279d964e20f645d825bf0eebdee288501570c2c003265bdcd1b258e3b391680d95c11aa17b8acba716c05978e, 001f22ab9ba8a8f6e0e1b2f31b4e5559b4a3e91f8302bf3b122898ba15db1c3fb5ace047fa7b8fc28de8ac80e249bf1d89bef89d64b3c11e1cf7e58b2b27506edc13 + +# g_scalar = n - 106 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e9138639f +r = 01b9210be24805e37182c3b685fa9f04d46fc6d893f58a34654f5f2f4450f0ecede49d7a6c0a897d476b7f4ad475ee62c2baf7799b9b1914ab58b6c83ef022e1413b, 004f3df93ae0a89cac7cd4dd46c2f70a7e92a11bf60ddbefa37a45bf03cd69f2b1effda35b66d0d5d33734946289bcc35b44028e8c3358924cee2c1858fb12664d78 + +# g_scalar = n - 105 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863a0 +r = 00ddd8141e1a442714cf273d8d9bf21295d5c8dbcd7c980e1f49eb2965b4d0a5a3a9dd410663827b201f0c5f5f9da90297b1f22e3a9858123438d52b1f1795f085f5, 018091a076d1f57b9426bef49b3b1f7bd464600484d8e9eabedac2e266eff726694fe4240c31a48eb70e0ab21f06d7a4a15c5760a3c1211ceff397186db8991fd569 + +# g_scalar = n - 104 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863a1 +r = 014b9e7f031a4d58b21372786fb0ca9c425ba699ff89c7eeaaa67c1277ceb7ec0362fef40cf2f9056d49cccbf116f52929591237d64a18478ab95ef94070551efca2, 0026541cd94cfddfb827eb0788117008c70ade74b0083bb06a58d4bd3265cac461f9bd67d1428bca073095c41147b12a0a3f69e47a074ab34592d458004afe3dff84 + +# g_scalar = n - 103 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863a2 +r = 0035d1d662a604dc31af7f5604bd544e88f66677d4456c5206a518cb0945f581db3a3aea8ceab16452bef29e8d36c49ec204d3d7c6a279f0d45b1c3b6a70afc044e6, 00f88de116ac5b5419ca7c97f278f2aa22f91771e4e508781d4f20655731957414dc35dc75c98b18da336e3597ffde506b3f0b7414043755a1d9b000a484ffa09af9 + +# g_scalar = n - 102 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863a3 +r = 00986b0ad91bb9b0219bd687f0a7a6f6ae739fe21c6ff753fe701a3cc13b9ade2819f61847d48927dde7175f8f8dff39e7d855a02546aa2af2357f907be55fe2054c, 00070278114b3eb21c95161c7798a3fff24145a41b7ecd1fbfc69958deb91f3780dd7c1cd13c75f5b27d0b27a273a6227d8ee7fe6db91a7a8445dcb13c920f2a8ba8 + +# g_scalar = n - 101 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863a4 +r = 015cdf95b6ed0c20a0ba2007a69d76e9705224d4152626c470b3ba021fa67c939d7b5bde1f6b5058c9378a3e02373d5c47197060d7db3d76950d0d46e8cf249b4ff4, 016b8c7e97c068358885f95705eb30177328a98742c90be67b033d7e713a500a5da72957e9d7f1d9d56c0ca81b86e4b0dfff0cad3c24081bf4714d4e9d1a79b9abe0 + +# g_scalar = n - 100 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863a5 +r = 01791452efeeedf01f41d8b75355ff121faa0f9eda2d5350d529e9a92eb5750205caaf0d863eafb524acfbf5afd166548bc56848993b78453e6eafb878628a04032f, 007b83d0f58d0d01bf500d67649ce9edcdf5f56ffece88129e6f1ed9184ddf76cf50b6edc972197c078af9ff2ae9c4ccc369be79a692717aebae0977fb88fe8ab61b + +# g_scalar = n - 99 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863a6 +r = 018af68c0538b4081a5da86e760ad8efabba456b453c2b2a71a9cbc2876950901758f1a08e213ed6cd0f0405186ff25e9690b4ad7cf6bf70c63773ec4abb6845151c, 013340ae6dd9c0958c4dc2a386e6bd045b16b1fd9ef4ce0f0173aef4d6ba1e0bce38b38888d3563c1a1ed97704a0bfcfa8213fb2a23f6c6aff446ed6b5ce55e17d07 + +# g_scalar = n - 98 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863a7 +r = 0062ec959f78ed2d252c5e75d1977e9665219b5c1edd57c5286b8d3f1f22f07b84067d9476f2f45f29fad15ce3ced21b6b81b03539f8a40ed9169c87130c7ac4e261, 01fde22774dff387f0d9305c8a2f7f67e947476f3468c817b2e5a0ca79b1a896271cbf34cda436b3b9b6169ce7f6d9e1ae6fa7168bb900a4c8ea65247f96885d2c70 + +# g_scalar = n - 97 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863a8 +r = 00b962dbd245500733f098e69c209725bd8107a8456ede711bffe1d13e159fed6bb9a848713d63a4c9f5f5ac6d14d51fd76381d81c9635ea7891c106803fa42ba4a0, 011deb43cf3d136dc3bf462297ba28cdda003c4d0a742ecf3183a1aaed98b67d88e637df0225c82e8cc90e3db1638e41a36468b4382046ee9943d3cab2d48b7b4b0c + +# g_scalar = n - 96 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863a9 +r = 00732a9de556c4d6397b514395c15d2c26b62d462fdb7aa06cbf6a18ae708bfefe8ee186a6bde691a29c06eeb9d09e703eceaec73c0bede0567f363301988a0cdcae, 0012941d4e4850fedaad7d999038558005806a6dac557bdb597927958002cc261536ebbea0848d691fe13a13bdf0ecc002e07120e40f40cb9642b4466a636cc37ba2 + +# g_scalar = n - 95 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863aa +r = 00fe55d40008cb5b022615731738db1a42091f36b3cc8c35641c5440fae19b5a66e8a20e1d691fc10eee05b8689917990e214d19d800fcffcdb8944fce04730f0ca9, 0111fb8242af0b9246564b5a4fdfbff45b0c6572de2246b37bdf97651fa913c15e771645b76eebafea76b17c6052f37284f070185e5c56cb3aa7f45c5415eeb2f010 + +# g_scalar = n - 94 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863ab +r = 01b3eef06437e772f6fb1a26b95080c38df0088735a944f7040f440f7473542b1efe298af70d4a61c334d2a483dbceed2791060e0744d271f6e1e1c16b227a6baf63, 01d8ffc0c8a0d73fbd39d89ea594654fc4d791913be6783fefd4de47d44177095264a4157fdf3722c28170680c9b9436ed62f9564ff54d3b7e258d4ca61b40d642e2 + +# g_scalar = n - 93 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863ac +r = 00f1349be21c3783ea94d212963d3d0ce6bd144b277ccde614678662e69755aa6ad528ef00c47c3a5a788d8e1906fdc75398c77af793a974ff99e2e2792e7c45e607, 00f98cbecf19e71eef33a8356d65ae5a5e5c929f7bc8776fd0600a04e72398399d1ce42901607da77cb1c2da693b2727556871cfa4e46c0a576953704f4a492fe0f1 + +# g_scalar = n - 92 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863ad +r = 013514414e572e8c9b3c118f808477c1247f4cb2d6fe97978be969f79033068621676d269091abcf9a432626706a4da80eab1d02210b19dbb07beb6ffacc9641ef8c, 016fdb94d9fdd72c605a3d06c327f51c2ef576e1929272e51857618da153738ddea288de162ef30a3a68ee919b9ac01c8d9ef7cdd3b7257f7957e85576c4c205817d + +# g_scalar = n - 91 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863ae +r = 01f569893b956b8d815ed5223d1159b74856f52d9ec5cc51b1dd6076a7b5e5ffb047a9431055e36ac201b0b7e90a109319c45b365b133addeb5bc8d972e5067e2441, 019a635936dc7fcef8427900a730a045f6d64fddc6d80f93bb0c1e9f777ca2d7c62039fa854a3ff0774d2512644cee9b920628cca0bfb0707c2b807418b2d5718c8f + +# g_scalar = n - 90 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863af +r = 00e2da37f8f1dc1dea416c2f00d6f562fa09d4e841eb61ff94204077c342e29c1a3b50e0e8952a7cfc815f3d880bdd7ceb6bbb6319ddbc4684fe52cbdbe818c17158, 01892500aa7f943392ecb5d25a24dd99d0f4bb588fd25ffbd4db65d34615beac6d27147b68fc0bac06dfbe3b364fb3be249b618d31630d19924f3ffcbd7db042453c + +# g_scalar = n - 89 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863b0 +r = 0054b37d5bfae1cd5f4591d2f5d54a66f5d3f05d9f4c7ed4aef6e97f1604d4125badbde215ea081dbf0ea9eba407aa6fec7e6e83a352035d6a8ef8ea4d5af9c53ed9, 01bcca07e20c5a4bfc215fbba148a0485b31f641c317e537dcd9f0d3cb145e98551a0f4f81c45b1c5f851b0f21ca16f9557094d83668451d43898e2d6d952482082e + +# g_scalar = n - 88 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863b1 +r = 01c0f92e884ceef042ffbc1368d36c34e1bfa4090064cd2cba7645d0bd1eeb35d20e6914fc4032f63013165a8f4228b3d931f08e8bfaf98e931fc1c84695a5588f24, 0036e6991b4c0c0e8e80d2689eca160140a307aa1e62716a1c504133a1f966f962eb2a9fd08f59a13de4ab0fe2fa3c5bfc1173667eddc0823e22cff312087f507355 + +# g_scalar = n - 87 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863b2 +r = 00956941e97ba91ff0f858908c83fbc3f5c346ef71beef633bcae43c9b2c40ed327ea73bf7dd0d0d8040af76fe8d4f1fcd901f77e15db6e4cb0550e586ce88cdb2d4, 0120e6a5c6a7890d55999e962e8b24f900cbf5e740699ca80adf5ed864608ba29298561555c62a5596e73876c8f3c21f4ae187d4b98046416cc0af4d605fb24a210d + +# g_scalar = n - 86 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863b3 +r = 01eeb59277bff476b7590e468fb37cb48b7c197d005fae66af35e4348f3f619607d12c888fe12690a726763addc5b612f0ea483528f0a809b91f11671affba8d37be, 0012413669251cf6a55b07519dc545102a95f265a26c1f92179b6bdcb919d5cca4de93a400fb06fab6a7a58951408c52887c1caf8575f7215d8ef73c784e192edd3b + +# g_scalar = n - 85 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863b4 +r = 00d817da1cad286edbdd413b8edb128ea7dc1ac2036d36033582794812464f05574f2fb2f1717735bff677bf88c18ec5a6a0f5a3f135ac65e07de07ad00b3b7d0343, 004a9e6da5819ee2d622137966d12b04ac24e895cbd8b7d0d828ae71df1182c4af43a68c3d376474fdad51be4440adec11c313efddc18ddd27de33321d8f929e849c + +# g_scalar = n - 84 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863b5 +r = 00af3f7fcf37f2725ff0513602ecacdb2dda279dc84d781c92763915f76f4da0f2c59247f675fcacf426717870279438d9426af29c23d5229b6f80cf728c229e93b0, 006dc5ad7c854c88cf579867e2915ce98fc5e3f764f2e796f3eeb54105d612a88e935f2fe02bfecec613d0281feef41aef9808c1cf245435e1eb7042a958d01711d1 + +# g_scalar = n - 83 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863b6 +r = 00ee23348a012184d84987a5c4721492fae380eef8a85014b584f9365e67c084bcadb27ba066235189f99dca384788266c5943a6b6c2eb173d439fe70061aa455066, 01e59bc3c4c09be20bee0c2f8b1533fdedba5058460462542fcd4af211c1c6d7bcf988ee0be566af183bec3a8110d1ae0f10dc85f5564067ea62a3436cc4e0b84c56 + +# g_scalar = n - 82 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863b7 +r = 0186532117fb68498bd0afa6c87cb363b8223945271f9b62d201fcb568193e2ff4ea4a00d41b10154c361d12bc2f736dfc666ad4b9d03ccd2db5771c222741ce628a, 01d383a85e5f27fb0d72e26ecca9e3f74aa1a0087b5e561a0d7389b3e9d581e10f3357f9514d58c93f9e9b312ce72da250cc96cb8c13f1526a68122c029c185571eb + +# g_scalar = n - 81 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863b8 +r = 01d1bba380289a7726bbcd7d76d6d63469cc842de44d26646bbc45381fd72be7ee8109f67171227b5c923577f6b0a4731872575a0b029a7b251e5a339416299c8ae0, 008fc511f08527dbb33ca429616e3f98f0c1abe363191cad646fd567f16ce8d14375013fc979e91e1dc4fb4b2a20357cbc146c4f3778f085999d11e4de9f3446f0fe + +# g_scalar = n - 80 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863b9 +r = 00bfc57327bef68d676e47749b5dd3f4d69954eced792db6458a31293a9daf8b0de1cdf7d2a0b83fc6bfe8c0b16e935976307fc53ae24007851ee19a15bd437e2bc8, 00ad78913f8c73fa6acddbbb79b17e53fe3ddc2b189c95bb4f547500b7954d6c561ce2668e2f0248b83932992f015b677d17770ec92d48c850ca82bb1999185d4ec8 + +# g_scalar = n - 79 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863ba +r = 0102b119cf781b996496d0f8349c97f7ee7911abaca7a4ff1323531f34e8ab3334e8a9c5abb221969eb5a47ae711e62027ef685815b8825a7dcf226c148f20520d17, 00875ba9acb573c17c49393955a675071e7867a2895563c6941e6728aff7c5c77dcf21b2a9e481660794fba5e5e6d5eb56246b7c4ff72a7c4e8f2bd7114115a1224d + +# g_scalar = n - 78 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863bb +r = 00895f4196e13fe9bda154e9ebbdf9410a44251f3f808f971f1d6352248dcd6823ea6c7828bf0c562e70d893e7b3bb8490aa738d9e8e171bdd3ae30f6c7596fffdf7, 00b06f6e9662b276085eb8ab3afdbe6416aeb0454eb921b6baa66bb70df0dba5b2ef9c674989e3a41fb98b39c5d049541bf786693453a6a840739dd0256b018fc72c + +# g_scalar = n - 77 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863bc +r = 00ba2d4648a6f879ae7e3b9c8ed8941a0c0ae73c6a06fbfccfc858a6c1a9bb90d56125356b8c53b646ed9a41be88407ea3d61bd4018467c20918089fcd939590162d, 00c667f5cf72d197d3aa2e0f756bfca4aae1cdb3a96543558b75982d3dbe915aacf384457a5eb80439e16b90d4730e4c705eb08f3481d20cc8868d558fcab9fd8c15 + +# g_scalar = n - 76 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863bd +r = 00a32e162b8a90eb763ee2f62afaee2f58c158466923f42bd251a2fa6a4a143e36521224b6f575f50205f869e7bfc4d3d454e9a34a6b95a2d16fab345ca29230a7b5, 00fdfd67b659f765c512900e9cbd8b9c9949fd1c9ea269caf065608cfdb88a678ed8437755367740833c0b8cbaea562bf6ce7d582292f069e29282390be6908a04cb + +# g_scalar = n - 75 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863be +r = 0103ebfaf8e5e4a0634cd26593c80bda5e26de3db59f16e5f495f48f482a8bbfa62d9978c40779d5dcaaedeaf8c491d1f64f7c28b6533fb9148be5864b112fd7cc3e, 01b0d390cb7ad9e7712c414d8a083832c60f55ea1ff6bf2f258c4ee78f9ae73a07d6f78353e3f6549dd18fbfc206b44603f2b1b0050ff47367fbd216e93d6a7a6f44 + +# g_scalar = n - 74 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863bf +r = 00a4f1a73bfa8af128ab8d2fc86790094deee8bde74dcf600a9ef8b6d75388fc5144ac380ce38c62d0da6a4cd1d723fe5d6e1018b36382e9759cbbd9106e688cc484, 018bbc46dc33c5b48dc82f07a16a75cb6190d7ee19b34a3279658dfca43aceca643c424c03eb5d032cbced9b8b9379fb9af914bd0d326e34085243b1a2248c5feba7 + +# g_scalar = n - 73 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863c0 +r = 0175390e66e973c9ef9ffb6053390709de3609b24b24d10892827d68a78adb98922b40a38f3899d1e3638202310dcf99f233178bff873bb01b44bc16a86e871cebde, 01ff1488a84ea3450c847b5412d8ad42d95c4bc19faa96bdcb40278111057198cc7b50a14db0f0db6e6152fdef7cffa1b1a0da5953daaa63b19a66c80ec2b3e38938 + +# g_scalar = n - 72 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863c1 +r = 006e27727e5bc29c7c7112d8392ca1412dc35a73a2dd5e852310c2f8d6ef628ae8b903b5538a2fda721e0e5bdf58a768e9800074d66cf8fa119a8ad3a853c633ba6a, 004ced7abb8fb3430ace5ba8d6b3dfba0cc96d2515d683c101fdc33fee8ac062828b78bc05b5af6929da70f9d9708a981a4d8943d3ff1647bd9da0827027486b2ed5 + +# g_scalar = n - 71 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863c2 +r = 01048dad119e2014895b535e2de4ed3d087460291765e870d0faa8ef366e062d5c72df2c522f33b6498088b1c4692f2389fc41492df118e0ffecfa496f9d0d4b257b, 00c3dc3ce4f2d0460a1839f56816e0b3c2ea6ca398761787228f387f7a49522cc5201951a88baa16c2beda695e771e4c6233ba06371952df93d0017ff04570c5b615 + +# g_scalar = n - 70 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863c3 +r = 0041f8e12f5d988526f54b203a58f8847c8a14b1ed62d16e0a5e8f02ba247c755b4bfe7fc8693ddfc77e44d9cddc5697eba3408515d25eb98c55fa1d5ce0d4c8cffd, 01c0da4b83111f87f08f156ec128910d2a338628af311ca79cd7da4a1e7cba5a5fe95e86991bd5256e2757b93c8ed0ad959b1b1acff3982dd4213caf1b2e751b690e + +# g_scalar = n - 69 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863c4 +r = 001cca70b1e1ee4b8b2a5cbed74a58296e1670a12a5f1aff495183b06f4d3ab277595bb39c83dc06ba5d5330845a5fbf6cbcab41c7bf8f643a20918859a4df52a9b6, 01051176a3aa982eea7742e8aaa7f81da35140a03917e1862748d77475683cfeff56a2ca217fcd06823f20202123c47183261472132bf46440b610fcc1bbd0bce0e8 + +# g_scalar = n - 68 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863c5 +r = 0187856249ee6c43128dbc5e8632c8c616eed28a53f732ef9607126f693be764bc84a2df0c24f6226098981a65380734648e5e27dab300a7387af2dce52bdd19583a, 00e039a58b995b0f00ee63fef58d211e88f54755fdec8e357e947a5f621a6573f5c00a3e469c30edc5523a36037debd311cb24b9cd4e212e1796b0b52cd47d7794a5 + +# g_scalar = n - 67 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863c6 +r = 00897444a8e1e3eb1604a001e26e7cd100fe439f7341721f469122a6579f9a48c37be117bfb59707331116ba3478cd900addd76306cae1c59e39183c408de269096a, 01f0acc8c78b96c05d574f283d582897849d3eb65e86ceb8138e7c8a60e4f43177058a57f75abbabe04cb8eeb9d4c8a7926ecb83834974158af5e66e886fb6f26cf6 + +# g_scalar = n - 66 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863c7 +r = 00d0265c7dca66a7846dfacc8ee739c326153f686e19f14b72892428e75fd36d013292e215cdb1d2ebacedcd93e84330ac1342ed8dcb240da44a3a136d0fb21c2bb1, 00840e22c2ed414e9dfef81e32395344923868163629348c942e4ba1878300a020baa106dcee236109f9680d162228262dbdd09740041a96b62a3cce637cda293141 + +# g_scalar = n - 65 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863c8 +r = 0088cf00856250b5d1d1df9ccf56efb4cb8c9249faa77bc139118e3d58e27b0cbfe2d78bba61a023860cd080a95294b5bb57b765155778f84544ba20742a3a199008, 000b56f488542135477177aaaf9d90270b76042ee90434b46f692c668194a5b300b30621403bf1a4a06b95b0dc74885b509777d79fdbcec023ccb45adb681536a869 + +# g_scalar = n - 64 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863c9 +r = 01ab9aa17dce1112ecd14f3d7c0392fec2a67ebdbba81860bbacb614b9ccf8872d271bebd3c5efda3773a7c02c1603e7001df5aab8029a04fd41b53dc38ce320f742, 018b728f147b716dfa8c55efde83a846a792644e3374d04e23e2f39c45c96178547453e9a45eaf72b4ef0b58461c506a7fbc3e3e5a245f9ac22ba50e8fa75a0720a4 + +# g_scalar = n - 63 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863ca +r = 01c132753b64640c457fe82f799acb0a6e8e1ca21b5affa0ddc1e7f54fe4d51b08453ae99661308e125ec63996847586265e75af7d025770ac8d0f5beb6fce8888e5, 00acb81e7be685fac7e8927e53764dfa2869e561f6cd79bebff9a6a173cac55ddc7ffa2c242313e76943ec08707d0ff8ed7c509a84a4099b5d53162ea52d5fc245ea + +# g_scalar = n - 62 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863cb +r = 01f605dada534c5c8ae020f6ed49f27734e2378b0b7bc177aeaf943ae59581dd5885a38bf246fec516fd213f3fe32bfd4e19f0a8c971ef2a16969627fe31114dc85e, 00b006927d9674872cfa5ddad385b41c75c80d4f50296ca0b555af197a332e9b5ddf9d7b57ce094d691534ea9491898e1485225d281f8d5a875ce60effdddb55a84a + +# g_scalar = n - 61 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863cc +r = 0115544c4a011407425c92ca7c732a1c7d8f8b6cd17d5b660d1a4cd724b1be8b17177193c11a77dc0b39a5e7fce59a7b32d7952bad1671543c41cb53d8cfcfc376a1, 00eac206393f539b7a4cf86692d5c66378d38650b7a010bdd34013f685c512a7395ffc0872ab480aac5757cb009fc505fcd4a90dd1163c01a1db47100732b5e89fb4 + +# g_scalar = n - 60 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863cd +r = 00038a508e954435eff6ccb82b562ed32ff236f33caef52de9fdf79836e37bbe118392681661adc786c57fb6bf92d04b42fc051c3f6061c252749fd17ffbfca45bdc, 01724278274e1842b2d524858c6646ce18e964f13071c8455f1666820e5ad6a9f5a5a124e1859fa5402fb4e3320597cd7a4b28b708c8660c1a2b07b9b52c6ef16add + +# g_scalar = n - 59 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863ce +r = 0035aeb454ad31876773063c60342df29eadc7223c5d98901999aae5c2934c222920055693c9b1344c691a90342d64373a8acba8524ec347208863be8a26eb16686b, 01e7813413eb8181bc4b24f4f35f500e4580ea5b724c99f6fc0b1dd0d10c349102ba473073bb437c2f473602a02229b0013c027d3c7305001ae530b55fc3ac7e05d1 + +# g_scalar = n - 58 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863cf +r = 008bc46df1c09851ab92d53b6ad821b5026be61385c801f5277c9871b54c6764d3fdb96a728ad56c650d342a03e174a3106a5479d3ccb04647ad0f583210d81ab70d, 0026b7006d87b166b95d85b3a72bf404f1f489af8c0e0658ce55ad4ac1b01979ecb01187b41370357e58c4753c5ba35e4899321396e6f406b28e05f74d6d6d3edfa0 + +# g_scalar = n - 57 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863d0 +r = 00dc53c3e7fcf3c902e04463da75efb25ffa5a8defe72e6dbf85ef3c6d77a521b9f84af300bbde9118b2f66fd5bc64b8a5208372c8fff95c84503475330a4e9a13e2, 018b1770332b024266d497f8c1193b2b07084ec2f22d3506267649d1814c6f200c15cb7dacf2f2c42795b5c07dfa956d608c56b6ce6f39d5aacdcc528080263bdb70 + +# g_scalar = n - 56 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863d1 +r = 003cd775038527f32baf7e9056e95b0cbef7638c12398e4b8b019cc29b3435be97f601378e253fef51d25730e56267acca241df04ea2e96c1840b3f739d5ae2df998, 0187640830bdf6a3a4e88f1e5ca9e03c1edcd4fbcf1eeb0985c683e1a4ab6780b5d74ad58c83455f005d3bce79c3e57340ea1459f04a274b8dc23ef268f90bf7c345 + +# g_scalar = n - 55 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863d2 +r = 004b52fc4b6d310ce7c4b551e4155c6daca97cb03e9fd9d0a79d6472d4028e8da1a18cca93917cad27e6be17486b1e0b549a7fe9ab4bda96ac4e84ad7ccebd470f5e, 01ca7a1ab017eb9e51dec7a1586f85e584d19e60bbcee5e95f49ff04eeb582451eaaef557a76a3a5f7b32969f61cba4aca7905fc5dcff95f691585e6932dcf5c910d + +# g_scalar = n - 54 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863d3 +r = 01938e65f2a40e6899c6414997e998e0e3e1cb09728861ea138fc6d866fdc6c98505393cf55982451c97dac4214e4dbf052bf707cab63228fdfcf5ae2048a0ce100c, 009c2aa922f6be3186b163d797596d1762406bcb7ae791df8b17ddd1f1266015b42f39f96057fe824741368d46611f280343f09f82988b6d9a6405b84674472e4bee + +# g_scalar = n - 53 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863d4 +r = 0143f6e249195ee693f77b3d0ffd310306dff8688be916895fb727e82f6f948100c44e210e637209a78ed3af581fba4fe12b08153da9c98808166285684cccb69906, 00fac1703369e714d58b3a9ee5fda8aef6788238c0221bd3de96cabc817fac2ef34eb0209b0afc30c44cf09585621c4b3073fbf5c2043b541195029225222bf3879e + +# g_scalar = n - 52 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863d5 +r = 001f32e875ce65d1e6d4c39a55b518749158a4dae03e0c1b4b4a58aef6be769f0693b9259354dcee33a4f00784311b6e5993955114f2afcab7a186177e368b29f6f3, 01a5c371890487b6e7f476a1574dd11e5903d3406c4451f0b52b5f3ed92ce73c686ee18c5f9e47f6756eeeda88896328810d4294ba06760d6d256cfe66d2b7e4f807 + +# g_scalar = n - 51 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863d6 +r = 0168395ba51e278415a2025d93b68145f3ccfdf9f5bde34fe9ba3ba316cbf9beea26c2edfe6af07390df1321ae1b1054cbc0fba689ef1d7be2dda8d916fffbcc9504, 018e33ef0c35fbe5dba9c626ace6bd2c0a86ad227870de3b7f31db1a4e8b521464c36843d49745249ff37b63c9f691c5145af9ff55412c5761e771463ba122a3f784 + +# g_scalar = n - 50 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863d7 +r = 017176204957627b7a120baf0dbb1aa3f9ca5312b292e34a0cfbd8384cf1be365bc684804ab26d84fe02250a859beaced3f356b6ddab593aebf35386773de84d4766, 00538ec2a3d004f1eee67c1f815a09774fc22cfcd2c56baf4af3a210e24b7a64afb35073ecde449372a0526c2d1a462f18acc9d671de6c608fb0c0e953952237b070 + +# g_scalar = n - 49 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863d8 +r = 00a5cb98fa3c0b8c1d57cba40a63bbaba0d39d45c347ae499839f581b8b111dea9eb6bc2a2df52f6284291d8c84e2e345fa87258dab1ac4c04ca0c8cb45049efc0ad, 01ea236a9abf6f288468ebf64fe408d1eae48b611b987881a4814f8d3c626257407ca22688aabc2a8a3df3ef0d311448d44bb469c0404f4774e2f4640b95d3777b4b + +# g_scalar = n - 48 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863d9 +r = 01fb35de3b21557462ac8158e5caec62c8ccae7d6d6672102c334b3cc8a5803e72f42da0980f3f6fbfacdedc21b10ff08ee6641752bd214aea2c87027d612ad879ad, 0072cb5a53ea7866d21257aa4613b44c0a3e890d8036b2f61d3378ed6b09933d1e4519deb29b5e2681c8483ebd1f04f1c3d7a690db7fb7be35184e6a7e6c2da92b94 + +# g_scalar = n - 47 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863da +r = 00afe31f8907048afd5f9cf5083ecc35882ce4e4fe2714033ff897233106c71dd0b2381864a0b9e922ac9cee75a3a9c4dd660a56a130d1ecbb672fda63c9abd59d11, 01ed06a2379a8d8a01624bd6f3444ab009659fa0f86cb6df6077131580cd890f9b686d89f7f46fb67d5914489f0b8727da18ee35bea660ef98c42cf9a2d0e26f1e29 + +# g_scalar = n - 46 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863db +r = 00bbdb162d8284a910021998e2d14f33a8c51a9cfb9a69a8fc5709f753aaf1c4d248a6ddb5626540f81d07c09231d2ec1549f672b6d2bd57d22f64f2ae8093e738a5, 00c4790f2a6dede9101fe016383543ef4ff547e36042698beb62d131bdb4879093c8d5e7ceeed0abecd282c50bd2373281e848137f4f605a60f1bd3ebd76a69eda65 + +# g_scalar = n - 45 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863dc +r = 004969d186aca09e53b879596b8fff2bc0207a58f7f28c147cc07b2df5e3f197286779189b7df8a1f2d9dc8ea1ace5703f0fc2954607b66b70c4a32dec600fc95c1a, 0017e1364af3272c7b82b2953de0ceb60384ea79d5bdcd8f77becaa7b5e44324bf56472a4d7fd152517a19126178641cd71ecb9c0a26f4c8a9b06b675832fff6fc56 + +# g_scalar = n - 44 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863dd +r = 013fdb51df11f0b29b485f0c48a04cca16cfe1cecbe9fd57f6507c3cfcbef88c88cf761e3e73e6509ec7e77fffe912d2b367b25aa02cb1d33a5378f253cdcde738d2, 002eb373e7b58dd758fcb1b09a4c2fcc709985536f74c6530c63614123fbad483d0d5bb9fe7955dd8e2ca88cc15dc28d7b575edcbdb0665df4adbdcbc4a3450599e5 + +# g_scalar = n - 43 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863de +r = 018c0148a165ec58e4fed55022d90544d8a070678aa2ec1419af8ef0f94438fea396fc66ad7aed7d37dda3a74e7a9b3d85ca51f0b62fdee07d20713e3083224f497e, 00f54455e0f661877965140857c3855c40dbd98816e24e2ebb3285cfc87e60e5f41398029f677864e30e6cd29fd4ab831e856b1246d08949772d76a7d6f9897c5240 + +# g_scalar = n - 42 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863df +r = 0161960dcd7bd7263ed37a0a1c0aa146f918874f472a2a5de6f2f5633364979e0bda2868fa8595d78243ea20d4e83c72305e420bebfa3767dcd4b7902612a9491855, 00953e3022bcc7ea9975a3951f2efce43ede5ff19594a72e113bd259fd0fe33bc48108d72983b1c62179cdb34595d3b331f7beb02295282f8ddcc75af1cad52ade10 + +# g_scalar = n - 41 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863e0 +r = 0175a140ed79e85e24a763ebfd9d2883082552a523e4b28998a685b85f23864a60c816b931eaf495ccce4c08c3ddc8297bfaddfda1a522cc2af68e00ce952624381e, 004f696928e7aa1d2b12c90decbc35c6641854a61a7f1611a9cddc217de4dd37deee4c61f1ee130cd825fad591aae05d714208a228a7180c5c13141489f13efd7130 + +# g_scalar = n - 40 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863e1 +r = 002efdef97e46cd544553a0c67f41886ad969f67883679409022c4ad6090a169b596f85d832dc9767b2bb513eb4d0d01e18f067fffb5ac53dbcfaf456a57824c9d93, 012771d1c022d7ca6d293b3d5b97819a5957dc0039ef92006908a44cebe2f20ae901b95aca84de23ddbfb0b10861bb55684dd3efe0138a27e1f64a6e0c98c75171a3 + +# g_scalar = n - 39 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863e2 +r = 0124a0b8f411fbad60755264126356a499029e9661a49b5b907238d9fd62359c6ea7256b0cc58626a1e2ac0bf434e5fa31795b4fa1d48083af670b704119ee33b77c, 01efd69e91238cca231c9fd565bf9442c663976c84557869eab323f4edbf396f24b7e723a6014697da555c350dbea6bb189d0ded18b49671bf542723239edd749e59 + +# g_scalar = n - 38 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863e3 +r = 0195aeb1530c7d932a18922563d71ef6e7449078207b610c2c77690815bcef8f312718413823ed8d4ba112ac2ecc9d4e688346f120cb19ae965d853028d72a5f4a8b, 011f3bd2c33f6cdbdfff3f13f68a77b44fcf79ee2742b649f6f5f93a42082f1eabb7ae0645a69d6e10e11c1c365ffd4867a45d61ae2e6c48fe1f3781e53286842ecf + +# g_scalar = n - 37 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863e4 +r = 00944f64a6c21832b67139e798352ded5867c35c5d56c1d59e4229ed0ae6af9d5749bd445763a28856040e58e26ee0980df28c64e76ae4780273f1ac4d59b557a36f, 00af4811e4fdfd7548bef3b469db0d934e6d01b1900de79a07a6d9ce82594866ecfa234243db8e37c07e47a3a9b66a5fa83cce5b41bfa9677d69ced4067c6b04d5fc + +# g_scalar = n - 36 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863e5 +r = 01ad81c98659bd21e082514d5e71894c417b2a25afe471eb8ad9e81a91dac8198aa9f385da9cc679bb96e724672821b585e05323bdc821e585edae56cbf798bd6ef0, 00de8fd9193071903b189e5125a8fa4c3f073580b8abbedd84689ed7a4392370fe50e50af4f44ebffec58a2469c27967ede22d3b45e8a65674bc5388ed07baa36610 + +# g_scalar = n - 35 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863e6 +r = 00ddc300757549630a78398b62069e0ba392a267a642b593e0bfc4a780b56f97392bb4806c84fda74023ee4a618608f6b2cea92ff614b5dcc8d8dc1039c9ccd7d718, 013e42d2f80953803a33e47cbce0f3cf24405aef6c934a27a430b9d869a6e5ce24af654ee8742d38febda3dedadd119618682145b24bdd9bf5b2c14e2c10dbe1f80b + +# g_scalar = n - 34 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863e7 +r = 0122f66451d0843fb59448c58962f5b7c130eb8db26b14dbf8bf0e7d84e588581cdea866a98b697d432cc1f1f8993db2173b55ac0435b8317a8ddfeab253d54e4d87, 00412ec846bddb66cd0c3e0edebe511eac755c8c0a511f5765b72ca8283fb69a4faeaf68d6c1b078595bece7b26417156ebf9455addc248a8e432562457d0265f923 + +# g_scalar = n - 33 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863e8 +r = 00284195f0978fb969e68c76eb4e3c76f58e52086d482be92613f381421a74236df0abdbea7e2b77ef1ae9a519a57aa53ac2a5ec59186b2ed12d5ea2e1fc649f308d, 0181bc14f739a9239c948485c43796fa92c5db2aec541f9c399c61fe98969eb53a0d189a91340c2ec740ff428de93e9214c5771002a3dd74a70c9416a5c22c1ee3b2 + +# g_scalar = n - 32 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863e9 +r = 0166ba3596d20a3a469443707af94ba15b343e3e16654e068038dba7ecefb9e5ebd6ea04a35dc73596ec67d69bd6ba5d1f949cf7475cd6c5c78247915ab876e56a9e, 01b884f00b2e6bf547eee9ca18a00c1f7d9700842740a00fe6983e20fe39a3d228821dfb3247e732294648b21e3815f0c9203267369a5469e9c96a356566eb5ea955 + +# g_scalar = n - 31 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863ea +r = 00d8e9920cf30f0c6615006a58cdb7307b7db574589657c2a6617260a83ca5e7726cd65543a904c9d429fc14c1ac09cd6b220dcfb5e488e248122257d0e0c16a8803, 00d84fdc4abab599c67820f63ec5deb5cf1374abf9cd70ef37f9f51048d3412e55cf089473cdbb2eb86fec65797351b33d9c55e4268384abce7535b98838c686d2e6 + +# g_scalar = n - 30 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863eb +r = 00d087d70d11074b36bb0b6913261570a6b33cf015e1f913a610ea52dbcbae2a3e4435573f35d14754c6352756cc169eac6bf7d9b10f1b0af5956117fab72ec4b081, 013b2f8073c35023e9c97ee2846a5953d2314321e326b504242c1b8fea99f2d60eacab2a4662e282b5250d861011a279f416f96122b900fe303849b29509a862412c + +# g_scalar = n - 29 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863ec +r = 0174c644d6c94b68287db3c1fbfcb65a085ff9f45131e86265ec28bef38f7664a1305ca9bc06876d72914003ab8e847ffb9ef33d8595d51f6d962c3927618eda25dc, 00e50c583d0780be6197fa5336a4be48487dfdcc1070349bbe034a30a1486a52cb4841f1de6ad31f26f4af3d8cd28f92cfc0f9866d83d9144042e784443b7de5f3cf + +# g_scalar = n - 28 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863ed +r = 019195646effed8e5f6fec5c29642dd68d1a988bb828d895ed5d116d7f87032133e2949da6c395738534b93220fe2ad07f0b291adc92433ee2dee160709ed9985b0c, 0088532ac4ff360d60c131d74b8db07cb0b69f92c0cb9a95ad10abbc3a26de951c774cba47d7374f65d4d1b6a30d5232294a7790b212e8bebda53ce37cd458b112c7 + +# g_scalar = n - 27 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863ee +r = 0160373edf8218f9b6a762a4d4eb889e646f8739535d0e4f862c33f35187e135854d80b2123da719d48351353aeda0d3163cb215604492ec4568357643017002d68b, 010ea68faffeb2301e3a1a7d7bfe53f95c05602e6c3a30ad3c44b5a90871e5e4ddfee105b6e126d143abec478b0b5744a8d1b9c0018f62ba534c0c195135a26f48bf + +# g_scalar = n - 26 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863ef +r = 017b61bd55cc8b533222d9857bb0c04dcd1331a02407e9a8576609bc2cbefa11d6aef686bfc27593b717007102d5dd038ed768dd29c10c73e41060d9e9a7e8c685c6, 003cb25fa15b4621c4415fe693f97d41b9cc374b53860a5d645d34238db8f61e0bd94b22475be6e5b9b728b4a4d53cb82ecca4740093fa700a8d18b5533a464b7bb4 + +# g_scalar = n - 25 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863f0 +r = 0154e84c6d5c5a9a1834a35874a6f5dff9d20073102651b107b11c772c8c5499994aa91856917c36ee4d56e87e2aa648ff27e41e0eb1c25d3fb13f8c2460bf70ace0, 0132f02316e8e6efb8c51dd5d707f449f2c0ea56dc14ffdd5f380993d777eae99959211cabca8d043e5f2e1dc8f595a68d0a1121d5ab98d19492bcda431bfb387dcf + +# g_scalar = n - 24 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863f1 +r = 00968e98d1008e9d525db447ce5d4930becf0e49a0e6ec40736691391a8862c2cd7f93ad7a9b2d0e4f666fdefaa4a86f6559c710838fa0a4198f44a18c28b69bcef2, 001e581690d6c08aee831bbb899a75cad5585aaa32d09b5d4fcd4b32d47e77f5569d5b70b6d30c2f8ac97c7a1f605ecb086cfa8a319a2282260275f4ac85f4bb98d6 + +# g_scalar = n - 23 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863f2 +r = 01ae0b275d7290159376db1cacec5f547b8eee7a39ba785fb282490d234d0cdd45101f6f83fc9af5b0afe9e3f8e9a5ec53e207e1f1ac26ae5806a1c6a5ece2af535c, 010d36857da1ac7ac7f9975d7a703f97b8e3828a60076f2fa7cd4bce9b87bb3d23f1ef7bcc9e1168030bc3d84d844f822f3ddec4bbaf572dc7a927ea3cac905f2fff + +# g_scalar = n - 22 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863f3 +r = 009700ce6190c6d36ca5f1f6e66dc1eae621a7facca319d4b7aabde3122096c4089f74cbfe1018ffcd40adfffcca8b28ca1f904b3a12cae0af934e38650bb6f5a561, 0004877d81eca96ca94f9e3870529deffefb41b572db1bea063e6a1f02f93a4b97db0bf536325201fd75d0dd13ecd12eb1a3a3bcbd810159def29bce652a5aca5352 + +# g_scalar = n - 21 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863f4 +r = 01a1cbb2c11a742bd2fb3cc8550859ed3b10268bb98c2ed15e9819523e759c467fa946257eae4d62a309d9497eaed827d75b37ac920393a46d2d42ef399693c8c9ed, 00e5df6282b07114c2b7d3ed2583a1bf319d17c3ffa63ae6c193e7f5d69094505808208be5ac25b7cd6a414bc5c8d39c113a8364f0e89b63349e19f43bc36345b20a + +# g_scalar = n - 20 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863f5 +r = 018bdd7f1b889598a4653deeae39cc6f8cc2bd767c2ab0d93fb12e968fbed342b51709506339cb1049cb11dd48b9bdb3cd5cad792e43b74e16d8e2603bfb11b0344f, 013a552419c09735a49496f7d696a640f50761180ad4bef46bbbab93aaf6ad2ceedfb25c4222392b1518120513efcf257107c8334dd11163036b22cd78012f66f06b + +# g_scalar = n - 19 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863f6 +r = 00998dcce486419c3487c0f948c2d5a1a07245b77e0755df547efff0acdb3790e7f1fa3b3096362669679232557d7a45970dfecf431e725bbde478ff0b2418d6a19b, 00c82a25f9d95fde12a33c6bdb68aca4dba2982d7511d48430b533af111c9aba88d88c5269c00d1473064f13c666e9ce3c880a5b2761560401bb56f6e596a402fa8a + +# g_scalar = n - 18 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863f7 +r = 01bc33425e72a12779eacb2edcc5b63d1281f7e86dbc7bf99a7abd0cfe367de4666d6edbb8525bffe5222f0702c3096dec0884ce572f5a15c423fdf44d01dd99c61d, 00f2f9166677a49caca21c18b2cc2619c2fdb04f831f2e690daad371b5ff537b3fbbdcb514dfe0856ecc6ea2e4b4badf646258601ea4e607b02eca27be1d27065795 + +# g_scalar = n - 17 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863f8 +r = 01b00ddb707f130eda13a0b874645923906a99ee9e269fa2b3b4d66524f269250858760a69e674fe0287df4e799b5681380ff8c3042af0d1a41076f817a853110ae0, 017a97c0e2824e9a89243eee2b1b51222ef94866acb30966ef56729753d4dd5ecdc20625a9b10922f40f2d098a80e9520bdf196faa6b3d48aa0aca4634838f19b9b8 + +# g_scalar = n - 16 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863f9 +r = 01d17d10d8a89c8ad05dda97da26ac743b0b2a87f66192fd3f3dd632f8d20b188a52943ff18861ca00a0e5965da7985630df0dbf5c8007dcdc533a6c508f81a8402f, 0185c8cbc3a7d288ffe038eb4e72c2c1968decca1b3c47ff2af13835cf36b4947d3e3e7d1ec6724ab855f4cf8a53626677ad61cffb2d72e79cccad1d8d076438c541 + +# g_scalar = n - 15 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863fa +r = 006b6ad89abcb92465f041558fc546d4300fb8fbcc30b40a0852d697b532df128e11b91cce27dbd00ffe7875bd1c8fc0331d9b8d96981e3f92bde9afe337bcb8db55, 004b9725d8ea8ec6e2958319b2dccc12409c20fb6956452df345b49def9668b7a12a816f9d3766b8f57fdeb71ddcd369366db9026f33bb954226a9cbcb7f5eb8ab9a + +# g_scalar = n - 14 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863fb +r = 01875bc7dc551b1b65a9e1b8ccfaaf84ded1958b401494116a2fd4fb0babe0b3199974fc06c8b897222d79df3e4b7bc744aa6767f6b812efbf5d2c9e682dd3432d74, 01a35b6dca8a2534a42d299d6f44544b42047b8fedd471ae7d95f7b831647928129d2f887e4e4b0ca7b3ee17640e2ecc23f2a496f0ac57837b41be99607ad8ff2ab5 + +# g_scalar = n - 13 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863fc +r = 007e3e98f984c396ad9cd7865d2b4924861a93f736cde1b4c2384eedd2beaf5b866132c45908e03c996a3550a5e79ab88ee94bec3b00ab38eff81887848d32fbcda7, 00f711a7149287e01256e5e6d9255c12a5f7312af5c792abde3963859851a3e1ded53e42a2a7c74389c0d92022cae340443c9e6615506ee81608d6e5fe04fdd58e36 + +# g_scalar = n - 12 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863fd +r = 01c0d9dcec93f8221c5de4fae9749c7fde1e81874157958457b6107cf7a5967713a644e90b7c3fb81b31477fee9a60e938013774c75c530928b17be69571bf842d8c, 00bfb74a6b95b6d83f01c31e2efc597d35b89c019a548eb6b25ba1bfb54095e83f68292e77bc2790324933ef5906ae4649cf77b458dddb0a519386184e5cd7e4e80f + +# g_scalar = n - 11 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863fe +r = 008a75841259fdedff546f1a39573b4315cfed5dc7ed7c17849543ef2c54f2991652f3dbc5332663da1bd19b1aebe3191085015c024fa4c9a902ecc0e02dda0cdb9a, 016904cfc03445ded67b62f35788fab04dd6c522a99def42fb6c12d16a2b1f4647d4e43756f174bd5b54c76dcce6eb56acc923537f1c0b7e64a2a778b06d31b737f7 + +# g_scalar = n - 10 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e913863ff +r = 0190eb8f22bda61f281dfcfe7bb6721ec4cd901d879ac09ac7c34a9246b11ada8910a2c7c178fcc263299daa4da9842093f37c2e411f1a8e819a87ff09a04f2f3320, 0014a26947b6e9eb456245154c4f35d4589f3d114debbdae4df4568028759d109d2d40acb62bb2679b44ac909e9c23a814100c9769c68c6055e8d6ab4367eca138a6 + +# g_scalar = n - 9 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386400 +r = 01585389e359e1e21826a2f5bf157156d488ed34541b988746992c4ab145b8c6b6657429e1396134da35f3c556df725a318f4f50babd85cd28661f45627967cbe207, 01d5d19e736575120c60f4aaaa85d8516c71cf7759ab11e3144937da45d9c224bb91f2961a8a9fa8537bf00a9130b54027828c93d516d777f0cbc55f15794652d5b1 + +# g_scalar = n - 8 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386401 +r = 000822c40fb6301f7262a8348396b010e25bd4e29d8a9b003e0a8b8a3b05f826298f5bfea5b8579f49f08b598c1bc8d79e1ab56289b5a6f4040586f9ea54aa78ce68, 009cce6ee2aabd03b7dfb7025491877ac465bb0712161d3f8ea4af7c219ef988570e76163f55a6ee4b400f45f20f9a3a879660c456bff6b8ecac7529bd0ee0e87fe3 + +# g_scalar = n - 7 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386402 +r = 0056d5d1d99d5b7f6346eeb65fda0b073a0c5f22e0e8f5483228f018d2c2f7114c5d8c308d0abfc698d8c9a6df30dce3bbc46f953f50fdc2619a01cead882816ecd4, 01c2d2e48264555d5eef2e27ce85c6297b874a3a7d2fd7db0f228e242675d93421aa942f0d6c321361d46adc5cba6e31e5a061898ed5a2210384a3947436fadadae4 + +# g_scalar = n - 6 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386403 +r = 01ee4569d6cdb59219532eff34f94480d195623d30977fd71cf3981506ade4ab01525fbcca16153f7394e0727a239531be8c2f66e95657f380ae23731bedf79206b9, 0021fdaa52f339b0a7951d22d8fab91c4eeed554448c25a57f718dbf56d9dfe575693548d2f1a99b7362069367b21d8b0ddfc238474aa35f2521e1533287a72bb0e8 + +# g_scalar = n - 5 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386404 +r = 00652bf3c52927a432c73dbc3391c04eb0bf7a596efdb53f0d24cf03dab8f177ace4383c0c6d5e3014237112feaf137e79a329d7e1e6d8931738d5ab5096ec8f3078, 00a41910e42299fe291375d48ceeb57eed6ee327017178d1ffae1227e8365fcb8f7844976836f8d30c8bceeabfdee30a00862e0ff8da8cab0807e8c33c17214f6f34 + +# g_scalar = n - 4 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386405 +r = 0035b5df64ae2ac204c354b483487c9070cdc61c891c5ff39afc06c5d55541d3ceac8659e24afe3d0750e8b88e9f078af066a1d5025b08e5a5e2fbc87412871902f3, 017df6907bd9ed862d498c1fe8714f4b5449aade5109191cd1e4a519c01d0e66f80d860d7c1ab45c7abfaddb08af56a47a114480510fb9662e261de0b803cb91b2f2 + +# g_scalar = n - 3 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386406 +r = 01a73d352443de29195dd91d6a64b5959479b52a6e5b123d9ab9e5ad7a112d7a8dd1ad3f164a3a4832051da6bd16b59fe21baeb490862c32ea05a5919d2ede37ad7d, 00c164fc4682059d2226686079393547eb0d0eaa8057d562fce82d0754e05caa3113d1d22b30723a8a4fd2a5312e213c38f30efa36436c5a6fbda0a7735e11793f1a + +# g_scalar = n - 2 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386407 +r = 00433c219024277e7e682fcb288148c282747403279b1ccc06352c6e5505d769be97b3b204da6ef55507aa104a3a35c5af41cf2fa364d60fd967f43e3933ba6d783d, 010b44733807924d98ff580c1311112c0f4a394aef83b25688bf54de5d66f93bd2444c1c882160dae0946c6c805665cdb70b1503416a123f0b08e41ca9299e0be4fd + +# g_scalar = n - 1 +g_scalar = 01fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa51868783bf2f966b7fcc0148f709a5d03bb5c9b8899c47aebb6fb71e91386408 +r = 00c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66, 00e7c6d6958765c43ffba375a04bd382e426670abbb6a864bb97e85042e8d8c199d368118d66a10bd9bf3aaf46fec052f89ecac38f795d8d3dbf77416b89602e99af diff --git a/src/signature.rs b/src/signature.rs index b1f910e03f..b702f08fbe 100644 --- a/src/signature.rs +++ b/src/signature.rs @@ -272,7 +272,8 @@ pub use crate::ec::{ verification::{ EcdsaVerificationAlgorithm, ECDSA_P256_SHA256_ASN1, ECDSA_P256_SHA256_FIXED, ECDSA_P256_SHA384_ASN1, ECDSA_P384_SHA256_ASN1, ECDSA_P384_SHA384_ASN1, - ECDSA_P384_SHA384_FIXED, + ECDSA_P384_SHA384_FIXED, ECDSA_P521_SHA384_ASN1, ECDSA_P521_SHA384_FIXED, + ECDSA_P521_SHA512_ASN1, ECDSA_P521_SHA512_FIXED, }, }, };