Pārlūkot izejas kodu

p503 in SIDH/SIKE

* Makes it possible to use p503 in SIDH and SIKE
* Refactors tests so that unit tests in SIKE and SIDH are run for
  each prime field. It adds test data array called 'tdata' which
  describes test parameters for underlying prime field. When new field
  is added, it's enough to simply add new test data to 'tdata' vector in
  order to run all existing tests with new prime field.
* SIKE/p503 is now tested with official test vectors from NIST
  submission
trials/PERF_try3
Henry Case pirms 6 gadiem
committed by Kris Kwiatkowski
vecāks
revīzija
2f9b10c0f0
17 mainītis faili ar 4240 papildinājumiem un 162 dzēšanām
  1. +2
    -2
      Makefile
  2. +702
    -0
      etc/PQCkemKAT_434.rsp
  3. +1
    -1
      internal/arith/generic.go
  4. +1702
    -0
      p503/arith_amd64.s
  5. +74
    -0
      p503/arith_amd64_test.go
  6. +89
    -0
      p503/arith_decl.go
  7. +4
    -4
      p503/arith_generic.go
  8. +341
    -0
      p503/arith_test.go
  9. +160
    -0
      p503/consts.go
  10. +139
    -0
      p503/curve_test.go
  11. +249
    -0
      p503/field_ops.go
  12. +101
    -0
      p503/isogeny_test.go
  13. +335
    -0
      p503/utils_test.go
  14. +1
    -0
      p751/isogeny_test.go
  15. +31
    -0
      sidh/params.go
  16. +220
    -104
      sidh/sidh_test.go
  17. +89
    -51
      sike/sike_test.go

+ 2
- 2
Makefile Parādīt failu

@@ -5,7 +5,7 @@ GOPATH_LOCAL = $(PRJ_DIR)/build
GOPATH_DIR = github.com/cloudflare/p751sidh
CSHAKE_PKG ?= github.com/henrydcase/nobs/hash/sha3
CPU_PKG = golang.org/x/sys/cpu
TARGETS = p751 sidh sike
TARGETS = p503 p751 sidh sike
GO ?= go
GOARCH ?=
OPTS_GCCGO ?= -compiler gccgo -O2 -g
@@ -50,7 +50,7 @@ test-%: prep_targets
GOPATH=$(GOPATH_LOCAL) $(GO) test $(OPTS) $(GOPATH_DIR)/$*

bench-%: prep_targets
GOPATH=$(GOPATH_LOCAL) $(GO) test $(OPTS) $(GOPATH_DIR)/$* $(BENCH_OPTS)
GOMAXPROCS=1 GOPATH=$(GOPATH_LOCAL) $(GO) test $(OPTS) $(GOPATH_DIR)/$* $(BENCH_OPTS)

cover-%: prep_targets
GOPATH=$(GOPATH_LOCAL) $(GO) test \


+ 702
- 0
etc/PQCkemKAT_434.rsp Parādīt failu

@@ -0,0 +1,702 @@
# SIKEp503

count = 0
seed = 061550234D158C5EC95595FE04EF7A25767F2E24CC2BC479D09D86DC9ABCFDE7056A8C266F9EF97ED08541DBD2E1FFA1
pk = 0999A0BB085F85FDA70D04B8FCAE5A30989947F1E32E4BC4675C834CA22CBA08AE692935EC1C8AF2B5BF377EC17E79D09D57DB5828C6F6E1C1A64D0F30AF3D2F76D9D329108E01D027D856EC44B23A437872D538F2C26E48723E2F8E46A2E7A364C92D997C7B801ADA199EEFFBAB1161B29EC7CB4440DA0E75407F4CE02E37BDFB23154C513BD30CFA5F04D2E253357CBDEBCF6F539965C8B8B5F350A50526AD1B350A0220394AA33B18EB3E765F059FA7CB5585A9D18C8B198A07DA0E9CCEC61D6F43A4661CA6D8175C23A8C86DD30409607D6EBFA3639CDFD12599F9BB073AAEA9A1CC95FF0D50839049EDFAE95FD10DD4F27EC3C6921FA96DCB0366D9C086A8E8ED15390C4827E5672D167EE238229B188C0590E1FA38E8A74D34B6D17ECA1A64EA76AD65413F147DC43A762D69D072DADF573C13A7C983F9362D59DC6E37704BA0F15637CF6BEDBBD8C1051366FE4C21E03CC55964C0E24F6F8D738DC763B7E443122C63751F6D8130EADA4203A9671865F8D459035EAC2E
sk = 7C9935A0B07694AA0C6D10E4DB6B1ADD2FD81A25CCB148038626ED79D451140800E03B59B956F8210E556067407D13DC90FA9E8B872BFB0F0999A0BB085F85FDA70D04B8FCAE5A30989947F1E32E4BC4675C834CA22CBA08AE692935EC1C8AF2B5BF377EC17E79D09D57DB5828C6F6E1C1A64D0F30AF3D2F76D9D329108E01D027D856EC44B23A437872D538F2C26E48723E2F8E46A2E7A364C92D997C7B801ADA199EEFFBAB1161B29EC7CB4440DA0E75407F4CE02E37BDFB23154C513BD30CFA5F04D2E253357CBDEBCF6F539965C8B8B5F350A50526AD1B350A0220394AA33B18EB3E765F059FA7CB5585A9D18C8B198A07DA0E9CCEC61D6F43A4661CA6D8175C23A8C86DD30409607D6EBFA3639CDFD12599F9BB073AAEA9A1CC95FF0D50839049EDFAE95FD10DD4F27EC3C6921FA96DCB0366D9C086A8E8ED15390C4827E5672D167EE238229B188C0590E1FA38E8A74D34B6D17ECA1A64EA76AD65413F147DC43A762D69D072DADF573C13A7C983F9362D59DC6E37704BA0F15637CF6BEDBBD8C1051366FE4C21E03CC55964C0E24F6F8D738DC763B7E443122C63751F6D8130EADA4203A9671865F8D459035EAC2E
ct = 89611D5DB90BAA5BCC1F076B0B1FA275D8EAB09FD4EBD8B5D05D0864F95815CEF9F7952612968A459FA5C5F3791534916EC4F77C44CC59ED0EF96E44D45020B381FFD4F974AF89D41017C95B04E852174307B629D8479737BF3B5A597FD7689B00D2078D0D4D45166C49ECE65FB84D00EFF1E0A70D5727306865EBC8FF25C6F718BD4EFCE230A9317A01ABB35DBD00004146B9C9EA33FF4C43F541E0AFC23A7409F769AA8B25FF0AA6A3E41A7C7ADBD02043DAE72B794F1EBF123DAE1E06782D9F1287EE5D88813BE64BFD0B67D751AA6AAA6FC3B27D3F7FD9766D9B9AA5EF3CD4061898F37D916CD9378931EBF0234F00932200F2489ABD35944328D09178104970E9BBE25FA81ACA265DACF045A81897246A347B6CCCF70CB65E375A6F629D847A48AF98DE8165C3AFA882B5143CF2F453B5A39A5329E091542EE40B5D16367808F536EC39761B37D635943D312FF1DCDAF2254FA45D549DADBF5A999CBF1D9985908AA3D740DC59138EE19ABA882B3D4758B72C0DB81D681AAE44096514DBFF5E9512687025808CA10F45D395DF515FB0
ss = 4346C330BBB2526CECFCC8238FA86913

count = 1
seed = D81C4D8D734FCBFBEADE3D3F8A039FAA2A2C9957E835AD55B22E75BF57BB556AC81ADDE6AEEB4A5A875C3BFCADFA958F
pk = AD4291FE871F32E213A04D25DB79BE6B3BCEF20277FB47F397549250571F95B7773E3F84823D84C8E7699666D8B8D6C962E0A4B0E501DCBB4F57DEE9AECA016A701E0361EA273464DE6FA0880F61C0D12014D27A0C175FF5ABF7E68FA8BBAFF46D2B3EF3674CA1BDA4973EC7F3627471A021EF4A5BB642FCC19D583C133BE1C66B36F46C61DCB53A0914A9AABABAECFCC5886AC2DBC44C7F15A3C6F584C8CB017D692854EA4006F8ADEA0DDD48EB69CD3F3373AE9F30155F2D852250210F7A53F4C010056EDB905BB82C39E4C9E56B2FE1187F89774F284D0696914B0341EABF43010AAF508D216064F965C7E2ACA80B82762D8F95F3672227CED31692FCB67952B85B3587F73DA0FE1D1C8D22A2446ED63711FB0C0ABFBBBF0253ECE1A6757AA10183479448E0A27892A1C5AEFE3EAE5DC55E79A514D73BAB8B19F74E607F30303A14C838BFE8D1CEAC1F48F76AF8DA5E9C3FFE67A4EA33FECF61FE8B26C7642AD02CB522BB5EA9E9F1935E7EA590D52220EDA948AE7EE03604
sk = D60B93492A1D8C1C7BA6FC0B733137F3406CEE8110A93F17003271531CF27285B8721ED5CB46853043B346A66CBA6CF765F1B0EAA40BF602AD4291FE871F32E213A04D25DB79BE6B3BCEF20277FB47F397549250571F95B7773E3F84823D84C8E7699666D8B8D6C962E0A4B0E501DCBB4F57DEE9AECA016A701E0361EA273464DE6FA0880F61C0D12014D27A0C175FF5ABF7E68FA8BBAFF46D2B3EF3674CA1BDA4973EC7F3627471A021EF4A5BB642FCC19D583C133BE1C66B36F46C61DCB53A0914A9AABABAECFCC5886AC2DBC44C7F15A3C6F584C8CB017D692854EA4006F8ADEA0DDD48EB69CD3F3373AE9F30155F2D852250210F7A53F4C010056EDB905BB82C39E4C9E56B2FE1187F89774F284D0696914B0341EABF43010AAF508D216064F965C7E2ACA80B82762D8F95F3672227CED31692FCB67952B85B3587F73DA0FE1D1C8D22A2446ED63711FB0C0ABFBBBF0253ECE1A6757AA10183479448E0A27892A1C5AEFE3EAE5DC55E79A514D73BAB8B19F74E607F30303A14C838BFE8D1CEAC1F48F76AF8DA5E9C3FFE67A4EA33FECF61FE8B26C7642AD02CB522BB5EA9E9F1935E7EA590D52220EDA948AE7EE03604
ct = 0BA524F9F01CAA22CBFBFE744AEA8D2C0CD534291424B613077422D25435024577ACDF49356B43BA0475428354E3E294070D57AEE29DE81380600456B39F0E0DC959372C94B883A5D20C5EB879B54D825CEA693AFCADB8DEEED43A51B5FFF177D81D50B13F5357837FA8B349177E0B14FEC790989E2F6820C9054914F51C9B4BC773A527246FA13778E28A41A9FABDA71C3C2A9C0BFCA7393A4F271F531CCFD3A40F86273094D1EACA7541C037D6EE62D7D370D4670731F845EDA1E920263EA9E0F574566048270DCB9AB07D7B3E565619AC2BEA499CDF52771C09AF3B61B02781D13A28966DCB117733C31A4CA361A9AD5526F892C47F03BDEE462103DD14B8CB18232F174C028AED04306650299F66A929ADBB1EE7FC22D03FD2BAF88911EFF4B74C3762724E9E5A33DBE27EAEA743540EB75E9C7625FA519C12B67C1E88254E4796801104ADF702B4D2BB9D2BE7D268759630CEE00FD50A1A0B43696B1F96708028C06AFC2C3B4FBEBA40B4E9496B4A9D333A6A100362CE0EDB5C07F12FE29A22D1A86012DE9DE39F394C5ABE32444E7B
ss = B5DB5992AD277FE747BEFB677040FFC0

count = 2
seed = 64335BF29E5DE62842C941766BA129B0643B5E7121CA26CFC190EC7DC3543830557FDD5C03CF123A456D48EFEA43C868
pk = 8E1924039A1BD47E21BC95C9246B5C8F3356DBD251DEC594A4BEBA5F7B1A2AD95A9FC3217E70759B65CC8F4A643A0ADC36E1C0A29FBFD7A9D7496DDA697435BC5EA3B6E72500B54D7571253F57EFA19BA3EBF5D6C0F6B042CE15B8539F7CFAE79404AFE5DB9674DC7428928DA8855E4CDB348E847FDBD1907D3626FD7F30AE8F6C24A58E8B50CB6B6A25E558A9F78CEEE69430FB0FFFA805FCC80B1B011AED52F99E63FAC6C56792BF6C19433250BA25B6C15D5E9B2DAEAE9DF9473117FA8EBB626BF75DDFEE7DB8ADE1FDF18076E4C17FA1261452608C288379F728F3299B29CAE383B7418501E77F6CB73D0B96E70E44006B143B1687D1109CB023BD66ECF6EE8DC9A8BADF8F181475BBC2B4F4B4E4C965CBB8590EEE3AF26A6A0F10070D983BB5E3CB59C0C13917DBFE58269030116A1A321EF2C1894D17822D2E91814D4E5A6A3B90FA015014A6F59EB95962E40FFDB26A4B3C5B70897D803DB398319AE7F956231C5890D7434C1CD06A95A6E13BC4DAF6AA1E4F69ABC317
sk = 4B622DE1350119C45A9F2E2EF3DC5DF50A759D138CDFBD64E82FCC97CA60CCB27BF6938C975658AEB8B4D37CFFBDE25D97E561F36C219A0E8E1924039A1BD47E21BC95C9246B5C8F3356DBD251DEC594A4BEBA5F7B1A2AD95A9FC3217E70759B65CC8F4A643A0ADC36E1C0A29FBFD7A9D7496DDA697435BC5EA3B6E72500B54D7571253F57EFA19BA3EBF5D6C0F6B042CE15B8539F7CFAE79404AFE5DB9674DC7428928DA8855E4CDB348E847FDBD1907D3626FD7F30AE8F6C24A58E8B50CB6B6A25E558A9F78CEEE69430FB0FFFA805FCC80B1B011AED52F99E63FAC6C56792BF6C19433250BA25B6C15D5E9B2DAEAE9DF9473117FA8EBB626BF75DDFEE7DB8ADE1FDF18076E4C17FA1261452608C288379F728F3299B29CAE383B7418501E77F6CB73D0B96E70E44006B143B1687D1109CB023BD66ECF6EE8DC9A8BADF8F181475BBC2B4F4B4E4C965CBB8590EEE3AF26A6A0F10070D983BB5E3CB59C0C13917DBFE58269030116A1A321EF2C1894D17822D2E91814D4E5A6A3B90FA015014A6F59EB95962E40FFDB26A4B3C5B70897D803DB398319AE7F956231C5890D7434C1CD06A95A6E13BC4DAF6AA1E4F69ABC317
ct = BBC0929CAFF99A0403167129E6735AE969CB2CA5AA30A992776FF0770BDFAB12A55983787B52D11FDDD53DFA607CF9B9C98AD0736E287967F8AF4099E06E2B4AE32885CF5A40C1DE310073F35C2FDE947484DB9F68A58E6100DB0F5E3CAEFADA961474061E1DF707464E1F746CE440C9F4E6FBEDD68A0E8111EFB3B1C83A9809136BE9AD5C743BC2141BD6F5CE434F0A88D30F3F5EF7BC599CE5E26DBF0992B57125BF4C9D76ECEA3F85A11B1E4E2234B69F64DEF6D3F243CAFE95B9061D6A9F45FBBD7603D028E49662F2DD201A37772ABB83AD12C9A724AB9C27B18017639CF8D3617B190073D10E5C0382611956422680EAD702A57B5A97A8E209F14973B98A5052381D78D33B1DA16A298F1E29EE07DD94484A54BB5DC685F7FA6B34892D065C88275DAB9FF377B9FE4CE8EE2A0700501E5CFB58887662A72651952D1A99379BCF8A94A2EDC96B78A8DD33CBBD056AD2A945002E3AC10576614D9035D1782DBDE8176FA274CFDB1A39CA4C44500602F9F1D725B13C366B1AB92EF7B33DBDF38552E70803C8C206E2DDD425BB555028B4
ss = 117914C6EE09FAC850DB582DEABA6546

count = 3
seed = 225D5CE2CEAC61930A07503FB59F7C2F936A3E075481DA3CA299A80F8C5DF9223A073E7B90E02EBF98CA2227EBA38C1A
pk = 0D775DDDAEEB4CBB584FC98FB49F2FF025F6F5E1BACC1D796F39826A61E0B298AE063409423A05755A03094FD1A82657DBC66B2CFB4FBE6ACB2F82AEBC353AC62322B564FD51822D15457F5BBA29942E1D531F5FBD3076AD30A77EBAF3DDCC6146808DB3A441D19DBC09B6C9DF345B8651B9803166F62643574B34D3E437B2E6C905DE1DA557C29F1EDFD843A2F0792D82CAFA07AC6192246847432D6E1DAA196B7AD23369EE60912908D76CFA685B803FD5FE239BC8BD611F76D7AB31F592A1B7DD6C8B10239A6339240CD1A262C92FF15DEDA3C57CBF2FCDE978E0A566A4A7E356ADC1EFC8036076665BDD8F9759B8E773AACA945C63598321C530525D91AC77AE287444FD95D72899326F74EF843372C1116226A4E06D345C41C4070C3EEA2ABDB96858076C761DAF8302FEA069761CF6954D380EDEE5AFEF17F019353085A32873FAE1C1098872E83ECF47AE6AFD1613E506BD80C2E9133619A0B9C78825CB2349C6002E4260008CF917A8D8265A44ECBA57443708ECD937
sk = 050D58F9F757EDC1E8180E3808B806F5BBB3586DB3470B06DE950541FD53A8A47AAA8CDFE80D928262A5EF7F8129EC3EF92F78D7CC32EF000D775DDDAEEB4CBB584FC98FB49F2FF025F6F5E1BACC1D796F39826A61E0B298AE063409423A05755A03094FD1A82657DBC66B2CFB4FBE6ACB2F82AEBC353AC62322B564FD51822D15457F5BBA29942E1D531F5FBD3076AD30A77EBAF3DDCC6146808DB3A441D19DBC09B6C9DF345B8651B9803166F62643574B34D3E437B2E6C905DE1DA557C29F1EDFD843A2F0792D82CAFA07AC6192246847432D6E1DAA196B7AD23369EE60912908D76CFA685B803FD5FE239BC8BD611F76D7AB31F592A1B7DD6C8B10239A6339240CD1A262C92FF15DEDA3C57CBF2FCDE978E0A566A4A7E356ADC1EFC8036076665BDD8F9759B8E773AACA945C63598321C530525D91AC77AE287444FD95D72899326F74EF843372C1116226A4E06D345C41C4070C3EEA2ABDB96858076C761DAF8302FEA069761CF6954D380EDEE5AFEF17F019353085A32873FAE1C1098872E83ECF47AE6AFD1613E506BD80C2E9133619A0B9C78825CB2349C6002E4260008CF917A8D8265A44ECBA57443708ECD937
ct = 1823E1425DC55E1B55078BE45A2E37E3AE4656889A0BCD74F5B8596117B705AFD7F4FA945DE51E68B2C07431C6C669CABB7712D65116F7F2A4435FBFC78525EBD02CE72F590B9347DF08BFE7F59B741FB352124C7A058786D38767237E0EF23F7E60FCC05846AC8CDC692BBA5899441095DB899621806DD035870F09B60815AD492BF0A9E13E0D65066285E298F567A19D54734C95F325591C321B508ACCC4370BEAE4ACC6571EAA63600170B39C71DF297AF880F508F7849FA2B60B3F23A667D707F5C22886D0159575EC15A187D1298F3A9ADC10F20978E76135D4385AB8876B7E4CE54D15D20245B62940175629C88AC888F87143FB8B01916B2DADC26D341D1FFB37EF9B6D2DD203CC8B84629512E270189C9788A900D2821538A38C9860746FCF2506BA4D9EFDCEF2ACA52814811D24D93E390CBDDFF32F01B171EDFE33FE1AE17627EBE3F8EFFE9E47598A261474E66BF1F117BD545DF8B8D5FF2CF121E866109AA8A46306FAAAFFD9EC7C280AA99B05366BD36F22CA340E267CDEF68066DDCC8EA9D1F75C528D6F40F08030D9C8A6
ss = 05285E8F9F81C749D7EB42CE41507CC6

count = 4
seed = EDC76E7C1523E3862552133FEA4D2AB05C69FB54A9354F0846456A2A407E071DF4650EC0E0A5666A52CD09462DBC51F9
pk = 474E2B7B828B4169F32429274C864FBA82675AD37A5502D3A5D7009EF2D98EFD6193A5F0A3CE9F244061776E92A258ACD80E0606A6568E7F1435CBF70E4015B0AE3322705122E0D6F889F408A26C97B400E3135803DC00A0ADAEA36B751A2DB7043409DD1CA49568C9D324D1FB02280D179149F77A21C057933C6C44C733834619DA448A1ADA5D5DACE97FA5DE742B1600EA04360224BDED07E02E084DC1AE9FE1574F46604DEBD9773D5FE85EC25A72E700932FDBA0C41EB3CACECB07AA221D497894F93570B65EAA58CFE62586F1155D189A354FFC9D191F64E0054365B1FAAD6B4F8024E3C7CCD3A673D4FAF69D062FA184C4D1F315CE9FE4E22D7F393C6E36C4A4C9829ABA6BEF38BE6142E1D705A37372526E1EFC5979E25CBA54CC36687D51431391003E784856819748D176AD0EBDA5AFA3B6BCD7881E374BC822D59AA603F77563DA71F77BDC648F5BEBC0B708863D293A9A1DD03541E84F863C86497CFE57C19FF05758C14DD1514C4DCD96718CEC60AA4E0CC6941D
sk = 66B79B844E0C2ADAD694E0478661AC46FE6B6001F6A71FF8BE2D3C64D38269A1EE8660B9A2BEAEB9F5AC022E8F0A357FEEBFD13B06813804474E2B7B828B4169F32429274C864FBA82675AD37A5502D3A5D7009EF2D98EFD6193A5F0A3CE9F244061776E92A258ACD80E0606A6568E7F1435CBF70E4015B0AE3322705122E0D6F889F408A26C97B400E3135803DC00A0ADAEA36B751A2DB7043409DD1CA49568C9D324D1FB02280D179149F77A21C057933C6C44C733834619DA448A1ADA5D5DACE97FA5DE742B1600EA04360224BDED07E02E084DC1AE9FE1574F46604DEBD9773D5FE85EC25A72E700932FDBA0C41EB3CACECB07AA221D497894F93570B65EAA58CFE62586F1155D189A354FFC9D191F64E0054365B1FAAD6B4F8024E3C7CCD3A673D4FAF69D062FA184C4D1F315CE9FE4E22D7F393C6E36C4A4C9829ABA6BEF38BE6142E1D705A37372526E1EFC5979E25CBA54CC36687D51431391003E784856819748D176AD0EBDA5AFA3B6BCD7881E374BC822D59AA603F77563DA71F77BDC648F5BEBC0B708863D293A9A1DD03541E84F863C86497CFE57C19FF05758C14DD1514C4DCD96718CEC60AA4E0CC6941D
ct = 4013B299AEA7681CEE91D42743D3DF7AB243DBC85EBF412BD0E89030BA5F5A8EEFA497D34725B8CDFB7DB19ADEF33DE1C20A75EAD433A325E250512E8D281EBD14C46FA4C1A9388C1CAB40FAF99022B9CAB070979DDCD55D70E0BC6672ECD76FE1DBAD198632C5187561A4E21A9AC58CE53145C062926BBDB2FA73F80B22175F2C2C18FD905FAB414EB5D3801C202CFCF17E61486E6FE23F2587576E9395EF2EF02B6F495A845A8941D16D5E9D5F76D06D5CE13D3D9A953040EDFE200B309B9B7C4DE0171A1C02D7FCD68C5B350A592C8A781866F47B17B584C07030A5CF7B6F0EAEE34C0EBD962154CD625E1E2832CD4479619E6FD338A44B73D90DDF1C468255404EB2DA87E8B55868E1296E1077AE8F894A18A105393B1D38803F697E78870173C9B38BFEDC7A9A2E6E231C066E11200BA558BD8FA1A4A2CA0FFA5FBB8C709F6CE6354570BE9E819E75857CD10ECCB3D7390F504212320B1F0ED2DEBC11CBAE1878273927E51D2B22B8C9D39E4C8714DD6EFC02CB42D2F3330B76D8EE6471524A7C89A436D5200430F89C4CD552CABDAA
ss = 869B23C6147548D2B34B169E3C94A460

count = 5
seed = AA93649193C2C5985ACF8F9E6AC50C36AE16A2526D7C684F7A3BB4ABCD7B6FF790E82BADCE89BC7380D66251F97AAAAA
pk = B2D12F4C65DA60F9F0ED6436A28DF7A635894D7E8B2A523C95A04953AD860D6B5E046F8FA0A77357D05F16F4289BF2F27B23D6E66DC1E8B3BBCEA68AD11E362D4FD6A6861B3F94560EF7B7FE6764689746976D206B52ADD67C1813807699606A442FE4F5B62761DD9B2228DBA10E4FD2B80902FC29720DEE79B192CCD93BCCCFCCF7ED2F4DCF5AF81150CC12C67AC2FF6AE02BC3F5C2E581617EBCD9765C158431B33EF7A563898645CFB0B772577EF8EC6830B37E1F660BE894F9522DE19721B6407BA0551CD6339E9B0390883156C187DA72185C91048F93262D6AFC32798C5F2A671BFB1A16822BF2071E721291C0AD3B2C544C12C93A9547EF22E2213A870325F060F6FFDB8445710AD57786D9CC983154640632A70435A7156847B71D85AB49AEAB9EED5E4B6450D0BF660B3691DA8673CC6AC4B17A7A78150859D083F8569A117615C8EE892701E9412938CE1BF6CFC2532B85A1AA293F9FFD30D43EADB5898E8848C3EBD8CE854EB0401F47FE4369E3AA795C180F0A15
sk = 7EC408F52C9AA723D0C41D9987682A5F4CE6C9DA7CD0215AA08CCF451B049FD51D7A9AD77AE14A81569DF8C9BD3A8F1EBEA86FDCFB823002B2D12F4C65DA60F9F0ED6436A28DF7A635894D7E8B2A523C95A04953AD860D6B5E046F8FA0A77357D05F16F4289BF2F27B23D6E66DC1E8B3BBCEA68AD11E362D4FD6A6861B3F94560EF7B7FE6764689746976D206B52ADD67C1813807699606A442FE4F5B62761DD9B2228DBA10E4FD2B80902FC29720DEE79B192CCD93BCCCFCCF7ED2F4DCF5AF81150CC12C67AC2FF6AE02BC3F5C2E581617EBCD9765C158431B33EF7A563898645CFB0B772577EF8EC6830B37E1F660BE894F9522DE19721B6407BA0551CD6339E9B0390883156C187DA72185C91048F93262D6AFC32798C5F2A671BFB1A16822BF2071E721291C0AD3B2C544C12C93A9547EF22E2213A870325F060F6FFDB8445710AD57786D9CC983154640632A70435A7156847B71D85AB49AEAB9EED5E4B6450D0BF660B3691DA8673CC6AC4B17A7A78150859D083F8569A117615C8EE892701E9412938CE1BF6CFC2532B85A1AA293F9FFD30D43EADB5898E8848C3EBD8CE854EB0401F47FE4369E3AA795C180F0A15
ct = C3DEBEC051D27460D02C88A69AC8C12EB72C9ED9A68CBF4141550B6FD0DA2E6F21A876E1D6E959758BC520C1FA5A680231838D0B73260911836DC3783FC71338FEEEC913EECE44BBFF2B615008DAAEFFDA6A8F5EF9719B1B8F42628D844FE1E2171D43515381B5DC08F185455A2FC2481D3F2E7DD06FF9B69F02146A0E0BCDA44F75CEB91D981BEE8D059DC7EB6A178756BFEA33A2E09AE09F7DAF043932971A7EBBD476FB8D319875E2093C29B28FE838DFE4097444A819279E4355187BBAF998D9941A045BAB9A01804DCBDBE0301DC25DCADCFEED4C63991F21593DA24261997E377508700D71ED03381FE7D448B1CF5DB07C444B9E4B82FDFC3B5931C4FD3879BBC211EFC9F27767AB93DB6B3658314D26E8827B78A795DB07F5BC16135F0F9215A3AF612698A086773228285D9A66335FE208E235902840207EEC880A23F769A7FDEDB51B78FCF6D2D540E08C4533CEB814137B2B0D32E7224B6F25A28E49E7816D0EADBB00AEED66FB387EB312D0F3DE4D2BF64A440D39BF9BC69444058BDF5FB72D6715B7456C232D8520A1CA3D53
ss = 407BF6423B119BEA303F7DA6FDCB1CCA

count = 6
seed = 2E014DC7C2696B9F6D4AF555CBA4B931B34863FF60E2341D4FDFE472FEF2FE2C33E0813FC5CAFDE4E30277FE522A9049
pk = AF2E1D9620704112613F3F0AC4798CCAA27BD6117E5F4FF6CD924EB10DAA8EE9C86C897003F3024BE2968984DBB3BAD1EC7DC0F0E121F6885A6CC494ED9A28D6DEBB39C7CA2FB7A249A11CE998478FA344BAF1B283AFA756E912E07742C26A6BFE2A338E5678FBE4917C0F33B31121E73EECD48A961EA493297FB6B3831086EB27EB56D7C3346676AE1B4CE48883E85656EAB24F8DF3CAAD84AAAAE535B76CB775E1CB3BA30C5CD695160E0CFEDDE3D3EB7AD7A428F26DA03D0D6E7A28A6BB576A98EA8099559118AEEDD6FAB5837C87D16ABCC6DF75F7C5D6C3788A50FB04F08210E1D9263C6676EC6A2B4CB1ECEF254AE406F0E01686978D1C891CBAE5D9925BEBB8DD4658FC1D847727E70D4CA6F9DF0AD6AF18F315FDBF0E8B8CB80FD1DD8B069D285D13B021C3E1E5D7AA26C778138A667572F61B264BDD0826FC6A9725FD95874C3989F7FA08F6C35A5ACCC0E85E684DCA24E04E8062353991316231C7BA52144D5373A5B9FD3DA8A90DC135FE8F6923492CA8B14C5111
sk = C121915BFEF6ABDFC177DAE2F5A24218F9ABDA2559AFC67484EF52DB5EAA6DF8EC3A0BC5FFA730DB0DDE8C5F38F266D5C680A78D264A7B06AF2E1D9620704112613F3F0AC4798CCAA27BD6117E5F4FF6CD924EB10DAA8EE9C86C897003F3024BE2968984DBB3BAD1EC7DC0F0E121F6885A6CC494ED9A28D6DEBB39C7CA2FB7A249A11CE998478FA344BAF1B283AFA756E912E07742C26A6BFE2A338E5678FBE4917C0F33B31121E73EECD48A961EA493297FB6B3831086EB27EB56D7C3346676AE1B4CE48883E85656EAB24F8DF3CAAD84AAAAE535B76CB775E1CB3BA30C5CD695160E0CFEDDE3D3EB7AD7A428F26DA03D0D6E7A28A6BB576A98EA8099559118AEEDD6FAB5837C87D16ABCC6DF75F7C5D6C3788A50FB04F08210E1D9263C6676EC6A2B4CB1ECEF254AE406F0E01686978D1C891CBAE5D9925BEBB8DD4658FC1D847727E70D4CA6F9DF0AD6AF18F315FDBF0E8B8CB80FD1DD8B069D285D13B021C3E1E5D7AA26C778138A667572F61B264BDD0826FC6A9725FD95874C3989F7FA08F6C35A5ACCC0E85E684DCA24E04E8062353991316231C7BA52144D5373A5B9FD3DA8A90DC135FE8F6923492CA8B14C5111
ct = 34362B4166EE921E04474293CD7A38938D291603708D9702F1F385D2873A4116D304724A74C681E6050E663CEDF864FB30DA124DC40F86AD7BF5ABF17A55246D704A742253061F382ED3D86B6A779C8A6E65DCF1B9CB36B373E22ABF60B36F91126DC3AF3529DFF5E838C944649C9E70456BB8B2E3D6A1A229954375251A01D009C7072A330E528EC0ADD3A4DC1E3F310C58F8F8538E4B0B9F2CF694BAADD13B6E9B14BED2C1EC19B6EAA0B0E74DAEF62E46DF488FDE2C29D4B39D1940D48E4207A908A48BBCA50741920E5839F14C77F30ABD36C6FCBDDDD7ABDE4FD125652E41428F8EF7FB186F1D1EF69ABF93C43FA28CE181D3C878E09AD9E0312D2914A5E4929730CDF41525AFE2232DAB9BF7C39AB3FD0C60CD3E0BFE97539D474239A61636611FD084DDB74DB809800D7BA122B88817901283C7C6B2BA36D1AD812CA2D9AD5B32E514048AFB975E62F67A29DEEA43E2DBFEB943C5B694ABDE3351EC880581BEA351E22A5BF39615DEE710645FDC178FE70223A2D9C51F216AC6374239C174F35906A5CD5E5A6E38B6D6E63ACBA747
ss = 257AC29EEAC6B952F887E5A2DCAB8F2C

count = 7
seed = AEFB28FDD34E0AB403A703B535296E3A545CA479C1D8148E2D501B3C8DD8B1034BD986F13F1A7B4671BE769359FD2AAB
pk = 9D8799BCD44AC862C94312BB42037FA60B7DFF7284346055D056A685B00DB94014AFE58A48045E39C556648B75A9045D9D91C1CF91CA59FB7D60150174471295C96B426E086FC2DBCE4726F247AA0165B8E69E7A7D2A9BB32EBC311C2D560E79C771CF9494F55DF2A9C3C64464F119F8668E759F8127DF303D37A8F724347E6117F244AC23DFA7EAB9E5E52BAA1EAB369A1A618EDE8E8D9DF983E8CE30460D7FC60A6DF484FC99D994A01605BF8B0D7044C91C842CD8E111E3A1FB162BA570DB528EE85D9831DC1A5711038343F2267C26C90829C6D82C4CD93A665689921DED487F8E9748D62F6ED4BE0B130B8D783029993493D042FB88FADF0401CFCEC03A9A8B303D5ADCC06A3A111705193216B6304671D2D71088CBD0BE774219DCF839F2577904294F49146E18415BAEFA4F25B59384A21904952E14101B4E5775A92F880325045CA30D17C711A758A03A7424F1846CAA5DCC065953E76DF1541342E3BB536628AD3B98AF30AB4031D7FEC19F31AD3F4710C80AD10D32
sk = D86634ECF96CC2603761E284C0E36734CEDEC64E7FF4864699DAF37400CFE59841AFC412EC97F2929DC84A6F3C36F378EE84CE3E46CD12099D8799BCD44AC862C94312BB42037FA60B7DFF7284346055D056A685B00DB94014AFE58A48045E39C556648B75A9045D9D91C1CF91CA59FB7D60150174471295C96B426E086FC2DBCE4726F247AA0165B8E69E7A7D2A9BB32EBC311C2D560E79C771CF9494F55DF2A9C3C64464F119F8668E759F8127DF303D37A8F724347E6117F244AC23DFA7EAB9E5E52BAA1EAB369A1A618EDE8E8D9DF983E8CE30460D7FC60A6DF484FC99D994A01605BF8B0D7044C91C842CD8E111E3A1FB162BA570DB528EE85D9831DC1A5711038343F2267C26C90829C6D82C4CD93A665689921DED487F8E9748D62F6ED4BE0B130B8D783029993493D042FB88FADF0401CFCEC03A9A8B303D5ADCC06A3A111705193216B6304671D2D71088CBD0BE774219DCF839F2577904294F49146E18415BAEFA4F25B59384A21904952E14101B4E5775A92F880325045CA30D17C711A758A03A7424F1846CAA5DCC065953E76DF1541342E3BB536628AD3B98AF30AB4031D7FEC19F31AD3F4710C80AD10D32
ct = 1A64D14D16BE965F9FA2C9F5B7CA68EFF6742FFA2E2E4956A56B1E7D6387A7AD683733005EEB25ACBC494F49170619922F9AFCB1657506F12E6C8C98B1A737D5616749DF1696D3EE2EA5AF09BF248D856C30B080E97582162901B77CCEF5F4018A2B4E1FB2C1F386E1520561FBAC27437B114DD8C418D6FA7F6294C3E738A16FABD12BFBEE09BF4A7E5CD3DB125AC6EC77EF3EDCCD145A35B220DE487A9268DCC116942F9A91676B3C1EEE79642B4FE51162403B75CB11C3F0F0A22D1066B9AABD5BAA4E43A182156F61FF016E5E6787707822A4A70E488ECC7DAAB7378E7F21EF496272AD3F8DA95A749084B4368A14FA34D56F59F3D18305E3B50062E7EB430B235FEE4C45A0F119348096317E943E312237F6E780AE6EF738E0634581FCD80190ADC28539BECA88E6F233145B37B67F749E8267178011E5AB1F6132CE86FE84ECCD6A6BE281CF080EC8AFA6EB9F81BC47113FFDDEF48CE5B0B55337CBB482D49E1D22D44BF1D9CA88D784B3C7B0EC010C7647304735A37809C253AD5D0399C47C09DA91D043AF50A6D43C7A61DC51017B
ss = FF33202E25308946B34171420C1FFB67

count = 8
seed = CBE5161E8DE02DDA7DE204AEB0FBB4CA81344BA8C30FE357A4664E5D2988A03B64184D7DC69F8D367550E5FEA0876D41
pk = 973156DBFA8D13A58D7300D6665CBEF008ABC0595D56A0FF8DDF0214CEBC3667F5CBFAE3F479F9799BE047BFF15D92AE767939248BE053AE987BC2806E741B3DD8B5C8400EBC7AFF3B71D8767FEA8BF85CE2729873428F5E3933ECEAFB8D85559FA5287C484E838FF722ACC95412CA40957E9DD5FD916973FE885F8D78084393BE80103C32690E14CA286E6A0A5DE869DD5933656581B52E40463D44218AAEBAB275CFA00B1F89D53F3AC014B65F320E2161AA4E275FB4A6F145F2B03FFC91F7499E3269B2DA8E1E1BDE9A5020A2213386B7B262F5DA5C03C0468D025519814920F0AAC14AF2568C37869724CBE489B19B09E45BEDD14DA2B8B9702A806E128299EF1EBE6465AC3F519908D0A7A9126C57FCFC78FF1B99523F62BABF7EFDAE47DC45CD11F8AC6AA36E69C047F5D0262E30BCBA4CC9539E7ED17824807F85A581F3A01D37A05C3F9A2C1BD6B8C3CF8540D0264FFB4566788BEA085350416894E32E84CE90AE96F5E26657FC0A1700E8E4B0E5123CBA47EE3C9319
sk = 0610678FF4DC3128E1619F915DC192C220F8FAD94DA1943BDA1804DDB5AA9B1C6A47A98F8505A49BAE2AFFDE5FE75E69E828E546A6771004973156DBFA8D13A58D7300D6665CBEF008ABC0595D56A0FF8DDF0214CEBC3667F5CBFAE3F479F9799BE047BFF15D92AE767939248BE053AE987BC2806E741B3DD8B5C8400EBC7AFF3B71D8767FEA8BF85CE2729873428F5E3933ECEAFB8D85559FA5287C484E838FF722ACC95412CA40957E9DD5FD916973FE885F8D78084393BE80103C32690E14CA286E6A0A5DE869DD5933656581B52E40463D44218AAEBAB275CFA00B1F89D53F3AC014B65F320E2161AA4E275FB4A6F145F2B03FFC91F7499E3269B2DA8E1E1BDE9A5020A2213386B7B262F5DA5C03C0468D025519814920F0AAC14AF2568C37869724CBE489B19B09E45BEDD14DA2B8B9702A806E128299EF1EBE6465AC3F519908D0A7A9126C57FCFC78FF1B99523F62BABF7EFDAE47DC45CD11F8AC6AA36E69C047F5D0262E30BCBA4CC9539E7ED17824807F85A581F3A01D37A05C3F9A2C1BD6B8C3CF8540D0264FFB4566788BEA085350416894E32E84CE90AE96F5E26657FC0A1700E8E4B0E5123CBA47EE3C9319
ct = 60A6D5643CA8FD71F02B492C27CC99B732DAD4DC9329F14A8343C417B2FD7BE5C40D55FF3250BD4CB8E15ACA6EE041DFBD51B53EB9F20C36E262DC4CC156316F7F68E4F9B38A200175CD82D109CD5E5AAEFEE46E6FD185FA233C38710EAA691A4673EC1BAB92F7DFE6CCDE50F3BE4CE042B6870D12B0E50D8D0D73B70F37347375D43188D28927BA4E3233C1C6602A7A7028CC2738EE74D17CF6435824C5D28BBFF3E16D1535B20D6758A979BD0BC4FEA390A0E7F6B94CEA31A204C012DD8E603438FA9640831EB796FA954F402A1D07116F583EC564C473C4046C4D361D369943CF4C0FF3E3D6E5C71C546EE807E88BC6EBC5278931C81BC9F27E0C71ABE82A6E601C3816341B99D9A1F03C5916AE62D8DCB335F99BE6A74533FF43E04AFA00F0EB93C0E4B49C48F69D111E070B35E7BCE9943402EFF246AC0433B78686FD43C780F26E106129DD4BCB6918C3B4C5E5259354FFF3D9DBD2A151E9091FCC67071C9D62DC0D2A8C2C2254D2C13DC3DE5EC125382F56FF5328AC084CB88551CAFDA4D058D6A744E99EFEF9D3C0EBA23CDBB755
ss = 15D5FB32C1E43645FC856D5F89A8AAB9

count = 9
seed = B4663A7A9883386A2AE4CBD93787E247BF26087E3826D1B8DBEB679E49C0BB286E114F0E9F42F61F63DEC42B4F974846
pk = EB11AD975B8DC144A5608E62657E5A611764AA4ECB405C7372A0FB99843D4CE7B65806C0BAD6D086F3623D5821F731C91EAD79A417FBC0652505441605DF39C191B4CE2B5CF4206DC51056CBC437F5E0EBDE9D0475302936CB8610EC6E8EC925F9B15DE6F5B312BD831A4F1B7BF4C2DED3BCB40E48065335ADEDF4AB603579E648C3BF6ACD6B0C66B3D38CA8186D25228CA97BE045801E2CB18C2F3BA8E29ABFEABB0DD8A1FD11D73F2AD2BB13803E76139638A953374218AAD71B0932AC645A803ADA021C26926FCC16C19FC471AACDE8FB1B3BDE4AA91C33DA796B2672A34D0D492DD48D9952EEDC10EBC090F33E78740B3A50817281E691795A40599B967D53A730D7E5D3ADE4D6D7D669F24F9327B8ED2E7312CA6ED2E021864202B00BC20BAAD40A5743A02E7CF82A041B99F0CBBABEE479CCB01F6F2340305441CACB161A4A6F9BFC5C574312A89AC18C4F6881C7C9210A984E246EFB62F324304009B56CA07FAFC8713577AF56CCE9D92146D73585969225F45B0CAD08
sk = D322D56D8EF067BA1F24C92492B9C56DF3A6EF54A304ADC156047447B810CC094D400AB204CF9AE71E3AFA68B88586ECB6498C68AC0E5109EB11AD975B8DC144A5608E62657E5A611764AA4ECB405C7372A0FB99843D4CE7B65806C0BAD6D086F3623D5821F731C91EAD79A417FBC0652505441605DF39C191B4CE2B5CF4206DC51056CBC437F5E0EBDE9D0475302936CB8610EC6E8EC925F9B15DE6F5B312BD831A4F1B7BF4C2DED3BCB40E48065335ADEDF4AB603579E648C3BF6ACD6B0C66B3D38CA8186D25228CA97BE045801E2CB18C2F3BA8E29ABFEABB0DD8A1FD11D73F2AD2BB13803E76139638A953374218AAD71B0932AC645A803ADA021C26926FCC16C19FC471AACDE8FB1B3BDE4AA91C33DA796B2672A34D0D492DD48D9952EEDC10EBC090F33E78740B3A50817281E691795A40599B967D53A730D7E5D3ADE4D6D7D669F24F9327B8ED2E7312CA6ED2E021864202B00BC20BAAD40A5743A02E7CF82A041B99F0CBBABEE479CCB01F6F2340305441CACB161A4A6F9BFC5C574312A89AC18C4F6881C7C9210A984E246EFB62F324304009B56CA07FAFC8713577AF56CCE9D92146D73585969225F45B0CAD08
ct = BCCC1E6ACAF320BF985A83B4B1031F41167DF07E507EF13424FCF815838A6BBAA027C02ACC4500EF41B76DA466037BA177B20CE10B82E143A603B28CFF41280D481DA8DF798B7BB32F424D2D272BA653ECB17F3DE313EAF7FF40F78DD75718C1D39C779E0876DBC9F0DF1BABD5345FBC86B6537A771729995B14A947E424EA6663AE7C5542A1D2574392743421AC08E18CFC4453D732F843F40144F492A05484F40ACD3F08925627561A3FF838E3050F3496E30DEBAB9EC41BB92641036366A5FDBD0071B71B97E51AB661C9CEF8EC8F7FB3A6DDCCD1290144E7E7A325FD568D584362FE9ABEDE6FAF66CDE455FF110F3FEE5977523FAB726F0D3B02921FE1BE799672C142B6F69BCC7C9E79F86BA6584081F793FAC491A282C96435B872132B8DFB54CAE599E2756583F4662929006FA0150283F5830E2AF13B3031E64D746A2A2CD92E67E0F8D4D1585867F66490168527ECF712C29CE659FE0638DF580421B2359315DDF576237537FBEC623DA28B9EC800E4EEE51A01BF1747E7805BCAF53408F6A0DAEB0A116780280137AF84FCA0A6
ss = 2717DAFB00EB0A39977833FED3245270

count = 10
seed = 980D0BA7C8F8B23D0E948A6029FF2659810EA1360064663A8994D0333C8543EE5FF5D6D5C9ACF446E61DC464F792B9D3
pk = 1729D61BE220F49CBA0E8A78F1ADCF5DF2658E23874BA69765EAF2167639F2AFD5DEF78FA8DAD1745D997950779752C98B2D7CA2E726CA7A8F208960EB0633572010FE829D070AA62AC0E103DDAE6C71CF494BFF1FF53A389DFB8794AB2BD1365BA094ED6F3D285F187E295660E1B275F6E875A6E33B9298A44B8F39D032BFFAC4922CB14A95B0F0CFE55D45367E605EBD3F7BAD3C8BDF3797A70038FA6CC3665C1A160E8E2F1BC13992655D4898C0AB5CAE75EDFE03D600C46FC9EA0E53710FD88E26F5F44A54857DB99273EBABE7A8CA202CEE0DA1E4FA3FD11F5CE7FA77DE3C9D4075CAA787AF371908D602DDB4A80233F6D5A410EA675FE35C2E0E48DF36342DA186A948BF5D3028944A98058F65DBF4A71D4FD71B4BB4B69D8D8436284D347CA40367F50F23B8F2FF89DD3A8E119CD7520CE522EBB80B4D3F9750421DB28BC1163B7FF3CFD8250129549053BCBF4E15BD09C3A1FB5F7888463F6C5FFBEEC9D4D59B0AC9A4216D60020572D2D6F41514D6D09660C59F4420
sk = 2F1D8A3BEBB34540324B9485FDF3D5BE3B858F544ABC3FC68D6C42E7270EE2B77B6045385F3D175984A0E260363166C73B0C70C9716443031729D61BE220F49CBA0E8A78F1ADCF5DF2658E23874BA69765EAF2167639F2AFD5DEF78FA8DAD1745D997950779752C98B2D7CA2E726CA7A8F208960EB0633572010FE829D070AA62AC0E103DDAE6C71CF494BFF1FF53A389DFB8794AB2BD1365BA094ED6F3D285F187E295660E1B275F6E875A6E33B9298A44B8F39D032BFFAC4922CB14A95B0F0CFE55D45367E605EBD3F7BAD3C8BDF3797A70038FA6CC3665C1A160E8E2F1BC13992655D4898C0AB5CAE75EDFE03D600C46FC9EA0E53710FD88E26F5F44A54857DB99273EBABE7A8CA202CEE0DA1E4FA3FD11F5CE7FA77DE3C9D4075CAA787AF371908D602DDB4A80233F6D5A410EA675FE35C2E0E48DF36342DA186A948BF5D3028944A98058F65DBF4A71D4FD71B4BB4B69D8D8436284D347CA40367F50F23B8F2FF89DD3A8E119CD7520CE522EBB80B4D3F9750421DB28BC1163B7FF3CFD8250129549053BCBF4E15BD09C3A1FB5F7888463F6C5FFBEEC9D4D59B0AC9A4216D60020572D2D6F41514D6D09660C59F4420
ct = B982F5360AE0D6683B3104EEDDFB5D5130CC9B9D590B51807A55D725CC54F6984A09D679C8B669E4C9F8F0E146EA256DCC0655DEC651409D2664E26FB2331E8CBA8D7C1F9AA6F386DBE75A1D66B8858741E89371FF8D88E9A8F7BBF7CE0BFBF1CF388EAAA283B4B20024B2679D0D50C824FD8334D7A206767772A1B612264718C8B4C31FCF46CC883144C43E0ACF8A8314FF1D5A65E33981EBAF26A55D5DC39C6ABD412365E6D21A5AF0B307F9E04ED495B6096355793F482E3A32361D532FE714BA95815254238F4A20FE0247BADB9003F50D5BA1DC090B3CC5FC354EAC61475870B8F958725870BD3D591713665CB84C205B43A3F81425A22F763C5C4CCE6BFB896E17EF2F0FF9D1F632E5D8FD5CBEE8B695C1E0EF6B3F85BECBCE78BFF31C89BE521D3658E669D3D2182AE80389F790803716850A7E0E8C392D91D884991BF3A559FC5A3A29DC2387747B4CA68D8E658055CF196D1441DAE59A541E3353C18D2188F271175B9572997864456E1007DFFBF2898C5CECA2233DA3B464BB0338951F0BFE3CE7DF02BBF6CA2B383F4FCF02D8
ss = 30840E1414DF2542136A0DC0EF14C9C8

count = 11
seed = 6C029462CA42ED520F10A579F52687101105E0B90C6E7BFA582A4C112B579D5AD0A0ABD38F72ABCFDCAAF5893A112BDC
pk = 01DBA9AF4C32E82D29C244B0683AF597508BF60A2D1B6A2AF2A97DDAE092402F7CB143970A8665E44E1AF0191F832056F7F61A1A52571F7C82AAA362F0B8344C4BCD988A6DA40905D528C1FF49B3A824E5EE6D4AED23FDC7D0875188B728F714BE9112217455D207AF934F99C2EED6CDAD092F35B318CCFE68351FB1C31A5631E7D0FAFE529662B9CE3B5B51F9F229243AF099E1BD52EC73711CF458C3945F21E9DD64227175C65F03CA6A51E1A09D76A672E782538082A17D344D50282BEAF7179B91D5F1F17BCDD7675C932E3ADC3E3CDDB0A95813DF8D440B34297E94F316FD225F08E54C79047E8E475270D51B0819C7324FCE74F9E6F5B66D026B3980185207E36E264D16D0881AD6353A4C5C9659F0394F0528B16500DC482938EC10BFBCF79367AA1A288DC297BE868B19515F5CA5DCA3B781D0DAE43B230AF637BA1A9C75CA1F08CABA2B3F93FAAC07101D2BB3BFB7DC69B46EB69D45A322808CDF330096F0BBEBDC785178D237325E213B7EA1A3E3B70C5DFF7D4232
sk = 31BEDA3462627F601CBC56F3DDF4424E1529C04737EF0EF2812083BFA3B670E3EAF9B443702FB6DB16AC1197656BBD61A8E25ED523B8D10501DBA9AF4C32E82D29C244B0683AF597508BF60A2D1B6A2AF2A97DDAE092402F7CB143970A8665E44E1AF0191F832056F7F61A1A52571F7C82AAA362F0B8344C4BCD988A6DA40905D528C1FF49B3A824E5EE6D4AED23FDC7D0875188B728F714BE9112217455D207AF934F99C2EED6CDAD092F35B318CCFE68351FB1C31A5631E7D0FAFE529662B9CE3B5B51F9F229243AF099E1BD52EC73711CF458C3945F21E9DD64227175C65F03CA6A51E1A09D76A672E782538082A17D344D50282BEAF7179B91D5F1F17BCDD7675C932E3ADC3E3CDDB0A95813DF8D440B34297E94F316FD225F08E54C79047E8E475270D51B0819C7324FCE74F9E6F5B66D026B3980185207E36E264D16D0881AD6353A4C5C9659F0394F0528B16500DC482938EC10BFBCF79367AA1A288DC297BE868B19515F5CA5DCA3B781D0DAE43B230AF637BA1A9C75CA1F08CABA2B3F93FAAC07101D2BB3BFB7DC69B46EB69D45A322808CDF330096F0BBEBDC785178D237325E213B7EA1A3E3B70C5DFF7D4232
ct = CBB3918EC9AA60E7BAF511DE2413DBB64BF37DDBAF0C81B44E272778A05DC0EF9194BC204BE0A20CCD76674044BF6E9E2C794143B9CEACD0C256EB2871F80FA2B3AFA6FD8B270AD21CEC7908006B97E70670ABB41D7B2ED112A5A6189A81C4D614EEB65A6B3DA57637AEF6FE23DF80265945B89F634DD3469072437F150F76E1AA957DBBE8B8DC61F0C5EB28EB25B861ADA8F686B3C626917EF412CF49FA280BF0DA3F9E2486CA25F3D94599CA3A70C317C44795C98AD25E3877873A14BFE7BCAD04362B7B9F5A03C36075740B235BD804CB03478FA42072F81803CFB3D42608B184D24B83295EFC1417D69FA177A748F51FA3BCC67BA021D7E72A1D0BE7BEAB1F12764A1646A1EF36781509A82449D8D8991156DAD64487C95B296A6F85A0EE7BAD069FB9066D1FA37B1EF448AAE83DCD3C54BA886A74F273A5084B8F0F6E37A49B5F1CF29161E4F7316824DEBE708114FE11D5035DE26ED53300AC0303DBCE27CC68CEF0D6C6DE2A6B36D5FEA5EC403B3C9CCE746667C0713DDA3C9F8A889F37D1029208CBAC5B9F586FE9CDB6252A5F35
ss = 100D6491573BD34330D0367019F4C4BD

count = 12
seed = DB00120937570D62331F4C3F19A10465231EFF46465CDEE336A0D46AA1E7493DF80F18617F9FFD0476CF7784A403EF4F
pk = 482E4A589E6B9235C7EBCE7A77B48F31B7EF5F139F50056B024AF43184D3C8977740B74424220541C4DEC067746DDE32FA34500B72C6F5140CEC2FB0E1B0381040F79DA43E0A7DDE667E6B143DA4983D0A136E2691FA8A94C7E41B121D1C2856005C0BA8792FCB1F643E109D687816002657DE76D909D76DE3758293D901E7F04B0E0EB16EC99187A099D3D45A54CE18916B0B8B8F18E2166166E0D63E4753A39221F3E0123B93748595B2B1D242313D2D6EF5E353AD10327D0A194B11F772BF56B8176939A81948155FB58DF9BE49666B4DD7D77725A91C48B56A58B98EC75E82CCD6856FEBF180B756FAD81D52FC3B6DF11D4DC7DDF2A341BD28340A4D9725FF9EBA608B4A5EEFE10700F170F9498B8BC4B12E25DED0FBBE0D2D2FE14099D27A69D639D96525FECB68AD8046980928C78A894233BBF036A01A20C0C89FDD99496E0D6A6FD9C4AEE3394F8D4D3E4DAA39875680A631E660D496E124568D45DEB06733795279BE2A6CBC45101BD49CE56C14DCF970822367C93A
sk = CBDFF028766D558AF4466EF14043A1A9CF765F7748C63CC08E9A30597E4B52FFA87A54B83C91D12A5E9C2CD90FCAC2C11B3A348240411A0C482E4A589E6B9235C7EBCE7A77B48F31B7EF5F139F50056B024AF43184D3C8977740B74424220541C4DEC067746DDE32FA34500B72C6F5140CEC2FB0E1B0381040F79DA43E0A7DDE667E6B143DA4983D0A136E2691FA8A94C7E41B121D1C2856005C0BA8792FCB1F643E109D687816002657DE76D909D76DE3758293D901E7F04B0E0EB16EC99187A099D3D45A54CE18916B0B8B8F18E2166166E0D63E4753A39221F3E0123B93748595B2B1D242313D2D6EF5E353AD10327D0A194B11F772BF56B8176939A81948155FB58DF9BE49666B4DD7D77725A91C48B56A58B98EC75E82CCD6856FEBF180B756FAD81D52FC3B6DF11D4DC7DDF2A341BD28340A4D9725FF9EBA608B4A5EEFE10700F170F9498B8BC4B12E25DED0FBBE0D2D2FE14099D27A69D639D96525FECB68AD8046980928C78A894233BBF036A01A20C0C89FDD99496E0D6A6FD9C4AEE3394F8D4D3E4DAA39875680A631E660D496E124568D45DEB06733795279BE2A6CBC45101BD49CE56C14DCF970822367C93A
ct = EE1DF3CB9293446482991F20D6D593EABDF396ECCFE4DFF05049AC944EBCE9907D2A205A6A7E76B2D1DE0B9872619266B9155939600EDDB031AB58A02E860961CCAED38C0A8BBBA3BCFB07F95E70983DBD2EB988B8FAFD4260227203C07E48240FC753CB2AE0DB8BC9EECAAED4005925C330553A29094E10B9BE268BA925C3918C65818C6B784CD0251D5888AAEF191C7FF43F4B88EFECCDFD297A865F7D5DAED533E92D8B87CF8B47A1235625B60710FEE1C3BD3B553698346EE8CA0E0CAEBB82FB0FE1B69F28AFFD8EC7C52DBCED469156DF286E59BA004D94AE29BD8F3A7530D582F42EE38D12C70D6AB9EAA6B2040E245B4CDCD1D3CA5BA1D93B01FED40EF464E39AED94840FF687B37F935B5DE0AA480A1A7A7DE5C8DEB3664D111DE06F756105A965B3DA8EB46C5FF9D189D94F12A63B65C8DE3CE679CF0FA89553A03FCF17121B4A5948F8FCDA2838F12EABAE5A4BBFEC6F6F9288BE4C124BCC416069A42E6DF12559854250A5D54ECC6613A84A479EB200352DED4038BCD4AAA81605C18B368135C20F2F728789B558A8A8C76B63
ss = 4E8896CB8F77DCFB629C2B7985B5412E

count = 13
seed = BD26C0B9A33E3B9B4C5D7EA32D5BD1FC371015BE163C86F584E49BFD5362C8D8341161CD1308115B2A03B7E5EADDD418
pk = DFD9A1E84BCE8FB3889D8AE2C5FB74E7C5BB14ED970E8C5865B40E34E1B7CD044C255363B2F34DE9934DA626651FE9FAD9A3BE0371336E39848C80662A642C9D4E35B143CE37E32BF7F51BBE3FB0385E559C218F3003032A2103EDD39FC6004B64038BEA9CE9E84FDFB4195DA74C84B812F33C2E41D7F16CE8F13C11012D5AED3E3B858A63026CFC0E839507F58AB688A8958F614AC82164F4D2750A9226E90804C14E091904D1F9B5312EE2CC78E7D180D105EC35A61B3B8C50C825308ECE01081E1735AB3DC873E265811EF38421D3B72D9ABA4F150F45615BE5DC9573F3150D91B46552E32C6103DC72FAE7431348A2B6D9F413B4C0F805B2232B7DF54CA1333A8B57BD1BE78206AC56D4FA2FBEF96F7B59C053101287541DA7D9A8BCB6C2B23C9023A466147815FF1ABA6FC8C74CB7966DA0E4767363EAA523A59A7AF54D24B67BCA70144FD232480981C251820AA3007C92FFBC9F209B2AFB2F98EB3167AF2A15572DD774315B320EB931D35C31A802B0A3DA4A12E2E51F
sk = 4C04310BEA66305C6CA8BA6B8F61CA96257A67663AFC11768AEC87A9A79204CEE2986867A2906EB851B734B8B22B91D6749B1A5F07C44E0BDFD9A1E84BCE8FB3889D8AE2C5FB74E7C5BB14ED970E8C5865B40E34E1B7CD044C255363B2F34DE9934DA626651FE9FAD9A3BE0371336E39848C80662A642C9D4E35B143CE37E32BF7F51BBE3FB0385E559C218F3003032A2103EDD39FC6004B64038BEA9CE9E84FDFB4195DA74C84B812F33C2E41D7F16CE8F13C11012D5AED3E3B858A63026CFC0E839507F58AB688A8958F614AC82164F4D2750A9226E90804C14E091904D1F9B5312EE2CC78E7D180D105EC35A61B3B8C50C825308ECE01081E1735AB3DC873E265811EF38421D3B72D9ABA4F150F45615BE5DC9573F3150D91B46552E32C6103DC72FAE7431348A2B6D9F413B4C0F805B2232B7DF54CA1333A8B57BD1BE78206AC56D4FA2FBEF96F7B59C053101287541DA7D9A8BCB6C2B23C9023A466147815FF1ABA6FC8C74CB7966DA0E4767363EAA523A59A7AF54D24B67BCA70144FD232480981C251820AA3007C92FFBC9F209B2AFB2F98EB3167AF2A15572DD774315B320EB931D35C31A802B0A3DA4A12E2E51F
ct = 34BF8BCAED2AA180DB6ED5EC5676FA97ABE9249A9B548D2744A41F871AE6BBB828B0B797BEC5765CDB3C536A658171A5B4D27596D65BCF60960E042FEE80127EC143E33923A35839385E2CA58D990073E766B8ED0474C685C4E11BA29D8B91A6F3C0ED66F717FE826B7147CB440493506D019663C008EDED9B148DDC2C01E1CF1A4E42A7251C09D05430A036DF4A84C7BE282E3477AD7EBCB1232A8FA87A6533F53E0FDC9A847F2E17E005B614546B268EC338F41327C25DD110C20920D5757F57AD4A0E1833EEBD7E28BC71079898F9A713A7C70C29C2131B83EF8C3A5953B20D792B74076FA486F25B71AB15EEEC72E35EE66699270655AD688927C1FA194F171A37C10795F1238C855786246456F5AFC00933F0F49668F2BE7131211B497ECCA8ED1AE4073349D9399420107C7189E6DC338458D3D67C0CC83E1DCA1A304834562E9AAFF2C7F6B02BC11C7EA54B41181F45EF1AF9826EB438E72A5632A73B5357674F4F48D55E9777164F1E4A806044AD93B960546553EC10B3229BCF3760837B2B5FE6DD34379DE19887500BE32A960E
ss = 8FC5CBFB343088B5E6F1EB63B61CAD1F

count = 14
seed = E2819EF86853BCA1B9DEE7EE1C1619988964F9A913E635AACF0D96CA6E0300D084329DABD8F149E24176D22757404260
pk = E76D7D9B539CF13308F26100C65260B9EFFC236E588024FDA48C8DB2221F7AC47DFB5FABF41F788E5F3AD3FCF3F87BE7D36B69343A70735B186CCD5D98843B0DFC91A10BE0D335FD62477577CEA0FDF011A15DA810F560EEFE64E8352B11753523FAF018B413DABEBEF987EB8BE5278D083DBC471E6892AD870EF434B30077C442101E4680983EA2B1D8581B19F40EC5C755BA8F5695F7E78E63D1850090FC4156442123E77D406E0526EA56D73694F06CB3E3E964589C5403538D0D007213964C2F10F87702C16D9AA7D10151A0BB4F6E191AA88F6739BF61EAF91CA84C37C639C2D5787DEA5B90554135924CA259FA430507E0EFBBE3A2AD8B90391708CF4284D46CAC25A0B5178E09062E580FE3156D4FEA3207C6934C33FB35645CC03BABC2970C664F2CFF38978E0ACD31B3CDE0DE06E996A31E5FA0AA8B08A6C1CFDB7AAB6309E5C2797B251BE2ABDC9C624D694B8F163B0D5ECF02DDB4516515015B25BCC60929ABF231473D7AEF17EB0D12978A1586BA8950DABA5C10
sk = 38A0D5F41D7DC1896EFD1B45B0485634CEF149828751B960A2ACF359556DF4A2ABAEB9DCEE945829BEB71185B4D6BD18B76E5668F253380AE76D7D9B539CF13308F26100C65260B9EFFC236E588024FDA48C8DB2221F7AC47DFB5FABF41F788E5F3AD3FCF3F87BE7D36B69343A70735B186CCD5D98843B0DFC91A10BE0D335FD62477577CEA0FDF011A15DA810F560EEFE64E8352B11753523FAF018B413DABEBEF987EB8BE5278D083DBC471E6892AD870EF434B30077C442101E4680983EA2B1D8581B19F40EC5C755BA8F5695F7E78E63D1850090FC4156442123E77D406E0526EA56D73694F06CB3E3E964589C5403538D0D007213964C2F10F87702C16D9AA7D10151A0BB4F6E191AA88F6739BF61EAF91CA84C37C639C2D5787DEA5B90554135924CA259FA430507E0EFBBE3A2AD8B90391708CF4284D46CAC25A0B5178E09062E580FE3156D4FEA3207C6934C33FB35645CC03BABC2970C664F2CFF38978E0ACD31B3CDE0DE06E996A31E5FA0AA8B08A6C1CFDB7AAB6309E5C2797B251BE2ABDC9C624D694B8F163B0D5ECF02DDB4516515015B25BCC60929ABF231473D7AEF17EB0D12978A1586BA8950DABA5C10
ct = 2F779D6BFF4BEBB201AD67BAF96D9D9A0587142098C8D796D31B1BFF435A835FFFFD87C0BA52C44B14E5CA30F4BF1F43696CCF7F009EF51C5179B76534AD34E617CC25A6264951682241CFB43B24C1D9E944E813C6644DE322B9594A90B42926FB7985D1B6D5A11CDBE2B4971AC53A22DAA2ACC8FAAFBFFEBA6ED720BE37B2326DF4439C8BB03FA87BA174BD8048971EA3F14A636E3E2C45806AFD35395BAE8277BC0EC512878775BD8BEDA04CCC32637B4DAD69EC3F489C82E710F43B371E4449841796451D77BF925B51A8362B2731AA7DB34BAA2A3BB031A7541530ED0A7D16673BE56C6EDCAF253AD3D00EC74991ABA4AF36FEC2827AED18E83F8F7D9ED8861FF81F185646D28CEBB838ACD26ADA77F423F30B68854B05BFDF8678F43DA019F861FC53E0C73FE1B2BAB55C7F44509180E7495CA509ABB661342760C7A803EDE1BD0744C817F67A41740C8F80D1FEA08D4E93D02673CB3F442BF7B33FBC2DB519A2355207FD1D2EC9482006EC523C243AD5E9AAC5CA1BBE1EBDA19585C7B23108DA502F7EA3E52C150A7A6E74267EBD8B
ss = 924D938AF87AF4A5976041E0821B3CA7

count = 15
seed = 669C4EF8A051CE201DA65FC4BC34D398EC1F806276FC5D987AD71D93BC12DC8F107B58BE6E8422A0795C88CB9A0E7488
pk = B1D61ACFE6278A696A3B275EFE297ADE451287FA6B4B2E9A95367DCC2F3914975D151BD872DCC15D927AD28981634288DD7EE855E0DB4628AA16660D57DA104132CB55EBC045969EA9051E10E07CB8C0E5D62D0D5B339FA9CAC90A37BC381638042312769F6FA92416A4B3699E0CCE1275297BE5926876FF656E7962CC1559DD78AE0911E096AC486A07FE1116FC12C39812CBE50480EA63FB585DCA5ED66C141DF75216A10143DE5E1D1EC44FA4366A027F259A1971F57D441D3ED9310EB8B9068136175FB9FA7FB2E5D917FF92D872389F2FF8451D7841F740A0DF7FE05E5CF1C72F13F4208C7A19FD42F58070ECF9CBD7E5B1DBF9A1751C7E262358F0A1B08C1F882E98A19259105157B7B55DF59BB302C2C7FF42A21743121F91F399969A81BD7130B7F770C80BF28ED060331B42422ACEA37AA203DDAFF939DE335EE9042B09D50D6E7A6A2E599C931B7B2A469D1B6131FB2C7631BF9D75BC7D59D1E9D50C7B5ACED93FEDA516709EB96394516F123D9AFEDBD613F3F93E
sk = 97B5665676E59E3538EBADAA8CD50DF1F9FDA1502D9894C6DF05318B5F655EFE36F1B678CF4B875108A18DB2FA312261CAF839F84BD95605B1D61ACFE6278A696A3B275EFE297ADE451287FA6B4B2E9A95367DCC2F3914975D151BD872DCC15D927AD28981634288DD7EE855E0DB4628AA16660D57DA104132CB55EBC045969EA9051E10E07CB8C0E5D62D0D5B339FA9CAC90A37BC381638042312769F6FA92416A4B3699E0CCE1275297BE5926876FF656E7962CC1559DD78AE0911E096AC486A07FE1116FC12C39812CBE50480EA63FB585DCA5ED66C141DF75216A10143DE5E1D1EC44FA4366A027F259A1971F57D441D3ED9310EB8B9068136175FB9FA7FB2E5D917FF92D872389F2FF8451D7841F740A0DF7FE05E5CF1C72F13F4208C7A19FD42F58070ECF9CBD7E5B1DBF9A1751C7E262358F0A1B08C1F882E98A19259105157B7B55DF59BB302C2C7FF42A21743121F91F399969A81BD7130B7F770C80BF28ED060331B42422ACEA37AA203DDAFF939DE335EE9042B09D50D6E7A6A2E599C931B7B2A469D1B6131FB2C7631BF9D75BC7D59D1E9D50C7B5ACED93FEDA516709EB96394516F123D9AFEDBD613F3F93E
ct = 7ACDBF7B9633A565956B0B7FCCAC3E86F9B58DBDF848A5CF0532705DC906B5AF4C0548FA7401E210A07DEB41C79FD6E9197D56E7C2CDCB2943519793F0E02F066590716AC0E82009C058C3A71ECEB7187619FE9A2E0D739B3D02E803D0FCDBE8E11A96AD2EFA2FD99CCBCC56551C512447D361F922DAA65011EE9CC09A3DF905DFA737FE8D2EA3F0B112E71520FB3F06EEC840EEAD37D23EBB8AA0C5DD4ECBA25F06C0232B911C23D0438DFEED1A8CE8EDD414453ED59A5F7C49263506DAAE3F6F6A25C4915FCF1EB5F703B94D5984347EEBADA4B34EA8C8C0DACA84DE012418D90FDCEEA5C25AE405CB1D62D303FB904AA38D80F34F127A6E6AE20832230DCC7F78D7AD186E81B2D580DAB9BF2EC4FB64FB511981BF46CD5674B82615110566B38B0B4AAE37A6B6915505B003F4AB97B07405E347B1D2CFF60F263009D6489EB93118A4A4C51D8BE13AF719DEB06190ADAE3902931DA5EF753B0D2A9318F0938CA6B597C609816C340A0757FCD06F0AD477C15C7DFF689C82300B1502F57701A16E34019924E28B83F5607EB56CDA01E7B1
ss = DF8970518FC6B152F4769FA78D2345E1

count = 16
seed = 9DEBCCFE818F6B5204DB4EA09C03EC9A19DCF1629C1527685B8A29776BB1DAAEC45F8ABF8F0ADC9A8C8BD6E2DF6D8048
pk = 41965EC2EC7C85707324F6E9838A40D7BFA337BF7A82F4678A67A67FEB02427A0FDBC201AEE06BAB6F85FC9C0DE6F5840C45E3D582EDB344D462164928523F704A6306EE4FEA3BC4004C204EC646DC72326AD08D78DB938B996B0A5C2BF437605F8F5230235B1857A6BB58DA16102F270F80BE943D4E7E0BFC01BE1D3903922E2EAEDD9372CCCDD3A2A1FE9023B024824EC60162D1A73D1E464F01DD059A551A02F5BCB5C68807E820819FBC3E58AA72E2468682F5E2B505C6B5B282065FD85B36BF644DC3A49BCAE6A74E218D49BCC095742BC838675201AE21C27B931D791140A9B40C85A59356D0EC073A361A8A226D7369C762DAC6EEE2E1D02A88814B7EB6D25E35AA600E18B386F2A7451C7ECB9AE614D6A606B7A57F3427A84DCB7BFB67EFBE4927B71F20CEA9F1C3B33EFBE7A1C703696DE52EC53814250BE0B1713E65D17E38EE253A9BCF8C64352976748FE417A817BA09D02FF7E970C564D144AB064B36EA16E6E38ACA1D305939492C1D7C1B4CD0D7AD4AF5EF09
sk = EF99224A03A85A46EF115474EC5B5D620DA6795D6EFCCA4CDF7D92DDA83E6B2EF4CCE08C9134563063068A196D7B1A1A13623E48AE12520E41965EC2EC7C85707324F6E9838A40D7BFA337BF7A82F4678A67A67FEB02427A0FDBC201AEE06BAB6F85FC9C0DE6F5840C45E3D582EDB344D462164928523F704A6306EE4FEA3BC4004C204EC646DC72326AD08D78DB938B996B0A5C2BF437605F8F5230235B1857A6BB58DA16102F270F80BE943D4E7E0BFC01BE1D3903922E2EAEDD9372CCCDD3A2A1FE9023B024824EC60162D1A73D1E464F01DD059A551A02F5BCB5C68807E820819FBC3E58AA72E2468682F5E2B505C6B5B282065FD85B36BF644DC3A49BCAE6A74E218D49BCC095742BC838675201AE21C27B931D791140A9B40C85A59356D0EC073A361A8A226D7369C762DAC6EEE2E1D02A88814B7EB6D25E35AA600E18B386F2A7451C7ECB9AE614D6A606B7A57F3427A84DCB7BFB67EFBE4927B71F20CEA9F1C3B33EFBE7A1C703696DE52EC53814250BE0B1713E65D17E38EE253A9BCF8C64352976748FE417A817BA09D02FF7E970C564D144AB064B36EA16E6E38ACA1D305939492C1D7C1B4CD0D7AD4AF5EF09
ct = B44302AE0EF1CE42B8229D84F3997A0C2D891D609223B92475DFA79B17060F0A641DDF33916637D293AD19166B452FAFE881A2D709913A91B7FFB5A547982CAABEB96D928C0EB25D8C85BEFFB532F987B4AE62C7E68DC8173FAC5899AA3A5D8A30AD47A25CD26E058F9A79D39D12857F07948DECD280F59B354319980B151ADD015D7ADEF48F8AB7DE9FDE4FF71720BD9BD4D32BE9F943BCBB27C45BD2C9B185528BEEB1F43C3DC4B2D1B4ED7F45A274DF00771367FCCC516758C32706C8648F4CF77D76E8C93C3956C8306023423E87DC7A79BF156B645371763F0D20497AC306AC842B60CF962BAFC730231CC2510AB58828CAB126AB5B50FB25344315C7658A5E00822E562EFF2E08D2477FDD46A872FE13DDC6E3B2E4B8B58D20E5F2A5598CE7FC79086EA59BEB2C2CD06E45499998C2A332A344C01430243D70B546C146B0277C8AD4BD414B1F77A40BF67EA661FE6DC9792E2D8B290E3768107C7CE03CF20A387B3C688773AC11FDB0CBBBEEA1148F9D04B28EE95FF810899C7F44FB51020462242F96EFA97E9CF23AC54F18D9EB94
ss = ED12EE03261E16E8F5E901F69BF972A8

count = 17
seed = 8098AE7A92C10F707D405F7DEA02C2EFBEF44EFA132BA8AEFE81BD45E543ECEC74F10920AE48A40B0653D63532517F2A
pk = E6700C084D5E0DBA0085A8F8AB6ADA981B7D24EF1754A82E83D4475D67D1174D497B10AF7022298349FBDFEDAB31085BD7AC9F9E7A898EAE45C8DFBA2A461EC16DC46FE82E925B21C73A0EC7F1C546D4DBC1883C8672876375644175A7370A1C3FE3C7C22B28167E5E9F8CB8081F52C7087CCD941A1BC0988291C6AFC62AED56BAFE4065A6C40CCCE585D4421166360E839A6E86E7734110D71F40334894F78A9E489DA24D57E3F3D078EF1F22C444AB04F1F8F4EAE9513F76079656235196DB886209027C56DA35DDDD9658DE111183F18D8B2813A63BBCF57D21AC4312D1C15460891A1D38620CB8A89C3060449BB63BE4707F04C2037B091BE802A05AF2F1F50D8DA67B60EC5A5F490FC781FB444661374CEF2699B862791978514193737FE7805A7609AD7083FCA5D3E3BFE038262C086671AC74868CFF521698C59BAABCA808FCE635001F089A518289DC581D2A21A462BEC5F13D2129395BDB54A64D50FDE8768028BE40685CBE0B73DEEBF4FBAE1054B790EE5A216713
sk = B12F6FD965EA9C5B947DB80FC60C83D5E232DCA82E7263020F6AA3E88F7FA8A96067F8CDAECEEAC90C2D0B5E277E56E9C405EC9420C30202E6700C084D5E0DBA0085A8F8AB6ADA981B7D24EF1754A82E83D4475D67D1174D497B10AF7022298349FBDFEDAB31085BD7AC9F9E7A898EAE45C8DFBA2A461EC16DC46FE82E925B21C73A0EC7F1C546D4DBC1883C8672876375644175A7370A1C3FE3C7C22B28167E5E9F8CB8081F52C7087CCD941A1BC0988291C6AFC62AED56BAFE4065A6C40CCCE585D4421166360E839A6E86E7734110D71F40334894F78A9E489DA24D57E3F3D078EF1F22C444AB04F1F8F4EAE9513F76079656235196DB886209027C56DA35DDDD9658DE111183F18D8B2813A63BBCF57D21AC4312D1C15460891A1D38620CB8A89C3060449BB63BE4707F04C2037B091BE802A05AF2F1F50D8DA67B60EC5A5F490FC781FB444661374CEF2699B862791978514193737FE7805A7609AD7083FCA5D3E3BFE038262C086671AC74868CFF521698C59BAABCA808FCE635001F089A518289DC581D2A21A462BEC5F13D2129395BDB54A64D50FDE8768028BE40685CBE0B73DEEBF4FBAE1054B790EE5A216713
ct = 95A10E00252F43CE70C6D8C611843289A420463E5E17F1F331F2FB1DDD98C5CAE3765583DA915BD620DAACAEFFED3427D264FA88258318476E3FD527B57215E5CA3A06AAC005663E3E78A661B465B48C5F0EF5B06A9CCC1806FCE0CF154CA880B26B1D7E26737A6210F912B9B560C2A39B91937BA0D5E0A6C109AD3FDC3458C691ABA933DA7E8232D88BB16F097285129DE0CEA87564C11F9E5FECF565D9550B457CBBB9372F8DFB3D55D603CB5D11CD12599F96D4B64D19D17AEFCB26672FBD48BFB54E9471F9C8747AEBFD44BA0AE9B7CE86D946B5EDEDF9DDD419E38BA26B93A1BB7F3BE7C571164C07739F4FE3A3A199ADF3C607C9DBBF064D2CC51D48C38CE921604CE70B92BF7752F71C5C0280306AA92E6DD1986D7184C2DFD2E1ACAC4425EC8F1D26013D98073C53FF3D502D07D748C92007A01452D31288F3BAD954F6BC6D0C235CAEF7D0E460F6547D7A5F2B458E76D9D9AADA0E6D6C9B413F2FBB97E89B62A1DF40333F69C8CCD3727B9AE9D6C6FD87F922174426787219DA16BFA20919DE8ECEF4258A969603955C5D1DDD74
ss = EDDBBE6A8F50E7358834D8790B68A44E

count = 18
seed = D5F23808871544E9C1D6EACE2028362B48E225312F77663E9F78CAFEB512B908CD9E25875D61A16EC615F4B8FF826856
pk = 69C1C4725722EE8457362775DBD1A20D2BA8407F173801AE186A61EBB19DA21612F05DA6F6684E6B953AE0913FB15DBE22E7DD7158D04F422EFC4EF9B7E51591CA54F966508795E383160436BCEF9778ADCF592101052B8F408D2E07FB0FAC4372765E4352A3168B69AE19DD5E6A1C0BFC94E69C6059BD1A43C0EB1EC21194947DB578CAC39199B161DC594D23BA3E53B55BD51ACD41DDDDD807C3AFA687B622993B89DC0A97F725B0C4AD72AEDB7B0CCBB05888A5B557B9CF3C508F255CDD8C464B4FC2E42C8BE545E1F08EB007F27B68E603EC65C940D0C00063C9C5B3DBB6FFD496E74EB62567772702BD35C69ADBD7D839D2893C1DCDEFCDFB250D326F119B0BE55EAEE6DE68C4C61C44EF0B18B2625A1DE82FC5705AD73C0F84037BC3767BE3241BFFF5F972D86B5297EAC9FF597E03DE66B4D8126672DC2D5A30BE4E04793C3AC727669B1F4DB6D8235BA5D4235A757E9D4D67B8AD9F9138589EFF18554F5BB595386A135ED704AB86A47BB10161D664A145B8C98E2504
sk = 9F52AF92CA165FDC38788F2B59BA02E01C8281FF7C1E60504F3029E1BE4E1C0258C3A22FF5B50B2674CC094BA7018DA2A61569845C17D20F69C1C4725722EE8457362775DBD1A20D2BA8407F173801AE186A61EBB19DA21612F05DA6F6684E6B953AE0913FB15DBE22E7DD7158D04F422EFC4EF9B7E51591CA54F966508795E383160436BCEF9778ADCF592101052B8F408D2E07FB0FAC4372765E4352A3168B69AE19DD5E6A1C0BFC94E69C6059BD1A43C0EB1EC21194947DB578CAC39199B161DC594D23BA3E53B55BD51ACD41DDDDD807C3AFA687B622993B89DC0A97F725B0C4AD72AEDB7B0CCBB05888A5B557B9CF3C508F255CDD8C464B4FC2E42C8BE545E1F08EB007F27B68E603EC65C940D0C00063C9C5B3DBB6FFD496E74EB62567772702BD35C69ADBD7D839D2893C1DCDEFCDFB250D326F119B0BE55EAEE6DE68C4C61C44EF0B18B2625A1DE82FC5705AD73C0F84037BC3767BE3241BFFF5F972D86B5297EAC9FF597E03DE66B4D8126672DC2D5A30BE4E04793C3AC727669B1F4DB6D8235BA5D4235A757E9D4D67B8AD9F9138589EFF18554F5BB595386A135ED704AB86A47BB10161D664A145B8C98E2504
ct = B25B2CBFA381395BD92103F1E1783DEE4BFB0F1A3D42C5D5C1549CA644004DA0EA68F16D5F622E85CBC46508C1843156DD82830EA4C9EAA97787741A8434176DA1A4524E980A990D0799E0E0C49B6353BBD7958A0F2D4D3F93538EB1DC01133E32A9B86C9CC58F133C126350BA3B8B0326A4C12BFE7B8FAF5388BDDE0201E969EFD541DE930EE27FD93AB2EA32112BBEA06A204FECFE6C4382A67D28E15806274C1CF78DCA2F660400B0D9A28AE4D161090985FEEADE44B3616B150D03A6A69663E5B9C22A3E033CB7F3170A62147751F729D3EB47BBF7A3CC9362E554D7F7D062EA39C414958B892E74F905E22A0747FD0CD98E25072005B689B20C2FAB1DC1ADEB877D8215857260D2EFD04A8B22C5C1FF0A5EADE0B513771E883200A9D608443220BBD14A565B9366170D93BB9FC3B37CFAB2092F4F10850E3105DF2C0CF3BC6DA0D1627A51EB70745F64AA44B37C766B9206CDB5A34CCA5CA3406BBEFDEEE40932EB5E0BBBA0E994B522279BD50278B17F7CBED9254DFF37AB59CEDC4DE34F44168EF35635D6E53B0FE329BD5520D96B
ss = A9C01E4872F2391F9F7749816C2A6926

count = 19
seed = 822CB47BE2266E182F34546924D753A5E3369011047E6950B00BC392F8FEC19EA87C26D8021D377DF86DC76C24C5F827
pk = 2D927E13D371B802EB8A8073894EDE917CE3F133CF940973D62800496A99DA1ADCF584208047923F8D72E50C1F84E98014D25F42C9C0BE9E0EED134E8C5E29D2EFEDB463B5FB4050B982415CD7C83AADD2FA30BF363D0FEAD7DB85576316B21E7F8A810E2BA251E1F1FCCE9EE0BC64C7159231D39957727A53601E47F61F99A43900E2B5F4AD03D26C83E6153FE622136C79EF0F586276DED3417B0CB1C21B265ACA2A527813969D71D24E3A2C2A534386CC68FE7BAF4F8C7F28ABE00F42E4823D5829257C409AC3A7E2B9519C0379B813BEFDCF6A3B8B2CEBB48E3946FD89C1A646ABDC7CDD8B4B8ADE0727FA8685422F2F79481FD9A4784E36D5214FE68ED63705F2FC8309669E41234BC184C9DF6852BD888EA6A33D8A4E4743FA730D1FB5924421BA8999220A8A502E31C7772F1712B8E59EE65D78E2F4DF0C55461D98F0CA5866F353A7D62398A137D7EB4F9EF9E40D5C65EDEAB72868CFFC6526FC71A46589E78AE4CA89EB616BD620B16F27C48B037746307FBFBA703E
sk = 851EA90FD3854CBF28FE39FB81F68E4B14345CF0D6EEE7EC1C0EC046899A777655233E4E1B5CA44E9AFBDC67964BFD5D5E3DBB45E60D030F2D927E13D371B802EB8A8073894EDE917CE3F133CF940973D62800496A99DA1ADCF584208047923F8D72E50C1F84E98014D25F42C9C0BE9E0EED134E8C5E29D2EFEDB463B5FB4050B982415CD7C83AADD2FA30BF363D0FEAD7DB85576316B21E7F8A810E2BA251E1F1FCCE9EE0BC64C7159231D39957727A53601E47F61F99A43900E2B5F4AD03D26C83E6153FE622136C79EF0F586276DED3417B0CB1C21B265ACA2A527813969D71D24E3A2C2A534386CC68FE7BAF4F8C7F28ABE00F42E4823D5829257C409AC3A7E2B9519C0379B813BEFDCF6A3B8B2CEBB48E3946FD89C1A646ABDC7CDD8B4B8ADE0727FA8685422F2F79481FD9A4784E36D5214FE68ED63705F2FC8309669E41234BC184C9DF6852BD888EA6A33D8A4E4743FA730D1FB5924421BA8999220A8A502E31C7772F1712B8E59EE65D78E2F4DF0C55461D98F0CA5866F353A7D62398A137D7EB4F9EF9E40D5C65EDEAB72868CFFC6526FC71A46589E78AE4CA89EB616BD620B16F27C48B037746307FBFBA703E
ct = B5E4A96E9BEED97A881440F8B6B774098602E7E22F071FC92D5C5A7935F0A267476B39EFC86AFD5B8670C461766BB77C102E0F3C2A06D7942CE3BD1E242801D56D4589B8305653CEB1024F527785656D64BF3F28B444D21A82A042DDC60369C3B706D568E610BA736F6AD867F1B6800E698FA9AFCD9AFF474B33536C37203B0FD37F7393FA2D1645243294A07130A6308CAA31F7AD2B8E1E8D04F1BB3B87528D44454FB52038A9F94FA9D05F8C30CE6B32F47B0ABC6C0CBE652495B50A6474C5EE83EF8F0E41FF9AD540417CAFB9DBF40CC8D7D973276D95F3216DEB7B5D51FFCD81075254D83E60FC57745FEE5F46F76C25886E8286A5769ABEC530F58A6CBD0C6984C3765E42032FA5C9D2FB31DB01FB3D25451E58DE159DB7A1316D670CA1D5D046CC5721579F186C34BCF9791A4812D9AEDFC95BE677CE1F291F585EE036FF2A0B2373F016B44CC3B390F9A4519EE44F68A60562F1D36699A896718C670388E3D454D3089AD8B5A9F69FE858EDF91C2AF35ADFE73F0F8E3A156EBB129AB038FEE14568DB9E13EB2B0446FB429B237EDB
ss = F5C3C0F67007E4806C1D082B2A663508

count = 20
seed = 81401DB81138D6874E91B7C11D59596E4ACE543F5A3471B6FB00999221765FEC3CA057ABE20F03B2D59003375FD71FE8
pk = 88B3A00FD10549FE536D5ACF1511CDCF197B974AAA3F78ECC77B24AA98F8F52DCC479B36CC855820DC76B358486FD177ED3601FF8BD6F741E2F9DD47B50840C8083D688ECF125F16688B54B38019195C504AF534D97FAD59F58E730CD3486CB120DA22DD9D526A4EF5B35DBE0F2BD07AB78396458DD7AE8615AC279D8A27FC83480B31A24312D5F2DE3961C6BB1408A415937C0A7A8F43CC380E05EE2C041338B3679709515725D54313024F234E77913E440F903A8ACBE6C0610DF50723B4D1BF8034FF6AC1007E96B8363EF383506CBA163FAF41BF5D634EBD75EC0052573E390704639CBF216199709E9856D0396BAE63E6AA18FD8BDE5EF83306F4262C264248B10815059B35B4B80B7DE998FF27FD5EEAAF346F442E09E4B988BDA212981D0654A03D88137F0459910431988F8E1BC6754E1D17826EC1FD0976281BCD14D10B60E31AE0FD4EE7DCB322771E70895425CFB76FC7FA610AD91E221766BE0B74BA944DA795475BF974E81A210FD883FC458A765307D818FF34
sk = D304C9389CC973477F169788ABCB9D511F843219D246A9B56590A2E5C7ED86CF2C5C2A898662BC9A81418720BBB632EF9CF0B845ED052D0388B3A00FD10549FE536D5ACF1511CDCF197B974AAA3F78ECC77B24AA98F8F52DCC479B36CC855820DC76B358486FD177ED3601FF8BD6F741E2F9DD47B50840C8083D688ECF125F16688B54B38019195C504AF534D97FAD59F58E730CD3486CB120DA22DD9D526A4EF5B35DBE0F2BD07AB78396458DD7AE8615AC279D8A27FC83480B31A24312D5F2DE3961C6BB1408A415937C0A7A8F43CC380E05EE2C041338B3679709515725D54313024F234E77913E440F903A8ACBE6C0610DF50723B4D1BF8034FF6AC1007E96B8363EF383506CBA163FAF41BF5D634EBD75EC0052573E390704639CBF216199709E9856D0396BAE63E6AA18FD8BDE5EF83306F4262C264248B10815059B35B4B80B7DE998FF27FD5EEAAF346F442E09E4B988BDA212981D0654A03D88137F0459910431988F8E1BC6754E1D17826EC1FD0976281BCD14D10B60E31AE0FD4EE7DCB322771E70895425CFB76FC7FA610AD91E221766BE0B74BA944DA795475BF974E81A210FD883FC458A765307D818FF34
ct = 943F932ED5CAA77B360202D8930AC90EE7651A48D62AAFC045D0CF8A3A39D7CF7241411099B9788C9DF8C2EAF15CDA9C6FD9A70008FB12D7284BEB33E35C19D55398370ECD70720E42B80C0050725E207EF6EB02EEC52475B4F9A7522535FF2FF400651B2388A7755386800A978182AE2C4E3382A1FE7D49E36F53E8233E471477D6FEF00D6866344B2739B2B19BB536699C103EBD43409B7B800DDF1710C4749E8BFC2034455433C78BB1C585ADB13015E318BEFF45817789DB6141122252B2BB62CCDA067261A2772909209E5994CF7DC490D2781BE37DE754D3382A10D074B7E547C93DA91644CED018DB53BBBD105B0A84A6E0AC60A0320C8100946F8FD6D9420B4C0719DCC0D8D709BEB98D8625980069E07A021A3B3CA5B7B9AFEA454BCC84CD6FC453C2BDF81AE1752E31B285574FDFC06FAB7AD6317D2024E3C090C8040CE3F915A00066856A77C04F044E9DEC74FDD10547BC4275BC53623A654804A401200B05D3EAC70BD4B21B1E1D827DE5A9541C7BDC7EFE0D10010367B9BCF7EE1BFAE95741B7E46D41C353F2291B51847F
ss = 32F9704EC592C5015AE6F8B469FC6361

count = 21
seed = 30B5DE5B73681EC08AAA03F6F2D2169525D25F4042A5E3695A20A52CA54927B85F8BB948FC21DF7DEFC3910B28674994
pk = 0D36A1DFADECAB135266A11CA3DD6E418EC222C9111026A7F564347F86ACD0124152EB9FB12985701B67DEAA7385BD037F6034C2AB5B5D61AC9A2C4F51BC3B717BF3CDB0612DE43B30F2B40651CA115D60841D6577AE40C8FA00A1FFF80E32D52C555F49DCF8966986A8DEA1AC194B1D6FE8EB5A5F43872F50EAACA0933102EA1114D038EE34892EB5D2B78B94D478E6AF43CA4A0F1EC681C399C355ECCC098424E9DEFD9C113884856CFAE29EFCCD38686C816FFCF1A172ACE97C5E020B272263159961126E7771768181007CD3A8608FD4B4D80B2364328B8B71B501D5537A0215F2E21325AFDD5FD98EF46B77AFE8EFA6CB0EFF6686236EA4352CA4C4877F9B584042BB8B199217B5BA5854F0F48443BBF20E01143923686E2FA87D37AB3C138CA3796D24073566F82269013C12B41EDB06C435361818628B342DFABD00216C978B22C00C82E3BE0AF2D06F6C23F2226BCB5E1AD54F28C41294786C9D4C9F2DABA7F8944F2A1045284E30A4ABF4880CBD79DF720B64880B08
sk = 89A6E3BE304A3518FB82B18CA730F0B359CD6BA90664A493B6591121E25D64010C25A18676033E1D7278AC5F2D0B43A31F3A4156AE7104050D36A1DFADECAB135266A11CA3DD6E418EC222C9111026A7F564347F86ACD0124152EB9FB12985701B67DEAA7385BD037F6034C2AB5B5D61AC9A2C4F51BC3B717BF3CDB0612DE43B30F2B40651CA115D60841D6577AE40C8FA00A1FFF80E32D52C555F49DCF8966986A8DEA1AC194B1D6FE8EB5A5F43872F50EAACA0933102EA1114D038EE34892EB5D2B78B94D478E6AF43CA4A0F1EC681C399C355ECCC098424E9DEFD9C113884856CFAE29EFCCD38686C816FFCF1A172ACE97C5E020B272263159961126E7771768181007CD3A8608FD4B4D80B2364328B8B71B501D5537A0215F2E21325AFDD5FD98EF46B77AFE8EFA6CB0EFF6686236EA4352CA4C4877F9B584042BB8B199217B5BA5854F0F48443BBF20E01143923686E2FA87D37AB3C138CA3796D24073566F82269013C12B41EDB06C435361818628B342DFABD00216C978B22C00C82E3BE0AF2D06F6C23F2226BCB5E1AD54F28C41294786C9D4C9F2DABA7F8944F2A1045284E30A4ABF4880CBD79DF720B64880B08
ct = 3C7B34328DF6A1536F61EE5780E05C6F53BFE82098CE86E6C15BD8B267848E84FE787CE6E538A4A3DDD8F7F35951E265394E6D1A0CCCB81FB80389FC5BA13FA5989F1748331E03B119A9513FFD7896A86F1683858986BA89BC09CAE30D76F040CA5032C56BBB486CB2C08B36AA827B8CA7A2C093113271044C7022E5D43F9B67E8201E6CD6C69C432CF1B023AC63C386D9508B728120810D8C6BF0879A70ACE9D6D7CEBF93C0D120AE99E79E4C476B794CA791442AEB81293C9EBC761C6E9F98897AD6E6DAFDCD370CBCC3AC300245C595FAA3DC987A45342B567765795A4FFEAA75C13C2DA2CD89E1066FC8873C64D0911D41D6DEFC991841A5BE0FFB6BBD36C2573B2CC31464617E6829D579F1BA7FC4E051F61E143FF3D6AFB2165F5AD05747BAF6278EDDD39EB7398F03B122C70D0C999C9B141A4176DE0E2C8546EF78574B024F17954B35114C55CC13CC99FEB320D2407B073CBF172D1CB2779A87CC390BEE43D79EF4AE446A7016C8A75E20C37D5F02AE39DCDB09113F89FBD9E19C24F56DE42FBA308F0CF5594684AD89D975760C
ss = 503934DAD7D41FC0B4B1490DFF65B398

count = 22
seed = E335DF8FC0D890588C3E305AC92C7160FF199E07C85760A828933750E3FED8C83B0DBE802234481ECF890A32D7A2884F
pk = BA263A507606C242B768D27CDF1AF22E9D01FB7684A540DCB145B396DCEBE5DF05EBBB3C3D15A9837B9E82F2BB1E591B1837248BC6CF70E8D974E66557A70AB5B5A945A0C780AE154EFF832D54BFD9194EFAD492A88A5163EB048D3104CF1DD981EC884BCF20B555CF63D42D75478C8C52E3FBD1DE4942325F89C5CF8E281FCE5C92AD18652A867D0CB2FD1CDF07DD82DE9718E3C334F6DA9881E020CF94477B296947CEEFD7B4C566AF65528BDC06E4E63AFDCF2693F15BC01BF3C33F9443D363CB166A0BD6A10B27FD7E0D077B3B47608E6D47467C9FFDF402D6D5B8FAEB3785913BD0EBABAD608B2CEF7B4CC734C1750E4C0AD45EA482FED90E03D09A060A1080D2519CEE61819F08E8F936228CAD5CD1F84EADF7ECA3271553CC4430032F74B64DE5DF9E0FA748C392EF4659FAECBBA9E512CEFE426E4E321122DE83D42C7D613F3C6CA6D78AA235BCCC5FA2E80160F41B4BB881ADDA1E1CE7BFDA816D6FF2D3E3171625BA0DC70288F7D714737495307CF9FF2D74924416
sk = D569B935CE015C85F792F8F7FB0D83C4F53B492959361DD476EAE84D11C4528382828F7A689A0D5CFF87B8CA0BBA97FEACB39B935A87880BBA263A507606C242B768D27CDF1AF22E9D01FB7684A540DCB145B396DCEBE5DF05EBBB3C3D15A9837B9E82F2BB1E591B1837248BC6CF70E8D974E66557A70AB5B5A945A0C780AE154EFF832D54BFD9194EFAD492A88A5163EB048D3104CF1DD981EC884BCF20B555CF63D42D75478C8C52E3FBD1DE4942325F89C5CF8E281FCE5C92AD18652A867D0CB2FD1CDF07DD82DE9718E3C334F6DA9881E020CF94477B296947CEEFD7B4C566AF65528BDC06E4E63AFDCF2693F15BC01BF3C33F9443D363CB166A0BD6A10B27FD7E0D077B3B47608E6D47467C9FFDF402D6D5B8FAEB3785913BD0EBABAD608B2CEF7B4CC734C1750E4C0AD45EA482FED90E03D09A060A1080D2519CEE61819F08E8F936228CAD5CD1F84EADF7ECA3271553CC4430032F74B64DE5DF9E0FA748C392EF4659FAECBBA9E512CEFE426E4E321122DE83D42C7D613F3C6CA6D78AA235BCCC5FA2E80160F41B4BB881ADDA1E1CE7BFDA816D6FF2D3E3171625BA0DC70288F7D714737495307CF9FF2D74924416
ct = 4217FB59FFA4ABDE6A9095497C964DD5E0D3FB1BAB14F09F7D39259632C08AD06823B7CAE69EA9F70B601BA3290FE08652B034EBD3B85C25CC8789980BB9240DE3C7C731879B114026D680D0F24703079D49FA26D04176457EFFB4E05FBD6A20CFE8459DF5D09732B27D5A79BC2AA2AEC4E2116F8566B1AD28D9E7BF402B9ABEB385E52B559278118410802554C6060E3728462A82D4B00D601A5FD2ED292C2640EFA04D9B5CA1EEAB829D400E98AB10B110F98876709D262DDAF57B1DA566ED8FA87ACE2EC9662A1243BDE01DB4FC3665CCF31F166DDFE6B1DDEF43AB458C88BA974431ECF653061D308B71B76666FB29DDBC46318FC107595A9622947B3C0C0E8967EA4A2D83D3E63C2FAB090E82AFA88159F39AFEE3D79044FD80967A62D7D93D349BFA49D9F129BCDF98CE746BF4194034BD669D39960760102B5273E2CDCB3F0EBAA1B77BC876874A2DE2F2D43DEA376C1C79759415CF98A558773871727EADA726629507D4C1D6D1AF8C167EEF6BC1AEAB14B355F6EB368EB94AB2533AC222BB1514AEB801A5FC0F175FE3A92F13D2
ss = B7EC19D26552CD1F9B8B3374B47F08EA

count = 23
seed = FBEA1BC2C379F4F8FDCB0DE260D31CDB064C9EA9B1D6DFBE91B3692ADD1D34DEC9C9FFAE7BF5E72ED2743BA3F9F2E43D
pk = E254187A203ED9D80DE5F5342661AA2027BC29523DEB55B5C5C6251F9CAEE535EBB9856010290E80BC0BF868EC513841514826637B339E6FBCDA6878F31F3DCB6A6152F8BDE52050F3B06F6CA38DC53D8F07214B3D7F286905451408EB453DE9E703D29D860A3F5F93B9839873A3CCDA1585B401A4A316B04444CC0CFB093911FD412BB69CFBDFB36BBBF1D6B99AB54B809040540E56853525416727D084A2B7AC52B793E78A7B9A95AD706CEE088C13E13CAC3804069909EC12D86D22448B71F3EE493A95D75623119DF86EFC7841407D232A2C93CA9C4BA438DC119E9AFC7694923C2FEE2A07E708408ECEB1DD043A43AE00886C7A0C2C23941405154148B1B0EEEF72E853D1D4111F5727F24630B9878C228E429C99231FD7BA5AE0A920F9D8A46102889001BF7C82191F5B5527F7E6010CCE1672174CA8140222217F45D5D13B888C8F3A9B42D476AC3DA974347677FC494D3D8A01B4C29AB8C3A232221812666B5B3C426977DF8AEB5AC40A5230DF3351EE262595A9D435
sk = 5CBB141C2763425C274F7404FE530D9116E08C33F9F200A2FC9EBBE336DC464489861DB8253606971BD0A9008A433ED17752D04023781502E254187A203ED9D80DE5F5342661AA2027BC29523DEB55B5C5C6251F9CAEE535EBB9856010290E80BC0BF868EC513841514826637B339E6FBCDA6878F31F3DCB6A6152F8BDE52050F3B06F6CA38DC53D8F07214B3D7F286905451408EB453DE9E703D29D860A3F5F93B9839873A3CCDA1585B401A4A316B04444CC0CFB093911FD412BB69CFBDFB36BBBF1D6B99AB54B809040540E56853525416727D084A2B7AC52B793E78A7B9A95AD706CEE088C13E13CAC3804069909EC12D86D22448B71F3EE493A95D75623119DF86EFC7841407D232A2C93CA9C4BA438DC119E9AFC7694923C2FEE2A07E708408ECEB1DD043A43AE00886C7A0C2C23941405154148B1B0EEEF72E853D1D4111F5727F24630B9878C228E429C99231FD7BA5AE0A920F9D8A46102889001BF7C82191F5B5527F7E6010CCE1672174CA8140222217F45D5D13B888C8F3A9B42D476AC3DA974347677FC494D3D8A01B4C29AB8C3A232221812666B5B3C426977DF8AEB5AC40A5230DF3351EE262595A9D435
ct = 016A3DADAAC208F3D8F27620EE042FA679DD4B6FE070847BBFC3DF0801BDDA8DAA4EAC86849392AE282B8DAEF58E6947C044049A9301A4D9EB5CF35185EE12C8A7F3BF7BB42ACAE7DC8FF9682E05E2F9CF2C9CA449BD7B8184F1C6DF81B06A6B4C1B1E0FAC5C3777422357E61550BCAC2A5D9C4E02D39FA5D42508725910691D5C2BD582BD80C7440651CF37F7945AB0D0745C35C4BAC215A7088111933E482A3CD477AE1DB7DB2D654C3C9398DD9BA0C389D86F4F116A1FF9570C7F32D8982AFF2959146A6E32E935493BE6E50A0FFDE5E4820044C94CEC9F6E4AC5DDCFE3CC715A42B25F15D704F5DF6E2EA2528DCBF897ACBDCC17243BF348A71762DC7A3AF1D44907FFEF0BFD7C641580D988D4F49D7719936CD01894E2D9C5D95BE562D083359CCCAAA8461966E6A1D60A7E94021AEB7A688529B5E2175F27E7EBD16A69D2D8C123924E6E4361E384A616FF732437C1094F344999C609DCA96FB1B88917F5A051738D9AFCE846CA6A30162085D74C638A6D875B2E3A350127A0AD970DB5C32E66490E1DB4AF6271E79251046D2862DF
ss = E140EB4625F5D1AA558CFD1D18BF9552

count = 24
seed = 7E87FB886BC3C7C9FC12569F465D2ECD12532E76CC27C65644C8D3DD603B0CB2D036C5974E675058F271D5C82AD7A813
pk = 8A0D8E9972CB36C9FD118873F3C1FB89B724DAE8468FED14AF60934E42F27F5F49329430E771013257266EEF34ED34E29E9868CDF4C6CBE75F936E6985E32A6FE03700933E48459F455F349D004285906D4103FA7963EFD357BC68A41BCEC76F31877A5C2668AADC98DF0700A64A4BEB8DC443AACEF70F81F48C0064AC358BDC240DC8E1C9B93D75D75E02A396422C4284F87FDD783334E2213BCCABEA32E1B77701273B3B1CF56A74540E110FF9B4C86597D8F7EC78D1B3AB201C5A06F646EAD438A75F77E7CBB9C01EFF51BA21F89E022363C04E37B57D6029C1C3674F478FDCF467712669C74AA2E39F93CF2450FAE3FA9DEA124270D69883232671CBDE07B63316CD89B46FDAAD6A97455BCB8335F78F1DC23A4E8D9EA53A8F39A0950C53CE2A344A53BA2C1E5F01DEB8B5E4E9CE2291F5692C46C205D9B80340B084B943845318B742600C12FD385BF44DA933FD6C2B5FC43C5F3EA7F056C2C12F823E46F6B598A32C0A627B8F54FE267DEA0206E81902741120FE287E31
sk = 293ABB6D1C207927945417CF84883EF010823E11B487ED55FF8563038AAD865A817CAB9CE98846BA75BE9363718ECF5FEA538AEA90B2A5088A0D8E9972CB36C9FD118873F3C1FB89B724DAE8468FED14AF60934E42F27F5F49329430E771013257266EEF34ED34E29E9868CDF4C6CBE75F936E6985E32A6FE03700933E48459F455F349D004285906D4103FA7963EFD357BC68A41BCEC76F31877A5C2668AADC98DF0700A64A4BEB8DC443AACEF70F81F48C0064AC358BDC240DC8E1C9B93D75D75E02A396422C4284F87FDD783334E2213BCCABEA32E1B77701273B3B1CF56A74540E110FF9B4C86597D8F7EC78D1B3AB201C5A06F646EAD438A75F77E7CBB9C01EFF51BA21F89E022363C04E37B57D6029C1C3674F478FDCF467712669C74AA2E39F93CF2450FAE3FA9DEA124270D69883232671CBDE07B63316CD89B46FDAAD6A97455BCB8335F78F1DC23A4E8D9EA53A8F39A0950C53CE2A344A53BA2C1E5F01DEB8B5E4E9CE2291F5692C46C205D9B80340B084B943845318B742600C12FD385BF44DA933FD6C2B5FC43C5F3EA7F056C2C12F823E46F6B598A32C0A627B8F54FE267DEA0206E81902741120FE287E31
ct = 936A6E3E3FCAF5053B18AA30D9A7726F4714757AB0664C25C0226EA7576F394F0465F1ED5B55642B41A2FE8EC2D05E17A7590291539AEA3DC5BE368476E6137BF4CBAFADF2E6C7643D943BC0EFA1E32A313899B944E4F111792909692854EA37D7D3DCD0E6C213C1C488B5038D78EC7B8805F5F2A2649F7DB35448F74B17C9CE6FB2A4E9805777239374C8BA2546444C6D980B76046BA279E016796A1E5BEB0ECEB068A8D35ADAD865A389CBE4F206403399CCD5FBDF7929E3592CAD1F20453069F5B760AC05D71B7DB363F1A5FDE43F32C7313D6FBF9C19454B2C6650731C5A3CF8197F5E9E59856258291E849A77EE0B477DA84DC4E6040B16482AA2F7804B98C6738C566C4162EFD473C157603EAB1D4BC81F8716AE946A48E976F476290851DC86CAD84284E5566DFBDF3807DC293F096479E1874D9E74EA1173BC18B8B08388F09538C0DA7614735D67D91170E0B033FE63939BD681B27D1376CB4E94EADE81F1045C849AC591B33561CCB3925DE65DBB9690CEE1FCE631B25737E5FBD1D5BBE4580D5F83E6701680ED74EDCE727E1D
ss = 4D8A2D9ED0982994EB99DB04B474652F

count = 25
seed = AD1424E804F306C7FF513DA4C1E8D445AFCA7BC942FAC5C0B335733AAF70693712ECBDE26EA726EE0F9FD9D52A83B1A4
pk = 8279844007ED07AF756FFA31D2979D823E06B28B6BFFFCD81D49A77E9EE12B669E9BCBB55AF3A39E6C42FF646A4873BFC6B39C08E0A3CBB9DC1164064178038FAE82B00212DCDAB441E1A7C21111A21F43BA9364180703E5CD0660130787507C1D100AC7A70B1D6FC895876404833E5D6D172E2C276907EF144C19458A0F18123A4AD3DEC2AFE843D4FF5349826BEEF6D97E32E28695293750D57EC946E4E9F0DB3F67BA06CF8FAB2D51A07791981934ED692E7B5332EF4AE9853EE23EEA35BBAA49960AF04BDA02B9DA1D6AA17E0B6D7F9824775A58050B6511BA203F3A1C25AA150D7B3E6DFDE3BCD45EF19FF04FC9AF6629F86F741639FA534501164DA5B427BB92C45BCF422CB86E14E89D1F0C4A70E3F63CC17583FD2DD953FE1D9734CFC2D26DA0EAFFD2346E98AAA642A0267C734049236409D5B6BFA81F4390B566575741FD5FC2C4212FA4C8652E24E468A25D1D1A2A6170296E55F6605363D1EF1E92860CF0F756C3113FB735E4899F655088215EF00FC439A29F37
sk = 74D87C7556F2671F2D666854A4D6E073E69F35421E6E1A42E1FB7456AC0AA1B97068F452CBA64EBDC138BCF5D36B0A0FADA2A3B374141E098279844007ED07AF756FFA31D2979D823E06B28B6BFFFCD81D49A77E9EE12B669E9BCBB55AF3A39E6C42FF646A4873BFC6B39C08E0A3CBB9DC1164064178038FAE82B00212DCDAB441E1A7C21111A21F43BA9364180703E5CD0660130787507C1D100AC7A70B1D6FC895876404833E5D6D172E2C276907EF144C19458A0F18123A4AD3DEC2AFE843D4FF5349826BEEF6D97E32E28695293750D57EC946E4E9F0DB3F67BA06CF8FAB2D51A07791981934ED692E7B5332EF4AE9853EE23EEA35BBAA49960AF04BDA02B9DA1D6AA17E0B6D7F9824775A58050B6511BA203F3A1C25AA150D7B3E6DFDE3BCD45EF19FF04FC9AF6629F86F741639FA534501164DA5B427BB92C45BCF422CB86E14E89D1F0C4A70E3F63CC17583FD2DD953FE1D9734CFC2D26DA0EAFFD2346E98AAA642A0267C734049236409D5B6BFA81F4390B566575741FD5FC2C4212FA4C8652E24E468A25D1D1A2A6170296E55F6605363D1EF1E92860CF0F756C3113FB735E4899F655088215EF00FC439A29F37
ct = A558C101EAA95CCCA8F77EF84D78F02B24BBEA29A1750FFFB2B39D65D92233AC059BEBAE2F1CC14BDC06F36B8520C699B9C3353841DFC8BEB7CC7B8485A60239AAAB9E9768509CF5613419F8C777EF4FA526ECF0DB95C3E2A5803B91C94450E2D4650426C31AAFEFC8578F0AA636C645430A1B99DDBAA0BFE8E582AE68254BF3DC5B47828DDD9746F4679B413B36F5EEE1958C2365FBC11B9E61B943FC333E4548ED38CCF3FA9A3865F2F52881386D38774FD442F5A8B8441B6E6E5020BA62A508C5CF34463489F843CE8A03DF70BE4EA8BB1A25CCC56E78E36222B42E9B10575B2DC0C46390A4628C1944CDF678F0C37C1EC4889215440621848F3A5EDC35B210A9D03D76673F13F03FABFE0685399DFB2D63F27C188255513776ECBD20759C21F3D2742DA6F19F036869B9ECFA1A996738D7DE2597B08502FF3E647727B8F4F70F71829BA84C794815F67C2EDD4A0EC2DA465DAECFB65ABF7B1960A0A084C1D15A9613868177CE175D696C6F85945679983DDBCBE95AF16321B73D932943154C984C8AF76058E5CDC675B72199FFFC11D5
ss = C1E47D780D50986E263DD4BD763378A4

count = 26
seed = 7C33CA0E987226C8524DD56C811FA4D1CCF9995B1E4E4DD5B1481974E88CFABFBF6787775C2611CEFB27ED4403EA9B46
pk = CE9599CC6FBC1FD726E186FA7D4D44B642F7A69698CAE6B5DA5D30C6DD01D95554808827411ED0154F3D4D641B1E9DAFFDD0204F389900DA38D06354315D020B26A7502C2CEBD2FA830BE567A3B3B151A5065484BCF23C4008E518978EDE6AC321287198B2DD345D145027D4379E2AEF221D7AAAB60E101A15923574BA351B8B72CFA003854B8F9195433A913632DE93C00F4E8E47CC4CF4D43724F9A30951C94D7846684451C17176A3F3E886EE08E3A0CD19CE6A9C498C8B1077350B6D79BB7382FC0FB7E339643196AE5906DC597EEF5213723738017876B5E149BFD83942E33375A19F93C8E129CAC0BD783EFA5E3917EF1F8949246BCC10DC20DED4FE598AA3FCD5FF773E9447040281B8DEE853DF7E0F8514A272C79E0DB0F92C43AE49765BC086CB6326C66CA297C12A46C97E6070E0BC5135FC3C8DDE16343DB796A30FA71DEE9058230EB5D764FAE94B60A13BE648D8EEBDF22D9DEC9C019CBCCA8A9585B59D42A8F84D7E37FE367635CAF63F6BC5BCC706D81E6204
sk = 013BAB0212D04ECD54B478DAF72748003A25E2CB060BA6CC9DA0C5DA5F195B80FBB99C2E8B06926074F3F604B3F6195B5A5B9737876BBA02CE9599CC6FBC1FD726E186FA7D4D44B642F7A69698CAE6B5DA5D30C6DD01D95554808827411ED0154F3D4D641B1E9DAFFDD0204F389900DA38D06354315D020B26A7502C2CEBD2FA830BE567A3B3B151A5065484BCF23C4008E518978EDE6AC321287198B2DD345D145027D4379E2AEF221D7AAAB60E101A15923574BA351B8B72CFA003854B8F9195433A913632DE93C00F4E8E47CC4CF4D43724F9A30951C94D7846684451C17176A3F3E886EE08E3A0CD19CE6A9C498C8B1077350B6D79BB7382FC0FB7E339643196AE5906DC597EEF5213723738017876B5E149BFD83942E33375A19F93C8E129CAC0BD783EFA5E3917EF1F8949246BCC10DC20DED4FE598AA3FCD5FF773E9447040281B8DEE853DF7E0F8514A272C79E0DB0F92C43AE49765BC086CB6326C66CA297C12A46C97E6070E0BC5135FC3C8DDE16343DB796A30FA71DEE9058230EB5D764FAE94B60A13BE648D8EEBDF22D9DEC9C019CBCCA8A9585B59D42A8F84D7E37FE367635CAF63F6BC5BCC706D81E6204
ct = 289F78A97169C9830B2D998BDA6FA91A2AA7977CC9AB353382F7583AC2CF30D356D68FE166287E76258B6F20D13D56625E7EC496ED1F2133ECF21456D2F008E99AF70CFF77D796DB88E9E797BA70109CDFBA95B68B314CBBBE1117A92A266245A03180E90F65EAC133DE89A32F25B42C376ED2C13018828D6AC0748C563D13BD77DD19D75E8DCBF7AF484FA13B0874B82F7A5CF93BF931ED1A1F32EB2FD1CCA3EE6196FC6C6214FDB87CE278BBE17935E4AD4D6386109B46B51014AA360B3F0DA59B8FFA65D8C50A62C7F0258D1112C0C1D4C0D1B6793EBD65898D4EB8F0F3D0BC34D0F7DC72DEB0B7002B971CBEDF4EDD0624759C4F1AA86EAA8B2F75595719DB2350564F7DAD681ED09E0836E01B39B704D5882FCDB8DA2774BB2187E4EC25B3AEB30E47A32B312B944E6467D292EC5AF5B16FF970F44C49913095346FA5B36928CA2957F3989AECAA36899E3B14522B65E6BB541FF27F9E1EF470E3C738A26F67C8DF9B580112C2C72F958E437BA3C019CE3A233DF01BC028B19AB3CC3BA74AED19418FAD15F6FFAF2FF6C630D3B6A27C
ss = 5F41497B81BC1B01750D99ACD47D7C3B

count = 27
seed = 54770EA1252EA2857D6635151194F5F520ADEA8A41E409FF498D40C271359858FE2B084D5B96BEE087B8E8F4DD4E00C5
pk = 8040151EF6F2F1FACAD513E56755FB7836A4E36AD9B4998879CF56E2FA2B1C9DF9B4A77A36EB93921E68E7FB21C54746B8F68FA766D9B3FED202577EE9043DCBAD7E5C58623DB70CCF1B3B341026ABB5F675E3DAF0C6E1045A9D682DBB5318CE310796CB1D2B4666EB36C6484874D3DD592E8650503E927255DF91E98B0BBECC66DB58F4DAAC243B2334226D53F826F6988D7C3D38551927A784C8BD862BA074B8C940B356977958BF06B2B6CD27DC52C9006901E741533E6104210B1CE5D8878F8C58318BFEE9AD0970BA2DCB0C15178B4F015642042870090A3468022AE3EE3EBB054F30CA55FE9FCF0E00D1006D156C123843B6338462A5252F031D7D771B64701D1DDC6828EE2A0F94517F5A69B39E4184637D1E4E51DA87DD67B01F97C5E0FE58C0C06D47AA53816B74D013E163CE8A0919308AFC6646FB150137C46918B5C4D348D3A07C533817027AA0534654EF8AD68A0B5134D40D453DF25B20F6CEEF0A637A0FF7E11D59C638AE6EBD04B62E5D12C5D1D1FFCAB231
sk = CCB073C4B90BE0AD746E26FB093B60C70110BD1DCBCDDB5671600A8982C350DF524CDE514431DED7AEC23576530894BCBF0EC0BFEF0BB60F8040151EF6F2F1FACAD513E56755FB7836A4E36AD9B4998879CF56E2FA2B1C9DF9B4A77A36EB93921E68E7FB21C54746B8F68FA766D9B3FED202577EE9043DCBAD7E5C58623DB70CCF1B3B341026ABB5F675E3DAF0C6E1045A9D682DBB5318CE310796CB1D2B4666EB36C6484874D3DD592E8650503E927255DF91E98B0BBECC66DB58F4DAAC243B2334226D53F826F6988D7C3D38551927A784C8BD862BA074B8C940B356977958BF06B2B6CD27DC52C9006901E741533E6104210B1CE5D8878F8C58318BFEE9AD0970BA2DCB0C15178B4F015642042870090A3468022AE3EE3EBB054F30CA55FE9FCF0E00D1006D156C123843B6338462A5252F031D7D771B64701D1DDC6828EE2A0F94517F5A69B39E4184637D1E4E51DA87DD67B01F97C5E0FE58C0C06D47AA53816B74D013E163CE8A0919308AFC6646FB150137C46918B5C4D348D3A07C533817027AA0534654EF8AD68A0B5134D40D453DF25B20F6CEEF0A637A0FF7E11D59C638AE6EBD04B62E5D12C5D1D1FFCAB231
ct = 1F0FA0104C96144E7C28342311FEB27FAF006F7E065C297D40EA0366793B14EA89F0950684364BBB1807DB5CC343617ED2C294F955E89C7D3FAACC6335CE29EBCC10DC040A255C67A11C6DDB62216BDAB157CBB10591367F57DA8A2034B8FCDE021D96815407F76ECF46E636528B486C506BB41654914CFA6EE82E59722D2BF1DAC285BF3B8AF2C1BC8A49597C275A1B8BED243FDF55F35A323B5CFC71030F90879815700A231CFB298C5827852801772624CA42EE84F9B66933F28E2F3945320F777522A373C02BA874F3D37EBFFBC933BF07037B3FB6821A4E8262467112A9A3E51D5D872F1E96BFB4113A5C3282AA65B9C16ACAC8EA376B163824B3EAA169587D9B416BE0455353D3F32C992C199D362169C73472534BB16568A702E5CF3C320F53E1CFA867AD0332904B487FDC2CD8D054A45E2CF490E6C93EA1DE39D97662877268386D684F044D09A1EF6BE2F5EBFB6D66DC7EDCAE80542EC71F8CD85FF83E7EA87458EDD16CD6DB61BD3BBE604283538445D86B022A1A405A399CCD476A0AEB865FD29A37621C3851BE47E31E9AA9
ss = DFF7BA4FE3860FA139A2D748AAFFED87

count = 28
seed = CD6CFE94E9C0A1CC4FFDCD2D7876504BE5F50F1D1CA5CF93482943465B268276056F2781F4DE805C138976CA72621387
pk = A84E38AE1C3E876C77635707A79507625B8E65BD47B168BDFB6A2D0325DB44F125C791940CC97428BBF620FB79F175DC697A9FA1367FA36C9577CA5ABBCE0CEC0DB3F441869FE4426B5D6202B6D3F9D24921F8530ECDFE9A10DF5875A850528F142D62CB530ADF9BB2F9D05A61FAB58AC113B87835DF34E6BBF9B5EF0424E13A2FD86DB5DBE31EDB2A7D11F3CBB522409E718371C59DF5AC109792560F60A96DB5067820694A4CD1006E43CAC5434BE2291687B0E0B2675C31AE8ECB3645BA884297BF32237DC6888B7E090E7B9A82C2743489D019C1E736A8FFE3534DF4EF076B36E2E6E921CC0947203D6498BD8FF1B639CD8FF07F73985B73BA28B982F9ECAAB5441A201CCDA36D498BA840089B7B9B68FC7E819499A3DDA3A101A0BBDA6A6D3D4D6F791C9E417EEEC10CB5273A4E198540815A6E94542DD02C73908A73D48F346CAD48102DD7BD311F5DC56403A70910F9B04FFAC8D0210DCD96601B26A021CCA33DAE386276BCDC54C57FA39D54023B8757C14AEB4A7F11
sk = 2E889F44E28901E9AC7CA6B2FFFCB124C8979401B17064D70E145E44AAE52CFC609E6F47FD7A6F6AF877190FF52256D0AC5B05B89C3F440FA84E38AE1C3E876C77635707A79507625B8E65BD47B168BDFB6A2D0325DB44F125C791940CC97428BBF620FB79F175DC697A9FA1367FA36C9577CA5ABBCE0CEC0DB3F441869FE4426B5D6202B6D3F9D24921F8530ECDFE9A10DF5875A850528F142D62CB530ADF9BB2F9D05A61FAB58AC113B87835DF34E6BBF9B5EF0424E13A2FD86DB5DBE31EDB2A7D11F3CBB522409E718371C59DF5AC109792560F60A96DB5067820694A4CD1006E43CAC5434BE2291687B0E0B2675C31AE8ECB3645BA884297BF32237DC6888B7E090E7B9A82C2743489D019C1E736A8FFE3534DF4EF076B36E2E6E921CC0947203D6498BD8FF1B639CD8FF07F73985B73BA28B982F9ECAAB5441A201CCDA36D498BA840089B7B9B68FC7E819499A3DDA3A101A0BBDA6A6D3D4D6F791C9E417EEEC10CB5273A4E198540815A6E94542DD02C73908A73D48F346CAD48102DD7BD311F5DC56403A70910F9B04FFAC8D0210DCD96601B26A021CCA33DAE386276BCDC54C57FA39D54023B8757C14AEB4A7F11
ct = 89A76D1EC84283D0962457BFBC983700C07E3BEEB4EF3663240F7AED7CEC2F894F281C75FB13867C38315CD60CC2F9359A72657EB628FDEC18E9CBEEB6C70AE216F545F508298546E6833BF59025BBD178B1D0C4B0DFDA14C5D0386275DD1684D9D5960D827EDA45C4AA2130F42DB923B80E72A84E067DB26234F550D20313AE3F4A6BEDF5E739E06C3DB67C4FE786AF683D4A4C6580FCCF353A9B69AE42BC875F315CF783347301C63A17EBDE1F02971269D105E9B22E00C556E8BA12372397F9C457087C62EB6ACB46F287194ED3A1A3A150CE594E935E233E6D1BEAFA055D9F165E750CD9AA599D48020EB62B4AE88DF7277628F1D333F1EC0910C8390BBD8F7384AC67474ABBE19C80AD6170D80B767F01E099F988C1E905418BE1CABA9B342672DAE18F246246C6AD9F47EB192AB189BD5455BE1C2AA848279C3E4BE28963EA258FC83A473F44971CC7B16EF791A645F66AFD5AF42FA4F515431C79FD284CE75FF35D3AE77A2100C5D28A82F12E423A9EFAE6C76250C62D7A6869C82ED45A41170F21E7FAB4FE7E082BE872D897BE90
ss = CBCDAB4276831A699154C99595F1BD3A

count = 29
seed = 265EB2DE7099E4BD5614E5DE7F0C2A05C78EF3E8E2DD4AE4CB70F3E5E59C8D1D88248303F07DE0C5508652DA66B47222
pk = 602FA1C3C69FEEC48E7FC1586A996317BC4C857301F0331CA908B7DA4FE4DBAE7E191E3450ADD014DD3D21213536432914B27D88E0B5B7C5A3D1A8CE59280327F2B8CC2A5A3F067A58A0213AD72657F3EC2F6F841ACDEB7F024B7E4E7EE885C0AB8489AC68CC497009A19C3B3A2E70DE295E211D004A36A8AD198310F13AB7641988D29714D3CEF1EEDDF02196AF445ED7443D45F58E843CEE8EC0E008C64158976FF2BAFAA6CE9F81D4547DA454DBFD41DEF879B5163CDFC650A2612F7B506DED6036D2F9CFB027FFF52D59A74E99F200DB32E125C990D4A3DAD97498AB197E36BD9B7F91954FC07034B196BD83FA41B2F34BDA4EC2B2184C62B725E1F95EE62C54F26E8CB8553E44CD094AEA7FC9036C6B7F47FE582E1CEF86D660233A9EE9A938A2BB56D0B057B4422C2360E84918B5415800D0FF6CF127232383CE42E46CE23522387517DCD20C3B67FCC7BD09AC8C94E9329F6D7B0B4ACCCE0A97636CB9A51EB259E9CE6B061CF606E04C06FA6D7A4B570660C4BF524D25
sk = 174AAA36410566DC15A5E62874218D7ABDDE0B2C0F30D87750A7A2354F7E5CEFA6F4A4E9A1C411EB9364506E9E1204A8ACB3CB77FBD2C40D602FA1C3C69FEEC48E7FC1586A996317BC4C857301F0331CA908B7DA4FE4DBAE7E191E3450ADD014DD3D21213536432914B27D88E0B5B7C5A3D1A8CE59280327F2B8CC2A5A3F067A58A0213AD72657F3EC2F6F841ACDEB7F024B7E4E7EE885C0AB8489AC68CC497009A19C3B3A2E70DE295E211D004A36A8AD198310F13AB7641988D29714D3CEF1EEDDF02196AF445ED7443D45F58E843CEE8EC0E008C64158976FF2BAFAA6CE9F81D4547DA454DBFD41DEF879B5163CDFC650A2612F7B506DED6036D2F9CFB027FFF52D59A74E99F200DB32E125C990D4A3DAD97498AB197E36BD9B7F91954FC07034B196BD83FA41B2F34BDA4EC2B2184C62B725E1F95EE62C54F26E8CB8553E44CD094AEA7FC9036C6B7F47FE582E1CEF86D660233A9EE9A938A2BB56D0B057B4422C2360E84918B5415800D0FF6CF127232383CE42E46CE23522387517DCD20C3B67FCC7BD09AC8C94E9329F6D7B0B4ACCCE0A97636CB9A51EB259E9CE6B061CF606E04C06FA6D7A4B570660C4BF524D25
ct = DFF7510B165CB9F29F5584E5DDDBC8C3CB956B474F3F8516E1121FCE930AE7A9641CAE16D79028556C6C68CBD256E325F6554AC9718BB84B21D2224DC7481DC9D010B5965CD5EE23A99E709959FBAE0ADC15BA1BEE2EAC6D8DB69A23CA88DDBBF40CD8F28050BA3EF85BFBEC68E1BD470FD99B56C838BF54FE8B0FD5062A46EFAE8DDC470F28F522A81D00690F96F16B7E6D332F6E3E0EC121D5F962BE727D96623427D27835CF7ACE9FF09F920CD4FD6FEEE3FBCA22570C7BA1E44C2692C16FF72A863B02041B89863EE94082F4E5BE780103FFEB01F31945B76EEDE4A93F9203A42CAF45B3FF0DBE8B510A0FD486694E7876A6563E41562C126A2D1B07FDB0D9631A4B176F6C8E43C281DFE47B699C80F3675894F418E041DE8F795BCC5638A1430AA8DA7E77790AE036C6A167EFDE863C81029311E2E1AED01D1FC3AB69CDFC3E41AC1462BFDF6F80F33BD0C2C1D7EE75157B492AFD539F188E93260127A97A5899BBF7332D7B51A454E7A441FF4229C9843E17EC81CC3D021A5BDC35EAD3C3B75D13EDC5348181D09615047AAB3E7A52
ss = 772CC9C84D47BCA08F41B27DD594178F

count = 30
seed = 806BBD111F27C2668318387BD0830F65EC21A51AF01985EF48D03D64E1958FF7EE5133A4EBF6DBF36329BCAAF65F40EA
pk = E84E74A51A664F28EEFD16F9EC713AEF6C23DA691B46B14352ED75096E47764276CD9F9801480CA3C6B8225C9CB876E6C617EFDB0C81AA67516347F368E80D339B639358BF0ED636A71B39D0089C3AA7A90B810745637BD27477816D56653A90CD8D1EEDC71712B109885524B7CA9D008764D9579C903A01B772A10CAE0E8FDFFA8A9734DF09CD084B3A2BE7402F7C13514BF0FE170B3C92B5E5523B83AF214900EACFDFD9076F315E5880E65967BF0BA131957249C6A4C0E618DD290DC3CC039D1C2E392BF5BB14D70CEE118B94E727DAE15BFD0C1CF688BD5143E58233C7981459FD230FAC0A444EA0E657345FE0F60799690DA4FE32671023173DBF0A4AA0DEA36A9FFFE0A2939EBE6EB4216EB6D0E2F5F10ED26F1097CDC1CF8C8106E57BD756ECEDF8DCA8A43584CDCA0DBE7B2A6C68D3341E5F458AD229290E94B5E942E263A9142B868F41CA841E11F05499E701D6C0ECCA5D60CB2DE0FB67A4B6544DC7BD403233D5A87ABFBED2BDAEDB2345399D76D41E89E2226C3F
sk = 351FE4313E2DA7FAC83D509F3103CAF7B4C64A4D458FEFDFF072D9B5A99F9C7A0A011E4DC10F6B600D611F40BBA75071E7BEE61D23FD5E0AE84E74A51A664F28EEFD16F9EC713AEF6C23DA691B46B14352ED75096E47764276CD9F9801480CA3C6B8225C9CB876E6C617EFDB0C81AA67516347F368E80D339B639358BF0ED636A71B39D0089C3AA7A90B810745637BD27477816D56653A90CD8D1EEDC71712B109885524B7CA9D008764D9579C903A01B772A10CAE0E8FDFFA8A9734DF09CD084B3A2BE7402F7C13514BF0FE170B3C92B5E5523B83AF214900EACFDFD9076F315E5880E65967BF0BA131957249C6A4C0E618DD290DC3CC039D1C2E392BF5BB14D70CEE118B94E727DAE15BFD0C1CF688BD5143E58233C7981459FD230FAC0A444EA0E657345FE0F60799690DA4FE32671023173DBF0A4AA0DEA36A9FFFE0A2939EBE6EB4216EB6D0E2F5F10ED26F1097CDC1CF8C8106E57BD756ECEDF8DCA8A43584CDCA0DBE7B2A6C68D3341E5F458AD229290E94B5E942E263A9142B868F41CA841E11F05499E701D6C0ECCA5D60CB2DE0FB67A4B6544DC7BD403233D5A87ABFBED2BDAEDB2345399D76D41E89E2226C3F
ct = 67C81D37A9D752BC533D20675BD31F9841944B908A203302E2D2064153E051347D54795294182BBBDFAEF34EC19FAA858C0739C0CCC010F7FFE790E5D67E0A79D26D5E23FFC0BB41F41EBAB2B42E869722D294A88F391D7BD95BC9FFB8F81AC0EFEA51022E497E32C9D96592BF9B8BADD0045552A93FA805874A4DC3472FCBDF3DD4414893BB48F75EDAF36E4010CF3BF1379650046B8635E2B9B1954E68EDEB04609DA133E30B118CD130B8FA70B905F08EEEBC86D8AC707AC0E8640E61999A76A9FB260A39BCEF26A4D9666F32339560EC3CDFDE187EFBBF538A15042DF03AF2434B4ACB2337FA859B4A148FD340D92408E7A17E9306E9B16C6434A46C3BB2AA4C086390B7421325B864F0D16CE21E138887179702FA207B65BFE42A803F67439B4259CE7AA97829A9D91C975EC0577536AA9EA4E4DF6B99B710BE57D56E1B538F7909940068DF42A47171E61669DDF1F0A3F346E963F897F3B29E76443E5A7225D919350009FB03CCD59E187533035A3E6999E6B46FA00B0A7CBAF81176849220EF4758AC61D2A3B6E0F3206A9895769C
ss = B2685302535EA18B700997146C2A54B4

count = 31
seed = AD540A9CE816D6FB1661E5483C44F6FDD00C9E7BD1A8CEDA4B4C4D3697D4F78ED0A56954996CCB7DA96ECB8F5CB15809
pk = F11CF893CE4F794216B11A75B0B2981F8DB3FC8550A75C86DB2279FD4CB445E2F4D21F7380570832963F1445AB898267EC1B84196CAC1A84566D7C4D334505C5AB98D638B2E1A5766F5F716FDF1177AB864D2E2CE10BF8DC3D0A3CAFA05B587D746F5CC78E32F283C035886A96698BDCF0F2CAE0B5D4B9C725A3EB2EA13AA43AEC99488962F8B9A5038DD655C0237023CF21002E3E19B1A993C9118DDC74A07B4F9585C0BCEA6E401A384C4F411A5A6E97DA4E53DA6C8F39F62304F201EC93EDFA76FDA6CE557C4389D5ACE744ED5578A391B6AF01F00F93F4EC7CE41F5C5D1FB11D367C0F2CEB4DD9A92BD8948D777F4285EEBB0870C9C39BD0523804A9FDDFCDE61810D8B958E172702EB97D10A98E9FDDFBE1FC2146230AA26B7FFF48B70ECFDBEF9E7CBBCC12308992FDEF8CA0CD9F0A387F1B68D661A46C37D7FAB9A4ECDE63BEF0A3D7732CA7A8E18C88EBEDF546E842E27CC04FA78A8C03DF22A747E2D627FC9EB3FD8A57337BE759D1957C1D31FCA3FEE6D171192B0C
sk = 9BC5315580207C6C16DCF3A30C48DAF278DE12E8C27DF6735A4D0A8A41C4F666854E9B13673071CEB2FD61DEF9A850C211E7C50071B1DD0DF11CF893CE4F794216B11A75B0B2981F8DB3FC8550A75C86DB2279FD4CB445E2F4D21F7380570832963F1445AB898267EC1B84196CAC1A84566D7C4D334505C5AB98D638B2E1A5766F5F716FDF1177AB864D2E2CE10BF8DC3D0A3CAFA05B587D746F5CC78E32F283C035886A96698BDCF0F2CAE0B5D4B9C725A3EB2EA13AA43AEC99488962F8B9A5038DD655C0237023CF21002E3E19B1A993C9118DDC74A07B4F9585C0BCEA6E401A384C4F411A5A6E97DA4E53DA6C8F39F62304F201EC93EDFA76FDA6CE557C4389D5ACE744ED5578A391B6AF01F00F93F4EC7CE41F5C5D1FB11D367C0F2CEB4DD9A92BD8948D777F4285EEBB0870C9C39BD0523804A9FDDFCDE61810D8B958E172702EB97D10A98E9FDDFBE1FC2146230AA26B7FFF48B70ECFDBEF9E7CBBCC12308992FDEF8CA0CD9F0A387F1B68D661A46C37D7FAB9A4ECDE63BEF0A3D7732CA7A8E18C88EBEDF546E842E27CC04FA78A8C03DF22A747E2D627FC9EB3FD8A57337BE759D1957C1D31FCA3FEE6D171192B0C
ct = 1AD7BDD059DF883874EE21BCFA59493976E56B24EA8A747D586F462632E84AB3FD39DB97218916D927AFDBEA2DF448D940C664A3DAE6671AEB5030A65DBA39C75CB1D9173D0C1C9FCCDFC84DBD3A6519488F63E894572D134CD382DAF793B27B41253786BBB7B1E717F51335466382463DBB2C9CD6E53A1E4103C7671C0217C64A667A7D24DA0E1616A1AF9822171076717A2AE2A52E50D9A1499799885A8926F96410943D53E006107FD2749D34CEAA6CB5DEAAE678CBD527DA66DF215936E1AC8DB2A6177B4E17D7947693368B287AF67EF374B145D484EDF3890CC2B2AE378257BE4651859F9757BB809AAB434D045CC92E219E73A19679B50415153C704FF16FD53C5FB0E13361D444B64B41AD05977762CD174A3BC87A888844F223A799B360DBA68886A2E532DF2E893C8966FE1E2081145A3986A0114324B1F9A5677C5865D721CFF33EEB65112CA880F47E3F483AA76F078A22D1BBDFE80A0D3E672F5322A8EB72E23028B94997F911F6C0AE21A837A46C597FE0D53201E426F9C4B9B37F9B583ED394C5A9DF4C2A8A50C6166CCE
ss = F7D9BF21FF4E2112EE4AD1C0811B2B32

count = 32
seed = 288A5F2684D862A86D2790AFDDDDBAC6FDA934EE7D2E6DA1508BB550838609E8107312B28E00A6C01706374CCD3AEFA7
pk = 09C8B819C7866E21006B8DE22C28AEA4AC787B9EC69E0C25848B34243593AF30340DF2A8868EA66E31B91E041B18C62CAA6322B18EB19B9FFBB17B5FC9BE1B4D279DCD851E0BA8695D0869254975D0DAE7952E4D92F991A287683694EDDF6E25D08C338255D8FC8A4D91173D73CF56CE890C9925520B38C0DB6F0DED2437324A568482E9BA4B7CF4693CCCADE63869163854E8A081C063F86EDFB342DB825671CBD4641BB8B2CD88971AD57393F618E2EA8FE7D79C764FA151755C6712B9EE564A98B294E3A41ABC33C06D90F7928AB797E3A173E1AEDEFF704EF6B64BDED85F925D4428E9BA58C3222D9512B7DD2E5F4C4A5BF77CB68BEF10CB992C0D1309E734B5160B67F260F8119404F1A85B22E79BD202CF9952AA0CAB0C21C12F1B6EBE0C6A1867291F9EC2503C51C0AFA08C978A24E07E32411F76C9470843C04E4B542B463198911E20369A5F5B849FF977ABF028BD8AD61326BE23F5679A0207D73B3DD6B13DCEA58F67D9A7159BDBF708955D0DDBA272EB9B476405
sk = D8B907B34D152FF8603B73051F772DAA71EB902C47B7E2F036B817736CBC5F7B1DD6EEF5FE6332FB1A598F3871E5470D440FD2EA631DA20A09C8B819C7866E21006B8DE22C28AEA4AC787B9EC69E0C25848B34243593AF30340DF2A8868EA66E31B91E041B18C62CAA6322B18EB19B9FFBB17B5FC9BE1B4D279DCD851E0BA8695D0869254975D0DAE7952E4D92F991A287683694EDDF6E25D08C338255D8FC8A4D91173D73CF56CE890C9925520B38C0DB6F0DED2437324A568482E9BA4B7CF4693CCCADE63869163854E8A081C063F86EDFB342DB825671CBD4641BB8B2CD88971AD57393F618E2EA8FE7D79C764FA151755C6712B9EE564A98B294E3A41ABC33C06D90F7928AB797E3A173E1AEDEFF704EF6B64BDED85F925D4428E9BA58C3222D9512B7DD2E5F4C4A5BF77CB68BEF10CB992C0D1309E734B5160B67F260F8119404F1A85B22E79BD202CF9952AA0CAB0C21C12F1B6EBE0C6A1867291F9EC2503C51C0AFA08C978A24E07E32411F76C9470843C04E4B542B463198911E20369A5F5B849FF977ABF028BD8AD61326BE23F5679A0207D73B3DD6B13DCEA58F67D9A7159BDBF708955D0DDBA272EB9B476405
ct = 5EB0EF6306ED2DA3349B96D8DF6C877DF9251EF0742858F836C183E2BBC104945915058FDCB10D705B9E6E4525AA782B08F6DB143F1B063E6ED4770E22AF17D41B326A0099CAFA6E532B2749871C955AF3DBA379F1CAA22CD8547F32F284548CE167B71437FB570881EA43DD260C5663CEE7306B6E0DE07B9528C1ADF70E7D810031BA9D2318A8DE489E2A8DE8EFC2A48FED222CE2EE81A1299475BBE2BA89EA01093EE7899A9AA22F10C418A57F3E07C1F7E8BDB6CDD95AB81668A73DF595CC9C9B94C09C836C77CE2EDB27F26D5499567A44B056ECEB5DEC817758FB38456EBFFB92114452030D95CEE601CA5AF0FB8F49C978100FE421E435AE0683542C4618A19932B6B25B64668017411A296D3E0CF13B3176C50415E5E9EB474BE94ECB104E6D5E2AFC78A21B8AB82C586A7DBBB81CE389F8D9BD8A6ABE3EF005B2B3ACD5853259606ABE4675E4A24FD71DF08410B38492EF65300203D87CB25EF21944946DCBD9C122E95B385AEF1B7005C066CFDB604E21372EA8D90096BE597E14A39450D87E1B6E7246D5C78FEC6D97C37CFB7B
ss = 84B8602DD674AA0BE4597F8A6416FEE1

count = 33
seed = 4635DC5BB92EF98CDB6220DF0DD717C7F8158375EAA2B78FC3F0B58E9C9653E92684CAD3461D9158A481DA3D14694C44
pk = DF1ECEAAC4E613ACAB5B4E81D5C877DFE08B2313FB3196E6AB3ACBB8C4283360646AD45391FF36162D46F75235ABA8E766332956420B21C3EC5A14D01F003C1F267C6386AE7363642A4D33C38D886AD637FCB716E67B5C94392B4D6B19DBDB147CE0B62C41C092D6414E7E318B80E29BB321BE4959C0577850E1FB33BA251D5D4AEE9C1918B8123E70DAD5BFCC94F72322DAD2315111B3C654C5A98C37A3DB1E846EF06289D82109B8C8F59669A5EC82D1D25A29A5F503ED5DE2C8FF227A8A0AC553CCC3AEB95F2BBBC794D8B0BD947E785AC5E3EE4D9362613C90CD687D1124B3BFEC0725A55D7DA9454F91DF9CE2352BAB349EF96846BADE23D90DDB62DAA3CB5DB6457AEDADF67E496888AF65BB57F9CAAA4D051E8D80B626A38B1E570A77BC0CF052A8DB6F2EB77A83D59AB4162552D903B5E99AEDAA35A5389750AF399B7BB5492F60C3DED13E5659166E29FAA219AB48C487F8B409C7DD8EF1D33FD4338307E44F1207B250ECAB66C2430314FF4D128C1B7DCDE003A824
sk = 684A29E4E5480A5F2533E1526B5FAC8CDF5927F3D85087C775D12195EC32A8686D0600E45D4A7F54219B0D7A3826D193A51B9156ECF2ED06DF1ECEAAC4E613ACAB5B4E81D5C877DFE08B2313FB3196E6AB3ACBB8C4283360646AD45391FF36162D46F75235ABA8E766332956420B21C3EC5A14D01F003C1F267C6386AE7363642A4D33C38D886AD637FCB716E67B5C94392B4D6B19DBDB147CE0B62C41C092D6414E7E318B80E29BB321BE4959C0577850E1FB33BA251D5D4AEE9C1918B8123E70DAD5BFCC94F72322DAD2315111B3C654C5A98C37A3DB1E846EF06289D82109B8C8F59669A5EC82D1D25A29A5F503ED5DE2C8FF227A8A0AC553CCC3AEB95F2BBBC794D8B0BD947E785AC5E3EE4D9362613C90CD687D1124B3BFEC0725A55D7DA9454F91DF9CE2352BAB349EF96846BADE23D90DDB62DAA3CB5DB6457AEDADF67E496888AF65BB57F9CAAA4D051E8D80B626A38B1E570A77BC0CF052A8DB6F2EB77A83D59AB4162552D903B5E99AEDAA35A5389750AF399B7BB5492F60C3DED13E5659166E29FAA219AB48C487F8B409C7DD8EF1D33FD4338307E44F1207B250ECAB66C2430314FF4D128C1B7DCDE003A824
ct = 2FBB4B7D16A035D71A43587489EEF8EA6CEA196FADA08189419E9D50B20AAE6D54A67957C6FCF426CE8B47A16BBB423A82E8D009C58D6614B497F2C6D2B12ADB6A8F68A146C859CF72C05B97BC093479B557B064570E93359D4DE97A6893055A02F368F326765169DC55C1773182C22F14B4ECC549BB867F0BD598A6AF095E14103E48B815A5833E52D2F50C5F257B01B702197470945B52C30666D5738F5BF83C55CBD02984190724A315D4A95160E111B586FEA19B94DF37B8ADA41FF5D848D2779108EA429BDEF9669C80BBE25633114659F096EE9ECE8F377191815F4322BDDEEEAA143D1294D6EB90ADE4DC75AD81326ECFFFE65A91FF955D3778BF635060F88D9F880871AE9E5D464D76B9FEAC1C1DFF4442216C30B03B871DCEC39B2CFB1BF0862287B7E9C4C30B704BA628EA93B5C6558D8FA869B4603A567F996DF351F2D0535C4601730D056D357B49E9139408EEA2F0E1A5794812E5A2D303511B65DA8F8CD1019128D7F22A05F8143144F4F7E184E7280D1EA815B2226E4BB153A5FC6AF18539F7797CACB4F80E3334E452E2
ss = BABEDBAC90695F480D6DE1302F6C7676

count = 34
seed = 5DA2C51B4ACF488C8BDED5E985CC4702E4A7BCB248B5AC18AABA529F7F9CBF30EFA776E99F76D5C1686E94F50FB57DAE
pk = A2F678AF9D971B311647B0678E2CF00415BD9DC09B4A2C930527F271BFB61B56409471B321C8C2F43D9CB54A3A2103A3EC40CC41DB68CA8DF9191A5B9253397901CD540FB69B91FD5D7660B55CCF3463F78F521CBEC327892118A95D3DC9826A26632016858609360821B03CA33912209316F8AAF2FFEE278E65541861236A165335CD20052D1CAEB26DBAB8CE5F7F80E9127A6FC70EB0C3178E8A7DA09EF66697420E16A0CA08FA41958B6F8DBC220640A88AAC9B3FF381251300F821C3359FD37B04095BC5B801EE0354F49DDFED8DB4FD4A4EA41C91402177C6FB23DBA45FD96B6C12908987EA21E023B67222CA4E5D5299C3A5468BCB2AAD53109637E0B1AFC522F5EB9CC6C2B64DA86F4493621FCD46A91D6A76134876B6C31A105252E3414F417D1D9ABF4711A3788B6677BFF3D2676C047C1E4B059A6513C7ED198B1056EE3AB0B6157110F32EA080EAF3A5EE21B110AA47E4C45546DBB024FCEA6B1E32ED1A108CBC2F6EB8B86FFDC5AE005010D0AEF5DB15EF7F913B
sk = D76B3573F596EB286AB5231FEEC7499686B13021BE36CB12248C0A21EA0BB6D6F56F12300E8584D8E9A34E0E6F52227281151AE4C305FB0FA2F678AF9D971B311647B0678E2CF00415BD9DC09B4A2C930527F271BFB61B56409471B321C8C2F43D9CB54A3A2103A3EC40CC41DB68CA8DF9191A5B9253397901CD540FB69B91FD5D7660B55CCF3463F78F521CBEC327892118A95D3DC9826A26632016858609360821B03CA33912209316F8AAF2FFEE278E65541861236A165335CD20052D1CAEB26DBAB8CE5F7F80E9127A6FC70EB0C3178E8A7DA09EF66697420E16A0CA08FA41958B6F8DBC220640A88AAC9B3FF381251300F821C3359FD37B04095BC5B801EE0354F49DDFED8DB4FD4A4EA41C91402177C6FB23DBA45FD96B6C12908987EA21E023B67222CA4E5D5299C3A5468BCB2AAD53109637E0B1AFC522F5EB9CC6C2B64DA86F4493621FCD46A91D6A76134876B6C31A105252E3414F417D1D9ABF4711A3788B6677BFF3D2676C047C1E4B059A6513C7ED198B1056EE3AB0B6157110F32EA080EAF3A5EE21B110AA47E4C45546DBB024FCEA6B1E32ED1A108CBC2F6EB8B86FFDC5AE005010D0AEF5DB15EF7F913B
ct = 0DC5DDFB19767AD39E22610522B06F9E58A8396C04874C63D3762FF50D03FA39FC67104C4CE1D53C7489FF5B2CDF423056FAF2302BC66A61C0334699EB841B9B036CC9CE8A08CB4F7F6AA05877A5598034B98B8E70DF0BC017DB9703974B610C1ACE37D298DFF3B5F88C95153D613764A77470EBE3508C488B60E6842C409ABA7F4DB54046240B96C36016B99989A8F99E3EF735944CB0B8FCA02045F8C2EDBE1F508673DA3C6721A3FD026AF61C61632A042229C15C154FF5E3AB44140D546369AEF0AFDC6A3FB6987619C4707EADE09BCD6BBA53CD32211DE634E59F06C15F52CD6CDA47479A1E339E58073B167FA8B68C24D7FA80CAB4800BBB17010F11BF0D628AEDA072985CFC1013A684A17020B504773D4F34D2B60B798DD976BC0D8C38802F7D1674E26FD501A4FBCCD3E5B06B2C955CC4921747E50A1A8AC73CC1BA2D09244D08E92FD9AA39173F3567FC4B9534E7C20652577C2125407D45CDBCAF4E22F3264F37F3DA89083C41D2581950245AFAFD8A42DF7F173603393CAD5BF9AB9CC54B381A1C1BAE6E0F680020C5E6C354
ss = E4035CEA25E010DD836BD1A03884A8CE

count = 35
seed = 4D2239E84B052109A78DBAB6D80C51A86D38248105970476B74A0B78B9CFAB6283E30D5A406FAE1C7F54F8BAE1110EE4
pk = 86B70341C41E5F675BA450F65CE5A97F0949118F4EE2457303AB7602628EB8D65300F2D856BEC847ACA11551B9C8BB976DC3CC1EC4A5699F048180B2E1BD04447D73D7AC3ABE465A0ACDB6666112902A4A12154327DF54C00CB51DA47F9B1A8EC20F65EC6D1D0B72EA73BD6A991CC327BF9E8EA89161490350416F47FA13E6A5102AC9EBB2191ED34787DC9B480DF868E41731718B940DACCB416A3C48EA9C916FE1179D41B93A1B9866578144D0EF94605899AE95EAF374357FF2EF067F954C91E1451F8B5FCD5774A95EB04B56DF421642D6D95805FE1835AA37C4C68EEAF5A83603BFBB8689DED080A506AC7D4AA49772055997060B648BEA002AEEE6D15A0E927ABF0A15444DC782977DC66A7EE49952157E256B713D6B03FF19CEEC6D17813CEEBB0D6BAD2956DAD630C8111FD5A53677B734713BCEA4C90F21CC365D986C6A784F169436131EEDE061E47BC7C314614C7362097A1B32EF8CC8F104374FD750C882C9CE6DA902CBDC8848B9A6583C72AE05BF4C6B503A17
sk = B87439FDE81C9E39EEBE7CF741C685785532C1DD23E8EF861646460817A0FCE5836BDFE124A7448E7ADF7B8ECC2652AC6D280E986682DF0186B70341C41E5F675BA450F65CE5A97F0949118F4EE2457303AB7602628EB8D65300F2D856BEC847ACA11551B9C8BB976DC3CC1EC4A5699F048180B2E1BD04447D73D7AC3ABE465A0ACDB6666112902A4A12154327DF54C00CB51DA47F9B1A8EC20F65EC6D1D0B72EA73BD6A991CC327BF9E8EA89161490350416F47FA13E6A5102AC9EBB2191ED34787DC9B480DF868E41731718B940DACCB416A3C48EA9C916FE1179D41B93A1B9866578144D0EF94605899AE95EAF374357FF2EF067F954C91E1451F8B5FCD5774A95EB04B56DF421642D6D95805FE1835AA37C4C68EEAF5A83603BFBB8689DED080A506AC7D4AA49772055997060B648BEA002AEEE6D15A0E927ABF0A15444DC782977DC66A7EE49952157E256B713D6B03FF19CEEC6D17813CEEBB0D6BAD2956DAD630C8111FD5A53677B734713BCEA4C90F21CC365D986C6A784F169436131EEDE061E47BC7C314614C7362097A1B32EF8CC8F104374FD750C882C9CE6DA902CBDC8848B9A6583C72AE05BF4C6B503A17
ct = D98D8C436743CFE96B7EC82B65ED195736FAA459852941462AD95F1FCBE59FA0A64C16720356515671F71EF4F82C0B96CF2BF0F08E2D1207AE0EB5AFB06C3928B40348BF90460AEEE989DE10F9B2886BBCB8B9CA27B6FBCC49C56B51D8404506387B65F62C555B1A1419231C9AC154398526E756C2364265C374AF7EB1393A513E7DFAE327C08E70741AED32A7093702F1FC09010E2793BB66108D4D78FD78D45EECD23234AC46D7830AC0D9CC7C4BE2387C01FCDC96A10A2E9D20573F0EA50CCD9276297C211AD1C555657E6FFC426E17B5F794C5FBF04E8F68FC6F0DC25003FE74ACECB35959F2D10FA4E4DBC64D138447EC540BAB38030DA79D271FCAAD8D3250C0FB089756E38B8D601CDBB067D297542347A897C1BDBAE726E0B11F82F17E949FA48A09A25DA9E7E8E4F11A9F9E95E5AE58C14574423FA01551FA0496D3B496EA6EC4D444CE2B4B175D46D984F2A8ACAC707DEF1D899D8655C3CDD60F50A2EF3BA77FEC628C030E07079DB8A85BC35883DD546DECEDFB0966D2A49DAD34616F46B0A61C7CE188419F55A7C6ABFBC56B
ss = 379C0F6C434A38A8BFFFA5A697B094DF

count = 36
seed = EE762F5C9021C36446706A88EF16312F4A12C725CD7AFFF1484337C91EDA8E89F7007F3705747D29907B3FB7500E5074
pk = 0A204C8B526005B658629F2D6AAC7199AC1684438E8E5EF708B6B1C3A4F03E416B7EBEDE200D47CBDC37A0E46390497FEE8AF9F5467F13F18F5B216EB2743D2E7BAC595915E887F6423FF72D3FDC2588ACF6A42286E3EE98A8141F3C3C59B4862FB2E6FA5677E6C51E44DD78B28A23EAFDF05FC51AFE96AA93319D9AE60F6DC0F980040B841201244FB44342E66F1502495A9FE988A6FE5455CA121B286318460A7B358D0A40AEF423F105EF80DC7DC3D990CAA014FCE667DC8471692139FC8B8DB0F2BE7BA8DEB5EC070DE33D3905DB4DE175F96128FCB87C51AF94E1D841BA0560A0B28B1C2CF545CF23745EBBFCDFC155553C380C1637CBC3A61FD538A8FD2763F6AA63E5B4E5EB174D831676C5F41EFDA99DEFBB57AB78CC526ED727786E51867518472B80651C2084D374AF3EEB472C45AE2A4675856EF637ED6185E1B055883597E40A3934A76ACB5086EF62429F141B14B6BF94773F1782A020A0EDFA54CA3962306DD49F34DB83E2F9D597A65B1BED72D7691D973914
sk = 056661B38038DA4FDD7426F32A81576C73ED84843B30516879238A80DCFD7C992D84B2DFFA67493E669243D4FA38C46B090BDF86BC5484010A204C8B526005B658629F2D6AAC7199AC1684438E8E5EF708B6B1C3A4F03E416B7EBEDE200D47CBDC37A0E46390497FEE8AF9F5467F13F18F5B216EB2743D2E7BAC595915E887F6423FF72D3FDC2588ACF6A42286E3EE98A8141F3C3C59B4862FB2E6FA5677E6C51E44DD78B28A23EAFDF05FC51AFE96AA93319D9AE60F6DC0F980040B841201244FB44342E66F1502495A9FE988A6FE5455CA121B286318460A7B358D0A40AEF423F105EF80DC7DC3D990CAA014FCE667DC8471692139FC8B8DB0F2BE7BA8DEB5EC070DE33D3905DB4DE175F96128FCB87C51AF94E1D841BA0560A0B28B1C2CF545CF23745EBBFCDFC155553C380C1637CBC3A61FD538A8FD2763F6AA63E5B4E5EB174D831676C5F41EFDA99DEFBB57AB78CC526ED727786E51867518472B80651C2084D374AF3EEB472C45AE2A4675856EF637ED6185E1B055883597E40A3934A76ACB5086EF62429F141B14B6BF94773F1782A020A0EDFA54CA3962306DD49F34DB83E2F9D597A65B1BED72D7691D973914
ct = 2639AC4A3EBB4329945875FC63362EE634804F8302BC5701888CD651C981CA1BB25289B82749EA27D4274F001E9F9BE75CBEF7A738843FAD2DA0FD6F7F5131EEBFF73F9B0101067C2F8F7EEB6FC26441CE4EBA80DFC73A2CB91E1B832B89608064B3B967CA1CAF6512EBCFB046BE702A485880D7EDF3AFA67E15BAEE6B087A91737C7B4C64B59A9A82D20AB75685E4804214BC64B6BC4A21BE3243116E84E00D1D087CCA625C00296D0B0696C50E2F0DAEFA3012FD0FD5DC0F18D93832E2CED15AC4DC2538FD20308027379CB07DC2C89C042FA88B1B6601BD883C3DB2DF4BC2D2A07025DC399762B65F4004B35AF5F24A3230CF137DC8FF47252C0EB90A045B57D480E672BFC4F4A406329EF0D36D6CAB59A026B68082D947439A66966A25A2DC4BE2B14EC26A903A993D9DFE9B48102848FC7F4D4F51826C982D990F9823299D779D2C223377B146CA36C47581F2BBCF2007CB2654A7DF17D57E9419397A34C7AC78AAB68B2F3290F412A227ADA19FA83FFB757D76B1868E0A7E0A9985F22575C17126FBD6A91DD584540735AF5109A72E
ss = 115A32B447D3D37F67C59F64B392A3E4

count = 37
seed = D882BA69AC8BBC88715F1C6387531F53273A5DAB87E66FAA8221A7F628D2BDEEE1CBC59C0E08D0ADD84520A3A70C1389
pk = ECD3EF5E7652EB979AA17837DDE8D99BB20D2D3A518FE1F4DC4E7667F70E74588F12AD42CF4A8F9A780D616F056D7CB4ADDC728044F25557E93D58A6E099053FD830E142ACEFA7D8F0E3F1F943C150080D853904F6CD179A2FF729338518C0C548E21D92181AA7121AF5EC481C65420ED68319DA707E8621C1ABEACDF23C9E42787721D70DC864EDBE9A621C396CD60DD3AA452B2F5E97A4C1F219B8480F324C9E0AC388E2F64F21E5E90175A1D646549C510DE4EC1E4AA1FC38E14037E53149FB8742ACDD690B96105421FB37C3ECBE7363FE5D1FA735A57E956F053D95C9B486E4D7CC3806535D5F0249CF994A990FCE5D8AB28890C8475F438E34A5CE16D35AE2AC2EC22628C291DC1BFDE42AF872F110419698EEAB5AF766DC8B5EDA9CBE6801948401B9E41ACC3A123DCEDBFEAB24AEBF7574CC49BE0B8A2570E9AE49BAEDC27941490E490755646A1D29F5447C027A30E1BB87D9B806B8CFB3F5336933B353540AF1002419F21EBD4AA06DE1ED23AC8FF7A3397705DA25
sk = A1B52D871612A1C611AE0944F9E71858F35D3BD14F20E96A1F135CF64B6403E103AFAE34DA038613E2853BBFC36BAAFA3C6A95347193F30CECD3EF5E7652EB979AA17837DDE8D99BB20D2D3A518FE1F4DC4E7667F70E74588F12AD42CF4A8F9A780D616F056D7CB4ADDC728044F25557E93D58A6E099053FD830E142ACEFA7D8F0E3F1F943C150080D853904F6CD179A2FF729338518C0C548E21D92181AA7121AF5EC481C65420ED68319DA707E8621C1ABEACDF23C9E42787721D70DC864EDBE9A621C396CD60DD3AA452B2F5E97A4C1F219B8480F324C9E0AC388E2F64F21E5E90175A1D646549C510DE4EC1E4AA1FC38E14037E53149FB8742ACDD690B96105421FB37C3ECBE7363FE5D1FA735A57E956F053D95C9B486E4D7CC3806535D5F0249CF994A990FCE5D8AB28890C8475F438E34A5CE16D35AE2AC2EC22628C291DC1BFDE42AF872F110419698EEAB5AF766DC8B5EDA9CBE6801948401B9E41ACC3A123DCEDBFEAB24AEBF7574CC49BE0B8A2570E9AE49BAEDC27941490E490755646A1D29F5447C027A30E1BB87D9B806B8CFB3F5336933B353540AF1002419F21EBD4AA06DE1ED23AC8FF7A3397705DA25
ct = 3A511FB52D891DD53225730289CC02A83FE0DCFC3694D99EB5BE9BF4AF001EE16EE33C1484BA45F7684F1F1534B218BAF49CCEC7F91B6DC66690E85BD1E105AD00BD69C316514ACBDE6C1D43156490E6680E0F9FFD4223F5A8C9E52BFFB05809E0CF2C94647CC8E131C87D95DDDAFE370372AC54536B9D32AA6A6D12F23CF6A143A376721D161E47DF3C724494D3720D73FCF50742816256E883574B8190272C0F45E9352E710C3E033CD0126A5E36C00402358673D7E4501F4CC69606D4FB47A9E3B0057C29B7D0F02A011518624EAAF1C00BE8EA290EE07CA2BC8CDFCE1842271AC918F4802E6FD4FC0E4F9FF0A7B86396CB270B969C5A9254D1217C9EB333C367EF7847A769812BD56D872E5F42EFA03E7EEEC1ACA41B8E05E6726DE973ACAE2B62E2CC17102BE43C6402219BE62E6E4B3191F65E63B303562CA37D9658E848623AE75B1FCE52A9974C68104377219E215CC9F2C584A172ADA04EC3A980817D413666E1094323E30336C6DFF47981D7C21DBE4551A0EEDF09F1168237CCE699D452E72AAF4A8B4767E6DE3652CFAD55C5
ss = 67441C630FEA500715135D01B2BF333C

count = 38
seed = 6C3AFF39F5D097096D882F24717718C8A702382DC4AAFFD7629763FDA73C163CF084807BBB0C9F600CD31A7135F48AEC
pk = 7B6618B5F4274DC7131D47D0801BE79037FE281FF709F80C333065D823FAA35F9288496092B789DA38D04780047D8497EEF0A2CEF6A167225FB1A5FFE5F21A4469007EFCC4F94878198DF179F51E853011FCC448B825B97886853AFBC2592B657C0A44B09E52878AF9CF3DE85939445BE8AEE2C879166470B7D54A7FE80F576D2E19B42EC49507CBBE904D2F9694682243D4B206B621886280FFFD7B42FB2E58805B0611F0BA850FFBD4AF6D12D2320A0254A7A43419F2470B783D9A1FF5715429B0967C64AB12CBA17CCC2B65DEC16FEA58DF742A6DD2C8C973E7FA6456E26C474398E57C3A9BA5FEE996AAE36FB61A0CADF6E374F85794AD983625DCB792DFEDF4AF73613C666101E74CB0274C6BD2236B658F81CF7F811A608A6C015277B83B8F48D0FC5B40BF71E2BB030BEEA82092908B48C9DFE691AFA52AD4EB3520C87FE122617F0659523D5AC29D2B0FA153DB309D784F684DAF3B44BC79FDF0CF86B2FDB39884D7F47B27993BD6D62397226734862E5AE0CB5EE60E
sk = 952B49C803D6D6FBA69F4375ADCE8594847A00BCAE2179DA62D7033947AE42CA53522A65FBAFE18D3BC3E0CB66164E9A094FE4B44D89770D7B6618B5F4274DC7131D47D0801BE79037FE281FF709F80C333065D823FAA35F9288496092B789DA38D04780047D8497EEF0A2CEF6A167225FB1A5FFE5F21A4469007EFCC4F94878198DF179F51E853011FCC448B825B97886853AFBC2592B657C0A44B09E52878AF9CF3DE85939445BE8AEE2C879166470B7D54A7FE80F576D2E19B42EC49507CBBE904D2F9694682243D4B206B621886280FFFD7B42FB2E58805B0611F0BA850FFBD4AF6D12D2320A0254A7A43419F2470B783D9A1FF5715429B0967C64AB12CBA17CCC2B65DEC16FEA58DF742A6DD2C8C973E7FA6456E26C474398E57C3A9BA5FEE996AAE36FB61A0CADF6E374F85794AD983625DCB792DFEDF4AF73613C666101E74CB0274C6BD2236B658F81CF7F811A608A6C015277B83B8F48D0FC5B40BF71E2BB030BEEA82092908B48C9DFE691AFA52AD4EB3520C87FE122617F0659523D5AC29D2B0FA153DB309D784F684DAF3B44BC79FDF0CF86B2FDB39884D7F47B27993BD6D62397226734862E5AE0CB5EE60E
ct = C68EA5BA757FCB635FDAD5ABAE154EAF14BD465853E06EB4E4AC8633A0D47792BEBFC63E79F95F13B36F05DA6B4AF50F69A29847B7C9B72AE43FAFEFED110A013AE93D0A74ACE2C656A21822B98C280F77C4D8BB94BE93FC1AB1C76FA9B1C98981ADDA46DAFAF022C718F1DFD6A43E73D1F44538B36BEB649737EECC742A7BE07936A853A5B0CDA890B48F2843D2B83EE7190EF25A5EBAC853FC49F889CC2006DD9E052D21B037EAD45A14D258AD12E42A68C0E551FC5BAEDFBA75C125E025925606E7F1BF215BEB93F0CA49631DB836F87686A3EDABD942E28E33099C8A56C02963C34022202D36D650B48A12CDAF9890662927093EFE02B675D52E81B39D014717BC84BF33805EC736EE08165DBF3A56EF4BE6DB2E5350D0CF186E66B3149177DC72E038CBD877290C2AC99322DF5E3F4549300B30C448EFAE3A4C51FA15AE6103F2DB0DB2F3A280F45C74A26D9E8B1E7D718F0828DDF16690E4FE6B301D0369A4354F9E44EFED5E38ADD7537A55425B5BB397659C2EB6622F63E5C2849CDB46B866D9F16E429B056BE0E11DDA4BF2F417
ss = 26DF53ACC8BBB7F3BDD4525113B593CD

count = 39
seed = CF520B92A2E3677AFD003EC1EC6EF136A709D78F828C9C0DD4946EFBD451C5FAABFC83CA66F9D3D17EE4220553B7A69F
pk = 5A4955E4D5DFB7AB332EDF7CE441D3702028E6631E409E7D07EF6D637868E34D673C1314A1269FE3FDD3B466E4F4B1A6241E6BB2164913FD91689607DB412112BC76160338A8B591B12D108958C58C587796CAF9FBA42E1C1F46F4F42D8D8BD68F50912F20AF93D7AAC287685FC6EA702A87B16984E4D7F12E1BE4D0063B1757DCD40A72210921291793986DB6E9C80B66E3EB479428EC13BE1107BC0878480C04DA25912EDB1B5016B0622DBCC9A5D2F8B18028174B9434B8951F7816E57E2C5723AC2245706D72DCCB51800C003CE58028202E4D8E9526316004F3EC441BFB49CEFF4EB26669F2FD9C588C325074AAC43C353E1588DF7FDF63421689EF4FBFF24D7A13C9D8FEC83D73774B4BA92BC9735CAE067AC6D444F995A9EE66EC555200D0786BBAF0249BB474D403870FCBF4BDF4F8C9A2B8772C65E402255AC3DB9B7E1BB064766B51AA1913FEEBD33D862B744390397D49AA3FF5977360A78C78344EC26E42EA4E55687B4D5D812F91A19F83B6331B9906A505191A
sk = 3C815E57E9233E975FA1630208AAB206B71AE0DB37A7A87801C8E376FDB140EE343106C093AF7CB149B316BA79446CEB4E5E0CEDB9B164095A4955E4D5DFB7AB332EDF7CE441D3702028E6631E409E7D07EF6D637868E34D673C1314A1269FE3FDD3B466E4F4B1A6241E6BB2164913FD91689607DB412112BC76160338A8B591B12D108958C58C587796CAF9FBA42E1C1F46F4F42D8D8BD68F50912F20AF93D7AAC287685FC6EA702A87B16984E4D7F12E1BE4D0063B1757DCD40A72210921291793986DB6E9C80B66E3EB479428EC13BE1107BC0878480C04DA25912EDB1B5016B0622DBCC9A5D2F8B18028174B9434B8951F7816E57E2C5723AC2245706D72DCCB51800C003CE58028202E4D8E9526316004F3EC441BFB49CEFF4EB26669F2FD9C588C325074AAC43C353E1588DF7FDF63421689EF4FBFF24D7A13C9D8FEC83D73774B4BA92BC9735CAE067AC6D444F995A9EE66EC555200D0786BBAF0249BB474D403870FCBF4BDF4F8C9A2B8772C65E402255AC3DB9B7E1BB064766B51AA1913FEEBD33D862B744390397D49AA3FF5977360A78C78344EC26E42EA4E55687B4D5D812F91A19F83B6331B9906A505191A
ct = CBC61B51AAD8CF07CB60E10BF51DC95B212F256BDA1BD1967F0C3A588F54E58A76FED6AD133D903268F503CFECEF9D408B93AE4FFAE698AEBCE5F104399A3633934105937B40BA859D55E918B9CC00EEDBF2F5F3A0A36E1483931021FFBF8BD62F6AEFF492D207C516EA6C9636C34C424B4D6E659EB30B4EB3C204862510956BC59059E58D90FA65260C393FCB0AE9F4A47CA2576FAA7787E407FF9044EADC94D5F9D729056109D5E0F9D1CCDB05F423A85727657281D1914DDA51A21A1434C7A8CD734C67B58A2210B27BF4A064F44C8E8BC2B13C02E805202A477133352916771A19FC25FA2DDB8C6F45E1D6611E25CE7E4D730D277285CCD26C15690465ABF167F2E3367E0CBE38EBA4E26A8DC299B97F61ADD67E524437D990948FE5C4EA0D11AA15BF89CC1C87D01EF583836784FCA53A9CB960406554EF2B79A18E5C266FC386F51B14415DDBA6BF35382D65AF24B9923E7A8AA47E5E44AE8453F062E8349E275EE571FA8023F5FA3FE58E848FC868CD78A156F32BBE3EB8815B80BB2C2104B07A3701DC486C471DE4699222B148AA
ss = 8B439D25A81D260020D4F79C3B62A944

count = 40
seed = 197E5D562DE7E01BED4FC597DB28DC6EFDF0179F3A5BDA5F94CAA39D67BAE730540534D59A7A06C8448F628DA8B7859F
pk = AB10F6FACDFD1CD7DBDA4713B1BF169D24FC04639DC320D52B2C18EA3F5560CFCCB2BD9A27BF3FC8999561F54B63F52BFEE130B852B17E3A5E788EB2FB831E35C728356553A2726DD1DD8E2C7BFEB4A610D5C3E662F483A248ECD43773CCC41733EA3B423CCBD79DAE69EFC5A0045958D0974A3F28FE676BB1EC2F903E1B37279100C8A83210255D11A8E75688F0E5CC50F60E8E9D919E03BB8D526088BFC4AFAAEAB2C2C31852D7B141CCF572E96C3C21428377AAC6647BD70A3EBE051BF05403940C5B93FF0798FC316E23F28232473162883FB20D664E62BCA731C36B5786317E2EEBC0D6BF3A0186EC80F0BA15EE5CB44467C64A85468D7CE10768019A63985667848643136930D7BC5CB555CBE1E56EE6C5939D699C9265E28D11F9EB8CA4E805982966F7ACAA69381673D5B2C19811792A55B58CBB72263D7266AC3D822C0A7958B2F414F614EC16CDFF787B3C103EC22B39BB480591D808B18B21BAF85ABF9D46733C2402FC336F1FD7423C7BFCDEBDA7E80DD2A9BC3F
sk = 588760826DCFBD36D9ABE6AE44A669BB3EBBA6A218EAB69E0E860576285483BB5FD36E2F944D32C4317BEBC1E441470C1372046A790D7904AB10F6FACDFD1CD7DBDA4713B1BF169D24FC04639DC320D52B2C18EA3F5560CFCCB2BD9A27BF3FC8999561F54B63F52BFEE130B852B17E3A5E788EB2FB831E35C728356553A2726DD1DD8E2C7BFEB4A610D5C3E662F483A248ECD43773CCC41733EA3B423CCBD79DAE69EFC5A0045958D0974A3F28FE676BB1EC2F903E1B37279100C8A83210255D11A8E75688F0E5CC50F60E8E9D919E03BB8D526088BFC4AFAAEAB2C2C31852D7B141CCF572E96C3C21428377AAC6647BD70A3EBE051BF05403940C5B93FF0798FC316E23F28232473162883FB20D664E62BCA731C36B5786317E2EEBC0D6BF3A0186EC80F0BA15EE5CB44467C64A85468D7CE10768019A63985667848643136930D7BC5CB555CBE1E56EE6C5939D699C9265E28D11F9EB8CA4E805982966F7ACAA69381673D5B2C19811792A55B58CBB72263D7266AC3D822C0A7958B2F414F614EC16CDFF787B3C103EC22B39BB480591D808B18B21BAF85ABF9D46733C2402FC336F1FD7423C7BFCDEBDA7E80DD2A9BC3F
ct = B13ECE8CD546758E5A087B9F1D332563B5DF735908852B975CE8B14D5B2576D02F8839D66753537AFF52382EFD64513E1A3274053411BC3F8E0CE8C742790944E27070256F992DA4D9453E5C74F52416382A134FD7111320689DAB6CDFD29390E51799477415CBF48D4FFCD76138C0626AB1C45975296F172CE764023F15C3E1E6447650A284E8BCA40EA9FD3A54E0FEFB365B7BEDFE33AB242BD177088DFAFF8B337A27293B5B4BA78314C31138B22842940EC999C6B58558499EF60C53E2B1987851CE8C13CA7A527F844FA9052596D157515C4378A06E1DDDB4B740DCE88EED71854DA267096B307E29D88DCB64DFD4A541EEDEFB0C406708A02D22F558857D98FF6BE1150011DBE443F9E6CE9E925D26A5BB0F29F1435242B64B48C15B8C944EF111C93A5216F1551D5C62B7EEBBB71A352EBE3A27E3EEA5143F95D3EA1729BF55AEA2FA7B0EA42BCCD4B83E53D4352675901F13E01B3624DF1E622E5DA5435ADEC11841FB127D4561B66515936CDA1157100EFF2621E6196B314CFD3E06F97976511026DC7511D87F076C1338B1825A
ss = BEC47F1C887EE2DB4C56261F8A1BCCE0

count = 41
seed = F170583CB451D8A45D105457C02C01A33A40350616ED8515BD49067142F61EFB00F07857E4FFF3FE11E7164C648C76ED
pk = 1F2E5CBA1FC922F7D7F0125B7E3C294B25CE775452D3EEE4D679114589C052BDE6E0E8A4871FC5F397D999D7AAC77F52D47D2B07AA20C69BB6ED77112B60302A0E7689101710C73E95C908896D39D8819D289DABB4253C93834688C4261000469D49C0DF3C489984649A900E2B38EFBB2755110330EB817DE23716371107D53CDEB07AD2F7929CE86C8BE5E61DCD0378485F646D1FBD16D266B293B4879475A413B649A94C83EB960A4102C1B277F656F791D6FDF3D1B1A32EAD0F952E743FC9A831F3C1586D4C03B4EDCDEB42B8BED94B455BE743289C19A418DC9BE77D8BA6836E95D836B6D24F4BBD444563941A7588E2C081AA38547EF0FCA9216E7AB3BDD3525F314BEF21F49CC838A75956F81B875693A8B0A76AFB6F12E3EB2DC5250ACC1D892873D2C8B7FD201E16233C50B2775B85246E9E82AF658011DB7CCF28FC95C6A8AB946F18F1BFD37EF9550080585E4BBCD0EA541A525E86361202D4433FCA65CCDB818A80F3440450384A81F9040EFB615930315264A229
sk = 47550E9EDACB6DDCE3D9AB81F6B61080DD4F2693854ACB05F89D7D99D5C3E0D10D6EF9AF054D842375F695ABB28E3B8EB495100F04306E021F2E5CBA1FC922F7D7F0125B7E3C294B25CE775452D3EEE4D679114589C052BDE6E0E8A4871FC5F397D999D7AAC77F52D47D2B07AA20C69BB6ED77112B60302A0E7689101710C73E95C908896D39D8819D289DABB4253C93834688C4261000469D49C0DF3C489984649A900E2B38EFBB2755110330EB817DE23716371107D53CDEB07AD2F7929CE86C8BE5E61DCD0378485F646D1FBD16D266B293B4879475A413B649A94C83EB960A4102C1B277F656F791D6FDF3D1B1A32EAD0F952E743FC9A831F3C1586D4C03B4EDCDEB42B8BED94B455BE743289C19A418DC9BE77D8BA6836E95D836B6D24F4BBD444563941A7588E2C081AA38547EF0FCA9216E7AB3BDD3525F314BEF21F49CC838A75956F81B875693A8B0A76AFB6F12E3EB2DC5250ACC1D892873D2C8B7FD201E16233C50B2775B85246E9E82AF658011DB7CCF28FC95C6A8AB946F18F1BFD37EF9550080585E4BBCD0EA541A525E86361202D4433FCA65CCDB818A80F3440450384A81F9040EFB615930315264A229
ct = 4B9B43530FF0A15D20E0D3E31DD29E02A93B4144D70A5F4D779917111916C7F79F9E11C433CA11499463D83894C04896DB00A73F7200D74875B0925E35BC3742E972F2B1222DEBCB7E1457112B1F7992265B4E66D567507E66068EBA3C4B139884FD2C438BDDDFC9536D8B5D4D963E84BEBF895EDCA44937BF361455AF31713B4A66199832F3831CC147D4DD055C8D9EA6558A2A7A003220434D8AAF25808D7028E9FE9FD36B961F85D51C4C157E1A8A8CF19F76E3347B7FE4EED7F73C1128D523F4C38677A2933F7FF4D462F91CB5233408D7BA92FED26DFE6D51D1EA79741279CE777BF070BBB1FC67A9C35B1BB263DD8AA38D07CF7297BC2FD92FD7A9031B7E4B6297EED234530067059A677BC306B3DB8220CA173A391C37892F3FB0835EF0CDCD75988362AB11F2E9412BC7EF57883AF5241680F37505FB269D5DE89C1A66E3E9A2BFC06F93D643F802A746ABB0CB052F1527FEF9DA4A78E7E700F03151094174D43C589F82D8331DC84E63F36B7B420FD6891BB96F70356A632BC56176D8CDA9E60322ED9843EAA8E6C9A0DC143435
ss = 64367D7F06B9FF57BB12260CD6D53AC6

count = 42
seed = 44A6774B2CAC02DFF210FF861A090561A453DB311F47B6FEDB81811872D5D9489F5FC4103010139AE53FCAED209DC9BE
pk = 77F0362429A1BD4764B3C193B8DEB957DADAEA8B7FFFC016C273AD245D876288197901E789151E5429A8ACD710E30F0E61AAA9AAEBE53F83192C441D73F2254CCDF18F1ED5FF67315DCD9203C121573810ED176672165D9DE82E66EE83D5A6702B202C77455874BF6CE0C087F3A4BD6AF72EF3C74444D9A61542BA76B421AA78C310BFAF4EE4D83CA75FCC4741F83453DE1C7274939BE16AD6591580A24503B884EEFE8FDF2BEBCC80A7CD21FA1BC5830B61AB5BA1BD4E833CBBEB213E39835BA680C1FDB616C4D3C6611598B3631C19ACD020A680E095D748ED429345E44B3019AA5F10EC40497DCEC22DD4ABE19EF078C79525643FE7FDB4E34919302869E65C8548286B7BA24A9879074FF5EE55DAC533B8ED50732F853867E747D95E90B9672AC718785EFD5222ACF797C20779A91023533989EFC474464337DCB377FA7B840AECBC37E627206C8EFE2825344DAE9C7E816DD7ACFCED82F3BF6227795154F3FDE22698DE947A9F09757DE12B8DC1FFA3B10DD089BDE26519
sk = 610AFB64BE8CC1DF288CFB016EE2F44C6C07113DE7F6FEE0CD292E4C5F9E1A55E0489BCEFFB204D672A6215F4F3980A646D9F880817C520D77F0362429A1BD4764B3C193B8DEB957DADAEA8B7FFFC016C273AD245D876288197901E789151E5429A8ACD710E30F0E61AAA9AAEBE53F83192C441D73F2254CCDF18F1ED5FF67315DCD9203C121573810ED176672165D9DE82E66EE83D5A6702B202C77455874BF6CE0C087F3A4BD6AF72EF3C74444D9A61542BA76B421AA78C310BFAF4EE4D83CA75FCC4741F83453DE1C7274939BE16AD6591580A24503B884EEFE8FDF2BEBCC80A7CD21FA1BC5830B61AB5BA1BD4E833CBBEB213E39835BA680C1FDB616C4D3C6611598B3631C19ACD020A680E095D748ED429345E44B3019AA5F10EC40497DCEC22DD4ABE19EF078C79525643FE7FDB4E34919302869E65C8548286B7BA24A9879074FF5EE55DAC533B8ED50732F853867E747D95E90B9672AC718785EFD5222ACF797C20779A91023533989EFC474464337DCB377FA7B840AECBC37E627206C8EFE2825344DAE9C7E816DD7ACFCED82F3BF6227795154F3FDE22698DE947A9F09757DE12B8DC1FFA3B10DD089BDE26519
ct = 6B9F8886ABF9DDADEEEE3C619A8610E3CC9D1F950C9A9BC1BB0AE7F132F6F64378268852E98F65501063C7E181DCE1E1235452F633F1B59D4577E3175F473C0BC217EDF63F122F8F24F0158D2092DF96D6718182D06DB15FE28DEEB2F03B7BAF66DDE6078660939359D21A11506AB522057FDBEBC89DC9DA4521DE4F6719C72C97980A9569948E4D3D27FEB2C973D9131F3AF4744E78BF2B67D4DBA6C3D4AA477FB1E68C0A9A7F852802B8E758F1B79FDB7C06FC0A98B2B11E5F69E423E63E9DE45609FF147B236CB9C41FC0FE7BA02636080CA4E8FCC61DA071B50FAB056BFF70690A3B24FD9640F367BC429027AA3338440A7E535FDBC354C2300EE9EECB58CD59439B394D1A27EA47384C949C0A6242DEA52240D58DEE9695AD31D782983AAE49D2A5E6B00FF74D3926E5EB30803054D03F54F13A45FE476D2646097459B48515602B9D4D871584C7FFF381FABAD144A413B4816671FB272264200874A9AB4ED9306CFD9A72FD20709D33F1D99C667CD3D4C0D3886B0EDD2B3420DA6444B389BC573569BF3A73E54CD0108B816729B087
ss = DDE2935E7883F7596BCE6CE7183C2B32

count = 43
seed = 49E1855588B6235DF2A400C4A70AEDF8AB17B6E5E2891AA745F132FA2E7AB0C8117C1DF37C39F5D57624EB77C2B4A091
pk = 602A5A2B2616CFBA8718C4728D43D0B01F42E575E4C07EBF98651763BEA0935D693E7B25DD19CFF2991C5D4775D0924F5B31AC558880A5E64C9481D693A800BC8541199A9EB6AEB38C49DF2F28884E254FF23C1B406587EDF7A749A9680A3D190A493563C6AEEF16F19EB2DB0E4A1E24F2F6BF077DC962713099E039F801D5C368CBEAB827D331EFB0680ED7741B898A57A1C7F4ADECC51E2018C2F1578C10F35CAB371DA85D824BDADC11D05801BF4D5CCB6C8675D87C0E372B3B5A06F84CBAD3B5CE6D9ED15EEB7D8D159A2C063A81E8AFCD4D5D5AD8179E32962C400A005CDB3E00C50A78E6C0B276D9231947D1DFBA760F2DA385E3479D3911020184F5D186758F0506D624DC883438F295C6D41525FA52674C703D45256867FA7242519793DFE2E24A8E1C239E8DD96DE6E7A4C788829C7954D08A898CF235D67C678ACD36B76328262040D80680C39D810F9B694CE042520965B7BCB90034B4968704872F217F83D8EE2843C5C741F11D364BB01BF9E0F0621A56ECCC20
sk = E1953800ACAA85AC02A906C72CB8E8D704E8D27820345F888C64C049C6DFC0F1476CFFD520B055756162F7EC94243DE6B14AC0B9E5FB360C602A5A2B2616CFBA8718C4728D43D0B01F42E575E4C07EBF98651763BEA0935D693E7B25DD19CFF2991C5D4775D0924F5B31AC558880A5E64C9481D693A800BC8541199A9EB6AEB38C49DF2F28884E254FF23C1B406587EDF7A749A9680A3D190A493563C6AEEF16F19EB2DB0E4A1E24F2F6BF077DC962713099E039F801D5C368CBEAB827D331EFB0680ED7741B898A57A1C7F4ADECC51E2018C2F1578C10F35CAB371DA85D824BDADC11D05801BF4D5CCB6C8675D87C0E372B3B5A06F84CBAD3B5CE6D9ED15EEB7D8D159A2C063A81E8AFCD4D5D5AD8179E32962C400A005CDB3E00C50A78E6C0B276D9231947D1DFBA760F2DA385E3479D3911020184F5D186758F0506D624DC883438F295C6D41525FA52674C703D45256867FA7242519793DFE2E24A8E1C239E8DD96DE6E7A4C788829C7954D08A898CF235D67C678ACD36B76328262040D80680C39D810F9B694CE042520965B7BCB90034B4968704872F217F83D8EE2843C5C741F11D364BB01BF9E0F0621A56ECCC20
ct = 6B39A49EDC15AAECFD30C6004C18FC41E386C5829A525F5638B4EB9C1649E66A2BDB5C7CE761127575B20548A22FFDB02AAA85B02DC5C7E25A41BE4FAA4B1F2EFF8A161EC99BDB706028118771015E9F8A957EFED0AF070D3FF3EB52EF8F42A0D7E43CC605267CC6B4A4C42D0E70CD9007074E7533FCF38AEA4488385E3C6995EC899BC20E9FA0EA8981E334FB00BD7E67C683F4D48D97B63F081D9ED4C47914CA9A518BB957E1816DC38BD2E0A76BDCD316342E4533569E0E0E115E1D58A42C18835836A4A711AD84CD2233D548A4FC324876F47BB0BAB562339E2C86BF2BBF66A58BEEF780BDC57E32EE36C3B43AEB9F8CF5AA67AB1762B36E7F1A9F3804591FFBD59BE3F6D607A95B0786FDDBE023DD5A8F490205DFC93AA19FE23EDEDEC0F6D6898CE3896BE3BF74AFF88BC1888CF16E114736A6BCCCEFEC0152A32C14680687A41E190F5B710C3E7E55682026C31C893B653378502DE947A61820176BA5F3263F74C4BD816AF390BABB6AD563C93322C966DCC32DF2483D2249EA1361AE1FF0456A9B99FB6552A70FFB86F53BAB8A99
ss = 9F078C127285170CF8980292F8D73FAA

count = 44
seed = DF0E41D2F6F86C1F79D31FD5878E7AB434FC0AF3A0D5F47D2AB3FEF31A42BD949B0E3629DF9F575BEFBB62E829E51DAE
pk = 9DF10C6830490591503823CBF42DFB5BB2C2D9D5930C608919A968E4E7A16AC3B045A0B2E4358732FE62C935D22E40D6B5520391E758E8DAC0274BCF130035F1F8CB601D461FC6D1774C758BEF6AEC09F14524B80109FDD5384BCA2F1AF5F38B3EAC642BA1A7095F21730405BE9613D15ABD9FF9CAC4BDA95C57CFF6951CFBE8473120042497C38EDC87E1B20657AF295B55A1FC5D950235FFA42753BA42388E9D90E4D18F5915AF45E32B36BFADB72847B7DAD881502D7640A08C0339F95D117B3837DF4ABD2BF68EBAF19ACCA53AC3BDDC0BD1C02A0F39EB45FA3704D3B085DBDF36C912BB8ECF519C080AAD77019AC7FC41AAA6307BED960C5D01F4375A97DD2ADB94AFFBB1A624690948B109C2D6C4B2B2A1C25D0D24AFC7D3893060B2C2695F686C67015F09A60F88BDAE9CA4C6BD3CDB056930FB60B2703E72C51F6160226D73CD916E620161316E1D2DEBD4505DA951044258F5E36C6B3A8D2196831C53432D97A09665C1FDF5E67541D0BE0D1A291AEC06574288AA2C
sk = C719F9B2D16399B7326CE4ECA30DABEFE8FDAAB18E9F6DF8E40771856EB77E4633504899FCB86C6A3D433D0B8D60E26F07BD61F1D4ED690D9DF10C6830490591503823CBF42DFB5BB2C2D9D5930C608919A968E4E7A16AC3B045A0B2E4358732FE62C935D22E40D6B5520391E758E8DAC0274BCF130035F1F8CB601D461FC6D1774C758BEF6AEC09F14524B80109FDD5384BCA2F1AF5F38B3EAC642BA1A7095F21730405BE9613D15ABD9FF9CAC4BDA95C57CFF6951CFBE8473120042497C38EDC87E1B20657AF295B55A1FC5D950235FFA42753BA42388E9D90E4D18F5915AF45E32B36BFADB72847B7DAD881502D7640A08C0339F95D117B3837DF4ABD2BF68EBAF19ACCA53AC3BDDC0BD1C02A0F39EB45FA3704D3B085DBDF36C912BB8ECF519C080AAD77019AC7FC41AAA6307BED960C5D01F4375A97DD2ADB94AFFBB1A624690948B109C2D6C4B2B2A1C25D0D24AFC7D3893060B2C2695F686C67015F09A60F88BDAE9CA4C6BD3CDB056930FB60B2703E72C51F6160226D73CD916E620161316E1D2DEBD4505DA951044258F5E36C6B3A8D2196831C53432D97A09665C1FDF5E67541D0BE0D1A291AEC06574288AA2C
ct = 63D81CDFA2C580AA22C99BE7539D8E412BD6979A9DCA7AC4521A81950E7BECB4C24E942930641002CF6C2A614E34103CE8ADDDE47B5969F764563A2D342639838A3716E7C5A29A77373A16F6733026F75470D50D09ED2ECC24719421DC523A8046AEF782CCBA2A1283A58EEDD3130ED5D51393BA8410504CDA0C4738EC2E47437F727476B066753DD3AEDFEDE22B50A67363885E17AFAB3B4B4E8122C9726EB2C09BD2F8E6534D4960004413AE146F12A4819D7AAB24E156561811A507E740E095A2A0BD3531C55E047BE2D7096EFC6CCBDE1EFFA330DAF45CA4B4DF94376D12357B3BEB30064DD25828693FAD9D34CF8D7441E252447176862A7B211D950A2C835676380FAAB50C1FB789FC50FA1EC83D553058912D107665422C1A737E94BD2A2C70C340482805B23D0830654C27BF3E3A265281483B8346761786D6ECB4D211D36C79CFA24C8C3BD598260F88C215976E8A879DDAB3AF38E9D59396CCA5CF4A42B1085FDA4BB2C72B95E1BA88E781B3D6CC3327093891FA125F9933A7C8C39B9E1F4461C85EF444D17EC2757FA0B30466
ss = 4A6147CB62271297E148553A2232BCE0

count = 45
seed = D3C9EBBA6EB03CCB5C9B9D2C8D7F0CFBBF50841E24396CDDF0E56525B38918C2FBE6C34CC1B93F7BCD4F4D5777E1A488
pk = 6CF713DADD6EFB8489B21B60BA56066B7F6775D3502019B0087018D3702328FAE35F0F5B02C1D81247823C9E24444ECF7EDA0D6820BC07561743CA4ACB1F2CC916896B3CA64D6B74A0EA103A47E1C9A5B00F7F6999369820F16041C6B19F5ED61D118B4A3173AB9176F33A95A52FF70FB032E1AC2945086A9EE84142F421F666A0DE1BDF4D8129BD11D2EEF37520BE6DFAD4FC53ACBC3F09E5E740D6DE5ACA0C6E488DA5EA0A202FB8FA10C441BEB4B4B0BF0156E638B1BE28BD3D7600FED4A059AF623ACF3472485115D5135985EE418FBF1A54CD970403B5F966D258734A203FA5CA9ECAFC93C34B64C62FA51A893CA3A18789490FC0E4C0DD63161F382014D0960451D5D06D36544CABD7B6409BBEEF82B517BECD1C97B8CB3469E84F396276F868142B9B4DBA6FE790FA8B24909F09ABBB855DA5DAE0B33B06F167D2C77DB5B5976974D267E1AA7771E50C39B076956DC92C4D479B97F30562508768AEA7EA58BEF27F60ECEB5A630E00F39B4EB39F43C94B51B96208333B
sk = E9ACBB774BE970206C3A738E243B420805A509FA59FA9020DED5EDAEC5DE3BF5B4D7C2F2E18E87F499C1968993EFF196753DB8045E2C8B086CF713DADD6EFB8489B21B60BA56066B7F6775D3502019B0087018D3702328FAE35F0F5B02C1D81247823C9E24444ECF7EDA0D6820BC07561743CA4ACB1F2CC916896B3CA64D6B74A0EA103A47E1C9A5B00F7F6999369820F16041C6B19F5ED61D118B4A3173AB9176F33A95A52FF70FB032E1AC2945086A9EE84142F421F666A0DE1BDF4D8129BD11D2EEF37520BE6DFAD4FC53ACBC3F09E5E740D6DE5ACA0C6E488DA5EA0A202FB8FA10C441BEB4B4B0BF0156E638B1BE28BD3D7600FED4A059AF623ACF3472485115D5135985EE418FBF1A54CD970403B5F966D258734A203FA5CA9ECAFC93C34B64C62FA51A893CA3A18789490FC0E4C0DD63161F382014D0960451D5D06D36544CABD7B6409BBEEF82B517BECD1C97B8CB3469E84F396276F868142B9B4DBA6FE790FA8B24909F09ABBB855DA5DAE0B33B06F167D2C77DB5B5976974D267E1AA7771E50C39B076956DC92C4D479B97F30562508768AEA7EA58BEF27F60ECEB5A630E00F39B4EB39F43C94B51B96208333B
ct = 3DB4DDC2BF9462BE23C7845D56F29CFBE751B10F29C2CE294A1F09CB0C4557C9A07D7BD54D103670049BEFE5F67559B3F21E9B2C8A84FF780341E69B6B3C03669C2FF57F72F4D678662F9B084EABC15CDE90DCC6B0B1B14F71E4BF0702C4197FC7326065F3F5750DF7C2F8289E60F3304DCAC9159A066EF9F13580DAC911E11952DB379342E899E63973B9C2D89D7D712ED14EF04AADDB2E6B83ABFE5F7FF260C30F8F420884DD4D5A7D0EBD686CC45AA5F4A6FA778D3C761EF7D703085A6A9272E4F3AAC77DF5BB858E82C7FDEE00BB259B9734F6099725F87D9C0C3CF22F81AACB9E862D6185F7CBAA60C2DA3494709F715F11B50CC58527EEEC0AC8857F4CA7E06AEEBDEE498E6780C20A1FD5E6853D2E879EA69656B0D43F5B0530960292282A20B245F8E91F4C763AD997DF34B051B928C4F48EB406AF1539D155D2514A861246253430E79DBE204924CA40C76E3FC7B77B7092F2299B225BDB4481BB647F898E70525263D074763BCD8034EF5A0CD9A2CD99A1E61B5F3601BB61C9D6911FE657383BF18E129930B4D25D64B85F93B5
ss = 50892947CB223F9E90F01B5D18B7C069

count = 46
seed = 6B3996E8BC6F52879F2B7BE012C44AD555707CB7E5FD8ABB3457A298336D6FDC9EB7853008FF13201D5969A315C7E493
pk = 0E06629F6A29C0783125E0810B446FEFF76394E440ECB4674B2170128E805DA616FA75448FCBD259176C612EE69E63432A537214C743998DA42ABBAD798839269C9F028239DF63E0367908EEB19E7DCD30CDB0BC22CD13FF7EF717DA01FD5E157D9550EAFA285ADB287F768F8FDFC3E2B72C6AE4170B551633B784394C053F6EC0D99E879FBF38C1BED3656AF4592A1A8A7513BD8C61115CE00F4AEC61DC39F58D8A04ABBFE4273341FF84463122852C1AF2090173714A95B5A24AB014C360E2C887126BC3808941DBE66B9488B38FA89D67083A5813BF589906E34A17250BC3646C31AC1681FF0A7DFBA055158D06B9B3D5C902B129460C2F451032D5C1967100AF6AAC8686F1E80A7AF0AD4B5AEA97E0C2F57A7697D3F44AC251AAB7033F61712F4993F491C6765151170D30F064B2DB027D8FA269A716E4DA05623EBB451D9858EA1276C6D5A98EBD609CF9C66AC365A2B13745E4A38D0972C05E9709C7375C4DD2EC4FBD220E7A48B4E0EABEF8A1A13038DFE5F5E18B3F0B
sk = C1B3CBFFAD4B306F9AF0CDD3028876486DBE858875C9B6491C96249919CEDC2369D8D739AB125E0D2CCB82DFEBCD90240A545CDFE07511020E06629F6A29C0783125E0810B446FEFF76394E440ECB4674B2170128E805DA616FA75448FCBD259176C612EE69E63432A537214C743998DA42ABBAD798839269C9F028239DF63E0367908EEB19E7DCD30CDB0BC22CD13FF7EF717DA01FD5E157D9550EAFA285ADB287F768F8FDFC3E2B72C6AE4170B551633B784394C053F6EC0D99E879FBF38C1BED3656AF4592A1A8A7513BD8C61115CE00F4AEC61DC39F58D8A04ABBFE4273341FF84463122852C1AF2090173714A95B5A24AB014C360E2C887126BC3808941DBE66B9488B38FA89D67083A5813BF589906E34A17250BC3646C31AC1681FF0A7DFBA055158D06B9B3D5C902B129460C2F451032D5C1967100AF6AAC8686F1E80A7AF0AD4B5AEA97E0C2F57A7697D3F44AC251AAB7033F61712F4993F491C6765151170D30F064B2DB027D8FA269A716E4DA05623EBB451D9858EA1276C6D5A98EBD609CF9C66AC365A2B13745E4A38D0972C05E9709C7375C4DD2EC4FBD220E7A48B4E0EABEF8A1A13038DFE5F5E18B3F0B
ct = F4CEF7781207BFA19177F3B2AC8641A99C80641A61B9BC091A311549713968D3601F612617192FA5BA5486948AB670CECBD76972A242008D188D5E4B680C1B24A11277BDC58729E64ACD7513369A29DDA344C3947A05531698070E080372FF003BC9E269D1927D7BC6F4A59E9BD95E3FBD55E8FAE370C4A23B4BC2B5930CCF91B8278F059D7F476FA63F5B8E7791F30611042A0D13E405FCE4CC50F15C47F37777B65E484B19D18960B5BE43BDEC07425076437D29CFF084954D05C507B19D8FBA94FEB6500729E72CF3100052D0FBA8B3B594DC989AF64A50EE5CF06A820F8053F659CBE9DD2130EDD6C7C81F9FA3F78604A347D5E7BE16AB9C4928A9EB92A9E1F19B9D2C4728181CC16225DA76E21406D6F09DAAE0CDF163010906DEA72798B5E5BC284767669C2381C607D8DEB93BF614571F35F325892221160EB3FF9A2B06923C2C5FC8A9F79D2330087470A34CE89EC236BF1E3D77BB6F823CDF80B14E39467ED638A6ED5BA9B29E1C232041E2727F9133D618ADA9110F452A3B80BCF0E0D31113577E0280ED1DC93FFB453F0F4034
ss = C5950B09FEFBAFFF7D911370D2A3FA40

count = 47
seed = 730B65ECE22DE27D573CE3AEA7CB021C415DF210D228808D91D4F380070FFCB0778B683C71D4853DEB569C822765F2A3
pk = DF69854E0ED42A59F006E8C01367757A97D5A4F22A0514610780FFEA7F8D6BDA8EB5187BBB1872BEA6B2AFDF4DC03DA1FCD7B32212A33C555E2793D4F40B1D89F98C22677A88C52B90DBD624CBB1271EB8F3C1EFBE187FBBD45DD1092D9ECE8D336EFB21FB235ADA2FDADD236F0AF47FC100BEC6F6F95BEFE716A695410CED55261C1FA05882C1F47BD1013ABB8885F5E172E4CCAFC34B81D1598CB6DCA3C09ABE7107D661B0F7231DED12CC13E621CCB19C809DEBAFBFCD1522007C276120A509B334264B7035453074B3FD5E7444A625AA8D42B416BD646BE057C0FCF640D4E23A0916F25AE0B55209C9325F5C0BB1F7B09E8F23800F39D94CF73A707570D63E22C0CCA2F584102C52BCD908A0DF3753B867DDF857C3B65BDF5DE564F2101844664E1E71E6116673F546E326D38DA21940FDDAF94A07047DD11404990B5580E0520FEBD4AA52AFF8B3E43C7A3893AEB9299914132C74EBF315EC795736AD79A0B01D5256268F59E57F12C616D9307B3D1312254BB18243520E
sk = FF7495B8575B5A98E4FD21FB4C3E58CBB60F14BEF21AA74CBDC370460375A778D1A31D01C42B66367ED8D9E8F84551002F552F0E52102B0DDF69854E0ED42A59F006E8C01367757A97D5A4F22A0514610780FFEA7F8D6BDA8EB5187BBB1872BEA6B2AFDF4DC03DA1FCD7B32212A33C555E2793D4F40B1D89F98C22677A88C52B90DBD624CBB1271EB8F3C1EFBE187FBBD45DD1092D9ECE8D336EFB21FB235ADA2FDADD236F0AF47FC100BEC6F6F95BEFE716A695410CED55261C1FA05882C1F47BD1013ABB8885F5E172E4CCAFC34B81D1598CB6DCA3C09ABE7107D661B0F7231DED12CC13E621CCB19C809DEBAFBFCD1522007C276120A509B334264B7035453074B3FD5E7444A625AA8D42B416BD646BE057C0FCF640D4E23A0916F25AE0B55209C9325F5C0BB1F7B09E8F23800F39D94CF73A707570D63E22C0CCA2F584102C52BCD908A0DF3753B867DDF857C3B65BDF5DE564F2101844664E1E71E6116673F546E326D38DA21940FDDAF94A07047DD11404990B5580E0520FEBD4AA52AFF8B3E43C7A3893AEB9299914132C74EBF315EC795736AD79A0B01D5256268F59E57F12C616D9307B3D1312254BB18243520E
ct = 68DA11421151CAF9B5E5C2FCD826EAC60C86B1ADEF15F90E97D82844E198D6924F2618C0CA03DD69C801E92FB263BF6AD7ACF8039F9BEB352EDC7C2C0AD9156A2CBE42125A7AE99F1E96874A63E74C2D19B92B995E520852D4CD073B54D66D2629916531515CEEF7ABBBDC96E39D08F9D66F1D8E6A26FB1801C2FB192F32830F6014FFA54F64B8F2EF380B18412C39EB8241572B3F23A8AF8357B408AB9FFEF382C269E8C3114F61CF74CF2B96C84A148D738E47B6B2D1399BAD46EB3993FC0F75806AC699FE81F956564F7F521AD827F0D5C9D87CC33FF0B91109D32E0EB6CCB249F335CB68F812D407E5F1974C877F30781CDE47FA87525D5CA72BBFD18E17D73003BE9217E7548D68BB3BAF416F19BD43B470D7F4833EC991232136B6DE4CC67729B0AB2BB99834AF4CADC93A22A679E142B0257395EB8597386C6F8A93BA498C422F9F4A250AD5341F9A1C5150902881F09929196F9DD114731CDC01F01765709E40E0D7AA65B66B1B3DDBC8B632FFE638EFD7C907AA000237E8D9B40284F88B9A1DB15688CE3724FAA28865562C8F60
ss = D28A52E0A58E670E214D511D48FB2BF4

count = 48
seed = 5522A5A891A9A9B5514F4556AFD8DF40B9CEC63A01492F0CB8A1DB073A285A963E4A9FF2376C88662F7D8D241F8ACF17
pk = 282415CBE417099ADC28E9F82F22D2371E25F06294EBDB6A78A4D2A815BE70F7974BC715A3F97562F70B1674940A818C4EAFDCCDF83E28F00473E6C985D4373A99AB070958FDFA5036E4B5B824EDF759E6367877E87EF7F0D620BC2CB9D9F114B363D24BFCFB6AB8E09A09E792B27AC1233A69DA9C1D6DC46297ED95BE0FD89BA6E09DB720CA0E63E21898AA0C286E78DA927123DC4C5BE9A060E2909CD92EE3EB340EF378D204866AE368A4595AD35755116E231AD51D5747C0AF1414D281329154F629C3104F6840C8051CED6AB2A2E73AE8AA76F7349CB85C12DEFE80AA41F826663FA71E1E43270EEC78FD403E46C77E04DD7737D12491CB7119C1E3D4CCE167DCD5FC37F89574EA94F24745690BABB22C0F2000FA25E38B4D66AC2F0399433791E8A017E16CD79921DDBBE8426BD866AF63EE90B646373F3B46A146A57A4E132C0F3BF34D3C8494487FFC603E59720C6284975E252262E0CA59C697AD6A5E175EAFB6924CAA84C225A994EEFB948BA3BA14F158F9AC4209
sk = BDC3FBA1C32751139FC45BACFFB3EA97F26573D804A5F27AFD5A08F656A6EB8CD20679930A31CAA6A6331C4B133A6838C223EF9F769F6206282415CBE417099ADC28E9F82F22D2371E25F06294EBDB6A78A4D2A815BE70F7974BC715A3F97562F70B1674940A818C4EAFDCCDF83E28F00473E6C985D4373A99AB070958FDFA5036E4B5B824EDF759E6367877E87EF7F0D620BC2CB9D9F114B363D24BFCFB6AB8E09A09E792B27AC1233A69DA9C1D6DC46297ED95BE0FD89BA6E09DB720CA0E63E21898AA0C286E78DA927123DC4C5BE9A060E2909CD92EE3EB340EF378D204866AE368A4595AD35755116E231AD51D5747C0AF1414D281329154F629C3104F6840C8051CED6AB2A2E73AE8AA76F7349CB85C12DEFE80AA41F826663FA71E1E43270EEC78FD403E46C77E04DD7737D12491CB7119C1E3D4CCE167DCD5FC37F89574EA94F24745690BABB22C0F2000FA25E38B4D66AC2F0399433791E8A017E16CD79921DDBBE8426BD866AF63EE90B646373F3B46A146A57A4E132C0F3BF34D3C8494487FFC603E59720C6284975E252262E0CA59C697AD6A5E175EAFB6924CAA84C225A994EEFB948BA3BA14F158F9AC4209
ct = EEDFDECB83C3BACC3EE7DE64C6377E8AFB02CE89768D61366274AAB2E5BAD54550B1D7D9ACA70AFB236D9A5AAE390C02776B7D34DFDD65C09DB0C0856A2F2854CB6E04C0888D8E99BB1AF97260D29EBFAC1A278A71DB46FE214FBC0B6D9C44891CA1DEBEFFB69CDDD7AFF4AFE3988F2181DF4208FF40D4CF4D671D29393BFD9D424E27C598901C09D0F3262E0CF54D4411D68BFBFF7FDCA2A257091417BC8A5B5188ACBB1B2A1F3742877B0ABE4CA7FDE730E72DFF5B1FF9412DA2E61A678BD4A4FE0943AA75C60A5FADE3BA1779BE63A83A4DCCAD32D10688782AA16AEEC29524EB96AB230BCA3573E91655FBCF954BC58357F9D09C82A7B6C83F19DA0CF16386D2A050A1AD368344049DA22490255F057B927C2FA8359F55E0FCA605377A56CC40FAB85470A573B60863973BDDC1FEE223BD8EF14A9ACD3C571B28EBD9C83E00F448BA69121F49565385587C7D0EE36D10EDB902A307C39BFAC0508AC49F2BD4AB25198EDDC1C91263A4FDA546840DE8F84EE97C1E6C8A99026F3AFA99B2F569392F7F6E751BC556F1B1E86BC384C92636
ss = DC6232FFF7603332889FD1199627246C

count = 49
seed = 1853E72329353B3F89AE6A1B1EF700DA8ED3C10D19F9E61EE9252E28EBB0E15802EE43083A12A0B7527088832605E3AB
pk = 6881C771D8A4766F58BCFF0226044135C7FA37D6331821C334D244290DCA1066FB222E2F95ABDB65E5086B389DAC3166BAF93DB1CEB16906601BDFD5715910B00E60267C6D40B77C9C5B348CCDA6E9D09E5CDDD16E5CBC9AC8BEE6BAECA548B99120F4087A512577C89CD466055365ECB76FCC1F027071E09B56E287C11580F2ACBF9864C1B066CD927C293E2E4C8148C7D0602F1AD6B8B15F130F1CCFB159E4C77789D380D38C734D47556A3B1DA2061C4574DB36D1727D7905611C039B6660E06E7AA08F8F1190AE3F4F4E124A13BCF38BA30DE9D76AF1024236D793F18D2B46CD282895C08F52D3AA277FDAC4530463002E05EB2D56E911AB5E1E5E3C2D7269252D31DDA6E7C813FF94D37DDC203FADB7134FEF6325F8F20717961435DF2E7AD6D89A31F44E42BA9DE70DEE808A6FB37F1F2E5593658F686E032EF4F351C2951882ACF69577CEA6E59FD26DA3F038203F72D87D661B2A7C3A08F3CFBA4DEE28A71B549A3FAA39DABFC33E7F6675FFB32C0A845FA3F817BD18
sk = 447F6076A627BBC5AD7773FBFEB14B4BA9AC43A0F8B99FB620A7237801F470FCC2BD9FD7BEA8322859B850F7882D362947432913DD068C016881C771D8A4766F58BCFF0226044135C7FA37D6331821C334D244290DCA1066FB222E2F95ABDB65E5086B389DAC3166BAF93DB1CEB16906601BDFD5715910B00E60267C6D40B77C9C5B348CCDA6E9D09E5CDDD16E5CBC9AC8BEE6BAECA548B99120F4087A512577C89CD466055365ECB76FCC1F027071E09B56E287C11580F2ACBF9864C1B066CD927C293E2E4C8148C7D0602F1AD6B8B15F130F1CCFB159E4C77789D380D38C734D47556A3B1DA2061C4574DB36D1727D7905611C039B6660E06E7AA08F8F1190AE3F4F4E124A13BCF38BA30DE9D76AF1024236D793F18D2B46CD282895C08F52D3AA277FDAC4530463002E05EB2D56E911AB5E1E5E3C2D7269252D31DDA6E7C813FF94D37DDC203FADB7134FEF6325F8F20717961435DF2E7AD6D89A31F44E42BA9DE70DEE808A6FB37F1F2E5593658F686E032EF4F351C2951882ACF69577CEA6E59FD26DA3F038203F72D87D661B2A7C3A08F3CFBA4DEE28A71B549A3FAA39DABFC33E7F6675FFB32C0A845FA3F817BD18
ct = 37E8FCB261967D7FA6C356AEEBB59FBB5E4395325DAAAE48ED8A7216E700752B57C462FEA84FC440DEBC38832F74FB2D7493C54A86A23E519BFF5056933806C5C75BCBA5A604A35F480EE924372D4E16C1CA6E916744F4E3E64A28D70C0DB3B050EBECCE0A5DC48A6B642CC074BE05CCCFF2D628E634C6C2E5A21984FF3D12EFCC092435BC431C888C4CE0452ED2F1512C955F7024A9236846748BF22318484FB1C97118A92E7AFD78DB33A926599B4455386B21BF68AE56DEEF20F532D9D68A4DC0B1E54801A5F104EA3193DEE7C08A5BDAEA521626E527B0C2337F0CAB9B18E1CBEEACB40D2AE8537AE5308F59F984CE551C9B22011F090E29CF192B12CDDB6332F22ED8CEAC4D9C42F1357621AC36916AB7129CC8A8D4A61606A4485CC983AF50A76712F7C5CCA7EB118325A8EC81E27E9B30CA7D8B4D350E1A929A83F4BBC7051755A031551A0BF4B70C6582468C838FF7CDB25D02D122EBAA0F9AC984F7A62B60EA285AA715D06AEF526BCFDA1B91E8540F446BE81AF420B05FC75200FF3DAC7E294620011E5B4373668F564B0FB8B4
ss = 244944E9E0B7FFD0B370F7D5C5FDA850

count = 50
seed = 027C3D5847ED4470931141104F25B19AE76117CBB64B224EE424FFB782E9A0E988839E0BDED0DF666FE8E5FCBB5DBC09
pk = FD7F908C0614E30BCA5EDD2188AFDE9DA1F322E5AC2B55551B317023FF54DCED780DFA7C3D5301DF5FDDB60FD19C2575997CA4C700E1D7934F37A5AF5CEE3C01E8ACCCBEA788A75394C4C0B0EA9321D7BACFC40A0BC07A6613ABF55A2CC3EF8FD0D931EC145B862ED92243FAAA6A4E4E8E8858533AB78E8BDED384E3DC2C856409EADC18455420D953472093D59BF66D84968C28CD3CE6BF591840CFB014F8B5B2A5672728775EF7494303162AC87F314CA8A1A099EF8608EE26F04B20B773BD592C54B2D1623537E01C8367350A789887CC892158E3EC9460500F8DC046E81C78449E7C2C7D00F978D07AE6F53F9308D877E8CD1C8364C12E9E3926EE366C6B282E1347C53F2A5EEB67524A530E31EAF1C9DEFCCD2419070FF96D4639544258A91F7A6B6BF5FCF186CCABBC0134803C2F2BFA6A22EABB9A71AE22E97FEB0370FAAFE4B2AA4250921706E24D068EFF02AB3331E324A362377B3592C07FAD3498CF8D1EEE9AE952DF3BB43B3384B5EA1C261D8EB179E83D72DF30
sk = 2D5DF64D62CB07FE630310BB801C658DBF3D97993E6862677B534537ADDABA4ECF14F02AB317D36CB9F0F50222CED7CF029DFF8A0D3D2F09FD7F908C0614E30BCA5EDD2188AFDE9DA1F322E5AC2B55551B317023FF54DCED780DFA7C3D5301DF5FDDB60FD19C2575997CA4C700E1D7934F37A5AF5CEE3C01E8ACCCBEA788A75394C4C0B0EA9321D7BACFC40A0BC07A6613ABF55A2CC3EF8FD0D931EC145B862ED92243FAAA6A4E4E8E8858533AB78E8BDED384E3DC2C856409EADC18455420D953472093D59BF66D84968C28CD3CE6BF591840CFB014F8B5B2A5672728775EF7494303162AC87F314CA8A1A099EF8608EE26F04B20B773BD592C54B2D1623537E01C8367350A789887CC892158E3EC9460500F8DC046E81C78449E7C2C7D00F978D07AE6F53F9308D877E8CD1C8364C12E9E3926EE366C6B282E1347C53F2A5EEB67524A530E31EAF1C9DEFCCD2419070FF96D4639544258A91F7A6B6BF5FCF186CCABBC0134803C2F2BFA6A22EABB9A71AE22E97FEB0370FAAFE4B2AA4250921706E24D068EFF02AB3331E324A362377B3592C07FAD3498CF8D1EEE9AE952DF3BB43B3384B5EA1C261D8EB179E83D72DF30
ct = ABFEB8FEC833B354CAC958BBE1D840840D71F47ED3B3A5DEC0DD179C6724EF9903162F8F8A2542D6D0513F6C554997B268D370D1B348E58BAAC6121C7600045B8BE851282CA87AA39684F5D5A64077FCAB87F0649B7A64C662896FF2C6D640FC149C43551770AD67484CBB3F297B53055B9EF80789DDE1408C202481C021288B6EBF9D1898CA223FD223B3EB49A09641F17EA94C04549FE4995EF81AFF27E9B91B9673576C00FB0A613945331BF44D61ED1ABA96A129C13DF96D3C040EEBB0485ECC1EEBC72835849E0853BB9AF32E505F0D1D1C3409A0A5B56CA410DFCB5B02C2475190B229E6F2C181EF1F0CC819A61AB63A7B2CF1ABE8C6FFDE2C394CF9A467338563B862232F956A8508F6D3730F65EEB08BD259A243B4A6B7954F1274D6EC870A9C54508E93117088D3CE588CDFA4AFC993F55E65538E4A111BDFD2FBEBB70B8DE50D5841A2C066C3C912C1C2C4F0FF3648279666F9AE5D413D46E3105BC0167DF54E2D7BA3E53FD5E8213932651A1DF0C550622141CB106216CCB142E52400DC2BA6D30B2A2FEFDA0BA86C4E390789
ss = C4E28992CDC9C48F405D3CB3BA053AEB

count = 51
seed = 450751D4401737459C6D93E6C5F2FBCC4A3AF7CD7250CCF404BBB817A67BAB7B4C9D0EF4570BFE25CF919DA331C31D88
pk = 3A993C13157B9BB2D4A3AC00AD76D36BC2E5B52456D0A163BC4B72F0B59036A7E7D760D481500C65E77432656783CC23955A4D4DAB7046F24F5E64320D4D030FE63E591E970A18A53CD7436FA906FD6B02360450B7A9B5070ACD261C348183D38857534AA2836CA38A444030628D51107CEF1AB5C2EE5E18EA6658BE66036AA95D146F62FCF6A5EB4808016E6D4085F44FA4DEF77023DD9A24E39EC3947073B0EF7F702DCBB9B2D701DDFA776E8C4BAB3AA125A78B6449EA0A6673B02146D9B8BE278FBAC942466B862CF57DD18829C14A54306482B544EB2508026EFF078D321929008693B065B7EEFB9CEA2FF21D8FFD35267AB090728D51E94B12D0015E6787C455147825FA3497A8F1A9F8F8B98615AB5FA371B17B166BB1DEA406BCEBB4C6D905BB7DA68E5369CCAA07E3EB848BBE1ADA82131E3A9892F126ACEF362428680157E232BCC8DDC1EC23F18493C0C727B576C9C7282BC2C91F917CB0EC745F60106AA69595E5BCAD14BA9C04D55D8606401ECC51FBF35BFB1F
sk = 25056D1B8113BB362DD979D98643D7A7AC9C4F95994C0BA0F48A9254DD40B117941FA35A66BB50296327B725525DEEF70E128CA8045EC4013A993C13157B9BB2D4A3AC00AD76D36BC2E5B52456D0A163BC4B72F0B59036A7E7D760D481500C65E77432656783CC23955A4D4DAB7046F24F5E64320D4D030FE63E591E970A18A53CD7436FA906FD6B02360450B7A9B5070ACD261C348183D38857534AA2836CA38A444030628D51107CEF1AB5C2EE5E18EA6658BE66036AA95D146F62FCF6A5EB4808016E6D4085F44FA4DEF77023DD9A24E39EC3947073B0EF7F702DCBB9B2D701DDFA776E8C4BAB3AA125A78B6449EA0A6673B02146D9B8BE278FBAC942466B862CF57DD18829C14A54306482B544EB2508026EFF078D321929008693B065B7EEFB9CEA2FF21D8FFD35267AB090728D51E94B12D0015E6787C455147825FA3497A8F1A9F8F8B98615AB5FA371B17B166BB1DEA406BCEBB4C6D905BB7DA68E5369CCAA07E3EB848BBE1ADA82131E3A9892F126ACEF362428680157E232BCC8DDC1EC23F18493C0C727B576C9C7282BC2C91F917CB0EC745F60106AA69595E5BCAD14BA9C04D55D8606401ECC51FBF35BFB1F
ct = C7298705F3D39D135D51B7EA600CF4673A2674414DF0D6AD1B9E228D6CD5A4736AC084324A47B71DF42B69EC9917EE699CD4587ABBF0A19CBA32F8D5FA6E0448921A0612B2C79E5A13DDE14BFCCBA16125B8A1DAEE2246934C29F0D8F78F70767502EA641C3F0A652FC062F7833DA1DCF92BF2A359D7489640FBF099B5139A15938079677BABA48619CE9F95A27A63E7AE03A1061E050FB53D45BCD542975F346A0E31372F80361AE970772D530C0BEB7683F354EA5AB7D70C679A9A209BF1B8624B6676C60C76675255AD3CE3E12937A85D7236C26F48716798F8F5777151C41AAD6FF14D97280AAA46B7D0AB7E85D8E1F4FB0B95C7939999288F0FB0443558C72D9470C38E04162F4F5A7271D0E8BBEC868CA810A22DB159BE8FCAB39198778CE211745F7CAEE8733B178728FC02F2B9E6F78F5CB39D93F8621F9E95BBBDEEFA7A5E40B210C379A7060431F3F735A62171518E5ABF926FD3C406773A3B1C68948CA6279D8D10EE0EA138E44F516D3FA075B38008299897340F8B2EEE6BC60200B0D4E90DCAF0EA07FA12A304A40D3FA589
ss = 35913AC0FA5A1FC2D538AEFAB8E94B6D

count = 52
seed = 5DE720F2D152BF4E1F96A61E7AE5F1BED6B8548E32638C2CCEC9F43B87D1BB43DFCF334F0582984D27E440D519AB662F
pk = 771D97565A58084F748614EBEBB8E495A94F06D334C0DD1408369420446E42ABA040D2B8C464DCF715FAF88FE0B1AB2E14070C0E09E87D6488B9528462AD11E4B7238EBCFBB80441C0CAC6AF36E5DEA280A001B2C24DDE9EE2CB0FB1F9990D39DBAE222FF5CACC945722D0A909BDB66B46A59C949D1A0AE1FC693511E134C2A738A6A0772648CADFE3E2D5056DEF930CEF5F6D9C91D83DB3C160BCEFA3079B32A8D1C7E8D2BD2DD85928F21B61F043B6D6E6BFD6D2703E224371C8333902B3F0F82F992757F78D8DE11C9A437EB577411D78C27F22B20FCE900957C80DCBEFE848DDF8B0909F59C70649C099C62611821615AA6F5A6F8DB84E4CAA3CAB097C05B39BC3DF05EB204538CA521B9691C263F6DDCCA1D2AE93068F129E4C9506FC04312EBE683C2E1A9AA69E23C81616AC3C10095D04F22EDA4BF02D3F9CD997BD08D31186EFA83450793585F14A6A4A94FB543446FD1A23B2D94F87420BFD1C7D2A16CB4A1D64D49982F02DF8041EC7BBAE41FA3FF3FCE9D4A6CA0D
sk = E4D34E12982AEEB1D62FD488D9B9E28557ED3429292239FBE6C45C7FC62329B13C8D29844405DB8FF6860DE474BF727ECD19E54E6E1A140B771D97565A58084F748614EBEBB8E495A94F06D334C0DD1408369420446E42ABA040D2B8C464DCF715FAF88FE0B1AB2E14070C0E09E87D6488B9528462AD11E4B7238EBCFBB80441C0CAC6AF36E5DEA280A001B2C24DDE9EE2CB0FB1F9990D39DBAE222FF5CACC945722D0A909BDB66B46A59C949D1A0AE1FC693511E134C2A738A6A0772648CADFE3E2D5056DEF930CEF5F6D9C91D83DB3C160BCEFA3079B32A8D1C7E8D2BD2DD85928F21B61F043B6D6E6BFD6D2703E224371C8333902B3F0F82F992757F78D8DE11C9A437EB577411D78C27F22B20FCE900957C80DCBEFE848DDF8B0909F59C70649C099C62611821615AA6F5A6F8DB84E4CAA3CAB097C05B39BC3DF05EB204538CA521B9691C263F6DDCCA1D2AE93068F129E4C9506FC04312EBE683C2E1A9AA69E23C81616AC3C10095D04F22EDA4BF02D3F9CD997BD08D31186EFA83450793585F14A6A4A94FB543446FD1A23B2D94F87420BFD1C7D2A16CB4A1D64D49982F02DF8041EC7BBAE41FA3FF3FCE9D4A6CA0D
ct = A0E26D84A08B798A2E04D6461EC95801BFD995F1B5BC7AE7B4F150855B145804AC941DA633759AD5363BEE5478C1A75450F94E6978D21EB2FD2AC561B1B60198DE37B9B84F3A1D7E67338A5748BFE386ED0D62B73F08D5D6A21CA0C099CC549E7DFAA72C08C5083A735F9AE14F255C479FE3B83D4929FAA86852DB4663083240422D8188935B884E7112A76052E355263FC7AE4EECD52E9BE8C11C57DD7BD17762456687BD1243F2C06AB735808C0E53F073D20200E5E7BA3559A593159206C903401167A1005A0E33B4B7382C61DB01F55FE4FE7211F52351E6B69B8D30FD46E198716B2F075B9233D951038DD585078448C312AA2CC6E32C180D36E6540B8411B6DF45A4EB5B0A613143EF1E1DE4FD1574409EC56AFC1DFC1CA2010EA9DF485C6AE9AEE4130185719AADA2AAA91076953DEA175A51776B66C10ADE0F1BAB96B81B725CB639554142BC422DA33F8EED93C9D0CE2D478E576268D26A6B77A4164A9D7376F932D9E79BC9C3EB723636D6E00905D7F46A2F2A3710898626464631E38F6355D6DD68EC60C4B43467ACF71AE205
ss = 611A6A572140FAAC867BE729608EC80E

count = 53
seed = D71729DCBB27D7CB39E9E905025D3E55C8602EFBCC483C9B866EBF82326157833169243C14550AD728BD1470F39C642E
pk = 0F2F08205E3FB2109300CE453C71371305353BB468EEBEE66170BCDCB52C94DBD3027510ED29C8A964151D6E2CFEA1AF466A185C213C8420ECA636D4C4C92FF0664B93C3B257BB815492D40BEA7B2278892600DABBCF70699C317EE539668EDD8C826A8B499800982EF73766037188BCB83606EA9A65DDBD167C5446161E39724897F5756330317712B8556277BD59175BE06B7259A9289676682F889B6E98020104B97E071769608F341F171938E3A4C53D6669E013BA76B8BC3819226F68A2621DD7A713FB4A8FD4750AE81B605F9678F26F0595B0E202E6B5ECE2F08B84D628FA3E7C7F5C35F969ECD67913CE1D0B3E03E789D1DFF20D668F012302422D7A170E2266276B1D5E0BB7FDAD7B13848BAB0940D9E4D4FCD7DF7101857CE84F6450898FF00B13CD6199F650ED503DC52AD5CF4EB7BBF9972ACD3940DD506ED99F1342EA277905915FF0C51CF425D6B26BE4092CBC6C5BF1DF1438DE8B33528AF02990FA222B076FBBA8345E994C07573DB9EE6D67B73648DF4D20
sk = CD6A99396EB3539CA663A51E42063A3A262CC1C5A5FCE1565A3407F591791A5DB4578B5972093A95BEC3B8E70C1D542C9B5C9789729F89020F2F08205E3FB2109300CE453C71371305353BB468EEBEE66170BCDCB52C94DBD3027510ED29C8A964151D6E2CFEA1AF466A185C213C8420ECA636D4C4C92FF0664B93C3B257BB815492D40BEA7B2278892600DABBCF70699C317EE539668EDD8C826A8B499800982EF73766037188BCB83606EA9A65DDBD167C5446161E39724897F5756330317712B8556277BD59175BE06B7259A9289676682F889B6E98020104B97E071769608F341F171938E3A4C53D6669E013BA76B8BC3819226F68A2621DD7A713FB4A8FD4750AE81B605F9678F26F0595B0E202E6B5ECE2F08B84D628FA3E7C7F5C35F969ECD67913CE1D0B3E03E789D1DFF20D668F012302422D7A170E2266276B1D5E0BB7FDAD7B13848BAB0940D9E4D4FCD7DF7101857CE84F6450898FF00B13CD6199F650ED503DC52AD5CF4EB7BBF9972ACD3940DD506ED99F1342EA277905915FF0C51CF425D6B26BE4092CBC6C5BF1DF1438DE8B33528AF02990FA222B076FBBA8345E994C07573DB9EE6D67B73648DF4D20
ct = E302E0545FFCC25CD015B5D3B17349A4381502CF54A9C8D28848DAA5E0B8B19482A39EFE94052AA67F604BC9C3FF2B7F03CB04C0C64959E795AEC7896CB80A704A0FFC9FEBDD8E20C25C4FA6A6456BA66247054C116D15577210501FBE9A5547358081235D341A57675721066302A5BC3149AF3EE965F30D48AAEA3E493ED5ECFE919BC58D3B1B83F51BA364AB5FCEECB4BB997BCB888C5E28CA44FCCC5398C44B1C2E3678BCFE9A533C80D50E3524E2D0D2A7274C7D734E1D7D90801C9C9EC4A6017B1CE4A86AF8D6C0FDB28A0E4E171A0EB4949AEBF6DCDFE3BD0309B463FC7ABBDA2D0E7836B9310930CEEC31EF832FA08E4C9BC4C5A528A105018D6AF262726C67EA6C25EB598BB6AF03290DFF3FAAD3FF2A7305D601D69B4E4620036FF39A3B035110BC3EF85C8FD79022B42F26A4AB177A00D809380692072B1B712C7A256541EA3C9125F0D1463F73991FE9A727B54A4B537C807CD6C111BB1963D0B6E704E95DDF7FE55C2DB0DE4FAF0934FC4BF2A519799F1B81081A4BAB8645C2CD9ED6F36135E94B598D4C9B1A31059628ED1B
ss = 40D1B0F3D0438CBA1F0C51420EF5A622

count = 54
seed = A7C2C8EDB3601396BEB2DF0657EC82FD5780A2723581A9E03DEE1CDB018440439BB1142CAB0487C5D136E9AF46338AB7
pk = 272399ED0CC7DA890D56FE3744E373D32C18AF96FB485F753F37B136EBAEE5318F0DE3C38435D11338DC62761838B55A5C3D342C9D75CF375C56001A28852E49A87CABFAD3551FF2A8DB50D5650E6818F780E0BF24FA24E32E152BC4BDD97A039E19CC87644A345D85D5A69E8E067E4F60B0193E4662F2AB9C257BABCB136822F35250AFC1B0AA1617E53D306644535B1ABE84E9C24CD73519EA82F31A0E1487519FB96F281717E3BED8D8ABCF40A75FF7D8A2EE2EC8B38ADCAA223A2E818A6CF2D16287A077C51904B6CEE453874244826C52091EE2C7CB2DE37625054110D3CEA8C8E229A59CF246851F04937AE77F284E9DD0B3BDEA467D57C33B5F380838F5EB185CA7EE5C2AE8BAF2245874DC0E76A05088E8074076C53F431DF04344CCC12C6983676E6E677D6DC7FDF37884BB89BFBCBC2A0F540D3C310D8B9E249A03D318A0BC90A3D3D21EAC22213853A34DF007CEEEDD8AAEA6C4CA32238A67BA4DA9138199C62CCFD1EF322B9A4B95FB5D85DB628FB20B601FD82C
sk = 6C8C53ED6F65E6B2E324B84364E10DE42D1C26A106D4D1C9B9402BF02481CE4B27A52E87FEB92C4399C7F2988D40E942E7496AD15AD2AA08272399ED0CC7DA890D56FE3744E373D32C18AF96FB485F753F37B136EBAEE5318F0DE3C38435D11338DC62761838B55A5C3D342C9D75CF375C56001A28852E49A87CABFAD3551FF2A8DB50D5650E6818F780E0BF24FA24E32E152BC4BDD97A039E19CC87644A345D85D5A69E8E067E4F60B0193E4662F2AB9C257BABCB136822F35250AFC1B0AA1617E53D306644535B1ABE84E9C24CD73519EA82F31A0E1487519FB96F281717E3BED8D8ABCF40A75FF7D8A2EE2EC8B38ADCAA223A2E818A6CF2D16287A077C51904B6CEE453874244826C52091EE2C7CB2DE37625054110D3CEA8C8E229A59CF246851F04937AE77F284E9DD0B3BDEA467D57C33B5F380838F5EB185CA7EE5C2AE8BAF2245874DC0E76A05088E8074076C53F431DF04344CCC12C6983676E6E677D6DC7FDF37884BB89BFBCBC2A0F540D3C310D8B9E249A03D318A0BC90A3D3D21EAC22213853A34DF007CEEEDD8AAEA6C4CA32238A67BA4DA9138199C62CCFD1EF322B9A4B95FB5D85DB628FB20B601FD82C
ct = 3CCE6A0013A316F2B0ED0EDEB256359F6FF5F1FCC27E0644D0C2D9F13F93FB4DF11D6B0689DFABA0BB77ACDEB8459FCAC2A52BF6882753FC56E1E19F97153468BF2EB4D98580BA9D6DCA371069BE6D185803B99057EB9A6EBD522BF7099D437C8F3EE62C9A62F30A538509CB6B206A724E05C5A72F4F5865DEA3E810193F0E562A67A7F536C6C71F303F6EFD0CD43EAC569C83AA3190773E043A91F712FD030CCEF5B90B642C1EA9E4482C16211F9999F280CA64AF346C9BA099769106037FC2F079BF7880A3FDB7BFF3F83EA19A49DF6689B60270B857B273F8B9AC3FA6DE4F5A113820A35F350A015167A0097C52E7D02F39BD0B571367DFB6C71EC6ABD8974372135E9EBCF521D536D31B357FE79B23EA6756C268E7C8C4D4BC3DE8BA00A1980211CC3305FBBBC76CDB9C737B06EF8062D9CD38D03495F5FD142343678141F06F7AEF2756A2193D9766AE1978BCC55C8BA6C3C8554FD382C4888E488BE74EC09012FF931928CDF62B8BB720CD3C17DECC3DD85394C215E4175214737383C2944141CB3A1FBECF7ED91EC6123708A0FACB
ss = 866E40E891E961606F2F289D83493A12

count = 55
seed = 467F6158CB86B724039FF18C47950AE5C49170163C910FC9A9B30141F86E9C06EBCEC91497BCD156D95758C9F0C6EF91
pk = 3EDDDE29C17BD70405A941C4B0484C764F31F91BC8F563729E43C6707798E72CE9E1EDFFE5D42724F7A15E072FBCA17BACD179EDF4825B17AADDFB59704D1DD415FE6E6ACFDE22B5731E2AFD5E33548FFBAC1EA7ADF485FA472336B80B191E3EB0D7DA4A15F3CBEF28168ECEE7C5305F5B7227CCCDA8F39DAADC4B2C5423FEDAE2DDC9A11CD4D6B83908FC5FB3858E586CC3403D7747D1848F433EBD49DCB2EDAAE32D8850F7C9AB874F98FB603E6E12AE48A0F7BD495DFB58459966356198E4AEABA4A99A5FAFDC42218833333B7C9FEA4AE4638BA53A05375FFD073EA16B4A1E1EE6146D70FD5756F276757B04BE5C0DB45792E211512CF995150D42E679A9704A0D99BE97EFE1D60EB55D65534E0FECA27D5BBEBC8A68E221B2530BD40B181F6C79D28C68BFE74C3A108995C9FF00BBD3AE15A7137E40BAD032B7E9CE785C003037840FE2F514D32B47384185A3A940875A7AAA814A01BF76777550063DFD24FF321495450E87A52560E5DEC5F9D71563050A3850CEB9E524
sk = 2107204CD995F1DF14314D5381F8C5440F09A347502E161C24C3DA70FE850E80AA818301D60C70F3038153866DCD5D179E22DB59B8991B043EDDDE29C17BD70405A941C4B0484C764F31F91BC8F563729E43C6707798E72CE9E1EDFFE5D42724F7A15E072FBCA17BACD179EDF4825B17AADDFB59704D1DD415FE6E6ACFDE22B5731E2AFD5E33548FFBAC1EA7ADF485FA472336B80B191E3EB0D7DA4A15F3CBEF28168ECEE7C5305F5B7227CCCDA8F39DAADC4B2C5423FEDAE2DDC9A11CD4D6B83908FC5FB3858E586CC3403D7747D1848F433EBD49DCB2EDAAE32D8850F7C9AB874F98FB603E6E12AE48A0F7BD495DFB58459966356198E4AEABA4A99A5FAFDC42218833333B7C9FEA4AE4638BA53A05375FFD073EA16B4A1E1EE6146D70FD5756F276757B04BE5C0DB45792E211512CF995150D42E679A9704A0D99BE97EFE1D60EB55D65534E0FECA27D5BBEBC8A68E221B2530BD40B181F6C79D28C68BFE74C3A108995C9FF00BBD3AE15A7137E40BAD032B7E9CE785C003037840FE2F514D32B47384185A3A940875A7AAA814A01BF76777550063DFD24FF321495450E87A52560E5DEC5F9D71563050A3850CEB9E524
ct = 9B34D90878FD0A9EBEAA19B7C48786799FB2F92C5B49FDD9F5753367D773405A6E5D3140B66B065450D83EF38CB40E54CAAFCF850263292E992579BBD5CD0F99CFB60E9F3B2B4A6A6E5E5C366F833220C92E1796EC841E673BA0833A5C3A4390C8857E4A416E17DFB1C1E7B6991A4AAE4DA92141EC6B1C282D07CD2F7308DE9937D635CF769AEBE0A247AF5492CD07DCCB68551BD6D71772300537CF311BA2B99BD8E0E479BBD14C1FE606FD51182BBDF26441ACAF72621C514DB9D323A04B07099B69994F9FC2CA74E432258DE420F7CCEDDA44AEE6FA918DE0EB47A3CBFE2BD675806D15AF09DF071D198A4C23D47BA78A75D26EB7C658C064A53239518BF135E5E927216017665ED5ABC66E72D393282318D874A98DF4738C110AE38FD192C6D7FD3F96B626FC215AD878228701E7A25C858775BB2CF1AB1F0235EDCADCA9652669F65BF9ADA0A64F174373718179A3FA756D0157C0DA9E70E1FC06CDA7416BA91FC0985EE4987B1884E646422F7354ED046A5C93B42304336C11245EAAA559B73E8420DA8AC675E1887FB4C827302623
ss = CA0D7585046662311189B3592F76645C

count = 56
seed = 687C02DE1041ABAC7B2C1E6EC2A7C3375552ED5EDB10E3A8139C24CC76BDA44D719D8121A81D47A0B762B4E9EEB85235
pk = 6B1319C8117FFFA442B0F1412F6A7D6D0C7408DFFE495790A79A3C8B4D147912E7617F70C87BE6C11A7EECD34C41C51B05F39A0D45B87EAC7B96FE092E6F08C5510AC68BC5CB09EF335D2FFB77CE1291FF80E765E63765A2FB14773908B9D4D072E0C61961BE84281B98389A20241C7F12BA082DEEF8ADF948680D965B0431BC1F07C5590EFDACA02287D3C34032B88F41BFB9E408E10435784EAF2CEBAE679F962386CBB445862067C0D99DB53164477D375567CF835DC983B0FC2E1D71BE7ADF03B26F3177BB0947A1BB55EE70D5919DEF18261D33FE5CA36C6E7FC7D6405A84D92EAD1CA2FE8307350822504105FC72D0C951D0F4DE3D4B605E29DF181E5CE2443E0EB97EBE91595B58B5E2F2E56C8848F410746685A2049D1941DD806F72D83B2682C6D95E0E4E130C272A2E0422F80D4D655DA043DED68D3935F41D06AB744B3627E81234574162D02AB7D5A6B038E9522F1762F86694231D7CD048210DB1576C86E3E70B2588BEB1B1ACF59E56E201020C7E6C54129B34
sk = 63A925685A8AC5BBD918FAA33AC397D1FFBCF99135D9DA7C3AFDB8A246A56EE71465591831C371F2EB87467B0559DEDD776BA063EE6D2F036B1319C8117FFFA442B0F1412F6A7D6D0C7408DFFE495790A79A3C8B4D147912E7617F70C87BE6C11A7EECD34C41C51B05F39A0D45B87EAC7B96FE092E6F08C5510AC68BC5CB09EF335D2FFB77CE1291FF80E765E63765A2FB14773908B9D4D072E0C61961BE84281B98389A20241C7F12BA082DEEF8ADF948680D965B0431BC1F07C5590EFDACA02287D3C34032B88F41BFB9E408E10435784EAF2CEBAE679F962386CBB445862067C0D99DB53164477D375567CF835DC983B0FC2E1D71BE7ADF03B26F3177BB0947A1BB55EE70D5919DEF18261D33FE5CA36C6E7FC7D6405A84D92EAD1CA2FE8307350822504105FC72D0C951D0F4DE3D4B605E29DF181E5CE2443E0EB97EBE91595B58B5E2F2E56C8848F410746685A2049D1941DD806F72D83B2682C6D95E0E4E130C272A2E0422F80D4D655DA043DED68D3935F41D06AB744B3627E81234574162D02AB7D5A6B038E9522F1762F86694231D7CD048210DB1576C86E3E70B2588BEB1B1ACF59E56E201020C7E6C54129B34
ct = 771416311ADB3F965DB35A8000987A64AFAEF47D526587A24C25A45358D71C773B07B22E3211ED9577C3E177140600B64F6D75CE8B88B0DB78B971A9E3982F98FBD07419B4AF178F653EF3C4F063661B4F16ADE84F4EF602F2CFB89A63F2A68AA65AB878278FE95EC5AE8D2D7EA06DD5EBC3DE6B1FDA05BF9934776C9D2ADFEBD9FB391D2C49190EDF4E8742292C815F7E74299F2DF9BD5619BE48FFBEEE23C5C918B0DAA4AE326504A7F41248A92DF93973113BE962F18AF9F9A2A02C31DD6B62BBC7A6EB4F0857471AA0F1ED648AA1E6F0851DEBE8A56CF8DC2FF64454DECDFBEBDEE5920141AEDC0370590666436C0FB24D54D036855B14338807BF2498D789E9D665AD9DA9D63D61AB0E827CD738AB04C4BBE26476CDF16948E4868AB67C457A50012C37193A054A41590C4D375C5763A0E86A49B510B25C1033A035310691A1FC2E2C1F765B11DB4C72DB341D12E0807C092FB8A153AF8C9B701CD3FB49ACDF1E761415B86512E5AF841EA23D5F8D9B6FCE1769766D26118A3B78ECEC26852CC106AAED9D81E7CDE7F878A55709B881
ss = 4C202A19F5C63CBCE9783D5CC76BF831

count = 57
seed = 4142237070C216BCBE245A39BD9220533C97651D84832B26727855AD994A0760C52B9319AD404693E4248B8C5FF324B3
pk = 6D2A89C69923487EDE1BC34A8A13B155E7F9168D213D70D7905FE2404D4622D1669F7A4042B8A9B544CAFC65BC003FE713A2B2FC7ADA4055655358A669F92BA93F265C0F0E49C2FEDF05D5A3829D760F3A306FC9F5FC679EB3461C9294AE82001CA57D5C4E9D9D3F56F9064457BDC7117077FAE8A957AD940135BB6AC40B2B6C07C175ED665309F9C9EA39524F072231CD206C816404D710DCD196414CACFD7480DAFFB57FF37766D84FCDD3526A7E0FBB365816C6BFCB4A531F9E9F327F6AA13DA7B7B0481A5938D2A91FD5EB8020BAB66B5D0D6BF99C54027D0DCE93B090044793EFFCDCB3959E33822B5F851587B728A77F58CECA18223D07221D701FB4994D62BB6DE992453364A204FC1F3816432A42F178299E93C69E992900A9FDEC8532B064F87B9EE684907ECF2D587AE9C7A21FB3BBC515D188DF831D283A261435A359E7FBE876E7C8BC5B2004A2A196BE2543416A088296C0A5AFC42D2C036866A595720FC216C62082FF7B811BFD7B0DA7F0B7C08C58EF386C03
sk = 6A1AEE5E708C1B47F02BDACCE4F56C860F74FC7CFEC1EF3B230E05B7114FF0395CC6634DB1EAE8258072D09C09F291E92D6620B177DC50076D2A89C69923487EDE1BC34A8A13B155E7F9168D213D70D7905FE2404D4622D1669F7A4042B8A9B544CAFC65BC003FE713A2B2FC7ADA4055655358A669F92BA93F265C0F0E49C2FEDF05D5A3829D760F3A306FC9F5FC679EB3461C9294AE82001CA57D5C4E9D9D3F56F9064457BDC7117077FAE8A957AD940135BB6AC40B2B6C07C175ED665309F9C9EA39524F072231CD206C816404D710DCD196414CACFD7480DAFFB57FF37766D84FCDD3526A7E0FBB365816C6BFCB4A531F9E9F327F6AA13DA7B7B0481A5938D2A91FD5EB8020BAB66B5D0D6BF99C54027D0DCE93B090044793EFFCDCB3959E33822B5F851587B728A77F58CECA18223D07221D701FB4994D62BB6DE992453364A204FC1F3816432A42F178299E93C69E992900A9FDEC8532B064F87B9EE684907ECF2D587AE9C7A21FB3BBC515D188DF831D283A261435A359E7FBE876E7C8BC5B2004A2A196BE2543416A088296C0A5AFC42D2C036866A595720FC216C62082FF7B811BFD7B0DA7F0B7C08C58EF386C03
ct = 86C91E6EC454EC80779399FFE0B109312D41E7E385EC7EB1AF45726279388C76A77F7AC9B252B365F2D70EC56D19584C9693DA07C37F55D43F11844D512B0AAEF5DBCCC6870C3002188FF37AA488F11FCE52C5783FA26B8181BB6A903D0AE4D2CED85F7DCA3BB2B114789A6CC79D4E48032022E1FD3088B8AA4078471C27A573C2B054A6F81ED1A8250D4136C7FB38D62AA002998E98F2A8634EE1CF6CA6088C1D1CCA99E921231EFB907CEDA9F5C26027B421416C9DD65581B34C9C18FC1B8F1C4DDCBF34D1589C5D38421377BB71E9445FC32B8394B63C34BB3851F150AB776442B771A259411699057CC95584BC4D259ADF5B4CFC4445EC1A5807D358C7D5D75CB6E80E26221435B3D1DF31305256B83A48810567AF6D2D871BEFBD0DE7465A6BC79EF83147283B8ABD6D1F6A58AD9EC776047AE5E05027BC04C3F629524510C4A05134B0099FE4B5C2D082498929EE25073E16660645D547ABFB88B506124571F940C3A82E17CE6F577F1BC6C437D74D3B72CF3A1596F6007AE094C860A5B85ABBA331BE2700267B4C4180169694A43E
ss = BCDB0612341C644C1E49A67D3E5DAE5D

count = 58
seed = BD334D7B7EB14E00E68863F2E5551A095F8AF10681C28353FD19B9A7E70B8BFE266840860609008A567ABC66316C77CE
pk = 79D60D3B20762812250E359F4EAD8013AC6945E600097DCF220DFDFDB0EF77778E6D5831038292004BDC4CCF3C3F9A741401E4BC36C4398C2E2E8E1E13710F9F97F7E9C83C65DD8DA7DDFDD7BC4E355F6AEDB7680291F43BC740535FDA098FA2B43E6C765E195AEB05F2197FC427BB2323AEAF0D353819071A7F0071793863596388D29327C976B53621E73809269D9A76AF0E8BB48F613FE910A11334046ECB7BE1E6ACA632AB9816A9D0BA7757D972DC50F827DE04AABE9C51BD7303717CA9D16C14D169C814BF5F5BAEF2A3255BD440C91239A3F104D3568556763F790E469F8F0D86A06139860CE70420037ABF9F3DB28AC2C09D06D7AC137B1D1D4A24C90C0A3AF1EB6724A0A34D549DA83877BF3F40A5559994CD9062C836A0CFFCE230A83CE9903863B1ED8D78CE01EFD1551FB91B44F096F291E50D8636CCD3BEBC9620CB63DD37F49D607A0D5B8B9CF0D0E899E26687FDBC9114BD9BC53DEE1393AA2DC4191FCFC9885A91796F9B2FF31CD331AF8BAB786CFC992B04
sk = 6396B328B100E4C7F4BCAE69875EDEA1A1982421558C608C1100CED48ADD211A5C937B8D6079D8E271AF3F949EDC61F70E60453AEF20DE0979D60D3B20762812250E359F4EAD8013AC6945E600097DCF220DFDFDB0EF77778E6D5831038292004BDC4CCF3C3F9A741401E4BC36C4398C2E2E8E1E13710F9F97F7E9C83C65DD8DA7DDFDD7BC4E355F6AEDB7680291F43BC740535FDA098FA2B43E6C765E195AEB05F2197FC427BB2323AEAF0D353819071A7F0071793863596388D29327C976B53621E73809269D9A76AF0E8BB48F613FE910A11334046ECB7BE1E6ACA632AB9816A9D0BA7757D972DC50F827DE04AABE9C51BD7303717CA9D16C14D169C814BF5F5BAEF2A3255BD440C91239A3F104D3568556763F790E469F8F0D86A06139860CE70420037ABF9F3DB28AC2C09D06D7AC137B1D1D4A24C90C0A3AF1EB6724A0A34D549DA83877BF3F40A5559994CD9062C836A0CFFCE230A83CE9903863B1ED8D78CE01EFD1551FB91B44F096F291E50D8636CCD3BEBC9620CB63DD37F49D607A0D5B8B9CF0D0E899E26687FDBC9114BD9BC53DEE1393AA2DC4191FCFC9885A91796F9B2FF31CD331AF8BAB786CFC992B04
ct = A78A062B9B784E4104DE8729007821C055B52E3FDC21E1E63BE3010473B07AEA415A15F89461B92B69A41CC884C15439C8D42E249459BFB496A9A916D02C3F8E643D5F07927E4FFBCF10B36A356C1A67BF99C87F7E49AE5B671F8AD135BD8C6E507C337732F2CCBB61A21A1A5F68C43AC8307E3870E0706087CA25D0C12FFB86F4BDAF1DB3DD9837233D6CBA74B6B7F3EB2E1E4EC582A0D3816152FE812E2A3F9B68A67A2A7038C985840A032571477C2D50320CC9A76F922D14DA5E115CE2CA8CF9145B4A6B29AABF82AAA1045B369F6C9A00C7DA469CD9070B641CCF6B32F6D9C58BC93C129F227F28D4A1124C15400A4BABD45DE969E414F0180908DAF9802415181E7D23CA62E371AECAB64EDBF525C00A33B261814A399FA099372F24EEE11F291D0FB7F8FEDDD791D6BBC66791BCBF60D9F1A94C5E54360B766E3F7401153A7750BC5579EA330D95A0F3ABD114CD9F8C14737661127230980E6EB6524535EB911F6961DFED2FBAD069F6EDE40ED11F47FAD601A07EB904687D558038252ADE0CB9F106824AFDDEB3AB58A31739773E
ss = F8A5E526945388C27DC5F5DEE3F1A242

count = 59
seed = A0264C58AB1F2CBCB212077FD378D340307ACCB31F1312137CF84E3D3135044D4EAE8BD38BC3E540A0C14D46458F6179
pk = 55380A7E3C64B3D9FCADB872F18F9B73AD97BBAA08808C380986007DF9DB3D444F91158BBDA5597C392C592CAF058149A46DDE8089F1ECD17014B7F7F784136B5529273AD2FF6202B610B3F64D2A48CF931A6ACF6037A4D12CB1019B17F3E75BF7B4FDC806FC2A8E745FEBAF3B8FFB4BCB13A438F17997D15C28DF6CDE0B36E18F27EA52EE86E74EF7AD57BC5F315D32C217B6A504C7F004E98D63C318B8F0ACF6CB7A5194882DB598C040BB2E689D9AF3ED351B05B485A1B1B63835064823FB12C6FB7EE015051ED6CAF4494BDF230731C417E38812C51BC4D602774529A190B73B704618D8A3A23139B98619B00EB718F8469E5B0A17D706FAAC1F77947DC8289C2A570658A47383629C8160DDC1A9C98B89B12B1CA1224E0B836383357151E2D5046F661743A4C1E38DCC174E514675F56CC7CB7D3288C43B3648E41A8D4563D8DEAF98FF11D0133A53BAE6C6D9C11F084B19F37405FE362B07349DB2CFC4E5A71C76A4A99AB73A91045BB9AB25CF1F87175BC4D2B7D3E824
sk = A453BCACDD2B0D4646009E5ED451C3C45F08FB827EF733DB7A3CC8AA3239D4C52CE4C95AFDEFF6EFBFACAC10D294EDC0E7CF4535059BFD0A55380A7E3C64B3D9FCADB872F18F9B73AD97BBAA08808C380986007DF9DB3D444F91158BBDA5597C392C592CAF058149A46DDE8089F1ECD17014B7F7F784136B5529273AD2FF6202B610B3F64D2A48CF931A6ACF6037A4D12CB1019B17F3E75BF7B4FDC806FC2A8E745FEBAF3B8FFB4BCB13A438F17997D15C28DF6CDE0B36E18F27EA52EE86E74EF7AD57BC5F315D32C217B6A504C7F004E98D63C318B8F0ACF6CB7A5194882DB598C040BB2E689D9AF3ED351B05B485A1B1B63835064823FB12C6FB7EE015051ED6CAF4494BDF230731C417E38812C51BC4D602774529A190B73B704618D8A3A23139B98619B00EB718F8469E5B0A17D706FAAC1F77947DC8289C2A570658A47383629C8160DDC1A9C98B89B12B1CA1224E0B836383357151E2D5046F661743A4C1E38DCC174E514675F56CC7CB7D3288C43B3648E41A8D4563D8DEAF98FF11D0133A53BAE6C6D9C11F084B19F37405FE362B07349DB2CFC4E5A71C76A4A99AB73A91045BB9AB25CF1F87175BC4D2B7D3E824
ct = 06A2AF7C92E7B49326F0859AB182F020669CD37CC4C16A8ADA2567824AD47062349E5B65977E3BACA2C1E5F9E267FBC2BF6FF23D252ABE697F5BC0C45D6922B2A305778688AA4542DB38B8CC5E7DE6630F61A6C34F1705BDB2FCBFE9A72B3C21A71300D07BF02260E93D4D703F1995710C85720261544B0D3A491FE99002E17C8915D722C98886B5FE133562D64A259AFB1C9BE05C3F51D85E07C4E5A517BBC4C3EEC4919721D1BB02D411409657AAF73A623BA1348A27691A849E590F2457129BA28C798FCA2C5A9ACA75FC9D8D251D7BADB81FBC76ECCB22D98ED0AA12D6D141F3BD905337207043170276489732DCB5B7FC1DD00AD2032A030F3298EEB9E9D9A57998994C9D66382D0CC200CCD647D37254D8DE27D98264F8D8CD00B232FFE28AE16EF605FB504DC8DD9B7A49F8AA7B851EFDC0CE1C7A8D9D2712496B7F3321130D17B5AF4F51895D72D8C17FE00576EE8C047426C6658AD0055F6828F26FAB0C182705F88CF98D84956BB3A674569A2B176B8AFD05BC8D0ECD3A4A899543AE192BACB7AC6BAF01E34F5507D0501C0A01
ss = B691E2F6CF111770164E0BC987BF29C7

count = 60
seed = 99A9CDBFC674AB3FF2C64CDED7D697A6E27A767434A47AFF7C3FBF3C6A22D6043D27868955286A13EFE3DE36D22EC48E
pk = A946E01F62D730B029F61B0D6AE1C4DB4FAAB8B3A381D07210AE19D799AFAA2DED4766F82A7461E846D89B50A7268BB3F27C4694D29CE95F7A6CFBC3E7C6066282D3CD66A509BA71F5C162F2699CFB0CF884FEFD3BFE2DC036FBB36CE56E4E1A2BFD24CA6B9EF77D808E17925CF2D9AC7C7FE75C6C0639EC3F5F7B38D422CCDAF4B08047798957687A6F715A03D16F53B8475EAC4629FBCAF81CED52FA524AC88D00D46639694F3FAA3EB35768F721BDC977819329ABF41D62E64D5D13258E8B5C9BCD067EEB98424F786C7937101B2F46E4AC862A396D4AE3DAC9AFF4B71967A3E329C979139CD9A06B47D171D6C172AA1F0520676DC4DC2DFC5E2EA0EBA6102A8ADCE25045241DE39FE1403459C147876437531D7CEB3642908127CF1F8D653481281E294B8FFD672F0F64413B3967FD044ABB2141B62610021ECB974AA2A4362617A79AD53A2101272094654F6E2A5348B5ECAB6FA4E214FD0F9175DC3DBA35DD18857D610AF904034894F6A6C8F7F268700EED15CECE5824
sk = 47CA2B77C5B717F423222C2730CA5CB9C856BC951D01B2B28F1481D7CAB000E33FA07DE8DC9627A85E76FABB4428A3376E66300CF12A0707A946E01F62D730B029F61B0D6AE1C4DB4FAAB8B3A381D07210AE19D799AFAA2DED4766F82A7461E846D89B50A7268BB3F27C4694D29CE95F7A6CFBC3E7C6066282D3CD66A509BA71F5C162F2699CFB0CF884FEFD3BFE2DC036FBB36CE56E4E1A2BFD24CA6B9EF77D808E17925CF2D9AC7C7FE75C6C0639EC3F5F7B38D422CCDAF4B08047798957687A6F715A03D16F53B8475EAC4629FBCAF81CED52FA524AC88D00D46639694F3FAA3EB35768F721BDC977819329ABF41D62E64D5D13258E8B5C9BCD067EEB98424F786C7937101B2F46E4AC862A396D4AE3DAC9AFF4B71967A3E329C979139CD9A06B47D171D6C172AA1F0520676DC4DC2DFC5E2EA0EBA6102A8ADCE25045241DE39FE1403459C147876437531D7CEB3642908127CF1F8D653481281E294B8FFD672F0F64413B3967FD044ABB2141B62610021ECB974AA2A4362617A79AD53A2101272094654F6E2A5348B5ECAB6FA4E214FD0F9175DC3DBA35DD18857D610AF904034894F6A6C8F7F268700EED15CECE5824
ct = ADD7482CE5D3611273D876BDB1769A7198D5FE4168920CBAD2EA1D557DFCE7584C4ED3CF9AD401E12FE3287AD8FA9D02061109F405C8A1406304AE275DDF1B33BA787A727A29AFF8660546B2ABB9EA683EF2818B6D0726D2B71C9D90892F5C4BD367CAC12CB66053EFE2A36D7BF4A49205F47B6AB0734DFC2451B919E63C90B602670B764AC7BC0C39542979D8484D49C9637D1B7F05D4787C4240BE385E06A59D07BF474E36985EAC8E04801B9255F10223E20AEDEEDDAE371C9DA609911F2C6F3BABB1742805469999CC95C7CDA1B3E10286630B755F40D4C1EED12FD1D2AA4FAD7422F521E89B35CDB18D7BDA464A2D1B83AAAAB69A430E376A274D437CB6B601AC40ABAC7DA79EBDA6A7417D899A21ABA073B7A19B2BDADCCF13A20A2DF8E7EF9E3126C8F52763C9A03227CEBDD441C999E30685D6F6F4C3038BAC6683A637C36A14C1A34547D75CFCDA21E56DF42E8116092F66234CB6D0648CE6AF4479A1F17AFEC23FB48A1EA74F0189F4ECA4F9BD1AFB9CF64D2C382CFD46D42867BC08D3A27362B57ABD59E60F99A56EC2532F40
ss = CD46C969AA5DFEA2E170905CCC89AA13

count = 61
seed = C799D57B41F28C5C446DFC58A5AC6499C4BCF3C162AFD2B09A16549826EC2A6F689E44BAFC4ACC82F5D6AEC23F4A3993
pk = E2496A4E000054EC2F545122E667FFFD6AE4616339799F5E631EC3F70504409E6FFD933F7307EA1674002DD7442A7B5361CC07C0492FB47C737B32428BB33B8DB1DFE23ED99C0B3F02BFCD88EA9E9AC8C537B773BD0950EFAD1D9A83F780BCDFB4D9238501AE3CAAC4E5C70A19979AC316D9FF903433CA13F31C169BE708410C8D4421E9A5E784FC90EF2CC4CC1C47BD86F3056E7A43C7819E7054C5E116D58ECD1C864B1C623018BF62CE283BACC405502A65791D6B4758A2F7102705AD795C3464DC7BCD94503D95C1D6E618ED44D4C75E6DF264429C663DAEC426F8D5404DF7304B757136B4DF1E9306BD35229DD18AC000652DDE20C58E13832109DD95785FFBD6760B0C475E546383CBB6C9FF1A810D55F9D79F8D02AB7D5B58FE053FA26A0317E3E9519AA1D632F35AD4F3AB836C7FFCF7C3C2D0DBC12607E4C7708653F1888D2FF863D6AD43857DE9ECA28535F1F88AABB52ABB67A458952937A0DB55E1857B7A5A709550388158BF8F2AA600FFD777F11AA4B97AD019
sk = AAF6EB40E596A5E3E8218871E708B089240DCBE7FD3641F0E2F8D320AC3CB0C52EFDC753282F092BC39BAF4A18783A48EA031A191865EB08E2496A4E000054EC2F545122E667FFFD6AE4616339799F5E631EC3F70504409E6FFD933F7307EA1674002DD7442A7B5361CC07C0492FB47C737B32428BB33B8DB1DFE23ED99C0B3F02BFCD88EA9E9AC8C537B773BD0950EFAD1D9A83F780BCDFB4D9238501AE3CAAC4E5C70A19979AC316D9FF903433CA13F31C169BE708410C8D4421E9A5E784FC90EF2CC4CC1C47BD86F3056E7A43C7819E7054C5E116D58ECD1C864B1C623018BF62CE283BACC405502A65791D6B4758A2F7102705AD795C3464DC7BCD94503D95C1D6E618ED44D4C75E6DF264429C663DAEC426F8D5404DF7304B757136B4DF1E9306BD35229DD18AC000652DDE20C58E13832109DD95785FFBD6760B0C475E546383CBB6C9FF1A810D55F9D79F8D02AB7D5B58FE053FA26A0317E3E9519AA1D632F35AD4F3AB836C7FFCF7C3C2D0DBC12607E4C7708653F1888D2FF863D6AD43857DE9ECA28535F1F88AABB52ABB67A458952937A0DB55E1857B7A5A709550388158BF8F2AA600FFD777F11AA4B97AD019
ct = 603091FE4CC2161FC3C9C514BBA8783CC0FF7738DFA45CF72CE8E27415984C79384D955DF0075A51912732EC71372F38E17FA5F898BF1E79138A4E52C1CB3FBA5938772F045A3988DC9B05F25912845D64543C16C8A84F11AAFFEC30B3B6DAD60FB945AF7192B5BB0840BBB7D78097267FA85FD2A61E934A8C98A5570B24D7418AB4A24DEC606F6C84E6A611A9D5F277396C1783B4AE46C2825E379A0CD875F28A0AB807D8678D9AAA10D73E5CAD6352919669B990D4A41F4300925B06ADE61E989CCA250D570CF66E59348B811DDD6CD19E12B33EA17501BFDCF66C94AEDCC2E6B86C60F24054DF83C0AE3B63B4948B26C12DF34CA8ACB9A6AF3F313F71ACC69ACFBC46DFFA89E3CC4E3AA7DE93963EC1C4C57375DA3E6F365EB68C8DE9D8B3B968666A2B1F3481EDA65625BD30ACAF341919E11C8C542F72D537182181B435EA7ED2638BEC1654CD118FE7BD6544BEEEBA51B71AAF29905E5ED6CD18B6DCB060DFF7DB617BC339514E15B000522EE75C7A4FB74075C7147039DBCCB0B6DBDB27C136746E19D20E56D5CD3D12DECD6FADAE
ss = 003CD451783593A761402EE4AB2A4734

count = 62
seed = F7AE036A0176A9DE9A036A542DD2840033277C44AE936D10B768566216DE9D4395CD42B116873B69D9804BA6CCBC05D5
pk = CE956094326ABDF77ED13D3A85B5EAFBF1B4D4ED41E4E3F76F2B5CF8D20DD28F4B46064589FF3EDB866A4C3297873066F41683F084A5E9A8624B799270733AA72296063A559FE5DC663A2A5E092EEDE75C2BBC3788D3EFCB50C656B36F5F30104033ADC9500C8C329A113340E418B036851C27599947785D691A2724CC03BDB0C8EF395A6FE518B0C6DF0626E1135F852E476C2945257C5AB15DC6B5AA68EF26F1A0533D5F4315B6C6010010B5CF5DD93F89FE773A09033FDA80906F188C1D22521B514F07B8F5DC8996A37209CD107440C3952A98EC592FF3009E9008AA70E58681E6F60EDD587534060BC8468A64B3E020C18E81BC1A2DE8D6BC30624F731BB8DD50137B3C0DC23C2264F98A49E6BDCCC62BF9CA6554D3707F351FA4B700AA9DE28F122FE35BBFAD4C2E5334ADB835630DC25B026FE69A94BB17FFEEEF6F358C6EAAC4B50A5E3F2D4B0023568D75EB6BB781BBF80C1A7B22F6FCCE448A7A5BD86F1F17C46325386C6EFDDB767A8D79EC2613146A3ABFF54C1E
sk = 6500F32C93415CFDBC0BD31D78D5BE95CB9060C8CFA20139393308641A9A4647F230201E1389624A296B55192A9819FCB19AB77C25F95405CE956094326ABDF77ED13D3A85B5EAFBF1B4D4ED41E4E3F76F2B5CF8D20DD28F4B46064589FF3EDB866A4C3297873066F41683F084A5E9A8624B799270733AA72296063A559FE5DC663A2A5E092EEDE75C2BBC3788D3EFCB50C656B36F5F30104033ADC9500C8C329A113340E418B036851C27599947785D691A2724CC03BDB0C8EF395A6FE518B0C6DF0626E1135F852E476C2945257C5AB15DC6B5AA68EF26F1A0533D5F4315B6C6010010B5CF5DD93F89FE773A09033FDA80906F188C1D22521B514F07B8F5DC8996A37209CD107440C3952A98EC592FF3009E9008AA70E58681E6F60EDD587534060BC8468A64B3E020C18E81BC1A2DE8D6BC30624F731BB8DD50137B3C0DC23C2264F98A49E6BDCCC62BF9CA6554D3707F351FA4B700AA9DE28F122FE35BBFAD4C2E5334ADB835630DC25B026FE69A94BB17FFEEEF6F358C6EAAC4B50A5E3F2D4B0023568D75EB6BB781BBF80C1A7B22F6FCCE448A7A5BD86F1F17C46325386C6EFDDB767A8D79EC2613146A3ABFF54C1E
ct = 7DC0798455B5A26CB05790521AF3D45C88097EFEF2F830A9141D2B22C453D0D4B0D03D7E43E1F0901F593E1DFBC47AEE3BB4F41783C9ABC2926A97C3907A3E4E0F7485085D7172D085B5CEB7B71ED0F2E7A36D263009AA247386CD72253FE736D3491CBDEA7A0CA5130E050DC597F8CA3E2472264DCFCC7FE9AB07946F02F4E9462AEF52D7C061ED483F9F23498849E51AE9B357BCCA2FE1BA57FE159F40A0EEC1A3D6BEB9BEED50ADE070F79FC7135286DC4D7A7CF1361067F73B41242BF6AF8ED472F9C88896D8480B5FACC7706C2E4B6048520FDAF6E90073260957A9C121546B1402C5946E06C288C490C4F9F708336B744EC2D4D05A443CCA3D8316BD9EC4C8E54AC2FB4E38A39B16966E656D10F5AD630A5D0CE7E686B27D2A6E877CB21F73CD3842F5917F03FB9EE48BF79633B73217CD05C1DDFCA8AD07A7F3BD4C1D5F3435AF4A9B8068ADCD162A9F107C65E1322B70EB15E522CE00F5DEBC995B5544FEF5C85170B946C4729E482E4E44C29929150D15FC5BAE4D1AE526E20E25FEAE987E29A33A24F009D131D7C06B15559DB4
ss = C703F50DA9CBEA117DDA3F19CCEC719C

count = 63
seed = D995D38F934B6E1A7CA77C9522E3D037676CC939B0C8BD4B84394B3DC91A791F09D2D97199258C9943DA955E7F7B26FC
pk = BD9243DE189E15CB45C6767CB179EB18047C5ABC559325AB44B4D319E665636F2950C673930AE172B87B2C7AE5985DE2DEFE8BD8430844377AD9F905DDBA07EF4BC80BDB80E5B681182A72FE4FA6B87017E3DE0CD34F515117CC08AAE91F6D72DF7675D56F0979E9E0C49CEE40A0728A8FB0EAFB75EC27B6DE76A21C510EFD378B37B067978F11F219D82FC94BB51009510C6E15AEF66D2FF82FF83A1106D1D954A1EEF7BFA2A8C414CE045CA8FB4A7E0C15C60274194E2DE8111285020A631AB2F0F34EFA18247EFEEEE1B48835B6AE97FB4049771D2D907582F3340E89C4E167E15678910C8ECC5B882561E8733E1EAF12E30EF8EF3B82E676282C891C450979663024FEEBD3AE27F2E5506EB6EF15A40F06746547305EB562AB5209ECBDEFC39ECD28EED4412EEC2E710846549A6CB9F3C5CA49A4F5E3D2CE35AC3B9DD1223BDCF7ECA86FBAEDE5B9144FDD082D190F46F83A85F6D4D2D23A6BE85FF81B489F229011C5A333A9D724D679CCB259DAACDB4E46108A27226B20
sk = 7643CEF2D62CC5AAEECF754653EA62294CD2208E5BF3DDEEEAC9D531A532770837A854B4F5531F6E0C8D6C10183B30D3435498C2DD142901BD9243DE189E15CB45C6767CB179EB18047C5ABC559325AB44B4D319E665636F2950C673930AE172B87B2C7AE5985DE2DEFE8BD8430844377AD9F905DDBA07EF4BC80BDB80E5B681182A72FE4FA6B87017E3DE0CD34F515117CC08AAE91F6D72DF7675D56F0979E9E0C49CEE40A0728A8FB0EAFB75EC27B6DE76A21C510EFD378B37B067978F11F219D82FC94BB51009510C6E15AEF66D2FF82FF83A1106D1D954A1EEF7BFA2A8C414CE045CA8FB4A7E0C15C60274194E2DE8111285020A631AB2F0F34EFA18247EFEEEE1B48835B6AE97FB4049771D2D907582F3340E89C4E167E15678910C8ECC5B882561E8733E1EAF12E30EF8EF3B82E676282C891C450979663024FEEBD3AE27F2E5506EB6EF15A40F06746547305EB562AB5209ECBDEFC39ECD28EED4412EEC2E710846549A6CB9F3C5CA49A4F5E3D2CE35AC3B9DD1223BDCF7ECA86FBAEDE5B9144FDD082D190F46F83A85F6D4D2D23A6BE85FF81B489F229011C5A333A9D724D679CCB259DAACDB4E46108A27226B20
ct = B299CE6702196439BA77EB9CCED77848129554AB4C769AA38FB4B5F45A9B0CB22BAA0EDFA55DEB998A1E2F72C42A3BB15D2833DDB57AC4BB484032F4D4390ABB662EB544C53AE9B391454881DD936B92CF2132737481D2303C3D48E7FAB653FBAC4B932B9294FB30B253240897E4702CE078C14DFE372D3B0EC17B8ACD00D8B0D0546EFD122D306B5E371272CD1321BEEDEB09E777E4B7AFFFD65415A588117B444F46E334BAEA4E1D06CD6689A86CAE36E074D1E64E595EA20D138120C4EAE891D24C8C1BBFDCB36716063838AB7138CE02915CDFDC53B29B69C0D795A0999032A9FF732D8FD631C7A6DB6F1E73EF55AE40014B7294FCEBBE60A607FDA204E75A42813385AFCA2C31532F8EE93EA9E3686DBF54C82560EC51D1E4DAF80EA448D96BD4B7E9ADBA915FDE0F5F30C618B5CB2527B552B30D1FF5F416533EA1482BD742BB7F49B5726DD49D6887EBF94B99C2E6C136D978F67B6FFF5F7A23F9D457DAEAD5A6139B6C86E2F5D1700CEA98DF3B7AF2F26D7082CB31188FCC6A5E305BD825E7344F7B9D171E01BE31453AA8060FA1
ss = 6353E3E351F88595AF940EB23A4756C3

count = 64
seed = 5929F02A271725CB40200DE32D9D03D8BEA53B53AC83186C42C7F565CCB1CA508305D470850CF86E9B2C61A5B8CA1C93
pk = 7BC613BB6E6B1C6182269F6879F737F79E79A3040987FAF718B8743FA97169F3F85BF6152CF846A8A000FEFE8AB56FD632FAB9D1B8B53D107C872B8A3A3C05B0141DEB35CC85D61188C45C6CDE567E79B8EB962CE6539B88F534662BED38CBB8F243119967946992FF424601DA4FCD3C88D7AC44437E0FEFDDFC572FEE183B15D5A9F64EFB60A2C74A46E5781430BC6A66FC99B7137981BF414E2D99FFBF040A7BBE28C5C9857116A5A2D278646AB01B2269FBBDE14A6646AA838ABB31BC7121D343D4CC5317BCDE624C4E2CD243D1AD364CA06656AC2E297BE782BE6A9F1CCD966BE558B3E120C67B24B17501EDE12A46D4BE3B108CE6250DBCC704F95EBC1B8DE8E939236D0297E051D473813D68F68F4F5F6D7C981B59B41D70DB620AED9AA7C26A6474E00C3040E14E20E758C374C68565F0628A0EA7C19531C385346C5C7375A90C2FB9B08036F79F9F6B2284B3138CA303F453F47E0A4116B5B675B81C63F7BBA9954610E0D1B9DBE48D55DD0E290864D360BA6FAEDF13
sk = F8EE95521060C03BB8DACC79F7EB7DB640F545F315613A353FC3D8392CB53F36ED647364A04E37278A0E0A45B720F4A75C580C9920EBA90D7BC613BB6E6B1C6182269F6879F737F79E79A3040987FAF718B8743FA97169F3F85BF6152CF846A8A000FEFE8AB56FD632FAB9D1B8B53D107C872B8A3A3C05B0141DEB35CC85D61188C45C6CDE567E79B8EB962CE6539B88F534662BED38CBB8F243119967946992FF424601DA4FCD3C88D7AC44437E0FEFDDFC572FEE183B15D5A9F64EFB60A2C74A46E5781430BC6A66FC99B7137981BF414E2D99FFBF040A7BBE28C5C9857116A5A2D278646AB01B2269FBBDE14A6646AA838ABB31BC7121D343D4CC5317BCDE624C4E2CD243D1AD364CA06656AC2E297BE782BE6A9F1CCD966BE558B3E120C67B24B17501EDE12A46D4BE3B108CE6250DBCC704F95EBC1B8DE8E939236D0297E051D473813D68F68F4F5F6D7C981B59B41D70DB620AED9AA7C26A6474E00C3040E14E20E758C374C68565F0628A0EA7C19531C385346C5C7375A90C2FB9B08036F79F9F6B2284B3138CA303F453F47E0A4116B5B675B81C63F7BBA9954610E0D1B9DBE48D55DD0E290864D360BA6FAEDF13
ct = 710FA214C02BB2B832188B6CB6C9F66BBC26C94BB3724AC5405DCFD5C614B56294FD05C8133758F78FB31EF3DACD98F404B934FD2A4747B66AC339600B963458407DF968AFCD97BD6A125B8AAED89BFF750A2D2956596CC136EC9B97FC362878325062F3FC6BB12914D2B34177B0284748AFDE07C212CD7BE376C3A5061861A41536117C4F5E864762F92870F39B92452FA42EE03B2CB90CB7FA2796E392F058CE6B0FBB33F28D50D340D33DF71DB2B8330476827AA1AC0737337972142512746F31F230E5F431D10C06BEAF7B65CAB286346146BAEEE85BC81BD59B713FAFF5BF3FE96E30F75B14DFB9307C7C695A55C7B6B185F88AC3B00A5F5E2810A5EA8922AB3F9613D39B69D6854DA6F3CD5EBC51A25C7B4D827AF9BBA38678E839E3EE87186C48F9CE52CF4EF3B2480A927F55D21CC19A3A2A6E4396812C8567451B81532D6B785DBC9AD686A26E390ADF348CB19243F090D2912467D6A4E09423099074363CEFA6F957329B51724A835D18387265106F7899DCFCC91C7877756B1F9002DF661C49F5CE6A7BC202AEE3AA043FF3ED
ss = B9EC435D5568F1BB8153E1D11B62911C

count = 65
seed = 905074033D7B75DEB2D06A2F29144EB377B452534C5710632989F02D45312D156557E96D4486020826DB200153BC4A8B
pk = 000912DCF30216E62A3CB863665C9AA712FCBD5690C67AE96C6982BFE6B007F6DE84DF6D4250DE55865948C5D112866CB46781C8A1D4DED38D90CA71438C27DB9379E303D3370FAAD11FE424DBFCA3116823C1FFE46277EADE5EE9A818EC12A63A33644CC1A3396F2AFB047F4D61FA78F53213866CF0FA20BCC70DBDBD29230844128949B228FBF76F74A3DFDF51D39EFF67CAD7AC18043F06F3EDA2D9AB6B23A1FD77F99DC066A6B2168B32EAF4765E79917C43A8D967E0FB839F132948EFE3535D0FD5641CAC539C0F7933F3B6B292B217937FF15D2ECD545EF5865D4D98B8BB1A2253994C6EDAF353611860912B6689C2C5F0D214633B3AD1973773C09B0604405A532566CC9350AC9DD5F3CA538BEB05B12A9F25184F3128153EC38C28E93EDEF4F8EB6EFB5E71324145F40AE41CD1AC0D07BB3EBB7157110BCD7A07609FDE07C6442EC0307F959DF2C1560554563F2589E4AF3DBBBB1DABF563AF293C8FDBAA1978DC2AE340A7CF76A7FBF37CC2B65A02D8604338E59B28
sk = B8BD0493A882E3A49B4E0F6256FB1FEA0912562FD9BA26ECD7E4B5D8021C486B9C3114D7CBBEB7CD49EBA8A61BC2BCAE1F1BEF30A1DAF70D000912DCF30216E62A3CB863665C9AA712FCBD5690C67AE96C6982BFE6B007F6DE84DF6D4250DE55865948C5D112866CB46781C8A1D4DED38D90CA71438C27DB9379E303D3370FAAD11FE424DBFCA3116823C1FFE46277EADE5EE9A818EC12A63A33644CC1A3396F2AFB047F4D61FA78F53213866CF0FA20BCC70DBDBD29230844128949B228FBF76F74A3DFDF51D39EFF67CAD7AC18043F06F3EDA2D9AB6B23A1FD77F99DC066A6B2168B32EAF4765E79917C43A8D967E0FB839F132948EFE3535D0FD5641CAC539C0F7933F3B6B292B217937FF15D2ECD545EF5865D4D98B8BB1A2253994C6EDAF353611860912B6689C2C5F0D214633B3AD1973773C09B0604405A532566CC9350AC9DD5F3CA538BEB05B12A9F25184F3128153EC38C28E93EDEF4F8EB6EFB5E71324145F40AE41CD1AC0D07BB3EBB7157110BCD7A07609FDE07C6442EC0307F959DF2C1560554563F2589E4AF3DBBBB1DABF563AF293C8FDBAA1978DC2AE340A7CF76A7FBF37CC2B65A02D8604338E59B28
ct = B466E61CF90D5CE11392D4F87DA07AC8E700B673512B094AED8A6B065E61A4C1761870BD436324173B773D7B3F044FEB9306BC6D27480BA425E6CE1501BD0791CB4085F0A48F1DE71D9D7A82FB828DF468CD45742BD108E0F7D692C2BD70E221D5CE4C67E106F5E0F6BBBA29F9E6884FA5FEA3AEE4182277824FC164D80A8D311DD723005EF04865CEDFB80B71500447D812E9DC9E00E59B64FFE7C5DFDB4AE05047D11C077F913FEB49C5BFE29E57C88C11375A00531515E7B7CE5A23A189AED31F6B6C735311FA0CAFCA609ED86EBB35318DBDD4E2D5598E679E98BCBED7FD708B7A277D1FE7EA75B08B70CD73D82CDAFD6CED8DDC3CA58C7DD004AF4B1E92A21233C69AD581EDC702A8CF9DB7E9E33116A819C4711BC179BB7D4CDBEAEBDF194AB4040EF615D7646B66C689EC3E362C0855A6BA611EA2359A026244249C7B25719032568DB438658798903AFB6160E03A2AAAAB2C134B254C8F5F6753E6D403832B110E54E13064E56E4CB61E35A41D370EA384B6AC67612C073C85AE35374DD5C014116DDB651907A06CA4A2F6ECDCF5
ss = BED32BD3C8A0F9D270BABBB812BAE14F

count = 66
seed = A3E2E511AFA7BB560446BDADF67D2EE2E16FFC7BAEAE7EFB8C5455068BBD4E91BF9BE9D98B280072FABA7712C75B26D4
pk = 198231B2ECE738116B8E716830579B4747EA32CD93C1F2026FC0B0BF4A608977912A8E61B24ACDF60B2D9F89B54795782D82DCBA07E6874BA64CEBB73592354353B97A2D2AC634BD9EC0C8495DEA7C24027D0B65B0B3848C5EBC61455B0032838BBAD62098581BDB125DA6248433E5A60DBDE1CC65F6E8A8E19653E9070C66326146D0BD71CDAFF11FEDCA7E4A89A8E89C10A8D3D35CDA59675B8DD15610719B37C6AEC5E80848804B5CCDAB2A3382C77592A6AABC34F4FD06B7B69A2F0C60D063DFD1901E7378305BB3BED982F2C65D82559B95C57620A23A562D63E65F2C6C81F95C651D8856D646394998C3590CDDC55D126AA9F41AD69A941B008167F6DE68A23CE9FCA68EC8CBA4C05AEA971877D04C0FDE00205ED2C715762C4C523D5EEA0D25D7FBAAA4A33A04AFB243B328C0E1BD28D832BA754102FA20E1D02B2A3A8EB27D312ED69A4039164D3EA8B9749A1871D15090A650DF069C4D6839D61809A9C5D7B97A699A6EBF90E22115063D37D26C65D62DE1861CAF32
sk = C0407E41DDF48D333978B89BCF2DB01E4613425B456249E7B2DCA81E3F5F748D23C9D356A2209F6B2D60247B2E45C9808DE497F64F124603198231B2ECE738116B8E716830579B4747EA32CD93C1F2026FC0B0BF4A608977912A8E61B24ACDF60B2D9F89B54795782D82DCBA07E6874BA64CEBB73592354353B97A2D2AC634BD9EC0C8495DEA7C24027D0B65B0B3848C5EBC61455B0032838BBAD62098581BDB125DA6248433E5A60DBDE1CC65F6E8A8E19653E9070C66326146D0BD71CDAFF11FEDCA7E4A89A8E89C10A8D3D35CDA59675B8DD15610719B37C6AEC5E80848804B5CCDAB2A3382C77592A6AABC34F4FD06B7B69A2F0C60D063DFD1901E7378305BB3BED982F2C65D82559B95C57620A23A562D63E65F2C6C81F95C651D8856D646394998C3590CDDC55D126AA9F41AD69A941B008167F6DE68A23CE9FCA68EC8CBA4C05AEA971877D04C0FDE00205ED2C715762C4C523D5EEA0D25D7FBAAA4A33A04AFB243B328C0E1BD28D832BA754102FA20E1D02B2A3A8EB27D312ED69A4039164D3EA8B9749A1871D15090A650DF069C4D6839D61809A9C5D7B97A699A6EBF90E22115063D37D26C65D62DE1861CAF32
ct = 97896865CE6ADD775D4494D67021EBF50B7DB54E531382E6A0F295F07AF5C8BEDA125EE68313F75B91270E62BC5BE80178A0325D50324FCCD94D2F00BB550A297273EBB14F34670AA95C3CDEB7F9AF20326B6C37FBE4FAA5D06AB472A14BE13D24A5ECB9BC9C67CCCB69AA4BD93B93ABA96D479434B32852C3BCA49BF31367D6DE0E3F9928F2E170507BC82AE881205821945E122D9738C2425C50E8016B81EB19AA2C66847AFD5B56617E7E4B15BC34992143C6CC767AE4910B0BE7093344D982872F7168693DFC0642AB675AE7FE5F18D66A07285AE68CB4E74536B20B43A4810DF5F82437365C300D9806BC533A345FE9DC8C58505466F9EB210DE2F32A4C594F5ADF546ED2102DE1E06329AC5FF1E0886C243B8CDBE01A5EB89BA41992CA45D9724A2BE1CE89279EA07AE9CCFFC6CFF86D2C3B60966B4CF1211B8E92B2C42707DBE957292C77D5DDF96ECCF121DE4A119162F8416BE19B2F3C8D91CB78FED227B05B1531686773C2AEBEF2F9CF337AD43A1B2D1552BC3116AC8DA9448C33F234DA667D3C138DE343F0E06C09EA88257D
ss = 51C06A9252A9A1E7FDAE296584C13112

count = 67
seed = 074AB1A37BA5A0403D8F68D26FB787BC2C90F5EF88F2A6D286C3E6B168ABD85D393D8225618608B8EEB301D26AF53BC0
pk = 2EF91EBDF5261EB92B2F470053DC48EB4563E5D40389FA27BE0586E1FA15D379446C42C9E79647588BFD4072C1EB2D90BC75C09B0DE7F2388502552AD7E43D7258EAA76380809D61E709F5BF278F075C2265E915D892CA7C74CBFC23DECAED089E6C652A5268F2FCE22A518E2A8495F14F645F630B73ACE37BC964AD63229ADC14339CDC0544703BDD5F206920011D1E72E5FC5028D1592906A7506B2CDDF4281A350C49FBF2F6DDC610EB9774E5FF32E2E394D2B00666F2EF1DC9D62E4AE7550B7F90795BF7FC318A404649CDF2D1D69BD8887FC04B5FBB7EF6AC2E47EBD7EEA4FD18576DEA28A6BF25B19E45B541181C06BBB760713C7873AA1D1FBAD06A415DFEF47C327365D3BC224B12534A889D93CF708567FCF2B23F334860587D9C79EBF5984217D78443712EDE9019862E48B6B852B823B972FFEC482998266488AE4CC1BED9973685C14CEA59BE35723DE7FCA95AE88C42EA3976875C817E2418180D6E6E21AC1F08F86D5666C5B12C3A04C6733FF3A98851DFA93B
sk = 334382D39164D1989696A2FF77B25A28AF8BEAD9883B5365ABA5068AF837BE962F439F233593D193CE5E08F7D66EFB3389885927B89D25032EF91EBDF5261EB92B2F470053DC48EB4563E5D40389FA27BE0586E1FA15D379446C42C9E79647588BFD4072C1EB2D90BC75C09B0DE7F2388502552AD7E43D7258EAA76380809D61E709F5BF278F075C2265E915D892CA7C74CBFC23DECAED089E6C652A5268F2FCE22A518E2A8495F14F645F630B73ACE37BC964AD63229ADC14339CDC0544703BDD5F206920011D1E72E5FC5028D1592906A7506B2CDDF4281A350C49FBF2F6DDC610EB9774E5FF32E2E394D2B00666F2EF1DC9D62E4AE7550B7F90795BF7FC318A404649CDF2D1D69BD8887FC04B5FBB7EF6AC2E47EBD7EEA4FD18576DEA28A6BF25B19E45B541181C06BBB760713C7873AA1D1FBAD06A415DFEF47C327365D3BC224B12534A889D93CF708567FCF2B23F334860587D9C79EBF5984217D78443712EDE9019862E48B6B852B823B972FFEC482998266488AE4CC1BED9973685C14CEA59BE35723DE7FCA95AE88C42EA3976875C817E2418180D6E6E21AC1F08F86D5666C5B12C3A04C6733FF3A98851DFA93B
ct = D09252E5A9F857F98190BEE372E55AA91D9E73E54DC356890DAE6FBBBB871FA9D53DEAFADE19D90ED6D3B9E5BEF7E78B606A7744E33DC6B48269C0B1B71F12F4CB9C820A28D834145014DEF9A1E5B497FC96D45EB6712F334B2A640FAC7C925D054A0DB99C91A44FB6DD44FABF4B4125546C874F36E0FFB9301D042B8E314312B61A9EDB2F7F72262E1147EAD48E68E2B13EFBAE89F43E42AF27E1348761A01F726E6496E946BF7270C8F9A3616AA8C13B6FC74FAEADA26F5B0D8EC70472D9FB033DBB519534392BF440D404E2FF3C9DF5E2E4E5935DA68D0B9C15376243780B9397C5A78FF193A99BB85539512450807B237D54E90627DD60FD3816E5F87E8894C4299279094BB4F274E0F425ECAC0564EBC7ABFDCCB7AAE9F7BB1BB4F385A13AAEBA839A5327C53204110A2B24A1F82575BE823A77887BC94C037A7A95742D56072FAD78825FB4DB760FC741A884C3A0E18DF1A447C11435E946A22AABBB1804940DD025CC4D06D85565BDC155EFA1DEEBAF2D400E011DD235A8C0079933500A7C9E7E1EDC0D582ADC676EA8C5CA77D452
ss = F7AF39468071B219E8EB76EB6CED97EB

count = 68
seed = CC0C86CC0ABF86FA21899BE1953913C00E7C46E6B5F730C4E88B3C034012763981D7F14459D3081638080378348856EA
pk = DA9F2EB2890FF8FAA53012E5FE3FDD8EA020482EC2B9AA51C0A47FE492EF6EC9499C0A7B94A8D250D3DCC89C4497167B7ADF29249AF72B9A79D7E180FE582402F2E7125ACB73AD623A9BB17CF72A937BE227134364DE051FC482A756E31632EDACE335859115074CBA8289331FE265B70B9CA57567FF1AF84AFDE8320E1FB00E9800DA0D939C64C8D97647055CCA7914E806E4F8A2199ADBE8B06CCB2E328271162652504DC175ACA71F0CEF6F2B43A9DA5C42B2EEB8D3748FFB8DD41DCC274E120AE56658E17C59A92F113F9AFD909C5666D547CC7DDCF25597799B1D9A33BA0877325D2DD347AD85BCCDE6D4E2CE9DE7CF6914957667C1B98EC12DE48CDFCFEE5AF16D5B7ABAA07085E362232C581D7122BABC9408C6E64731249C00C2DE00C966592D077D740565A11177A0ACC0BFB7821E932B8BA2C1445312C6AD889604D3602D43BBC4BB0405E7BE1956B6C43F487B0F0335420E137D8C6AFC8DC55BE65EA84756BB75CFFBA50C43CFF2D900F81E44F92DEFB1DB1E283D
sk = 6995143E8EB8A6E93840F76EEC844F67D2B5F75B1839A5040F4DFF8E56F68440836A072412A30D851ACE2C7C6F02D60E7A8420001A63E606DA9F2EB2890FF8FAA53012E5FE3FDD8EA020482EC2B9AA51C0A47FE492EF6EC9499C0A7B94A8D250D3DCC89C4497167B7ADF29249AF72B9A79D7E180FE582402F2E7125ACB73AD623A9BB17CF72A937BE227134364DE051FC482A756E31632EDACE335859115074CBA8289331FE265B70B9CA57567FF1AF84AFDE8320E1FB00E9800DA0D939C64C8D97647055CCA7914E806E4F8A2199ADBE8B06CCB2E328271162652504DC175ACA71F0CEF6F2B43A9DA5C42B2EEB8D3748FFB8DD41DCC274E120AE56658E17C59A92F113F9AFD909C5666D547CC7DDCF25597799B1D9A33BA0877325D2DD347AD85BCCDE6D4E2CE9DE7CF6914957667C1B98EC12DE48CDFCFEE5AF16D5B7ABAA07085E362232C581D7122BABC9408C6E64731249C00C2DE00C966592D077D740565A11177A0ACC0BFB7821E932B8BA2C1445312C6AD889604D3602D43BBC4BB0405E7BE1956B6C43F487B0F0335420E137D8C6AFC8DC55BE65EA84756BB75CFFBA50C43CFF2D900F81E44F92DEFB1DB1E283D
ct = 01775494EC485C77F94642C265BA581BED2697A183EBA6314F640EB220814067A26C0172A7B12695960731D76F68CFE1D29DEF66D7B49F541E8B1813BE93233DCA84999925B0B20B6BB3872B3DDCC3322DC3AF9AD9CE594DA5F47D2B2295091EA1AFC66DD414D91D53BEF899AFC91C10546CDBC2DDD6AA4A4039FA0396099A2094099C78A410E0830382379BA0C54E2DED11C55E12D813C5678014909973A807B7803CDF3B385B0AB412AB6B19C9A7D342B99FF3262596B2A2E7F9BF0AE69F01EB6AFF39CD52C27F87891B661309663CCCAC6287BA575D2B1E90EF3E0A3353704589C62539F783EBC16A405291A91DB52C22E5E8B5CB5A9CD1016713DD7B1E97A864DBDE036BC19E9E1EEB8D452E2D2E6611FCCBB5563DDFC1F7F443D2668ABBD2A6451EB60BF11D5CCB265163B8F6EA132D3CE13D64C0FCE7BF299BDE91ACCAEB63E125118CA30F0C87B331662CD016B131FBF20EC62A8B78DD6F7C4028650E16A83CF7B2D9846ECB1A8D01687CC8C156595F436FAF76C7AE0D73605BA3B6616E13FA6352808BD767BE9F6741345D4083E7
ss = 795C1639B810FAB967C5F7F15CD7EBF3

count = 69
seed = 6D5A7CC326ECF3983C4E7683F45263A37F692F3BCD2D920E1FD9584350119E74F9A3F905F70D3E20318C1413DE2A0DEA
pk = 002A7F962B812789ADA4705FE742572BC322707D916465EC0ECF52CE90DBF4C0556AD81666CB42882D39068F04D94BD3A065C3DDAA2A0953B99FC34B6F543B5BBAB07F1E2430BB7079B6136D9F438E41150C3DF99E303A9288DE9B2A7F1002885EE60D8274D7ED1089AACB3F5058861F690C386931F2D7EFB5181EA0E710900F785260DE3810AC24B8F80A42871C87BB8C4C0E52D63112E1D82C65879E8E6529AB7671C763715F304174643301F640BFC816CC9C37E4087FFF8905B93BC47C300DED52C678C110B594FFF3FFC0D02A0BA17016F868942D38E718B0DDF221141202F92AAB40B7605B90A94BFADACB9F31646546E23AA0B55BE40B901C0F782CFAB4E6B41EC13932109CC5AE781A1EFA62BAB10E742E7E512B8BB5181024F9C62AF2F9500F058CFBCD689A35822BA7DAC6CB61589FF123004305382F81E253B45A4ED3DEE72784DC8673EB0E85BEB00B24ACB68396EA2686D035782AC912DBB4C16620103121B288FF6903B2EFD8630A5EEDD98692B102F6015F36
sk = 995EFF7E0D195C6D0533F3DC194D47E60F9AD14696144CDEB28F7E7A15A005F92400CE33DB073D49B53871594A88FC45E0F94207B5F0F20C002A7F962B812789ADA4705FE742572BC322707D916465EC0ECF52CE90DBF4C0556AD81666CB42882D39068F04D94BD3A065C3DDAA2A0953B99FC34B6F543B5BBAB07F1E2430BB7079B6136D9F438E41150C3DF99E303A9288DE9B2A7F1002885EE60D8274D7ED1089AACB3F5058861F690C386931F2D7EFB5181EA0E710900F785260DE3810AC24B8F80A42871C87BB8C4C0E52D63112E1D82C65879E8E6529AB7671C763715F304174643301F640BFC816CC9C37E4087FFF8905B93BC47C300DED52C678C110B594FFF3FFC0D02A0BA17016F868942D38E718B0DDF221141202F92AAB40B7605B90A94BFADACB9F31646546E23AA0B55BE40B901C0F782CFAB4E6B41EC13932109CC5AE781A1EFA62BAB10E742E7E512B8BB5181024F9C62AF2F9500F058CFBCD689A35822BA7DAC6CB61589FF123004305382F81E253B45A4ED3DEE72784DC8673EB0E85BEB00B24ACB68396EA2686D035782AC912DBB4C16620103121B288FF6903B2EFD8630A5EEDD98692B102F6015F36
ct = 3A79A90DE415D008A85D8B1555E0E5BC944CF2AC384D1779533E4AAC61969F8FA4300CB60AAF606FB692698C220995D7582666D00369D4855B5560C328AF24074D10A8E95743EBD8084380FFDD12A1E7C6233A331D053534C942991694BDEB581216A42F15155972792369A55E56F9C41EC6C318BD9E91BBDB7ACA3D4D3074C04CE2DA22B39270EB0E1F3140C2ABA6AD06F38A2F893357F431880A1F68C8241C8CF3AF0E0A4DA6DD198B30A8B30DAD26D12B118F7AFA8CD4276D65C21223BD96FD81F38E8E4F56CBB36ED6F957558EC7B50161A05C3A53FE66E67E5A00220C49DB191081DF1F93368A12A1F16C9C91604A7A0FC5FB980035F711E1289EA4406291A8E772BCB26351561FC5AA127862BEC2710D29C65BFA9672124F6E46D2E59CC7BA7206544B61F11926392350BE5187552B7B2287A95908B939254880A152F88165C75BCCE5BE5D2DBFDA7B80DF1B5E88EB23F993D521413F3C20C9D19842E1F23ED0D84EE7CA240398FABE0C885A61E1F4F232A51726A65F1F766CBD9A43D994F904311A98A0128969FAD16A3DB0634CD0
ss = 1BD1F7208EAC7A8D5E17FE75A98CD1FC

count = 70
seed = F68FC0314DEA88F66AFAA76E6C9B6804B13D4876924410D1F526FAC59A62E26C560B125B1D0F8B461F1FC2E351EFFB4F
pk = 8F597E89C13C38AB2F3321F6CF5956813192BCE0F64A7275650D6333FBDE04DCB412E958F514266A48D71598B66B4F5491E2396689809E57FD3FA1002818199DB0D3100668121004486FC8C68201A44033FAE9B9DC342A798904BD831A4E92E633E61DEF7FBA08FD888EFE77EC94B95AEA9FE182DE6A352957769F4854178CDE6A05526EB236D19A424FDF12017C4AC9F75BC7E47BC6DEB8EEC98817ED85948B352686F695438574229350F37A0CF73FDE1F31B3D991239B37D51DC922E927B1437C68079EA998555C51C7902D15B74E6B7B0F2CFA87B26667C9AD273285473C76D407A536CB24136CCB45A040B6BC98C5B7AA9A7948DE47D86BF010664A1DE26205A1E9FE44BF527F4162CD0F1DC42F820A811EA2223B612B78CEC9F2131F0D49CE3A53143F0384C4F19B3EBB9093E393CA99018AD7544797130EF2F0A7CB8E5A2C1AE7F1F39B66E2AF0A4BF714009C5C4774EB0098AA65F86413D0AE44A462B9D83398F0C3E9198B02EF039836B3B15A92CBC8312F61DAB529
sk = 3E809EC8DD0FEC0D911A4E3FAC20F70FBB128C5DE94DC718D8128601C28B1DEF8D393A0DB283229F7C7383152A814E7CEFE8EF9D9768C4038F597E89C13C38AB2F3321F6CF5956813192BCE0F64A7275650D6333FBDE04DCB412E958F514266A48D71598B66B4F5491E2396689809E57FD3FA1002818199DB0D3100668121004486FC8C68201A44033FAE9B9DC342A798904BD831A4E92E633E61DEF7FBA08FD888EFE77EC94B95AEA9FE182DE6A352957769F4854178CDE6A05526EB236D19A424FDF12017C4AC9F75BC7E47BC6DEB8EEC98817ED85948B352686F695438574229350F37A0CF73FDE1F31B3D991239B37D51DC922E927B1437C68079EA998555C51C7902D15B74E6B7B0F2CFA87B26667C9AD273285473C76D407A536CB24136CCB45A040B6BC98C5B7AA9A7948DE47D86BF010664A1DE26205A1E9FE44BF527F4162CD0F1DC42F820A811EA2223B612B78CEC9F2131F0D49CE3A53143F0384C4F19B3EBB9093E393CA99018AD7544797130EF2F0A7CB8E5A2C1AE7F1F39B66E2AF0A4BF714009C5C4774EB0098AA65F86413D0AE44A462B9D83398F0C3E9198B02EF039836B3B15A92CBC8312F61DAB529
ct = 4811CBB081422C8875768D4247563872C3E04AFEDA462BD11E05EEAC5EBFDA4B9B60EF30849F552D6EC5D4CB86AA6E096046BFBD538E613E80F0A4F2BAFC250FC5A08F1D55DF9C64BB744CD6078DCFDE766B0B8E615EFE40B41EC1709E867F25FCAA1D0E3C68E8D11678ACEBDCF3966AE2EE57A495C1752DB6E924356F32C7984BF5D465A7A456594EB8DCF51DA32CFD3264FB69310ABD4798813C3DFF8521346F7D00038197AA19F17441CA943D902C9108F17042DE1755EE933CEC38479EA58ED69D266E49FC5CDAD3494FE875B3596E23E73195CEFDFB87E9D6E7E8E8751A693734BEE91CA599297CD1B711B3BC733ADA13AF3E9BE51328BF453E7843F56D113AE50F74E78A565800F3B5537390CC860893CAF27EAB97825B36E4376576BFAEB3831F54BFE8C404BDCEE69CF895936720754417B403F363121E4D16F481CDFF128191E3748E1ED817C92F7E7842C7E291F145E398B39655C942353F49689EE569CDC47A234E326B8E8E58EF95B41B7BBCFD957DF33E5F983AB7DFC5695B6664BF0AC9B5AE2F2DE93FCD7C62A94898E40D
ss = 0EE00DC6B4C3F9A5E6A8CB5E450F4C8C

count = 71
seed = A229218B0D51F58D915DF549901548FB0722F352C7470900E7E4D8399205764A319BBDDBD06C00E8C5932722EE5A404D
pk = 4E2442EAAD94F4C03C29C95D54B2F0FBFBEBB53839F756D4B63EF9A975B457F2C9E4B095254D8B7DC0AB6D5F27FAEE6FC499A085721BE47C4DD20D93BA30343B6241890E84AB706C9D7BB78CD51F72B10E48BF08975EA53B7B539AE22EB171004FE57CA44E7C46899041C5E6A0C2E89172ACAAD919E34125285DDC31BD0DEBBE3199FFD6F4EC817F9CDFA6F9F60CF510B7270287F72513AD7179359072ED317A35BD42AF5477D5F94159D19A14AA67F910616C7CD3DB226306ADC42501A2F1BB190C9C47D1657722C31C6F1773F8E8CF9A76D11615841C367CDEF564388F400872D2E8F0AEC77813F69593D722A7C34E68DE4E956C1FDCB5B855A4180C0ACBAA82144B9E9F952B02A034AD4BC201FF9C99B4B5CE5E749839DA803CDF7FEA6D584D075DAABE5E19E809B57EFA7BE56D4C5B657563D5047F1086841F1794F753D6906C5306D08BC791B107DAAA1B22926886EAEEEAE2359B501112A702FB165476E6BCFF6295D80338D6427C0D29BC667884692FEA827D7C243D33
sk = DBF1C465FFF3D9F783BD9EE61A573715E45691147B890443B6D75EAC6C76CED1B0A025B40A55440712AD8424672E761E9BC400D63812000F4E2442EAAD94F4C03C29C95D54B2F0FBFBEBB53839F756D4B63EF9A975B457F2C9E4B095254D8B7DC0AB6D5F27FAEE6FC499A085721BE47C4DD20D93BA30343B6241890E84AB706C9D7BB78CD51F72B10E48BF08975EA53B7B539AE22EB171004FE57CA44E7C46899041C5E6A0C2E89172ACAAD919E34125285DDC31BD0DEBBE3199FFD6F4EC817F9CDFA6F9F60CF510B7270287F72513AD7179359072ED317A35BD42AF5477D5F94159D19A14AA67F910616C7CD3DB226306ADC42501A2F1BB190C9C47D1657722C31C6F1773F8E8CF9A76D11615841C367CDEF564388F400872D2E8F0AEC77813F69593D722A7C34E68DE4E956C1FDCB5B855A4180C0ACBAA82144B9E9F952B02A034AD4BC201FF9C99B4B5CE5E749839DA803CDF7FEA6D584D075DAABE5E19E809B57EFA7BE56D4C5B657563D5047F1086841F1794F753D6906C5306D08BC791B107DAAA1B22926886EAEEEAE2359B501112A702FB165476E6BCFF6295D80338D6427C0D29BC667884692FEA827D7C243D33
ct = 3A7E02DAF340F52C75549EBC9DD5C254C4C951EFE22E9E9BFD1D7EEFC7699C8BE83553DD804B38159A7A4B50A73AE026456760F60EDD52B292BAA4B6FC7E1548C083EBBD185871BD06424577C4B9866624787E13EB20BE494F2D75FD309398391CB53BBCB4178E55F71A05D610E20EF024ADDB3B023BA87191B5AAFBD41CB2CC9BF03EEA6B1D1AD6C1521768C78A75DE8A2A4D9A24390ADBD70F47B6158DAB9D83E089D6C85C3D010EAF3507348B143DC7288E6CFFC9C6C56435F2EA0870F25C4F660A73B22263AEC9C1C417760E1F68572714329D2C48A0741183C0539FBD450474154353729F48DEBAEF03C71DDE56DD1DE1CA4AD8212C6E916935A77FE23A6FA01391959CE44289AD680A97C206A40D0EF9D1E2397C6DB12E9995C579CFA7359FA7967465543CA075A68C3F137FD964A4E2CD999411C735B02E2318EBA08FEE58183E6D18566FF3569AE30879E74354D846DDB0BD519BDAA19D52B529288DCBB623B1D33DACFD5FE22D05B418196132CB14BF0A24FD0BE010FEC25B1A299E2D7CB83191D9B6FAB4170B26DE6C02726CE2
ss = 76FCEFC491ED89034E8A6956A3F8D9AD

count = 72
seed = 6960F21C7350DCF41B4770C551DC8692D8BA2C0B6E162C589166FF22E7A1AC0F94C2F48504A5F7EB0DA094DF427BC98A
pk = D0AE536B7DA777D322FE70CFF08D604F6129ABDD3190FB6124553D7331C645EE8E76E345032A41A1F612A23CD5049024AD6B342A75A09884BC430828C61A2ADAA81B5FEAE4D6D969A56F01B2C81F12EFD152CEE4E8B332AA5AACA18DA195D980D4FA64CBA24CF86916D006EAF12B8100559855A58F13E195F09526C264323A38169E6ADDBD5168E619ADFC498F65D313AF684B087A868B7E53E37ED58FAA0B84D85876BE1AE9176D27B003E82BE3D9C407384FF9E40E4B4641721DCE290D273D2826F2365ECCB71FB9C5200262AB014A03DDFB854B265D13A145DCE6039E51763355F14D8FB2E8AF489B0191AE3ED263E5A8FE4EB89D1A958792BE39712E6043B92671087F4C56398B7C805498EE663F02DD2607A9CE72E104BE33C4426E2C499EA00A676D3F63A14D3E02C5E386D7F1B0776AD1CC9EC9D4B8D619483229545FA18B999F7AD9DA8C0785B524C0E693804FF6D513AC7005CC4C3106597F3FD4BEEE6468F7E6D8697C58B07A0262E158EE9EEDFFBF6F63D07A7435
sk = 1F7CFD2B70863154E8A69D1758532E86C20CFC763D67C758273B38BDDC18488024EC90E62A4110129A42A16D2A93C45439888E7600860406D0AE536B7DA777D322FE70CFF08D604F6129ABDD3190FB6124553D7331C645EE8E76E345032A41A1F612A23CD5049024AD6B342A75A09884BC430828C61A2ADAA81B5FEAE4D6D969A56F01B2C81F12EFD152CEE4E8B332AA5AACA18DA195D980D4FA64CBA24CF86916D006EAF12B8100559855A58F13E195F09526C264323A38169E6ADDBD5168E619ADFC498F65D313AF684B087A868B7E53E37ED58FAA0B84D85876BE1AE9176D27B003E82BE3D9C407384FF9E40E4B4641721DCE290D273D2826F2365ECCB71FB9C5200262AB014A03DDFB854B265D13A145DCE6039E51763355F14D8FB2E8AF489B0191AE3ED263E5A8FE4EB89D1A958792BE39712E6043B92671087F4C56398B7C805498EE663F02DD2607A9CE72E104BE33C4426E2C499EA00A676D3F63A14D3E02C5E386D7F1B0776AD1CC9EC9D4B8D619483229545FA18B999F7AD9DA8C0785B524C0E693804FF6D513AC7005CC4C3106597F3FD4BEEE6468F7E6D8697C58B07A0262E158EE9EEDFFBF6F63D07A7435
ct = 18F16C348230CB186A40FBD5035C57C305DA54D940F3C35E5775E38E98FA54C685BC2B9687308BEB3B62F9A8BAD52AC07525F772EBA731FC6CF2F8F88F32098A1245A8E37BA152E6FBB27D580BB7127A98BA43F509ED7B313FEE686BA36DBE58F8C0922E72AC06E072486FC2336DA8FBA5DFA430F8C44F4B51C115A67838D240D39562575A9C60CD8F0394F9FED1D2479CD1BF0FE27F4CB418CF723D29C3CF9DD4013DF8FC4C327E9492D729AF1300BD4FE0A5741817B976C46308B4033A213C9DCC451D544133DB3DDBD331D60D9B9D791092FA5AD6CA50FF6F38EB9F8987FA7C07C1C98E96B6D23F2E53D4DE0E6DA0978F63E9DC6AF1C107D92530BF749359E87F112E7BA0AB9E69317737D7E7DEA63C785213FFFF2B0542B9DDDB76019D9CECFFF0EC8735D25CDCDF7D337C75AAC550BD80F181F088DD0D471DD250D398BB2CAC98F9BC67DB1C5623BD56AECB0346F6A9E338D47505518FC12FEF594397226CAAC3A874963260B01ADE657DB2CAFD0DFC37268D2AD0536928CD6BF63C5E5F3378C4090FE3477D1056766FE7C96255ECB0
ss = ECEC8EBB1FF787CCB3D3CD06618A3ADB

count = 73
seed = 53DF46012CAD4A745B7A3C06E18CA95E0B839FD8161E3025749A0887549EB0ED6A44EEEA08BD6060D6509DBF7E9DC864
pk = 856A5DB00361F60DCEB644A5E578DB17565600190421B3A7700FC3578D3BE5C362D343185E72799B14A085C7C56C8A52B324ACB62141EB842A305DD0FCF31040D3DBF058DDEB7D3D89A90A0CAF69FF9D456DB0542816538F0FB24FC50F09719AD456B623E79AFD871FF9602F4BD3AC89E0C0542BD817875AE70477657F384DA137E30FBB7DFEBF0F9C9019F0B18F86A1255ABCDB5331549BD3FC24012428BBA76AD9D121B3884AAF95E79DD927E8D73A8896C496CC7F8CD6267A0A3A2163DACD9DFB72B9597E3A0721CBE10786D6CBF09A9C4D19E3E1EAB4DFCE09EA77129AB3FB480F623F09C4E5810D70A89E47E0BE2A6772287269F5E13DF0EC29427CF801F9CEA60157935F7343F3BF662995D726143008511341B5EAE5697A7E41E522B7218B1C1EF6A1912408422F32F5D1103410E60C3FE819E3E6FE8B3C034A7C24682F48BF588E92E957D9CD551C78F1F6EE52D3DA73A251C558879D638EFB8FB522112E1DFA854296E62E84F230A0BEADB884670C57F2462C52D414
sk = 3A19577908EFD37697B8EDC7FDAF47D1BD3AD01A1B77FAF7A3729672816F3EBA84C9638A79676EEAC0F22C8A48E0C5D50A26FF0844C66B09856A5DB00361F60DCEB644A5E578DB17565600190421B3A7700FC3578D3BE5C362D343185E72799B14A085C7C56C8A52B324ACB62141EB842A305DD0FCF31040D3DBF058DDEB7D3D89A90A0CAF69FF9D456DB0542816538F0FB24FC50F09719AD456B623E79AFD871FF9602F4BD3AC89E0C0542BD817875AE70477657F384DA137E30FBB7DFEBF0F9C9019F0B18F86A1255ABCDB5331549BD3FC24012428BBA76AD9D121B3884AAF95E79DD927E8D73A8896C496CC7F8CD6267A0A3A2163DACD9DFB72B9597E3A0721CBE10786D6CBF09A9C4D19E3E1EAB4DFCE09EA77129AB3FB480F623F09C4E5810D70A89E47E0BE2A6772287269F5E13DF0EC29427CF801F9CEA60157935F7343F3BF662995D726143008511341B5EAE5697A7E41E522B7218B1C1EF6A1912408422F32F5D1103410E60C3FE819E3E6FE8B3C034A7C24682F48BF588E92E957D9CD551C78F1F6EE52D3DA73A251C558879D638EFB8FB522112E1DFA854296E62E84F230A0BEADB884670C57F2462C52D414
ct = A2A47D16BE215576F1470608A443E615C8BFCE5E7F9ED5B249D6F573A2DBB0FDF843EA8C9662E5420B2C896AC83D9C2D0835416E25792CABBFD9A699A2150C132910B446ACBDEE88F3B746CEBB97DEA9B98E349AC6773DDEC949BBCFDE3701680B958D70024426F63D9AC3A831264E5CF96808AFC5D852208DDD10F6F93628F5B4157BD876452F60108803E6D19F489C514DC88E997CAFBD2811877D8D828E153327E818377FF0E068D7E88DDD0B6F30877EFBCD8F4B8BE15899B6D62620C7D6EF58FBE58325DF7CCD9A8D5417EF85406ED2B02A046A7B6A4C6262E318CC322BC061EB8817430CD55366FD3DE7FCFC0C356C8B0E41E41E100E5CBD3BC430CA100DAAE05B394951DA156DE25436867D5F6A09B99B94C1DB7A60996163FFC80143B00DA9805D962E05218DEB5D7C548AACABFF4C24605C1968E5A53ACDE8028D42D01CB2C8CF9FC90FCCDCF0C173340284166B32107CEAA5990E4F29BB975BD671DF5F044A7244C5E9B36819317D23F6E6A99F3A7617250EF28514B3A56FA4A80F8AE6AAA5FD88F28C7A30410593B916834373
ss = 7229B4C1AA0A7B970123AB36B190191C

count = 74
seed = DEB963F8B1D8FBDF499D564BA8D2D47915BB402DA02F17031B37B4039A842AFB9B7E48F37200605992BD2429427A7A4E
pk = 92ACCC567671EE5FD8809FF0F2FAEF216C9928598992C7E96D47EB30D7C5DBCE2A2C4B8BC46B3FC30E8A960221C574B9244F3E6B27213B0508F16A7365890661E67F4B9C1F3934B87F943E8E8F350794CF2969C2A837C06FF03242EE7746ECA4425D5359B3B5641B0E269201FCD2A8758B2D8E3A58B285952F52B39DF80A73C63F6C31B02C464F49345873A35F25DFF34D62CC39A1667E0DAC951D1F169E2291B4180ACF5B7C793F7BB8E38DCB3A13385204C2CCC84BE1726B5751770E8EEEE365DC46561D70960A093EAF4817672DEA8D6B1CAF7A05B9C69C0EADE21AF50939AD74CAD7AC20D892F688A3736764888003AB84E55BFC0F840331103E960BE3A5220DB5DE37357ADB7DCCA91802C74DDEDAACDA07259B8DA14B0E2C4965DF9F8A99B92234C0F58F5D2CFCAC08309FC03A39B9EFA944C0030BF8CB38B6618147E950162129387826181B5A40E5526DB7C9D15839A1C39CA1A5111EC00B9E836A226783D55861FB9F4EA96B8A3C25FDF064DAD0A2973D15BF431538
sk = AE0F65E29F38804A6759F70F4D01E2AAFF7FE1C91EBC4F89E03FF73E02A217659F53D8C47556BF3D8C94040F630D63605E2D0F923579370C92ACCC567671EE5FD8809FF0F2FAEF216C9928598992C7E96D47EB30D7C5DBCE2A2C4B8BC46B3FC30E8A960221C574B9244F3E6B27213B0508F16A7365890661E67F4B9C1F3934B87F943E8E8F350794CF2969C2A837C06FF03242EE7746ECA4425D5359B3B5641B0E269201FCD2A8758B2D8E3A58B285952F52B39DF80A73C63F6C31B02C464F49345873A35F25DFF34D62CC39A1667E0DAC951D1F169E2291B4180ACF5B7C793F7BB8E38DCB3A13385204C2CCC84BE1726B5751770E8EEEE365DC46561D70960A093EAF4817672DEA8D6B1CAF7A05B9C69C0EADE21AF50939AD74CAD7AC20D892F688A3736764888003AB84E55BFC0F840331103E960BE3A5220DB5DE37357ADB7DCCA91802C74DDEDAACDA07259B8DA14B0E2C4965DF9F8A99B92234C0F58F5D2CFCAC08309FC03A39B9EFA944C0030BF8CB38B6618147E950162129387826181B5A40E5526DB7C9D15839A1C39CA1A5111EC00B9E836A226783D55861FB9F4EA96B8A3C25FDF064DAD0A2973D15BF431538
ct = A4AF2C2FB7AD4C82B5B60E61B2B91F58C33F6AE78D46A0A5A1C8C78742AA41A2C82F85B20E453DD10B48126817AC73349DF685FBBBBE86EF5AB5BF2D201C2F13D9BC525CA033F552AAA051FCE249EC07085C25DCC39F77FA26D44DA98E169D9C998E85C7D70B3AFE33EA55B5A8209F2FE6669C9E15CAE92DBF9A86BF04175AE407EAD46801EF10A024B8920ABD24BD5BE62CBB79A3FCB6485B7CC169F8EED49960EA0F58DE3E4AE6794E877AA106FEE70BB204A4B69818B25FD39A3D3F7CC8D2249E35C90183D5DBE67838FFE518FE3250C929BEF5B16BB0BE6F591E97AA953DAD4E03801AACBD2BA3351D7823332E5818B846F7C2A2D94741A2F73ED7A588AA63E1FC33D70F1798BE627F0D496219EB2C08840FB7056E363D88D8E9B3C17DC604D0EED673E6945569F6AF7931A63F545541A5262FDA2808336919C4E77915C3F5A2EABA866A61E8EA6ECD22256CB413EE5BD423FFC79EFC9378C7EEB659009459E4B9E3120126B6A8F16EC62AF7B706E4DBD369E298A0BE532FFE046E29B3F85C35D80E5B1A494711E5BB39CA1C0737D58B
ss = 407DE44BEE5F3EC9A7B60A4306A3763C

count = 75
seed = 8E2995F1B3E43853B18916BB1212ACEB05898E2B177A87ABEB928AD7184E59695C56B2CCCF5DB80853C28A525E327D13
pk = FF02B3C5C69A3457FB719185EF965C04DE3C8DB013B4AFA2D50FF0972EB022F4A749B43BD41D08C6A17A164B78D6AE1DE196BBEA124F560E139ABFEB647801484114ED5EAB7D961FE55A2DF68DACB951681C38938823FD1B95BCDF6FF7E57EB226A83CA25744D84B069C8EC8F1AA4EE9611D988AD2A5632B52C2706EC1147E5CFF24EBB838C74E0AD1CFBCC71C39247E0C4C3AA583B4143F7CBADDF16928B35195D58EED5DD647BE94C6A9DDFADA7509C4C10396A7210E930F734FE5122AA9649D864DFF1D2520E2850ED8DAAEFEBCF43E1A2624C5CC6796F5D2AACED2757876FA3EFF482348E70CD7E6027C3578B3A360C06965ADE2C27294721F3B9DAC3F32C8318E543951E247009F07AC4B4943D9C0253978DEFA640C55C044070953C098E5C9EE4A64E56B0C78BB10EDA4613B615519C4AC9DAE7D478BA50CC4F173CE42F8D2EDE62D2C49B0E4DBCD036DB5CF878627B9502FF8A0A175638AF34260CCC801E25A74E6C9FADC67FDAF97CE4408C581DB59CD890F4634E337
sk = 6084A235F79DD093EF6D185B54E69DF33DACEE73A9BF2F379F684FB055ECE19459EB464E91E126A7A6E3ED11CCEE0046DA234D964C985100FF02B3C5C69A3457FB719185EF965C04DE3C8DB013B4AFA2D50FF0972EB022F4A749B43BD41D08C6A17A164B78D6AE1DE196BBEA124F560E139ABFEB647801484114ED5EAB7D961FE55A2DF68DACB951681C38938823FD1B95BCDF6FF7E57EB226A83CA25744D84B069C8EC8F1AA4EE9611D988AD2A5632B52C2706EC1147E5CFF24EBB838C74E0AD1CFBCC71C39247E0C4C3AA583B4143F7CBADDF16928B35195D58EED5DD647BE94C6A9DDFADA7509C4C10396A7210E930F734FE5122AA9649D864DFF1D2520E2850ED8DAAEFEBCF43E1A2624C5CC6796F5D2AACED2757876FA3EFF482348E70CD7E6027C3578B3A360C06965ADE2C27294721F3B9DAC3F32C8318E543951E247009F07AC4B4943D9C0253978DEFA640C55C044070953C098E5C9EE4A64E56B0C78BB10EDA4613B615519C4AC9DAE7D478BA50CC4F173CE42F8D2EDE62D2C49B0E4DBCD036DB5CF878627B9502FF8A0A175638AF34260CCC801E25A74E6C9FADC67FDAF97CE4408C581DB59CD890F4634E337
ct = 9AA1680EA9AAE087F6DF3196CB083FE3F462E560F1FBF9EFC708E8094A9CEFA627427AEBB99DE558416FA1A177DDA7E83713A325151F56C64DF41CDD485F050187CD7CB248887CC8F3C21F34EBBCD229852DAF31080365E88809B05ECFBB347EB814FA5D8311B99BC0000FD113E95BB99395CB473AFA937AA4FB135FD004AAE6ABF22AF7126200760C5084E97F1437BDE7BBF46651882EF1B34453A4E461DD7C37A726881C4C9C750BD1F749C2E317AF3FC171B6BC3C4E379035CB6E0BABA39E687ADECF28C2FC6D1396488EABFFEA1F4DA9F90CA21475D4ED599A00F3C6D5B32D844CF5D50724F9584EC20E2972D6A6168DA648CB21A0FE9236A0397B66411121A08D5F7341A035B52EE10F57A379F329993B61CBA5C306728B9FC8A047FCB7B2A9E8CF6CBDFDF240DD63AF861ACABA60AB86B615647DAFDE04277AEE2BF29FFCAF38FFB9344F82253EFEF2220115AF4BE4A20F2F4BD0D519CA80963BF17AE7FC840E2D80F8C4B8673D2B75B6C7150135DD7B6433D6F0474120F29E8CC3DA33AE84A296D6E577E7E63E4BCC07C952DF0439
ss = 2881428F09AA4288D15C7AE62575673D

count = 76
seed = 9218943C51FD2DE47E509AAC67EFF176795102F37D7A2017E3AFD768FCDA7877AF38739B00FCDF227C2FD62EB635942C
pk = B1977F87929DF034286F716088AEC299A479997BF56501E99778B214666FC1F8715E349AF17F9359349BC6A5391DB247054E2CFAD482607AFEB5364CE82C2341AF4258A4E19DCABD36542F9F113C75A5ECB3B2CB48BFF4E863B00BB676D6027ED417782617E0F5A6B089F29833953F6373D140E42905AC2EEAD0FAF9D0350F757F74B735EF57CE74764CCA2DD3C8DE894381ED568CCE84EB50500FAFE242FB9FD22B7ADEB0E1F1BEF547F5D68F314BB4742516D1AE528A8F454CCF4D3E59136EED77AB2544E80C81643353A74A85A6EF13236164E590C8B634BAFB67CF6A5E3D023BD9B506240B71DFFC972646DFC374D91B29CD140787CACF11F13FB603E7733DAFF51B586AB52941B5136A983FC696C13F92FD71A59E284CA3ED434F7F821FCFB27CBADDB439AA03FA2726FE40EBFF312C296174048653DE6335CE777AB5B34E3ADC9C0438E4BEEC423672757B8EA60232C0D9A406C7B7F8CC124D6C1001C9397DEC07EE3DBF647FD5562B642A21BC1B7259FBF943ACE46134
sk = ACD1C0217FAD5CAA4235544DD9DE153AB1880CCF4C76F16FF03A8ABB0A5010F400AE5722A75BDF5A2F6D5B546B34D73857CB1BFC7E587A07B1977F87929DF034286F716088AEC299A479997BF56501E99778B214666FC1F8715E349AF17F9359349BC6A5391DB247054E2CFAD482607AFEB5364CE82C2341AF4258A4E19DCABD36542F9F113C75A5ECB3B2CB48BFF4E863B00BB676D6027ED417782617E0F5A6B089F29833953F6373D140E42905AC2EEAD0FAF9D0350F757F74B735EF57CE74764CCA2DD3C8DE894381ED568CCE84EB50500FAFE242FB9FD22B7ADEB0E1F1BEF547F5D68F314BB4742516D1AE528A8F454CCF4D3E59136EED77AB2544E80C81643353A74A85A6EF13236164E590C8B634BAFB67CF6A5E3D023BD9B506240B71DFFC972646DFC374D91B29CD140787CACF11F13FB603E7733DAFF51B586AB52941B5136A983FC696C13F92FD71A59E284CA3ED434F7F821FCFB27CBADDB439AA03FA2726FE40EBFF312C296174048653DE6335CE777AB5B34E3ADC9C0438E4BEEC423672757B8EA60232C0D9A406C7B7F8CC124D6C1001C9397DEC07EE3DBF647FD5562B642A21BC1B7259FBF943ACE46134
ct = AE72316836860FFB8CF7CE76BA799D1DDA61253E361203B00F9A870FAF3CE3D71E711350474A218A851A3B9D3ADB673B2C2C9770FE5B16FCB8BABFD7CBAA2D1D406D449D03B834B8AA495886C1CA0AF168658AB649ABDE2A3B64FE9C64FD8F0D53F3A1A0C95F893B9DB915B5B2B1F7E5EEB794F5B62097A11045569CBA167B2DC1A948805924B131559D3139A2B741DBB7BF587515E6B51FAA90F0F012A411136A8B8988E2709EDB2D31DAE12CCA3E74D6C97906ABF32DDD4C8466710415B1895EEDC2720AC865E7A5B6ACB136EA784041865A817A4B8540153294045E96F62ABA55A89E9576EF7AB1B4AB5FCFF64F9161BF59952BED10AAAC8F8D111497706038EFAC711FB9F6917B66CD215684270414440A709EF39C47460815E22FC30D1E4A940A9A3403D3713F19D02A2EAA5A3EC39452F029D372BD8CCA1991108239C1C9B3C8841078B40D0D738280DF8D106A9D0D3411F7CBA6B8C95F9E54394D08A43C874AF8BC64AE915C5001F27EC7599A637D61CA24B4301891048D55487C04F85722F0C8662EEB621D781C9A7992D20FEFA6
ss = DAFF69A6D052736A29F7F699C38D75F8

count = 77
seed = 542E20078ADD5296050AF150360F057F6B9AB3BA835589DD56987DE805F900B906505B5390A0D86CBA28038992DFC59A
pk = D7E54D1530021849BC2C79A18C4591C1B4D2A83C3537D0DF3E38EC43F625059FE7F0C458884D12BFE55AFC1C38DF88A1EB8E74941BCFE5080B11936A67C52CC62D66C5BD2F53AD1DF2B16132A888EA3C631D7EA0FAE26AAD70E6659E037376365AE13C032845B287E06B537ED9E3550726283A3EC7EC8010919935EFDC18E1C455868869D89D2B72A54ACC840ABC7AFBB39E91BF071E86582AFBC07BEFDE60DD36D7737B8C2F84B7D496779DD12A547FD14D98EDD6EB7AD0E88FC08E3102AFB41AC4D74F8766AA6475B6723FEE42E51830FC47F7090ED1ADDF1D35F94F976EC09181E36E81C7D1DD2F26D35D26633CCAC4368B33E18CE69D42B9121127E5E23D4416A2F1BE0325BB5A32E914FCD1437BC35D0D9D99873481BB25D3994B1208850218D8E21709D44A3591F7E2DD7B55E9628F0898B890E42C2A783DFEA67C4747DC83BC0F485A5E4841F3E26C2A39B07B2D1939A265AED5F74E010249668DF38A6ACFF03EA8556003F0F1E7B568D9CD5D0FAA2190FEB55C098E3C
sk = 241191401A63AFA750F05662E354DDDBC683C776CE3222BEA59B3BD23B49A95BC1FAD20070FEC930B6060BD827D742B077092E422268E10DD7E54D1530021849BC2C79A18C4591C1B4D2A83C3537D0DF3E38EC43F625059FE7F0C458884D12BFE55AFC1C38DF88A1EB8E74941BCFE5080B11936A67C52CC62D66C5BD2F53AD1DF2B16132A888EA3C631D7EA0FAE26AAD70E6659E037376365AE13C032845B287E06B537ED9E3550726283A3EC7EC8010919935EFDC18E1C455868869D89D2B72A54ACC840ABC7AFBB39E91BF071E86582AFBC07BEFDE60DD36D7737B8C2F84B7D496779DD12A547FD14D98EDD6EB7AD0E88FC08E3102AFB41AC4D74F8766AA6475B6723FEE42E51830FC47F7090ED1ADDF1D35F94F976EC09181E36E81C7D1DD2F26D35D26633CCAC4368B33E18CE69D42B9121127E5E23D4416A2F1BE0325BB5A32E914FCD1437BC35D0D9D99873481BB25D3994B1208850218D8E21709D44A3591F7E2DD7B55E9628F0898B890E42C2A783DFEA67C4747DC83BC0F485A5E4841F3E26C2A39B07B2D1939A265AED5F74E010249668DF38A6ACFF03EA8556003F0F1E7B568D9CD5D0FAA2190FEB55C098E3C
ct = A89C39659D7A0FBB006773546299C09A8D1A2C1E31825DCE83855161C247C77DED1CBD3344E26388D288518283AFE4C30E9B83B7C2A83A3FB8F1290ED5B2102355C360CB7C18AD149A8F7E8D157FCD8D0240A18F3CF324690791EC9AD33B264355F7367027EDEDE00E98C70AAF3EF727898D7E90C1B3B1A1E90960E6141C2E6BEE51400BDAFF69A74CB5D296269AF82A7DB57963F15EF25DCB43E0A980E29A8E41BC4C5648173E114D8004BE3DF8AB497E45362A4F1535C1F7B1654E0F79BE515DB5CDD601FE0620D8C77BD3D6F6D404B4359CE6D9F97D92D193F85B2D6C912E405544C93345FD6E585EC3E2154502F9FA784A2C5DD6FEAD5A3D0C12302740AA5FB978302E357B10F3B8B52EB949AB86487B185450B3E8E4FAEE86930BF70EA737537777EF66BFA24E80353C5428CA0F61EE42A3D6191006C29D17CAAB81A8696B1096B56B88DC92C857F25BD5DA8FD551A5951346B9D466AE6B8C8A874BC78FA85B670D186C4EED2610A45F5529F73694C519616CAE6EF7C5178A48121F37DFE351577044B21F328FF9CC39375150090FAB
ss = 847E40381D9F22A10B88A3F94286A927

count = 78
seed = 6A85A61DD08C0733FCBC158ABB49FE0B0D96A50DCCA140A2E9F5A254F1901985844613B1C656C0CB0112620591B88AD0
pk = 642360A0B412E8D7515CF84720336C3931F865AFDD13B25C130941D69FB7B81D57D3EA774602A895243CABF6FEED7CB8C65159E1BE8C9BC6410B927C6EA706E3802E5024904B7A1D682AB58D413F1C0D448C7F10FEAC8A255CE21274047A31EAE0E40EBC1320CC7068F7D84F347BB785FAF063494A239515A0C5D9D0211711793D2524227F81E33C9C0929FCC16CCBE3ED24A8D4D846D45F52878EC534D6888AA2C6FE956C7B45C7E56D99B6ECB4C7EFA7EEFF890C409E1D89D1934240C2A250B5829BF24ECAE9B0C00E4A8F783A2B4050533D4EE7F4389C604F40AB18F2B3428F0844387EFDF1C98D43A93505AF2E33164B21B9F069E2E47EA8AC3760E528E74E6230FFE534DE81A70B7C7760FB07FAE4D99516D850115AA8AD79086B44A022ED640775D38F64D051A4AFA8614157E8CB26B1AD27810D44F2A820AE22E51E2D948A626D058CFC1188FF66C6FCF87A658609ABBBDA2CDA0FF9EDA6480ADD631689E18D0D89C714C03CC1F062A8F7A98EC6E90B2F01EDD81A9E1E
sk = B9A6B0C05677E957D41A34BA03BD06F2A9092E31F6338939E99C0E7B82BE89BC3C1EAEE6680AA4EFD394E40C2B3F30523C8117F7C26A8909642360A0B412E8D7515CF84720336C3931F865AFDD13B25C130941D69FB7B81D57D3EA774602A895243CABF6FEED7CB8C65159E1BE8C9BC6410B927C6EA706E3802E5024904B7A1D682AB58D413F1C0D448C7F10FEAC8A255CE21274047A31EAE0E40EBC1320CC7068F7D84F347BB785FAF063494A239515A0C5D9D0211711793D2524227F81E33C9C0929FCC16CCBE3ED24A8D4D846D45F52878EC534D6888AA2C6FE956C7B45C7E56D99B6ECB4C7EFA7EEFF890C409E1D89D1934240C2A250B5829BF24ECAE9B0C00E4A8F783A2B4050533D4EE7F4389C604F40AB18F2B3428F0844387EFDF1C98D43A93505AF2E33164B21B9F069E2E47EA8AC3760E528E74E6230FFE534DE81A70B7C7760FB07FAE4D99516D850115AA8AD79086B44A022ED640775D38F64D051A4AFA8614157E8CB26B1AD27810D44F2A820AE22E51E2D948A626D058CFC1188FF66C6FCF87A658609ABBBDA2CDA0FF9EDA6480ADD631689E18D0D89C714C03CC1F062A8F7A98EC6E90B2F01EDD81A9E1E
ct = 6E7AC1C4C4AD722541C905C23E673C34664BACBA26541C25FD08ABC629906C0468CEFD57CE94C245C6B6D49078F58E8AFE2747C47569D7E7179909E5A78315520C19208B0AD916F3592F3878F8636821250189DE2B0FFBAC2CDA60023A263187F75967D9F6BF3012BB1014986AD6EA2B72534F006CA609DE4C2EDE35420915112853E2D00F9DDE7FA32B255D755398AA7F71EE3ADF091BDB65EDE1A6D14E28927B5A9DB0682DDB0F75BB157A973CC3104E34F315F8E58C89F97AC8A21015DA0338EC8BDC1987876D1D153351895FA0617AA42B670B730563FA71C983B3DD509FD6E0B7F58C02691C00083C8F62B5D38B4B2BCD18CDFB075A8A887612E283A02938ECE6BB7C3645406F715562924644959A96B5EFA4B61AB150965913B9CC88BBBF9F081C8D35B2FC4481725521C5BB2971EC9071C67E2A2A60BC35DF4C7362688D8B8A11A7C65C0F638CCC13716E18E2FAC5B6717985482811F4977D7568CC7D67405AF40942254C016D214C32A23AAFD87049725F494A6C5E144098F32F95B5E0979B37F9FA7EB3C49484707A7F1B6417AC
ss = 1F4E558F02585211E37077BC66DF2389

count = 79
seed = 7F4A56EDA151E7B097CFB8EF980440FFF707AFFBA91867C89522CED6C5FF3BD7F5F00BB49DDD615D9361A7E4EFA42851
pk = CCC8419C22AD3E6EABC9665ACE9CB9251F8BA5BDF97BF482B6C4E091568F566D577455FA0C2F15215F27A072996AD3885DA8D09D918F18A6F7E82366D2BE33F2BCF48B0E7214D3BC01A4D134F1D33CBF9B7D8ABD5BFC9CEF7445EAE34D7126DBBC7DD47CE1974112B27E24EAA40C332AFF7318C5634EBE47770F31FAB1334C4FB59315D0A01F0CB21D3CFCBF82CCB20D88721DC622784B98B30D29CA6FE757E8376B6E2B32B5EAB474B593F1CADEA618F4A4324B4F9F8C363E6F21B82AF941BE8C721D8839D6C64167751E13850DA14603C8D4D179601AE9006A328A9E10013799C24EC705C9CF7722C40A1D97E817A70FA5EB24B9B70FF33A0F6A2A69D22236ADF666A0F74B496E7CA27432D41179F9B6EE6AF23BBBED639CD11CE95435EFB54BD416D1092D35607285D009B26AA53E39E08FC1EA2E69E704CA2D4D950097B461E7358AA628494D701CEC52FA04AE8F02A5BC224BE9DA0D5B9CB1B3C23DEB7921F7944DC29160864C89EFB7CB796E3E38F9DAA60C960DD21316
sk = 28A96C71577BA00C94F99FE965BC595A26DB2B3CA6AB5CF89C35D165453E5FCDC6F9DF64526D9DE698F2BD3E6BAC6C7FDD86601B9BA5F405CCC8419C22AD3E6EABC9665ACE9CB9251F8BA5BDF97BF482B6C4E091568F566D577455FA0C2F15215F27A072996AD3885DA8D09D918F18A6F7E82366D2BE33F2BCF48B0E7214D3BC01A4D134F1D33CBF9B7D8ABD5BFC9CEF7445EAE34D7126DBBC7DD47CE1974112B27E24EAA40C332AFF7318C5634EBE47770F31FAB1334C4FB59315D0A01F0CB21D3CFCBF82CCB20D88721DC622784B98B30D29CA6FE757E8376B6E2B32B5EAB474B593F1CADEA618F4A4324B4F9F8C363E6F21B82AF941BE8C721D8839D6C64167751E13850DA14603C8D4D179601AE9006A328A9E10013799C24EC705C9CF7722C40A1D97E817A70FA5EB24B9B70FF33A0F6A2A69D22236ADF666A0F74B496E7CA27432D41179F9B6EE6AF23BBBED639CD11CE95435EFB54BD416D1092D35607285D009B26AA53E39E08FC1EA2E69E704CA2D4D950097B461E7358AA628494D701CEC52FA04AE8F02A5BC224BE9DA0D5B9CB1B3C23DEB7921F7944DC29160864C89EFB7CB796E3E38F9DAA60C960DD21316
ct = 1DDDEB545627E5F2473D93D22E9A9B046281AB338AF1AF01D565A1C9F2A1DBB65F63ABE4EF76278F0E5E07A0679DB6FEB531F36895DFAAD8A497C5AABF981F35D4CFFFCF2CE7865696938FDA5ADC9220C814AFDF3AB6EFD20E57B8467260F10EF84950D0D76565E244CA856150553C0EA625927E98CFC8E592D531254F05C0648DDBD390EB619585846B7F83AC99AB56B2D5BC1F428E08263402A0121410E3B8DF61EED178FA02D1FC43EE753EE94B65C98A13932ADC58AC5CEEF8BA1C0FD09F26C4C5E3983C36F639DCDD11714B421A48C91D18D7F6AA5032280C5765E37D92545A9B4A0AE885B532069055A7A73E25EA31FA61B1356DEDE3AC183A4EF42F3350E03F4075F41B6539C21B6BA572CAFE30C2FE96D361ECF06E3EA986F991ACCDA5A3504669A73D0D978D5CDB531A2E6868BD74A7181BDFA143560228B0503D632207BA87DE12D3FC3FCAC3B89D1D79632C2A3B58894FE3A7D6E6AC30E944BAA01D0E77995538740DA805B0932227346337ED476B8FAFA250D91030E5866E54578F653076A71651DF7CB33952BC4DC4B35319
ss = C9E1C47EBFF65677C78699B126309CEC

count = 80
seed = 09FC004519BCF85B20D25D314A0DFC79E00CB6262A7DDDF9C52473641AFB8CFA0F5DD5F53558184CAAE9EC34B459E98E
pk = 90A457B5D8CDD1DCBDD2039BAD67AA4ECF08AC53F834ABCEB3F7525033C93840F31BA362A6973CDA35C5E5DDACFA427B2E0A27062A15F4CD575AA51B1D231F27F813B79F4671A301EFB77F75632E54F42BD110798A7CE02509B6BFC7326F38A3903B72DE008E58E74F79756D3AD307666AF6EB434478BB40F128C1EA7839584F9D89C1A33D47557FE312BD732EA43801F8CBD3C9C14C46C035676334373E749968D40227F9555D6A6AE1B0F326845C82F50D621185F7A2CB1FA382A609E449A3BB2939176376CA50BFCB494402CABFBAB0E68B3556C67DAEB2DC17C9B0C4A29C593524962DFBDD53DC4B6988B2BFD0C4DFF4E904DEB26257F4A6FF353A7A92C19B92F70E3655D8B222C55F8DDE38334572946778E89794770309601194549EE9B1370828F3F27F9B2A1FACBBB72702E3C67FE26F6E18252E6C0D1C0A612AB8D977FFCEA29622905BD85B15BC051507354AFCC59052561E464C6FCB5626E424B2091C2419BD495AC4322ED4B45799EE141C881B9B98B03F3F5422
sk = C08BA2EF8C3A0A043AFAD931652D7A19E6E8CB670F840DE55FE6141A25F7AB9F875F79E0A82D6EA5CDE5A017AB637D5FDB7C42646A1D710F90A457B5D8CDD1DCBDD2039BAD67AA4ECF08AC53F834ABCEB3F7525033C93840F31BA362A6973CDA35C5E5DDACFA427B2E0A27062A15F4CD575AA51B1D231F27F813B79F4671A301EFB77F75632E54F42BD110798A7CE02509B6BFC7326F38A3903B72DE008E58E74F79756D3AD307666AF6EB434478BB40F128C1EA7839584F9D89C1A33D47557FE312BD732EA43801F8CBD3C9C14C46C035676334373E749968D40227F9555D6A6AE1B0F326845C82F50D621185F7A2CB1FA382A609E449A3BB2939176376CA50BFCB494402CABFBAB0E68B3556C67DAEB2DC17C9B0C4A29C593524962DFBDD53DC4B6988B2BFD0C4DFF4E904DEB26257F4A6FF353A7A92C19B92F70E3655D8B222C55F8DDE38334572946778E89794770309601194549EE9B1370828F3F27F9B2A1FACBBB72702E3C67FE26F6E18252E6C0D1C0A612AB8D977FFCEA29622905BD85B15BC051507354AFCC59052561E464C6FCB5626E424B2091C2419BD495AC4322ED4B45799EE141C881B9B98B03F3F5422
ct = 6F03F7BB3BC8A42FDA1B7A8786EFD05EF906AC9EEFF520ECA6786411ECDFB9220E270AE0B7084CB7F166FBB5BD162EE5524258B74AD993BBC83816848C5F12D9E46180DAFA00C6CCA35AE13BED20D5735E2D76584E2B3AD0D5883502AD61F51ED01E2C27817DC585AB5BF5051657B14E13EBD9B0446012BC4F52053B4232C70ABD29EC96A2213C21B155B52E94B505BAE49072BDBE7351FFA6259B44F9B0C07A8F4529CBFEF5C9177547C8A8DACC9C0FC2AE27D904B7D4DC5B32B30D27E4260FBF06954E296DF28DFB73848D38FB58DBBB86932C2979EE19913C9799AC4C5454AC5C2C1D49BE237CF26C84B9F482BA71F6CE982D43F6E8127B2811051935263DD1ED4D524CE96C56F07F0278A97D5047C088C5E360971D78E0D9EF071F56C3909642E06F68CC7310035671E3D60B41E28F08FCBA900B8436D92A2F736F0652BE1A3629E766F4F262825F51D05B4CDA272EAEF488075021171A4969A202B1881FB1E2945D598A0836E8E46AAF34591297BDB498034A91E0E40C0AD0442FF0BDB43E5CBD445B6FE6A673712006219339E3F960
ss = B1539F6452E1BF74ED406CF80085929C

count = 81
seed = E3C41CCA6F04CFE7732FD54DE30CC5CAAC93E2F80E76AED7D24A962A3969C1B6A311459A3EC3E510E3E9B1E4291D4D7D
pk = DE9328EF6711E305CFA2CBDB563E1E3E0CCAC31B30B02AA92FE52053594DF4BDA18AE313F7F4084AD6C22B09C4660B5E16C1D71664A854A28924580CF3130F36832120605AD82ED5BB785960FC571649BB653A9C63F9934FDC55CBBD585797DB9B206405F1C03119327C3CBD69D558EE6B270A7483EF5779056BC134AD040044F7C54471C8C789D212F53F9D2F93DEBA6A7A827DEA59FD0795E676221374FCD5905300BD698D706DF1BA5835259F4AB84E25E58FFF2BA510EB340EC211D084CD74628FA11CFA992496878B1BAE2004E23C5A64FFFA5B29F3C0FDD4AB69F13821D3A9B7E4FB41AD0816EE685A9119A48C6A843B511145D93D239344022C0A0B449AE925A1D6FA5FC6504A663F94FE9A8848B6759AB197685A3A9349E9A902B417D9ED523D058B0CF5FC81232267577EA991893EC957057D2A8D301936C2B66341F92798B5CC300D5E1FA4AE449E88906824464A9216879FA4DBF94F4FD01286544990AA64F402708B03B35AA7B6959ED637A6D1250BDD410B7500
sk = 0E3B30E102D707538C2671060F603BB0B8A014103F132D6311EAFECA9E810796C34E8CFCE9D59342884456007B01DDD12EDCE6D10ED87E0CDE9328EF6711E305CFA2CBDB563E1E3E0CCAC31B30B02AA92FE52053594DF4BDA18AE313F7F4084AD6C22B09C4660B5E16C1D71664A854A28924580CF3130F36832120605AD82ED5BB785960FC571649BB653A9C63F9934FDC55CBBD585797DB9B206405F1C03119327C3CBD69D558EE6B270A7483EF5779056BC134AD040044F7C54471C8C789D212F53F9D2F93DEBA6A7A827DEA59FD0795E676221374FCD5905300BD698D706DF1BA5835259F4AB84E25E58FFF2BA510EB340EC211D084CD74628FA11CFA992496878B1BAE2004E23C5A64FFFA5B29F3C0FDD4AB69F13821D3A9B7E4FB41AD0816EE685A9119A48C6A843B511145D93D239344022C0A0B449AE925A1D6FA5FC6504A663F94FE9A8848B6759AB197685A3A9349E9A902B417D9ED523D058B0CF5FC81232267577EA991893EC957057D2A8D301936C2B66341F92798B5CC300D5E1FA4AE449E88906824464A9216879FA4DBF94F4FD01286544990AA64F402708B03B35AA7B6959ED637A6D1250BDD410B7500
ct = 54E763B0D9A6BFBA0303C86FD60FAAFF7C17C285C409C917D1AFF15A3CDAA8596FBA7C00BEB2CDB1A2F4A1F8C6DFF9BB7E3D89A30632F153D089603B1E5B37E3486220085FD493AB9250D58687F3BE07D0AB20FAAE68AFD81D929B5FA33C62115424FE158AC1182A6DDF943C8A2071C07C99DA3D8B4AE8D8C818054C752F4AC47FF3A24FCC7FF75812820B9F48AA3E9FDAED4B57538DBA1D7E73FD06B1B61FF9553EF23BE5180946B2FB64CFB1F8D57F0C5716C37CAEF3A20663FFC93F0139691C386812BA3A8F5EDDC749F42886C1F033A9D01C8BB81B45EEF8C694651BB0BC20C2E2DB4756FE439CD11514E7F5547C5E1303120713846BD9391937E0DF4AC2B1F862595DEC35E36967EE40A8E6693C05E458CB779084180F1694855BE7FA8D10E79061DE1B7BED9971FB01D82ECF0EC364E3454EA5694339FB2B8DFCC7DEE18BB44636DA0623C7F8922EAABBF052DB1B4013B2E1D0E2A263BC2EA16DC162F855C5DABF448C4B76294FD82256795F3DD062FE87E26A3647DA2B006C33BFA35369411A24BBE29BF79935532F93A3B910EDFD
ss = 54C96066F192ECAB63D4812F427D3B6B

count = 82
seed = 373FDDE922CFC416ED96B444E445BDD0962E8989F6C50ADF9912A89937C57217D3600B06C95440448E3F601AE69CA5BE
pk = 97D03408EEAB6AD688C85FCEA80C3048F0203E9BFC05E8784DBC647FED94A11131C2FA20316FEB69A5DA69681C15C488965461606EBDF0DAF978E6262C4F3839EF2937D62FEC34606D1F4EA11516D4EDA4D131FE0F0801FFE65628288F083E843F9DC7DD832B18C21DD39A3DFCD6C31D59EE82257BB01CEDB747CA2B2340BC0A8DC6DA98A7A9F8B5A9FE8D2F46468597875393A00A007A28C09770E401385E35A98D855E80DEF8439C3B826D92FCD2F3CD4105A4F7BAB0C55294C2480C5C1253E09279D262FF422965CFB1270A0EBA7A9B4F1CDFF67E48F36CD997A529F8E6BCDB95E9B69D43DAAD25BB6D7C584C47B69ADFB45DCD98D8C89DF1D415FF598E5DDA597534B039CA4D1644D2572AB2C5E2AF895EBDBFCDDC332F25A99A5C376588C29013B151D1DE07B8E96C0BCB0857B3D1638580BDE55CE165602103EEE04D724CF84F1494559D8417D5A23654087D6B6DB81F73A6CF4E8F0F68CE9DD3982AA69B919B83484D4DB4658B230CCE4D1E8396FED568EDA7C17E5728
sk = 2478F7D3DE6041E7E5CD11C5E2EF483D1AA6218EB126444011136E2681DF2EF881B51A092A9BADBE72C9772C169808521C47149578621E0897D03408EEAB6AD688C85FCEA80C3048F0203E9BFC05E8784DBC647FED94A11131C2FA20316FEB69A5DA69681C15C488965461606EBDF0DAF978E6262C4F3839EF2937D62FEC34606D1F4EA11516D4EDA4D131FE0F0801FFE65628288F083E843F9DC7DD832B18C21DD39A3DFCD6C31D59EE82257BB01CEDB747CA2B2340BC0A8DC6DA98A7A9F8B5A9FE8D2F46468597875393A00A007A28C09770E401385E35A98D855E80DEF8439C3B826D92FCD2F3CD4105A4F7BAB0C55294C2480C5C1253E09279D262FF422965CFB1270A0EBA7A9B4F1CDFF67E48F36CD997A529F8E6BCDB95E9B69D43DAAD25BB6D7C584C47B69ADFB45DCD98D8C89DF1D415FF598E5DDA597534B039CA4D1644D2572AB2C5E2AF895EBDBFCDDC332F25A99A5C376588C29013B151D1DE07B8E96C0BCB0857B3D1638580BDE55CE165602103EEE04D724CF84F1494559D8417D5A23654087D6B6DB81F73A6CF4E8F0F68CE9DD3982AA69B919B83484D4DB4658B230CCE4D1E8396FED568EDA7C17E5728
ct = FF133B570CCD1DEFAB8AE44866C0D3DECE43C34A06CD04EF6570C514CE4F066F7B47F1D428AC6BE51F68B838C4D97F7A5E3142A6709AB20D3DDF67F60AC5380467E7FA0284D83582D59CC58EF24FD34128E64252EDF4CE0794171710FD4FC7EA0E4DFE28CA85F3DDC19825E5C6219A45244F70A277B44C144319DB7539114039349D5BC06FD168CE67749017AFBD90E68BC580625C07EF5367F5E62B09E17DFE89DAE09ADB00E21E719D8A1554108988FF07D94BBF4A423EE7D46B1E36B1E4A1136D8ABCA3CE5D171419415A6899436F250D2A47E359FDD0182DE0D40E3C2C6D86253AD0D41F54423832D339ACB7C01108895AD4B97EA01A7F9AFD1249490D78B5A1CBA65E0B3C6AE93EFD24709828778A50742C178D3FFE159EFFB11F0D8692640EB098FB2C1661738D3BF91512FB43C7850B66FC29BAB9458102FF5845A39E18C408FAED4FA3D23AB4425DF160EB27C9ACBFE6130388A9063AF191E2501BE1CAA73BA897CC4F3E675B459C01251CB131B6F3A1C629798DC53594AD8B48AB9F095735B917AFA97CCCF4738D64317C4363DD
ss = EA52FD3FB349E68A70F89236C6101482

count = 83
seed = 16BEF67F7AC3A755C59C816478B75FCC16CE5844DB537791ACCD1EBD49D2824B105FD2E970F728C8F0CF16E439A9AE2F
pk = D971FAA0DB5D1F80630FBD527CBB0D18184CEABD1564FF16550BA0A865453F25F9BC978B5D3DF1FE99E3D6E0524A75A5A7CC443D24513062F7934D99357836CB5DEC7E2C01BAD0E27C5E9200532A2CA9FCAAB69B143F63867050843244C76E9AE9D60A72A1D467E9ADCC965C30B93FB4A600BCE3E990F3102C2C56082E380034785CC4D220E84A4CDC509D2E248D9135A22FB6E77E1773D2F67A4EFE9781BA162E6C533DB743BEB473EA53433177ABA71B93BDABA4A5CBA2259747853B61A7EA2840D9F22455F65C5641962BF14B581B7C96BD874E705EF526D246A9F57ADC94656FEAF48E177D0105AE6069E208A02741E04BB79A30BF3A36182020D4D6B3DBE4C62B43F0276AA3627297BCFD32EEA82BC9797A7B07421C629500005C71C6C6C5156DA35A223E11A3C2D1F0DC3469F377BC0A15022BA95D187228ED127853BF4B36BD962C9433F50FCB5DFDA987279CE49A9BCCC898AD8FB53D35EF4D1DCD9468470029AD5558AB918EC489D7F36B95A5B40464B2FA689FA43F
sk = 9D405D3EBDAF35FA8722DE431B669722ACAAEA2FD10B81436CEB14F7662BE0C42779459F69A145C0E2CE9F0BD9A0CD1BF32ED5694CC9AE02D971FAA0DB5D1F80630FBD527CBB0D18184CEABD1564FF16550BA0A865453F25F9BC978B5D3DF1FE99E3D6E0524A75A5A7CC443D24513062F7934D99357836CB5DEC7E2C01BAD0E27C5E9200532A2CA9FCAAB69B143F63867050843244C76E9AE9D60A72A1D467E9ADCC965C30B93FB4A600BCE3E990F3102C2C56082E380034785CC4D220E84A4CDC509D2E248D9135A22FB6E77E1773D2F67A4EFE9781BA162E6C533DB743BEB473EA53433177ABA71B93BDABA4A5CBA2259747853B61A7EA2840D9F22455F65C5641962BF14B581B7C96BD874E705EF526D246A9F57ADC94656FEAF48E177D0105AE6069E208A02741E04BB79A30BF3A36182020D4D6B3DBE4C62B43F0276AA3627297BCFD32EEA82BC9797A7B07421C629500005C71C6C6C5156DA35A223E11A3C2D1F0DC3469F377BC0A15022BA95D187228ED127853BF4B36BD962C9433F50FCB5DFDA987279CE49A9BCCC898AD8FB53D35EF4D1DCD9468470029AD5558AB918EC489D7F36B95A5B40464B2FA689FA43F
ct = 1F2563859F0E09BE5CD4D9C0E57763513465F8B4F510F52E2F2CB87C09E941F9D06BB56425E94E495C71E5514DA242FDA88DD68400C05B3D6BF1A00213F114ADB26B0E92BEB182D06A1498AB45D6DDDE7E799C6FC7337BF0A335136BFBF8D393C90F48AFD51A419B6CC551E466F0F0BB4882BF7B864B4E93E51381BDC4084D3DB01B1939AD5A8811B39507F27110C51A09CC44689D09618F994DB989AC40F985A3836B502C298B6ACEB74B08CC4DD283CC17B8BC63191AD17CEDCE270504DD19805FC1D573E1426436A80164085C12E764FCE69BBF4B9B00573F6F86E7D4FE5A0610AF303E77C443ABD9709AF2DF2ECE70CB507D542009CA09355A39F36A89B4C620B0001DD3755D0C37E654E634E8A0B049863E07CAC4BAEC38BBD1FD10745B507163855E0F6C16D11FEDFD2AE3B0F1106893470446948FB66906D912DAF94736C7FED348FC7DD0156CB6F61D6D9EE1767E1405A3FD4C110D585AD68517BD59E9618C98F2C93A0C0E4C25F11390F691C5FBFF7B4DD9E7B4A208DCA6779C6EDC4906F0C6083EEA35897AE01975229C991981
ss = 86B83ECBD384B9FC9E99049CB7C82EF5

count = 84
seed = D0611F9AE5BE4DA5D7EADC9109944348E716CB3DAEE545721EEA8C892E7831CF2E54603146454CBFD92387739E9A78D8
pk = CC4EA3899EC60116BD548F1ACD092663810D63F74BB4CD71FA7D9B5A900E6C255A63F27021B744DD3BFA97DCAC329BF60742F68C8B2B192CCBC43DC78C1D1C440FACE0691058A0FB3D9A3D0CFCC38D733F5DB6E7F3D602196F3B1E79B282283571DF9515340330B87C94B2AB17481A88EFB6D1DA5674F5A83D706AB68E02EE7A94E4EEF70738F15C15C90AF70E0A34EFF05310FED0CC31262033106B6AADF9DD6D8708DC0611AC4992F0943A48A9C03F75944FEC854BC7C16C49734D23189AD44A6DE0BA7818FDDD5D4EE30A969D4C1D01384FE6EF734B6604D326D4EAEAED96B5646C39D55CF22495B53B71179B9F80C778CB70728723B24DF65B12526FBD5A78E76567FDAF40BDAE1EA432CF239F9B9A5DA012732764D218963879CAB8D161A6268778E170F74C9643E5C00D3353505A7E41533ECBCF66FDB63DAC50AAAD83E20505587DAB22E1B37B2F3DB99139F0928222F9C607D2D80B062D5ECD8362FDC6826A757DCB7EECD1740FD7B438077EA2ED3B74993523262337
sk = 9A86490F0615F3EDF789CB0654066E9EE339CC59F968281FFAEB2EF44D2F608621E831187CE79B2D2F4A20F1568BBE76B0D3D5AF36111704CC4EA3899EC60116BD548F1ACD092663810D63F74BB4CD71FA7D9B5A900E6C255A63F27021B744DD3BFA97DCAC329BF60742F68C8B2B192CCBC43DC78C1D1C440FACE0691058A0FB3D9A3D0CFCC38D733F5DB6E7F3D602196F3B1E79B282283571DF9515340330B87C94B2AB17481A88EFB6D1DA5674F5A83D706AB68E02EE7A94E4EEF70738F15C15C90AF70E0A34EFF05310FED0CC31262033106B6AADF9DD6D8708DC0611AC4992F0943A48A9C03F75944FEC854BC7C16C49734D23189AD44A6DE0BA7818FDDD5D4EE30A969D4C1D01384FE6EF734B6604D326D4EAEAED96B5646C39D55CF22495B53B71179B9F80C778CB70728723B24DF65B12526FBD5A78E76567FDAF40BDAE1EA432CF239F9B9A5DA012732764D218963879CAB8D161A6268778E170F74C9643E5C00D3353505A7E41533ECBCF66FDB63DAC50AAAD83E20505587DAB22E1B37B2F3DB99139F0928222F9C607D2D80B062D5ECD8362FDC6826A757DCB7EECD1740FD7B438077EA2ED3B74993523262337
ct = 65E5BDB7839542B08EA7EC3E3FCDC7A6586777F800E97A61489F53689E43CCE8A2B90F7661B954C3DB65A8DC39A0B20AA17905CE50F12D26759EFA11D60A3CE05B66442DAD446F23CC96EBB24BA416A7CF4ED914EA9B35CF08BD3B40665C6132E26AE8810EC533BE7F9F2D1A8C6CAEDBA2A09C76B4E04ADF78CC7631841244A7FBB407A71B9790AF5A39C7B74552F637BB72058534A45DA28599BB99503A6B9282D30048A38E6DF4B53669632E043708DC3301B07146554F8DBB536C29361B6D128F2D08A9D357D829D6EBADC01B8A43976629C6CCF78FBAE82F9F2AFC614B1B49F5AAC6EAB5D372FBD0577375EC10A8FDBFBB5666A2273163991E3426E5DC438097089D13D7807631A2B12B797959C01D8BE9AE043F525836CB872BA84E5E1A6AC9CEF99A54E89B786BC42401A22D820294AFA550E9147166DC3B0D256CDCAF041C62F26E5FA02661BA88FF30CAEBF2DA81488BE85A15536ED71615BF2A3F2EDE8474BD3B26A7509A5038BCE2609FA37C3E462984A26DA3DB266E37A2BAE46DBB151DFE320085873FE70B7146CDB208DB5C
ss = 6D6C5ED8617BA9758120078AC91617D6

count = 85
seed = FBC38D7614D7718E931EDB850D2C6F0C5EEA9EE889B3E25BD69AC255D5B91E885D93E808E66BF9C88C655DC594DA5792
pk = 230A4D4E99ACEAE56E4A10FCCBCA69EB553F5E38D0B96F4618D19E2A569952F08685F1513B8FC59AB972444E387F236B42C9B6758B7CA02AAD3BB05D75092D849E295A20D0A3BB83F6F4A7313E5EA1FA5EBC4DB72E631E993CE3DB17105D5570B04EF9D76732769C77FD0F075C417472B0187A3AF07A45885048706D4D21945B8400981A91D9C9B6A2D727D0675879F34D0F759199BCAFF529B2F9E9345078D68DF3EAF78ACDFEADBA40B324AC2C4B46ADC6A662F0003236A5D1803412D65CD58BFFF0C37510BC913E68C333E7A4DC92C497EF9C981773D67D1594489EEF222BE2B37A63E8FB19A79387FA07D0C1732AE9CCE185C42621910E6F3617C17C8A9B7F787AF9CC130D47526F0D1194962F35C6C717DBD3AD6F29B1DA1778D055B8069BC943AC0084A93FEA544AF483D51A9450FA929261B782C622B412A7D73E98EEA0113E9B8924180EBBEC3449070692A806A27ACC73FD0C0782B1B6B810AE63820E8631F90B1A3580B81BA21D4E66BC5540189E04BBD8A6C40434
sk = 6DFD9B575872560C7BDC2732C4A28DAC4DB04E535EB8E402A2985C1C4D203778597947D710DEC806E36B0CD949FE460EF141213BFC525E0B230A4D4E99ACEAE56E4A10FCCBCA69EB553F5E38D0B96F4618D19E2A569952F08685F1513B8FC59AB972444E387F236B42C9B6758B7CA02AAD3BB05D75092D849E295A20D0A3BB83F6F4A7313E5EA1FA5EBC4DB72E631E993CE3DB17105D5570B04EF9D76732769C77FD0F075C417472B0187A3AF07A45885048706D4D21945B8400981A91D9C9B6A2D727D0675879F34D0F759199BCAFF529B2F9E9345078D68DF3EAF78ACDFEADBA40B324AC2C4B46ADC6A662F0003236A5D1803412D65CD58BFFF0C37510BC913E68C333E7A4DC92C497EF9C981773D67D1594489EEF222BE2B37A63E8FB19A79387FA07D0C1732AE9CCE185C42621910E6F3617C17C8A9B7F787AF9CC130D47526F0D1194962F35C6C717DBD3AD6F29B1DA1778D055B8069BC943AC0084A93FEA544AF483D51A9450FA929261B782C622B412A7D73E98EEA0113E9B8924180EBBEC3449070692A806A27ACC73FD0C0782B1B6B810AE63820E8631F90B1A3580B81BA21D4E66BC5540189E04BBD8A6C40434
ct = 818660F073D1E71F13F4456F2B0A4FC1FA772B4578528C8CFB2BB1DD424AEE2899F3BEC35D67E65405F72B10FE49899A707EF859F217ACD1CB4ECEBCA6632F7D4DA21C9C01158BE7565BFCAE02B71724C9D84130CAA2C555D614FB93D15A8C11FEE523DA310515ABB7B3562FF95CA330022F76DAF427C8248E130AF377211F62FFA7F5A4C1D71ED7F34D94A67D02CC3B4534F9FB48E372AF174422C348C465FF3D69965CEDCF881EDD9B34D8B14F047C271E548127FF990B77F9C4481C0E85EA4A89F5FED0F236D81AF6AEDAA53530A23D9F34C371FA518AC7DF99E009CC58342A1698782B2F4728134CD40E57F8C9122569DDEA920CC60D7AE5DF3FC6735E4B09A6E2E903E41BE67710AABAB7D72359C2F7E211374B73B20AD0537FE696AC4DC8BDA4B2FFFF28A0391C2B4C1755752A1D2D32225397D4B4655B1F917FBE4EF62CAA9A3289B95C5BF825FAC608E5A16C58D855D2565EA70F9EA5FA73E0A5C6A588BB9F57AD352802CEA7C20D4D04209987FE596A5F0932C9C619EBCC95E6E8A82189A8C93DFCCFBD28D20688833CB981EC66
ss = 6D8D23DB9FFA4384E25A93D2AB371B98

count = 86
seed = 1722219CB5DB47374EB0AF0232C856A57F026F1CB09E5A5799F4C333DD422FF6A0A67C4DA502FAAE727FB2D45DAFCF35
pk = 2850B78DE78F3D4875582C63771C2242556DFDDC20942CCBD794C386228FE949EFEAA976147CE145C8CBA3FBD57BC32B9506E267B97BFF84315E35797B400F8B675068CFFC3B2CF3330577C4A027FC808B01E01087B116D9F90EE0FA79D6EE2E79817F04AD3F5BEBD736B1570FF58B9CC78EF8A74ADB21999805AE4C7923A57E697C878C75B60FE1E44D7D6FDC4F4808543B5879CD19F6499499527B3B8DCC16FA7B516239EAFD3DAEEFCD576C5EE488622B32183492B54E1E2356900959B4F69DFD7290F118A001CE12F91E072761F9A3AFDE134ADABA3793C90402E1B1DD5001A42E7715270310B7FA03EEFEC775B10CC7B9103E6D96F82242F0039AD1DB386D945D03D19A60F1352A1329A8206A558434D678DC4EBAE951807F544BC5FB535BBB33F72EE922AA5909AE1B5AA09FB9B0DE6B2D6043F43850021AB683829C75EDD0C52A761295E40F8F663A88B71EABEA14FDE1A875D70493D2B2AEFF6F4C9A90389C5195B4DE21FDD97A3A3655C7A4AEC03219EBD8568B953F
sk = 6FCA9F4E384D8418075CC064C70730801BDB8249899D456ACE7683F8A03D3CF04E46970FF7D6A12494AE12558346DFC8FD9370BF944A01022850B78DE78F3D4875582C63771C2242556DFDDC20942CCBD794C386228FE949EFEAA976147CE145C8CBA3FBD57BC32B9506E267B97BFF84315E35797B400F8B675068CFFC3B2CF3330577C4A027FC808B01E01087B116D9F90EE0FA79D6EE2E79817F04AD3F5BEBD736B1570FF58B9CC78EF8A74ADB21999805AE4C7923A57E697C878C75B60FE1E44D7D6FDC4F4808543B5879CD19F6499499527B3B8DCC16FA7B516239EAFD3DAEEFCD576C5EE488622B32183492B54E1E2356900959B4F69DFD7290F118A001CE12F91E072761F9A3AFDE134ADABA3793C90402E1B1DD5001A42E7715270310B7FA03EEFEC775B10CC7B9103E6D96F82242F0039AD1DB386D945D03D19A60F1352A1329A8206A558434D678DC4EBAE951807F544BC5FB535BBB33F72EE922AA5909AE1B5AA09FB9B0DE6B2D6043F43850021AB683829C75EDD0C52A761295E40F8F663A88B71EABEA14FDE1A875D70493D2B2AEFF6F4C9A90389C5195B4DE21FDD97A3A3655C7A4AEC03219EBD8568B953F
ct = 8BAFB17C24ECC2884FD96437AD1BD7F22C13303AD91CD849635939FC1FDB0D68B9B7E8439C2F53D528CA525A335CA2AFFEC4DFFAD8E2ECFDA2E1617ED68C275E6C02476901543AA63F29B735BF4AEC1E2AC6BEF1838EF21FF22145573C9F9B41D517664D19AA4163C66D24E45F52CEE3D469C23450550CC21E9BCEC03413F0D48B714D518EA52E83E77B7C6B8917F4A84426B98F4A2D4705135971E62D17E47792719D9E4CAAAE5BE3AC89EE95E9AEB0C7518CA70F9E26F7FE19430E2ADB548FFB4195E5C5BFEDAE30845F6F2A4B3509A2E09D4738130BB35E69B26443E565B44FAE290AB8CE817CD5E821DBF1E91D4E39DA6628A05BF44DB2CC9F1097F783A1EDCA1432D8E9FA4D20C6F97984F6BEBF527C1C320EB54AD1138209AC9B4BA6A3762DC1D8D94AD8451660CF90BE9F6A38F6BA8CCB3EA7D1F67DA824B6AB242310E1860AB767EAE589E3928B200E1C7BE65F9F0E02394FBE4A89EA882A92C4D3B8DEE317A8FF05CC787F88EEB8A0CEB07A9BDF63B610AC1432041BC0ADE743D77F4EA5288D30AA3EBAECBC6962B9C19B6AE807
ss = E3FDE1D506D13594CC9856AD93406F79

count = 87
seed = AC139B78FD16CA0F26D6D7F9E15345C888D857B1910CF38D883339B37EAD2DCAC30F7CF10176F23FF34B4488EB79437C
pk = 33A2EB0FD92DB950D2CE7DDB6BCF4512490CFC9C6662593005FBF8DFD8AF63F2A40AD26DD3CC666C2537E0128AA6340047FF71D20DAE7C7C7240D8B036F410747EFB15BC6500F07C0E4210C0FD2E77250BEB8E522AE7894736544579F9568E042E8D6CFAB27A75D56FE7982BC963B68A199BE8D60E96B4A5B7CAC0B81B33EFDC883580719CC62D481192ED4893DE4D57C73D8C0D2A488F8F4D749E224AEB42E0BD1418A8B5E3138E746DC1B3F3B6DB72F005BDE88D601F8B69EFB6680149132FA2916F04C15555D66F0EEDB39B05A284C94BA053749B62500E062ADE9D4EEA3D28C4BB53DFA61CB9789F867327F9EB5349A5853EAE9C42BA741B2F2B5F2C2A4D812DA687B8897A9CE3CF994F8B17C6CD0F0EF1841E5BCD82CE4D29C89386DA7309D0A2B2EAB7A67F686018C57977FA2B82ADF136E03E8CCBD5F41B40A1960F42A35EA57787334211A511FB6F1FD98E0D565E08D3FCEC0193F4F6E163C6679A9BDADB08ED9F120B6CA73AD0F8A9F45C032B9B965E3BCADAC7AA27
sk = E58F71BF175C0550A67E00E0F7B3B7FC36BC2707BF0C93047F7054814869CF7625E45647BC1547AFF288DBB90699B2AD84893F3B755D970233A2EB0FD92DB950D2CE7DDB6BCF4512490CFC9C6662593005FBF8DFD8AF63F2A40AD26DD3CC666C2537E0128AA6340047FF71D20DAE7C7C7240D8B036F410747EFB15BC6500F07C0E4210C0FD2E77250BEB8E522AE7894736544579F9568E042E8D6CFAB27A75D56FE7982BC963B68A199BE8D60E96B4A5B7CAC0B81B33EFDC883580719CC62D481192ED4893DE4D57C73D8C0D2A488F8F4D749E224AEB42E0BD1418A8B5E3138E746DC1B3F3B6DB72F005BDE88D601F8B69EFB6680149132FA2916F04C15555D66F0EEDB39B05A284C94BA053749B62500E062ADE9D4EEA3D28C4BB53DFA61CB9789F867327F9EB5349A5853EAE9C42BA741B2F2B5F2C2A4D812DA687B8897A9CE3CF994F8B17C6CD0F0EF1841E5BCD82CE4D29C89386DA7309D0A2B2EAB7A67F686018C57977FA2B82ADF136E03E8CCBD5F41B40A1960F42A35EA57787334211A511FB6F1FD98E0D565E08D3FCEC0193F4F6E163C6679A9BDADB08ED9F120B6CA73AD0F8A9F45C032B9B965E3BCADAC7AA27
ct = E1839CC42C1710F317FBA47743B9B6355700AF2281CBADACFDF7DAF4761AA491D7712A5B05F744F6376C4CF318FD92A5BA38E37D7F75AEDE9070C1DDF225297C97787DA6BB480D9C8BCABD60C3D33F1DFB9BFAC07DC99339B72CA01A5DDA6F9B71FF2EC9836DDD3592B82DA753F8E4A9BDCD4BBDB5CC83D642F15163B0075FA2B1BA78288DEE01BF29DDC6061941F6F97AF986A3C8F098D31B8CB4C58AA9985F3A5F131BFD5E2D9A5DBB7264459034C8C153A873784C08BA048BAF333831E75E7FC452ED81F365A0436E9CC65903943287F03182B8A3EABC2DC16F41DBC89D36BF6D2DBA557CA198A24C0EA8A11F0830BE1EFB4DC4037D953A6EA53081E7FAD51790D55E02A3DE2C7D6BFA5FC44AFD08A8D782F1B3C8CEF2D7BFB368A0905E938DB817367971B1A0BD30B000E221100AD23B4F6038148CA913CB00B41770159DE6183DCADC7EA401FF0455AE8EFC8B7E6DF60ACB72C7C5536F160CBB3F0C8EB7C9A4A794A196E1CA5CBC07ECEB478B5A56B035FE800F9C14B33876605FB2D28213E55DCACBC2F0279684A4E3EE9F46BB7216
ss = FE4AFDD6BA0C06756200A3004D6C7C88

count = 88
seed = CC7152849C98D5FED2813275D32069E44824ECB14EAEF425CE017448CD9A401C91C06D0F7EED6D22B7BBE8BA6C429EC3
pk = CEFC16733057373639D513F448235B5516C8B282C0810BE347246662DD533C79411AFCD9BE987F2C8A1598E8B3F128118E9F5489F7BFA40E3C47CD7038330B6D56A41D1FDB2C619CF7EDF971A8C5FACC209BB9E289EDCBCCBC5270014CB65ADCB438935B7DE3C1B59B2E8341258D5C329CE4B2F89A16F8189602F5484F1984A8D5FE55A6A4B0E93F0393E3F28ECEB5A9F84049B5BB0F9D39768F5273A71BF794FF8093ECBF86D8A23C977B435847BFB735401049267EBC38DCD495122FC8FE22EE42F917C9AECB628442522A369C010A30819A9CDBF635F4D79D389072190FCF98D2B3DCFBB35D1308DFFC9266EF316E46F862DA1BD71DFDCAC19116B338CFF76F541F077B93E3D927C45C01924F6E9E08678660056B06430226027E91012373A6439F97439C03FB17C9BDFA7CE91DA70ECA3A4853B7309C8AC11F2CF013A558E91EB62AF3D73F752DA7E7AE60BC5D010FFD43439366AF11787ABFAEC2FDD2BD3877DF61DCE564226CAC91D684579015B5C9FF1CD518B9872020
sk = E3FC575ED51513E62ABA655D24CD9C8F1C6C848AAFFA946CD82C2F1BF2E6AEBDE5660FA73356982E12999D8FDAFBB3CB186341D0386DEA00CEFC16733057373639D513F448235B5516C8B282C0810BE347246662DD533C79411AFCD9BE987F2C8A1598E8B3F128118E9F5489F7BFA40E3C47CD7038330B6D56A41D1FDB2C619CF7EDF971A8C5FACC209BB9E289EDCBCCBC5270014CB65ADCB438935B7DE3C1B59B2E8341258D5C329CE4B2F89A16F8189602F5484F1984A8D5FE55A6A4B0E93F0393E3F28ECEB5A9F84049B5BB0F9D39768F5273A71BF794FF8093ECBF86D8A23C977B435847BFB735401049267EBC38DCD495122FC8FE22EE42F917C9AECB628442522A369C010A30819A9CDBF635F4D79D389072190FCF98D2B3DCFBB35D1308DFFC9266EF316E46F862DA1BD71DFDCAC19116B338CFF76F541F077B93E3D927C45C01924F6E9E08678660056B06430226027E91012373A6439F97439C03FB17C9BDFA7CE91DA70ECA3A4853B7309C8AC11F2CF013A558E91EB62AF3D73F752DA7E7AE60BC5D010FFD43439366AF11787ABFAEC2FDD2BD3877DF61DCE564226CAC91D684579015B5C9FF1CD518B9872020
ct = 3FCE4F1D3FB741CAE7E131520375BA6C3EA07041D3ABF6110C7D621B1A89898C098BAC50DC32C01335738A5DAD8F2F02C1364F15249B0EE4A1606E11825E3AA55A10C8C573810ADCA2B2287E751DE63A2EA558A342F5CC211E7494B10D5EE3A6E79088158D7062C287B2005F596A2EC3776DD4A888E76B4380DA2BBA47395AA05646B10C474B4A1601CC35C35DF0B29F14A22DA8C1AC9C6069012392438BC72E2AA684646D2A280AFBFB66E608ECE881AAF1ABD2519FAA5B9C0AE5620F67CA5DC33CF3A1CB70555A99DB46ECDD00AE5DB6BAC324AA1685D233A97F6287790049C748519824524AEE697F98B034878EF8BB4DC0A26FCBBBA9483EBC3F14F5AFE062ADCA42765F04495CC5175DE992828C624718C310EFBE87161D4C3F4622B4DBDDBC98B6EA2FFE16D4A1C13AC71C17D6D866AE9EC0B929C48B3D02D67BEC8ED7DA7E1F03FD1D05211CD6E76FCB2776CC40C43D9A361FC4CECA9F8FE1E81E1023B79807151C3BD05704170F24F6FB484DD2054254167EC303882705783125F7752B3F0FAE7A8DF1EF8E920B7C0D46D54A911E
ss = 2CBF3FF7698FE2FBE62024C72D132036

count = 89
seed = 96D9A06F88FF2C2036FA8E914B89C765E4A510B468DEE40F914F78858C811857EFE9FD0E17C0048E7389E8D996B7E2B0
pk = B064D7C66CCB1063770459C943C3C1764E39C15507845FD77D8A18816E879152974AA973453F5C351E58EB9BAE560F757ACBB69ACE83D5A5B3A9E6A553ED08D909E44B05AE5495CC7F790E2025AC71FBCED9289F8F5E855F3A7DFB4ED50C612D36BE3BA61A1778F66F2EEF977012C43193997959C84F85A33FD1AB23D039995DF342A4B398683467EF6596E24B90F72A41DB1F518E6ED23E45309C8A58DF6A67EF42EB2A235C93A2CF00D072B422AF16639038E22CE0C6A66E686D4107BC08029E778701C73113D99DE0A2850412A42A8A3EE41F8D3C4EC6CBB7A95F785193C7078EABF2CA4EA66C73DE2F94DAE9A53840A7FA86CCED3F10A4A0791471061F12F5F0ED06A7373B3348BAC90A84D1223ACBDDABB82759C41AFC50F85A25F4DBD86C013DF110722CCA65A42B55B67905C8B750E9EFE193F0CBCDC024B2B0AD5EE7A779A46003928FFB9CF262A00201FE03C02ECF5523F4BB4802D03269E5DAD2823C41C524B8E4D698684AE29C99728FA4850E0209E9BD703C9425
sk = 470B4943F0FE7FD0D8EC5185ABA0D1DB09D112934E4FB4788B2809FD40008BE70A6B184981101724BC3D5EC5E1956B510B82FD5AD0668A0AB064D7C66CCB1063770459C943C3C1764E39C15507845FD77D8A18816E879152974AA973453F5C351E58EB9BAE560F757ACBB69ACE83D5A5B3A9E6A553ED08D909E44B05AE5495CC7F790E2025AC71FBCED9289F8F5E855F3A7DFB4ED50C612D36BE3BA61A1778F66F2EEF977012C43193997959C84F85A33FD1AB23D039995DF342A4B398683467EF6596E24B90F72A41DB1F518E6ED23E45309C8A58DF6A67EF42EB2A235C93A2CF00D072B422AF16639038E22CE0C6A66E686D4107BC08029E778701C73113D99DE0A2850412A42A8A3EE41F8D3C4EC6CBB7A95F785193C7078EABF2CA4EA66C73DE2F94DAE9A53840A7FA86CCED3F10A4A0791471061F12F5F0ED06A7373B3348BAC90A84D1223ACBDDABB82759C41AFC50F85A25F4DBD86C013DF110722CCA65A42B55B67905C8B750E9EFE193F0CBCDC024B2B0AD5EE7A779A46003928FFB9CF262A00201FE03C02ECF5523F4BB4802D03269E5DAD2823C41C524B8E4D698684AE29C99728FA4850E0209E9BD703C9425
ct = F1D911DF1B6E0533094946E1C19E6160167933020CC8C83298A1219D1F608B204EB59B7C71A1B255603513B05E3CE4D5A9E49A545B5B28D66CBCD3665AFF333D284F1565C8461E786CF841097EF536CE7D767E32401AAB3A4AFF28C932FE9AADB858270C65211C11B3557C0FC1B587FE7735383320AAAB0014D84CDFB9030DDC8B744BBFEA8D420EAF5E5C4FA61DA399027E5AF1A2E782B9A0E0C60907879C22F8722F5D30AE8F935AE08FDEE80C1581BE846B73BECFE0161C54FBB03E19C44B1B9D459B7682ED85BE33B5E001E99224E94B4302120FA81DDB87C47586C7C8CFBB68170BD2E8272E921EDEB5A3B70AE53F0682C3A56CDC887BF6A70A7449FE4F3052EBAC80CDAB82B66B102D33449025C9E99E4DF3EE773F0A62BA6EB3F197338277FFCCB5ECD2BE51DE338AB6222D4CE2D9E6992F2056EA072C064F268B12ADDE576DFA38A754F3D28B595F15CFA844574A65A33DC7525A5471A1B239E862F0CE07D513AA3D05285CF8971878394A87CFE235A7848626362A1CA3B2D1175F9FD1B2224BA92754904745FE832B240C4AD9F8
ss = D4ED66490233B2FBBE6597A368AA1C00

count = 90
seed = D26CE360D399BF7B89DC364AA7AC06BB513EAB8F527383E93E30727EDC3F22C262AA0EC70257B39EDFF0630DCDC1B79A
pk = 1C3F032E2C6CC0BE4676928C3B33E47730CAD51C89884D3A7F4D2B9C8B454587971AB783E8FDA00644620CE8AC6A697C9D0E760E1EE366BA1D2732FA3B96372CC9CD8BA087231C1A046DD600F85EA5106EAD0B88D7C4A012556F54E593A34398B8AEB6F52C9E5966C0438B0025E36780F9E0CFAE9076616767F054C41A0BB25A83E3AD7DF4F44B36E660D4F41D3BCECB91965F091466BDA74824190E3CE9B2914D71D4D6C6A5F556678864D35FC096057AE124AE49AB45B96119A3F71CCD89310DE40E4A28A0363BAE92C17220BD3F92F4C258D3C412FC5FEA0EAE6621C516992532DD4BA241A5C821F8592C98E180021BA6B0638FC64406DACE8604A43CC384884C309CE885C1410368AB735FCEB08AEA6452C2A06E025F986418DE45857BA6A4EB6D48C561E8D3C74AEB027DD18311477391BC25ABF322210736CD892E42BA416ECF54D5107296743FCB387150343A9E9FA2EB9DD8988D00BAC2AB3F509DED286D882E1E098AC93B2ADBCDAB0CF60F0F6A5E214050822C5C22
sk = 6DF4385DB978D27B27D2AA5E452E4152B36F097503D9581AC95FA08ED106CE84660E8A4C90BD2B22634E40769AA0090A101C5DDDAD45ED051C3F032E2C6CC0BE4676928C3B33E47730CAD51C89884D3A7F4D2B9C8B454587971AB783E8FDA00644620CE8AC6A697C9D0E760E1EE366BA1D2732FA3B96372CC9CD8BA087231C1A046DD600F85EA5106EAD0B88D7C4A012556F54E593A34398B8AEB6F52C9E5966C0438B0025E36780F9E0CFAE9076616767F054C41A0BB25A83E3AD7DF4F44B36E660D4F41D3BCECB91965F091466BDA74824190E3CE9B2914D71D4D6C6A5F556678864D35FC096057AE124AE49AB45B96119A3F71CCD89310DE40E4A28A0363BAE92C17220BD3F92F4C258D3C412FC5FEA0EAE6621C516992532DD4BA241A5C821F8592C98E180021BA6B0638FC64406DACE8604A43CC384884C309CE885C1410368AB735FCEB08AEA6452C2A06E025F986418DE45857BA6A4EB6D48C561E8D3C74AEB027DD18311477391BC25ABF322210736CD892E42BA416ECF54D5107296743FCB387150343A9E9FA2EB9DD8988D00BAC2AB3F509DED286D882E1E098AC93B2ADBCDAB0CF60F0F6A5E214050822C5C22
ct = 902BA4320C75DF263CB6CACF83E47084F65598A7F903B7D891F80B9084FAE8D2BD8680BF82EECA492E6B1C7DF5E32DBE1CF02A7C501A46F2FFA223E291171EFDB0B4DE8C13A98C1E8DDD721565D015152040E823626C15DDF5A968803E77E25BB1637A18BA216D63D65DA957E912768D79AC7F46C4C8044951FBF4A51F09DFFBCE78C34B898CBDD8B5ACED13F5B4581A74A82C9942F7FB389F76E070F85B591CFDCC59380884FCA79D5A84C4DCA61E6813D410C9B6726D0D550905A91FFC589AFC4A5BAF9F7E2928A69DB6BF074C7C9B114B8AF61B8DD8FB7C16A7EFE09D1053152A797A4DB68CA695D1FDEB9C7D0879EB500CAA65D547288112B21C9FA9FFDA52A91B9DA8C8C41BFFD4D75AF11C07CA6B00AE02B45418F26447568DA90482474D82E04A1FB1F0DA9E8DC7C652C72AD078C1FCC5382ED622C39510A7A2C3F5960692B323012CF7818E894DC6B786D92BDBAE48A95F8C2A20BF4DAB5A2912F994F66679BAA49E7EF45CCCF434568927A12025FFB1FAED979EAF208BB70FD13658C6B55D2895FE9798AA3B37EC201418B8B252
ss = 806E56F46611E29B349D7CB34E704C69

count = 91
seed = C5856298C3CB6AC9787A0F30938537AB2635B96F6D19CC9522063360E7A5C88E644929D2879180E3E5BCAD2422B7CFC3
pk = 0A9647127903BE820A711895C7734CE6174DD75821064D59E285465EEC15B440BC100EB962362EFD3BBFCBF31D0449D6EB52A0FE56E67FDB2465821803C50C41E16455951265D43E4ED164ADC78FB51250567D260D63E4EA4A13A54CD4941A0B0EAC4270F9C8EC1739F1A4542CA0486B73AC472B19EDFF38DFFA9B5BAE15BD8AC9AE38FAF5421F586D9E0E802B5200D3C8A43ABF784BC40E34A31F3E36A0F6E5E55E8F2EA3254CBA8693260D6A70095F9DF1CC357223E3E4982E43562952283863B7DA170DCD074B3A61E997502F760297DD5D9B4A9BD5F3956F4BCA1817D61A5A29A8982F74BD794E9496E147AC80A0E986E4055FE628C9350293298E7204A6FE303B622D6FCBB97DABD2BC64BD922A44B355560758D1EA77186AA66ECEDBF3E8C6EC537AAC701336868490F088ED06AA549EDA4E71FE7916643FA54C45AEC1461C76EE1F968E9F1D74D7E095B7B2C06B3F9A8698DA0A4E4D7E24CB49BDD6D64F3BC0C83230700001D14FDC071043A2EE89C758A81B92086707
sk = DBACBA825728444921B227CDBA54446B3F6881B47BE9CD02E15274A8E2BC08FE818B117BA28C5DFAE74D54FCDF6F20052F79BE333EDC8D0E0A9647127903BE820A711895C7734CE6174DD75821064D59E285465EEC15B440BC100EB962362EFD3BBFCBF31D0449D6EB52A0FE56E67FDB2465821803C50C41E16455951265D43E4ED164ADC78FB51250567D260D63E4EA4A13A54CD4941A0B0EAC4270F9C8EC1739F1A4542CA0486B73AC472B19EDFF38DFFA9B5BAE15BD8AC9AE38FAF5421F586D9E0E802B5200D3C8A43ABF784BC40E34A31F3E36A0F6E5E55E8F2EA3254CBA8693260D6A70095F9DF1CC357223E3E4982E43562952283863B7DA170DCD074B3A61E997502F760297DD5D9B4A9BD5F3956F4BCA1817D61A5A29A8982F74BD794E9496E147AC80A0E986E4055FE628C9350293298E7204A6FE303B622D6FCBB97DABD2BC64BD922A44B355560758D1EA77186AA66ECEDBF3E8C6EC537AAC701336868490F088ED06AA549EDA4E71FE7916643FA54C45AEC1461C76EE1F968E9F1D74D7E095B7B2C06B3F9A8698DA0A4E4D7E24CB49BDD6D64F3BC0C83230700001D14FDC071043A2EE89C758A81B92086707
ct = 10DF5522874D9666F978D85F3CD5A404E15D9D282A887F45E6ACC1AF3B4BC8C837D0937C20846F5C6BD1137B3D3E6139A7ACB92E0627E09C48A08CCF916F1837674E10391CE6B866C845AA9EE6F5C9137415DCF4017B7B37A61CAC12A648F5B7B7FD64423B989C6ACE8D14E4B95E27F0A9157AE2D3D2604BC18298A4C515694D4407BE3C762D499978CD00CE253DFB713B7DDA9BD25B8D892AB3AE47AF9B8B7D598A04BCE222CCA767AB8AB45F72C73253F669666D621F4C3BD805AB34314F81FEF89EDD5D1B26C74C38A8AAAEEA5937B5D3948E9A01B7C1668E7F8338EC44E3C70FE5DB06D802600512419D9F1E2035314422B0ED4B91467B9BFA060CF7DA41105B8F191B745F7D809087C91D7E6A8BC9C99483D1593EA84B7ABBEB7F5AD20E018A5A74C2319F65292B63885A918D14B4503EB79445BC2977C50C0ABB0A64E5EA713E74CCF3EDA00FF31C166334BDAF9AEF608A087BC3F34229D25CFBDA3945EF94A89DD8538A197AE2E0A7D8CC40E7EB0ECC13EE45E2BA72389BC6EED10A9FFB92EFC940D756EA70CF3B8E447F54C8BDB1
ss = D448BDE9B6537AABB3C2C3BA0A5C6AE3

count = 92
seed = A28EAD0A08E7228AEFF602B16A1E752278B8ED1E91DAC67994F5ADC372E1D82F95CC390CD97AB9212275E0566C833FD8
pk = 430954DE5B960282592E869745318D82C79C22F68D579A070EA97B8FEC1C5D9A2DE15A6504E6CE344132B36063668101D77ACF38C84734C7EE32F546E4750CAD0B8808EDFD5E4186C6426D8839CE47917ACFA4AC3BCB11BDD1C221167BD968A48D790FAD9F3BA49479D0391CF8A9A24A194BC17497548DAB60198EC34824500D8DA6092A4831F2D88A3C1AC71FB91460A369A9125DDB53A3E1A12256BCB27FDB01B04011A85B411FC2003EC36A9EA0E43E71ACDE05125E58D58B78012622AC37C96537AC947A608A3186E05CF7BC809BB693D133103BE7F2C0AE64854DA0A694BF15163243D9F2F1CA457D920CDD4D638A5998EE0954D62BFF67610A58084B8BE7D3D7ABF586CB65F4A16FB07E2F8A2871A9CDAA9B5ABB297A31586B6DAEA50BE067546FA90C3A191118E88A24D061120E3C16AC7F6F283A9BDD0270C608BBFE1F960822B6139360D2B880236345364869D7573A4D8A870F526EA4FC4A337F0691105E3FDE2ED55BA6EF4B774B4E4CDE7567CC26E0A783852538
sk = 690EB71FD7052B906EAEC09937A8ED374E0B02AFA27C2F1481C38C2CB5CFAFAC81B96A810AB749B61806B6D54C9F8CF4BF1BE0192423280F430954DE5B960282592E869745318D82C79C22F68D579A070EA97B8FEC1C5D9A2DE15A6504E6CE344132B36063668101D77ACF38C84734C7EE32F546E4750CAD0B8808EDFD5E4186C6426D8839CE47917ACFA4AC3BCB11BDD1C221167BD968A48D790FAD9F3BA49479D0391CF8A9A24A194BC17497548DAB60198EC34824500D8DA6092A4831F2D88A3C1AC71FB91460A369A9125DDB53A3E1A12256BCB27FDB01B04011A85B411FC2003EC36A9EA0E43E71ACDE05125E58D58B78012622AC37C96537AC947A608A3186E05CF7BC809BB693D133103BE7F2C0AE64854DA0A694BF15163243D9F2F1CA457D920CDD4D638A5998EE0954D62BFF67610A58084B8BE7D3D7ABF586CB65F4A16FB07E2F8A2871A9CDAA9B5ABB297A31586B6DAEA50BE067546FA90C3A191118E88A24D061120E3C16AC7F6F283A9BDD0270C608BBFE1F960822B6139360D2B880236345364869D7573A4D8A870F526EA4FC4A337F0691105E3FDE2ED55BA6EF4B774B4E4CDE7567CC26E0A783852538
ct = 565B2B7E871425D6C7466C603B988A4D09D3CFE2141D8636FE9AE8FDF4A788CA96DDFD45708ADA67782BAF8A246C0B34BAA46A3D435D440B2325AFEFFFB922195C0F9BB74396A48192D203BF218F7A40A9D43488BC1ADAB0AF7A65BB81B53FBAB94984AE806CCC969D94A587635DCF6EC909F120A9B35D1258319043D32AA1AE350B3CD969601764CAFEE84E310210F3E49F56B86AB0610AD53ED68316278CD20DEE85F1BB68F522C43787FF56CFB735C24005699F62E86D58C890AA0CF762F189C70F006889BD2176DB918BDA1863F3A9A22D0B095467B56279EBDC24C5B39471A9CBD7D57508ED90614B775292362CF634954D497A1849F4C2AE289D59AEFC0F30C0EC56D4E3ACBFC2CBD12FB8FCA902A5BB67A331B368E1710D6B0AA4C3A0F5AB4E167BB43FE4A02C179FA6E85F4C97C434285BE36CFDA9AE29864611EC717C21DFB6068F6AB87AA70433A2F2D0A9AAA11B69327F4CCAD6B722079D1179D4F01A8F914508FA6ED2E9FCD4600D12046C8DC59388C0AAC18012043154B4EFBE7D36C6592FB0A434C5087E143FACF3018B7B
ss = AF3B268BDFBA03AEA8B35CF5DEAFAD99

count = 93
seed = 92877D706DAF88EF3412EB143DB8CD91BC047A9A43B7ACDAA42523560DEE4C172697BE4332042FCAB91135839BF74AB2
pk = 23C9B5C3CEF34344ADDD53B40A7AC18F7A620E9427D4E372AE517A2DC3DFA7DED1F5F8C28F36B3218264C92B0E87DB0F8AD2BF369F0F951B3B141EA627E42C5479C10A4315CF9AEA9BFB16CD81B7DBA3E39346158C2D997C98D46E3AFE7B5879C29888A87A972AEC9214009FF433FD716DC9E3B3E70EBF98A3055ED5952831B3E503F62D2B41CC6DBF2690514DB13FC137EC41B9BE3EEA69E8B65EC00A783720363F9F6E43263B3ED2B078B0B5A39BE0A35B330B3D09FEA903A8C8900A484FEDAC0AD5CDD11D22D6726750A05A90B51E64BB1E66627E9D86132505F831008DE6B8DFBE6056AF462742AFB2BF9B5CFE8F71E8EEE2563BF5E701495A2C5B1EE23404914A47DA4D0086E7B4CCA497B06F29F500C43E0D62A57625817918835848CCD3C9A7794E52EF60B8EEB39219A1D9FCFF3C133831AE7811C2EB20C4FB7E8F3E35FB5715D591D61C50F6492A4A90CF9B9298807541466210492D29D4021C131A20029E02709AA94A85CB3F185B5E858BD21B17A4837C877B4A40
sk = 32E0EA9089FA928482C0770DA545AF1BB871A03CE3860413C06C5BEF7B6508409DAF847A64C8D30D0974FD3BA7476DC76C46B458A036D80423C9B5C3CEF34344ADDD53B40A7AC18F7A620E9427D4E372AE517A2DC3DFA7DED1F5F8C28F36B3218264C92B0E87DB0F8AD2BF369F0F951B3B141EA627E42C5479C10A4315CF9AEA9BFB16CD81B7DBA3E39346158C2D997C98D46E3AFE7B5879C29888A87A972AEC9214009FF433FD716DC9E3B3E70EBF98A3055ED5952831B3E503F62D2B41CC6DBF2690514DB13FC137EC41B9BE3EEA69E8B65EC00A783720363F9F6E43263B3ED2B078B0B5A39BE0A35B330B3D09FEA903A8C8900A484FEDAC0AD5CDD11D22D6726750A05A90B51E64BB1E66627E9D86132505F831008DE6B8DFBE6056AF462742AFB2BF9B5CFE8F71E8EEE2563BF5E701495A2C5B1EE23404914A47DA4D0086E7B4CCA497B06F29F500C43E0D62A57625817918835848CCD3C9A7794E52EF60B8EEB39219A1D9FCFF3C133831AE7811C2EB20C4FB7E8F3E35FB5715D591D61C50F6492A4A90CF9B9298807541466210492D29D4021C131A20029E02709AA94A85CB3F185B5E858BD21B17A4837C877B4A40
ct = BEE4161A2C48A54BC154BC5B284D7F87532C362F7ABABD6F968C58FB5F058B219ADC756E60F5FDDAC45B5A826826B72D9CF3C9C9C7455E819EE3E00D38B6175CDBCE0F623CE5B6947803F0DD1780A291CFDB0793A1BA9E2938445477A5FCB641E4B25DF61BBDC16B8DC41AA971ACFEDAA8C3A64B969279AD24C4576A8F2583C4FC6B71514E008E13886CCBE102BAC64F1DF84E1F5A298A481CAF632E39791E7582A69BEC356AE4BCE2D29B044FE6E4B2C48D914EC0A97E6E5096A7691584BAD003E2C84494B486626544C05E696A027AE0CA59BF1FE555A5ACD6CCEC0771275A19BE7203408DEC18F82C718EC20C6DF9BB7A721B4B26A370419D78201D8779E08A7E636AA685300F0C4559178201DF55E72D2BBBF58099CADB8A6879C2D3A1BDCDFCDB74DB8EF9DFAD07114F213E9577002D3316AE379154C5F40C45D112D2F2123D54FF0535C6E03931B163318E0557B84FA6642E9510C7327637E141AF4B36A41850E5A1CA00BBD77E7A473DE1306882FE84A0E81BEB2D7E3167B859262DABB7D17763FCA642A46CEAE868B097F4683F5A
ss = 9D82E096201465C407349177A7EDFB94

count = 94
seed = BB4C0082CA4044B1FF60B036C9B0E0495D58667156786C530BC69D949A13BFAFF53798E456423D7A0E162A60039367D7
pk = D913232981DE98DA969E91F7E4CA2BDEB2116E8D970A1AFDCC33B102B77D84A4DBAD8D97E8E2306C324C4C9CCBB2CC1AE8E186D5915C909829422847C2D903BC27578F9756CBA4BDDF40E808F68D4435A227A39CAD0502E00DFA4B349171284017C70733DDED3E6098A26559B068CC6BFC5B23380DBA76CFF845894ED3355C0A44B16733D8EF57D96080DB419E24D9B97FEEA6F20587471964CD0C993F2A2B795AFEEDE32E98D21F88193A530B3EED16E989774825E05CE8B75F1B5E01E364D1C9E1CECA15A33488A53D479C31EEC4CB9C9FBFE42ACD57601AE53255F0C6A89D662C83707C6CF65651757D63C26C7D0FB410CEABCC1E826387AAE229603DFA0B1A5142A4C99B607E1BB58BBD913207B1A949B0A381D869C67E159EBC39F409885E8092AC1D935FB968C8C701BC016DDD044592E7A79029B5108C032A21A2FD634C7DB5CE0374BA18B528B6F2ACCE9843F0F8A6D6266B0F07503C419AE35359AC9C2B7A0D5E3672B04A6F74873030DF6FA4C9961DA58F0370122C
sk = 6FB2EC719F2A0DEA152BF3F64B9D148F8AB8BA88F64E61F54F797C007E4061F95C7D56CFC7EE5C49E849DDE3FEA8F25E7876DF2A18515C04D913232981DE98DA969E91F7E4CA2BDEB2116E8D970A1AFDCC33B102B77D84A4DBAD8D97E8E2306C324C4C9CCBB2CC1AE8E186D5915C909829422847C2D903BC27578F9756CBA4BDDF40E808F68D4435A227A39CAD0502E00DFA4B349171284017C70733DDED3E6098A26559B068CC6BFC5B23380DBA76CFF845894ED3355C0A44B16733D8EF57D96080DB419E24D9B97FEEA6F20587471964CD0C993F2A2B795AFEEDE32E98D21F88193A530B3EED16E989774825E05CE8B75F1B5E01E364D1C9E1CECA15A33488A53D479C31EEC4CB9C9FBFE42ACD57601AE53255F0C6A89D662C83707C6CF65651757D63C26C7D0FB410CEABCC1E826387AAE229603DFA0B1A5142A4C99B607E1BB58BBD913207B1A949B0A381D869C67E159EBC39F409885E8092AC1D935FB968C8C701BC016DDD044592E7A79029B5108C032A21A2FD634C7DB5CE0374BA18B528B6F2ACCE9843F0F8A6D6266B0F07503C419AE35359AC9C2B7A0D5E3672B04A6F74873030DF6FA4C9961DA58F0370122C
ct = F2D57C4147393BF0C0373BBB8283B729D1051C2A71649D023874295758607558A548A6C6378E557D0A9061D2FC20CA0144273D4ED0307DA344D7BFEA1E1102095CA2EE728F1A1039D97A0A02E10DBA755547D5AA96C7F61245D62B3AA755E64572DBA8C779DD12E1710DC276317A8405B43E643593237E9E77C934B76B374BADA574D735CC0EB1C51B06B7DAFA69C814076B9F8B8FD9F930AC7035B1AD5B00B00BF6CDB1C7253660A8962080AB504C54E65CC7C8D7EA7B540F4B408E03F672F25E73BC8ED4021D053995EA1F2281B5AE8C54FE0992B15377E5D6AEDC26878F312C30B94C67208594E3E2A5A6C52C2379B0C0E0AF0B5CDD179E802A03A0573326C9EE570D1D614F2B2841B586ECE4A48E60E0E36436161A75DBB8712F5D9DF66E33CC474FE8A961703FA7E32CBBE07EB19EC2AEF72C4CF957C67516F84B166E7FAD60B6E37849B873ABFE9E785E3BE4AD5C7A0F45B4CE30057CB7F7C72BF70E8B6849505C91BB57087215B9553B8E51D3A31B80E228559CA18315703C7E8DDAF0818EC89378A01264B5EEC2AC430581394DA8
ss = 61B9BB7BC624F9CA9CE12830CE844AA7

count = 95
seed = 121D90E70AF6204445D0DEB28AC0C108262719E9FD3476ACA74BBFDE89FAF04D8D5F89A624E8A75DB80431F0D10AD28F
pk = 3922C55C30B5A26A7AFD74DA9FFC9D75E626697F3E0FC5A04EAB4F87A05C5237C5BAE2F90C2B05712A915DC201C011B22D00F232D913E430D7BFC1EB0FEE360ED5C54E961F36C4152305B30B89483E7F7E0C9E5D6752AF092F8A50AF7B5273044D11D151914A871E8C6749976FB12DFD9CB3D01E063B8A6D25B364780B21EE533010A92B12FD6AF30928722B5C2FC82F7903D38A72B80FC93AC6AE623593EAA3064111E1D940665CE2598EF2F1F63890E447083CB816649C50CA87B929CE5926721A4A1F2A939293A6F3AE4FC39796548ED080EE97B2A6F1A826B8EF71171C599B0D19281C86665D26B90A07EDE1DB472AF78318B2CD9DB08FD8CF00ECC0819F90E07783A797CC5F6DEED95E340FA726E050EBF9C736DE4DE91CC4FA072A919B675898EEDB66C6479507D191C84058CF0E98C9A79FA66F5FA74D30B290A8F271A512C9EEBAE39072960DAE6A1FA1EC1DCC938283E426CB2EEE3E6A87A3EB1C2F5F5C379E84192DDAD1A868B5C89A3342FE4E46828821BC9EB31F
sk = 527FB88C8BD9A4D6031DAD15E63878ABD2B559E7E08D61F6E32D432B4F9F751BDE0496C580A181FFED762AA35454A02D3F1F47EE0394C80C3922C55C30B5A26A7AFD74DA9FFC9D75E626697F3E0FC5A04EAB4F87A05C5237C5BAE2F90C2B05712A915DC201C011B22D00F232D913E430D7BFC1EB0FEE360ED5C54E961F36C4152305B30B89483E7F7E0C9E5D6752AF092F8A50AF7B5273044D11D151914A871E8C6749976FB12DFD9CB3D01E063B8A6D25B364780B21EE533010A92B12FD6AF30928722B5C2FC82F7903D38A72B80FC93AC6AE623593EAA3064111E1D940665CE2598EF2F1F63890E447083CB816649C50CA87B929CE5926721A4A1F2A939293A6F3AE4FC39796548ED080EE97B2A6F1A826B8EF71171C599B0D19281C86665D26B90A07EDE1DB472AF78318B2CD9DB08FD8CF00ECC0819F90E07783A797CC5F6DEED95E340FA726E050EBF9C736DE4DE91CC4FA072A919B675898EEDB66C6479507D191C84058CF0E98C9A79FA66F5FA74D30B290A8F271A512C9EEBAE39072960DAE6A1FA1EC1DCC938283E426CB2EEE3E6A87A3EB1C2F5F5C379E84192DDAD1A868B5C89A3342FE4E46828821BC9EB31F
ct = 7B02601899FFF4BDFD0239FE924075CEBDFEE6EC1B8F67748831107487FF564A89353B669643D67DEF334976F3896547131D5A237C8F533F2DCF62F751301690B3C138F9912224276A47AAEB91A6742A3CB0DD03DF7572652B5EE7841C586F601F53A620E20106A7FB80F02848C76190BDBB67C2776668C01BCC1EB96D24DC2D91C8C5C27F59E154B78008B556E9C71B2BF4B6B7F74ECF79D18F280D734649D7F032E3E88654463122FECE207945A91B8248E887FE74D9B2B75E8988038AA856407502EEE2A10E4898FDDBC9811FDCB28EEF9921E65304285F0B35E211522306DA2871E4C2C2184705C160728A723E086C10550195A7FEF6105C812477EF6830351913723F484B51B2B7D8360C02194C26950264C66EFEEA8F2FEE313537AE8F3B26F2C912900748C0A9A5C363C2D0FC441B3173E45F454401102C08B00DBCD7334BD09F2AEEE6A3083FC96296CF5648DCD6AF956694861DAD11E94651FA35E9F07072EF39CBCD2DD9BF518FA5E3BF71E613746161E8685FC8155FDDE292F967D94D0C5FDC56FAE3F6B772CA46BE9572B144
ss = D497BA97E27D82FE6518B7D0EC8DC5C6

count = 96
seed = B3AC6503206ACCC2A92CBC210D020A2654726911D11CE676AA04FEAA08AF1D20C654E4105883AE470EC3AB299075D420
pk = 2FA5055424F34F8A109F21003007E710FD34A036E827EB0F7185F84863A660ACE7071F31149C8C70DCEC3A54F1C30C6698989B69CF58F1CFB7F48094D42C0AE8C244600F65C5125B7673A6A3E811BC87D30028D207E2A8127F791B530E58E9F6B3B5D7BC0FD93BBB9825760A525761E42AD39B75C3D21119CDE47EECE50F3AB14A21920AEF1DB71706EE6E8C2834D9F73724EB48A85793668D4A16404285577DEB174AF4180F25A1E8C447FD574A3345A0CE02BE47334ADEA0058BA214175B5A228F710DDA2AE09828EE0FAEC36D54CB5E81F240F7C57C1497C26B67D64EB1FF70AC361632DEA6FB44D4E1CECCC691E42DA4C07FBA872CFF54A9C73D03CCBDBDD717D1C47FC5805571EA087F89AFFB85DC9EC46EB549A58A5FC80F510FC608E111E6955F6B9D8FE8D7AC51E0FDD5FAA68BB4E5D78232D9F2EBCA11AD131000AEE93970CD892400E41E8BCED34DD5747EE274A78661EF85B1509C3E5E33A8EDCBE961D8D07725B2378C8A41CDA8E59332D6AB43903B1059111224
sk = AC6FCFAEEEF795B6EF9E062F02BF42975FA01E7D91BA832F5AEDA108EA4D6C6BC0FB958286850422BC357CA67B83C986048E0D0087FA110C2FA5055424F34F8A109F21003007E710FD34A036E827EB0F7185F84863A660ACE7071F31149C8C70DCEC3A54F1C30C6698989B69CF58F1CFB7F48094D42C0AE8C244600F65C5125B7673A6A3E811BC87D30028D207E2A8127F791B530E58E9F6B3B5D7BC0FD93BBB9825760A525761E42AD39B75C3D21119CDE47EECE50F3AB14A21920AEF1DB71706EE6E8C2834D9F73724EB48A85793668D4A16404285577DEB174AF4180F25A1E8C447FD574A3345A0CE02BE47334ADEA0058BA214175B5A228F710DDA2AE09828EE0FAEC36D54CB5E81F240F7C57C1497C26B67D64EB1FF70AC361632DEA6FB44D4E1CECCC691E42DA4C07FBA872CFF54A9C73D03CCBDBDD717D1C47FC5805571EA087F89AFFB85DC9EC46EB549A58A5FC80F510FC608E111E6955F6B9D8FE8D7AC51E0FDD5FAA68BB4E5D78232D9F2EBCA11AD131000AEE93970CD892400E41E8BCED34DD5747EE274A78661EF85B1509C3E5E33A8EDCBE961D8D07725B2378C8A41CDA8E59332D6AB43903B1059111224
ct = E19EC3A2A5DEBA18785B43BF3DFD3C5CD42437E8EE05CAD1E90A1E31BB29B702E7C1E9816FDC69F63316DB52A202E7AAE87182DC739876CD6F15C9E431161992D59EB24573011F84794E86ABD5C3CE984005A3A0BC6C119E981B966BA62A469803F99F931CF1F0A60824F9CF911F12A9310BF1006DE0DDF536B03D4A0531C95D266D041ED42962305C0B94E29CECDA3310E18AA5347F0CABC4C83263A9A9EC9545EB039E432407C6A38EE6609596E6A4342733EB679B055043AE1DBE29EEF46A4EF9D5F2889A18BFE9FEC639FDF90969FB81EF301142582A11F2B4226C5378AEFB8D8B7DAAF5971C1D634C1538964BDAEBA2FE0CC0B15250A18D700E5E487F0207CE260491C18DE6A51D400C57527FE1B2B7554D2EC92F07D0B6FF0476FD10451A61393D1A7B0B17D5E4194068968AD771E91E01228AED91BAFC028054C7AFD8D9DFE84E4402D28EC1EF590333005C2C56DB5FBA1C96F2444CB6C87AF2C3A3B6597568C70174314AEC9E6B0E029C3C744017135511A5F52FB3121097E644A195C04BFC3486E5AAD1BB4E8D206A193CBC3C9C
ss = B64FBB053B17B28CCCF00B1248F2B8E0

count = 97
seed = 59EFF60B1EF6185DB34EE1E3B1DD2F159106CECEAA79BEB74923B4F5623D5BC52DBF5D2594A1F7C6C64D12CF144E9ED4
pk = CDF0B6B1DFE7BEAFD0ABF3A9733364DF7487CD3DD3E1801211F0D65CB72DE2EB644219CD8A9843D0A03B9655ECCE0DA9E30A957DB9A6B462F4BC10B1406D1D0C6E69CC488790762F16F107DCF66FBA43876153FD49C13F69A07CE77E36D7961932B192BFFBD36B789ADCE88959B5879FF4A84D523D8356A1F03BDAA8B53A24039DDA5063023F255340D1A856D364E0082630623B518AD30803ADE986415C954C4BD7C8BAA17A864F36F767612515FE1C2119829213D4C8BEC185D81F30B2AF7F8528BCE3A492E3E99B5A1295F1136D12E101622174952FA60FF96FF75EF371B63956525EEBFDA9D203F9934BC823B2C4584F35839039C661DC912A0A392E5FC6A81412D807E1BAF56AA48D4265150AABA871A6D6870739214D0B209E5F64B06440FAED4867AB33935B12EC30886CE37E15B5E07D4062FACDB1D406B44266039B02AC5B18428767F96C48E7518304C5035FC4F436EF251FBF1C4C408CE639F222BA0F24E28F8D72E0A67244456DDD3D0301B45A6F0A339DFE572F
sk = BA2FB9318D4DBE7488057C33E95E6F054583A2800C41BB83E63F8FFDA3565C2424C89B20974B748A65A5ABA75133FCB3156DFB6626A83B0BCDF0B6B1DFE7BEAFD0ABF3A9733364DF7487CD3DD3E1801211F0D65CB72DE2EB644219CD8A9843D0A03B9655ECCE0DA9E30A957DB9A6B462F4BC10B1406D1D0C6E69CC488790762F16F107DCF66FBA43876153FD49C13F69A07CE77E36D7961932B192BFFBD36B789ADCE88959B5879FF4A84D523D8356A1F03BDAA8B53A24039DDA5063023F255340D1A856D364E0082630623B518AD30803ADE986415C954C4BD7C8BAA17A864F36F767612515FE1C2119829213D4C8BEC185D81F30B2AF7F8528BCE3A492E3E99B5A1295F1136D12E101622174952FA60FF96FF75EF371B63956525EEBFDA9D203F9934BC823B2C4584F35839039C661DC912A0A392E5FC6A81412D807E1BAF56AA48D4265150AABA871A6D6870739214D0B209E5F64B06440FAED4867AB33935B12EC30886CE37E15B5E07D4062FACDB1D406B44266039B02AC5B18428767F96C48E7518304C5035FC4F436EF251FBF1C4C408CE639F222BA0F24E28F8D72E0A67244456DDD3D0301B45A6F0A339DFE572F
ct = BFAF1FBBC477132CE35A5EA50FE891A039D62F16FB8C388D5139547A22721473AA348DB790EE5B24D8E5EE8F7BC535005CA1C26475F407A323BCC6BB349E0CC27B03F1769D8A08DF48F5B5D4389CC42C4C06ED44BCC7096B59ACE0DCADB79FDC127FDEC2E071545072D559C0262626F6414B956C4F1567E954446896B5293DF91F7DF8B1339B8B882C01940F8A3F7C55296B574695C53A7DD3E192644EE91A81C3ACB65C65D7BC3856F14383C2FD2C2C233068404FDF251011D5AC0229F8A07FB9BDD9BBBC861E2DA38F0477864139C37D2308DDE1DE8423E767226707CC5FE72CBD44164A2EB46B1E1418BBDCBE3214B2B47107B26A29F2A73247305970F082036349E5B30169A5F8BACFBF54C56051BB73D3BD7C1C3C0501D58CF7FD27135592FB70B79A3CCC04252E6A601945F6AAF19239EA713F8260E5AE1FED463476A86DD33D18FEF1A94A16B75286AF54B4934B0D57FCFCE4E8A053769FB6BD01C0443DB52F0DAEE2F7A38630B245A99B0D445B2DB1698F6915B064034F93AFFE5C7F8C8647F23B05433C7E60C830F8BE077F3A33
ss = DF4D730A8B11B7332EDF0E3476537C15

count = 98
seed = DDDCA9DC31BEA737D3F474E7560B37FACB2F53C803E768FFAADE7669FF94B1D4FBD17068CFFD5DFDD24AADADA4EF6B12
pk = DE2856B4723258A97190E2B84633B573FD9B39E1DCB68DA025208B3250FDCEF6D42FA1A58BDC4CDE6423131DF793FEAA7D66A9CD0EB6D48765CE3D1A9FAD282BF1DBB7B74DD1A4469B0A9F73115107D0DA8A09078A29F81D715BF95115D33C16EFA857B54801CC99A64D5E1B40D65A3E8C7D5AAEEC9B1CFAEFC01158BF1E6485618B519EDBC680FA96B43ABA058392D7F7FDADAD49C0A1751F58CA0C3EBD2948DC47BF4C4AD7ED1D43720BB2816AE1B3E1A39435FBD5C07922E443F930F33375E6090B1246BB18F20B10EB882F658F0CD4A9D18435D7B632A9AB86807030F28B349093EEE0B2A5949BFFFDE709BC0817F78B570AADC5B6679DF4C4371AC5207F9261CB846171F477C79E222D770857E0AED2009389F2C3EDD0F582F3288E0DA9D915983938B04EF904FFFA3F3E94BD4759C7AADCA4C5DE16E03D18C535B4DD464032DBB3A85122F2E18CF53CD3D0897C315AFDE007FDFDBAE158D0B3B81A71684CA3EB3E20904E6EB931F51D2522F0D741FEFE46113B725B7320
sk = AA6DD1E5799CDF7AF9C4FC632B3EB9D51D66E85C8E0A21ECFDA268813EFAB5204EFA60F78BF81D320D01AC09AC06244F7AFBD2D80FD35609DE2856B4723258A97190E2B84633B573FD9B39E1DCB68DA025208B3250FDCEF6D42FA1A58BDC4CDE6423131DF793FEAA7D66A9CD0EB6D48765CE3D1A9FAD282BF1DBB7B74DD1A4469B0A9F73115107D0DA8A09078A29F81D715BF95115D33C16EFA857B54801CC99A64D5E1B40D65A3E8C7D5AAEEC9B1CFAEFC01158BF1E6485618B519EDBC680FA96B43ABA058392D7F7FDADAD49C0A1751F58CA0C3EBD2948DC47BF4C4AD7ED1D43720BB2816AE1B3E1A39435FBD5C07922E443F930F33375E6090B1246BB18F20B10EB882F658F0CD4A9D18435D7B632A9AB86807030F28B349093EEE0B2A5949BFFFDE709BC0817F78B570AADC5B6679DF4C4371AC5207F9261CB846171F477C79E222D770857E0AED2009389F2C3EDD0F582F3288E0DA9D915983938B04EF904FFFA3F3E94BD4759C7AADCA4C5DE16E03D18C535B4DD464032DBB3A85122F2E18CF53CD3D0897C315AFDE007FDFDBAE158D0B3B81A71684CA3EB3E20904E6EB931F51D2522F0D741FEFE46113B725B7320
ct = 0A82BD0E9BE858268FD4D3115CA21C18E3165F358BA3707C879716A31EA982B48C4D263AF5072EBAC1217D0EDC2DB39EFF918F26A27ACD737689E3D189B515DCA30F8A87F0917358E92EC1DC0965C30AC36234589CB459017A3D4A2D7209F1A98E27D850C4C254128C6E534DAC504E3A2BF50CF622D0B8A766CA97449906841F6668E5FB8A5EECF8AB7DCC83450DCF672EB7729AD3A0949A4B41A6D3AC2FE2200E334887E6F233BA76E96BBDAD418D8D436F64E173616C1875A4485C2D87DF5D0B1369A75F708437041E1A564F7FA4A9CCFD0FB9D9C54A24F3DADE58B780E492C19EBD95FBE10F5D6D653F53E20061D675157BE787DB17C9CA403A1123200A242F690BAB5F483D69822B7095E2D3B6C0F476178E43CF7D849FDFFDC72A7A47D8E49A54AC566CD91C0A87FBEB03B9E40584D0375BE0D38FE9B76A149C7B1F4FD333488A05985F8205918759A4155F26FDBCE293370E2060EADDD0DD30D5409997561D30E3417C0F4EF54168C0D4F7C3B8314B9CFBB07744DEB7292E6D675B0281F69AF84A5BC932E6E284DB8316AEE384E0E7
ss = 06AA77743FD0AA114A1556E07703D7D7

count = 99
seed = 2A6F7386B815366F572AEB6C79E272CC21B7095FE09575F18072C9D677DA23BC9C8A4BC393B7524604D299BEDD260C8B
pk = 6F09614D1FC5D9E28D415C5199D5FAA6AE43EAF4B343845013F8686E1E9307622E5DE10B33FAD352E39DAB1DEFD80CB4303B5A7313EA2975BA7ED2499C1E31BB5AEEB38D5D42DF335121A9E605C442A61813DD263B0CBC569531B6B528F2F5AC26EF0F4D527617F438DBCFAA2278A4453EEA82AEDFA34C04882D7F7DFB3F5BDEE600F836E745FECC7E29017039F3FBEDCA257885CB6ACB4F509C7575FBCE8113EDF43B35189E4EAA109359FB7504D2939D4FEE94716E574677B5CEF307A234E3B053A952805C18526D6F7C10CE4E81A8C2BF2C91A5BBB2F7336825B048F97EC989B0AFB5B3700AF3E7C187A67332E2A9D646ED2698779C336373FF1EED37A7AB93C38BEDED373599F8EE9920200AD9D7165E17640F5CAF72F3BCE13D3690CA0E9167015247464AAA855A7487CA2D8CB92962863D1D779FB05EF41B5F9B651E7C2900BA3CF648CDF449CDECA443A139ECBB910D82C5FDF5B33CF1BFCFA629B4874BABE33038B23C049E185C75389F92F0EB6E04FBBF4F396FFD06
sk = 195D6C86A3DF4C21E3007D7F2768B43C74CB3060E0ECA77FAE77E0F9F21EABD8C0C6EEA7767F4E10FDE5C2D79B8400BF96B19014B457EC016F09614D1FC5D9E28D415C5199D5FAA6AE43EAF4B343845013F8686E1E9307622E5DE10B33FAD352E39DAB1DEFD80CB4303B5A7313EA2975BA7ED2499C1E31BB5AEEB38D5D42DF335121A9E605C442A61813DD263B0CBC569531B6B528F2F5AC26EF0F4D527617F438DBCFAA2278A4453EEA82AEDFA34C04882D7F7DFB3F5BDEE600F836E745FECC7E29017039F3FBEDCA257885CB6ACB4F509C7575FBCE8113EDF43B35189E4EAA109359FB7504D2939D4FEE94716E574677B5CEF307A234E3B053A952805C18526D6F7C10CE4E81A8C2BF2C91A5BBB2F7336825B048F97EC989B0AFB5B3700AF3E7C187A67332E2A9D646ED2698779C336373FF1EED37A7AB93C38BEDED373599F8EE9920200AD9D7165E17640F5CAF72F3BCE13D3690CA0E9167015247464AAA855A7487CA2D8CB92962863D1D779FB05EF41B5F9B651E7C2900BA3CF648CDF449CDECA443A139ECBB910D82C5FDF5B33CF1BFCFA629B4874BABE33038B23C049E185C75389F92F0EB6E04FBBF4F396FFD06
ct = 64FE6121722672B67D0D46C164937F19029CAD597BC6A4820351D818E6AA4A76F480F9C26BEDC07111FB18129902AB2C47463FF34A0956D07E2B91B465C23CA86D6C50F8B7D057DA700C2619ACF1D97947CB288D26927B620D8D09673F195C08BFDEB261B39DF0BB4182DA8FA025BCEF386FD8A3E382EA36198AE2EBB102EEDF335FE54F2B426FC2C98B55C21A61C8D6C053EE7149825A8E21D4B282CF99DC5456579428DAD837CA1C9292B4FD8011FD3C6D9BD1FD3578F6FA3AF40123F8EA2293BB0728D3881F5AFC60150243D8E7C4E67CA1B208754B7963DE32356A33DD683D30133FEDF1B876A153EA08FD8139CD3B492969438771F122EBC93E8F19599EC7B41B8BE30268B2ABD00564A12E04B3E89B04921423DCE927F84C6B6C4BA0030F722A68662CFBF5CFD61CC6FE7815469FACCD9A210FFA8CBD6625C02F8684152C63C07DB242C40503168C173D3B912E93DEFB76F17E402CC0FC233DC2EDDA2A9432B0574BB71A90358FE3438811B889996D885B7B4E45E895078EF1B0E6D8B61CCA4E33888107C93ECFADBB5D7D973C9485
ss = CFFB43BF3A34E38EEA47DCF8A87851E8


+ 1
- 1
internal/arith/generic.go Parādīt failu

@@ -1,4 +1,4 @@
// +build noasm arm64 arm
// +build noasm !amd64

package internal



+ 1702
- 0
p503/arith_amd64.s
Failā izmaiņas netiks attēlotas, jo tās ir par lielu
Parādīt failu


+ 74
- 0
p503/arith_amd64_test.go Parādīt failu

@@ -0,0 +1,74 @@
// +build amd64,!noasm

package p503

import (
. "github.com/cloudflare/p751sidh/internal/isogeny"
"golang.org/x/sys/cpu"
"reflect"
"testing"
"testing/quick"
)

// Utility function used for testing Mul implementations. Tests caller provided
// mulFunc against mul()
func testMul(t *testing.T, mulFunc func(z *FpElementX2, x, y *FpElement)) {
doMulTest := func(multiplier, multiplicant FpElement) bool {
var resMulRef, resMulOptim FpElementX2
mul(&resMulRef, &multiplier, &multiplicant)
mulFunc(&resMulOptim, &multiplier, &multiplicant)
return reflect.DeepEqual(resMulRef, resMulOptim)
}

if err := quick.Check(doMulTest, quickCheckConfig); err != nil {
t.Error(err)
}
}

// Utility function used for testing REDC implementations. Tests caller provided
// redcFunc against redc()
func testRedc(t *testing.T, redcFunc func(z *FpElement, x *FpElementX2)) {
doRedcTest := func(aRR FpElementX2) bool {
var resRedcRef, resRedcOptim FpElement
var aRRcpy = aRR
redc(&resRedcRef, &aRR)
redcFunc(&resRedcOptim, &aRRcpy)
return reflect.DeepEqual(resRedcRef, resRedcOptim)
}

if err := quick.Check(doRedcTest, quickCheckConfig); err != nil {
t.Error(err)
}
}

// Ensures corretness of implementation of mul operation which uses MULX
func TestMulWithMULX(t *testing.T) {
if !cpu.X86.HasBMI2 {
t.Skip("MULX not supported by the platform")
}
testMul(t, mulWithMULX)
}

// Ensures corretness of implementation of mul operation which uses MULX and ADOX/ADCX
func TestMulWithMULXADX(t *testing.T) {
if !(cpu.X86.HasADX && cpu.X86.HasBMI2) {
t.Skip("MULX, ADCX and ADOX not supported by the platform")
}
testMul(t, mulWithMULXADX)
}

// Ensures corretness of Montgomery reduction implementation which uses MULX
func TestRedcWithMULX(t *testing.T) {
if !cpu.X86.HasBMI2 {
t.Skip("MULX not supported by the platform")
}
testRedc(t, redcWithMULX)
}

// Ensures corretness of Montgomery reduction implementation which uses MULX
func TestRedcWithMULXADX(t *testing.T) {
if !(cpu.X86.HasADX && cpu.X86.HasBMI2) {
t.Skip("MULX, ADCX and ADOX not supported by the platform")
}
testRedc(t, redcWithMULXADX)
}

+ 89
- 0
p503/arith_decl.go Parādīt failu

@@ -0,0 +1,89 @@
// +build amd64,!noasm

package p503

import (
. "github.com/cloudflare/p751sidh/internal/isogeny"
"golang.org/x/sys/cpu"
)

// If choice = 0, leave x,y unchanged. If choice = 1, set x,y = y,x.
// If choice is neither 0 nor 1 then behaviour is undefined.
// This function executes in constant time.
//go:noescape
func fp503ConditionalSwap(x, y *FpElement, choice uint8)

// Compute z = x + y (mod p).
//go:noescape
func fp503AddReduced(z, x, y *FpElement)

// Compute z = x - y (mod p).
//go:noescape
func fp503SubReduced(z, x, y *FpElement)

// Compute z = x + y, without reducing mod p.
//go:noescape
func fp503AddLazy(z, x, y *FpElement)

// Compute z = x + y, without reducing mod p.
//go:noescape
func fp503X2AddLazy(z, x, y *FpElementX2)

// Compute z = x - y, without reducing mod p.
//go:noescape
func fp503X2SubLazy(z, x, y *FpElementX2)

// Reduce a field element in [0, 2*p) to one in [0,p).
//go:noescape
func fp503StrongReduce(x *FpElement)

// Function pointer to function computing z = x * y.
// Concrete implementation depends on capabilities of the CPU which
// are resolved at runtime. CPUs with ADCX, ADOX and MULX support
// run most optimized implementation
var fp503Mul func(z *FpElementX2, x, y *FpElement)

// Mul implementattion for legacy CPUs
//go:noescape
func mul(z *FpElementX2, x, y *FpElement)

// Mul implementation for CPUs supporting carry-less MULX multiplier.
//go:noescape
func mulWithMULX(z *FpElementX2, x, y *FpElement)

// Mul implementation for CPUs supporting two independent carry chain
// (ADOX/ADCX) instructions and carry-less MULX multiplier
//go:noescape
func mulWithMULXADX(z *FpElementX2, x, y *FpElement)

// Computes the Montgomery reduction z = x R^{-1} (mod 2*p). On return value
// of x may be changed. z=x not allowed.
var fp503MontgomeryReduce func(z *FpElement, x *FpElementX2)

func redc(z *FpElement, x *FpElementX2)

// Mul implementation for CPUs supporting carry-less MULX multiplier.
//go:noescape
func redcWithMULX(z *FpElement, x *FpElementX2)

// Mul implementation for CPUs supporting two independent carry chain
// (ADOX/ADCX) instructions and carry-less MULX multiplier
//go:noescape
func redcWithMULXADX(z *FpElement, x *FpElementX2)

// On initialization, set the fp503Mul function pointer to the
// fastest implementation depending on CPU capabilities.
func init() {
if cpu.X86.HasBMI2 {
if cpu.X86.HasADX {
fp503Mul = mulWithMULXADX
fp503MontgomeryReduce = redcWithMULXADX
} else {
fp503Mul = mulWithMULX
fp503MontgomeryReduce = redcWithMULX
}
} else {
fp503Mul = mul
fp503MontgomeryReduce = redc
}
}

+ 4
- 4
p503/arith_generic.go Parādīt failu

@@ -1,10 +1,10 @@
// +build noasm arm64 arm
// +build noasm !amd64

package p503

import (
. "github.com/cloudflare/p751sidh/internal/isogeny"
. "github.com/cloudflare/p751sidh/internal/arith"
. "github.com/cloudflare/p751sidh/internal/isogeny"
)

// Compute z = x + y (mod p).
@@ -48,7 +48,7 @@ func fp503SubReduced(z, x, y *FpElement) {
}

// Conditionally swaps bits in x and y in constant time.
// mask indicates bits to be swaped (set bits are swapped)
// mask indicates bits to be swapped (set bits are swapped)
// For details see "Hackers Delight, 2.20"
//
// Implementation doesn't actually depend on a prime field.
@@ -64,7 +64,7 @@ func fp503ConditionalSwap(x, y *FpElement, mask uint8) {
}

// Perform Montgomery reduction: set z = x R^{-1} (mod 2*p)
// with R=2^768. Destroys the input value.
// with R=2^512. Destroys the input value.
func fp503MontgomeryReduce(z *FpElement, x *FpElementX2) {
var carry, t, u, v uint64
var uv Uint128


+ 341
- 0
p503/arith_test.go Parādīt failu

@@ -0,0 +1,341 @@
package p503

import (
. "github.com/cloudflare/p751sidh/internal/isogeny"
"math/big"
"testing"
"testing/quick"
)

//------------------------------------------------------------------------------
// Extended Field
//------------------------------------------------------------------------------

func TestOneFp2ToBytes(t *testing.T) {
var x = P503_OneFp2
var xBytes [2 * P503_Bytelen]byte

kCurveOps.Fp2ToBytes(xBytes[:], &x)
if xBytes[0] != 1 {
t.Error("Expected 1, got", xBytes[0])
}
for i := 1; i < 2*P503_Bytelen; i++ {
if xBytes[i] != 0 {
t.Error("Expected 0, got", xBytes[0])
}
}
}

func TestFp2ElementToBytesRoundTrip(t *testing.T) {
roundTrips := func(x GeneratedTestParams) bool {
var xBytes [2 * P503_Bytelen]byte
var xPrime Fp2Element

kCurveOps.Fp2ToBytes(xBytes[:], &x.ExtElem)
kCurveOps.Fp2FromBytes(&xPrime, xBytes[:])
return VartimeEqFp2(&xPrime, &x.ExtElem)
}

if err := quick.Check(roundTrips, quickCheckConfig); err != nil {
t.Error(err)
}
}

func TestFp2ElementMulDistributesOverAdd(t *testing.T) {
mulDistributesOverAdd := func(x, y, z GeneratedTestParams) bool {
// Compute t1 = (x+y)*z
t1 := new(Fp2Element)
kFieldOps.Add(t1, &x.ExtElem, &y.ExtElem)
kFieldOps.Mul(t1, t1, &z.ExtElem)

// Compute t2 = x*z + y*z
t2 := new(Fp2Element)
t3 := new(Fp2Element)
kFieldOps.Mul(t2, &x.ExtElem, &z.ExtElem)
kFieldOps.Mul(t3, &y.ExtElem, &z.ExtElem)
kFieldOps.Add(t2, t2, t3)

return VartimeEqFp2(t1, t2)
}

if err := quick.Check(mulDistributesOverAdd, quickCheckConfig); err != nil {
t.Error(err)
}
}

func TestFp2ElementMulIsAssociative(t *testing.T) {
isAssociative := func(x, y, z GeneratedTestParams) bool {
// Compute t1 = (x*y)*z
t1 := new(Fp2Element)
kFieldOps.Mul(t1, &x.ExtElem, &y.ExtElem)
kFieldOps.Mul(t1, t1, &z.ExtElem)

// Compute t2 = (y*z)*x
t2 := new(Fp2Element)
kFieldOps.Mul(t2, &y.ExtElem, &z.ExtElem)
kFieldOps.Mul(t2, t2, &x.ExtElem)

return VartimeEqFp2(t1, t2)
}

if err := quick.Check(isAssociative, quickCheckConfig); err != nil {
t.Error(err)
}
}

func TestFp2ElementSquareMatchesMul(t *testing.T) {
sqrMatchesMul := func(x GeneratedTestParams) bool {
// Compute t1 = (x*x)
t1 := new(Fp2Element)
kFieldOps.Mul(t1, &x.ExtElem, &x.ExtElem)

// Compute t2 = x^2
t2 := new(Fp2Element)
kFieldOps.Square(t2, &x.ExtElem)

return VartimeEqFp2(t1, t2)
}

if err := quick.Check(sqrMatchesMul, quickCheckConfig); err != nil {
t.Error(err)
}
}

func TestFp2ElementInv(t *testing.T) {
inverseIsCorrect := func(x GeneratedTestParams) bool {
z := new(Fp2Element)
kFieldOps.Inv(z, &x.ExtElem)

// Now z = (1/x), so (z * x) * x == x
kFieldOps.Mul(z, z, &x.ExtElem)
kFieldOps.Mul(z, z, &x.ExtElem)

return VartimeEqFp2(z, &x.ExtElem)
}

// This is more expensive; run fewer tests
var quickCheckConfig = &quick.Config{MaxCount: (1 << (8 + quickCheckScaleFactor))}
if err := quick.Check(inverseIsCorrect, quickCheckConfig); err != nil {
t.Error(err)
}
}

func TestFp2ElementBatch3Inv(t *testing.T) {
batchInverseIsCorrect := func(x1, x2, x3 GeneratedTestParams) bool {
var x1Inv, x2Inv, x3Inv Fp2Element
kFieldOps.Inv(&x1Inv, &x1.ExtElem)
kFieldOps.Inv(&x2Inv, &x2.ExtElem)
kFieldOps.Inv(&x3Inv, &x3.ExtElem)

var y1, y2, y3 Fp2Element
kCurveOps.Fp2Batch3Inv(&x1.ExtElem, &x2.ExtElem, &x3.ExtElem, &y1, &y2, &y3)

return (VartimeEqFp2(&x1Inv, &y1) && VartimeEqFp2(&x2Inv, &y2) && VartimeEqFp2(&x3Inv, &y3))
}

// This is more expensive; run fewer tests
var quickCheckConfig = &quick.Config{MaxCount: (1 << (5 + quickCheckScaleFactor))}
if err := quick.Check(batchInverseIsCorrect, quickCheckConfig); err != nil {
t.Error(err)
}
}

//------------------------------------------------------------------------------
// Prime Field
//------------------------------------------------------------------------------

func TestPrimeFieldElementMulVersusBigInt(t *testing.T) {
mulMatchesBigInt := func(x, y primeFieldElement) bool {
z := new(primeFieldElement)
z.Mul(&x, &y)
check := new(big.Int)
check.Mul(toBigInt(&x.A), toBigInt(&y.A))
check.Mod(check, p503BigIntPrime)
return check.Cmp(toBigInt(&z.A)) == 0
}

if err := quick.Check(mulMatchesBigInt, quickCheckConfig); err != nil {
t.Error(err)
}
}

func TestPrimeFieldElementP34VersusBigInt(t *testing.T) {
var p34, _ = new(big.Int).SetString("3293960789226779345209813229049836260623046691894590999611415869258960983005190308379728727886506087902151787597521914245745576582754898490288559357951", 10)
p34MatchesBigInt := func(x primeFieldElement) bool {
z := new(primeFieldElement)
z.P34(&x)

check := toBigInt(&x.A)
check.Exp(check, p34, p503BigIntPrime)

return check.Cmp(toBigInt(&z.A)) == 0
}

// This is more expensive; run fewer tests
var quickCheckConfig = &quick.Config{MaxCount: (1 << (8 + quickCheckScaleFactor))}
if err := quick.Check(p34MatchesBigInt, quickCheckConfig); err != nil {
t.Error(err)
}
}

func TestPrimeFieldElementToBigInt(t *testing.T) {
// Chosen so that p < xR < 2p
x := primeFieldElement{A: FpElement{
1, 1, 1, 1, 1, 1, 1, 36028797018963968,
},
}
// Computed using Sage:
// sage: p = 2^e2 * 3^e3 - 1
// sage: R = 2^512
// sage: from_radix_64 = lambda xs: sum((xi * (2**64)**i for i,xi in enumerate(xs)))
// sage: xR = from_radix_64([1]*7 + [2^55])
// sage: assert(p < xR)
// sage: assert(xR < 2*p)
// sage: (xR / R) % p
xBig, _ := new(big.Int).SetString("9018685569593152305590037326062904046918870374552508285127709347526265324701162612011653377441752634975109935373869185819144129719824212073345315986301", 10)
if xBig.Cmp(toBigInt(&x.A)) != 0 {
t.Error("Expected", xBig, "found", toBigInt(&x.A))
}
}

func TestFpElementConditionalSwap(t *testing.T) {
var one = FpElement{1, 1, 1, 1, 1, 1, 1, 1}
var two = FpElement{2, 2, 2, 2, 2, 2, 2, 2}

var x = one
var y = two

fp503ConditionalSwap(&x, &y, 0)

if !(x == one && y == two) {
t.Error("Found", x, "expected", one)
}

fp503ConditionalSwap(&x, &y, 1)

if !(x == two && y == one) {
t.Error("Found", x, "expected", two)
}
}

func BenchmarkFp2ElementMul(b *testing.B) {
z := &Fp2Element{A: bench_x, B: bench_y}
w := new(Fp2Element)

for n := 0; n < b.N; n++ {
kFieldOps.Mul(w, z, z)
}
}

func BenchmarkFp2ElementInv(b *testing.B) {
z := &Fp2Element{A: bench_x, B: bench_y}
w := new(Fp2Element)

for n := 0; n < b.N; n++ {
kFieldOps.Inv(w, z)
}
}

func BenchmarkFp2ElementSquare(b *testing.B) {
z := &Fp2Element{A: bench_x, B: bench_y}
w := new(Fp2Element)

for n := 0; n < b.N; n++ {
kFieldOps.Square(w, z)
}
}

func BenchmarkFp2ElementAdd(b *testing.B) {
z := &Fp2Element{A: bench_x, B: bench_y}
w := new(Fp2Element)

for n := 0; n < b.N; n++ {
kFieldOps.Add(w, z, z)
}
}

func BenchmarkFp2ElementSub(b *testing.B) {
z := &Fp2Element{A: bench_x, B: bench_y}
w := new(Fp2Element)

for n := 0; n < b.N; n++ {
kFieldOps.Sub(w, z, z)
}
}

func BenchmarkPrimeFieldElementMul(b *testing.B) {
z := &primeFieldElement{A: bench_x}
w := new(primeFieldElement)

for n := 0; n < b.N; n++ {
w.Mul(z, z)
}
}

// --- field operation functions

func BenchmarkFp503Multiply(b *testing.B) {
for n := 0; n < b.N; n++ {
fp503Mul(&benchmarkFpElementX2, &bench_x, &bench_y)
}
}

func BenchmarkFp503MontgomeryReduce(b *testing.B) {
z := bench_z

// This benchmark actually computes garbage, because
// fp503MontgomeryReduce mangles its input, but since it's
// constant-time that shouldn't matter for the benchmarks.
for n := 0; n < b.N; n++ {
fp503MontgomeryReduce(&benchmarkFpElement, &z)
}
}

func BenchmarkFp503AddReduced(b *testing.B) {
for n := 0; n < b.N; n++ {
fp503AddReduced(&benchmarkFpElement, &bench_x, &bench_y)
}
}

func BenchmarkFp503SubReduced(b *testing.B) {
for n := 0; n < b.N; n++ {
fp503SubReduced(&benchmarkFpElement, &bench_x, &bench_y)
}
}

func BenchmarkFp503ConditionalSwap(b *testing.B) {
x, y := bench_x, bench_y
for n := 0; n < b.N; n++ {
fp503ConditionalSwap(&x, &y, 1)
fp503ConditionalSwap(&x, &y, 0)
}
}

func BenchmarkFp503StrongReduce(b *testing.B) {
x := bench_x
for n := 0; n < b.N; n++ {
fp503StrongReduce(&x)
}
}

func BenchmarkFp503AddLazy(b *testing.B) {
var z FpElement
x, y := bench_x, bench_y
for n := 0; n < b.N; n++ {
fp503AddLazy(&z, &x, &y)
}
}

func BenchmarkFp503X2AddLazy(b *testing.B) {
x, y, z := bench_z, bench_z, bench_z
for n := 0; n < b.N; n++ {
fp503X2AddLazy(&x, &y, &z)
}
}

func BenchmarkFp503X2SubLazy(b *testing.B) {
x, y, z := bench_z, bench_z, bench_z
for n := 0; n < b.N; n++ {
fp503X2SubLazy(&x, &y, &z)
}
}

+ 160
- 0
p503/consts.go Parādīt failu

@@ -0,0 +1,160 @@
package p503

import (
. "github.com/cloudflare/p751sidh/internal/isogeny"
)

const (
// SIDH public key byte size
P503_PublicKeySize = 378
// SIDH shared secret byte size.
P503_SharedSecretSize = 126
// Max size of secret key for 2-torsion group, corresponds to 2^e2 - 1
P503_SecretBitLenA = 250
// Size of secret key for 3-torsion group, corresponds to log_2(3^e3) - 1
P503_SecretBitLenB = 252
// Size of a compuatation strategy for 2-torsion group
strategySizeA = 124
// Size of a compuatation strategy for 3-torsion group
strategySizeB = 158
// ceil(503+7/8)
P503_Bytelen = 63
// Number of limbs for a field element
NumWords = 8
)

// The x-coordinate of PA
var P503_affine_PA = Fp2Element{
A: FpElement{
0xE7EF4AA786D855AF, 0xED5758F03EB34D3B, 0x09AE172535A86AA9, 0x237B9CC07D622723,
0xE3A284CBA4E7932D, 0x27481D9176C5E63F, 0x6A323FF55C6E71BF, 0x002ECC31A6FB8773,
},
B: FpElement{
0x64D02E4E90A620B8, 0xDAB8128537D4B9F1, 0x4BADF77B8A228F98, 0x0F5DBDF9D1FB7D1B,
0xBEC4DB288E1A0DCC, 0xE76A8665E80675DB, 0x6D6F252E12929463, 0x003188BD1463FACC,
},
}

// The x-coordinate of QA
var P503_affine_QA = Fp2Element{
A: FpElement{
0xB79D41025DE85D56, 0x0B867DA9DF169686, 0x740E5368021C827D, 0x20615D72157BF25C,
0xFF1590013C9B9F5B, 0xC884DCADE8C16CEA, 0xEBD05E53BF724E01, 0x0032FEF8FDA5748C,
},
B: FpElement{
0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
},
}

// The x-coordinate of RA = PA-QA
var P503_affine_RA = Fp2Element{
A: FpElement{
0x12E2E849AA0A8006, 0x41CF47008635A1E8, 0x9CD720A70798AED7, 0x42A820B42FCF04CF,
0x7BF9BAD32AAE88B1, 0xF619127A54090BBE, 0x1CB10D8F56408EAA, 0x001D6B54C3C0EDEB,
},
B: FpElement{
0x34DB54931CBAAC36, 0x420A18CB8DD5F0C4, 0x32008C1A48C0F44D, 0x3B3BA772B1CFD44D,
0xA74B058FDAF13515, 0x095FC9CA7EEC17B4, 0x448E829D28F120F8, 0x00261EC3ED16A489,
},
}

// The x-coordinate of PB
var P503_affine_PB = Fp2Element{
A: FpElement{
0x7EDE37F4FA0BC727, 0xF7F8EC5C8598941C, 0xD15519B516B5F5C8, 0xF6D5AC9B87A36282,
0x7B19F105B30E952E, 0x13BD8B2025B4EBEE, 0x7B96D27F4EC579A2, 0x00140850CAB7E5DE,
},
B: FpElement{
0x7764909DAE7B7B2D, 0x578ABB16284911AB, 0x76E2BFD146A6BF4D, 0x4824044B23AA02F0,
0x1105048912A321F3, 0xB8A2E482CF0F10C1, 0x42FF7D0BE2152085, 0x0018E599C5223352,
},
}

// The x-coordinate of QB
var P503_affine_QB = Fp2Element{
A: FpElement{
0x4256C520FB388820, 0x744FD7C3BAAF0A13, 0x4B6A2DDDB12CBCB8, 0xE46826E27F427DF8,
0xFE4A663CD505A61B, 0xD6B3A1BAF025C695, 0x7C3BB62B8FCC00BD, 0x003AFDDE4A35746C,
},
B: FpElement{
0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
},
}

// The x-coordinate of RB = PB - QB
var P503_affine_RB = Fp2Element{
A: FpElement{
0x75601CD1E6C0DFCB, 0x1A9007239B58F93E, 0xC1F1BE80C62107AC, 0x7F513B898F29FF08,
0xEA0BEDFF43E1F7B2, 0x2C6D94018CBAE6D0, 0x3A430D31BCD84672, 0x000D26892ECCFE83,
},
B: FpElement{
0x1119D62AEA3007A1, 0xE3702AA4E04BAE1B, 0x9AB96F7D59F990E7, 0xF58440E8B43319C0,
0xAF8134BEE1489775, 0xE7F7774E905192AA, 0xF54AE09308E98039, 0x001EF7A041A86112,
},
}

// 2-torsion group computation strategy
var P503_AliceIsogenyStrategy = [strategySizeA]uint32{
0x3D, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0x02,
0x01, 0x01, 0x08, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01,
0x01, 0x10, 0x08, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01,
0x01, 0x08, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01,
0x1D, 0x10, 0x08, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01,
0x01, 0x08, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01,
0x0D, 0x08, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01,
0x05, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01}

// 3-torsion group computation strategy
var P503_BobIsogenyStrategy = [strategySizeB]uint32{
0x47, 0x26, 0x15, 0x0D, 0x08, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01,
0x02, 0x01, 0x01, 0x05, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x09,
0x05, 0x03, 0x02, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0x01,
0x02, 0x01, 0x01, 0x11, 0x09, 0x05, 0x03, 0x02, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01,
0x04, 0x02, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x08, 0x04, 0x02, 0x01, 0x01, 0x01, 0x02, 0x01,
0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x21, 0x11, 0x09, 0x05, 0x03, 0x02, 0x01, 0x01,
0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x08, 0x04,
0x02, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x10, 0x08,
0x04, 0x02, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x08,
0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x04, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01}

// Used internally by this package
// -------------------------------

var p503 = FpElement{
0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xABFFFFFFFFFFFFFF,
0x13085BDA2211E7A0, 0x1B9BF6C87B7E7DAF, 0x6045C6BDDA77A4D0, 0x004066F541811E1E,
}

// 2*503
var p503x2 = FpElement{
0xFFFFFFFFFFFFFFFE, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0x57FFFFFFFFFFFFFF,
0x2610B7B44423CF41, 0x3737ED90F6FCFB5E, 0xC08B8D7BB4EF49A0, 0x0080CDEA83023C3C,
}

// p503 + 1
var p503p1 = FpElement{
0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0xAC00000000000000,
0x13085BDA2211E7A0, 0x1B9BF6C87B7E7DAF, 0x6045C6BDDA77A4D0, 0x004066F541811E1E,
}

// R^2=(2^512)^2 mod p
var p503R2 = FpElement{
0x5289A0CF641D011F, 0x9B88257189FED2B9, 0xA3B365D58DC8F17A, 0x5BC57AB6EFF168EC,
0x9E51998BD84D4423, 0xBF8999CBAC3B5695, 0x46E9127BCE14CDB6, 0x003F6CFCE8B81771,
}

// 1*R mod p
var P503_OneFp2 = Fp2Element{
A: FpElement{
0x00000000000003F9, 0x0000000000000000, 0x0000000000000000, 0xB400000000000000,
0x63CB1A6EA6DED2B4, 0x51689D8D667EB37D, 0x8ACD77C71AB24142, 0x0026FBAEC60F5953},
}

// 1/2 * R mod p
var P503_HalfFp2 = Fp2Element{
A: FpElement{
0x00000000000001FC, 0x0000000000000000, 0x0000000000000000, 0xB000000000000000,
0x3B69BB2464785D2A, 0x36824A2AF0FE9896, 0xF5899F427A94F309, 0x0033B15203C83BB8},
}

+ 139
- 0
p503/curve_test.go Parādīt failu

@@ -0,0 +1,139 @@
package p503

import (
"bytes"
. "github.com/cloudflare/p751sidh/internal/isogeny"
"testing"
"testing/quick"
)

func TestOne(t *testing.T) {
var tmp Fp2Element

kFieldOps.Mul(&tmp, &P503_OneFp2, &affine_xP)
if !VartimeEqFp2(&tmp, &affine_xP) {
t.Error("Not equal 1")
}
}

// This test is here only to ensure that ScalarMult helper works correctly
func TestScalarMultVersusSage(t *testing.T) {
var xP ProjectivePoint

xP = ProjectivePoint{X: affine_xP, Z: P503_OneFp2}
xP = ScalarMult(&curve, &xP, mScalarBytes[:]) // = x([m]P)
affine_xQ := xP.ToAffine(kCurveOps)
if !VartimeEqFp2(&affine_xaP, affine_xQ) {
t.Error("\nExpected\n", affine_xaP, "\nfound\n", affine_xQ)
}
}

func Test_jInvariant(t *testing.T) {
var curve = ProjectiveCurveParameters{A: curve_A, C: curve_C}
var jbufRes [P503_SharedSecretSize]byte
var jbufExp [P503_SharedSecretSize]byte
// Computed using Sage
// j = 3674553797500778604587777859668542828244523188705960771798425843588160903687122861541242595678107095655647237100722594066610650373491179241544334443939077738732728884873568393760629500307797547379838602108296735640313894560419*i + 3127495302417548295242630557836520229396092255080675419212556702820583041296798857582303163183558315662015469648040494128968509467224910895884358424271180055990446576645240058960358037224785786494172548090318531038910933793845
var known_j = Fp2Element{
A: FpElement{0x2c441d03b72e27c, 0xf2c6748151dbf84, 0x3a774f6191070e, 0xa7c6212c9c800ba6, 0x23921b5cf09abc27, 0x9e1baefbb3cd4265, 0x8cd6a289f12e10dc, 0x3fa364128cf87e},
B: FpElement{0xe7497ac2bf6b0596, 0x629ee01ad23bd039, 0x95ee11587a119fa7, 0x572fb28a24772269, 0x3c00410b6c71567e, 0xe681e83a345f8a34, 0x65d21b1d96bd2d52, 0x7889a47e58901},
}
kCurveOps.Jinvariant(&curve, jbufRes[:])
kCurveOps.Fp2ToBytes(jbufExp[:], &known_j)

if !bytes.Equal(jbufRes[:], jbufExp[:]) {
t.Error("Computed incorrect j-invariant: found\n", jbufRes, "\nexpected\n", jbufExp)
}
}

func TestProjectivePointVartimeEq(t *testing.T) {
var xP ProjectivePoint

xP = ProjectivePoint{X: affine_xP, Z: P503_OneFp2}
xQ := xP
// Scale xQ, which results in the same projective point
kFieldOps.Mul(&xQ.X, &xQ.X, &curve_A)
kFieldOps.Mul(&xQ.Z, &xQ.Z, &curve_A)
if !VartimeEqProjFp2(&xP, &xQ) {
t.Error("Expected the scaled point to be equal to the original")
}
}

func TestPointDoubleVersusSage(t *testing.T) {
var curve = ProjectiveCurveParameters{A: curve_A, C: curve_C}
var params = kCurveOps.CalcCurveParamsEquiv4(&curve)
var xP ProjectivePoint

xP = ProjectivePoint{X: affine_xP, Z: P503_OneFp2}
kCurveOps.Pow2k(&xP, &params, 1)
affine_xQ := xP.ToAffine(kCurveOps)
if !VartimeEqFp2(affine_xQ, &affine_xP2) {
t.Error("\nExpected\n", affine_xP2, "\nfound\n", affine_xQ)
}
}

func TestPointMul4VersusSage(t *testing.T) {
var params = kCurveOps.CalcCurveParamsEquiv4(&curve)
var xP ProjectivePoint

xP = ProjectivePoint{X: affine_xP, Z: P503_OneFp2}
kCurveOps.Pow2k(&xP, &params, 2)
affine_xQ := xP.ToAffine(kCurveOps)
if !VartimeEqFp2(affine_xQ, &affine_xP4) {
t.Error("\nExpected\n", affine_xP4, "\nfound\n", affine_xQ)
}
}

func TestPointMul9VersusSage(t *testing.T) {
var params = kCurveOps.CalcCurveParamsEquiv3(&curve)
var xP ProjectivePoint

xP = ProjectivePoint{X: affine_xP, Z: P503_OneFp2}
kCurveOps.Pow3k(&xP, &params, 2)
affine_xQ := xP.ToAffine(kCurveOps)
if !VartimeEqFp2(affine_xQ, &affine_xP9) {
t.Error("\nExpected\n", affine_xP9, "\nfound\n", affine_xQ)
}
}

func TestPointPow2kVersusScalarMult(t *testing.T) {
var xP, xQ, xR ProjectivePoint
var params = kCurveOps.CalcCurveParamsEquiv4(&curve)

xP = ProjectivePoint{X: affine_xP, Z: P503_OneFp2}
xQ = xP
kCurveOps.Pow2k(&xQ, &params, 5)
xR = ScalarMult(&curve, &xP, []byte{32})
affine_xQ := xQ.ToAffine(kCurveOps) // = x([32]P)
affine_xR := xR.ToAffine(kCurveOps) // = x([32]P)

if !VartimeEqFp2(affine_xQ, affine_xR) {
t.Error("\nExpected\n", affine_xQ, "\nfound\n", affine_xR)
}
}

func TestPointTripleVersusAddDouble(t *testing.T) {
tripleEqualsAddDouble := func(params GeneratedTestParams) bool {
var P2, P3, P2plusP ProjectivePoint

eqivParams4 := kCurveOps.CalcCurveParamsEquiv4(&params.Cparam)
eqivParams3 := kCurveOps.CalcCurveParamsEquiv3(&params.Cparam)
P2 = params.Point
P3 = params.Point
kCurveOps.Pow2k(&P2, &eqivParams4, 1) // = x([2]P)
kCurveOps.Pow3k(&P3, &eqivParams3, 1) // = x([3]P)
P2plusP = AddProjFp2(&P2, &params.Point, &params.Point) // = x([2]P + P)
return VartimeEqProjFp2(&P3, &P2plusP)
}

if err := quick.Check(tripleEqualsAddDouble, quickCheckConfig); err != nil {
t.Error(err)
}
}

func BenchmarkThreePointLadder255BitScalar(b *testing.B) {
var mScalarBytes = [...]uint8{203, 155, 185, 191, 131, 228, 50, 178, 207, 191, 61, 141, 174, 173, 207, 243, 159, 243, 46, 163, 19, 102, 69, 92, 36, 225, 0, 37, 114, 19, 191, 0}
for n := 0; n < b.N; n++ {
kCurveOps.ScalarMul3Pt(&curve, &threePointLadderInputs[0], &threePointLadderInputs[1], &threePointLadderInputs[2], 255, mScalarBytes[:])
}
}

+ 249
- 0
p503/field_ops.go Parādīt failu

@@ -0,0 +1,249 @@
package p503

import (
. "github.com/cloudflare/p751sidh/internal/isogeny"
)

type fp503Ops struct{}

func FieldOperations() FieldOps {
return &fp503Ops{}
}

func (fp503Ops) Add(dest, lhs, rhs *Fp2Element) {
fp503AddReduced(&dest.A, &lhs.A, &rhs.A)
fp503AddReduced(&dest.B, &lhs.B, &rhs.B)
}

func (fp503Ops) Sub(dest, lhs, rhs *Fp2Element) {
fp503SubReduced(&dest.A, &lhs.A, &rhs.A)
fp503SubReduced(&dest.B, &lhs.B, &rhs.B)
}

func (fp503Ops) Mul(dest, lhs, rhs *Fp2Element) {
// Let (a,b,c,d) = (lhs.a,lhs.b,rhs.a,rhs.b).
a := &lhs.A
b := &lhs.B
c := &rhs.A
d := &rhs.B

// We want to compute
//
// (a + bi)*(c + di) = (a*c - b*d) + (a*d + b*c)i
//
// Use Karatsuba's trick: note that
//
// (b - a)*(c - d) = (b*c + a*d) - a*c - b*d
//
// so (a*d + b*c) = (b-a)*(c-d) + a*c + b*d.

var ac, bd FpElementX2
fp503Mul(&ac, a, c) // = a*c*R*R
fp503Mul(&bd, b, d) // = b*d*R*R

var b_minus_a, c_minus_d FpElement
fp503SubReduced(&b_minus_a, b, a) // = (b-a)*R
fp503SubReduced(&c_minus_d, c, d) // = (c-d)*R

var ad_plus_bc FpElementX2
fp503Mul(&ad_plus_bc, &b_minus_a, &c_minus_d) // = (b-a)*(c-d)*R*R
fp503X2AddLazy(&ad_plus_bc, &ad_plus_bc, &ac) // = ((b-a)*(c-d) + a*c)*R*R
fp503X2AddLazy(&ad_plus_bc, &ad_plus_bc, &bd) // = ((b-a)*(c-d) + a*c + b*d)*R*R

fp503MontgomeryReduce(&dest.B, &ad_plus_bc) // = (a*d + b*c)*R mod p

var ac_minus_bd FpElementX2
fp503X2SubLazy(&ac_minus_bd, &ac, &bd) // = (a*c - b*d)*R*R
fp503MontgomeryReduce(&dest.A, &ac_minus_bd) // = (a*c - b*d)*R mod p
}

// Set dest = 1/x
//
// Allowed to overlap dest with x.
//
// Returns dest to allow chaining operations.
func (fp503Ops) Inv(dest, x *Fp2Element) {
a := &x.A
b := &x.B

// We want to compute
//
// 1 1 (a - bi) (a - bi)
// -------- = -------- -------- = -----------
// (a + bi) (a + bi) (a - bi) (a^2 + b^2)
//
// Letting c = 1/(a^2 + b^2), this is
//
// 1/(a+bi) = a*c - b*ci.

var asq_plus_bsq primeFieldElement
var asq, bsq FpElementX2
fp503Mul(&asq, a, a) // = a*a*R*R
fp503Mul(&bsq, b, b) // = b*b*R*R
fp503X2AddLazy(&asq, &asq, &bsq) // = (a^2 + b^2)*R*R
fp503MontgomeryReduce(&asq_plus_bsq.A, &asq) // = (a^2 + b^2)*R mod p
// Now asq_plus_bsq = a^2 + b^2

inv := asq_plus_bsq
inv.Mul(&asq_plus_bsq, &asq_plus_bsq)
inv.P34(&inv)
inv.Mul(&inv, &inv)
inv.Mul(&inv, &asq_plus_bsq)

var ac FpElementX2
fp503Mul(&ac, a, &inv.A)
fp503MontgomeryReduce(&dest.A, &ac)

var minus_b FpElement
fp503SubReduced(&minus_b, &minus_b, b)
var minus_bc FpElementX2
fp503Mul(&minus_bc, &minus_b, &inv.A)
fp503MontgomeryReduce(&dest.B, &minus_bc)
}

func (fp503Ops) Square(dest, x *Fp2Element) {
a := &x.A
b := &x.B

// We want to compute
//
// (a + bi)*(a + bi) = (a^2 - b^2) + 2abi.

var a2, a_plus_b, a_minus_b FpElement
fp503AddReduced(&a2, a, a) // = a*R + a*R = 2*a*R
fp503AddReduced(&a_plus_b, a, b) // = a*R + b*R = (a+b)*R
fp503SubReduced(&a_minus_b, a, b) // = a*R - b*R = (a-b)*R

var asq_minus_bsq, ab2 FpElementX2
fp503Mul(&asq_minus_bsq, &a_plus_b, &a_minus_b) // = (a+b)*(a-b)*R*R = (a^2 - b^2)*R*R
fp503Mul(&ab2, &a2, b) // = 2*a*b*R*R

fp503MontgomeryReduce(&dest.A, &asq_minus_bsq) // = (a^2 - b^2)*R mod p
fp503MontgomeryReduce(&dest.B, &ab2) // = 2*a*b*R mod p
}

// In case choice == 1, performs following swap in constant time:
// xPx <-> xQx
// xPz <-> xQz
// Otherwise returns xPx, xPz, xQx, xQz unchanged
func (fp503Ops) CondSwap(xPx, xPz, xQx, xQz *Fp2Element, choice uint8) {
fp503ConditionalSwap(&xPx.A, &xQx.A, choice)
fp503ConditionalSwap(&xPx.B, &xQx.B, choice)
fp503ConditionalSwap(&xPz.A, &xQz.A, choice)
fp503ConditionalSwap(&xPz.B, &xQz.B, choice)
}

// Converts values in x.A and x.B to Montgomery domain
// x.A = x.A * R mod p
// x.B = x.B * R mod p
// Performs v = v*R^2*R^(-1) mod p, for both x.A and x.B
func (fp503Ops) ToMontgomery(x *Fp2Element) {
var aRR FpElementX2

// convert to montgomery domain
fp503Mul(&aRR, &x.A, &p503R2) // = a*R*R
fp503MontgomeryReduce(&x.A, &aRR) // = a*R mod p
fp503Mul(&aRR, &x.B, &p503R2)
fp503MontgomeryReduce(&x.B, &aRR)
}

// Converts values in x.A and x.B from Montgomery domain
// a = x.A mod p
// b = x.B mod p
//
// After returning from the call x is not modified.
func (fp503Ops) FromMontgomery(x *Fp2Element, out *Fp2Element) {
var aR FpElementX2

// convert from montgomery domain
// TODO: make fpXXXMontgomeryReduce use stack instead of reusing aR
// so that we don't have do this copy here
copy(aR[:], x.A[:])
fp503MontgomeryReduce(&out.A, &aR) // = a mod p in [0, 2p)
fp503StrongReduce(&out.A) // = a mod p in [0, p)
for i := range aR {
aR[i] = 0
}
copy(aR[:], x.B[:])
fp503MontgomeryReduce(&out.B, &aR)
fp503StrongReduce(&out.B)
}

//------------------------------------------------------------------------------
// Prime Field
//------------------------------------------------------------------------------

// Represents an element of the prime field F_p.
type primeFieldElement struct {
// This field element is in Montgomery form, so that the value `A` is
// represented by `aR mod p`.
A FpElement
}

// Set dest = lhs * rhs.
//
// Allowed to overlap lhs or rhs with dest.
//
// Returns dest to allow chaining operations.
func (dest *primeFieldElement) Mul(lhs, rhs *primeFieldElement) *primeFieldElement {
a := &lhs.A // = a*R
b := &rhs.A // = b*R

var ab FpElementX2
fp503Mul(&ab, a, b) // = a*b*R*R
fp503MontgomeryReduce(&dest.A, &ab) // = a*b*R mod p

return dest
}

// Set dest = x^(2^k), for k >= 1, by repeated squarings.
//
// Allowed to overlap x with dest.
//
// Returns dest to allow chaining operations.
func (dest *primeFieldElement) Pow2k(x *primeFieldElement, k uint8) *primeFieldElement {
dest.Mul(x, x)
for i := uint8(1); i < k; i++ {
dest.Mul(dest, dest)
}

return dest
}

// Set dest = x^((p-3)/4). If x is square, this is 1/sqrt(x).
// Uses variation of sliding-window algorithm from with window size
// of 5 and least to most significant bit sliding (left-to-right)
// See HAC 14.85 for general description.
//
// Allowed to overlap x with dest.
//
// Returns dest to allow chaining operations.
func (dest *primeFieldElement) P34(x *primeFieldElement) *primeFieldElement {
// Sliding-window strategy computed with etc/scripts/sliding_window_strat_calc.py
//
// This performs sum(powStrategy) + 1 squarings and len(lookup) + len(mulStrategy)
// multiplications.
powStrategy := []uint8{1, 12, 5, 5, 2, 7, 11, 3, 8, 4, 11, 4, 7, 5, 6, 3, 7, 5, 7, 2, 12, 5, 6, 4, 6, 8, 6, 4, 7, 5, 5, 8, 5, 8, 5, 5, 8, 9, 3, 6, 2, 10, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3}
mulStrategy := []uint8{0, 12, 11, 10, 0, 1, 8, 3, 7, 1, 8, 3, 6, 7, 14, 2, 14, 14, 9, 0, 13, 9, 15, 5, 12, 7, 13, 7, 15, 6, 7, 9, 0, 5, 7, 6, 8, 8, 3, 7, 0, 10, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 3}

// Precompute lookup table of odd multiples of x for window
// size k=5.
lookup := [16]primeFieldElement{}
xx := &primeFieldElement{}
xx.Mul(x, x)
lookup[0] = *x
for i := 1; i < 16; i++ {
lookup[i].Mul(&lookup[i-1], xx)
}

// Now lookup = {x, x^3, x^5, ... }
// so that lookup[i] = x^{2*i + 1}
// so that lookup[k/2] = x^k, for odd k
*dest = lookup[mulStrategy[0]]
for i := uint8(1); i < uint8(len(powStrategy)); i++ {
dest.Pow2k(dest, powStrategy[i])
dest.Mul(dest, &lookup[mulStrategy[i]])
}

return dest
}

+ 101
- 0
p503/isogeny_test.go Parādīt failu

@@ -0,0 +1,101 @@
package p503

import (
. "github.com/cloudflare/p751sidh/internal/isogeny"
"testing"
)

func TestFourIsogenyVersusSage(t *testing.T) {
var xR, xP4, resPhiXr, expPhiXr ProjectivePoint
var phi = Newisogeny4(kFieldOps)

// Given 4-torsion point on E, constructs a four-isogeny phi. Then evaluates
// point xR on the isogeny and compares with expected result.
// Values generated with reference implementation.

xP4 = ProjectivePoint{
X: Fp2Element{
A: FpElement{0xD00E20EC32B0EC29, 0xB931E12F6B486A34, 0x96EFFCAEC541E83F, 0x415729120E95D243, 0xB15DADFFBC7986EB, 0x27E7697979D482AC, 0xB269E255C3C11421, 0x35DFF53EF1BDE4},
B: FpElement{0x691F8D69E98BBF40, 0xAB3894C2F436C73, 0x6CE884D45D785C50, 0xBCDE642D761476C0, 0x8023EF2FCF4C9506, 0x6E3914CFCA94C8A0, 0x8AFE4F1C54EB8744, 0x163227D8890C30},
},
Z: Fp2Element{
A: FpElement{0x38B48A08355253FD, 0x457A001F6F522A58, 0x1959F48231C94070, 0xDF3B4C55A3FF1202, 0x3835E8FB47E9B93F, 0x84320E41E65889B5, 0x6D4AA6D38651BE7E, 0xF50448746FF64},
B: FpElement{0xEBBCCCBB347E448C, 0xFBC721B5DB2103C9, 0x54FD31DF0C538F18, 0xDE7B3C6CBB60C5BD, 0x86B664DCF5F4B272, 0x705CFC301B13DCD6, 0xFD250579C9257778, 0x366F73666C6C92},
},
}
xR = ProjectivePoint{
X: Fp2Element{
A: FpElement{0x6F50E690932A1473, 0x3EC8EE10B576C790, 0x5CABB067D0648B46, 0x77EA840A4219753C, 0xBFEE6EAB2073A69A, 0x845637223AB3687B, 0x20294B44CBDC9F34, 0x59C58391A33D5C},
B: FpElement{0x68832275EA18BDDC, 0x90039FCD522B6CCF, 0x43A97285E71B711A, 0xBCBFC2C3BCCF6135, 0xDE13C2E410DCF1FE, 0xB9B1243C7E4FC515, 0x3CE1C024813A61D, 0x2BED536959B2D},
},
Z: Fp2Element{
A: FpElement{0x99C27A12675FD4CD, 0x856E300D657ADDE3, 0x156C170BB8983CD3, 0x6A366F8BA2FD7805, 0xE922609C4B80E4A4, 0xAC5A1D2EBE7F2A9A, 0x2E732DAF59AE4A03, 0x6AC91B99882D54},
B: FpElement{0x909A822C8536612D, 0xBF579BF499C34C2D, 0xE2FAD61D94E1E60F, 0x37CB4E1F0A819D5F, 0xDBD36EA4FC053430, 0x28F3805ECA4730D8, 0x33F47EAF9ED8CEA2, 0x24FC2437192954},
},
}
expPhiXr = ProjectivePoint{
X: Fp2Element{
A: FpElement{0x2E2D7C96BB057AE9, 0x58FF5432A90EA157, 0x6EED2543FED809C7, 0xF721E3657B17C6D3, 0xC9F8EBED3E1430AF, 0xA94DAFEC2ED7275A, 0xFC8A869CF993A64D, 0x45C8B4291BC602},
B: FpElement{0xD5730CA5DA535196, 0x958D80511DCD695F, 0xCFDCAA016F0D6AF, 0x176FAA4414FC230B, 0x61A5CDD045B67365, 0x13AC43A5E7F0E446, 0x7BCABE9E555C2729, 0x2CA6A01B26BFEB},
},
Z: Fp2Element{
A: FpElement{0x684A5999FCD11607, 0x3D0057EA6B62FC92, 0x692895B2D37F8EAA, 0xF0BB08106CCF7FDF, 0x3A521D25A431C5CF, 0x8F8DCB43E0BD2475, 0x9CF6266E32D712D3, 0x3B98B6D5C0B377},
B: FpElement{0x8F4E4EA61ACA375, 0xE8DF168DA6349D03, 0x8DFD68ABA4AB08CC, 0x5352A227C5C6D59C, 0x45750EB03218D4D6, 0x71E2AD1F130DB05E, 0x64F35BBA642804EC, 0x26542493BF5F1C},
},
}

phi.GenerateCurve(&xP4)
resPhiXr = phi.EvaluatePoint(&xR)
if !VartimeEqProjFp2(&expPhiXr, &resPhiXr) {
t.Error("\nExpected\n", expPhiXr.ToAffine(kCurveOps), "\nfound\n", resPhiXr.ToAffine(kCurveOps))
}
}

func TestThreeIsogenyVersusSage(t *testing.T) {
var xR, xP3, resPhiXr, expPhiXr ProjectivePoint
var phi = Newisogeny3(kFieldOps)

// Given 3-torsion point on E, constructs a three-isogeny phi. Then evaluates
// point xR on the isogeny and compares with expected result.
// Values generated with reference implementation.

xP3 = ProjectivePoint{
X: Fp2Element{
A: FpElement{0x43C64B1158DE7ED, 0xC522F8AB7DCC9247, 0xC5BFCC8EA95E9F4D, 0xA6DFCE67C53F63BC, 0x9C6329D65EBBBE44, 0x91949F2E9864BD5A, 0xC9AE7B8B0435B0AF, 0x1607E735F9E10},
B: FpElement{0x3EEFA1A8B5D59CD9, 0x1ED7264A82282E14, 0x253309D0531054E1, 0x7557CC9966B63AB1, 0xAAB3B77A0CF3D9C, 0xF9BE0DC1977358F4, 0xC5B7AE198CF22874, 0x3250464B34AAD1},
},
Z: Fp2Element{
A: FpElement{0xC06D37BCBBD98418, 0x1C7C9E348A880023, 0xB1F61CA46EA815FD, 0x7E0E5F01EAB9D7B6, 0xE8737A5EF457E188, 0xBD228FDA0BAF18D8, 0xAB7823AF7BAFD785, 0x2BCA7CCFFC1DDA},
B: FpElement{0xBC34D39B7CBF3EDC, 0x882C3AFC4011C8E8, 0x68A2D74B0FBA196E, 0x810E59E7DD937844, 0xE796B5D4BFC3982F, 0xC7D23388B8E91883, 0x552B783D3986109F, 0x1337962318DFC0},
},
}

xR = ProjectivePoint{
X: Fp2Element{
A: FpElement{0xBA300F2F1C010480, 0xE196ACEE08FEA8BA, 0xC1B8AB47C5D6D9A, 0x2CDFF1E375E5FAFC, 0x2D55CBA6472829AF, 0xE03ECA628015CA0E, 0xD1055B779C2DCC6C, 0x7F915F81CAF33},
B: FpElement{0x5179F86B4F63CA45, 0x8CF33AD2D0D7E409, 0xE9065B70EB5F8680, 0xFBA717809FF35FE, 0x8E31E6EF3CAD154C, 0x65907A2B38A0B673, 0x9E5A4FFCF1F7E74, 0x3170F0C18D5F96},
},
Z: Fp2Element{
A: FpElement{0x1F48F3A2DFB1C73B, 0x3E35C8CD0752F9A4, 0x88601205D0B6B8C0, 0xCFF48E40A9C200CD, 0x10E6964543C6195C, 0x6B8F141796914E13, 0xA7B5F96629DF495E, 0x6600DB36C90874},
B: FpElement{0xAB54D5B8247FE6CA, 0xD5EE5EAE7C19E9B4, 0x16CB352BA75CB7EF, 0x6D651A77FEB51C5E, 0x2D72F65AC9D39E8A, 0xE10F942CEAD9C7EA, 0x36A5A27BE681CE7A, 0x1C500AA0D9A62F},
},
}

expPhiXr = ProjectivePoint{
X: Fp2Element{
A: FpElement{0x61B04752330F7FFF, 0x67F7FADAE5093E06, 0xB665F1E8F70118C6, 0x4F529F9BB30AE6A0, 0xD38E0FC09717C6D1, 0xB7886970ADE8584B, 0x73D66E118BAA193C, 0x4604C634755CFB},
B: FpElement{0x65CCBE0938AB5A99, 0x1F23B14E1548E3BC, 0x2A565624008051D8, 0xC45D118553BEA2E5, 0x7E2C027737E386EA, 0xF8EC1668C4C09CFB, 0x24CBE8F9D424021D, 0x62E99144A24A6},
},
Z: Fp2Element{
A: FpElement{0x71D9A198BB845CCA, 0xB2D0A8D2168F4399, 0x9C85368AF08AC7E1, 0x76D71A16B7F4B966, 0x60821CCED03DE7DB, 0x80D404686B651216, 0x8489AF1E2E14BF8E, 0x370781CDE810FE},
B: FpElement{0xB12EE10B6B80F65B, 0xC4C1CD99C671118D, 0xB84A2C8B2C153F37, 0x9170BAE0CE11B7A8, 0xF38DE8F9AF1BF991, 0x88612A07E7F7015A, 0x9611B2C68B94BC68, 0x5BCFB00EC5DE0},
},
}

phi.GenerateCurve(&xR)
resPhiXr = phi.EvaluatePoint(&xP3)

if !VartimeEqProjFp2(&expPhiXr, &resPhiXr) {
t.Error("\nExpected\n", expPhiXr.ToAffine(kCurveOps), "\nfound\n", resPhiXr.ToAffine(kCurveOps))
}
}

+ 335
- 0
p503/utils_test.go Parādīt failu

@@ -0,0 +1,335 @@
package p503

// Tools used for testing and debugging

import (
. "github.com/cloudflare/p751sidh/internal/isogeny"
"math/big"
"math/rand"
"reflect"
"testing/quick"
)

/* -------------------------------------------------------------------------
Underlying field configuration
-------------------------------------------------------------------------*/
var (
kFieldOps = FieldOperations()
kParams = &SidhParams{
Op: kFieldOps,
OneFp2: P503_OneFp2,
HalfFp2: P503_HalfFp2,
Bytelen: P503_Bytelen,
}
kCurveOps = &CurveOperations{Params: kParams}
)

/* -------------------------------------------------------------------------
Configure testing/quick
-------------------------------------------------------------------------*/
var (
quickCheckScaleFactor = uint8(3)
quickCheckConfig = &quick.Config{MaxCount: (1 << (12 + quickCheckScaleFactor))}
)

/* -------------------------------------------------------------------------
Structure used by tests
-------------------------------------------------------------------------*/
type GeneratedTestParams struct {
Point ProjectivePoint
Cparam ProjectiveCurveParameters
ExtElem Fp2Element
}

// A = 8752234765512331234913716743014562460822083005386252003333602919474238975785850965349950219277942402920758585086620525443539725921333735154674119646075*i + 6339624979889725406021454983012408976766782818694212228554611573314701271183857175866122275755278397694585249002282183018114967373119429936587424396917
var curve_A = Fp2Element{
A: FpElement{0xd9816986a543095f, 0xa78cb1d7217bec21, 0x9595dc97b74ea70, 0x9120a1da6b42797d, 0x59ef9d903f74e47c, 0x4c58a4cdc45b6d0b, 0x816d5213aaf7ee6d, 0x3892fee6bb7343},
B: FpElement{0x28c5288acbedf11b, 0x2143a438c86f6c68, 0x7cb5c4ae9c4c8e34, 0xb478aea445eed48b, 0x24d5c175776db478, 0x234582f8676c0ebe, 0x56234267b625fb08, 0x2c6e58d84b1192}}

// C = 10458464853790890798085664692909194316288127038910691163573355876336993883402795907795767791362493831987298578966325154262747805705783782806176495638177*i + 7770984753616185271325854825309278833018655051139367603077592443785629339985729818288672809062782315510526648882226172896710704020683893684611137718845
var curve_C = Fp2Element{
A: FpElement{0xe05948236f2f913b, 0xc45da9ad1219a255, 0x7a568972a32fc1d0, 0x30f00bdd7071c3b1, 0x3b761b8dac2c98bc, 0x760f21b2179737b6, 0x13217e6656a13476, 0x2606b798e685aa},
B: FpElement{0x1c0171f78820052e, 0x440b7f7087e57140, 0xe0510c07b31b0e96, 0xd0cf489b2ac4aea9, 0x4fb328f1c1fdf783, 0xb3b4912342951cb7, 0x70a4b64e81961c42, 0x33eed63cf07181}}

// x(P) = 9720237205826983370867050298878715935679372786589878620121159082290288918688002583435964840822877971257659901481591644347943354235932355923042390796255*i + 634577413124118560098123299804750904956499531431297942628887930019161512075536652691244843248133437326050395005054997679717801535474938466995392156605
var affine_xP = Fp2Element{
A: FpElement{0xb606d954d407faf2, 0x58a1ef6cd213a203, 0x9823b55033e62f7b, 0x59cafc060d5e25a1, 0x529685f1753526fc, 0xc2eac3d219989c7d, 0xc5e30c75dfd343a0, 0x378285adc968a0},
B: FpElement{0x6670f36db977b9da, 0xa07e2fdda5e1a7f0, 0xf367a7a722aed87d, 0x6c269e06d595cd10, 0x8379aa6092d87700, 0x57276ce3557ee7ae, 0xac8107bfbcd28993, 0x3d6f98869617a7}}

// x(Q) = 613162677562606602867371958793876971530136728660199185642812914351735322828980793298955764087721218995329689800176835576008483782305021671417330230966*i + 12939479853552958669415184882894789433224467828463058020095712989798268661016843892597050485554155971441665589419365957826417334087966365414056706471602
var affine_xQ = Fp2Element{
A: FpElement{0xd3d14533cb0db45c, 0xdaf10b9f5fb037cf, 0x9562c31985823562, 0xb79b75e2bf5635a5, 0x83d38fb1669c2d9, 0x5e67117a35a57cbd, 0x4b94ed6c3cbf54a4, 0x3f47706b62778d},
B: FpElement{0x1c766c0e7ed612d6, 0x2f3b42979e8efd86, 0xd82bac0006415ee7, 0x20cfe3bec0970042, 0x8f6628807e862bf9, 0xac4f82d13fddd9c5, 0x70b756e4bac1fa85, 0x350c02508e50dc}}

var affine_xPmQ = Fp2Element{
A: FpElement{0x7295ac0e8a5531c8, 0xc02afbef6cdf51a8, 0x84d0c1bb8d80624f, 0x26abbf06c61e814b, 0xada277883fbdae07, 0x63b6739db68df3a7, 0x3554670381bcfcc6, 0x33419be255bbc6},
B: FpElement{0xff9df35102da997a, 0xf9b920b2d8bd6210, 0x43d1514920e73bfb, 0x624c6fd6ef16da74, 0xeb535968ed0d1286, 0x9243e6ce29a636e6, 0x1849ed96cb7940e0, 0x1e4b495933b675}}

var affine_xP2 = Fp2Element{
A: FpElement{0x4e1133c2b3855902, 0x875a775c67597fbb, 0xd17eb74254141abb, 0x1d5a464a4f3391f5, 0x24405c332811d007, 0x7e47e3eb489a7372, 0x65b130dfd9efe605, 0xfa69fac179803},
B: FpElement{0x329f5322e1be51ee, 0x9004dca8132ebd6f, 0x7cd87e447ca8a7b6, 0x10a6ec02c38ce69e, 0x8cef2ed7d112ac46, 0x5f385a9fc4b57cd7, 0x68a366354fe7a32e, 0x2223c1455486ac}}

var affine_xP3 = Fp2Element{
A: FpElement{0x74a2894cccbe287d, 0xa50e3ec842e13fce, 0xd42ea4d3f1b7ad0b, 0xa4943d50d306f99e, 0xf83e9c0955b08c33, 0xffd8e313402b9380, 0x967b315db0b2e6e, 0x3a0945883df3b4},
B: FpElement{0xa9f610420a81c5ba, 0xbeb84b3ded2b4e75, 0x9fd6cea494470a70, 0x2fb0075e71900b0e, 0x63a0beb6abf3ca3d, 0xeb3e171798959f2e, 0x2209801eb702d40e, 0x36f8c4603e0fdb}}

var affine_xP4 = Fp2Element{
A: FpElement{0x4eb695d34b46be8f, 0xfb5e76c58585f2d2, 0xa41f8aafa6dbb531, 0x4db82f5db5cfd144, 0x14dab0e3200cbba0, 0x430381706a279f81, 0xdf6707a57161f81, 0x44740f17197c3},
B: FpElement{0xa2473705cdb6d4e9, 0xfa3cd67b9c15502c, 0xf0928166d0c5cee1, 0x6150aba0c874faaa, 0x6c0b18d6d92f9034, 0xcff71d340fc1e72e, 0x19a47027af917587, 0x25ed4bad443b8f}}

var affine_xP9 = Fp2Element{
A: FpElement{0x112da30e288217e0, 0x5b336d527320a5f7, 0xbbf4d9403b68e3c6, 0x55eccb31c40b359c, 0x8907129ab69b3203, 0x69cc8c750125a915, 0xa41a38e6f530c0e1, 0xbe68e23af1b8d},
B: FpElement{0x472c603765964213, 0xe4e64995b0769754, 0x4515583c74a6dd24, 0xff7c57f5818363a2, 0xbeaeb24662a92177, 0x8a54fa61fbf24c68, 0xa85542049eb45e12, 0x2b54caf655e285}}

// m = 3904534670189250445536401319770569077681088033069864532895
var mScalarBytes = [...]uint8{0x9f, 0x3b, 0xe7, 0xf9, 0xf4, 0x7c, 0xe6, 0xce, 0x79, 0x3e, 0x3d, 0x9f, 0x9f, 0x3b, 0xe7, 0xf9, 0xf4, 0x7c, 0xe6, 0xce, 0x79, 0x3e, 0x3d, 0x9f}

var affine_xaP = Fp2Element{
A: FpElement{0x100a82c2be58e28b, 0x70ee7b57f40d9103, 0xb9f21d6327411cbb, 0x976b2a65166591cb, 0x35435bd4614ca404, 0x15f862a9c6f51469, 0x14d9ccfe634f374a, 0x31234988b0766c},
B: FpElement{0x323a3a13113b35f8, 0xc949dad174586c8f, 0x1c5ed3b1263143c, 0x13ba9870c9b5bab8, 0x79fb89a31cfe7f19, 0xa8af6d4b5d947ed2, 0xcff00f80d7b67a56, 0xfdfcb136bff75}}

// Inputs for testing 3-point-ladder
var threePointLadderInputs = []ProjectivePoint{
// x(P)
ProjectivePoint{
X: Fp2Element{
A: FpElement{0x43941FA9244C059E, 0xD1F337D076941189, 0x6B6A8B3A8763C96A, 0x6DF569708D6C9482, 0x487EE5707A52F4AA, 0xDE396F6E2559689E, 0xE5EE3895A8991469, 0x2B0946695790A8},
B: FpElement{0xAB552C0FDAED092E, 0x7DF895E43E7DCB1C, 0x35C700E761920C4B, 0xCC5807DD70DC117A, 0x0884039A5A8DB18A, 0xD04620B3D0738052, 0xA200835605138F10, 0x3FF2E59B2FDC6A}},
Z: P503_OneFp2,
},
// x(Q)
ProjectivePoint{
X: Fp2Element{
A: FpElement{0x77015826982BA1FD, 0x44024489673471E4, 0x1CAA2A5F4D5DA63B, 0xA183C07E50738C01, 0x8B97782D4E1A0DE6, 0x9B819522FBC38280, 0x0BDA46A937FB7B8A, 0x3B3614305914DF},
B: FpElement{0xBF0366E97B3168D9, 0xAA522AC3879CEF0F, 0x0AF5EC975BD035C8, 0x1F26FEE7BBAC165C, 0xA0EE6A637724A6AB, 0xFB52101E36BA3A38, 0xD29CF5E376E17376, 0x1374A50DF57071}},
Z: P503_OneFp2,
},
// x(P-Q)
ProjectivePoint{
X: Fp2Element{
A: FpElement{0xD99279BBD41EA559, 0x35CF18E72F578214, 0x90473B1DC77F73E8, 0xBFFEA930B25D7F66, 0xFD558EA177B900B2, 0x7CFAD273A782A23E, 0x6B1F610822E0F611, 0x26D2D2EF9619B5},
B: FpElement{0x534F83651CBCC75D, 0x591FB4757AED5D08, 0x0B04353D40BED542, 0x829A94703AAC9139, 0x0F9C2E6D7663EB5B, 0x5D2D0F90C283F746, 0x34C872AA12A7676E, 0x0ECDB605FBFA16}},
Z: P503_OneFp2,
},
}
var curve = ProjectiveCurveParameters{A: curve_A, C: curve_C}

// prime p503
var p503BigIntPrime, _ = new(big.Int).SetString("13175843156907117380839252916199345042492186767578363998445663477035843932020761233518914911546024351608607150390087656982982306331019593961154237431807", 10)

/* -------------------------------------------------------------------------
Values used by benchmarking tools
-------------------------------------------------------------------------*/

// Package-level storage for this field element is intended to deter
// compiler optimizations.
var (
benchmarkFpElement FpElement
benchmarkFpElementX2 FpElementX2
bench_x = FpElement{17026702066521327207, 5108203422050077993, 10225396685796065916, 11153620995215874678, 6531160855165088358, 15302925148404145445, 1248821577836769963, 9789766903037985294, 7493111552032041328, 10838999828319306046, 18103257655515297935, 27403304611634}
bench_y = FpElement{4227467157325093378, 10699492810770426363, 13500940151395637365, 12966403950118934952, 16517692605450415877, 13647111148905630666, 14223628886152717087, 7167843152346903316, 15855377759596736571, 4300673881383687338, 6635288001920617779, 30486099554235}
bench_z = FpElementX2{1595347748594595712, 10854920567160033970, 16877102267020034574, 12435724995376660096, 3757940912203224231, 8251999420280413600, 3648859773438820227, 17622716832674727914, 11029567000887241528, 11216190007549447055, 17606662790980286987, 4720707159513626555, 12887743598335030915, 14954645239176589309, 14178817688915225254, 1191346797768989683, 12629157932334713723, 6348851952904485603, 16444232588597434895, 7809979927681678066, 14642637672942531613, 3092657597757640067, 10160361564485285723, 240071237}
)

/* -------------------------------------------------------------------------
Helpers
-------------------------------------------------------------------------*/

// Given xP = x(P), xQ = x(Q), and xPmQ = x(P-Q), compute xR = x(P+Q).
//
// Returns xR to allow chaining. Safe to overlap xP, xQ, xR.
func AddProjFp2(xP, xQ, xPmQ *ProjectivePoint) ProjectivePoint {
// Algorithm 1 of Costello-Smith.
var v0, v1, v2, v3, v4 Fp2Element
var xR ProjectivePoint
kFieldOps.Add(&v0, &xP.X, &xP.Z) // X_P + Z_P
kFieldOps.Sub(&v1, &xQ.X, &xQ.Z)
kFieldOps.Mul(&v1, &v1, &v0) // (X_Q - Z_Q)(X_P + Z_P)
kFieldOps.Sub(&v0, &xP.X, &xP.Z) // X_P - Z_P
kFieldOps.Add(&v2, &xQ.X, &xQ.Z)
kFieldOps.Mul(&v2, &v2, &v0) // (X_Q + Z_Q)(X_P - Z_P)
kFieldOps.Add(&v3, &v1, &v2)
kFieldOps.Square(&v3, &v3) // 4(X_Q X_P - Z_Q Z_P)^2
kFieldOps.Sub(&v4, &v1, &v2)
kFieldOps.Square(&v4, &v4) // 4(X_Q Z_P - Z_Q X_P)^2
kFieldOps.Mul(&v0, &xPmQ.Z, &v3) // 4X_{P-Q}(X_Q X_P - Z_Q Z_P)^2
kFieldOps.Mul(&xR.Z, &xPmQ.X, &v4) // 4Z_{P-Q}(X_Q Z_P - Z_Q X_P)^2
xR.X = v0
return xR
}

// Given xP = x(P) and cached curve parameters Aplus2C = A + 2*C, C4 = 4*C,
// compute xQ = x([2]P).
//
// Returns xQ to allow chaining. Safe to overlap xP, xQ.
func DoubleProjFp2(xP *ProjectivePoint, Aplus2C, C4 *Fp2Element) ProjectivePoint {
// Algorithm 2 of Costello-Smith, amended to work with projective curve coefficients.
var v1, v2, v3, xz4 Fp2Element
var xQ ProjectivePoint
kFieldOps.Add(&v1, &xP.X, &xP.Z) // (X+Z)^2
kFieldOps.Square(&v1, &v1)
kFieldOps.Sub(&v2, &xP.X, &xP.Z) // (X-Z)^2
kFieldOps.Square(&v2, &v2)
kFieldOps.Sub(&xz4, &v1, &v2) // 4XZ = (X+Z)^2 - (X-Z)^2
kFieldOps.Mul(&v2, &v2, C4) // 4C(X-Z)^2
kFieldOps.Mul(&xQ.X, &v1, &v2) // 4C(X+Z)^2(X-Z)^2
kFieldOps.Mul(&v3, &xz4, Aplus2C) // 4XZ(A + 2C)
kFieldOps.Add(&v3, &v3, &v2) // 4XZ(A + 2C) + 4C(X-Z)^2
kFieldOps.Mul(&xQ.Z, &v3, &xz4) // (4XZ(A + 2C) + 4C(X-Z)^2)4XZ
// Now (xQ.x : xQ.z)
// = (4C(X+Z)^2(X-Z)^2 : (4XZ(A + 2C) + 4C(X-Z)^2)4XZ )
// = ((X+Z)^2(X-Z)^2 : (4XZ((A + 2C)/4C) + (X-Z)^2)4XZ )
// = ((X+Z)^2(X-Z)^2 : (4XZ((a + 2)/4) + (X-Z)^2)4XZ )
return xQ
}

// Given x(P) and a scalar m in little-endian bytes, compute x([m]P) using the
// Montgomery ladder. This is described in Algorithm 8 of Costello-Smith.
//
// This function's execution time is dependent only on the byte-length of the
// input scalar. All scalars of the same input length execute in uniform time.
// The scalar can be padded with zero bytes to ensure a uniform length.
//
// Safe to overlap the source with the destination.
func ScalarMult(curve *ProjectiveCurveParameters, xP *ProjectivePoint, scalar []uint8) ProjectivePoint {
var x0, x1, tmp ProjectivePoint
var Aplus2C, C4 Fp2Element

kFieldOps.Add(&Aplus2C, &curve.C, &curve.C) // = 2*C
kFieldOps.Add(&C4, &Aplus2C, &Aplus2C) // = 4*C
kFieldOps.Add(&Aplus2C, &Aplus2C, &curve.A) // = 2*C + A

x0.X = P503_OneFp2
x1 = *xP

// Iterate over the bits of the scalar, top to bottom
prevBit := uint8(0)
for i := len(scalar) - 1; i >= 0; i-- {
scalarByte := scalar[i]
for j := 7; j >= 0; j-- {
bit := (scalarByte >> uint(j)) & 0x1
kCurveOps.Params.Op.CondSwap(&x0.X, &x0.Z, &x1.X, &x1.Z, (bit ^ prevBit))
//sProjectivePointConditionalSwap(&x0, &x1, (bit ^ prevBit))
tmp = DoubleProjFp2(&x0, &Aplus2C, &C4)
x1 = AddProjFp2(&x0, &x1, xP)
x0 = tmp
prevBit = bit
}
}
// now prevBit is the lowest bit of the scalar
kCurveOps.Params.Op.CondSwap(&x0.X, &x0.Z, &x1.X, &x1.Z, prevBit)
return x0
}

// Returns true if lhs = rhs. Takes variable time.
func VartimeEqFp2(lhs, rhs *Fp2Element) bool {
a := *lhs
b := *rhs

fp503StrongReduce(&a.A)
fp503StrongReduce(&a.B)
fp503StrongReduce(&b.A)
fp503StrongReduce(&b.B)

eq := true
for i := 0; i < len(a.A) && eq; i++ {
eq = eq && (a.A[i] == b.A[i])
eq = eq && (a.B[i] == b.B[i])
}
return eq
}

// Returns true if lhs = rhs. Takes variable time.
func VartimeEqProjFp2(lhs, rhs *ProjectivePoint) bool {
var t0, t1 Fp2Element
kFieldOps.Mul(&t0, &lhs.X, &rhs.Z)
kFieldOps.Mul(&t1, &lhs.Z, &rhs.X)
return VartimeEqFp2(&t0, &t1)
}

func (GeneratedTestParams) generateFp2p503(rand *rand.Rand) Fp2Element {
// Generation strategy: low limbs taken from [0,2^64); high limb
// taken from smaller range
//
// Size hint is ignored since all elements are fixed size.
//
// Field elements taken in range [0,2p). Emulate this by capping
// the high limb by the top digit of 2*p-1:
//
// sage: (2*p-1).digits(2^64)[-1]
// 36255204122967100
//
// This still allows generating values >= 2p, but hopefully that
// excess is OK (and if it's not, we'll find out, because it's for
// testing...)
//
highLimb := rand.Uint64() % 36255204122967100
fpElementGen := func() FpElement {
return FpElement{
rand.Uint64(),
rand.Uint64(),
rand.Uint64(),
rand.Uint64(),
rand.Uint64(),
rand.Uint64(),
rand.Uint64(),
highLimb,
}
}
return Fp2Element{A: fpElementGen(), B: fpElementGen()}
}

func (c GeneratedTestParams) Generate(rand *rand.Rand, size int) reflect.Value {
return reflect.ValueOf(
GeneratedTestParams{
ProjectivePoint{
X: c.generateFp2p503(rand),
Z: c.generateFp2p503(rand),
},
ProjectiveCurveParameters{
A: c.generateFp2p503(rand),
C: c.generateFp2p503(rand),
},
c.generateFp2p503(rand),
})
}

func (x primeFieldElement) Generate(rand *rand.Rand, size int) reflect.Value {
return reflect.ValueOf(primeFieldElement{A: new(GeneratedTestParams).generateFp2p503(rand).A})
}

// Convert an FpElement to a big.Int for testing. Because this is only
// for testing, no big.Int to FpElement conversion is provided.
func radix64ToBigInt(x []uint64) *big.Int {
radix := new(big.Int)
// 2^64
radix.UnmarshalText(([]byte)("18446744073709551616"))

base := new(big.Int).SetUint64(1)
val := new(big.Int).SetUint64(0)
tmp := new(big.Int)

for _, xi := range x {
tmp.SetUint64(xi)
tmp.Mul(tmp, base)
val.Add(val, tmp)
base.Mul(base, radix)
}

return val
}

func toBigInt(x *FpElement) *big.Int {
// Convert from Montgomery form
return toBigIntFromMontgomeryForm(x)
}

func toBigIntFromMontgomeryForm(x *FpElement) *big.Int {
// Convert from Montgomery form
a := FpElement{}
aR := FpElementX2{}
copy(aR[:], x[:]) // = a*R
fp503MontgomeryReduce(&a, &aR) // = a mod p in [0,2p)
fp503StrongReduce(&a) // = a mod p in [0,p)
return radix64ToBigInt(a[:])
}

+ 1
- 0
p751/isogeny_test.go Parādīt failu

@@ -9,6 +9,7 @@ func TestFourIsogenyVersusSage(t *testing.T) {
var xR, xP4, resPhiXr, expPhiXr ProjectivePoint
var phi = Newisogeny4(kFieldOps)

// TODO: The sage code needs to be aligned to SIDHv3
// sage: p = 2^372 * 3^239 - 1; Fp = GF(p)
// sage: R.<x> = Fp[]
// sage: Fp2 = Fp.extension(x^2 + 1, 'i')


+ 31
- 0
sidh/params.go Parādīt failu

@@ -1,6 +1,7 @@
package sidh

import (
p503 "github.com/cloudflare/p751sidh/p503"
p751 "github.com/cloudflare/p751sidh/p751"
. "github.com/cloudflare/p751sidh/internal/isogeny"
)
@@ -18,6 +19,35 @@ func Params(id PrimeFieldId) *SidhParams {
}

func init() {
p503 := SidhParams{
Id: FP_503,
PublicKeySize: p503.P503_PublicKeySize,
SharedSecretSize: p503.P503_SharedSecretSize,
A: DomainParams{
Affine_P: p503.P503_affine_PA,
Affine_Q: p503.P503_affine_QA,
Affine_R: p503.P503_affine_RA,
SecretBitLen: p503.P503_SecretBitLenA,
SecretByteLen: uint((p503.P503_SecretBitLenA+7)/8),
IsogenyStrategy: p503.P503_AliceIsogenyStrategy[:],
},
B: DomainParams{
Affine_P: p503.P503_affine_PB,
Affine_Q: p503.P503_affine_QB,
Affine_R: p503.P503_affine_RB,
SecretBitLen: p503.P503_SecretBitLenB,
SecretByteLen: uint((p503.P503_SecretBitLenB+7)/8),
IsogenyStrategy: p503.P503_BobIsogenyStrategy[:],
},
OneFp2: p503.P503_OneFp2,
HalfFp2: p503.P503_HalfFp2,
MsgLen: 24,
// SIKEp751 provides 128 bit of classical security ([SIKE], 5.1)
KemSize: 16,
Bytelen: p503.P503_Bytelen,
Op: p503.FieldOperations(),
}

p751 := SidhParams{
Id: FP_751,
PublicKeySize: p751.P751_PublicKeySize,
@@ -47,5 +77,6 @@ func init() {
Op: p751.FieldOperations(),
}

sidhParams[FP_503] = p503
sidhParams[FP_751] = p751
}

+ 220
- 104
sidh/sidh_test.go Parādīt failu

@@ -4,57 +4,95 @@ import (
"bytes"
"crypto/rand"
"encoding/hex"
"fmt"
"math/big"
"testing"

. "github.com/cloudflare/p751sidh/internal/isogeny"
)

const (
// PrA - Alice's Private Key: 2*randint(0,2^371)
PrA = "C09957CC83045FB4C3726384D784476ACB6FFD92E5B15B3C2D451BA063F1BD4CED8FBCF682A98DD0954D3" +
"7BCAF730E"
// PrB - Bob's Private Key: 3*randint(0,3^238)
PrB = "393E8510E78A16D2DC1AACA9C9D17E7E78DB630881D8599C7040D05BB5557ECAE8165C45D5366ECB37B00" +
"969740AF201"
PkA = "74D8EF08CB74EC99BF08B6FBE4FB3D048873B67F018E44988B9D70C564D058401D20E093C7DF0C66F022C" +
"823E5139D2EA0EE137804B4820E950B046A90B0597759A0B6A197C56270128EA089FA1A2007DDE3430B37" +
"A3E6350BD47B7F513863741C125FA63DEDAFC475C13DB59E533055B7CBE4B2F32672DF2DF97E03E29617B" +
"0E9B6A35B58ABB26527A721142701EB147C7050E1D9125DA577B08CD51C8BB50627B8B47FACFC9C7C07DD" +
"00DD75115DD83719FD5F96115DED23ECAA50B1044C6BF3F27442DA284BA4A272D850F414FB185801BF2EF" +
"7E628EDB5643E35694B992CF30A2C5120CAF9434F09ACFCA3645B3FFC3A308901FAC7B8955FD5C98576AE" +
"FD03F5806CB7430F75B3431B75BEC080596ABCA26E637E6E8D4C25175A8C052C9CBE77900A863F83FAB00" +
"95B32D9C3858EF8A35B9F163D429E71DBA47539EB4791D117FE39DDE94EA7801A42DB12D84DE4740ACF51" +
"CD7C32BB854569D7D94E11E69D9663CC7ED02E78CF48F4069DF3D3E86198B307095C6B11D46C0DC849F9D" +
"94C7693209E5B3848AFAA6DA6A8D73362D779CBC43515902ED2BCE3A748C537DE2FCF092FD3E91B790AF5" +
"4E1092C5E5B89BE5BE23B955A52F769D97277EF69F820109042F28C316AC90AE69EB374C9280300B816E6" +
"2494B2E01072D1CA96E4B284D2BE1368D6969744B614FACBC8C165864E26E33481D4FDC47B6E523954A25" +
"C1A096A37CD23FB81AE64FB11BD0A439609F1CE40673B06DD96F698A910E935219D840F3D411EDFB00D98" +
"065AB9868C32D3DA05FF415"
PkB = "F6C260C4141E418457CB442E11F0F5558375437576E55D211D19EF83E2839E51D07A82765D8E7B6366FA7" +
"0B56CDE3AD3B629ACF542A433369496EDA51EDFBE16EFA1B8DEE1CE46B37820ECBD0CD674AACD4F21FABC" +
"2436651E3AF604356FF3EB2CA87976890E34A56FAEC9A2ACD9559B1BB67B69AC1A521342E1E787DA5D709" +
"32B0F5842ECA1C99B269DB6C2ED8397F0FC49F114CF8B5AF327A698C0251575CDD1D67732668109A91A3B" +
"FA5B47D413C7FAB8817FCBEBFE9BDD9C0B1F3B1934A7028A65233E8B58A92E7E9F66B68B2057ECBF7E44A" +
"0EF6EFCC3C8AA5414E100FA0C24F7545324AD17062FC11377A2A4749DEE27E192460E099DBDA8E840EA11" +
"AD9D5C83DF065AF77030E7FE18CE24CFC71D356B9B9601811B93676C12CB6B41747133D5259E7A20CC065" +
"FAB99DF944FDB34ABB9A374F9E9CC8F9C186BD2181DC2771F69C02629C3E4801A7E7C21F6F3CFF7D257E2" +
"257C88C015F0CC8DC0E7FB3373CF4ED6A786AB329E7F16895CA147AD91F6EAE1DFE38116580DF52381599" +
"E4246278CB1848FE4A56ABF98652E9E7C2E681551A3D78FA033D932087D8B6567D779A56B726B153033D7" +
"2231A1B5C16ED7DC4458308D6B64AF6723CC0F52C94E04C58FCA9739E890AA40CC05E22321F10129D2B59" +
"1F317102034C109A56D711591E5B44C717CFC9C9B9461894767CAFA42D2B394194B03999C2A9EF48868F3" +
"FB03D1A40F596613AF97F4ED7643A1C2D12692E959C6DEB8E72403ADC0E42204DBCE5056EEF0CC60B0C6E" +
"83B8B55AC01F6C85644EE49"
)

var params *SidhParams

// Use init() function to initialize params in order to avoid
// static initialization order fiasco.
func init() {
params = Params(FP_751)
/* -------------------------------------------------------------------------
Test data
-------------------------------------------------------------------------*/
var tdata = map[PrimeFieldId]struct{
name string
PkA string
PrA string
PkB string
PrB string
}{
FP_503: {
name: "P-503",
PrA:"B0AD510708F4ABCF3E0D97DC2F2FF112D9D2AAE49D97FFD1E4267F21C6E71C03",
PrB:"A885A8B889520A6DBAD9FB33365E5B77FDED629440A16A533F259A510F63A822",
PkA:"A6BADBA04518A924B20046B59AC197DCDF0EA48014C9E228C4994CCA432F360E" +
"2D527AFB06CA7C96EE5CEE19BAD53BF9218A3961CAD7EC092BD8D9EBB22A3D51" +
"33008895A3F1F6A023F91E0FE06A00A622FD6335DAC107F8EC4283DC2632F080" +
"4E64B390DAD8A2572F1947C67FDF4F8787D140CE2C6B24E752DA9A195040EDFA" +
"C27333FAE97DBDEB41DA9EEB2DB067AE7DA8C58C0EF57AEFC18A3D6BD0576FF2" +
"F1CFCAEC50C958331BF631F3D2E769790C7B6DF282B74BBC02998AD10F291D47" +
"C5A762FF84253D3B3278BDF20C8D4D4AA317BE401B884E26A1F02C7308AADB68" +
"20EBDB0D339F5A63346F3B40CACED72F544DAF51566C6E807D0E6E1E38514342" +
"432661DC9564DA07548570E256688CD9E8060D8775F95D501886D958588CACA0" +
"9F2D2AE1913F996E76AF63E31A179A7A7D2A46EDA03B2BCCF9020A5AA15F9A28" +
"9340B33F3AE7F97360D45F8AE1B9DD48779A57E8C45B50A02C00349CD1C58C55" +
"1D68BC2A75EAFED944E8C599C288037181E997471352E24C952B",
PkB: "244AF1F367C2C33912750A98497CC8214BC195BD52BD76513D32ACE4B75E31F0" +
"281755C265F5565C74E3C04182B9C244071859C8588CC7F09547CEFF8F7705D2" +
"60CE87D6BFF914EE7DBE4B9AF051CA420062EEBDF043AF58184495026949B068" +
"98A47046BFAE8DF3B447746184AF550553BB5D266D6E1967ACA33CAC5F399F90" +
"360D70867F2C71EF6F94FF915C7DA8BC9549FB7656E691DAEFC93CF56876E482" +
"CA2F8BE2D6CDCC374C31AD8833CABE997CC92305F38497BEC4DFD1821B004FEC" +
"E16448F9A24F965EFE409A8939EEA671633D9FFCF961283E59B8834BDF7EDDB3" +
"05D6275B61DA6692325432A0BAA074FC7C1F51E76208AB193A57520D40A76334" +
"EE5712BDC3E1EFB6103966F2329EDFF63082C4DFCDF6BE1C5A048630B81871B8" +
"83B735748A8FD4E2D9530C272163AB18105B10015CA7456202FE1C9B92CEB167" +
"5EAE1132E582C88E47ED87B363D45F05BEA714D5E9933D7AF4071CBB5D49008F" +
"3E3DAD7DFF935EE509D5DE561842B678CCEB133D62E270E9AC3E",
},
FP_751: {
name: "P-751",
// PrA - Alice's Private Key: 2*randint(0,2^371)
PrA:"C09957CC83045FB4C3726384D784476ACB6FFD92E5B15B3C2D451BA063F1BD4CED8FBCF682A98DD0954D3" +
"7BCAF730E",
// PrB - Bob's Private Key: 3*randint(0,3^238)
PrB:"393E8510E78A16D2DC1AACA9C9D17E7E78DB630881D8599C7040D05BB5557ECAE8165C45D5366ECB37B00" +
"969740AF201",
PkA:"74D8EF08CB74EC99BF08B6FBE4FB3D048873B67F018E44988B9D70C564D058401D20E093C7DF0C66F022C" +
"823E5139D2EA0EE137804B4820E950B046A90B0597759A0B6A197C56270128EA089FA1A2007DDE3430B37" +
"A3E6350BD47B7F513863741C125FA63DEDAFC475C13DB59E533055B7CBE4B2F32672DF2DF97E03E29617B" +
"0E9B6A35B58ABB26527A721142701EB147C7050E1D9125DA577B08CD51C8BB50627B8B47FACFC9C7C07DD" +
"00DD75115DD83719FD5F96115DED23ECAA50B1044C6BF3F27442DA284BA4A272D850F414FB185801BF2EF" +
"7E628EDB5643E35694B992CF30A2C5120CAF9434F09ACFCA3645B3FFC3A308901FAC7B8955FD5C98576AE" +
"FD03F5806CB7430F75B3431B75BEC080596ABCA26E637E6E8D4C25175A8C052C9CBE77900A863F83FAB00" +
"95B32D9C3858EF8A35B9F163D429E71DBA47539EB4791D117FE39DDE94EA7801A42DB12D84DE4740ACF51" +
"CD7C32BB854569D7D94E11E69D9663CC7ED02E78CF48F4069DF3D3E86198B307095C6B11D46C0DC849F9D" +
"94C7693209E5B3848AFAA6DA6A8D73362D779CBC43515902ED2BCE3A748C537DE2FCF092FD3E91B790AF5" +
"4E1092C5E5B89BE5BE23B955A52F769D97277EF69F820109042F28C316AC90AE69EB374C9280300B816E6" +
"2494B2E01072D1CA96E4B284D2BE1368D6969744B614FACBC8C165864E26E33481D4FDC47B6E523954A25" +
"C1A096A37CD23FB81AE64FB11BD0A439609F1CE40673B06DD96F698A910E935219D840F3D411EDFB00D98" +
"065AB9868C32D3DA05FF415",
PkB: "F6C260C4141E418457CB442E11F0F5558375437576E55D211D19EF83E2839E51D07A82765D8E7B6366FA7" +
"0B56CDE3AD3B629ACF542A433369496EDA51EDFBE16EFA1B8DEE1CE46B37820ECBD0CD674AACD4F21FABC" +
"2436651E3AF604356FF3EB2CA87976890E34A56FAEC9A2ACD9559B1BB67B69AC1A521342E1E787DA5D709" +
"32B0F5842ECA1C99B269DB6C2ED8397F0FC49F114CF8B5AF327A698C0251575CDD1D67732668109A91A3B" +
"FA5B47D413C7FAB8817FCBEBFE9BDD9C0B1F3B1934A7028A65233E8B58A92E7E9F66B68B2057ECBF7E44A" +
"0EF6EFCC3C8AA5414E100FA0C24F7545324AD17062FC11377A2A4749DEE27E192460E099DBDA8E840EA11" +
"AD9D5C83DF065AF77030E7FE18CE24CFC71D356B9B9601811B93676C12CB6B41747133D5259E7A20CC065" +
"FAB99DF944FDB34ABB9A374F9E9CC8F9C186BD2181DC2771F69C02629C3E4801A7E7C21F6F3CFF7D257E2" +
"257C88C015F0CC8DC0E7FB3373CF4ED6A786AB329E7F16895CA147AD91F6EAE1DFE38116580DF52381599" +
"E4246278CB1848FE4A56ABF98652E9E7C2E681551A3D78FA033D932087D8B6567D779A56B726B153033D7" +
"2231A1B5C16ED7DC4458308D6B64AF6723CC0F52C94E04C58FCA9739E890AA40CC05E22321F10129D2B59" +
"1F317102034C109A56D711591E5B44C717CFC9C9B9461894767CAFA42D2B394194B03999C2A9EF48868F3" +
"FB03D1A40F596613AF97F4ED7643A1C2D12692E959C6DEB8E72403ADC0E42204DBCE5056EEF0CC60B0C6E" +
"83B8B55AC01F6C85644EE49",
},
}


/* -------------------------------------------------------------------------
Helpers
-------------------------------------------------------------------------*/
// Fail if err !=nil. Display msg as an error message
func checkErr(t testing.TB, err error, msg string) {
if err != nil {
@@ -62,9 +100,18 @@ func checkErr(t testing.TB, err error, msg string) {
}
}

// Utility used for running same test with all registered prime fields
type MultiIdTestingFunc func(testing.TB, PrimeFieldId)
func Do(f MultiIdTestingFunc, t testing.TB) {
for id,val:=range(tdata) {
fmt.Printf("\tTesting: %s\n", val.name)
f(t, id)
}
}

// Converts string to private key
func convToPrv(s string, v KeyVariant) *PrivateKey {
key := NewPrivateKey(params.Id, v)
func convToPrv(s string, v KeyVariant, id PrimeFieldId) *PrivateKey {
key := NewPrivateKey(id, v)
hex, e := hex.DecodeString(s)
if e != nil {
panic("non-hex number provided")
@@ -77,8 +124,8 @@ func convToPrv(s string, v KeyVariant) *PrivateKey {
}

// Converts string to public key
func convToPub(s string, v KeyVariant) *PublicKey {
key := NewPublicKey(params.Id, v)
func convToPub(s string, v KeyVariant, id PrimeFieldId) *PublicKey {
key := NewPublicKey(id, v)
hex, e := hex.DecodeString(s)
if e != nil {
panic("non-hex number provided")
@@ -90,11 +137,14 @@ func convToPub(s string, v KeyVariant) *PublicKey {
return key
}

func testKeygen(s *SidhParams, t *testing.T) {
alicePrivate := convToPrv(PrA, KeyVariant_SIDH_A)
bobPrivate := convToPrv(PrB, KeyVariant_SIDH_B)
expPubA := convToPub(PkA, KeyVariant_SIDH_A)
expPubB := convToPub(PkB, KeyVariant_SIDH_B)
/* -------------------------------------------------------------------------
Unit tests
-------------------------------------------------------------------------*/
func testKeygen(t testing.TB, id PrimeFieldId) {
alicePrivate := convToPrv(tdata[id].PrA, KeyVariant_SIDH_A, id)
bobPrivate := convToPrv(tdata[id].PrB, KeyVariant_SIDH_B, id)
expPubA := convToPub(tdata[id].PkA, KeyVariant_SIDH_A, id)
expPubB := convToPub(tdata[id].PkB, KeyVariant_SIDH_B, id)

pubA := alicePrivate.GeneratePublicKey()
pubB := bobPrivate.GeneratePublicKey()
@@ -107,11 +157,11 @@ func testKeygen(s *SidhParams, t *testing.T) {
}
}

func testRoundtrip(s *SidhParams, t *testing.T) {
func testRoundtrip(t testing.TB, id PrimeFieldId) {
var err error

prvA := NewPrivateKey(params.Id, KeyVariant_SIDH_A)
prvB := NewPrivateKey(params.Id, KeyVariant_SIDH_B)
prvA := NewPrivateKey(id, KeyVariant_SIDH_A)
prvB := NewPrivateKey(id, KeyVariant_SIDH_B)

// Generate private keys
err = prvA.Generate(rand.Reader)
@@ -135,14 +185,14 @@ func testRoundtrip(s *SidhParams, t *testing.T) {
}
}

func testKeyAgreement(s *SidhParams, t testing.TB, pkA, pkB, prA, prB string) {
func testKeyAgreement(t testing.TB, id PrimeFieldId, pkA, prA, pkB, prB string) {
var e error

// KeyPairs
alicePublic := convToPub(pkA, KeyVariant_SIDH_A)
bobPublic := convToPub(pkB, KeyVariant_SIDH_B)
alicePrivate := convToPrv(prA, KeyVariant_SIDH_A)
bobPrivate := convToPrv(prB, KeyVariant_SIDH_B)
alicePublic := convToPub(pkA, KeyVariant_SIDH_A, id)
bobPublic := convToPub(pkB, KeyVariant_SIDH_B, id)
alicePrivate:= convToPrv(prA, KeyVariant_SIDH_A, id)
bobPrivate := convToPrv(prB, KeyVariant_SIDH_B, id)

// Do actual test
s1, e := DeriveSecret(bobPrivate, alicePublic)
@@ -155,7 +205,7 @@ func testKeyAgreement(s *SidhParams, t testing.TB, pkA, pkB, prA, prB string) {
}

// Negative case
dec, e := hex.DecodeString(PkA)
dec, e := hex.DecodeString(tdata[id].PkA)
if e != nil {
t.FailNow()
}
@@ -175,38 +225,19 @@ func testKeyAgreement(s *SidhParams, t testing.TB, pkA, pkB, prA, prB string) {
}
}

func TestKeygenP751(t *testing.T) {
testKeygen(Params(FP_751), t)
}

func TestKeyAgreementP751(t *testing.T) {
testKeyAgreement(Params(FP_751), t, PkA, PkB, PrA, PrB)
}

func TestRoundtripP751(t *testing.T) {
testRoundtrip(Params(FP_751), t)
}

func TestKeyAgreementP751_AliceEvenNumber(t *testing.T) {
// even alice
prE := "C09957CC83045FB4C3726384D784476ACB6FFD92E5B15B3C2D451BA063F1BD4CED8FBCF682A98DD0954D37BCAF730F"
pkE := "8A2DE6FD963C475F7829B689C8B8306FC0917A39EBBC35CA171546269A85698FEC0379E2E1A3C567BE1B8EF5639F81F304889737E6CC444DBED4579DB204DC8C7928F5CBB1ECDD682A1B5C48C0DAF34208C06BF201BE4E6063B1BFDC42413B0537F8E76BEE645C1A24118301BAB17EB8D6E0F283BCB16EFB833E4BB3463953C93165A0DDAC55B385059F27FF7228486D0A733812C81C792BE9EC3A16A5DB0EB099EEA76AC0E59612251A3AD19F7CC567DA2AEBD7733171F48E471D17648692355164E27B515D2A47D7BA34B3B48A047BE7C09C4ABEE2FCC9ACA7396C8A8C9E73E29533FC7369094DFA7988778E55E53F309922C6E233F8F9C7936C3D29CEA640406FCA06450AA1978FF39F227BF06B1E072F1763447C6F513B23CDF3B0EC0379070AEE5A02D9AD8E0EB023461D631F4A9643A4C79921334945F6B33DDFC11D9703BD06B047B4DA404AB12EFD2C3A49E5C42D10DA063352748B21DE41C32A5693FE1C0DCAB111F4990CD58BECADB1892EE7A7E99C9DB4DA4E69C96E57138B99038BC9B877ECE75914EFB98DD08B9E4A2DCCB948A8F7D2F26678A9952BA0EFAB1E9CF6E51B557480DEC2BA30DE0FE4AFE30A6B30765EE75EF64F678316D81C72755AD2CFA0B8C7706B07BFA52FBC3DB84EF9E79796C0089305B1E13C78660779E0FF2A13820CE141104F976B1678990F85B2D3D2B89CD5BC4DD52603A5D24D3EFEDA44BAA0F38CDB75A220AF45EAB70F2799875D435CE50FC6315EDD4BB7AA7260AFD7CD0561B69B4FA3A817904322661C3108DA24"
testKeyAgreement(Params(FP_751), t, pkE, PkB, prE, PrB)
}

func TestImportExport(t *testing.T) {
func testImportExport(t testing.TB, id PrimeFieldId) {
var err error
a := NewPublicKey(params.Id, KeyVariant_SIDH_A)
b := NewPublicKey(params.Id, KeyVariant_SIDH_B)
a := NewPublicKey(id, KeyVariant_SIDH_A)
b := NewPublicKey(id, KeyVariant_SIDH_B)

// Import keys
a_hex, err := hex.DecodeString(PkA)
a_hex, err := hex.DecodeString(tdata[id].PkA)
checkErr(t, err, "invalid hex-number provided")

err = a.Import(a_hex)
checkErr(t, err, "import failed")

b_hex, err := hex.DecodeString(PkB)
b_hex, err := hex.DecodeString(tdata[id].PkB)
checkErr(t, err, "invalid hex-number provided")

err = b.Import(b_hex)
@@ -260,12 +291,50 @@ func testPrivateKeyBelowMax(t testing.TB, id PrimeFieldId) {
}
}

func BenchmarkSidhKeyAgreement(b *testing.B) {
func TestKeyAgreement(t *testing.T) {
for id,val:=range(tdata) {
fmt.Printf("\tTesting: %s\n", val.name)
testKeyAgreement(t, id, tdata[id].PkA, tdata[id].PrA, tdata[id].PkB, tdata[id].PrB)
}
}

func TestKeyAgreementP751_AliceEvenNumber(t *testing.T) {
// even alice
prE := "C09957CC83045FB4C3726384D784476ACB6FFD92E5B15B3C2D451BA063F1BD4CED8FBCF682A98DD0954D37BCAF730F"
pkE := "8A2DE6FD963C475F7829B689C8B8306FC0917A39EBBC35CA171546269A85698FEC0379E2E1A3C567BE1B8EF5639F81F304889737E6CC444DBED4579DB204DC8C7928F5CBB1ECDD682A1B5C48C0DAF34208C06BF201BE4E6063B1BFDC42413B0537F8E76BEE645C1A24118301BAB17EB8D6E0F283BCB16EFB833E4BB3463953C93165A0DDAC55B385059F27FF7228486D0A733812C81C792BE9EC3A16A5DB0EB099EEA76AC0E59612251A3AD19F7CC567DA2AEBD7733171F48E471D17648692355164E27B515D2A47D7BA34B3B48A047BE7C09C4ABEE2FCC9ACA7396C8A8C9E73E29533FC7369094DFA7988778E55E53F309922C6E233F8F9C7936C3D29CEA640406FCA06450AA1978FF39F227BF06B1E072F1763447C6F513B23CDF3B0EC0379070AEE5A02D9AD8E0EB023461D631F4A9643A4C79921334945F6B33DDFC11D9703BD06B047B4DA404AB12EFD2C3A49E5C42D10DA063352748B21DE41C32A5693FE1C0DCAB111F4990CD58BECADB1892EE7A7E99C9DB4DA4E69C96E57138B99038BC9B877ECE75914EFB98DD08B9E4A2DCCB948A8F7D2F26678A9952BA0EFAB1E9CF6E51B557480DEC2BA30DE0FE4AFE30A6B30765EE75EF64F678316D81C72755AD2CFA0B8C7706B07BFA52FBC3DB84EF9E79796C0089305B1E13C78660779E0FF2A13820CE141104F976B1678990F85B2D3D2B89CD5BC4DD52603A5D24D3EFEDA44BAA0F38CDB75A220AF45EAB70F2799875D435CE50FC6315EDD4BB7AA7260AFD7CD0561B69B4FA3A817904322661C3108DA24"
testKeyAgreement(t, FP_751, pkE, prE, tdata[FP_751].PkB, tdata[FP_751].PrB)
}

/* -------------------------------------------------------------------------
Wrappers for 'testing' module
-------------------------------------------------------------------------*/
func TestKeygen(t *testing.T) {Do(testKeygen, t)}
func TestRoundtrip(t *testing.T) {Do(testRoundtrip, t)}
func TestImportExport(t *testing.T) {Do(testImportExport, t)}

/* -------------------------------------------------------------------------
Benchmarking
-------------------------------------------------------------------------*/
func BenchmarkSidhKeyAgreementP751(b *testing.B) {
// KeyPairs
alicePublic := convToPub(tdata[FP_751].PkA, KeyVariant_SIDH_A, FP_751)
bobPublic := convToPub(tdata[FP_751].PkB, KeyVariant_SIDH_B, FP_751)
alicePrivate := convToPrv(tdata[FP_751].PrA, KeyVariant_SIDH_A, FP_751)
bobPrivate := convToPrv(tdata[FP_751].PrB, KeyVariant_SIDH_B, FP_751)

for i := 0; i < b.N; i++ {
// Derive shared secret
DeriveSecret(bobPrivate, alicePublic)
DeriveSecret(alicePrivate, bobPublic)
}
}

func BenchmarkSidhKeyAgreementP503(b *testing.B) {
// KeyPairs
alicePublic := convToPub(PkA, KeyVariant_SIDH_A)
bobPublic := convToPub(PkB, KeyVariant_SIDH_B)
alicePrivate := convToPrv(PrA, KeyVariant_SIDH_A)
bobPrivate := convToPrv(PrB, KeyVariant_SIDH_B)
alicePublic := convToPub(tdata[FP_503].PkA, KeyVariant_SIDH_A, FP_503)
bobPublic := convToPub(tdata[FP_503].PkB, KeyVariant_SIDH_B, FP_503)
alicePrivate := convToPrv(tdata[FP_503].PrA, KeyVariant_SIDH_A, FP_503)
bobPrivate := convToPrv(tdata[FP_503].PrB, KeyVariant_SIDH_B, FP_503)

for i := 0; i < b.N; i++ {
// Derive shared secret
@@ -274,48 +343,95 @@ func BenchmarkSidhKeyAgreement(b *testing.B) {
}
}

func BenchmarkAliceKeyGenPrv(b *testing.B) {
prv := NewPrivateKey(params.Id, KeyVariant_SIDH_A)
func BenchmarkAliceKeyGenPrvP751(b *testing.B) {
prv := NewPrivateKey(FP_751, KeyVariant_SIDH_A)
for n := 0; n < b.N; n++ {
prv.Generate(rand.Reader)
}
}

func BenchmarkAliceKeyGenPrvP503(b *testing.B) {
prv := NewPrivateKey(FP_503, KeyVariant_SIDH_A)
for n := 0; n < b.N; n++ {
prv.Generate(rand.Reader)
}
}

func BenchmarkBobKeyGenPrvP751(b *testing.B) {
prv := NewPrivateKey(FP_751, KeyVariant_SIDH_B)
for n := 0; n < b.N; n++ {
prv.Generate(rand.Reader)
}
}

func BenchmarkBobKeyGenPrv(b *testing.B) {
prv := NewPrivateKey(params.Id, KeyVariant_SIDH_B)
func BenchmarkBobKeyGenPrvP503(b *testing.B) {
prv := NewPrivateKey(FP_503, KeyVariant_SIDH_B)
for n := 0; n < b.N; n++ {
prv.Generate(rand.Reader)
}
}

func BenchmarkAliceKeyGenPub(b *testing.B) {
prv := NewPrivateKey(params.Id, KeyVariant_SIDH_A)
func BenchmarkAliceKeyGenPubP751(b *testing.B) {
prv := NewPrivateKey(FP_751, KeyVariant_SIDH_A)
prv.Generate(rand.Reader)
for n := 0; n < b.N; n++ {
prv.GeneratePublicKey()
}
}

func BenchmarkBobKeyGenPub(b *testing.B) {
prv := NewPrivateKey(params.Id, KeyVariant_SIDH_B)
func BenchmarkAliceKeyGenPubP503(b *testing.B) {
prv := NewPrivateKey(FP_503, KeyVariant_SIDH_A)
prv.Generate(rand.Reader)
for n := 0; n < b.N; n++ {
prv.GeneratePublicKey()
}
}

func BenchmarkSharedSecretAlice(b *testing.B) {
aPr := convToPrv(PrA, KeyVariant_SIDH_A)
bPk := convToPub(PkB, KeyVariant_SIDH_B)
func BenchmarkBobKeyGenPubP751(b *testing.B) {
prv := NewPrivateKey(FP_751, KeyVariant_SIDH_B)
prv.Generate(rand.Reader)
for n := 0; n < b.N; n++ {
prv.GeneratePublicKey()
}
}

func BenchmarkBobKeyGenPubP503(b *testing.B) {
prv := NewPrivateKey(FP_503, KeyVariant_SIDH_B)
prv.Generate(rand.Reader)
for n := 0; n < b.N; n++ {
prv.GeneratePublicKey()
}
}

func BenchmarkSharedSecretAliceP751(b *testing.B) {
aPr := convToPrv(tdata[FP_751].PrA, KeyVariant_SIDH_A, FP_751)
bPk := convToPub(tdata[FP_751].PkB, KeyVariant_SIDH_B, FP_751)
for n := 0; n < b.N; n++ {
DeriveSecret(aPr, bPk)
}
}

func BenchmarkSharedSecretBob(b *testing.B) {
func BenchmarkSharedSecretAliceP503(b *testing.B) {
aPr := convToPrv(tdata[FP_503].PrA, KeyVariant_SIDH_A, FP_503)
bPk := convToPub(tdata[FP_503].PkB, KeyVariant_SIDH_B, FP_503)
for n := 0; n < b.N; n++ {
DeriveSecret(aPr, bPk)
}
}

func BenchmarkSharedSecretBobP751(b *testing.B) {
// m_B = 3*randint(0,3^238)
aPk := convToPub(tdata[FP_751].PkA, KeyVariant_SIDH_A, FP_751)
bPr := convToPrv(tdata[FP_751].PrB, KeyVariant_SIDH_B, FP_751)
for n := 0; n < b.N; n++ {
DeriveSecret(bPr, aPk)
}
}

func BenchmarkSharedSecretBobP503(b *testing.B) {
// m_B = 3*randint(0,3^238)
aPk := convToPub(PkA, KeyVariant_SIDH_A)
bPr := convToPrv(PrB, KeyVariant_SIDH_B)
aPk := convToPub(tdata[FP_503].PkA, KeyVariant_SIDH_A, FP_503)
bPr := convToPrv(tdata[FP_503].PrB, KeyVariant_SIDH_B, FP_503)
for n := 0; n < b.N; n++ {
DeriveSecret(bPr, aPk)
}


+ 89
- 51
sike/sike_test.go Parādīt failu

@@ -10,29 +10,52 @@ import (
"os"
"strings"

"fmt"

rand "crypto/rand"
. "github.com/cloudflare/p751sidh/internal/isogeny"
. "github.com/cloudflare/p751sidh/sidh"
)

const (
PkB = "7C55E268665504B9A11A1B30B4363A4957960AD015A7B74DF39FB0141A95CC51A4BEBBB48452EF0C881220D68CB5FF904C0549F05F06BF49A520E684DD610A7E121B420C751B789BDCDB8B6EC136BA0CE74EB6904906057EA7343839EA35FAF2C3D7BE76C81DCA4DF0850CE5F111FF9FF97242EC5520310D7F90A004BACFD75408CBFE8948232A9CCF035136DE3691D9BEF110C3081AADF0D2328CE2CC94998D8AE94D6575083FAFA045F50201FCE841D01C214CC8BBEFCC701484215EA70518204C76A0DA89BEAF0B066F6FD9E78A2C908CF0AFF74E0B55477190F918397F0CF3A537B7911DA846196AD914114A15C2F3C1062D78B19D23348C3D3D4A9C2B2018B382CC44544DA2FA263EB6212D2D13F254216DE002D4AEA55C75C5349A681D7A809BCC29C4CAE1168AC790321FF7429FAAC2FC09465F93E10B9DD970901A1B1D045DDAC9D7B901E00F29AA9F2C87C8EF848E80B7B290ECF85D6BB4C7E975A939A7AFB63069F900A75C9B7B71C2E7472C21A87AB604B6372D4EBEC5974A711281A819636D8FA3E6608F2B81F35599BBB4A1EB5CBD8F743587550F8CE3A809F5C9C399DD52B2D15F217A36F3218C772FD4E67F67D526DEBE1D31FEC4634927A873A1A6CFE55FF1E35AB72EBBD22E3CDD9D2640813345015BB6BD25A6977D0391D4D78998DD178155FEBF247BED3A9F83EAF3346BA90098B908B2359B60491C94330626709D235D1CFB7C87DCA779CFBA23DA280DC06FAEA0FDB3773B0C6391F889D803B7C04AC6AB27375B440336789823176C57"
PrB = "00010203040506070809000102030405060708090001020304050607080901028626ED79D451140800E03B59B956F8210E556067407D13DC90FA9E8B872BFB8FAB0A7289852106E40538D3575C500201"
KAT644 = "../etc/PQCkemKAT_644.rsp"
)
type MultiIdTestingFunc func(*testing.T, PrimeFieldId)

var params = Params(FP_751)
func Do(f MultiIdTestingFunc, t *testing.T) {
for id, val := range tdata {
fmt.Printf("\tTesting: %s\n", val.name)
f(t, id)
}
}

var tdata = map[PrimeFieldId]struct {
name string
KatFile string
PkB string
PrB string
}{
FP_503: {
"P-503",
"../etc/PQCkemKAT_434.rsp",
"68460C22466E95864CFEA7B5D9077E768FF4F9ED69AE56D7CF3F236FB06B31020EEE34B5B572CEA5DDF20B531966AA8F5F3ACC0C6D1CE04EEDC30FD1F1233E2D96FE60C6D638FC646EAF2E2246F1AEC96859CE874A1F029A78F9C978CD6B22114A0D5AB20101191FD923E80C76908B1498B9D0200065CCA09159A0C65A1E346CC6470314FE78388DAA89DD08EC67DBE63C1F606674ACC49EBF9FDBB2B898B3CE733113AA6F942DB401A76D629CE6EE6C0FDAF4CFB1A5E366DB66C17B3923A1B7FB26A3FF25B9018869C674D3DEF4AF269901D686FE4647F9D2CDB2CEB3AFA305B27C885F037ED167F595066C21E7DD467D8332B934A5102DA5F13332DFA356B82156A0BB2E7E91C6B85B7D1E381BC9E3F0FC4DB9C36016D9ECEC415D7E977E9AC29910D934BA2FE4EE49D3B387607A4E1AFABF495FB86A77194626589E802FF5167C7A25C542C1EAD25A6E0AA931D94F2F9AFD3DBDF222E651F729A90E77B20974905F1E65E041CE6C95AAB3E1F22D332E0A5DE9C5DB3D9C7A38",
"80FC55DA74DEFE3113487B80841E678AF9ED4E0599CF07353A4AB93971C090A0A9402C9DC98AC6DC8F5FDE5E970AE22BA48A400EFC72851C"},
FP_751: {
"P-751",
"../etc/PQCkemKAT_644.rsp",
"7C55E268665504B9A11A1B30B4363A4957960AD015A7B74DF39FB0141A95CC51A4BEBBB48452EF0C881220D68CB5FF904C0549F05F06BF49A520E684DD610A7E121B420C751B789BDCDB8B6EC136BA0CE74EB6904906057EA7343839EA35FAF2C3D7BE76C81DCA4DF0850CE5F111FF9FF97242EC5520310D7F90A004BACFD75408CBFE8948232A9CCF035136DE3691D9BEF110C3081AADF0D2328CE2CC94998D8AE94D6575083FAFA045F50201FCE841D01C214CC8BBEFCC701484215EA70518204C76A0DA89BEAF0B066F6FD9E78A2C908CF0AFF74E0B55477190F918397F0CF3A537B7911DA846196AD914114A15C2F3C1062D78B19D23348C3D3D4A9C2B2018B382CC44544DA2FA263EB6212D2D13F254216DE002D4AEA55C75C5349A681D7A809BCC29C4CAE1168AC790321FF7429FAAC2FC09465F93E10B9DD970901A1B1D045DDAC9D7B901E00F29AA9F2C87C8EF848E80B7B290ECF85D6BB4C7E975A939A7AFB63069F900A75C9B7B71C2E7472C21A87AB604B6372D4EBEC5974A711281A819636D8FA3E6608F2B81F35599BBB4A1EB5CBD8F743587550F8CE3A809F5C9C399DD52B2D15F217A36F3218C772FD4E67F67D526DEBE1D31FEC4634927A873A1A6CFE55FF1E35AB72EBBD22E3CDD9D2640813345015BB6BD25A6977D0391D4D78998DD178155FEBF247BED3A9F83EAF3346BA90098B908B2359B60491C94330626709D235D1CFB7C87DCA779CFBA23DA280DC06FAEA0FDB3773B0C6391F889D803B7C04AC6AB27375B440336789823176C57",
"00010203040506070809000102030405060708090001020304050607080901028626ED79D451140800E03B59B956F8210E556067407D13DC90FA9E8B872BFB8FAB0A7289852106E40538D3575C500201"},
}

// Fail if err !=nil. Display msg as an error message
func checkErr(t testing.TB, err error, msg string) {
if err != nil {
t.Error(msg)
t.Errorf("%s [%s]", msg, err)
}
}

// Encrypt, Decrypt, check if input/output plaintext is the same
func TestPKERoundTrip(t *testing.T) {
func testPKERoundTrip(t *testing.T, id PrimeFieldId) {
// Message to be encrypted
var msg [32]byte
var params = Params(id)
var msg = make([]byte, params.MsgLen)
for i, _ := range msg {
msg[i] = byte(i)
}
@@ -40,11 +63,11 @@ func TestPKERoundTrip(t *testing.T) {
// Import keys
pkB := NewPublicKey(params.Id, KeyVariant_SIKE)
skB := NewPrivateKey(params.Id, KeyVariant_SIKE)
pk_hex, err := hex.DecodeString(PkB)
pk_hex, err := hex.DecodeString(tdata[id].PkB)
if err != nil {
t.Fatal(err)
}
sk_hex, err := hex.DecodeString(PrB)
sk_hex, err := hex.DecodeString(tdata[id].PrB)
if err != nil {
t.Fatal(err)
}
@@ -66,15 +89,16 @@ func TestPKERoundTrip(t *testing.T) {
}

// Generate key and check if can encrypt
func TestPKEKeyGeneration(t *testing.T) {
func testPKEKeyGeneration(t *testing.T, id PrimeFieldId) {
// Message to be encrypted
var msg [32]byte
var params = Params(id)
var msg = make([]byte, params.MsgLen)
var err error
for i, _ := range msg {
msg[i] = byte(i)
}

sk := NewPrivateKey(params.Id, KeyVariant_SIKE)
sk := NewPrivateKey(id, KeyVariant_SIKE)
err = sk.Generate(rand.Reader)
checkErr(t, err, "PEK key generation")
pk := sk.GeneratePublicKey()
@@ -90,9 +114,10 @@ func TestPKEKeyGeneration(t *testing.T) {
}
}

func TestNegativePKE(t *testing.T) {
func testNegativePKE(t *testing.T, id PrimeFieldId) {
var msg [40]byte
var err error
var params = Params(id)

// Generate key
sk := NewPrivateKey(params.Id, KeyVariant_SIKE)
@@ -101,7 +126,8 @@ func TestNegativePKE(t *testing.T) {

pk := sk.GeneratePublicKey()

ct, err := Encrypt(rand.Reader, pk, msg[:39])
// bytelen(msg) - 1
ct, err := Encrypt(rand.Reader, pk, msg[:params.KemSize+8-1])
if err == nil {
t.Fatal("Error hasn't been returned")
}
@@ -109,7 +135,8 @@ func TestNegativePKE(t *testing.T) {
t.Fatal("Ciphertext must be nil")
}

pt, err := Decrypt(sk, msg[:23])
// KemSize - 1
pt, err := Decrypt(sk, msg[:params.KemSize+8-1])
if err == nil {
t.Fatal("Error hasn't been returned")
}
@@ -118,39 +145,42 @@ func TestNegativePKE(t *testing.T) {
}
}

func testKEMRoundTrip(pkB, skB []byte) bool {
func testKEMRoundTrip(t *testing.T, pkB, skB []byte, id PrimeFieldId) {
// Import keys
pk := NewPublicKey(params.Id, KeyVariant_SIKE)
sk := NewPrivateKey(params.Id, KeyVariant_SIKE)
pk := NewPublicKey(id, KeyVariant_SIKE)
sk := NewPrivateKey(id, KeyVariant_SIKE)
if pk.Import(pkB) != nil || sk.Import(skB) != nil {
return false
t.Error("Import failed")
}

ct, ss_e, err := Encapsulate(rand.Reader, pk)
if err != nil {
return false
t.Error("Encapsulate failed")
}

ss_d, err := Decapsulate(sk, pk, ct)
if err != nil {
return false
t.Error("Decapsulate failed")
}
if !bytes.Equal(ss_e, ss_d) {
t.Error("Shared secrets from decapsulation and encapsulation differ")
}
return bytes.Equal(ss_e, ss_d)
}

func TestKEMRoundTrip(t *testing.T) {
pk, err := hex.DecodeString(PkB)
checkErr(t, err, "public key B not a number")
sk, err := hex.DecodeString(PrB)
checkErr(t, err, "private key B not a number")
if !testKEMRoundTrip(pk, sk) {
t.Error("kem roundtrip failed")
for id, val := range tdata {
fmt.Printf("\tTesting: %s\n", val.name)
pk, err := hex.DecodeString(tdata[id].PkB)
checkErr(t, err, "public key B not a number")
sk, err := hex.DecodeString(tdata[id].PrB)
checkErr(t, err, "private key B not a number")
testKEMRoundTrip(t, pk, sk, id)
}
}

func TestKEMKeyGeneration(t *testing.T) {
func testKEMKeyGeneration(t *testing.T, id PrimeFieldId) {
// Generate key
sk := NewPrivateKey(params.Id, KeyVariant_SIKE)
sk := NewPrivateKey(id, KeyVariant_SIKE)
checkErr(t, sk.Generate(rand.Reader), "error: key generation")
pk := sk.GeneratePublicKey()

@@ -165,8 +195,8 @@ func TestKEMKeyGeneration(t *testing.T) {
}
}

func TestNegativeKEM(t *testing.T) {
sk := NewPrivateKey(params.Id, KeyVariant_SIKE)
func testNegativeKEM(t *testing.T, id PrimeFieldId) {
sk := NewPrivateKey(id, KeyVariant_SIKE)
checkErr(t, sk.Generate(rand.Reader), "error: key generation")
pk := sk.GeneratePublicKey()

@@ -183,8 +213,8 @@ func TestNegativeKEM(t *testing.T) {
}

// Try encapsulating with SIDH key
pkSidh := NewPublicKey(params.Id, KeyVariant_SIDH_B)
prSidh := NewPrivateKey(params.Id, KeyVariant_SIDH_B)
pkSidh := NewPublicKey(id, KeyVariant_SIDH_B)
prSidh := NewPrivateKey(id, KeyVariant_SIDH_B)
_, _, err = Encapsulate(rand.Reader, pkSidh)
if err == nil {
t.Error("encapsulation accepts SIDH public key")
@@ -198,8 +228,8 @@ func TestNegativeKEM(t *testing.T) {

// In case invalid ciphertext is provided, SIKE's decapsulation must
// return same (but unpredictable) result for a given key.
func TestNegativeKEMSameWrongResult(t *testing.T) {
sk := NewPrivateKey(params.Id, KeyVariant_SIKE)
func testNegativeKEMSameWrongResult(t *testing.T, id PrimeFieldId) {
sk := NewPrivateKey(id, KeyVariant_SIKE)
checkErr(t, sk.Generate(rand.Reader), "error: key generation")
pk := sk.GeneratePublicKey()

@@ -215,7 +245,7 @@ func TestNegativeKEMSameWrongResult(t *testing.T) {
expSk := sk.Export()

// creat new private key
sk = NewPrivateKey(params.Id, KeyVariant_SIKE)
sk = NewPrivateKey(id, KeyVariant_SIKE)
err = sk.Import(expSk)
checkErr(t, err, "import failed")

@@ -253,9 +283,9 @@ func readAndCheckLine(r *bufio.Reader) []byte {
return ret
}

func testKeygen(pk, sk []byte) bool {
func testKeygen(pk, sk []byte, id PrimeFieldId) bool {
// Import provided private key
var prvKey = NewPrivateKey(params.Id, KeyVariant_SIKE)
var prvKey = NewPrivateKey(id, KeyVariant_SIKE)
if prvKey.Import(sk) != nil {
panic("sike test: can't load KAT")
}
@@ -265,9 +295,9 @@ func testKeygen(pk, sk []byte) bool {
return bytes.Equal(pubKey.Export(), pk)
}

func testDecapsulation(pk, sk, ct, ssExpected []byte) bool {
var pubKey = NewPublicKey(params.Id, KeyVariant_SIKE)
var prvKey = NewPrivateKey(params.Id, KeyVariant_SIKE)
func testDecapsulation(pk, sk, ct, ssExpected []byte, id PrimeFieldId) bool {
var pubKey = NewPublicKey(id, KeyVariant_SIKE)
var prvKey = NewPrivateKey(id, KeyVariant_SIKE)
if pubKey.Import(pk) != nil || prvKey.Import(sk) != nil {
panic("sike test: can't load KAT")
}
@@ -283,8 +313,9 @@ func testDecapsulation(pk, sk, ct, ssExpected []byte) bool {
return bytes.Equal(ssGot, ssExpected)
}

func TestSIKE_KAT(t *testing.T) {
f, err := os.Open(KAT644)
func testSIKE_KAT(t *testing.T, id PrimeFieldId) {
params := Params(id)
f, err := os.Open(tdata[id].KatFile)
if err != nil {
t.Fatal(err)
}
@@ -318,17 +349,24 @@ func TestSIKE_KAT(t *testing.T) {
// ss
ss := readAndCheckLine(r)

if !testKeygen(pk, sk) {
if !testKeygen(pk, sk, id) {
t.Fatalf("KAT keygen form private failed at %s\n", count)
}

if !testDecapsulation(pk, sk, ct, ss) {
if !testDecapsulation(pk, sk, ct, ss, id) {
t.Fatalf("KAT decapsulation failed at %s\n", count)
}

// aditionally test roundtrip with a keypair
if !testKEMRoundTrip(pk, sk) {
t.Fatalf("KAT roundtrip failed at %s\n", count)
}
testKEMRoundTrip(t, pk, sk, id)
}
}

// Interface to "testing"
func TestPKEKeyGeneration(t *testing.T) { Do(testPKEKeyGeneration, t) }
func TestPKERoundTrip(t *testing.T) { Do(testPKERoundTrip, t) }
func TestNegativePKE(t *testing.T) { Do(testNegativePKE, t) }
func TestKEMKeyGeneration(t *testing.T) { Do(testKEMKeyGeneration, t) }
func TestNegativeKEM(t *testing.T) { Do(testNegativeKEM, t) }
func TestSIKE_KAT(t *testing.T) { Do(testSIKE_KAT, t) }
func TestNegativeKEMSameWrongResult(t *testing.T) { Do(testNegativeKEMSameWrongResult, t) }

Notiek ielāde…
Atcelt
Saglabāt