From 5d2a19def154b81c8ebada5594e080fe76c5ffee Mon Sep 17 00:00:00 2001 From: Emanuel Peter Date: Thu, 13 Jun 2024 06:35:26 +0000 Subject: [PATCH 01/70] 8333684: C2 SuperWord: multiple smaller refactorings in preparation for JDK-8332163 Reviewed-by: chagedorn, kvn --- src/hotspot/share/opto/phasetype.hpp | 7 +- src/hotspot/share/opto/superword.cpp | 305 +++++++++++------------ src/hotspot/share/opto/superword.hpp | 23 +- src/hotspot/share/opto/vectorization.hpp | 11 + src/hotspot/share/opto/vectornode.cpp | 50 +++- src/hotspot/share/opto/vectornode.hpp | 5 +- 6 files changed, 220 insertions(+), 181 deletions(-) diff --git a/src/hotspot/share/opto/phasetype.hpp b/src/hotspot/share/opto/phasetype.hpp index 6448b8331cc..7a83f8c7f27 100644 --- a/src/hotspot/share/opto/phasetype.hpp +++ b/src/hotspot/share/opto/phasetype.hpp @@ -68,9 +68,10 @@ flags(AFTER_RANGE_CHECK_ELIMINATION, "After Range Check Elimination") \ flags(BEFORE_PRE_MAIN_POST, "Before Pre/Main/Post Loops") \ flags(AFTER_PRE_MAIN_POST, "After Pre/Main/Post Loops") \ - flags(SUPERWORD1_BEFORE_SCHEDULE, "Superword 1, Before Schedule") \ - flags(SUPERWORD2_BEFORE_OUTPUT, "Superword 2, Before Output") \ - flags(SUPERWORD3_AFTER_OUTPUT, "Superword 3, After Output") \ + flags(AUTO_VECTORIZATION1_BEFORE_APPLY, "AutoVectorization 1, Before Apply") \ + flags(AUTO_VECTORIZATION2_AFTER_REORDER, "AutoVectorization 2, After Apply Memop Reordering") \ + flags(AUTO_VECTORIZATION3_AFTER_ADJUST_LIMIT, "AutoVectorization 3, After Adjusting Pre-Loop Limit") \ + flags(AUTO_VECTORIZATION4_AFTER_APPLY, "AutoVectorization 4, After Apply") \ flags(BEFORE_CLOOPS, "Before CountedLoop") \ flags(AFTER_CLOOPS, "After CountedLoop") \ flags(PHASEIDEAL_BEFORE_EA, "PhaseIdealLoop before EA") \ diff --git a/src/hotspot/share/opto/superword.cpp b/src/hotspot/share/opto/superword.cpp index d36e306a1e9..e71a6026209 100644 --- a/src/hotspot/share/opto/superword.cpp +++ b/src/hotspot/share/opto/superword.cpp @@ -481,10 +481,9 @@ bool SuperWord::SLP_extract() { filter_packs_for_profitable(); DEBUG_ONLY(verify_packs();) + DEBUG_ONLY(verify_no_extract()); - schedule(); - - return output(); + return schedule_and_apply(); } // Find the "seed" memops pairs. These are pairs that we strongly suspect would lead to vectorization. @@ -1466,7 +1465,7 @@ const AlignmentSolution* SuperWord::pack_alignment_solution(const Node_List* pac // that the packs impose. Remove packs that do not have a compatible solution. void SuperWord::filter_packs_for_alignment() { // We do not need to filter if no alignment is required. - if (!vectors_should_be_aligned()) { + if (!VLoop::vectors_should_be_aligned()) { return; } @@ -1592,20 +1591,12 @@ bool SuperWord::implemented(const Node_List* pack, const uint size) const { } else if (p0->is_Cmp()) { // Cmp -> Bool -> Cmove retValue = UseVectorCmov; - } else if (requires_long_to_int_conversion(opc)) { - // Java API for Long.bitCount/numberOfLeadingZeros/numberOfTrailingZeros - // returns int type, but Vector API for them returns long type. To unify - // the implementation in backend, superword splits the vector implementation - // for Java API into an execution node with long type plus another node - // converting long to int. + } else if (VectorNode::is_scalar_op_that_returns_int_but_vector_op_returns_long(opc)) { + // Requires extra vector long -> int conversion. retValue = VectorNode::implemented(opc, size, T_LONG) && VectorCastNode::implemented(Op_ConvL2I, size, T_LONG, T_INT); } else { - // Vector unsigned right shift for signed subword types behaves differently - // from Java Spec. But when the shift amount is a constant not greater than - // the number of sign extended bits, the unsigned right shift can be - // vectorized to a signed right shift. - if (VectorNode::can_transform_shift_op(p0, velt_basic_type(p0))) { + if (VectorNode::can_use_RShiftI_instead_of_URShiftI(p0, velt_basic_type(p0))) { opc = Op_RShiftI; } retValue = VectorNode::implemented(opc, size, velt_basic_type(p0)); @@ -1630,36 +1621,87 @@ uint SuperWord::max_implemented_size(const Node_List* pack) { } } -// Java API for Long.bitCount/numberOfLeadingZeros/numberOfTrailingZeros -// returns int type, but Vector API for them returns long type. To unify -// the implementation in backend, superword splits the vector implementation -// for Java API into an execution node with long type plus another node -// converting long to int. -bool SuperWord::requires_long_to_int_conversion(int opc) { - switch(opc) { - case Op_PopCountL: - case Op_CountLeadingZerosL: - case Op_CountTrailingZerosL: - return true; - default: - return false; +// If the j-th input for all nodes in the pack is the same input: return it, else nullptr. +Node* PackSet::same_inputs_at_index_or_null(const Node_List* pack, const int index) const { + Node* p0_in = pack->at(0)->in(index); + for (uint i = 1; i < pack->size(); i++) { + if (pack->at(i)->in(index) != p0_in) { + return nullptr; // not same + } } + return p0_in; } -//------------------------------same_inputs-------------------------- -// For pack p, are all idx operands the same? -bool SuperWord::same_inputs(const Node_List* p, int idx) const { - Node* p0 = p->at(0); - uint vlen = p->size(); - Node* p0_def = p0->in(idx); - for (uint i = 1; i < vlen; i++) { - Node* pi = p->at(i); - Node* pi_def = pi->in(idx); - if (p0_def != pi_def) { - return false; +VTransformBoolTest PackSet::get_bool_test(const Node_List* bool_pack) const { + BoolNode* bol = bool_pack->at(0)->as_Bool(); + BoolTest::mask mask = bol->_test._test; + bool is_negated = false; + assert(mask == BoolTest::eq || + mask == BoolTest::ne || + mask == BoolTest::ge || + mask == BoolTest::gt || + mask == BoolTest::lt || + mask == BoolTest::le, + "Bool should be one of: eq, ne, ge, gt, lt, le"); + +#ifdef ASSERT + for (uint j = 0; j < bool_pack->size(); j++) { + Node* m = bool_pack->at(j); + assert(m->as_Bool()->_test._test == mask, + "all bool nodes must have same test"); + } +#endif + + CmpNode* cmp0 = bol->in(1)->as_Cmp(); + assert(get_pack(cmp0) != nullptr, "Bool must have matching Cmp pack"); + + if (cmp0->Opcode() == Op_CmpF || cmp0->Opcode() == Op_CmpD) { + // If we have a Float or Double comparison, we must be careful with + // handling NaN's correctly. CmpF and CmpD have a return code, as + // they are based on the java bytecodes fcmpl/dcmpl: + // -1: cmp_in1 < cmp_in2, or at least one of the two is a NaN + // 0: cmp_in1 == cmp_in2 (no NaN) + // 1: cmp_in1 > cmp_in2 (no NaN) + // + // The "mask" selects which of the [-1, 0, 1] cases lead to "true". + // + // Note: ordered (O) comparison returns "false" if either input is NaN. + // unordered (U) comparison returns "true" if either input is NaN. + // + // The VectorMaskCmpNode does a comparison directly on in1 and in2, in the java + // standard way (all comparisons are ordered, except NEQ is unordered). + // + // In the following, "mask" already matches the cmp code for VectorMaskCmpNode: + // BoolTest::eq: Case 0 -> EQ_O + // BoolTest::ne: Case -1, 1 -> NEQ_U + // BoolTest::ge: Case 0, 1 -> GE_O + // BoolTest::gt: Case 1 -> GT_O + // + // But the lt and le comparisons must be converted from unordered to ordered: + // BoolTest::lt: Case -1 -> LT_U -> VectorMaskCmp would interpret lt as LT_O + // BoolTest::le: Case -1, 0 -> LE_U -> VectorMaskCmp would interpret le as LE_O + // + if (mask == BoolTest::lt || mask == BoolTest::le) { + // Negating the mask gives us the negated result, since all non-NaN cases are + // negated, and the unordered (U) comparisons are turned into ordered (O) comparisons. + // VectorMaskCmp(LT_U, in1_cmp, in2_cmp) + // <==> NOT VectorMaskCmp(GE_O, in1_cmp, in2_cmp) + // VectorMaskCmp(LE_U, in1_cmp, in2_cmp) + // <==> NOT VectorMaskCmp(GT_O, in1_cmp, in2_cmp) + // + // When a VectorBlend uses the negated mask, it can simply swap its blend-inputs: + // VectorBlend( VectorMaskCmp(LT_U, in1_cmp, in2_cmp), in1_blend, in2_blend) + // <==> VectorBlend(NOT VectorMaskCmp(GE_O, in1_cmp, in2_cmp), in1_blend, in2_blend) + // <==> VectorBlend( VectorMaskCmp(GE_O, in1_cmp, in2_cmp), in2_blend, in1_blend) + // VectorBlend( VectorMaskCmp(LE_U, in1_cmp, in2_cmp), in1_blend, in2_blend) + // <==> VectorBlend(NOT VectorMaskCmp(GT_O, in1_cmp, in2_cmp), in1_blend, in2_blend) + // <==> VectorBlend( VectorMaskCmp(GT_O, in1_cmp, in2_cmp), in2_blend, in1_blend) + mask = bol->_test.negate(); + is_negated = true; } } - return true; + + return VTransformBoolTest(mask, is_negated); } //------------------------------profitable--------------------------- @@ -1696,10 +1738,9 @@ bool SuperWord::profitable(const Node_List* p) const { // case (different shift counts) because it is not supported yet. Node* cnt = p0->in(2); Node_List* cnt_pk = get_pack(cnt); - if (cnt_pk != nullptr) - return false; - if (!same_inputs(p, 2)) + if (cnt_pk != nullptr || _packset.same_inputs_at_index_or_null(p, 2) == nullptr) { return false; + } } if (!p0->is_Store()) { // For now, return false if not all uses are vector. @@ -2042,7 +2083,9 @@ class PacksetGraph { } }; -// The C2 graph (specifically the memory graph), needs to be re-ordered. +// We want to replace the packed scalars from the PackSet and replace them +// with vector operations. This requires scheduling and re-ordering the memory +// graph. We take these steps: // (1) Build the PacksetGraph. It combines the dependency graph with the // packset. The PacksetGraph gives us the dependencies that must be // respected after scheduling. @@ -2050,10 +2093,11 @@ class PacksetGraph { // a linear order of all memops in the body. The order respects the // dependencies of the PacksetGraph. // (3) If the PacksetGraph has cycles, we cannot schedule. Abort. -// (4) Use the memops_schedule to re-order the memops in all slices. -void SuperWord::schedule() { - if (_packset.length() == 0) { - return; // empty packset +// (4) Apply the vectorization, including re-ordering the memops and replacing +// packed scalars with vector operations. +bool SuperWord::schedule_and_apply() { + if (_packset.is_empty()) { + return false; } ResourceMark rm; @@ -2079,27 +2123,40 @@ void SuperWord::schedule() { } #endif _packset.clear(); - return; + return false; } -#ifndef PRODUCT - if (is_trace_superword_info()) { - tty->print_cr("SuperWord::schedule: memops_schedule:"); - memops_schedule.dump(); - } -#endif + // (4) Apply the vectorization, including re-ordering the memops. + return apply(memops_schedule); +} +bool SuperWord::apply(Node_List& memops_schedule) { + Compile* C = phase()->C; CountedLoopNode* cl = lpt()->_head->as_CountedLoop(); - phase()->C->print_method(PHASE_SUPERWORD1_BEFORE_SCHEDULE, 4, cl); + C->print_method(PHASE_AUTO_VECTORIZATION1_BEFORE_APPLY, 4, cl); - // (4) Use the memops_schedule to re-order the memops in all slices. - schedule_reorder_memops(memops_schedule); -} + apply_memops_reordering_with_schedule(memops_schedule); + C->print_method(PHASE_AUTO_VECTORIZATION2_AFTER_REORDER, 4, cl); + + adjust_pre_loop_limit_to_align_main_loop_vectors(); + C->print_method(PHASE_AUTO_VECTORIZATION3_AFTER_ADJUST_LIMIT, 4, cl); + + bool is_success = apply_vectorization(); + C->print_method(PHASE_AUTO_VECTORIZATION4_AFTER_APPLY, 4, cl); + return is_success; +} // Reorder the memory graph for all slices in parallel. We walk over the schedule once, // and track the current memory state of each slice. -void SuperWord::schedule_reorder_memops(Node_List &memops_schedule) { +void SuperWord::apply_memops_reordering_with_schedule(Node_List& memops_schedule) { +#ifndef PRODUCT + if (is_trace_superword_info()) { + tty->print_cr("\nSuperWord::apply_memops_reordering_with_schedule:"); + memops_schedule.dump(); + } +#endif + int max_slices = phase()->C->num_alias_types(); // When iterating over the memops_schedule, we keep track of the current memory state, // which is the Phi or a store in the loop. @@ -2180,32 +2237,24 @@ void SuperWord::schedule_reorder_memops(Node_List &memops_schedule) { } } -//------------------------------output--------------------------- // Convert packs into vector node operations // At this point, all correctness and profitability checks have passed. // We start the irreversible process of editing the C2 graph. Should // there be an unexpected situation (assert fails), then we can only // bail out of the compilation, as the graph has already been partially // modified. We bail out, and retry without SuperWord. -bool SuperWord::output() { +bool SuperWord::apply_vectorization() { CountedLoopNode *cl = lpt()->_head->as_CountedLoop(); assert(cl->is_main_loop(), "SLP should only work on main loops"); Compile* C = phase()->C; - if (_packset.is_empty()) { - return false; - } + assert(!_packset.is_empty(), "vectorization requires non-empty packset"); #ifndef PRODUCT if (TraceLoopOpts) { - tty->print("SuperWord::output "); + tty->print("SuperWord::apply_vectorization "); lpt()->dump_head(); } #endif - phase()->C->print_method(PHASE_SUPERWORD2_BEFORE_OUTPUT, 4, cl); - - adjust_pre_loop_limit_to_align_main_loop_vectors(); - - DEBUG_ONLY(verify_no_extract()); uint max_vlen_in_bytes = 0; uint max_vlen = 0; @@ -2214,7 +2263,7 @@ bool SuperWord::output() { Node* n = body().at(i); Node_List* p = get_pack(n); if (p != nullptr && n == p->at(p->size()-1)) { - // After schedule_reorder_memops, we know that the memops have the same order in the pack + // After apply_memops_reordering_with_schedule, we know that the memops have the same order in the pack // as in the memory slice. Hence, "first" is the first memop in the slice from the pack, // and "n" is the last node in the slice from the pack. Node* first = p->at(0); @@ -2294,79 +2343,32 @@ bool SuperWord::output() { BoolNode* bol = n->in(1)->as_Bool(); assert(bol != nullptr, "must have Bool above CMove"); - BoolTest::mask bol_test = bol->_test._test; - assert(bol_test == BoolTest::eq || - bol_test == BoolTest::ne || - bol_test == BoolTest::ge || - bol_test == BoolTest::gt || - bol_test == BoolTest::lt || - bol_test == BoolTest::le, - "CMove bool should be one of: eq,ne,ge,ge,lt,le"); - Node_List* p_bol = get_pack(bol); - assert(p_bol != nullptr, "CMove must have matching Bool pack"); - -#ifdef ASSERT - for (uint j = 0; j < p_bol->size(); j++) { - Node* m = p_bol->at(j); - assert(m->as_Bool()->_test._test == bol_test, - "all bool nodes must have same test"); - } -#endif + Node_List* bool_pack = get_pack(bol); + assert(bool_pack != nullptr, "CMove must have matching Bool pack"); CmpNode* cmp = bol->in(1)->as_Cmp(); assert(cmp != nullptr, "must have cmp above CMove"); - Node_List* p_cmp = get_pack(cmp); - assert(p_cmp != nullptr, "Bool must have matching Cmp pack"); + Node_List* cmp_pack = get_pack(cmp); + assert(cmp_pack != nullptr, "Bool must have matching Cmp pack"); - Node* cmp_in1 = vector_opd(p_cmp, 1); - Node* cmp_in2 = vector_opd(p_cmp, 2); + Node* cmp_in1 = vector_opd(cmp_pack, 1); + Node* cmp_in2 = vector_opd(cmp_pack, 2); Node* blend_in1 = vector_opd(p, 2); Node* blend_in2 = vector_opd(p, 3); - if (cmp->Opcode() == Op_CmpF || cmp->Opcode() == Op_CmpD) { - // If we have a Float or Double comparison, we must be careful with - // handling NaN's correctly. CmpF and CmpD have a return code, as - // they are based on the java bytecodes fcmpl/dcmpl: - // -1: cmp_in1 < cmp_in2, or at least one of the two is a NaN - // 0: cmp_in1 == cmp_in2 (no NaN) - // 1: cmp_in1 > cmp_in2 (no NaN) - // - // The "bol_test" selects which of the [-1, 0, 1] cases lead to "true". - // - // Note: ordered (O) comparison returns "false" if either input is NaN. - // unordered (U) comparison returns "true" if either input is NaN. - // - // The VectorMaskCmpNode does a comparison directly on in1 and in2, in the java - // standard way (all comparisons are ordered, except NEQ is unordered). - // - // In the following, "bol_test" already matches the cmp code for VectorMaskCmpNode: - // BoolTest::eq: Case 0 -> EQ_O - // BoolTest::ne: Case -1, 1 -> NEQ_U - // BoolTest::ge: Case 0, 1 -> GE_O - // BoolTest::gt: Case 1 -> GT_O - // - // But the lt and le comparisons must be converted from unordered to ordered: - // BoolTest::lt: Case -1 -> LT_U -> VectorMaskCmp would interpret lt as LT_O - // BoolTest::le: Case -1, 0 -> LE_U -> VectorMaskCmp would interpret le as LE_O - // - if (bol_test == BoolTest::lt || bol_test == BoolTest::le) { - // Negating the bol_test and swapping the blend-inputs leaves all non-NaN cases equal, - // but converts the unordered (U) to an ordered (O) comparison. - // VectorBlend(VectorMaskCmp(LT_U, in1_cmp, in2_cmp), in1_blend, in2_blend) - // <==> VectorBlend(VectorMaskCmp(GE_O, in1_cmp, in2_cmp), in2_blend, in1_blend) - // VectorBlend(VectorMaskCmp(LE_U, in1_cmp, in2_cmp), in1_blend, in2_blend) - // <==> VectorBlend(VectorMaskCmp(GT_O, in1_cmp, in2_cmp), in2_blend, in1_blend) - bol_test = bol->_test.negate(); - swap(blend_in1, blend_in2); - } + VTransformBoolTest bool_test = _packset.get_bool_test(bool_pack); + BoolTest::mask test_mask = bool_test._mask; + if (bool_test._is_negated) { + // We can cancel out the negation by swapping the blend inputs. + swap(blend_in1, blend_in2); } // VectorMaskCmp - ConINode* bol_test_node = igvn().intcon((int)bol_test); + ConINode* test_mask_node = igvn().intcon((int)test_mask); BasicType bt = velt_basic_type(cmp); const TypeVect* vt = TypeVect::make(bt, vlen); - VectorNode* mask = new VectorMaskCmpNode(bol_test, cmp_in1, cmp_in2, bol_test_node, vt); + VectorNode* mask = new VectorMaskCmpNode(test_mask, cmp_in1, cmp_in2, test_mask_node, vt); phase()->register_new_node_with_ctrl_of(mask, p->at(0)); igvn()._worklist.push(mask); @@ -2408,40 +2410,23 @@ bool SuperWord::output() { vlen_in_bytes = in2->as_Vector()->length_in_bytes(); } } else { - // Vector unsigned right shift for signed subword types behaves differently - // from Java Spec. But when the shift amount is a constant not greater than - // the number of sign extended bits, the unsigned right shift can be - // vectorized to a signed right shift. - if (VectorNode::can_transform_shift_op(n, velt_basic_type(n))) { + if (VectorNode::can_use_RShiftI_instead_of_URShiftI(n, velt_basic_type(n))) { opc = Op_RShiftI; } vn = VectorNode::make(opc, in1, in2, vlen, velt_basic_type(n)); vlen_in_bytes = vn->as_Vector()->length_in_bytes(); } - } else if (opc == Op_SqrtF || opc == Op_SqrtD || - opc == Op_AbsF || opc == Op_AbsD || - opc == Op_AbsI || opc == Op_AbsL || - opc == Op_NegF || opc == Op_NegD || - opc == Op_RoundF || opc == Op_RoundD || - opc == Op_ReverseBytesI || opc == Op_ReverseBytesL || - opc == Op_ReverseBytesUS || opc == Op_ReverseBytesS || - opc == Op_ReverseI || opc == Op_ReverseL || - opc == Op_PopCountI || opc == Op_CountLeadingZerosI || - opc == Op_CountTrailingZerosI) { + } else if (VectorNode::is_scalar_unary_op_with_equal_input_and_output_types(opc)) { assert(n->req() == 2, "only one input expected"); Node* in = vector_opd(p, 1); vn = VectorNode::make(opc, in, nullptr, vlen, velt_basic_type(n)); vlen_in_bytes = vn->as_Vector()->length_in_bytes(); - } else if (requires_long_to_int_conversion(opc)) { - // Java API for Long.bitCount/numberOfLeadingZeros/numberOfTrailingZeros - // returns int type, but Vector API for them returns long type. To unify - // the implementation in backend, superword splits the vector implementation - // for Java API into an execution node with long type plus another node - // converting long to int. + } else if (VectorNode::is_scalar_op_that_returns_int_but_vector_op_returns_long(opc)) { assert(n->req() == 2, "only one input expected"); Node* in = vector_opd(p, 1); Node* longval = VectorNode::make(opc, in, nullptr, vlen, T_LONG); phase()->register_new_node_with_ctrl_of(longval, first); + // Requires extra vector long -> int conversion. vn = VectorCastNode::make(Op_VectorCastL2X, longval, T_INT, vlen); vlen_in_bytes = vn->as_Vector()->length_in_bytes(); } else if (VectorNode::is_convert_opcode(opc)) { @@ -2525,8 +2510,6 @@ bool SuperWord::output() { } } - phase()->C->print_method(PHASE_SUPERWORD3_AFTER_OUTPUT, 4, cl); - return true; } @@ -2537,13 +2520,13 @@ Node* SuperWord::vector_opd(Node_List* p, int opd_idx) { uint vlen = p->size(); Node* opd = p0->in(opd_idx); CountedLoopNode *cl = lpt()->_head->as_CountedLoop(); - bool have_same_inputs = same_inputs(p, opd_idx); + Node* same_input = _packset.same_inputs_at_index_or_null(p, opd_idx); // Insert index population operation to create a vector of increasing // indices starting from the iv value. In some special unrolled loops // (see JDK-8286125), we need scalar replications of the iv value if // all inputs are the same iv, so we do a same inputs check here. - if (opd == iv() && !have_same_inputs) { + if (opd == iv() && same_input == nullptr) { BasicType p0_bt = velt_basic_type(p0); BasicType iv_bt = is_subword_type(p0_bt) ? p0_bt : T_INT; assert(VectorNode::is_populate_index_supported(iv_bt), "Should support"); @@ -2554,7 +2537,7 @@ Node* SuperWord::vector_opd(Node_List* p, int opd_idx) { return vn; } - if (have_same_inputs) { + if (same_input != nullptr) { if (opd->is_Vector() || opd->is_LoadVector()) { if (opd_idx == 2 && VectorNode::is_shift(p0)) { assert(false, "shift's count can't be vector"); @@ -2849,7 +2832,7 @@ bool SuperWord::is_velt_basic_type_compatible_use_def(Node* use, Node* def) cons assert(is_java_primitive(def_bt), "sanity %s", type2name(def_bt)); // Nodes like Long.bitCount: expect long input, and int output. - if (requires_long_to_int_conversion(use->Opcode())) { + if (VectorNode::is_scalar_op_that_returns_int_but_vector_op_returns_long(use->Opcode())) { return type2aelembytes(def_bt) == 8 && type2aelembytes(use_bt) == 4; } @@ -2996,7 +2979,7 @@ VStatus VLoopBody::construct() { BasicType SuperWord::longer_type_for_conversion(Node* n) const { if (!(VectorNode::is_convert_opcode(n->Opcode()) || - requires_long_to_int_conversion(n->Opcode())) || + VectorNode::is_scalar_op_that_returns_int_but_vector_op_returns_long(n->Opcode())) || !in_bb(n->in(1))) { return T_ILLEGAL; } @@ -3173,7 +3156,7 @@ LoadNode::ControlDependency SuperWord::control_dependency(Node_List* p) { // determined by SuperWord::filter_packs_for_alignment(). void SuperWord::determine_mem_ref_and_aw_for_main_loop_alignment() { if (_mem_ref_for_main_loop_alignment != nullptr) { - assert(vectors_should_be_aligned(), "mem_ref only set if filtered for alignment"); + assert(VLoop::vectors_should_be_aligned(), "mem_ref only set if filtered for alignment"); return; } diff --git a/src/hotspot/share/opto/superword.hpp b/src/hotspot/share/opto/superword.hpp index a07cfcd5b18..c118b420117 100644 --- a/src/hotspot/share/opto/superword.hpp +++ b/src/hotspot/share/opto/superword.hpp @@ -362,6 +362,10 @@ class PackSet : public StackObj { } } + Node* same_inputs_at_index_or_null(const Node_List* pack, const int index) const; + + VTransformBoolTest get_bool_test(const Node_List* bool_pack) const; + private: SplitStatus split_pack(const char* split_name, Node_List* pack, SplitTask task); public: @@ -545,12 +549,6 @@ class SuperWord : public ResourceObj { // Accessors Arena* arena() { return &_arena; } - // should we align vector memory references on this platform? - bool vectors_should_be_aligned() { return !Matcher::misaligned_vectors_ok() || AlignVector; } - - // For pack p, are all idx operands the same? - bool same_inputs(const Node_List* p, int idx) const; - // CloneMap utilities bool same_origin_idx(Node* a, Node* b) const; bool same_generation(Node* a, Node* b) const; @@ -600,13 +598,10 @@ class SuperWord : public ResourceObj { DEBUG_ONLY(void verify_packs() const;) - // Adjust the memory graph for the packed operations - void schedule(); - // Helper function for schedule, that reorders all memops, slice by slice, according to the schedule - void schedule_reorder_memops(Node_List &memops_schedule); - - // Convert packs into vector node operations - bool output(); + bool schedule_and_apply(); + bool apply(Node_List& memops_schedule); + void apply_memops_reordering_with_schedule(Node_List& memops_schedule); + bool apply_vectorization(); // Create a vector operand for the nodes in pack p for operand: in(opd_idx) Node* vector_opd(Node_List* p, int opd_idx); @@ -632,8 +627,6 @@ class SuperWord : public ResourceObj { // Return the longer type for vectorizable type-conversion node or illegal type for other nodes. BasicType longer_type_for_conversion(Node* n) const; - static bool requires_long_to_int_conversion(int opc); - bool is_velt_basic_type_compatible_use_def(Node* use, Node* def) const; static LoadNode::ControlDependency control_dependency(Node_List* p); diff --git a/src/hotspot/share/opto/vectorization.hpp b/src/hotspot/share/opto/vectorization.hpp index 0acc78ed1a1..c9f54594910 100644 --- a/src/hotspot/share/opto/vectorization.hpp +++ b/src/hotspot/share/opto/vectorization.hpp @@ -129,6 +129,9 @@ class VLoop : public StackObj { int estimated_body_length() const { return lpt()->_body.size(); }; int estimated_node_count() const { return (int)(1.10 * phase()->C->unique()); }; + // Should we align vector memory references on this platform? + static bool vectors_should_be_aligned() { return !Matcher::misaligned_vectors_ok() || AlignVector; } + #ifndef PRODUCT const VTrace& vtrace() const { return _vtrace; } @@ -1320,4 +1323,12 @@ class AlignmentSolver { #endif }; +struct VTransformBoolTest { + const BoolTest::mask _mask; + const bool _is_negated; + + VTransformBoolTest(const BoolTest::mask mask, bool is_negated) : + _mask(mask), _is_negated(is_negated) {} +}; + #endif // SHARE_OPTO_VECTORIZATION_HPP diff --git a/src/hotspot/share/opto/vectornode.cpp b/src/hotspot/share/opto/vectornode.cpp index d560f112039..72b49c043b6 100644 --- a/src/hotspot/share/opto/vectornode.cpp +++ b/src/hotspot/share/opto/vectornode.cpp @@ -507,7 +507,11 @@ bool VectorNode::is_shift_opcode(int opc) { } } -bool VectorNode::can_transform_shift_op(Node* n, BasicType bt) { +// Vector unsigned right shift for signed subword types behaves differently +// from Java Spec. But when the shift amount is a constant not greater than +// the number of sign extended bits, the unsigned right shift can be +// vectorized to a signed right shift. +bool VectorNode::can_use_RShiftI_instead_of_URShiftI(Node* n, BasicType bt) { if (n->Opcode() != Op_URShiftI) { return false; } @@ -920,6 +924,50 @@ bool VectorNode::is_vector_bitwise_not_pattern(Node* n) { return false; } +bool VectorNode::is_scalar_unary_op_with_equal_input_and_output_types(int opc) { + switch (opc) { + case Op_SqrtF: + case Op_SqrtD: + case Op_AbsF: + case Op_AbsD: + case Op_AbsI: + case Op_AbsL: + case Op_NegF: + case Op_NegD: + case Op_RoundF: + case Op_RoundD: + case Op_ReverseBytesI: + case Op_ReverseBytesL: + case Op_ReverseBytesUS: + case Op_ReverseBytesS: + case Op_ReverseI: + case Op_ReverseL: + case Op_PopCountI: + case Op_CountLeadingZerosI: + case Op_CountTrailingZerosI: + return true; + default: + return false; + } +} + +// Java API for Long.bitCount/numberOfLeadingZeros/numberOfTrailingZeros +// returns int type, but Vector API for them returns long type. To unify +// the implementation in backend, AutoVectorization splits the vector +// implementation for Java API into an execution node with long type plus +// another node converting long to int. +bool VectorNode::is_scalar_op_that_returns_int_but_vector_op_returns_long(int opc) { + switch (opc) { + case Op_PopCountL: + case Op_CountLeadingZerosL: + case Op_CountTrailingZerosL: + return true; + default: + return false; + } +} + + Node* VectorNode::try_to_gen_masked_vector(PhaseGVN* gvn, Node* node, const TypeVect* vt) { int vopc = node->Opcode(); uint vlen = vt->length(); diff --git a/src/hotspot/share/opto/vectornode.hpp b/src/hotspot/share/opto/vectornode.hpp index 6c5402eb511..23ddebaf338 100644 --- a/src/hotspot/share/opto/vectornode.hpp +++ b/src/hotspot/share/opto/vectornode.hpp @@ -84,7 +84,7 @@ class VectorNode : public TypeNode { static VectorNode* make_mask_node(int vopc, Node* n1, Node* n2, uint vlen, BasicType bt); static bool is_shift_opcode(int opc); - static bool can_transform_shift_op(Node* n, BasicType bt); + static bool can_use_RShiftI_instead_of_URShiftI(Node* n, BasicType bt); static bool is_convert_opcode(int opc); static bool is_minmax_opcode(int opc); @@ -130,6 +130,9 @@ class VectorNode : public TypeNode { return is_vector_shift_count(n->Opcode()); } + static bool is_scalar_unary_op_with_equal_input_and_output_types(int opc); + static bool is_scalar_op_that_returns_int_but_vector_op_returns_long(int opc); + static void trace_new_vector(Node* n, const char* context) { #ifdef ASSERT if (TraceNewVectors) { From 5528ad74902fa4f4ec621d70e7e7d85f4ac1d780 Mon Sep 17 00:00:00 2001 From: Thomas Stuefe Date: Thu, 13 Jun 2024 08:38:04 +0000 Subject: [PATCH 02/70] 8334179: VMATreeTest.TestConsistencyWithSimpleTracker_vm runs 50+ seconds Reviewed-by: jsjolen --- test/hotspot/gtest/nmt/test_vmatree.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test/hotspot/gtest/nmt/test_vmatree.cpp b/test/hotspot/gtest/nmt/test_vmatree.cpp index a56bd08b0e0..17eb61352cd 100644 --- a/test/hotspot/gtest/nmt/test_vmatree.cpp +++ b/test/hotspot/gtest/nmt/test_vmatree.cpp @@ -358,7 +358,7 @@ struct SimpleVMATracker : public CHeapObj { } }; // Page (4KiB) granular array - static constexpr const size_t num_pages = 1024 * 512; + static constexpr const size_t num_pages = 1024 * 4; Info pages[num_pages]; SimpleVMATracker() @@ -434,8 +434,6 @@ TEST_VM_F(VMATreeTest, TestConsistencyWithSimpleTracker) { const MEMFLAGS candidate_flags[candidates_len_flags] = { mtNMT, mtTest, - mtGC, - mtCompiler }; const int operation_count = 100000; // One hundred thousand From 57b6481449612529615484a313d8b85ccf23e287 Mon Sep 17 00:00:00 2001 From: Matthias Baesken Date: Thu, 13 Jun 2024 12:45:32 +0000 Subject: [PATCH 03/70] 8333277: ubsan: mlib_ImageScanPoly.c:292:43: runtime error: division by zero Reviewed-by: prr --- .../share/native/libmlib_image/mlib_ImageScanPoly.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/java.desktop/share/native/libmlib_image/mlib_ImageScanPoly.c b/src/java.desktop/share/native/libmlib_image/mlib_ImageScanPoly.c index a643b9c111c..a6f4cfdd36e 100644 --- a/src/java.desktop/share/native/libmlib_image/mlib_ImageScanPoly.c +++ b/src/java.desktop/share/native/libmlib_image/mlib_ImageScanPoly.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -289,13 +289,15 @@ mlib_status mlib_AffineEdges(mlib_affine_param *param, mlib_d64 dX1 = coords[(topIdx - i) & 0x3][0]; mlib_d64 dY2 = coords[(topIdx - i - 1) & 0x3][1]; mlib_d64 dX2 = coords[(topIdx - i - 1) & 0x3][0]; - mlib_d64 x = dX1, slope = (dX2 - dX1) / (dY2 - dY1); + mlib_d64 x = dX1, slope; mlib_s32 y1; mlib_s32 y2; if (dY1 == dY2) continue; + slope = (dX2 - dX1) / (dY2 - dY1); + if (!(IS_FINITE(slope))) { continue; } @@ -330,13 +332,15 @@ mlib_status mlib_AffineEdges(mlib_affine_param *param, mlib_d64 dX1 = coords[(topIdx + i) & 0x3][0]; mlib_d64 dY2 = coords[(topIdx + i + 1) & 0x3][1]; mlib_d64 dX2 = coords[(topIdx + i + 1) & 0x3][0]; - mlib_d64 x = dX1, slope = (dX2 - dX1) / (dY2 - dY1); + mlib_d64 x = dX1, slope; mlib_s32 y1; mlib_s32 y2; if (dY1 == dY2) continue; + slope = (dX2 - dX1) / (dY2 - dY1); + if (!(IS_FINITE(slope))) { continue; } From f8c657f6716c0de747be16814b55c3886bedf2d2 Mon Sep 17 00:00:00 2001 From: Matthias Baesken Date: Thu, 13 Jun 2024 13:13:19 +0000 Subject: [PATCH 04/70] 8334123: log the opening of Type 1 fonts Reviewed-by: prr --- src/java.desktop/share/classes/sun/font/Type1Font.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/java.desktop/share/classes/sun/font/Type1Font.java b/src/java.desktop/share/classes/sun/font/Type1Font.java index 1cd046eadd1..cc36c193de0 100644 --- a/src/java.desktop/share/classes/sun/font/Type1Font.java +++ b/src/java.desktop/share/classes/sun/font/Type1Font.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -187,7 +187,9 @@ public Type1Font(String platname, Object nativeNames, boolean createdCopy) private synchronized ByteBuffer getBuffer() throws FontFormatException { ByteBuffer bbuf = bufferRef.get(); if (bbuf == null) { - //System.out.println("open T1 " + platName); + if (FontUtilities.isLogging()) { + FontUtilities.logInfo("open Type 1 font: " + platName); + } try { @SuppressWarnings("removal") RandomAccessFile raf = (RandomAccessFile) @@ -229,6 +231,9 @@ protected void close() { void readFile(ByteBuffer buffer) { RandomAccessFile raf = null; FileChannel fc; + if (FontUtilities.isLogging()) { + FontUtilities.logInfo("open Type 1 font: " + platName); + } try { raf = (RandomAccessFile) java.security.AccessController.doPrivileged( From f5213671f7b636b32bb93c78e43696a61cd69bae Mon Sep 17 00:00:00 2001 From: Christoph Langer Date: Thu, 13 Jun 2024 13:14:54 +0000 Subject: [PATCH 05/70] 8211847: [aix] java/lang/ProcessHandle/InfoTest.java fails: "reported cputime less than expected" Reviewed-by: stuefe --- test/jdk/ProblemList.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/test/jdk/ProblemList.txt b/test/jdk/ProblemList.txt index da674d6a047..bc460990c1e 100644 --- a/test/jdk/ProblemList.txt +++ b/test/jdk/ProblemList.txt @@ -486,7 +486,6 @@ java/beans/XMLEncoder/Test6570354.java 8015593 macosx-all # jdk_lang -java/lang/ProcessHandle/InfoTest.java 8211847 aix-ppc64 java/lang/invoke/LFCaching/LFMultiThreadCachingTest.java 8151492 generic-all java/lang/invoke/LFCaching/LFGarbageCollectedTest.java 8078602 generic-all java/lang/invoke/lambda/LambdaFileEncodingSerialization.java 8249079 linux-all From 9d8439c10780c3a0169c2675955a0506518f44fb Mon Sep 17 00:00:00 2001 From: Christoph Langer Date: Thu, 13 Jun 2024 13:16:38 +0000 Subject: [PATCH 06/70] 8211854: [aix] java/net/ServerSocket/AcceptInheritHandle.java fails: read times out Reviewed-by: dfuchs, jpai --- test/jdk/ProblemList.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/jdk/ProblemList.txt b/test/jdk/ProblemList.txt index bc460990c1e..4ea08fa2bbc 100644 --- a/test/jdk/ProblemList.txt +++ b/test/jdk/ProblemList.txt @@ -551,8 +551,6 @@ java/net/MulticastSocket/SetLoopbackMode.java 7122846,8308807 java/net/MulticastSocket/SetOutgoingIf.java 8308807 aix-ppc64 java/net/MulticastSocket/Test.java 7145658,8308807 macosx-all,aix-ppc64 -java/net/ServerSocket/AcceptInheritHandle.java 8211854 aix-ppc64 - java/net/Socket/asyncClose/Race.java 8317801 aix-ppc64 ############################################################################ From 0d3a3771c3777d3dd1fec8dc8faed5fd02b06830 Mon Sep 17 00:00:00 2001 From: Matthias Baesken Date: Thu, 13 Jun 2024 14:02:01 +0000 Subject: [PATCH 07/70] 8333887: ubsan: unsafe.cpp:247:13: runtime error: store to null pointer of type 'volatile int' Reviewed-by: lucy, mdoerr --- src/hotspot/share/prims/unsafe.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/hotspot/share/prims/unsafe.cpp b/src/hotspot/share/prims/unsafe.cpp index 880f1f6ab5d..d290627c197 100644 --- a/src/hotspot/share/prims/unsafe.cpp +++ b/src/hotspot/share/prims/unsafe.cpp @@ -242,6 +242,11 @@ class MemoryAccess : StackObj { return normalize_for_read(*addr()); } + // we use this method at some places for writing to 0 e.g. to cause a crash; + // ubsan does not know that this is the desired behavior +#if defined(__clang__) || defined(__GNUC__) +__attribute__((no_sanitize("undefined"))) +#endif void put(T x) { GuardUnsafeAccess guard(_thread); *addr() = normalize_for_write(x); From 9ed8629e5d5e7b811c354cc1daf1ce5429eb184e Mon Sep 17 00:00:00 2001 From: Jayathirth D V Date: Thu, 13 Jun 2024 15:50:53 +0000 Subject: [PATCH 08/70] 8333801: Typos in @code references of BufferedImage and JTableHeader Reviewed-by: abhiscxk, prr --- .../share/classes/java/awt/image/BufferedImage.java | 8 ++++---- .../share/classes/javax/swing/table/JTableHeader.java | 4 ++-- test/jdk/javax/swing/JTabbedPane/4361477/bug4361477.java | 5 ++--- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/java.desktop/share/classes/java/awt/image/BufferedImage.java b/src/java.desktop/share/classes/java/awt/image/BufferedImage.java index 43f0959158d..cfbebd68710 100644 --- a/src/java.desktop/share/classes/java/awt/image/BufferedImage.java +++ b/src/java.desktop/share/classes/java/awt/image/BufferedImage.java @@ -899,7 +899,7 @@ public WritableRaster getAlphaRaster() { * *

* - * An {@code ArrayOutOfBoundsException} may be thrown + * An {@code ArrayIndexOutOfBoundsException} may be thrown * if the coordinates are not in bounds. * However, explicit bounds checking is not guaranteed. * @@ -933,7 +933,7 @@ public int getRGB(int x, int y) { * *

* - * An {@code ArrayOutOfBoundsException} may be thrown + * An {@code ArrayIndexOutOfBoundsException} may be thrown * if the region is not in bounds. * However, explicit bounds checking is not guaranteed. * @@ -1003,7 +1003,7 @@ public int[] getRGB(int startX, int startY, int w, int h, * *

* - * An {@code ArrayOutOfBoundsException} may be thrown + * An {@code ArrayIndexOutOfBoundsException} may be thrown * if the coordinates are not in bounds. * However, explicit bounds checking is not guaranteed. * @@ -1033,7 +1033,7 @@ public void setRGB(int x, int y, int rgb) { * *

* - * An {@code ArrayOutOfBoundsException} may be thrown + * An {@code ArrayIndexOutOfBoundsException} may be thrown * if the region is not in bounds. * However, explicit bounds checking is not guaranteed. * diff --git a/src/java.desktop/share/classes/javax/swing/table/JTableHeader.java b/src/java.desktop/share/classes/javax/swing/table/JTableHeader.java index 6424846d3d0..6372d6bc4ab 100644 --- a/src/java.desktop/share/classes/javax/swing/table/JTableHeader.java +++ b/src/java.desktop/share/classes/javax/swing/table/JTableHeader.java @@ -951,7 +951,7 @@ public AccessibleContext getAccessibleContext() { private AccessibleContext getCurrentAccessibleContext() { TableColumnModel tcm = table.getColumnModel(); if (tcm != null) { - // Fixes 4772355 - ArrayOutOfBoundsException in + // Fixes 4772355 - ArrayIndexOutOfBoundsException in // JTableHeader if (column < 0 || column >= tcm.getColumnCount()) { return null; @@ -979,7 +979,7 @@ private AccessibleContext getCurrentAccessibleContext() { private Component getCurrentComponent() { TableColumnModel tcm = table.getColumnModel(); if (tcm != null) { - // Fixes 4772355 - ArrayOutOfBoundsException in + // Fixes 4772355 - ArrayIndexOutOfBoundsException in // JTableHeader if (column < 0 || column >= tcm.getColumnCount()) { return null; diff --git a/test/jdk/javax/swing/JTabbedPane/4361477/bug4361477.java b/test/jdk/javax/swing/JTabbedPane/4361477/bug4361477.java index 6cf6231bb8b..4f338601dc6 100644 --- a/test/jdk/javax/swing/JTabbedPane/4361477/bug4361477.java +++ b/test/jdk/javax/swing/JTabbedPane/4361477/bug4361477.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,8 +30,7 @@ * @test * @key headful * @bug 4361477 - * @summary JTabbedPane throws ArrayOutOfBoundsException - * @author Oleg Mokhovikov + * @summary JTabbedPane throws ArrayIndexOutOfBoundsException * @run main bug4361477 */ public class bug4361477 { From 814cf8793097ef03a15068589c22a59ac5966430 Mon Sep 17 00:00:00 2001 From: Larry Cable Date: Thu, 13 Jun 2024 16:28:04 +0000 Subject: [PATCH 09/70] 8313562: hsperfdata should export module path and "launcher" metadata Reviewed-by: dholmes, kevinw --- src/hotspot/share/runtime/statSampler.cpp | 17 +++++++++++++++++ src/hotspot/share/runtime/statSampler.hpp | 1 + 2 files changed, 18 insertions(+) diff --git a/src/hotspot/share/runtime/statSampler.cpp b/src/hotspot/share/runtime/statSampler.cpp index 5d2e102ada4..5fd038bf845 100644 --- a/src/hotspot/share/runtime/statSampler.cpp +++ b/src/hotspot/share/runtime/statSampler.cpp @@ -228,6 +228,19 @@ void StatSampler::add_property_constant(CounterNS name_space, const char* name, add_property_constant(name_space, name, Arguments::get_property(name), CHECK); } +/* + * Adds a string constant of the given property. Retrieves the value via + * Arguments::get_property() and asserts the value for the does not differ from + * the value retrievable from System.getProperty() + */ +void StatSampler::add_optional_property_constant(CounterNS name_space, const char* name, TRAPS) { + const char* value = Arguments::get_property(name); + + if (value != nullptr) { + add_property_constant(name_space, name, value, CHECK); + } +} + /* * Method to create PerfStringConstants containing the values of various * system properties. Constants are created from information known to HotSpot, @@ -260,6 +273,10 @@ void StatSampler::create_system_property_instrumentation(TRAPS) { add_property_constant(JAVA_PROPERTY, "java.library.path", CHECK); add_property_constant(JAVA_PROPERTY, "java.class.path", CHECK); add_property_constant(JAVA_PROPERTY, "java.home", CHECK); + + add_optional_property_constant(JAVA_PROPERTY, "jdk.module.path", CHECK); + add_optional_property_constant(JAVA_PROPERTY, "jdk.module.upgrade.path", CHECK); + add_optional_property_constant(JAVA_PROPERTY, "jdk.module.main", CHECK); } /* diff --git a/src/hotspot/share/runtime/statSampler.hpp b/src/hotspot/share/runtime/statSampler.hpp index a26f9743e0c..00daa5d95c0 100644 --- a/src/hotspot/share/runtime/statSampler.hpp +++ b/src/hotspot/share/runtime/statSampler.hpp @@ -53,6 +53,7 @@ class StatSampler : AllStatic { static void sample_data(PerfDataList* list); static void assert_system_property(const char* name, const char* value, TRAPS); static void add_property_constant(CounterNS name_space, const char* name, TRAPS); + static void add_optional_property_constant(CounterNS name_space, const char* name, TRAPS); static void add_property_constant(CounterNS name_space, const char* name, const char* value, TRAPS); static void create_system_property_instrumentation(TRAPS); From cff048c7354dd947a3946d262f4752a55b7e2a43 Mon Sep 17 00:00:00 2001 From: Viktor Klang Date: Thu, 13 Jun 2024 16:30:27 +0000 Subject: [PATCH 10/70] 8334162: Gatherer.defaultCombiner has an erronous @see-link Reviewed-by: jpai, alanb --- src/java.base/share/classes/java/util/stream/Gatherer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/java.base/share/classes/java/util/stream/Gatherer.java b/src/java.base/share/classes/java/util/stream/Gatherer.java index ced746cd673..40c3c682e73 100644 --- a/src/java.base/share/classes/java/util/stream/Gatherer.java +++ b/src/java.base/share/classes/java/util/stream/Gatherer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -293,7 +293,7 @@ static Supplier defaultInitializer() { * * @implSpec This method always returns the same instance. * - * @see Gatherer#finisher() + * @see Gatherer#combiner() * @return the instance of the default combiner * @param the type of the state of the returned combiner */ From b09a45163ccc566b4f7653c2e9030e359396c90f Mon Sep 17 00:00:00 2001 From: Emanuel Peter Date: Thu, 13 Jun 2024 18:11:36 +0000 Subject: [PATCH 11/70] 8333840: C2 SuperWord: wrong result for MulAddS2I when inputs permuted Reviewed-by: kvn, chagedorn --- src/hotspot/share/opto/superword.cpp | 59 +++++++++- src/hotspot/share/opto/superword.hpp | 3 +- .../loopopts/superword/TestMulAddS2I.java | 111 ++++++++++++++---- 3 files changed, 141 insertions(+), 32 deletions(-) diff --git a/src/hotspot/share/opto/superword.cpp b/src/hotspot/share/opto/superword.cpp index e71a6026209..5cd4341c42d 100644 --- a/src/hotspot/share/opto/superword.cpp +++ b/src/hotspot/share/opto/superword.cpp @@ -2794,11 +2794,7 @@ bool SuperWord::is_vector_use(Node* use, int u_idx) const { } if (VectorNode::is_muladds2i(use)) { - // MulAddS2I takes shorts and produces ints. - if (u_pk->size() * 2 != d_pk->size()) { - return false; - } - return true; + return _packset.is_muladds2i_pack_with_pack_inputs(u_pk); } if (u_pk->size() != d_pk->size()) { @@ -2815,6 +2811,59 @@ bool SuperWord::is_vector_use(Node* use, int u_idx) const { return true; } +// MulAddS2I takes 4 shorts and produces an int. We can reinterpret +// the 4 shorts as two ints: a = (a0, a1) and b = (b0, b1). +// +// Inputs: 1 2 3 4 +// Offsets: 0 0 1 1 +// v = MulAddS2I(a, b) = a0 * b0 + a1 * b1 +// +// But permutations are possible, because add and mul are commutative. For +// simplicity, the first input is always either a0 or a1. These are all +// the possible permutations: +// +// v = MulAddS2I(a, b) = a0 * b0 + a1 * b1 (case 1) +// v = MulAddS2I(a, b) = a0 * b0 + b1 * a1 (case 2) +// v = MulAddS2I(a, b) = a1 * b1 + a0 * b0 (case 3) +// v = MulAddS2I(a, b) = a1 * b1 + b0 * a0 (case 4) +// +// To vectorize, we expect (a0, a1) to be consecutive in one input pack, +// and (b0, b1) in the other input pack. Thus, both a and b are strided, +// with stride = 2. Further, a0 and b0 have offset 0, whereas a1 and b1 +// have offset 1. +bool PackSet::is_muladds2i_pack_with_pack_inputs(const Node_List* pack) const { + assert(VectorNode::is_muladds2i(pack->at(0)), "must be MulAddS2I"); + + bool pack1_has_offset_0 = (strided_pack_input_at_index_or_null(pack, 1, 2, 0) != nullptr); + Node_List* pack1 = strided_pack_input_at_index_or_null(pack, 1, 2, pack1_has_offset_0 ? 0 : 1); + Node_List* pack2 = strided_pack_input_at_index_or_null(pack, 2, 2, pack1_has_offset_0 ? 0 : 1); + Node_List* pack3 = strided_pack_input_at_index_or_null(pack, 3, 2, pack1_has_offset_0 ? 1 : 0); + Node_List* pack4 = strided_pack_input_at_index_or_null(pack, 4, 2, pack1_has_offset_0 ? 1 : 0); + + return pack1 != nullptr && + pack2 != nullptr && + pack3 != nullptr && + pack4 != nullptr && + ((pack1 == pack3 && pack2 == pack4) || // case 1 or 3 + (pack1 == pack4 && pack2 == pack3)); // case 2 or 4 +} + +Node_List* PackSet::strided_pack_input_at_index_or_null(const Node_List* pack, const int index, const int stride, const int offset) const { + Node* def0 = pack->at(0)->in(index); + + Node_List* pack_in = get_pack(def0); + if (pack_in == nullptr || pack->size() * stride != pack_in->size()) { + return nullptr; // size mismatch + } + + for (uint i = 1; i < pack->size(); i++) { + if (pack->at(i)->in(index) != pack_in->at(i * stride + offset)) { + return nullptr; // use-def mismatch + } + } + return pack_in; +} + // Check if the output type of def is compatible with the input type of use, i.e. if the // types have the same size. bool SuperWord::is_velt_basic_type_compatible_use_def(Node* use, Node* def) const { diff --git a/src/hotspot/share/opto/superword.hpp b/src/hotspot/share/opto/superword.hpp index c118b420117..fb91d014fae 100644 --- a/src/hotspot/share/opto/superword.hpp +++ b/src/hotspot/share/opto/superword.hpp @@ -362,8 +362,9 @@ class PackSet : public StackObj { } } + Node_List* strided_pack_input_at_index_or_null(const Node_List* pack, const int index, const int stride, const int offset) const; + bool is_muladds2i_pack_with_pack_inputs(const Node_List* pack) const; Node* same_inputs_at_index_or_null(const Node_List* pack, const int index) const; - VTransformBoolTest get_bool_test(const Node_List* bool_pack) const; private: diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestMulAddS2I.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestMulAddS2I.java index 4521d43804b..578d4ee8bdb 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestMulAddS2I.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestMulAddS2I.java @@ -41,7 +41,6 @@ public class TestMulAddS2I { static short[] sArr1 = new short[RANGE]; static short[] sArr2 = new short[RANGE]; - static int[] ioutArr = new int[RANGE]; static final int[] GOLDEN_A; static final int[] GOLDEN_B; static final int[] GOLDEN_C; @@ -50,6 +49,10 @@ public class TestMulAddS2I { static final int[] GOLDEN_F; static final int[] GOLDEN_G; static final int[] GOLDEN_H; + static final int[] GOLDEN_I; + static final int[] GOLDEN_J; + static final int[] GOLDEN_K; + static final int[] GOLDEN_L; static { for (int i = 0; i < RANGE; i++) { @@ -58,12 +61,16 @@ public class TestMulAddS2I { } GOLDEN_A = testa(); GOLDEN_B = testb(); - GOLDEN_C = testc(); - GOLDEN_D = testd(); - GOLDEN_E = teste(); - GOLDEN_F = testf(); - GOLDEN_G = testg(); - GOLDEN_H = testh(); + GOLDEN_C = testc(new int[ITER]); + GOLDEN_D = testd(new int[ITER]); + GOLDEN_E = teste(new int[ITER]); + GOLDEN_F = testf(new int[ITER]); + GOLDEN_G = testg(new int[ITER]); + GOLDEN_H = testh(new int[ITER]); + GOLDEN_I = testi(new int[ITER]); + GOLDEN_J = testj(new int[ITER]); + GOLDEN_K = testk(new int[ITER]); + GOLDEN_L = testl(new int[ITER]); } @@ -72,17 +79,22 @@ public static void main(String[] args) { TestFramework.runWithFlags("-XX:-AlignVector"); } - @Run(test = {"testa", "testb", "testc", "testd", "teste", "testf", "testg", "testh"}) + @Run(test = {"testa", "testb", "testc", "testd", "teste", "testf", "testg", "testh", + "testi", "testj", "testk", "testl"}) @Warmup(0) public static void run() { compare(testa(), GOLDEN_A, "testa"); compare(testb(), GOLDEN_B, "testb"); - compare(testc(), GOLDEN_C, "testc"); - compare(testd(), GOLDEN_D, "testd"); - compare(teste(), GOLDEN_E, "teste"); - compare(testf(), GOLDEN_F, "testf"); - compare(testg(), GOLDEN_G, "testg"); - compare(testh(), GOLDEN_H, "testh"); + compare(testc(new int[ITER]), GOLDEN_C, "testc"); + compare(testd(new int[ITER]), GOLDEN_D, "testd"); + compare(teste(new int[ITER]), GOLDEN_E, "teste"); + compare(testf(new int[ITER]), GOLDEN_F, "testf"); + compare(testg(new int[ITER]), GOLDEN_G, "testg"); + compare(testh(new int[ITER]), GOLDEN_H, "testh"); + compare(testi(new int[ITER]), GOLDEN_I, "testi"); + compare(testj(new int[ITER]), GOLDEN_J, "testj"); + compare(testk(new int[ITER]), GOLDEN_K, "testk"); + compare(testl(new int[ITER]), GOLDEN_L, "testl"); } public static void compare(int[] out, int[] golden, String name) { @@ -138,8 +150,7 @@ public static int[] testb() { counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"}) @IR(applyIfCPUFeature = {"avx512_vnni", "true"}, counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI_VNNI, "> 0"}) - public static int[] testc() { - int[] out = new int[ITER]; + public static int[] testc(int[] out) { for (int i = 0; i < ITER; i++) { out[i] += ((sArr1[2*i] * sArr2[2*i]) + (sArr1[2*i+1] * sArr2[2*i+1])); } @@ -155,8 +166,7 @@ public static int[] testc() { counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"}) @IR(applyIfCPUFeature = {"avx512_vnni", "true"}, counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI_VNNI, "> 0"}) - public static int[] testd() { - int[] out = ioutArr; + public static int[] testd(int[] out) { for (int i = 0; i < ITER-2; i+=2) { // Unrolled, with the same structure. out[i+0] += ((sArr1[2*i+0] * sArr2[2*i+0]) + (sArr1[2*i+1] * sArr2[2*i+1])); @@ -174,8 +184,7 @@ public static int[] testd() { counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"}) @IR(applyIfCPUFeature = {"avx512_vnni", "true"}, counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI_VNNI, "> 0"}) - public static int[] teste() { - int[] out = ioutArr; + public static int[] teste(int[] out) { for (int i = 0; i < ITER-2; i+=2) { // Unrolled, with some swaps. out[i+0] += ((sArr1[2*i+0] * sArr2[2*i+0]) + (sArr1[2*i+1] * sArr2[2*i+1])); @@ -193,8 +202,7 @@ public static int[] teste() { counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"}) @IR(applyIfCPUFeature = {"avx512_vnni", "true"}, counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI_VNNI, "> 0"}) - public static int[] testf() { - int[] out = ioutArr; + public static int[] testf(int[] out) { for (int i = 0; i < ITER-2; i+=2) { // Unrolled, with some swaps. out[i+0] += ((sArr1[2*i+0] * sArr2[2*i+0]) + (sArr1[2*i+1] * sArr2[2*i+1])); @@ -212,8 +220,7 @@ public static int[] testf() { counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"}) @IR(applyIfCPUFeature = {"avx512_vnni", "true"}, counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI_VNNI, "> 0"}) - public static int[] testg() { - int[] out = ioutArr; + public static int[] testg(int[] out) { for (int i = 0; i < ITER-2; i+=2) { // Unrolled, with some swaps. out[i+0] += ((sArr1[2*i+0] * sArr2[2*i+0]) + (sArr1[2*i+1] * sArr2[2*i+1])); @@ -231,8 +238,7 @@ public static int[] testg() { counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI, "> 0"}) @IR(applyIfCPUFeature = {"avx512_vnni", "true"}, counts = {IRNode.MUL_ADD_S2I, "> 0", IRNode.MUL_ADD_VS2VI_VNNI, "> 0"}) - public static int[] testh() { - int[] out = ioutArr; + public static int[] testh(int[] out) { for (int i = 0; i < ITER-2; i+=2) { // Unrolled, with some swaps. out[i+0] += ((sArr1[2*i+0] * sArr2[2*i+0]) + (sArr1[2*i+1] * sArr2[2*i+1])); @@ -240,4 +246,57 @@ public static int[] testh() { } return out; } + + @Test + @IR(counts = {IRNode.MUL_ADD_S2I, "> 0"}, + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) + @IR(counts = {IRNode.MUL_ADD_VS2VI, "= 0"}) + public static int[] testi(int[] out) { + for (int i = 0; i < ITER-2; i+=2) { + // Unrolled, with some swaps that prevent vectorization. + out[i+0] += ((sArr1[2*i+0] * sArr2[2*i+0]) + (sArr1[2*i+1] * sArr2[2*i+1])); // ok + out[i+1] += ((sArr1[2*i+2] * sArr2[2*i+3]) + (sArr1[2*i+3] * sArr2[2*i+2])); // bad + } + return out; + } + + @Test + @IR(counts = {IRNode.MUL_ADD_S2I, "> 0"}, + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) + @IR(counts = {IRNode.MUL_ADD_VS2VI, "= 0"}) + public static int[] testj(int[] out) { + for (int i = 0; i < ITER-2; i+=2) { + // Unrolled, with some swaps that prevent vectorization. + out[i+0] += ((sArr1[2*i+0] * sArr2[2*i+1]) + (sArr1[2*i+1] * sArr2[2*i+0])); // bad + out[i+1] += ((sArr1[2*i+2] * sArr2[2*i+3]) + (sArr1[2*i+3] * sArr2[2*i+2])); // bad + } + return out; + } + + @Test + @IR(counts = {IRNode.MUL_ADD_S2I, "> 0"}, + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) + @IR(counts = {IRNode.MUL_ADD_VS2VI, "= 0"}) + public static int[] testk(int[] out) { + for (int i = 0; i < ITER-2; i+=2) { + // Unrolled, with some swaps that prevent vectorization. + out[i+0] += ((sArr1[2*i+0] * sArr2[2*i+1]) + (sArr1[2*i+1] * sArr2[2*i+0])); // bad + out[i+1] += ((sArr1[2*i+2] * sArr2[2*i+2]) + (sArr1[2*i+3] * sArr2[2*i+3])); // ok + } + return out; + } + + @Test + @IR(counts = {IRNode.MUL_ADD_S2I, "> 0"}, + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) + @IR(counts = {IRNode.MUL_ADD_VS2VI, "= 0"}) + public static int[] testl(int[] out) { + for (int i = 0; i < ITER-2; i+=2) { + // Unrolled, with some swaps that prevent vectorization. + out[i+0] += ((sArr1[2*i+1] * sArr2[2*i+1]) + (sArr1[2*i+0] * sArr2[2*i+0])); // ok + out[i+1] += ((sArr1[2*i+2] * sArr2[2*i+3]) + (sArr1[2*i+3] * sArr2[2*i+2])); // bad + } + return out; + } + } From 6462b873366ddc4ca2601ab4b6852522060c1395 Mon Sep 17 00:00:00 2001 From: Sonia Zaldana Calles Date: Thu, 13 Jun 2024 19:38:39 +0000 Subject: [PATCH 12/70] 8333685: Make update-copyright-year script more useful Reviewed-by: erikj, stuefe --- make/scripts/update_copyright_year.sh | 133 ++++++++++++++------------ 1 file changed, 74 insertions(+), 59 deletions(-) diff --git a/make/scripts/update_copyright_year.sh b/make/scripts/update_copyright_year.sh index a825486a941..bb61d48c91c 100644 --- a/make/scripts/update_copyright_year.sh +++ b/make/scripts/update_copyright_year.sh @@ -1,7 +1,7 @@ #!/bin/bash -f # -# Copyright (c) 2010, 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2010, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -27,8 +27,10 @@ # (Originally from xdono, Thanks!) #------------------------------------------------------------ -copyright="Copyright (c)" +copyright="Copyright" +copyright_symbol="(c)" company="Oracle" +year=`date +%Y` #------------------------------------------------------------ awk="awk" @@ -49,66 +51,75 @@ rm -f -r ${tmp} mkdir -p ${tmp} total=0 -# Default or supplied company name -if [ "$3" != "" ] ; then - company="$3" -fi - -# This year or supplied year -if [ "$2" != "" ] ; then - year="$2" -else - year=`date +%Y` -fi - -# VCS select -vcs="$1" +usage="Usage: `basename "$0"` [-c company] [-y year] [-h|f]" +Help() +{ + # Display Help + echo "Updates the Copyright year range in Git sources." + echo + echo "By default, the tool limits the processed changesets " + echo "to those in the current branch and the current year." + echo + echo "Note, cancelling the script will skip cleanup in /tmp." + echo + echo $usage + echo "options:" + echo "-c Specifies the company. Set to Oracle by default." + echo "-y Specifies the copyright year. Set to current year by default." + echo "-f Updates the copyright for all change sets in a given year," + echo " as specified by -y." + echo "-h Print this help." + echo +} -if [ -z "$vcs" ] ; then - git_found=false - hg_found=false +full_year=false - [ -d "${this_script_dir}/../../.git" ] && git_found=true - [ -d "${this_script_dir}/../../.hg" ] && hg_found=true +# Process options +while getopts "c:fhy:" option; do + case $option in + c) # supplied company year + company=${OPTARG} + ;; + f) # update all change sets in a full year + full_year=true + ;; + h) # display help + Help + exit 0 + ;; + y) # supplied company year + year=${OPTARG} + ;; + \?) # illegal option + echo "$usage" + exit 1 + ;; + esac +done - if [ "$git_found" == "true" ] && [ "$hg_found" == "false" ] ; then - vcs="git" - elif [ "$hg_found" == "true" ] && [ "$git_found" == "false" ] ; then - vcs="hg" +# VCS check +git_found=false +[ -d "${this_script_dir}/../../.git" ] && git_found=true +if [ "$git_found" != "true" ]; then + echo "Error: Please execute script from within make/scripts." + exit 1 +else + echo "Using Git version control system" + vcs_status=(git ls-files -m) + if [ "$full_year" = "true" ]; then + vcs_list_changesets=(git log --no-merges --since="${year}-01-01T00:00:00Z" --until="${year}-12-31T23:59:59Z" --pretty=tformat:"%H") else - echo "Error: could not auto-detect version control system" - vcs="" + vcs_list_changesets=(git log --no-merges 'master..HEAD' --since="${year}-01-01T00:00:00Z" --until="${year}-12-31T23:59:59Z" --pretty=tformat:"%H") fi + vcs_changeset_message=(git log -1 --pretty=tformat:"%B") # followed by ${changeset} + vcs_changeset_files=(git diff-tree --no-commit-id --name-only -r) # followed by ${changeset} fi -case "$vcs" in - "git") - echo "Using Git version control system" - vcs_status=(git ls-files -m) - vcs_list_changesets=(git log --no-merges --since="${year}-01-01T00:00:00Z" --until="${year}-12-31T23:59:59Z" --pretty=tformat:"%H") - vcs_changeset_message=(git log -1 --pretty=tformat:"%B") # followed by ${changeset} - vcs_changeset_files=(git diff-tree --no-commit-id --name-only -r) # followed by ${changeset} - ;; - - "hg") - echo "Using Mercurial version control system" - vcs_status=(hg status) - vcs_list_changesets=(hg log --no-merges -v -d "${year}-01-01 to ${year}-12-31" --template '{node}\n') - vcs_changeset_message=(hg log -l1 --template '{desc}\n' --rev) # followed by ${changeset} - vcs_changeset_files=(hg log -l1 -v --template '{files}\n' --rev) # followed by ${changeset} - ;; - - *) - echo "Usage: `basename "$0"` [year [company]]" - exit 1 - ;; -esac - # Return true if it makes sense to edit this file saneFileToCheck() { if [ "$1" != "" -a -f $1 ] ; then - isText=`file "$1" | egrep -i '(text|source)' | cat` + isText=`file "$1" | grep -i -E '(text|source)' | cat` hasCopyright=`grep 'Copyright' "$1" | cat` lastLineCount=`tail -1 "$1" | wc -l` if [ "${isText}" != "" \ @@ -131,9 +142,13 @@ updateFile() # file rm -f $1.OLD mv $1 $1.OLD cat $1.OLD | \ - sed -e "s@\(${copyright} [12][0-9][0-9][0-9],\) [12][0-9][0-9][0-9], ${company}@\1 ${year}, ${company}@" | \ - sed -e "s@\(${copyright} [12][0-9][0-9][0-9],\) ${company}@\1 ${year}, ${company}@" | \ - sed -e "s@${copyright} ${year}, ${year}, ${company}@${copyright} ${year}, ${company}@" \ + sed -e "s@\(${copyright} \(${copyright_symbol} \)\{0,1\}[12][0-9][0-9][0-9],\) [12][0-9][0-9][0-9], ${company}@\1 ${year}, ${company}@" | \ + sed -e "s@\(${copyright} \(${copyright_symbol} \)\{0,1\}[12][0-9][0-9][0-9],\) [12][0-9][0-9][0-9] ${company}@\1 ${year} ${company}@" | \ + sed -e "s@\(${copyright} \(${copyright_symbol} \)\{0,1\}[12][0-9][0-9][0-9],\) ${company}@\1 ${year}, ${company}@" | \ + sed -e "s@\(${copyright} \(${copyright_symbol} \)\{0,1\}[12][0-9][0-9][0-9],\) ${company}@\1, ${year}, ${company}@" | \ + sed -e "s@\(${copyright} \(${copyright_symbol} \)\{0,1\}[12][0-9][0-9][0-9]\) ${company}@\1, ${year} ${company}@" | \ + sed -e "s@${copyright} ${year}, ${year}, ${company}@${copyright} ${year}, ${company}@" | \ + sed -e "s@${copyright} ${copyright_symbol} ${year}, ${year}, ${company}@${copyright} ${copyright_symbol} ${year}, ${company}@" \ > $1 if ! diff -b -w $1.OLD $1 > /dev/null ; then \ changed="true" @@ -205,19 +220,19 @@ if [ -s ${all_changesets} ] ; then "${vcs_changeset_message[@]}" "${changeset}" > ${desc} printf "%d: %s\n%s\n" ${index} "${changeset}" "`cat ${desc}|head -1`" if [ "${year}" = "2010" ] ; then - if cat ${desc} | fgrep -i "Added tag" > /dev/null ; then + if cat ${desc} | grep -i -F "Added tag" > /dev/null ; then printf " EXCLUDED tag changeset.\n" - elif cat ${desc} | fgrep -i rebrand > /dev/null ; then + elif cat ${desc} | grep -i -F rebrand > /dev/null ; then printf " EXCLUDED rebrand changeset.\n" - elif cat ${desc} | fgrep -i copyright > /dev/null ; then + elif cat ${desc} | grep -i -F copyright > /dev/null ; then printf " EXCLUDED copyright changeset.\n" else updateChangesetFiles ${changeset} fi else - if cat ${desc} | fgrep -i "Added tag" > /dev/null ; then + if cat ${desc} | grep -i -F "Added tag" > /dev/null ; then printf " EXCLUDED tag changeset.\n" - elif cat ${desc} | fgrep -i "copyright year" > /dev/null ; then + elif cat ${desc} | grep -i -F "copyright year" > /dev/null ; then printf " EXCLUDED copyright year changeset.\n" else updateChangesetFiles ${changeset} From 0721dbe44234d0b3ec9733943230e83b2e479063 Mon Sep 17 00:00:00 2001 From: "Marc R. Hoffmann" Date: Thu, 13 Jun 2024 19:44:10 +0000 Subject: [PATCH 13/70] 8334032: javax.print: Missing @since tag in new class OutputBin Reviewed-by: prr --- .../share/classes/javax/print/attribute/standard/OutputBin.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/java.desktop/share/classes/javax/print/attribute/standard/OutputBin.java b/src/java.desktop/share/classes/javax/print/attribute/standard/OutputBin.java index 3f817fe6c9b..af6113ad638 100644 --- a/src/java.desktop/share/classes/javax/print/attribute/standard/OutputBin.java +++ b/src/java.desktop/share/classes/javax/print/attribute/standard/OutputBin.java @@ -49,6 +49,8 @@ * IPP attribute name. The enumeration's integer value is the IPP enum value. * The {@code toString()} method returns the IPP string representation of the * attribute value. + * + * @since 23 */ public sealed class OutputBin extends EnumSyntax implements PrintRequestAttribute, PrintJobAttribute permits CustomOutputBin { From bb7ef03077fb91169b5505e3500093b848aece0f Mon Sep 17 00:00:00 2001 From: Raffaello Giulietti Date: Thu, 13 Jun 2024 20:55:48 +0000 Subject: [PATCH 14/70] 8333599: Improve description of \b matcher in j.u.r.Pattern Reviewed-by: smarks, alanb --- src/java.base/share/classes/java/util/regex/Pattern.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/java.base/share/classes/java/util/regex/Pattern.java b/src/java.base/share/classes/java/util/regex/Pattern.java index 62ef125fdee..0e87bebdcbf 100644 --- a/src/java.base/share/classes/java/util/regex/Pattern.java +++ b/src/java.base/share/classes/java/util/regex/Pattern.java @@ -160,7 +160,7 @@ * Any character (may or may not match line terminators) * {@code \d} * A digit: {@code [0-9]} if - * * UNICODE_CHARACTER_CLASS is not set. See Unicode Support. + * UNICODE_CHARACTER_CLASS is not set. See Unicode Support. * {@code \D} * A non-digit: {@code [^0-9]} * {@code \h} @@ -251,8 +251,9 @@ * {@code $} * The end of a line * {@code \b} - * A word boundary: {@code (?:(?<=\w)(?=\W)|(?<=\W)(?=\w))} (the location - * where a non-word character abuts a word character) + * A word boundary: + * at the beginning or at the end of a line if a word character ({@code \w}) appears there; + * or between a word ({@code \w}) and a non-word character ({@code \W}), in either order. * {@code \b{g}} * A Unicode extended grapheme cluster boundary * {@code \B} From c4702ca8c026e2d265aca0126fd3fb7bc5bb392a Mon Sep 17 00:00:00 2001 From: Damon Nguyen Date: Thu, 13 Jun 2024 21:27:56 +0000 Subject: [PATCH 15/70] 8333827: JDK 23 RDP1 L10n resource files update Reviewed-by: achung, jlu, naoto, joehw, prappo, cjplummer, asemenyuk, prr --- .../launcher/resources/launcher_de.properties | 5 +- .../launcher/resources/launcher_ja.properties | 5 +- .../resources/launcher_zh_CN.properties | 5 +- .../resources/serviceui_zh_CN.properties | 4 +- .../impl/msg/XMLMessages_de.properties | 2 +- .../impl/msg/XMLMessages_ja.properties | 2 +- .../impl/msg/XMLMessages_zh_CN.properties | 2 +- .../impl/msg/XPointerMessages_de.properties | 2 +- .../javac/resources/compiler_de.properties | 51 ++++++++++-------- .../javac/resources/compiler_ja.properties | 51 ++++++++++-------- .../javac/resources/compiler_zh_CN.properties | 53 +++++++++++-------- .../tools/javac/resources/javac_de.properties | 5 +- .../tools/javac/resources/javac_ja.properties | 5 +- .../javac/resources/javac_zh_CN.properties | 5 +- .../javac/resources/launcher_de.properties | 4 +- .../javac/resources/launcher_ja.properties | 4 +- .../javac/resources/launcher_zh_CN.properties | 4 +- .../html/resources/standard_de.properties | 12 ++++- .../html/resources/standard_ja.properties | 12 ++++- .../html/resources/standard_zh_CN.properties | 12 ++++- .../toolkit/resources/doclets_de.properties | 1 + .../toolkit/resources/doclets_ja.properties | 1 + .../resources/doclets_zh_CN.properties | 1 + .../tool/resources/javadoc_de.properties | 2 + .../tool/resources/javadoc_ja.properties | 2 + .../tool/resources/javadoc_zh_CN.properties | 2 + .../jconsole/resources/messages_de.properties | 2 +- .../tools/javap/resources/javap_de.properties | 2 + .../tools/javap/resources/javap_ja.properties | 2 + .../javap/resources/javap_zh_CN.properties | 2 + .../example/debug/tty/TTYResources_de.java | 2 +- .../resources/MacResources_de.properties | 2 +- .../resources/MacResources_ja.properties | 2 +- .../resources/MacResources_zh_CN.properties | 2 +- .../resources/WinResources_de.properties | 2 +- .../jshell/tool/resources/l10n_de.properties | 3 +- .../jshell/tool/resources/l10n_ja.properties | 5 +- .../tool/resources/l10n_zh_CN.properties | 4 +- 38 files changed, 180 insertions(+), 104 deletions(-) diff --git a/src/java.base/share/classes/sun/launcher/resources/launcher_de.properties b/src/java.base/share/classes/sun/launcher/resources/launcher_de.properties index 5da8b4bea5c..12ab942f91f 100644 --- a/src/java.base/share/classes/sun/launcher/resources/launcher_de.properties +++ b/src/java.base/share/classes/sun/launcher/resources/launcher_de.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2007, 2023, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2007, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -35,7 +35,7 @@ native Agent Library . Beispiel: -agentlib:jdwp\n sieh # Translators please note do not translate the options themselves java.launcher.X.usage=\n -Xbatch Deaktiviert die Hintergrundkompilierung\n -Xbootclasspath/a:\n An das Ende des Bootstrap Classpaths anhängen\n -Xcheck:jni Führt zusätzliche Prüfungen für JNI-Funktionen aus\n -Xcomp Erzwingt die Kompilierung von Methoden beim ersten Aufruf\n -Xdebug Führt keine Aktion aus. Ist veraltet und wird in einem zukünftigen Release entfernt.\n -Xdiag Zeigt zusätzliche Diagnosemeldungen an\n -Xfuture Aktiviert strengste Prüfungen, als möglicher zukünftiger Standardwert erwartet.\n Diese Option ist veraltet und kann in einem\n zukünftigen Release entfernt werden.\n -Xint Nur Ausführung im interpretierten Modus\n -Xinternalversion\n Zeigt detailliertere JVM-Versionsinformationen an als die\n Option -version\n -Xlog: Konfiguriert oder aktiviert Logging mit dem einheitlichen Java Virtual\n Machine-(JVM-)Logging-Framework. Verwenden Sie -Xlog:help\n für weitere Einzelheiten.\n -Xloggc: Protokolliert den GC-Status in einer Datei mit Zeitstempeln.\n Diese Option ist veraltet und kann in einem\n zukünftigen Release entfernt werden. Wird durch -Xlog:gc: ersetzt.\n -Xmixed Ausführung im gemischten Modus (Standard)\n -Xmn Legt die anfängliche und maximale Größe (in Byte) des Heaps\n für die Young Generation (Nursery) fest\n -Xms Legt die anfängliche Java-Heap-Größe fest\n -Xmx Legt die maximale Java-Heap-Größe fest\n -Xnoclassgc Deaktiviert die Klassen-Garbage Collection\n -Xrs Reduziert die Verwendung von BS-Signalen durch Java/VM (siehe Dokumentation)\n -Xshare:auto Verwendet freigegebene Klassendaten, wenn möglich (Standard)\n -Xshare:off Versucht nicht, freigegebene Klassendaten zu verwenden\n -Xshare:on Erfordert die Verwendung freigegebener Klassendaten, verläuft sonst nicht erfolgreich.\n Diese Testoption kann zeitweise zu\n Fehlern führen. Sie darf nicht in Produktionsumgebungen verwendet werden.\n -XshowSettings Zeigt alle Einstellungen an und fährt fort\n -XshowSettings:all\n Zeigt alle Einstellungen als Verbose-Ausgabe an und fährt fort\n -XshowSettings:locale\n Zeigt alle gebietsschemabezogenen Einstellungen an und fährt fort\n -XshowSettings:properties\n Zeigt alle Eigenschaftseinstellungen an und fährt fort\n -XshowSettings:vm\n Zeigt alle VM-bezogenen Einstellungen an und fährt fort\n -XshowSettings:security\n Zeigt alle Sicherheitseinstellungen an und fährt fort\n -XshowSettings:security:all\n Zeigt alle Sicherheitseinstellungen an und fährt fort\n -XshowSettings:security:properties\n Zeigt Sicherheitseigenschaften an und fährt fort\n -XshowSettings:security:providers\n Zeigt statische Sicherheitsprovidereinstellungen an und fährt fort\n -XshowSettings:security:tls\n Zeigt TLS-bezogene Sicherheitseinstellungen an und fährt fort\n -XshowSettings:system\n (Nur Linux) Zeigt die Konfiguration des Hostsystems oder Containers an\n und fährt fort\n -Xss Legt die Stackgröße des Java-Threads fest\n Die tatsächliche \ -Größe kann auf ein Vielfaches der\n Systemseitengröße aufgerundet werden, wenn für das Betriebssystem erforderlich.\n -Xverify Legt den Modus der Bytecodeverifizierung fest\n Beachten Sie, dass die Option -Xverify:none veraltet ist und\n in einem zukünftigen Release entfernt werden kann.\n --add-reads =(,)*\n Aktualisiert , damit gelesen wird, ungeachtet\n der Moduldeklaration. \n kann ALL-UNNAMED sein, um alle unbenannten\n Module zu lesen.\n --add-exports /=(,)*\n Aktualisiert , um in zu exportieren,\n ungeachtet der Moduldeklaration.\n kann ALL-UNNAMED sein, um in alle\n unbenannten Module zu exportieren.\n --add-opens /=(,)*\n Aktualisiert , um in\n zu öffnen, ungeachtet der Moduldeklaration.\n --limit-modules [,...]\n Grenzt die Gesamtmenge der beobachtbaren Module ein\n --patch-module =({0})*\n Überschreibt oder erweitert ein Modul mit Klassen und Ressourcen\n in JAR-Dateien oder Verzeichnissen.\n --source \n Legt die Version der Quelle im Quelldateimodus fest.\n --finalization=\n Steuert, ob die JVM Objekte finalisiert.\n Dabei ist entweder "enabled" oder "disabled".\n Die Finalisierung ist standardmäßig aktiviert.\n\nDiese zusätzlichen Optionen können jederzeit ohne vorherige Ankündigung geändert werden.\n +Größe kann auf ein Vielfaches der\n Systemseitengröße aufgerundet werden, wenn für das Betriebssystem erforderlich.\n -Xverify Legt den Modus der Bytecodeverifizierung fest\n Beachten Sie, dass die Option -Xverify:none veraltet ist und\n in einem zukünftigen Release entfernt werden kann.\n --add-reads =(,)*\n Aktualisiert , damit gelesen wird, ungeachtet\n der Moduldeklaration. \n kann ALL-UNNAMED sein, um alle unbenannten\n Module zu lesen.\n --add-exports /=(,)*\n Aktualisiert , um in zu exportieren,\n ungeachtet der Moduldeklaration.\n kann ALL-UNNAMED sein, um in alle\n unbenannten Module zu exportieren.\n --add-opens /=(,)*\n Aktualisiert , um in\n zu öffnen, ungeachtet der Moduldeklaration.\n --limit-modules [,...]\n Grenzt die Gesamtmenge der beobachtbaren Module ein\n --patch-module =({0})*\n Überschreibt oder erweitert ein Modul mit Klassen und Ressourcen\n in JAR-Dateien oder Verzeichnissen.\n --source \n Legt die Version der Quelle im Quelldateimodus fest.\n --finalization=\n Steuert, ob die JVM Objekte finalisiert.\n Dabei ist entweder "enabled" oder "disabled".\n Die Finalisierung ist standardmäßig aktiviert.\n --sun-misc-unsafe-memory-access=\n Verwendung der nicht unterstützten API sun.misc.Unsafe zulassen oder verweigern\n ist "allow", "warn", "debug" oder "deny".\n Der Standardwert ist "allow".\n\nDiese zusätzlichen Optionen können jederzeit ohne vorherige Ankündigung geändert werden.\n # Translators please note do not translate the options themselves java.launcher.X.macosx.usage=\nDie folgenden Optionen sind für macOS spezifisch:\n -XstartOnFirstThread\n Führt die main()-Methode für den ersten (AppKit-)Thread aus\n -Xdock:name=\n Setzt den im Dock angezeigten Standardanwendungsnamen außer Kraft\n -Xdock:icon=\n Setzt das im Dock angezeigte Standardsymbol außer Kraft\n\n @@ -52,6 +52,7 @@ java.launcher.jar.error1=Fehler: Beim Versuch, Datei {0} zu öffnen, ist ein une java.launcher.jar.error2=Manifest in {0} nicht gefunden java.launcher.jar.error3=kein Hauptmanifestattribut, in {0} java.launcher.jar.error4=Fehler beim Laden des Java-Agents in {0} +java.launcher.jar.error5=Fehler: Beim Versuch, Datei {0} zu schließen, ist ein unerwarteter Fehler aufgetreten java.launcher.jar.error.illegal.ena.value=Fehler: Ungültiger Wert "{0}" für das Manifestattribut "Enable-Native-Access". Nur ''ALL-UNNAMED'' ist zulässig java.launcher.init.error=Initialisierungsfehler java.launcher.javafx.error1=Fehler: Die JavaFX-Methode launchApplication hat die falsche Signatur, sie\nmuss als statisch deklariert werden und einen Wert vom Typ VOID zurückgeben diff --git a/src/java.base/share/classes/sun/launcher/resources/launcher_ja.properties b/src/java.base/share/classes/sun/launcher/resources/launcher_ja.properties index 4455b2f8020..5d5223d49c6 100644 --- a/src/java.base/share/classes/sun/launcher/resources/launcher_ja.properties +++ b/src/java.base/share/classes/sun/launcher/resources/launcher_ja.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2007, 2023, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2007, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -37,7 +37,7 @@ java.launcher.opt.footer = \ -cp <ディレクトリおよびzip/jarファイ # Translators please note do not translate the options themselves java.launcher.X.usage=\n -Xbatch バックグラウンド・コンパイルを無効にします\n -Xbootclasspath/a:\n ブートストラップ・クラス・パスの最後に追加します\n -Xcheck:jni JNI関数に対する追加のチェックを実行します\n -Xcomp 初回呼出し時にメソッドのコンパイルを強制します\n -Xdebug 何も実行されません。将来のリリースで削除されるため、非推奨になりました。\n -Xdiag 追加の診断メッセージを表示します\n -Xfuture 将来のデフォルトを見越して、最も厳密なチェックを有効にします\n このオプションは非推奨であり、将来のリリースで削除される\n 可能性があります。\n -Xint インタプリタ・モードの実行のみ\n -Xinternalversion\n -versionオプションより詳細なJVMバージョン情報を\n 表示します\n -Xlog: Java Virtual Machine (JVM)統合ロギング・フレームワークでの\n ロギングを構成または有効化します。詳細は、-Xlog:helpを\n 使用してください。\n -Xloggc: タイムスタンプが付いたファイルにGCステータスのログを記録します\n このオプションは非推奨であり、将来のリリースで削除される\n 可能性があります。-Xlog:gc:で置換されています。\n -Xmixed 混合モードの実行(デフォルト)\n -Xmn 若い世代(ナーサリ)のヒープの初期サイズおよび最大サイズ\n (バイト単位)を設定します\n -Xms Javaの初期ヒープ・サイズを設定します\n -Xmx Javaの最大ヒープ・サイズを設定します\n -Xnoclassgc クラスのガベージ・コレクションを無効にします\n -Xrs Java/VMによるOSシグナルの使用を削減します(ドキュメントを参照)\n -Xshare:auto 可能であれば共有クラス・データを使用します(デフォルト)\n -Xshare:off \ 共有クラス・データの使用を試みません\n -Xshare:on 共有クラス・データの使用を必須にし、できなければ失敗します。\n これはテスト・オプションであり、断続的な失敗につながる\n 可能性があります。本番環境では使用しないでください。\n -XshowSettings すべての設定を表示して続行します\n -XshowSettings:all\n すべての設定を詳細に表示して続行します\n -XshowSettings:locale\n すべてのロケール関連の設定を表示して続行します\n -XshowSettings:properties\n すべてのプロパティ設定を表示して続行します\n -XshowSettings:vm\n すべてのVM関連の設定を表示して続行します\n -XshowSettings:security\n すべてのセキュリティ設定を表示して続行します\n -XshowSettings:security:all\n すべてのセキュリティ設定を表示して続行します\n -XshowSettings:security:properties\n セキュリティ・プロパティを表示して続行します\n -XshowSettings:security:providers\n 静的セキュリティ・プロバイダ設定を表示して続行します\n -XshowSettings:security:tls\n TLS関連のセキュリティ設定を表示して続行します\n -XshowSettings:system\n (Linuxのみ)ホスト・システムまたはコンテナを表示します\n 構成して続行します\n -Xss javaスレッドのスタック・サイズを設定します\n 実際のサイズは、次の倍数に切り上げられる場合があります: \n オペレーティング・システムの要件に応じたシステム・ページ・サイズ。\n -Xverify バイトコード・ベリファイアのモードを設定します\n オプション-Xverify:noneは非推奨になり、\n 将来のリリースで削除される可能性があります。\n --add-reads =(,)*\n モジュール宣言に関係なく、を更新してを\n \ -読み取ります。 \n をALL-UNNAMEDに設定すると、すべての名前のないモジュールを\n 読み取ることができます。\n --add-exports /=(,)*\n モジュール宣言に関係なく、を更新してに\n エクスポートします。\n をALL-UNNAMEDに設定すると、すべての名前のないモジュールに\n エクスポートできます。\n --add-opens /=(,)*\n モジュール宣言に関係なく、を更新してを\n に開きます。\n --limit-modules [,...]\n 参照可能なモジュールの領域を制限します\n --patch-module =({0})*\n JARファイルまたはディレクトリのクラスおよびリソースで\n モジュールをオーバーライドまたは拡張します。\n --source \n ソースファイル・モードでソースのバージョンを設定します。\n --finalization=\n JVMがオブジェクトのファイナライズを実行するかどうかを制御します\n は"enabled"または"disabled"のいずれかです。\n ファイナライズはデフォルトで有効になっています。\n\nこの追加オプションは予告なしに変更されることがあります。\n +読み取ります。 \n をALL-UNNAMEDに設定すると、すべての名前のないモジュールを\n 読み取ることができます。\n --add-exports /=(,)*\n モジュール宣言に関係なく、を更新してに\n エクスポートします。\n をALL-UNNAMEDに設定すると、すべての名前のないモジュールに\n エクスポートできます。\n --add-opens /=(,)*\n モジュール宣言に関係なく、を更新してを\n に開きます。\n --limit-modules [,...]\n 参照可能なモジュールの領域を制限します\n --patch-module =({0})*\n JARファイルまたはディレクトリのクラスおよびリソースで\n モジュールをオーバーライドまたは拡張します。\n --source \n ソースファイル・モードでソースのバージョンを設定します。\n --finalization=\n JVMがオブジェクトのファイナライズを実行するかどうかを制御します\n は"enabled"または"disabled"のいずれかです。\n ファイナライズはデフォルトで有効になっています。\n --sun-misc-unsafe-memory-access=\n サポートされていないAPI sun.misc.Unsafeの使用を許可または拒否します\n は"allow"、"warn"、"debug"または"deny"のいずれかです。\n デフォルト値は、"allow"です。\n\nこの追加オプションは予告なしに変更されることがあります。\n # Translators please note do not translate the options themselves java.launcher.X.macosx.usage=\n次のオプションはmacOS固有です:\n -XstartOnFirstThread\n main()メソッドを最初(AppKit)のスレッドで実行する\n -Xdock:name=\n Dockに表示されるデフォルト・アプリケーション名をオーバーライドする\n -Xdock:icon=\n Dockに表示されるデフォルト・アイコンをオーバーライドする\n\n @@ -54,6 +54,7 @@ java.launcher.jar.error1=エラー: ファイル{0}を開こうとしている java.launcher.jar.error2={0}にマニフェストが見つかりません java.launcher.jar.error3={0}にメイン・マニフェスト属性がありません java.launcher.jar.error4={0}内のJavaエージェントのロード中にエラーが発生しました +java.launcher.jar.error5=エラー: ファイル{0}を閉じるときに、予期しないエラーが発生しました java.launcher.jar.error.illegal.ena.value=エラー: Enable-Native-Accessマニフェスト属性の値"{0}"が不正です。''ALL-UNNAMED''のみ許可されます java.launcher.init.error=初期化エラー java.launcher.javafx.error1=エラー: JavaFX launchApplicationメソッドに誤ったシグネチャがあり、\nstaticを宣言してvoid型の値を返す必要があります diff --git a/src/java.base/share/classes/sun/launcher/resources/launcher_zh_CN.properties b/src/java.base/share/classes/sun/launcher/resources/launcher_zh_CN.properties index d497402042a..c156e234cef 100644 --- a/src/java.base/share/classes/sun/launcher/resources/launcher_zh_CN.properties +++ b/src/java.base/share/classes/sun/launcher/resources/launcher_zh_CN.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2007, 2023, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2007, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -35,7 +35,7 @@ java.launcher.opt.footer = \ -cp <目录和 zip/jar 文件的类搜索路径> # Translators please note do not translate the options themselves java.launcher.X.usage=\n -Xbatch 禁用后台编译\n -Xbootclasspath/a:<以 {0} 分隔的目录和 zip/jar 文件>\n 附加在引导类路径末尾\n -Xcheck:jni 对 JNI 函数执行其他检查\n -Xcomp 强制在首次调用时编译方法\n -Xdebug 不执行任何操作;已过时,将在未来发行版中删除。\n -Xdiag 显示附加诊断消息\n -Xfuture 启用最严格的检查,预期将来的默认值。\n 此选项已过时,可能会在\n 未来发行版中删除。\n -Xint 仅解释模式执行\n -Xinternalversion\n 显示比 -version 选项更详细的\n JVM 版本信息\n -Xlog: 配置或启用采用 Java 虚拟\n 机 (Java Virtual Machine, JVM) 统一记录框架进行事件记录。使用 -Xlog:help\n 可了解详细信息。\n -Xloggc: 将 GC 状态记录在文件中(带时间戳)。\n 此选项已过时,可能会在\n 将来的发行版中删除。它将替换为 -Xlog:gc:。\n -Xmixed 混合模式执行(默认值)\n -Xmn 为年轻代(新生代)设置初始和最大堆大小\n (以字节为单位)\n -Xms 设置初始 Java 堆大小\n -Xmx 设置最大 Java 堆大小\n -Xnoclassgc 禁用类垃圾收集\n -Xrs 减少 Java/VM 对操作系统信号的使用(请参见文档)\n -Xshare:auto 在可能的情况下使用共享类数据(默认值)\n -Xshare:off 不尝试使用共享类数据\n -Xshare:on 要求使用共享类数据,否则将失败。\n 这是一个测试选项,可能导致间歇性\n 故障。不应在生产环境中使用它。\n -XshowSettings 显示所有设置并继续\n -XshowSettings:all\n 详细显示所有设置并继续\n -XshowSettings:locale\n 显示所有与区域设置相关的设置并继续\n -XshowSettings:properties\n 显示所有属性设置并继续\n -XshowSettings:vm\n 显示所有与 vm 相关的设置并继续\n -XshowSettings:security\n 显示所有安全设置并继续\n -XshowSettings:security:all\n 显示所有安全设置并继续\n -XshowSettings:security:properties\n \ - 显示安全属性并继续\n -XshowSettings:security:providers\n 显示静态安全提供方设置并继续\n -XshowSettings:security:tls\n 显示与 TLS 相关的安全设置并继续\n -XshowSettings:system\n (仅 Linux)显示主机系统或容器\n 配置并继续\n -Xss 设置 Java 线程堆栈大小\n 实际大小可以舍入到\n 操作系统要求的系统页面大小的倍数。\n -Xverify 设置字节码验证器的模式\n 请注意,选项 -Xverify:none 已过时,\n 可能会在未来发行版中删除。\n --add-reads =(,)*\n 更新 以读取 ,而无论\n 模块如何声明。 \n 可以是 ALL-UNNAMED,将读取所有未命名\n 模块。\n --add-exports /=(,)*\n 更新 以将 导出到 ,\n 而无论模块如何声明。\n 可以是 ALL-UNNAMED,将导出到所有\n 未命名模块。\n --add-opens /=(,)*\n 更新 以在 中打开\n ,而无论模块如何声明。\n --limit-modules [,...]\n 限制可观察模块的领域\n --patch-module =({0})*\n 使用 JAR 文件或目录中的类和资源\n 覆盖或增强模块。\n --source \n 设置源文件模式中源的版本。\n --finalization=\n 控制 JVM 是否执行对象最终处理,\n 其中 为 "enabled" 或 "disabled" 之一。\n 默认情况下,最终处理处于启用状态。\n\n这些额外选项如有更改, 恕不另行通知。\n + 显示安全属性并继续\n -XshowSettings:security:providers\n 显示静态安全提供方设置并继续\n -XshowSettings:security:tls\n 显示与 TLS 相关的安全设置并继续\n -XshowSettings:system\n (仅 Linux)显示主机系统或容器\n 配置并继续\n -Xss 设置 Java 线程堆栈大小\n 实际大小可以舍入到\n 操作系统要求的系统页面大小的倍数。\n -Xverify 设置字节码验证器的模式\n 请注意,选项 -Xverify:none 已过时,\n 可能会在未来发行版中删除。\n --add-reads =(,)*\n 更新 以读取 ,而无论\n 模块如何声明。 \n 可以是 ALL-UNNAMED,将读取所有未命名\n 模块。\n --add-exports /=(,)*\n 更新 以将 导出到 ,\n 而无论模块如何声明。\n 可以是 ALL-UNNAMED,将导出到所有\n 未命名模块。\n --add-opens /=(,)*\n 更新 以在 中打开\n ,而无论模块如何声明。\n --limit-modules [,...]\n 限制可观察模块的领域\n --patch-module =({0})*\n 使用 JAR 文件或目录中的类和资源\n 覆盖或增强模块。\n --source \n 设置源文件模式中源的版本。\n --finalization=\n 控制 JVM 是否执行对象最终处理,\n 其中 为 "enabled" 或 "disabled" 之一。\n 默认情况下,最终处理处于启用状态。\n --sun-misc-unsafe-memory-access=\n 允许或拒绝使用不受支持的 API sun.misc.Unsafe\n 为 "allow"、"warn"、"debug" 或 "deny" 之一。\n 默认值为 "allow"。\n\n这些额外选项如有更改, 恕不另行通知。\n # Translators please note do not translate the options themselves java.launcher.X.macosx.usage=\n以下选项是特定于 macOS 的选项:\n -XstartOnFirstThread\n 在第一个 (AppKit) 线程上运行 main() 方法\n -Xdock:name=\n 覆盖停靠栏中显示的默认应用程序名称\n -Xdock:icon=\n 覆盖停靠栏中显示的默认图标\n\n @@ -52,6 +52,7 @@ java.launcher.jar.error1=错误: 尝试打开文件{0}时出现意外错误 java.launcher.jar.error2=在{0}中找不到清单 java.launcher.jar.error3={0}中没有主清单属性 java.launcher.jar.error4=在 {0} 中加载 Java 代理时出错 +java.launcher.jar.error5=错误:尝试关闭文件 {0} 时出现意外错误 java.launcher.jar.error.illegal.ena.value=错误:Enable-Native-Access 清单属性的值 "{0}" 非法。仅允许使用 ''ALL-UNNAMED'' java.launcher.init.error=初始化错误 java.launcher.javafx.error1=错误: JavaFX launchApplication 方法具有错误的签名, 必须\n将方法声明为静态方法并返回空类型的值 diff --git a/src/java.desktop/share/classes/sun/print/resources/serviceui_zh_CN.properties b/src/java.desktop/share/classes/sun/print/resources/serviceui_zh_CN.properties index f4a1982f056..cdc2bb5541f 100644 --- a/src/java.desktop/share/classes/sun/print/resources/serviceui_zh_CN.properties +++ b/src/java.desktop/share/classes/sun/print/resources/serviceui_zh_CN.properties @@ -29,7 +29,7 @@ border.chromaticity=颜色外观 border.copies=份数 border.jobattributes=作业属性 border.media=介质 -border.output=出纸 +border.output=输出 border.orientation=方向 border.printrange=打印区域 border.printservice=打印服务 @@ -63,7 +63,7 @@ label.pstype=类型: label.rangeto=至 label.size=大小(&Z): label.source=来源(&C): -label.outputbins=出纸托盘(&P): +label.outputbins=输出托盘(&P): label.status=状态: label.username=用户名(&U): label.millimetres=(毫米) diff --git a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties index 9227a61a608..9f24c42b110 100644 --- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties +++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_de.properties @@ -275,7 +275,7 @@ RootElementTypeMustMatchDoctypedecl = Document Root-Element "{1}"muss mit DOCTYPE-Root "{0}" übereinstimmen. UndeclaredElementInContentSpec = Contentmodell des Elements "{0}" verweist auf das nicht deklarierte Element "{1}". UniqueNotationName = Deklaration für die Notation "{0}" ist nicht eindeutig. Ein jeweiliger Name darf nicht in mehreren Notationsdeklarationen deklariert werden. - ENTITYFailedInitializeGrammar = ENTITYDatatype-Validator: Nicht erfolgreich. Initialisierungsmethode muss mit einer gültigen Grammatikreferenz aufgerufen werden. \t + ENTITYFailedInitializeGrammar = ENTITYDatatype-Validator: Nicht erfolgreich. Initialisierungsmethode muss mit einer gültigen Grammatikreferenz aufgerufen werden. ENTITYNotUnparsed = ENTITY "{0}" ist geparst. ENTITYNotValid = ENTITY "{0}" ist nicht gültig. EmptyList = Werte der Typen ENTITIES, IDREFS und NMTOKENS dürfen keine leeren Listen sein. diff --git a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ja.properties b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ja.properties index ef0edf1b188..00bced117f6 100644 --- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ja.properties +++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_ja.properties @@ -275,7 +275,7 @@ RootElementTypeMustMatchDoctypedecl = ドキュメント・ルート要素"{1}"はDOCTYPEルート"{0}"と一致する必要があります。 UndeclaredElementInContentSpec = 要素"{0}"のコンテンツ・モデルで未宣言の要素"{1}"が参照されています。 UniqueNotationName = 表記法"{0}"の宣言が一意ではありません。同じ名前を複数の表記法宣言で宣言しないでください。 - ENTITYFailedInitializeGrammar = ENTITYDatatypeバリデータ: 有効な構文参照による初期化メソッドの呼出しに失敗しました。 \t + ENTITYFailedInitializeGrammar = ENTITYDatatypeバリデータ: 有効な構文参照による初期化メソッドの呼出しに失敗しました。 ENTITYNotUnparsed = ENTITY "{0}"は未解析ではありません。 ENTITYNotValid = ENTITY "{0}"は有効ではありません。 EmptyList = タイプENTITIES、IDREFSおよびNMTOKENSの値は空のリストにできません。 diff --git a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_CN.properties b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_CN.properties index 0b937ce7623..ffe36a06f35 100644 --- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_CN.properties +++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XMLMessages_zh_CN.properties @@ -275,7 +275,7 @@ RootElementTypeMustMatchDoctypedecl = 文档根元素 "{1}" 必须匹配 DOCTYPE 根 "{0}"。 UndeclaredElementInContentSpec = 元素 "{0}" 的内容模型引用未声明的元素 "{1}"。 UniqueNotationName = 记号 "{0}" 的声明不是唯一的。不能在多个记号声明中声明指定的名称。 - ENTITYFailedInitializeGrammar = ENTITYDatatype 验证程序: 未能使用有效的语法引用调用初始化方法。\t + ENTITYFailedInitializeGrammar = ENTITYDatatype 验证程序: 未能使用有效的语法引用调用初始化方法。 ENTITYNotUnparsed = ENTITY "{0}" 不是未解析的。 ENTITYNotValid = ENTITY "{0}" 无效。 EmptyList = 类型为 ENTITIES, IDREFS 和 NMTOKENS 的值不能是空列表。 diff --git a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XPointerMessages_de.properties b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XPointerMessages_de.properties index fcd8b9e5a0c..e3f064694d8 100644 --- a/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XPointerMessages_de.properties +++ b/src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/msg/XPointerMessages_de.properties @@ -27,7 +27,7 @@ FormatFailed = Beim Formatieren der folgenden Meldung ist ein interner Fehler au XPointerProcessingError = XPointerProcessingError: Beim Verarbeiten des XPointer-Ausdrucks ist ein Fehler aufgetreten. InvalidXPointerToken = InvalidXPointerToken: XPointer-Ausdruck enthält das ungültige Token "{0}" InvalidXPointerExpression = InvalidXPointerExpression: XPointer-Ausdruck "{0}" ist ungültig. -MultipleShortHandPointers = MultipleShortHandPointers: XPointer-Ausdruck "{0}" ist ungültig. Mehrere ShortHand-Zeiger vorhanden. +MultipleShortHandPointers = MultipleShortHandPointers: Der XPointer-Ausdruck "{0}" ist ungültig. Er enthält mehrere ShortHand-Zeiger. SchemeDataNotFollowedByCloseParenthesis = SchemeDataNotFollowedByCloseParenthesis: XPointer-Ausdruck "{0}" ist ungültig. Auf SchemeData folgte kein ")"-Zeichen. SchemeUnsupported = SchemeUnsupported: XPointer-Schema "{0}" wird nicht unterstützt. InvalidShortHandPointer = InvalidShortHandPointer: NCName von ShortHand-Zeiger "{0}" ist ungültig. diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_de.properties b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_de.properties index 566eff4c0d5..dfbeb0fd0b7 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_de.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_de.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2023, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -294,6 +294,9 @@ compiler.err.cant.inherit.from.final=Erben aus finalem {0}-Element nicht möglic # 0: symbol or name compiler.err.cant.ref.before.ctor.called={0} kann nicht referenziert werden, bevor der Supertypkonstruktor aufgerufen wurde +# 0: symbol or name +compiler.err.cant.assign.initialized.before.ctor.called=Initialisiertes Feld "{0}" kann nicht zugewiesen werden, bevor der Supertypkonstruktor aufgerufen wurde + compiler.err.cant.select.static.class.from.param.type=Statische Klasse kann nicht aus einem parametrisierten Typ ausgewählt werden # 0: symbol, 1: string, 2: string @@ -403,6 +406,10 @@ compiler.err.duplicate.unconditional.pattern=Doppeltes nicht bedingtes Muster compiler.err.unconditional.pattern.and.default=Switch umfasst sowohl ein nicht bedingtes Muster als auch ein Standardlabel +compiler.err.unconditional.pattern.and.both.boolean.values=Switch umfasst sowohl boolesche Werte als auch ein nicht bedingtes Muster + +compiler.err.default.and.both.boolean.values=Switch umfasst sowohl boolesche Werte als auch ein Standardlabel + compiler.err.guard.not.allowed=Guards sind nur für CASE-Anweisungen mit einem Muster zulässig compiler.err.guard.has.constant.expression.false=Dieses CASE-Label hat einen Guard, der ein konstanter Ausdruck mit dem Wert ''false'' ist @@ -413,12 +420,9 @@ compiler.err.cannot.assign.not.declared.guard=Zuweisen zu {0} nicht möglich, da # 0: type, 1: type compiler.err.constant.label.not.compatible=Konstantes Label des Typs {0} ist nicht mit Switch-Selektortyp {1} kompatibel -# 0: type -compiler.err.selector.type.not.allowed=Selektortyp {0} ist nicht zulässig - -compiler.err.flows.through.to.pattern=Ungültiger Fallthrough zu einem Muster +compiler.err.flows.through.to.pattern=Unzulässiger Fallthrough auf ein Muster\n(im vorherigen CASE-Label fehlt ein Break) -compiler.err.flows.through.from.pattern=Ungültiger Fallthrough von einem Muster +compiler.err.flows.through.from.pattern=Unzulässiger Fallthrough von einem Muster\n(im aktuellen CASE-Label fehlt ein Break) compiler.err.invalid.case.label.combination=ungültige Case-Label-Kombination @@ -533,6 +537,10 @@ compiler.err.illegal.underscore=Unzulässiger Unterstrich compiler.err.illegal.dot="." unzulässig +compiler.err.illegal.digit.in.binary.literal=Unzulässige Ziffer in einem binären Literal + +compiler.err.illegal.digit.in.octal.literal=Unzulässige Ziffer in einem oktalen Literal + # 0: symbol compiler.err.illegal.qual.not.icls=Unzulässiger Qualifier. {0} ist keine innere Klasse @@ -961,15 +969,6 @@ compiler.err.unclosed.str.lit=Nicht geschlossenes Zeichenfolgenliteral compiler.err.unclosed.text.block=Nicht geschlossener Textblock -compiler.err.string.template.is.not.well.formed=Zeichenfolgenvorlage ist nicht wohlgeformt - -compiler.err.text.block.template.is.not.well.formed=Textblockvorlage ist nicht wohlgeformt - -compiler.err.processor.missing.from.string.template.expression=Prozessor fehlt in Zeichenfolgenvorlagen-Ausdruck - -# 0: symbol -compiler.err.not.a.processor.type=Kein Prozessortyp: {0} - # 0: string compiler.err.unsupported.encoding=Nicht unterstützte Codierung: {0} @@ -1339,6 +1338,8 @@ compiler.warn.lintOption=[{0}]\u0020 # 0: symbol compiler.warn.constant.SVUID=serialVersionUID muss Konstante in Klasse {0} sein +compiler.warn.dangling.doc.comment=Dokumentationskommentar ist an keine Deklaration angehängt + # 0: path compiler.warn.dir.path.element.not.found=Ungültiges Pfadelement "{0}": Verzeichnis nicht vorhanden @@ -1901,9 +1902,6 @@ compiler.warn.prob.found.req={0}\nErforderlich: {2}\nErmittelt: {1} # 0: type, 1: type compiler.misc.inconvertible.types={0} kann nicht in {1} konvertiert werden -# 0: type, 1: type -compiler.misc.not.applicable.types=Muster des Typs {1} ist bei {0} nicht anwendbar - # 0: type, 1: type compiler.misc.possible.loss.of.precision=Möglicher Verlust bei Konvertierung von {0} in {1} @@ -2270,6 +2268,8 @@ compiler.misc.feature.deconstruction.patterns=Dekonstruktionsmuster compiler.misc.feature.unnamed.variables=Unbenannte Variablen +compiler.misc.feature.primitive.patterns=Primitive Muster + compiler.misc.feature.records=Datensätze compiler.misc.feature.sealed.classes=Verschlüsselte Klassen @@ -2278,13 +2278,13 @@ compiler.misc.feature.case.null=Null in Switch Cases compiler.misc.feature.pattern.switch=Muster in Switch-Anweisungen -compiler.misc.feature.string.templates=Zeichenfolgenvorlagen - compiler.misc.feature.unconditional.patterns.in.instanceof=Nicht bedingte Muster in instanceof compiler.misc.feature.implicit.classes=Implizit deklarierte Klassen -compiler.misc.feature.super.init=Anweisungen vor super() +compiler.misc.feature.flexible.constructors=Flexible Konstruktoren + +compiler.misc.feature.module.imports=Modulimporte compiler.warn.underscore.as.identifier=Ab Release 9 ist "_" ein Schlüsselwort und kann nicht als ID verwendet werden @@ -2502,6 +2502,15 @@ compiler.err.module.not.found=Modul nicht gefunden: {0} # 0: symbol compiler.warn.module.not.found=Modul nicht gefunden: {0} +# 0: name +compiler.err.import.module.not.found=Importiertes Modul nicht gefunden: {0} + +# 0: symbol +compiler.err.import.module.does.not.read.unnamed=Unbenanntes Modul kann Folgendes nicht lesen: {0} + +# 0: symbol, 1: symbol +compiler.err.import.module.does.not.read=Modul {0} kann Folgendes nicht lesen: {1} + compiler.err.too.many.modules=Zu viele Moduldeklarationen gefunden compiler.err.module.not.found.on.module.source.path=Modul nicht in Modulquellpfad gefunden diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_ja.properties b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_ja.properties index 01844578905..4d98e4cabcc 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_ja.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_ja.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2023, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -294,6 +294,9 @@ compiler.err.cant.inherit.from.final=final {0}からは継承できません # 0: symbol or name compiler.err.cant.ref.before.ctor.called=スーパータイプのコンストラクタの呼出し前は{0}を参照できません +# 0: symbol or name +compiler.err.cant.assign.initialized.before.ctor.called=スーパータイプのコンストラクタの呼出し前は、初期化されたフィールド''{0}''を割り当てられません + compiler.err.cant.select.static.class.from.param.type=パラメータにされた型からstaticクラスを選択することはできません # 0: symbol, 1: string, 2: string @@ -403,6 +406,10 @@ compiler.err.duplicate.unconditional.pattern=無条件パターンが重複し compiler.err.unconditional.pattern.and.default=switchに無条件パターンとdefaultラベルの両方があります +compiler.err.unconditional.pattern.and.both.boolean.values=switchに、ブール値と無条件パターンの両方があります + +compiler.err.default.and.both.boolean.values=switchに、ブール値とdefaultラベルの両方があります + compiler.err.guard.not.allowed=ガードはパターンのあるcaseでのみ許可されます compiler.err.guard.has.constant.expression.false=このcaseラベルには、値が''false''の定数式であるガードがあります @@ -413,12 +420,9 @@ compiler.err.cannot.assign.not.declared.guard=ガード内で宣言されてい # 0: type, 1: type compiler.err.constant.label.not.compatible=タイプ{0}の定数ラベルがswitchセレクタ・タイプ{1}と互換性がありません -# 0: type -compiler.err.selector.type.not.allowed=セレクタ・タイプ{0}は許可されません - -compiler.err.flows.through.to.pattern=パターンに対して不正なfall-through +compiler.err.flows.through.to.pattern=パターンに対して不正なfall-through\n(前のcaseラベルにbreakがありません) -compiler.err.flows.through.from.pattern=パターンからの不正なfall-through +compiler.err.flows.through.from.pattern=パターンに対して不正なfall-through\n(現在のcaseラベルにbreakがありません) compiler.err.invalid.case.label.combination=caseラベルの組合せが無効です @@ -533,6 +537,10 @@ compiler.err.illegal.underscore=不正なアンダースコアです compiler.err.illegal.dot=不正な''.''です +compiler.err.illegal.digit.in.binary.literal=2進数リテラルの数字が正しくありません + +compiler.err.illegal.digit.in.octal.literal=8進数リテラルの数字が正しくありません + # 0: symbol compiler.err.illegal.qual.not.icls=修飾子が不正です。{0}は内部クラスではありません @@ -961,15 +969,6 @@ compiler.err.unclosed.str.lit=文字列リテラルが閉じられていませ compiler.err.unclosed.text.block=閉じられていないテキスト・ブロック -compiler.err.string.template.is.not.well.formed=文字列テンプレートが整形式ではありません - -compiler.err.text.block.template.is.not.well.formed=テキスト・ブロック・テンプレートが整形式ではありません - -compiler.err.processor.missing.from.string.template.expression=プロセッサが文字列テンプレート式にありません - -# 0: symbol -compiler.err.not.a.processor.type=プロセッサ・タイプではありません: {0} - # 0: string compiler.err.unsupported.encoding=サポートされていないエンコーディングです: {0} @@ -1339,6 +1338,8 @@ compiler.warn.lintOption=[{0}]\u0020 # 0: symbol compiler.warn.constant.SVUID=serialVersionUIDはクラス{0}の定数である必要があります +compiler.warn.dangling.doc.comment=どの宣言にもドキュメンテーション・コメントが添付されていません + # 0: path compiler.warn.dir.path.element.not.found=不正なパス要素"{0}": そのディレクトリは存在しません @@ -1901,9 +1902,6 @@ compiler.warn.prob.found.req={0}\n期待値: {2}\n検出値: {1} # 0: type, 1: type compiler.misc.inconvertible.types={0}を{1}に変換できません: -# 0: type, 1: type -compiler.misc.not.applicable.types=型{1}のパターンは{0}では適用できません - # 0: type, 1: type compiler.misc.possible.loss.of.precision=精度が失われる可能性がある{0}から{1}への変換 @@ -2270,6 +2268,8 @@ compiler.misc.feature.deconstruction.patterns=デコンストラクション・ compiler.misc.feature.unnamed.variables=無名変数 +compiler.misc.feature.primitive.patterns=プリミティブ・パターン + compiler.misc.feature.records=レコード compiler.misc.feature.sealed.classes=シール・クラス @@ -2278,13 +2278,13 @@ compiler.misc.feature.case.null=switch caseのnull compiler.misc.feature.pattern.switch=switch文のパターン -compiler.misc.feature.string.templates=文字列テンプレート - compiler.misc.feature.unconditional.patterns.in.instanceof=instanceofでの無条件パターン compiler.misc.feature.implicit.classes=暗黙的に宣言されたクラス -compiler.misc.feature.super.init=super()の前の文 +compiler.misc.feature.flexible.constructors=柔軟なコンストラクタ + +compiler.misc.feature.module.imports=モジュール・インポート compiler.warn.underscore.as.identifier=リリース9から''_''はキーワードなので識別子として使用することはできません @@ -2502,6 +2502,15 @@ compiler.err.module.not.found=モジュールが見つかりません: {0} # 0: symbol compiler.warn.module.not.found=モジュールが見つかりません: {0} +# 0: name +compiler.err.import.module.not.found=インポートされたモジュールが見つかりません: {0} + +# 0: symbol +compiler.err.import.module.does.not.read.unnamed=名前のないモジュールでは読取りは行われません: {0} + +# 0: symbol, 1: symbol +compiler.err.import.module.does.not.read=モジュール{0}では読取りは行われません: {1} + compiler.err.too.many.modules=検出されたモジュール宣言が多すぎます compiler.err.module.not.found.on.module.source.path=モジュール・ソース・パスにモジュールが見つかりません diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties index 99c5df09fc1..81452f23a0d 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2023, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -294,6 +294,9 @@ compiler.err.cant.inherit.from.final=无法从最终{0}进行继承 # 0: symbol or name compiler.err.cant.ref.before.ctor.called=无法在调用超类型构造器之前引用{0} +# 0: symbol or name +compiler.err.cant.assign.initialized.before.ctor.called=无法在调用超类型构造器之前分配初始化字段 ''{0}'' + compiler.err.cant.select.static.class.from.param.type=无法从参数化的类型中选择静态类 # 0: symbol, 1: string, 2: string @@ -403,6 +406,10 @@ compiler.err.duplicate.unconditional.pattern=无条件模式重复 compiler.err.unconditional.pattern.and.default=switch 有一个无条件模式和一个 default 标签 +compiler.err.unconditional.pattern.and.both.boolean.values=switch 有布尔值和一个无条件模式 + +compiler.err.default.and.both.boolean.values=switch 有布尔值和一个 default 标签 + compiler.err.guard.not.allowed=只有包含模式的 case 允许使用卫士 compiler.err.guard.has.constant.expression.false=此 case 标签有一个卫士,它是值为 ''false'' 的常量表达式 @@ -413,16 +420,13 @@ compiler.err.cannot.assign.not.declared.guard=无法分配给 {0},因为未在 # 0: type, 1: type compiler.err.constant.label.not.compatible={0} 类型的常量标签与 switch 选择器类型 {1} 不兼容 -# 0: type -compiler.err.selector.type.not.allowed=不允许使用选择器类型 {0} - -compiler.err.flows.through.to.pattern=贯穿 (fall-through) 到模式非法 +compiler.err.flows.through.to.pattern=贯穿 (fall-through) 到模式非法\n(上一个 case 标签缺少中断) -compiler.err.flows.through.from.pattern=从模式贯穿 (fall-through) 非法 +compiler.err.flows.through.from.pattern=从模式贯穿 (fall-through) 非法\n(当前 case 标签缺少中断) compiler.err.invalid.case.label.combination=case 标签组合无效 -compiler.err.default.label.not.allowed=此处不允许使用默认标签 +compiler.err.default.label.not.allowed=此处不允许使用 default 标签 compiler.err.pattern.type.cannot.infer=无法推断模式类型 @@ -533,6 +537,10 @@ compiler.err.illegal.underscore=非法下划线 compiler.err.illegal.dot=非法 ''.'' +compiler.err.illegal.digit.in.binary.literal=二进制文字中的数字非法 + +compiler.err.illegal.digit.in.octal.literal=八进制文字中的数字非法 + # 0: symbol compiler.err.illegal.qual.not.icls=非法限定符; {0}不是内部类 @@ -961,15 +969,6 @@ compiler.err.unclosed.str.lit=未结束的字符串文字 compiler.err.unclosed.text.block=文本块未闭合 -compiler.err.string.template.is.not.well.formed=字符串模板格式不正确 - -compiler.err.text.block.template.is.not.well.formed=文本块模板格式不正确 - -compiler.err.processor.missing.from.string.template.expression=字符串模板表达式缺少处理程序 - -# 0: symbol -compiler.err.not.a.processor.type=不是处理程序类型:{0} - # 0: string compiler.err.unsupported.encoding=不支持的编码: {0} @@ -1339,6 +1338,8 @@ compiler.warn.lintOption=[{0}]\u0020 # 0: symbol compiler.warn.constant.SVUID=serialVersionUID 在类{0}中必须是常量 +compiler.warn.dangling.doc.comment=文档注释未附加到任何声明 + # 0: path compiler.warn.dir.path.element.not.found=错误的路径元素 "{0}": 没有这种目录 @@ -1901,9 +1902,6 @@ compiler.warn.prob.found.req={0}\n需要: {2}\n找到: {1} # 0: type, 1: type compiler.misc.inconvertible.types={0}无法转换为{1} -# 0: type, 1: type -compiler.misc.not.applicable.types=类型为 {1} 的模式不适用于 {0} - # 0: type, 1: type compiler.misc.possible.loss.of.precision=从{0}转换到{1}可能会有损失 @@ -2270,6 +2268,8 @@ compiler.misc.feature.deconstruction.patterns=解构模式 compiler.misc.feature.unnamed.variables=未命名变量 +compiler.misc.feature.primitive.patterns=基元模式 + compiler.misc.feature.records=记录 compiler.misc.feature.sealed.classes=密封类 @@ -2278,13 +2278,13 @@ compiler.misc.feature.case.null=switch case 中的空值 compiler.misc.feature.pattern.switch=switch 语句中的模式 -compiler.misc.feature.string.templates=字符串模板 - compiler.misc.feature.unconditional.patterns.in.instanceof=instanceof 中的无条件模式 compiler.misc.feature.implicit.classes=隐式声明的类 -compiler.misc.feature.super.init=super() 之前的语句 +compiler.misc.feature.flexible.constructors=灵活构造器 + +compiler.misc.feature.module.imports=模块导入 compiler.warn.underscore.as.identifier=从发行版 9 开始, ''_'' 为关键字, 不能用作标识符 @@ -2502,6 +2502,15 @@ compiler.err.module.not.found=找不到模块: {0} # 0: symbol compiler.warn.module.not.found=找不到模块: {0} +# 0: name +compiler.err.import.module.not.found=找不到导入的模块:{0} + +# 0: symbol +compiler.err.import.module.does.not.read.unnamed=未命名模块未读取:{0} + +# 0: symbol, 1: symbol +compiler.err.import.module.does.not.read=模块 {0} 未读取:{1} + compiler.err.too.many.modules=找到太多的模块声明 compiler.err.module.not.found.on.module.source.path=在模块源路径中找不到模块 diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_de.properties b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_de.properties index cc3bea6c763..00b64b1f099 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_de.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_de.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -109,6 +109,8 @@ javac.opt.Xlint.desc.cast=Warnt vor unnötigen Umwandlungen mit Cast. javac.opt.Xlint.desc.classfile=Warnt vor Problemen im Zusammenhang mit Klassendateiinhalten. +javac.opt.Xlint.desc.dangling-doc-comments=Warnt vor Dokumentationskommentaren, die an keine Deklaration angehängt sind. + javac.opt.Xlint.desc.missing-explicit-ctor=Warnt vor fehlenden expliziten Konstruktoren in öffentlichen und geschützten Klassen in exportierten Packages. javac.opt.Xlint.desc.deprecation=Warnt vor der Verwendung veralteter Elemente. @@ -214,6 +216,7 @@ javac.opt.module.version=Gibt die Version der Module an, die kompiliert werden javac.opt.arg.module.version= javac.opt.inherit_runtime_environment=Vererbt Modulsystemkonfigurationsoptionen aus der Laufzeitumgebung. javac.opt.default.module.for.created.files=Fallback-Zielmodul für Dateien, die von Annotationsprozessoren erstellt werden,\nfalls keines angegeben ist oder abgeleitet werden kann. +javac.opt.lineDocComments=Unterstützung für Dokumentationskommentare mit Zeilen, die mit "///" beginnen, deaktivieren ## messages diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_ja.properties b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_ja.properties index f33c2c54cea..4eb259b23cc 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_ja.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_ja.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -109,6 +109,8 @@ javac.opt.Xlint.desc.cast=不要なキャストの使用について警告しま javac.opt.Xlint.desc.classfile=クラス・ファイルの内容に関連した問題について警告します。 +javac.opt.Xlint.desc.dangling-doc-comments=どの宣言にも添付されていないドキュメンテーション・コメントについて警告します。 + javac.opt.Xlint.desc.missing-explicit-ctor=エクスポートされたパッケージのpublicおよびprotectedのクラスに明示的なコンストラクタがないことを警告します。 javac.opt.Xlint.desc.deprecation=非推奨項目の使用について警告します。 @@ -214,6 +216,7 @@ javac.opt.module.version=コンパイルするモジュールのバージョン javac.opt.arg.module.version=<バージョン> javac.opt.inherit_runtime_environment=実行時環境からモジュール・システム構成オプションを継承します。 javac.opt.default.module.for.created.files=何も指定されていないか、推定型の場合、注釈プロセッサによって作成されるファイルのターゲット・モジュールをフォールバックします。 +javac.opt.lineDocComments='///'で行を開始すると、ドキュメンテーション・コメントのサポートが無効化されます ## messages diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties index 64e031ed381..8cbddae86f6 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 1999, 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -109,6 +109,8 @@ javac.opt.Xlint.desc.cast=有关使用了不必要转换的警告。 javac.opt.Xlint.desc.classfile=有关与类文件内容相关的问题的警告。 +javac.opt.Xlint.desc.dangling-doc-comments=有关未附加到任何声明的悬挂文档注释的警告。 + javac.opt.Xlint.desc.missing-explicit-ctor=有关导出的程序包中的公共和受保护类中缺少显式构造器的警告。 javac.opt.Xlint.desc.deprecation=有关使用了已过时项的警告。 @@ -214,6 +216,7 @@ javac.opt.module.version=指定正在编译的模块版本 javac.opt.arg.module.version=<版本> javac.opt.inherit_runtime_environment=从运行时环境继承模块系统配置选项。 javac.opt.default.module.for.created.files=由批注处理程序创建的文件的备用目标模块 (如果未指定或推断任何模块)。 +javac.opt.lineDocComments=禁用对带有以 '///' 开头的行的文档注释的支持 ## messages diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_de.properties b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_de.properties index b59b227ddcb..efcc594ca6c 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_de.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_de.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -122,8 +122,6 @@ launcher.err.no.value.for.option=kein Wert angegeben für Option: {0} # 0: string launcher.err.invalid.value.for.source=ungültiger Wert für Option --source: {0} -launcher.err.enable.preview.requires.source=--enable-preview muss mit --source verwendet werden - launcher.err.unnamed.pkg.not.allowed.named.modules=Unbenanntes Package ist in benannten Modulen nicht zulässig # 0: string, 1: path diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_ja.properties b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_ja.properties index 8bb25907bcd..72e2478bff3 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_ja.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_ja.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -122,8 +122,6 @@ launcher.err.no.value.for.option=オプションに値が指定されていま # 0: string launcher.err.invalid.value.for.source=--sourceオプションの値が無効です: {0} -launcher.err.enable.preview.requires.source=--enable-previewは--sourceとともに使用する必要があります - launcher.err.unnamed.pkg.not.allowed.named.modules=名前のないパッケージは名前付きモジュールでは許可されません # 0: string, 1: path diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_zh_CN.properties b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_zh_CN.properties index 81976d40b86..ee666cc02c1 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_zh_CN.properties +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/launcher_zh_CN.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -122,8 +122,6 @@ launcher.err.no.value.for.option=没有为选项 {0} 指定值 # 0: string launcher.err.invalid.value.for.source=--source 选项的值无效:{0}\n -launcher.err.enable.preview.requires.source=--enable-preview 必须与 --source 一起使用 - launcher.err.unnamed.pkg.not.allowed.named.modules=命名模块中不允许未命名程序包 # 0: string, 1: path diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_de.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_de.properties index 1bdbb5d0614..c444f387a65 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_de.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_de.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2010, 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2010, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -116,17 +116,20 @@ doclet.tag.invalid_input=Ungültige Eingabe: "{0}" doclet.tag.invalid=ungültiges @{0} doclet.Deprecated_API=Veraltete API doclet.Deprecated_API_Checkbox_Label=Veraltete API anzeigen in: +doclet.Deprecated_API_Checkbox_All_Releases=Alle doclet.Deprecated_API_Checkbox_Other_Releases=Sonstige doclet.Deprecated_Elements=Veraltete {0} doclet.Deprecated_Elements_Release_Column_Header=Veraltet in doclet.Deprecated_In_Release=Veraltet in {0} doclet.New_API=Neue API doclet.New_API_Checkbox_Label=Hinzugefügte API anzeigen in: +doclet.New_API_Checkbox_All_Releases=Alle doclet.New_Elements=Neue {0} doclet.New_Elements_Release_Column_Header=Hinzugefügt in doclet.New_Label=Neu doclet.Preview_API=Vorschau-API doclet.Preview_API_Checkbox_Label=Vorschau-API anzeigen für: +doclet.Preview_API_Checkbox_Toggle_All=Alle umschalten doclet.Preview_JEP_URL=https://openjdk.org/jeps/{0} doclet.Preview_Label=Vorschau doclet.Preview_Mark=PREVIEW @@ -229,7 +232,7 @@ doclet.help.class_interface.property=Eigenschaften sind ein Feature von JavaFX. doclet.help.other_files.head=Weitere Dateien doclet.help.other_files.body=Packages und Module können Seiten mit weiteren Informationen zu den Deklarationen in der Nähe enthalten. doclet.help.use.head=Verwendung -doclet.help.use.body=Für jedes dokumentierte Package sowie jede Klasse und jede Schnittstelle ist eine eigene Verwendungsseite vorhanden. Auf dieser Seite wird beschrieben, welche Packages, Klassen, Methoden, Konstruktoren und Felder einen Teil der angegebenen Klasse oder des angegebenen Packages verwenden. Bei der Klasse oder Schnittstelle A enthält die Verwendungsseite die Unterklassen von A, als A deklarierte Felder, Methoden, die A zurückgeben, sowie Methoden und Konstruktoren mit Parametern des Typs A. Sie können diese Seite aufrufen, indem Sie zunächst das Package, die Klasse oder die Schnittstelle aufrufen und anschließend in der Navigationsleiste auf den Link "Verwendung" klicken. +doclet.help.use.body=Für jedes dokumentierte Package sowie jede Klasse oder Schnittstelle ist eine eigene Verwendungsseite vorhanden. Auf dieser Seite werden die Packages, Klassen, Schnittstellen, Methoden, Konstruktoren und Felder aufgelistet, die einen Teil der angegebenen Klasse oder Schnittstelle oder des angegebenen Packages verwenden. Bei der Klasse oder Schnittstelle A enthält die Verwendungsseite die Unterklassen oder Unterschnittstellen von A, als A deklarierte Felder, Methoden, die A zurückgeben, Methoden und Konstruktoren mit Parametern des Typs A und Unterklassen oder Unterschnittstellen mit Parametern des Typs A. Sie können auf diese Seite zugreifen, indem Sie zunächst das Package, die Klasse oder die Schnittstelle aufrufen und anschließend in der Navigationsleiste auf den Link "Verwendung" klicken. doclet.help.tree.head=Baum (Klassenhierarchie) # 0: link to main Class Hierarchy page; 1: java.lang.Object doclet.help.tree.intro=Es gibt eine Seite {0} für alle Packages, und für jedes Package gibt es eine Hierarchie. Jede Hierarchieseite enthält eine Klassen- und eine Schnittstellenliste. Die Klassen sind nach Vererbungsstruktur organisiert, beginnend mit {1}. Die Schnittstellen erben nicht von {1}. @@ -284,6 +287,9 @@ doclet.ClassUse_Classes.in.0.used.by.1=Von {1} verwendete Klassen in {0} doclet.ClassUse_PackageAnnotation=Packages mit Annotationen vom Typ {0} doclet.ClassUse_Annotation=Klassen in {1} mit Annotationen vom Typ {0} doclet.ClassUse_TypeParameter=Klassen in {1} mit Typparametern vom Typ {0} +doclet.ClassUse_SubclassTypeParameter=Unterklassen mit Typargumenten vom Typ {0} in {1} +doclet.ClassUse_SubinterfaceTypeParameter=Unterschnittstellen mit Typargumenten vom Typ {0} in {1} +doclet.ClassUse_ImplementsTypeParameter=Klassen in {1}, die Schnittstellen mit Typargumenten vom Typ {0} implementieren doclet.ClassUse_MethodTypeParameter=Methoden in {1} mit Typparametern vom Typ {0} doclet.ClassUse_FieldTypeParameter=Felder in {1} mit Typparametern vom Typ {0} doclet.ClassUse_FieldAnnotations=Felder in {1} mit Annotationen vom Typ {0} @@ -412,6 +418,8 @@ doclet.usage.nocomment.description=Beschreibung und Tags unterdrücken und nur D doclet.usage.nodeprecated.description=@deprecated-Informationen nicht aufnehmen +doclet.usage.no-fonts.description=Keine Standardwebschriftarten in generierte Dokumentation aufnehmen + doclet.usage.noqualifier.parameters=,,... doclet.usage.noqualifier.description=Liste der Qualifier aus der Ausgabe ausschließen.\n":" kann überall im Argument als Trennzeichen verwendet werden. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties index 1764587769b..ce56bc16325 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_ja.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2010, 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2010, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -116,17 +116,20 @@ doclet.tag.invalid_input=入力が無効です: ''{0}'' doclet.tag.invalid=@{0}が無効です doclet.Deprecated_API=推奨されていないAPI doclet.Deprecated_API_Checkbox_Label=次で非推奨のAPIを表示: +doclet.Deprecated_API_Checkbox_All_Releases=すべて doclet.Deprecated_API_Checkbox_Other_Releases=その他 doclet.Deprecated_Elements=推奨されていない{0} doclet.Deprecated_Elements_Release_Column_Header=次で非推奨 doclet.Deprecated_In_Release={0}で非推奨 doclet.New_API=新規API doclet.New_API_Checkbox_Label=次で追加されたAPIを表示: +doclet.New_API_Checkbox_All_Releases=すべて doclet.New_Elements=新規{0} doclet.New_Elements_Release_Column_Header=次で追加 doclet.New_Label=新規 doclet.Preview_API=プレビューAPI doclet.Preview_API_Checkbox_Label=次のプレビューAPIを表示: +doclet.Preview_API_Checkbox_Toggle_All=すべて設定 doclet.Preview_JEP_URL=https://openjdk.org/jeps/{0} doclet.Preview_Label=プレビュー doclet.Preview_Mark=PREVIEW @@ -229,7 +232,7 @@ doclet.help.class_interface.property=プロパティはJavaFXの機能です。 doclet.help.other_files.head=その他のファイル doclet.help.other_files.body=パッケージおよびモジュールには、周辺の宣言に関連する追加情報が記載されているページが含まれている場合があります。 doclet.help.use.head=使用 -doclet.help.use.body=各ドキュメント化されたパッケージ、クラスおよびインタフェースにはそれぞれ「使用」ページがあります。このページには、どのようなパッケージ、クラス、メソッド、コンストラクタおよびフィールドが、特定のクラスまたはパッケージの一部を使用しているかが記述されています。たとえば、クラスAまたはインタフェースAの場合、その「使用」ページには、Aのサブクラス、Aとして宣言されるフィールド、Aを返すメソッドと、型Aのパラメータを持つメソッドおよびコンストラクタが含まれます。このページにアクセスするには、まずそのパッケージ、クラスまたはインタフェースに移動し、ナビゲーション・バーの「使用」リンクをクリックしてください。 +doclet.help.use.body=ドキュメント化された各パッケージ、クラスまたはインタフェースには、それぞれに「使用」ページがあります。このページにリストされているパッケージ、クラス、インタフェース、メソッド、コンストラクタおよびフィールドでは、ドキュメント化されたパッケージ、クラスまたはインタフェースの一部が使用されています。たとえば、クラスAまたはインタフェースAの場合、その「使用」ページには、Aのサブクラスまたはインタフェース、Aとして宣言されるフィールド、Aを返すメソッドと、型Aのパラメータが指定されたメソッドとコンストラクタ、および型Aのパラメータが指定されたサブクラスまたはサブインタフェースが含まれます。このページにアクセスするには、まずそのパッケージ、クラスまたはインタフェースに移動し、ナビゲーション・バーの「使用」リンクをクリックしてください。 doclet.help.tree.head=階層ツリー(クラス階層) # 0: link to main Class Hierarchy page; 1: java.lang.Object doclet.help.tree.intro=すべてのパッケージには{0}ページがあり、さらに各パッケージの階層があります。各階層ページは、クラスのリストとインタフェースのリストを含みます。クラスは{1}を開始点とする継承構造で編成されます。インタフェースは、{1}からは継承しません。 @@ -284,6 +287,9 @@ doclet.ClassUse_Classes.in.0.used.by.1={1}により使用される{0}のクラ doclet.ClassUse_PackageAnnotation={0}型の注釈を持つパッケージ doclet.ClassUse_Annotation={0}型の注釈を持つ{1}のメソッド doclet.ClassUse_TypeParameter={0}型の型パラメータを持つ{1}のクラス +doclet.ClassUse_SubclassTypeParameter={0}型の型引数を持つ{1}のサブクラス +doclet.ClassUse_SubinterfaceTypeParameter={0}型の型引数を持つ{1}のサブインタフェース +doclet.ClassUse_ImplementsTypeParameter={0}型の型引数を持つインタフェースを実装している{1}のクラス doclet.ClassUse_MethodTypeParameter={0}型の型パラメータを持つ{1}のメソッド doclet.ClassUse_FieldTypeParameter={0}型の型パラメータを持つ{1}のフィールド doclet.ClassUse_FieldAnnotations={0}型の注釈を持つ{1}のフィールド @@ -412,6 +418,8 @@ doclet.usage.nocomment.description=記述およびタグを抑制して宣言の doclet.usage.nodeprecated.description=@deprecated情報を除外します +doclet.usage.no-fonts.description=生成されるドキュメントに、標準にwebフォントを使用しないでください + doclet.usage.noqualifier.parameters=,,... doclet.usage.noqualifier.description=出力から修飾子のリストを除外します。\n':'も、セパレータとして引数の任意の場所に使用できます。 diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties index 5dcd3dce996..c109d4c4237 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard_zh_CN.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2010, 2022, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2010, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -116,17 +116,20 @@ doclet.tag.invalid_input=无效输入:''{0}'' doclet.tag.invalid=@{0} 无效 doclet.Deprecated_API=已过时的 API doclet.Deprecated_API_Checkbox_Label=显示在以下发行版中已过时的 API: +doclet.Deprecated_API_Checkbox_All_Releases=全部 doclet.Deprecated_API_Checkbox_Other_Releases=其他 doclet.Deprecated_Elements=已过时的 {0} doclet.Deprecated_Elements_Release_Column_Header=在以下发行版中已过时 doclet.Deprecated_In_Release=在 {0} 中已过时 doclet.New_API=新建 API doclet.New_API_Checkbox_Label=显示在以下发行版中添加的 API: +doclet.New_API_Checkbox_All_Releases=全部 doclet.New_Elements=新建 {0} doclet.New_Elements_Release_Column_Header=在以下发行版中已添加 doclet.New_Label=新建 doclet.Preview_API=预览 API doclet.Preview_API_Checkbox_Label=显示预览 API: +doclet.Preview_API_Checkbox_Toggle_All=全部切换 doclet.Preview_JEP_URL=https://openjdk.org/jeps/{0} doclet.Preview_Label=预览 doclet.Preview_Mark=PREVIEW @@ -229,7 +232,7 @@ doclet.help.class_interface.property=属性是 JavaFX 的一个特性。 doclet.help.other_files.head=其他文件 doclet.help.other_files.body=程序包和模块所包含的页面中可能带有与附近声明相关的附加信息。 doclet.help.use.head=使用 -doclet.help.use.body=每个已文档化的程序包、类和接口都有各自的“使用”页面。此页面介绍了使用给定类或程序包的任何部分的程序包、类、方法、构造器和字段。对于给定的类或接口 A,其“使用”页面包含 A 的子类、声明为 A 的字段、返回 A 的方法,以及带有类型为 A 的参数的方法和构造器。访问此页面的方法是:首先转至程序包、类或接口,然后单击导航栏中的“使用”链接。 +doclet.help.use.body=每个已文档化的程序包、类或接口都有各自的“使用”页面,其中列出了使用该程序包、类或接口的任何部分的程序包、类、接口、方法、构造器和字段。对于给定的类或接口 A,其“使用”页面包含 A 的子类或子接口、声明为 A 的字段、返回 A 的方法、带有类型为 A 的参数的方法和构造器,以及带有类型为 A 的参数的子类或子接口。访问此页面的方法是:首先转至程序包、类或接口,然后单击导航栏中的“使用”链接。 doclet.help.tree.head=树 (类分层结构) # 0: link to main Class Hierarchy page; 1: java.lang.Object doclet.help.tree.intro=对于所有程序包,都有一个 {0} 页,以及每个程序包的分层结构。每个分层结构页都包含类的列表和接口的列表。从 {1} 开始,按继承结构对类进行排列。接口不从 {1} 继承。 @@ -284,6 +287,9 @@ doclet.ClassUse_Classes.in.0.used.by.1={1}使用的{0}中的类 doclet.ClassUse_PackageAnnotation=批注类型为{0}的程序包 doclet.ClassUse_Annotation=批注类型为{0}的{1}中的类 doclet.ClassUse_TypeParameter=类型参数类型为{0}的{1}中的类 +doclet.ClassUse_SubclassTypeParameter={1} 中类型参数类型为 {0} 的子类 +doclet.ClassUse_SubinterfaceTypeParameter={1} 中类型参数类型为 {0} 的子接口 +doclet.ClassUse_ImplementsTypeParameter={1} 中实现类型参数类型为 {0} 的接口的类 doclet.ClassUse_MethodTypeParameter=类型参数类型为{0}的{1}中的方法 doclet.ClassUse_FieldTypeParameter=类型参数类型为{0}的{1}中的字段 doclet.ClassUse_FieldAnnotations=批注类型为{0}的{1}中的字段 @@ -412,6 +418,8 @@ doclet.usage.nocomment.description=不生成说明和标记, 只生成声明 doclet.usage.nodeprecated.description=不包含 @deprecated 信息 +doclet.usage.no-fonts.description=不要在生成的文档中包含标准 Web 字体 + doclet.usage.noqualifier.parameters=,,... doclet.usage.noqualifier.description=在输出中排除一系列限定符。\n还可以将 ':' 作为分隔符用于参数中的任何位置。 diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_de.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_de.properties index 242be92fc8c..4e84cdc52c7 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_de.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_de.properties @@ -249,6 +249,7 @@ doclet.linkMismatch_ModuleLinkedtoPackage=Der Code, der dokumentiert wird, verwe doclet.urlRedirected=URL {0} wurde umgeleitet an {1} - Aktualisieren Sie die Befehlszeilenoptionen, um diese Warnung zu unterdrücken. doclet.unexpectedRedirect=Unerwartete Umleitung für URL {0} zu {1} doclet.duplicate.comment.for.property=Doppelter Kommentar für Eigenschaft.\nEntfernen Sie den Kommentar auf dem Eigenschaftsfeld oder in dieser Methode, um diese Warnung zu unterdrücken. +doclet.contains.diagnostic.markers=Die generierte Dokumentation enthält Diagnosemarker für eine ungültige Eingabe. #Documentation for Enums doclet.enum_values_doc.fullbody=Gibt ein Array mit den Konstanten dieses Enum-Typs in\nder Reihenfolge ihrer Deklaration zurück. diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_ja.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_ja.properties index 986d3affe1f..515df706272 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_ja.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_ja.properties @@ -249,6 +249,7 @@ doclet.linkMismatch_ModuleLinkedtoPackage=ドキュメント化しようとし doclet.urlRedirected=URL {0}は{1}にリダイレクトされました -- コマンドライン・オプションを更新してこの警告を表示しないようにしてください。 doclet.unexpectedRedirect=URL {0}から{1}への予期しないリダイレクト doclet.duplicate.comment.for.property=プロパティのコメントが重複して\nいます。プロパティ・フィールドまたはこのメソッドのコメントを削除してこの警告を出さないようにしてください。 +doclet.contains.diagnostic.markers=生成されたドキュメンテーションには、無効な入力の診断マーカーがあります。 #Documentation for Enums doclet.enum_values_doc.fullbody=この列挙型の定数を含む配列を宣言されている順序で\n返します。 diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties index 99a31b3eec5..d01d42faa56 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets_zh_CN.properties @@ -249,6 +249,7 @@ doclet.linkMismatch_ModuleLinkedtoPackage=进行文档化的代码使用了模 doclet.urlRedirected=URL {0} 已重定向到 {1} — 更新命令行选项以隐藏此警告。 doclet.unexpectedRedirect=URL {0} 意外重定向到 {1} doclet.duplicate.comment.for.property=属性注释重复。\n删除属性字段或此方法的注释以隐藏此警告。 +doclet.contains.diagnostic.markers=生成的文档包含无效输入的诊断标记。 #Documentation for Enums doclet.enum_values_doc.fullbody=返回包含该枚举类型的常量的数组,\n顺序与声明这些常量的顺序相同 diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_de.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_de.properties index f8c3c086390..2192bfb3395 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_de.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_de.properties @@ -159,6 +159,8 @@ main.opt.add.reads.desc=Gibt weitere Module an, die als von einem angegebenen Mo main.opt.patch.module.arg==(:)* main.opt.patch.module.desc=Setzt ein Modul außer Kraft oder erweitert es mit Klassen\nund Ressourcen in JAR-Dateien oder Verzeichnissen +main.opt.disable.line.doc.comments.desc=Unterstützung für Dokumentationskommentare mit Zeilen,\ndie mit "///" beginnen, deaktivieren + main.Xusage.foot=\nDies sind keine Standardoptionen, und sie können ohne Vorankündigung geändert werden. main.doclet.usage.header=\nBereitgestellt vom Doclet {0}: diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_ja.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_ja.properties index 725497fecab..1cafe4d6ad5 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_ja.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_ja.properties @@ -159,6 +159,8 @@ main.opt.add.reads.desc=指定のモジュールで必須とみなされるよ main.opt.patch.module.arg==(:)* main.opt.patch.module.desc=JARファイルまたはディレクトリのクラスおよびリソースでモジュールを\n オーバーライドまたは拡張します +main.opt.disable.line.doc.comments.desc='///'で行を開始すると、ドキュメンテーション・コメントのサポートが\n無効化されます + main.Xusage.foot=\nこれらは非標準オプションであり予告なしに変更されることがあります。 main.doclet.usage.header=\n{0} docletにより提供されるもの: diff --git a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_zh_CN.properties b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_zh_CN.properties index 41d065f5b1c..4ad91361e06 100644 --- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_zh_CN.properties +++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/resources/javadoc_zh_CN.properties @@ -159,6 +159,8 @@ main.opt.add.reads.desc=指定被视为给定模块需要的其他模块。\n< main.opt.patch.module.arg=<模块>=<文件>(:<文件>)* main.opt.patch.module.desc=使用\nJAR 文件或目录中的类和资源覆盖\n 或增强模块 +main.opt.disable.line.doc.comments.desc=禁用对带有以 '///' 开头的行的文档注释\n的支持 + main.Xusage.foot=\n这些选项都是非标准选项, 如有更改, 恕不另行通知。 main.doclet.usage.header=\n由 {0} doclet 提供: diff --git a/src/jdk.jconsole/share/classes/sun/tools/jconsole/resources/messages_de.properties b/src/jdk.jconsole/share/classes/sun/tools/jconsole/resources/messages_de.properties index b0efddf5ed3..e6859fd8d74 100644 --- a/src/jdk.jconsole/share/classes/sun/tools/jconsole/resources/messages_de.properties +++ b/src/jdk.jconsole/share/classes/sun/tools/jconsole/resources/messages_de.properties @@ -282,7 +282,7 @@ USERNAME_ACCESSIBLE_NAME=Benutzername USER_DATA=UserData VIRTUAL_MACHINE=Virtuelle Maschine VM_ARGUMENTS=VM-Argumente -VMINTERNAL_FRAME_ACCESSIBLE_DESCRIPTION=Innerer Frame für die Überwachung einer Java Virtual Machine +VMINTERNAL_FRAME_ACCESSIBLE_DESCRIPTION=Innerer Frame für das Monitoring einer Java Virtual Machine VALUE=Wert VENDOR=Hersteller VERBOSE_OUTPUT=Verbose-Ausgabe diff --git a/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/javap_de.properties b/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/javap_de.properties index 44265e8a6a5..1c98b4cac6a 100644 --- a/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/javap_de.properties +++ b/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/javap_de.properties @@ -100,6 +100,8 @@ main.opt.constants=\ -constants Zeigt die endgültigen Ko main.opt.sysinfo=\ -sysinfo Zeigt die Systeminformationen (Pfad, Größe, Datum, SHA-256-Hash)\n der Klasse, die verarbeitet wird +main.opt.verify=\ -verify Gibt zusätzliche Klassenverifizierungsinformationen aus + main.opt.module=\ --module -m Gibt das Modul an, das die zu disassemblierenden Klassen enthält main.opt.J=\ -J Gibt eine VM-Option an diff --git a/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/javap_ja.properties b/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/javap_ja.properties index 01e587336c5..4cc9e83070d 100644 --- a/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/javap_ja.properties +++ b/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/javap_ja.properties @@ -100,6 +100,8 @@ main.opt.constants=\ -constants final定数を表示す main.opt.sysinfo=\ -sysinfo 処理しているクラスのシステム情報(パス、サイズ、日付、SHA-256ハッシュ)\n を表示します +main.opt.verify=\ -verify クラスの検証情報が追加で出力されます + main.opt.module=\ --module -m 逆アセンブルされるクラスを含むモジュールを指定する main.opt.J=\ -J VMオプションを指定する diff --git a/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/javap_zh_CN.properties b/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/javap_zh_CN.properties index 57e3e6ac2eb..77c2fdd6b63 100644 --- a/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/javap_zh_CN.properties +++ b/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/javap_zh_CN.properties @@ -100,6 +100,8 @@ main.opt.constants=\ -constants 显示最终常量 main.opt.sysinfo=\ -sysinfo 显示正在处理的类的\n 系统信息(路径、大小、日期、SHA-256 散列) +main.opt.verify=\ -verify 输出其他类验证信息 + main.opt.module=\ --module -m 指定包含要反汇编的类的模块 main.opt.J=\ -J 指定 VM 选项 diff --git a/src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/TTYResources_de.java b/src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/TTYResources_de.java index ee6449f7605..04ec27a624d 100644 --- a/src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/TTYResources_de.java +++ b/src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/TTYResources_de.java @@ -322,7 +322,7 @@ public Object[][] getContents() { {"Unable to set", "{0} kann nicht festgelegt werden: {1}"}, {"Unexpected event type", "Unerwarteter Ereignistyp: {0}"}, {"unknown", "unbekannt"}, - {"Unmonitoring", "\u00DCberwachung von {0} aufheben"}, + {"Unmonitoring", "Monitoring von {0} aufheben"}, {"Unrecognized command. Try help...", "Nicht erkannter Befehl: \"{0}\". Rufen Sie \"help\" auf..."}, {"Usage: catch exception", "Verwendung: catch [uncaught|caught|all] |"}, {"Usage: ignore exception", "Verwendung: ignore [uncaught|caught|all] |"}, diff --git a/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_de.properties b/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_de.properties index 3dc883b0728..0d2cfb5b6c0 100644 --- a/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_de.properties +++ b/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_de.properties @@ -94,6 +94,6 @@ message.preparing-distribution-dist=distribution.dist wird vorbereitet: {0}. message.signing.pkg=Warnung: Zum Signieren von PKG müssen Sie möglicherweise mit dem Schlüsselbundverwaltungstool die Option "Immer vertrauen" für Ihr Zertifikat festlegen. message.setfile.dmg=Das Festlegen des benutzerdefinierten Symbols für die DMG-Datei wurde übersprungen, weil das Utility "SetFile" nicht gefunden wurde. Durch Installieren von Xcode mit Befehlszeilentools sollte dieses Problem behoben werden. message.install-dir-ignored=Warnung: "--install-dir" wird von DMG nicht unterstützt. Stattdessen wird standardmäßig /Applications verwendet. -message.codesign.failed.reason.app.content="codesign" failed and additional application content was supplied via the "--app-content" parameter. Probably the additional content broke the integrity of the application bundle and caused the failure. Ensure content supplied via the "--app-content" parameter does not break the integrity of the application bundle, or add it in the post-processing step. +message.codesign.failed.reason.app.content="codesign" war nicht erfolgreich, und zusätzlicher Anwendungsinhalt wurde über den Parameter "--app-content" angegeben. Wahrscheinlich hat der zusätzliche Inhalt die Integrität des Anwendungs-Bundles beeinträchtigt und den Fehler verursacht. Stellen Sie sicher, das der über den Parameter "--app-content" angegebene Inhalt nicht die Integrität des Anwendungs-Bundles beeinträchtigt, oder fügen Sie ihn im Nachverarbeitungsschritt hinzu. warning.unsigned.app.image=Warnung: Nicht signiertes app-image wird zum Erstellen von signiertem {0} verwendet. warning.per.user.app.image.signed=Warnung: Konfiguration der installierten Anwendung pro Benutzer wird nicht unterstützt, da "{0}" im vordefinierten signierten Anwendungsimage fehlt. diff --git a/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_ja.properties b/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_ja.properties index f1359c0eaaa..08e6dd2b4e8 100644 --- a/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_ja.properties +++ b/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_ja.properties @@ -94,6 +94,6 @@ message.preparing-distribution-dist=distribution.distを準備しています: { message.signing.pkg=警告: PKGへの署名の場合、「キーチェーン・アクセス」ツールを使用して証明書に「常に信頼する」を設定する必要があります。 message.setfile.dmg='SetFile'ユーティリティが見つからないため、DMGファイルでのカスタム・アイコンの設定がスキップされました。Xcodeとコマンド・ライン・ツールをインストールすると、この問題は解決されます。 message.install-dir-ignored=警告: "--install-dir"はDMGでサポートされていません。/Applicationsにデフォルト設定されます。 -message.codesign.failed.reason.app.content="codesign" failed and additional application content was supplied via the "--app-content" parameter. Probably the additional content broke the integrity of the application bundle and caused the failure. Ensure content supplied via the "--app-content" parameter does not break the integrity of the application bundle, or add it in the post-processing step. +message.codesign.failed.reason.app.content="codesign"が失敗したため、追加のアプリケーション・コンテンツが、"--app-content"パラメータを介して提供されました。追加のコンテンツにより、アプリケーション・バンドルの整合性が損われ、失敗の原因になった可能性があります。"--app-content"パラメータを介して提供されたコンテンツによって、アプリケーション・バンドルの整合性が損われていないことを確認するか、処理後のステップで追加してください。 warning.unsigned.app.image=警告: 署名されていないapp-imageを使用して署名された{0}を作成します。 warning.per.user.app.image.signed=警告: 事前定義済の署名付きアプリケーション・イメージに"{0}"がないため、インストール済アプリケーションのユーザーごとの構成はサポートされません。 diff --git a/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_zh_CN.properties b/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_zh_CN.properties index eeb49d6e591..f4e75caa1ef 100644 --- a/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_zh_CN.properties +++ b/src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_zh_CN.properties @@ -94,6 +94,6 @@ message.preparing-distribution-dist=正在准备 distribution.dist: {0}。 message.signing.pkg=警告:要对 PKG 进行签名,可能需要使用“密钥链访问”工具为证书设置“始终信任”。 message.setfile.dmg=由于未找到 'SetFile' 实用程序,跳过了针对 DMG 文件设置定制图标的操作。安装带命令行工具的 Xcode 应能解决此问题。 message.install-dir-ignored=警告:"--install-dir" 不受 DMG 支持,将默认为 /Applications。 -message.codesign.failed.reason.app.content="codesign" failed and additional application content was supplied via the "--app-content" parameter. Probably the additional content broke the integrity of the application bundle and caused the failure. Ensure content supplied via the "--app-content" parameter does not break the integrity of the application bundle, or add it in the post-processing step. +message.codesign.failed.reason.app.content="codesign" 失败,并通过 "--app-content" 参数提供了附加应用程序内容。可能是附加内容破坏了应用程序包的完整性,导致了故障。请确保通过 "--app-content" 参数提供的内容不会破坏应用程序包的完整性,或者在后处理步骤中添加该内容。 warning.unsigned.app.image=警告:使用未签名的 app-image 生成已签名的 {0}。 warning.per.user.app.image.signed=警告:由于预定义的已签名应用程序映像中缺少 "{0}",不支持对已安装应用程序的每用户配置提供支持。 diff --git a/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_de.properties b/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_de.properties index dce4a911fe1..e0c15bfb8fb 100644 --- a/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_de.properties +++ b/src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_de.properties @@ -59,7 +59,7 @@ error.read-wix-l10n-file=Datei {0} konnte nicht geparst werden error.extract-culture-from-wix-l10n-file=Kulturwert konnte nicht aus Datei {0} gelesen werden message.icon-not-ico=Das angegebene Symbol "{0}" ist keine ICO-Datei und wird nicht verwendet. Stattdessen wird das Standardsymbol verwendet. -message.potential.windows.defender.issue=Warnung: Windows Defender verhindert eventuell die korrekte Ausführung von jpackage. Wenn ein Problem auftritt, deaktivieren Sie die Echtzeitüberwachung, oder fügen Sie einen Ausschluss für das Verzeichnis "{0}" hinzu. +message.potential.windows.defender.issue=Warnung: Windows Defender verhindert eventuell die korrekte Ausführung von jpackage. Wenn ein Problem auftritt, deaktivieren Sie das Echtzeitmonitoring, oder fügen Sie einen Ausschluss für das Verzeichnis "{0}" hinzu. message.outputting-to-location=EXE für Installationsprogramm wird generiert in: {0}. message.output-location=Installationsprogramm (.exe) gespeichert in: {0} message.tool-version=[{0}]-Version [{1}] erkannt. diff --git a/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n_de.properties b/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n_de.properties index 50c7515e9d8..21f30891008 100644 --- a/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n_de.properties +++ b/src/jdk.jshell/share/classes/jdk/internal/jshell/tool/resources/l10n_de.properties @@ -168,6 +168,7 @@ jshell.console.completion.all.completions = jshell.console.do.nothing = Nichts machen jshell.console.choice = Auswahl:\u0020 + jshell.console.create.variable = Variable erstellen jshell.console.create.method = Methode erstellen jshell.console.resolvable = \nDie ID kann in diesem Kontext aufgelöst werden. @@ -179,7 +180,7 @@ jshell.console.empty = \nLeerer Eintrag. Ein einzelner gültiger Ausdruck oder e jshell.fix.wrong.shortcut =Unerwartetes Zeichen nach Umschalt+Tab.\nVerwenden Sie "I" für automatischen Import, "V" zur Variablenerstellung oder "M" zur Methodenerstellung.\nWeitere Informationen finden Sie unter:\n/help shortcuts -help.usage = Verwendung: jshell

(h_loader()), + cast_from_oop
(SystemDictionary::java_system_loader()), + cast_from_oop
(SystemDictionary::java_platform_loader())); } return nullptr; } -Klass* ClassPrelinker::maybe_resolve_class(constantPoolHandle cp, int cp_index, TRAPS) { - assert(!is_in_archivebuilder_buffer(cp()), "sanity"); - InstanceKlass* cp_holder = cp->pool_holder(); - if (!cp_holder->is_shared_boot_class() && - !cp_holder->is_shared_platform_class() && - !cp_holder->is_shared_app_class()) { - // Don't trust custom loaders, as they may not be well-behaved - // when resolving classes. - return nullptr; - } - - Symbol* name = cp->klass_name_at(cp_index); - Klass* resolved_klass = find_loaded_class(THREAD, cp_holder->class_loader(), name); - if (resolved_klass != nullptr && can_archive_resolved_klass(cp_holder, resolved_klass)) { - Klass* k = cp->klass_at(cp_index, CHECK_NULL); // Should fail only with OOM - assert(k == resolved_klass, "must be"); - } - - return resolved_klass; +Klass* ClassPrelinker::find_loaded_class(Thread* current, ConstantPool* cp, int class_cp_index) { + Symbol* name = cp->klass_name_at(class_cp_index); + return find_loaded_class(current, cp->pool_holder()->class_loader(), name); } #if INCLUDE_CDS_JAVA_HEAP @@ -190,6 +214,110 @@ void ClassPrelinker::resolve_string(constantPoolHandle cp, int cp_index, TRAPS) } #endif +void ClassPrelinker::preresolve_class_cp_entries(JavaThread* current, InstanceKlass* ik, GrowableArray* preresolve_list) { + if (!SystemDictionaryShared::is_builtin_loader(ik->class_loader_data())) { + return; + } + + JavaThread* THREAD = current; + constantPoolHandle cp(THREAD, ik->constants()); + for (int cp_index = 1; cp_index < cp->length(); cp_index++) { + if (cp->tag_at(cp_index).value() == JVM_CONSTANT_UnresolvedClass) { + if (preresolve_list != nullptr && preresolve_list->at(cp_index) == false) { + // This class was not resolved during trial run. Don't attempt to resolve it. Otherwise + // the compiler may generate less efficient code. + continue; + } + if (find_loaded_class(current, cp(), cp_index) == nullptr) { + // Do not resolve any class that has not been loaded yet + continue; + } + Klass* resolved_klass = cp->klass_at(cp_index, THREAD); + if (HAS_PENDING_EXCEPTION) { + CLEAR_PENDING_EXCEPTION; // just ignore + } else { + log_trace(cds, resolve)("Resolved class [%3d] %s -> %s", cp_index, ik->external_name(), + resolved_klass->external_name()); + } + } + } +} + +void ClassPrelinker::preresolve_field_and_method_cp_entries(JavaThread* current, InstanceKlass* ik, GrowableArray* preresolve_list) { + JavaThread* THREAD = current; + constantPoolHandle cp(THREAD, ik->constants()); + if (cp->cache() == nullptr) { + return; + } + for (int i = 0; i < ik->methods()->length(); i++) { + Method* m = ik->methods()->at(i); + BytecodeStream bcs(methodHandle(THREAD, m)); + while (!bcs.is_last_bytecode()) { + bcs.next(); + Bytecodes::Code raw_bc = bcs.raw_code(); + switch (raw_bc) { + case Bytecodes::_getfield: + case Bytecodes::_putfield: + maybe_resolve_fmi_ref(ik, m, raw_bc, bcs.get_index_u2(), preresolve_list, THREAD); + if (HAS_PENDING_EXCEPTION) { + CLEAR_PENDING_EXCEPTION; // just ignore + } + break; + default: + break; + } + } + } +} + +void ClassPrelinker::maybe_resolve_fmi_ref(InstanceKlass* ik, Method* m, Bytecodes::Code bc, int raw_index, + GrowableArray* preresolve_list, TRAPS) { + methodHandle mh(THREAD, m); + constantPoolHandle cp(THREAD, ik->constants()); + HandleMark hm(THREAD); + int cp_index = cp->to_cp_index(raw_index, bc); + + if (cp->is_resolved(raw_index, bc)) { + return; + } + + if (preresolve_list != nullptr && preresolve_list->at(cp_index) == false) { + // This field wasn't resolved during the trial run. Don't attempt to resolve it. Otherwise + // the compiler may generate less efficient code. + return; + } + + int klass_cp_index = cp->uncached_klass_ref_index_at(cp_index); + if (find_loaded_class(THREAD, cp(), klass_cp_index) == nullptr) { + // Do not resolve any field/methods from a class that has not been loaded yet. + return; + } + + Klass* resolved_klass = cp->klass_ref_at(raw_index, bc, CHECK); + + switch (bc) { + case Bytecodes::_getfield: + case Bytecodes::_putfield: + InterpreterRuntime::resolve_get_put(bc, raw_index, mh, cp, false /*initialize_holder*/, CHECK); + break; + + default: + ShouldNotReachHere(); + } + + if (log_is_enabled(Trace, cds, resolve)) { + ResourceMark rm(THREAD); + bool resolved = cp->is_resolved(raw_index, bc); + Symbol* name = cp->name_ref_at(raw_index, bc); + Symbol* signature = cp->signature_ref_at(raw_index, bc); + log_trace(cds, resolve)("%s %s [%3d] %s -> %s.%s:%s", + (resolved ? "Resolved" : "Failed to resolve"), + Bytecodes::name(bc), cp_index, ik->external_name(), + resolved_klass->external_name(), + name->as_C_string(), signature->as_C_string()); + } +} + #ifdef ASSERT bool ClassPrelinker::is_in_archivebuilder_buffer(address p) { if (!Thread::current()->is_VM_thread() || ArchiveBuilder::current() == nullptr) { diff --git a/src/hotspot/share/cds/classPrelinker.hpp b/src/hotspot/share/cds/classPrelinker.hpp index 7a4f36386ea..41588961d8b 100644 --- a/src/hotspot/share/cds/classPrelinker.hpp +++ b/src/hotspot/share/cds/classPrelinker.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,6 +25,7 @@ #ifndef SHARE_CDS_CLASSPRELINKER_HPP #define SHARE_CDS_CLASSPRELINKER_HPP +#include "interpreter/bytecodes.hpp" #include "oops/oopsHierarchy.hpp" #include "memory/allStatic.hpp" #include "memory/allocation.hpp" @@ -64,14 +65,21 @@ class ClassPrelinker : AllStatic { return is_in_archivebuilder_buffer((address)(p)); } static void resolve_string(constantPoolHandle cp, int cp_index, TRAPS) NOT_CDS_JAVA_HEAP_RETURN; - static Klass* maybe_resolve_class(constantPoolHandle cp, int cp_index, TRAPS); - static bool can_archive_resolved_klass(InstanceKlass* cp_holder, Klass* resolved_klass); - static Klass* find_loaded_class(JavaThread* THREAD, oop class_loader, Symbol* name); + static bool is_class_resolution_deterministic(InstanceKlass* cp_holder, Klass* resolved_class); + static Klass* find_loaded_class(Thread* current, oop class_loader, Symbol* name); + static Klass* find_loaded_class(Thread* current, ConstantPool* cp, int class_cp_index); + + // fmi = FieldRef/MethodRef/InterfaceMethodRef + static void maybe_resolve_fmi_ref(InstanceKlass* ik, Method* m, Bytecodes::Code bc, int raw_index, + GrowableArray* resolve_fmi_list, TRAPS); public: static void initialize(); static void dispose(); + static void preresolve_class_cp_entries(JavaThread* current, InstanceKlass* ik, GrowableArray* preresolve_list); + static void preresolve_field_and_method_cp_entries(JavaThread* current, InstanceKlass* ik, GrowableArray* preresolve_list); + // Is this class resolved as part of vmClasses::resolve_all()? If so, these // classes are guatanteed to be loaded at runtime (and cannot be replaced by JVMTI) // when CDS is enabled. Therefore, we can safely keep a direct reference to these @@ -82,10 +90,7 @@ class ClassPrelinker : AllStatic { // CDS archive. static void dumptime_resolve_constants(InstanceKlass* ik, TRAPS); - // Can we resolve the klass entry at cp_index in this constant pool, and store - // the result in the CDS archive? Returns true if cp_index is guaranteed to - // resolve to the same InstanceKlass* at both dump time and run time. - static bool can_archive_resolved_klass(ConstantPool* cp, int cp_index); + static bool is_resolution_deterministic(ConstantPool* cp, int cp_index); }; #endif // SHARE_CDS_CLASSPRELINKER_HPP diff --git a/src/hotspot/share/cds/dumpAllocStats.cpp b/src/hotspot/share/cds/dumpAllocStats.cpp index 21a40ca8f28..30ef1597063 100644 --- a/src/hotspot/share/cds/dumpAllocStats.cpp +++ b/src/hotspot/share/cds/dumpAllocStats.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -102,8 +102,12 @@ void DumpAllocStats::print_stats(int ro_all, int rw_all) { #undef fmt_stats - msg.debug("Class CP entries = %d, archived = %d (%3.1f%%)", - _num_klass_cp_entries, _num_klass_cp_entries_archived, - percent_of(_num_klass_cp_entries_archived, _num_klass_cp_entries)); - + msg.info("Class CP entries = %6d, archived = %6d (%5.1f%%), reverted = %6d", + _num_klass_cp_entries, _num_klass_cp_entries_archived, + percent_of(_num_klass_cp_entries_archived, _num_klass_cp_entries), + _num_klass_cp_entries_reverted); + msg.info("Field CP entries = %6d, archived = %6d (%5.1f%%), reverted = %6d", + _num_field_cp_entries, _num_field_cp_entries_archived, + percent_of(_num_field_cp_entries_archived, _num_field_cp_entries), + _num_field_cp_entries_reverted); } diff --git a/src/hotspot/share/cds/dumpAllocStats.hpp b/src/hotspot/share/cds/dumpAllocStats.hpp index f6e170cdef2..424a98aa738 100644 --- a/src/hotspot/share/cds/dumpAllocStats.hpp +++ b/src/hotspot/share/cds/dumpAllocStats.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -65,8 +65,12 @@ class DumpAllocStats : public StackObj { int _counts[2][_number_of_types]; int _bytes [2][_number_of_types]; + int _num_field_cp_entries; + int _num_field_cp_entries_archived; + int _num_field_cp_entries_reverted; int _num_klass_cp_entries; int _num_klass_cp_entries_archived; + int _num_klass_cp_entries_reverted; public: enum { RO = 0, RW = 1 }; @@ -74,8 +78,12 @@ class DumpAllocStats : public StackObj { DumpAllocStats() { memset(_counts, 0, sizeof(_counts)); memset(_bytes, 0, sizeof(_bytes)); - _num_klass_cp_entries = 0; - _num_klass_cp_entries_archived = 0; + _num_field_cp_entries = 0; + _num_field_cp_entries_archived = 0; + _num_field_cp_entries_reverted = 0; + _num_klass_cp_entries = 0; + _num_klass_cp_entries_archived = 0; + _num_klass_cp_entries_reverted = 0; }; CompactHashtableStats* symbol_stats() { return &_symbol_stats; } @@ -102,9 +110,16 @@ class DumpAllocStats : public StackObj { _bytes[RW][CppVTablesType] += byte_size; } - void record_klass_cp_entry(bool archived) { + void record_field_cp_entry(bool archived, bool reverted) { + _num_field_cp_entries ++; + _num_field_cp_entries_archived += archived ? 1 : 0; + _num_field_cp_entries_reverted += reverted ? 1 : 0; + } + + void record_klass_cp_entry(bool archived, bool reverted) { _num_klass_cp_entries ++; _num_klass_cp_entries_archived += archived ? 1 : 0; + _num_klass_cp_entries_reverted += reverted ? 1 : 0; } void print_stats(int ro_all, int rw_all); diff --git a/src/hotspot/share/cds/lambdaFormInvokers.hpp b/src/hotspot/share/cds/lambdaFormInvokers.hpp index 7bb5e5932c7..e78ddb1a1bc 100644 --- a/src/hotspot/share/cds/lambdaFormInvokers.hpp +++ b/src/hotspot/share/cds/lambdaFormInvokers.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,6 +32,7 @@ class ClassFileStream; template class Array; +class SerializeClosure; class LambdaFormInvokers : public AllStatic { private: @@ -46,5 +47,6 @@ class LambdaFormInvokers : public AllStatic { static void regenerate_holder_classes(TRAPS); static void serialize(SerializeClosure* soc); static void cleanup_regenerated_classes(); + inline static bool may_be_regenerated_class(Symbol* name); }; #endif // SHARE_CDS_LAMBDAFORMINVOKERS_HPP diff --git a/src/hotspot/share/cds/lambdaFormInvokers.inline.hpp b/src/hotspot/share/cds/lambdaFormInvokers.inline.hpp new file mode 100644 index 00000000000..dddd0e36c47 --- /dev/null +++ b/src/hotspot/share/cds/lambdaFormInvokers.inline.hpp @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#ifndef SHARE_CDS_LAMBDAFORMINVOKERS_INLINE_HPP +#define SHARE_CDS_LAMBDAFORMINVOKERS_INLINE_HPP + +#include "cds/lambdaFormInvokers.hpp" +#include "classfile/vmSymbols.hpp" + +inline bool LambdaFormInvokers::may_be_regenerated_class(Symbol* name) { + return name == vmSymbols::java_lang_invoke_Invokers_Holder() || + name == vmSymbols::java_lang_invoke_DirectMethodHandle_Holder() || + name == vmSymbols::java_lang_invoke_LambdaForm_Holder() || + name == vmSymbols::java_lang_invoke_DelegatingMethodHandle_Holder(); +} + +#endif // SHARE_CDS_LAMBDAFORMINVOKERS_INLINE_HPP diff --git a/src/hotspot/share/interpreter/interpreterRuntime.cpp b/src/hotspot/share/interpreter/interpreterRuntime.cpp index dc5f2f5b637..fb779b039f4 100644 --- a/src/hotspot/share/interpreter/interpreterRuntime.cpp +++ b/src/hotspot/share/interpreter/interpreterRuntime.cpp @@ -645,27 +645,31 @@ JRT_END // void InterpreterRuntime::resolve_get_put(JavaThread* current, Bytecodes::Code bytecode) { - // resolve field - fieldDescriptor info; LastFrameAccessor last_frame(current); constantPoolHandle pool(current, last_frame.method()->constants()); methodHandle m(current, last_frame.method()); + + resolve_get_put(bytecode, last_frame.get_index_u2(bytecode), m, pool, true /*initialize_holder*/, current); +} + +void InterpreterRuntime::resolve_get_put(Bytecodes::Code bytecode, int field_index, + methodHandle& m, + constantPoolHandle& pool, + bool initialize_holder, TRAPS) { + fieldDescriptor info; bool is_put = (bytecode == Bytecodes::_putfield || bytecode == Bytecodes::_nofast_putfield || bytecode == Bytecodes::_putstatic); bool is_static = (bytecode == Bytecodes::_getstatic || bytecode == Bytecodes::_putstatic); - int field_index = last_frame.get_index_u2(bytecode); { - JvmtiHideSingleStepping jhss(current); - JavaThread* THREAD = current; // For exception macros. + JvmtiHideSingleStepping jhss(THREAD); LinkResolver::resolve_field_access(info, pool, field_index, - m, bytecode, CHECK); + m, bytecode, initialize_holder, CHECK); } // end JvmtiHideSingleStepping // check if link resolution caused cpCache to be updated if (pool->resolved_field_entry_at(field_index)->is_resolved(bytecode)) return; - // compute auxiliary field attributes TosState state = as_TosState(info.field_type()); diff --git a/src/hotspot/share/interpreter/interpreterRuntime.hpp b/src/hotspot/share/interpreter/interpreterRuntime.hpp index 297585d37e8..3a8db1363df 100644 --- a/src/hotspot/share/interpreter/interpreterRuntime.hpp +++ b/src/hotspot/share/interpreter/interpreterRuntime.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -91,7 +91,12 @@ class InterpreterRuntime: AllStatic { static void throw_pending_exception(JavaThread* current); static void resolve_from_cache(JavaThread* current, Bytecodes::Code bytecode); - private: + + // Used by ClassListParser. + static void resolve_get_put(Bytecodes::Code bytecode, int field_index, + methodHandle& m, constantPoolHandle& pool, bool initialize_holder, TRAPS); + +private: // Statics & fields static void resolve_get_put(JavaThread* current, Bytecodes::Code bytecode); diff --git a/src/hotspot/share/interpreter/linkResolver.cpp b/src/hotspot/share/interpreter/linkResolver.cpp index 9247b8a1740..1fe715f9757 100644 --- a/src/hotspot/share/interpreter/linkResolver.cpp +++ b/src/hotspot/share/interpreter/linkResolver.cpp @@ -974,9 +974,14 @@ void LinkResolver::check_field_accessability(Klass* ref_klass, } } -void LinkResolver::resolve_field_access(fieldDescriptor& fd, const constantPoolHandle& pool, int index, const methodHandle& method, Bytecodes::Code byte, TRAPS) { +void LinkResolver::resolve_field_access(fieldDescriptor& fd, + const constantPoolHandle& pool, + int index, + const methodHandle& method, + Bytecodes::Code byte, + bool initialize_class, TRAPS) { LinkInfo link_info(pool, index, method, byte, CHECK); - resolve_field(fd, link_info, byte, true, CHECK); + resolve_field(fd, link_info, byte, initialize_class, CHECK); } void LinkResolver::resolve_field(fieldDescriptor& fd, diff --git a/src/hotspot/share/interpreter/linkResolver.hpp b/src/hotspot/share/interpreter/linkResolver.hpp index e18749cd6a5..80f5d230052 100644 --- a/src/hotspot/share/interpreter/linkResolver.hpp +++ b/src/hotspot/share/interpreter/linkResolver.hpp @@ -293,7 +293,16 @@ class LinkResolver: AllStatic { const constantPoolHandle& pool, int index, const methodHandle& method, - Bytecodes::Code byte, TRAPS); + Bytecodes::Code byte, + bool initialize_class, TRAPS); + static void resolve_field_access(fieldDescriptor& result, + const constantPoolHandle& pool, + int index, + const methodHandle& method, + Bytecodes::Code byte, TRAPS) { + resolve_field_access(result, pool, index, method, byte, + /* initialize_class*/true, THREAD); + } static void resolve_field(fieldDescriptor& result, const LinkInfo& link_info, Bytecodes::Code access_kind, bool initialize_class, TRAPS); diff --git a/src/hotspot/share/oops/constantPool.cpp b/src/hotspot/share/oops/constantPool.cpp index 329b8157cb7..35a1d95b6e6 100644 --- a/src/hotspot/share/oops/constantPool.cpp +++ b/src/hotspot/share/oops/constantPool.cpp @@ -300,20 +300,22 @@ objArrayOop ConstantPool::prepare_resolved_references_for_archiving() { objArrayOop rr = resolved_references(); if (rr != nullptr) { - ConstantPool* orig_pool = ArchiveBuilder::current()->get_source_addr(this); - objArrayOop scratch_rr = HeapShared::scratch_resolved_references(orig_pool); + int rr_len = rr->length(); + ConstantPool* src_cp = ArchiveBuilder::current()->get_source_addr(this); + objArrayOop scratch_rr = HeapShared::scratch_resolved_references(src_cp); Array* ref_map = reference_map(); int ref_map_len = ref_map == nullptr ? 0 : ref_map->length(); - int rr_len = rr->length(); for (int i = 0; i < rr_len; i++) { oop obj = rr->obj_at(i); scratch_rr->obj_at_put(i, nullptr); - if (obj != nullptr && i < ref_map_len) { - int index = object_to_cp_index(i); - if (tag_at(index).is_string()) { - assert(java_lang_String::is_instance(obj), "must be"); - if (!ArchiveHeapWriter::is_string_too_large_to_archive(obj)) { - scratch_rr->obj_at_put(i, obj); + if (obj != nullptr) { + if (i < ref_map_len) { + int index = object_to_cp_index(i); + if (tag_at(index).is_string()) { + assert(java_lang_String::is_instance(obj), "must be"); + if (!ArchiveHeapWriter::is_string_too_large_to_archive(obj)) { + scratch_rr->obj_at_put(i, obj); + } } } } @@ -386,23 +388,61 @@ void ConstantPool::remove_unshareable_info() { // we always set _on_stack to true to avoid having to change _flags during runtime. _flags |= (_on_stack | _is_shared); - if (!_pool_holder->is_linked() && !_pool_holder->verified_at_dump_time()) { - return; + // resolved_references(): remember its length. If it cannot be restored + // from the archived heap objects at run time, we need to dynamically allocate it. + if (cache() != nullptr) { + set_resolved_reference_length( + resolved_references() != nullptr ? resolved_references()->length() : 0); + set_resolved_references(OopHandle()); + } + remove_unshareable_entries(); +} + +static const char* get_type(Klass* k) { + const char* type; + Klass* src_k; + if (ArchiveBuilder::is_active() && ArchiveBuilder::current()->is_in_buffer_space(k)) { + src_k = ArchiveBuilder::current()->get_source_addr(k); + } else { + src_k = k; + } + + if (src_k->is_objArray_klass()) { + src_k = ObjArrayKlass::cast(src_k)->bottom_klass(); + assert(!src_k->is_objArray_klass(), "sanity"); } - // Resolved references are not in the shared archive. - // Save the length for restoration. It is not necessarily the same length - // as reference_map.length() if invokedynamic is saved. It is needed when - // re-creating the resolved reference array if archived heap data cannot be map - // at runtime. - set_resolved_reference_length( - resolved_references() != nullptr ? resolved_references()->length() : 0); - set_resolved_references(OopHandle()); - bool archived = false; + if (src_k->is_typeArray_klass()) { + type = "prim"; + } else { + InstanceKlass* src_ik = InstanceKlass::cast(src_k); + oop loader = src_ik->class_loader(); + if (loader == nullptr) { + type = "boot"; + } else if (loader == SystemDictionary::java_platform_loader()) { + type = "plat"; + } else if (loader == SystemDictionary::java_system_loader()) { + type = "app"; + } else { + type = "unreg"; + } + } + + return type; +} + +void ConstantPool::remove_unshareable_entries() { + ResourceMark rm; + log_info(cds, resolve)("Archiving CP entries for %s", pool_holder()->name()->as_C_string()); for (int cp_index = 1; cp_index < length(); cp_index++) { // cp_index 0 is unused - switch (tag_at(cp_index).value()) { + int cp_tag = tag_at(cp_index).value(); + switch (cp_tag) { + case JVM_CONSTANT_UnresolvedClass: + ArchiveBuilder::alloc_stats()->record_klass_cp_entry(false, false); + break; case JVM_CONSTANT_UnresolvedClassInError: tag_at_put(cp_index, JVM_CONSTANT_UnresolvedClass); + ArchiveBuilder::alloc_stats()->record_klass_cp_entry(false, true); break; case JVM_CONSTANT_MethodHandleInError: tag_at_put(cp_index, JVM_CONSTANT_MethodHandle); @@ -414,8 +454,9 @@ void ConstantPool::remove_unshareable_info() { tag_at_put(cp_index, JVM_CONSTANT_Dynamic); break; case JVM_CONSTANT_Class: - archived = maybe_archive_resolved_klass_at(cp_index); - ArchiveBuilder::alloc_stats()->record_klass_cp_entry(archived); + remove_resolved_klass_if_non_deterministic(cp_index); + break; + default: break; } } @@ -426,40 +467,46 @@ void ConstantPool::remove_unshareable_info() { } } -bool ConstantPool::maybe_archive_resolved_klass_at(int cp_index) { +void ConstantPool::remove_resolved_klass_if_non_deterministic(int cp_index) { assert(ArchiveBuilder::current()->is_in_buffer_space(this), "must be"); assert(tag_at(cp_index).is_klass(), "must be resolved"); - if (pool_holder()->is_hidden() && cp_index == pool_holder()->this_class_index()) { - // All references to a hidden class's own field/methods are through this - // index, which was resolved in ClassFileParser::fill_instance_klass. We - // must preserve it. - return true; + Klass* k = resolved_klass_at(cp_index); + bool can_archive; + + if (k == nullptr) { + // We'd come here if the referenced class has been excluded via + // SystemDictionaryShared::is_excluded_class(). As a result, ArchiveBuilder + // has cleared the resolved_klasses()->at(...) pointer to NULL. Thus, we + // need to revert the tag to JVM_CONSTANT_UnresolvedClass. + can_archive = false; + } else { + ConstantPool* src_cp = ArchiveBuilder::current()->get_source_addr(this); + can_archive = ClassPrelinker::is_resolution_deterministic(src_cp, cp_index); } - CPKlassSlot kslot = klass_slot_at(cp_index); - int resolved_klass_index = kslot.resolved_klass_index(); - Klass* k = resolved_klasses()->at(resolved_klass_index); - // k could be null if the referenced class has been excluded via - // SystemDictionaryShared::is_excluded_class(). + if (!can_archive) { + int resolved_klass_index = klass_slot_at(cp_index).resolved_klass_index(); + resolved_klasses()->at_put(resolved_klass_index, nullptr); + tag_at_put(cp_index, JVM_CONSTANT_UnresolvedClass); + } - if (k != nullptr) { - ConstantPool* src_cp = ArchiveBuilder::current()->get_source_addr(this); - if (ClassPrelinker::can_archive_resolved_klass(src_cp, cp_index)) { - if (log_is_enabled(Debug, cds, resolve)) { - ResourceMark rm; - log_debug(cds, resolve)("Resolved klass CP entry [%d]: %s => %s", cp_index, - pool_holder()->external_name(), k->external_name()); - } - return true; + LogStreamHandle(Trace, cds, resolve) log; + if (log.is_enabled()) { + ResourceMark rm; + log.print("%s klass CP entry [%3d]: %s %s", + (can_archive ? "archived" : "reverted"), + cp_index, pool_holder()->name()->as_C_string(), get_type(pool_holder())); + if (can_archive) { + log.print(" => %s %s%s", k->name()->as_C_string(), get_type(k), + (!k->is_instance_klass() || pool_holder()->is_subtype_of(k)) ? "" : " (not supertype)"); + } else { + Symbol* name = klass_name_at(cp_index); + log.print(" %s", name->as_C_string()); } } - // This referenced class cannot be archived. Revert the tag to UnresolvedClass, - // so that the proper class loading and initialization can happen at runtime. - resolved_klasses()->at_put(resolved_klass_index, nullptr); - tag_at_put(cp_index, JVM_CONSTANT_UnresolvedClass); - return false; + ArchiveBuilder::alloc_stats()->record_klass_cp_entry(can_archive, /*reverted=*/!can_archive); } #endif // INCLUDE_CDS @@ -707,6 +754,31 @@ int ConstantPool::to_cp_index(int index, Bytecodes::Code code) { } } +bool ConstantPool::is_resolved(int index, Bytecodes::Code code) { + assert(cache() != nullptr, "'index' is a rewritten index so this class must have been rewritten"); + switch(code) { + case Bytecodes::_invokedynamic: + return resolved_indy_entry_at(index)->is_resolved(); + + case Bytecodes::_getfield: + case Bytecodes::_getstatic: + case Bytecodes::_putfield: + case Bytecodes::_putstatic: + return resolved_field_entry_at(index)->is_resolved(code); + + case Bytecodes::_invokeinterface: + case Bytecodes::_invokehandle: + case Bytecodes::_invokespecial: + case Bytecodes::_invokestatic: + case Bytecodes::_invokevirtual: + case Bytecodes::_fast_invokevfinal: // Bytecode interpreter uses this + return resolved_method_entry_at(index)->is_resolved(code); + + default: + fatal("Unexpected bytecode: %s", Bytecodes::name(code)); + } +} + u2 ConstantPool::uncached_name_and_type_ref_index_at(int cp_index) { if (tag_at(cp_index).has_bootstrap()) { u2 pool_index = bootstrap_name_and_type_ref_index_at(cp_index); diff --git a/src/hotspot/share/oops/constantPool.hpp b/src/hotspot/share/oops/constantPool.hpp index e48229749f3..7a17c62ddaf 100644 --- a/src/hotspot/share/oops/constantPool.hpp +++ b/src/hotspot/share/oops/constantPool.hpp @@ -661,6 +661,8 @@ class ConstantPool : public Metadata { int to_cp_index(int which, Bytecodes::Code code); + bool is_resolved(int which, Bytecodes::Code code); + // Lookup for entries consisting of (name_index, signature_index) u2 name_ref_index_at(int cp_index); // == low-order jshort of name_and_type_at(cp_index) u2 signature_ref_index_at(int cp_index); // == high-order jshort of name_and_type_at(cp_index) @@ -677,9 +679,11 @@ class ConstantPool : public Metadata { // CDS support objArrayOop prepare_resolved_references_for_archiving() NOT_CDS_JAVA_HEAP_RETURN_(nullptr); void add_dumped_interned_strings() NOT_CDS_JAVA_HEAP_RETURN; - bool maybe_archive_resolved_klass_at(int cp_index); void remove_unshareable_info(); void restore_unshareable_info(TRAPS); +private: + void remove_unshareable_entries(); + void remove_resolved_klass_if_non_deterministic(int cp_index); #endif private: diff --git a/src/hotspot/share/oops/cpCache.cpp b/src/hotspot/share/oops/cpCache.cpp index 03dbce19f2e..c16ba3b76f7 100644 --- a/src/hotspot/share/oops/cpCache.cpp +++ b/src/hotspot/share/oops/cpCache.cpp @@ -25,6 +25,7 @@ #include "precompiled.hpp" #include "cds/archiveBuilder.hpp" #include "cds/cdsConfig.hpp" +#include "cds/classPrelinker.hpp" #include "cds/heapShared.hpp" #include "classfile/resolutionErrors.hpp" #include "classfile/systemDictionary.hpp" @@ -388,18 +389,14 @@ void ConstantPoolCache::record_gc_epoch() { #if INCLUDE_CDS void ConstantPoolCache::remove_unshareable_info() { assert(CDSConfig::is_dumping_archive(), "sanity"); - // is the copy to be written into the archive. It's in the ArchiveBuilder's "buffer space". - // However, this->_initial_entries was not copied/relocated by the ArchiveBuilder, so it's - // still pointing to the array allocated inside save_for_archive(). + if (_resolved_indy_entries != nullptr) { for (int i = 0; i < _resolved_indy_entries->length(); i++) { resolved_indy_entry_at(i)->remove_unshareable_info(); } } if (_resolved_field_entries != nullptr) { - for (int i = 0; i < _resolved_field_entries->length(); i++) { - resolved_field_entry_at(i)->remove_unshareable_info(); - } + remove_resolved_field_entries_if_non_deterministic(); } if (_resolved_method_entries != nullptr) { for (int i = 0; i < _resolved_method_entries->length(); i++) { @@ -407,6 +404,41 @@ void ConstantPoolCache::remove_unshareable_info() { } } } + +void ConstantPoolCache::remove_resolved_field_entries_if_non_deterministic() { + ConstantPool* cp = constant_pool(); + ConstantPool* src_cp = ArchiveBuilder::current()->get_source_addr(cp); + for (int i = 0; i < _resolved_field_entries->length(); i++) { + ResolvedFieldEntry* rfi = _resolved_field_entries->adr_at(i); + int cp_index = rfi->constant_pool_index(); + bool archived = false; + bool resolved = rfi->is_resolved(Bytecodes::_getfield) || + rfi->is_resolved(Bytecodes::_putfield); + if (resolved && ClassPrelinker::is_resolution_deterministic(src_cp, cp_index)) { + rfi->mark_and_relocate(); + archived = true; + } else { + rfi->remove_unshareable_info(); + } + if (resolved) { + LogStreamHandle(Trace, cds, resolve) log; + if (log.is_enabled()) { + ResourceMark rm; + int klass_cp_index = cp->uncached_klass_ref_index_at(cp_index); + Symbol* klass_name = cp->klass_name_at(klass_cp_index); + Symbol* name = cp->uncached_name_ref_at(cp_index); + Symbol* signature = cp->uncached_signature_ref_at(cp_index); + log.print("%s field CP entry [%3d]: %s %s %s.%s:%s", + (archived ? "archived" : "reverted"), + cp_index, + cp->pool_holder()->name()->as_C_string(), + (archived ? "=>" : " "), + klass_name->as_C_string(), name->as_C_string(), signature->as_C_string()); + } + } + ArchiveBuilder::alloc_stats()->record_field_cp_entry(archived, resolved && !archived); + } +} #endif // INCLUDE_CDS void ConstantPoolCache::deallocate_contents(ClassLoaderData* data) { diff --git a/src/hotspot/share/oops/cpCache.hpp b/src/hotspot/share/oops/cpCache.hpp index f9239835198..1f91b194623 100644 --- a/src/hotspot/share/oops/cpCache.hpp +++ b/src/hotspot/share/oops/cpCache.hpp @@ -193,14 +193,12 @@ class ConstantPoolCache: public MetaspaceObj { #if INCLUDE_CDS void remove_unshareable_info(); - void save_for_archive(TRAPS); #endif public: static int size() { return align_metadata_size(sizeof(ConstantPoolCache) / wordSize); } private: - // Helpers ConstantPool** constant_pool_addr() { return &_constant_pool; } @@ -224,6 +222,10 @@ class ConstantPoolCache: public MetaspaceObj { void dump_cache(); #endif // INCLUDE_JVMTI +#if INCLUDE_CDS + void remove_resolved_field_entries_if_non_deterministic(); +#endif + // RedefineClasses support DEBUG_ONLY(bool on_stack() { return false; }) void deallocate_contents(ClassLoaderData* data); diff --git a/src/hotspot/share/oops/instanceKlass.cpp b/src/hotspot/share/oops/instanceKlass.cpp index 83dde12af3d..8a716c8f9f6 100644 --- a/src/hotspot/share/oops/instanceKlass.cpp +++ b/src/hotspot/share/oops/instanceKlass.cpp @@ -2557,7 +2557,9 @@ void InstanceKlass::remove_unshareable_info() { init_implementor(); } - constants()->remove_unshareable_info(); + // Call remove_unshareable_info() on other objects that belong to this class, except + // for constants()->remove_unshareable_info(), which is called in a separate pass in + // ArchiveBuilder::make_klasses_shareable(), for (int i = 0; i < methods()->length(); i++) { Method* m = methods()->at(i); diff --git a/src/hotspot/share/oops/resolvedFieldEntry.cpp b/src/hotspot/share/oops/resolvedFieldEntry.cpp index 779f7676293..83243251306 100644 --- a/src/hotspot/share/oops/resolvedFieldEntry.cpp +++ b/src/hotspot/share/oops/resolvedFieldEntry.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,8 @@ */ #include "precompiled.hpp" -#include "resolvedFieldEntry.hpp" +#include "cds/archiveBuilder.hpp" +#include "oops/resolvedFieldEntry.hpp" void ResolvedFieldEntry::print_on(outputStream* st) const { st->print_cr("Field Entry:"); @@ -43,8 +44,14 @@ void ResolvedFieldEntry::print_on(outputStream* st) const { st->print_cr(" - Put Bytecode: %s", Bytecodes::name((Bytecodes::Code)put_code())); } +#if INCLUDE_CDS void ResolvedFieldEntry::remove_unshareable_info() { u2 saved_cpool_index = _cpool_index; memset(this, 0, sizeof(*this)); _cpool_index = saved_cpool_index; } + +void ResolvedFieldEntry::mark_and_relocate() { + ArchiveBuilder::current()->mark_and_relocate_to_buffered_addr(&_field_holder); +} +#endif diff --git a/src/hotspot/share/oops/resolvedFieldEntry.hpp b/src/hotspot/share/oops/resolvedFieldEntry.hpp index 7765240926d..c98d5f54d1e 100644 --- a/src/hotspot/share/oops/resolvedFieldEntry.hpp +++ b/src/hotspot/share/oops/resolvedFieldEntry.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -55,6 +55,17 @@ class ResolvedFieldEntry { u1 _flags; // Flags: [0000|00|is_final|is_volatile] u1 _get_code, _put_code; // Get and Put bytecodes of the field + void copy_from(const ResolvedFieldEntry& other) { + _field_holder = other._field_holder; + _field_offset = other._field_offset; + _field_index = other._field_index; + _cpool_index = other._cpool_index; + _tos_state = other._tos_state; + _flags = other._flags; + _get_code = other._get_code; + _put_code = other._put_code; + } + public: ResolvedFieldEntry(u2 cpi) : _field_holder(nullptr), @@ -65,9 +76,19 @@ class ResolvedFieldEntry { _flags(0), _get_code(0), _put_code(0) {} + ResolvedFieldEntry() : ResolvedFieldEntry(0) {} + ResolvedFieldEntry(const ResolvedFieldEntry& other) { + copy_from(other); + } + + ResolvedFieldEntry& operator=(const ResolvedFieldEntry& other) { + copy_from(other); + return *this; + } + // Bit shift to get flags // Note: Only two flags exists at the moment but more could be added enum { @@ -131,7 +152,10 @@ class ResolvedFieldEntry { } // CDS +#if INCLUDE_CDS void remove_unshareable_info(); + void mark_and_relocate(); +#endif // Offsets static ByteSize field_holder_offset() { return byte_offset_of(ResolvedFieldEntry, _field_holder); } diff --git a/src/hotspot/share/oops/resolvedIndyEntry.cpp b/src/hotspot/share/oops/resolvedIndyEntry.cpp index eff543a5448..93ba3d6916c 100644 --- a/src/hotspot/share/oops/resolvedIndyEntry.cpp +++ b/src/hotspot/share/oops/resolvedIndyEntry.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,6 +23,7 @@ */ #include "precompiled.hpp" +#include "cds/archiveBuilder.hpp" #include "code/compressedStream.hpp" #include "oops/method.hpp" #include "oops/resolvedIndyEntry.hpp" @@ -37,6 +38,7 @@ bool ResolvedIndyEntry::check_no_old_or_obsolete_entry() { } } +#if INCLUDE_CDS void ResolvedIndyEntry::remove_unshareable_info() { u2 saved_resolved_references_index = _resolved_references_index; u2 saved_cpool_index = _cpool_index; @@ -45,6 +47,12 @@ void ResolvedIndyEntry::remove_unshareable_info() { _cpool_index = saved_cpool_index; } +void ResolvedIndyEntry::mark_and_relocate() { + assert(is_resolved(), "must be"); + ArchiveBuilder::current()->mark_and_relocate_to_buffered_addr(&_method); +} +#endif + void ResolvedIndyEntry::print_on(outputStream* st) const { st->print_cr("Resolved InvokeDynamic Info:"); if (_method != nullptr) { diff --git a/src/hotspot/share/oops/resolvedIndyEntry.hpp b/src/hotspot/share/oops/resolvedIndyEntry.hpp index 25797d338c4..3d7d3893311 100644 --- a/src/hotspot/share/oops/resolvedIndyEntry.hpp +++ b/src/hotspot/share/oops/resolvedIndyEntry.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -129,7 +129,10 @@ class ResolvedIndyEntry { bool check_no_old_or_obsolete_entry(); // CDS +#if INCLUDE_CDS void remove_unshareable_info(); + void mark_and_relocate(); +#endif // Offsets static ByteSize method_offset() { return byte_offset_of(ResolvedIndyEntry, _method); } diff --git a/src/hotspot/share/oops/resolvedMethodEntry.cpp b/src/hotspot/share/oops/resolvedMethodEntry.cpp index 7702dddd9cc..9564dbbcdc4 100644 --- a/src/hotspot/share/oops/resolvedMethodEntry.cpp +++ b/src/hotspot/share/oops/resolvedMethodEntry.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,6 +23,7 @@ */ #include "precompiled.hpp" +#include "cds/archiveBuilder.hpp" #include "oops/method.hpp" #include "oops/resolvedMethodEntry.hpp" @@ -50,10 +51,23 @@ void ResolvedMethodEntry::reset_entry() { } } +#if INCLUDE_CDS void ResolvedMethodEntry::remove_unshareable_info() { reset_entry(); } +void ResolvedMethodEntry::mark_and_relocate(ConstantPool* src_cp) { + if (_method == nullptr) { + assert(bytecode2() == Bytecodes::_invokevirtual, ""); + } else { + ArchiveBuilder::current()->mark_and_relocate_to_buffered_addr(&_method); + } + if (bytecode1() == Bytecodes::_invokeinterface) { + ArchiveBuilder::current()->mark_and_relocate_to_buffered_addr(&_entry_specific._interface_klass); + } +} +#endif + void ResolvedMethodEntry::print_on(outputStream* st) const { st->print_cr("Method Entry:"); diff --git a/src/hotspot/share/oops/resolvedMethodEntry.hpp b/src/hotspot/share/oops/resolvedMethodEntry.hpp index f5f7b8fbab5..e8445223600 100644 --- a/src/hotspot/share/oops/resolvedMethodEntry.hpp +++ b/src/hotspot/share/oops/resolvedMethodEntry.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -224,7 +224,10 @@ class ResolvedMethodEntry { void reset_entry(); // CDS +#if INCLUDE_CDS void remove_unshareable_info(); + void mark_and_relocate(ConstantPool* src_cp); +#endif // Offsets static ByteSize klass_offset() { return byte_offset_of(ResolvedMethodEntry, _entry_specific._interface_klass); } diff --git a/src/hotspot/share/prims/jvm.cpp b/src/hotspot/share/prims/jvm.cpp index 500036febab..9588f32e6b3 100644 --- a/src/hotspot/share/prims/jvm.cpp +++ b/src/hotspot/share/prims/jvm.cpp @@ -3729,7 +3729,7 @@ JVM_ENTRY(void, JVM_LogLambdaFormInvoker(JNIEnv *env, jstring line)) } if (ClassListWriter::is_enabled()) { ClassListWriter w; - w.stream()->print_cr("%s %s", LAMBDA_FORM_TAG, c_line); + w.stream()->print_cr("%s %s", ClassListParser::lambda_form_tag(), c_line); } } #endif // INCLUDE_CDS diff --git a/src/hotspot/share/runtime/java.cpp b/src/hotspot/share/runtime/java.cpp index f4d9152c8a5..d3e76364a03 100644 --- a/src/hotspot/share/runtime/java.cpp +++ b/src/hotspot/share/runtime/java.cpp @@ -24,6 +24,7 @@ #include "precompiled.hpp" #include "cds/cds_globals.hpp" +#include "cds/classListWriter.hpp" #include "cds/dynamicArchive.hpp" #include "classfile/classLoader.hpp" #include "classfile/classLoaderDataGraph.hpp" @@ -433,6 +434,10 @@ void before_exit(JavaThread* thread, bool halt) { } #endif +#if INCLUDE_CDS + ClassListWriter::write_resolved_constants(); +#endif + // Hang forever on exit if we're reporting an error. if (ShowMessageBoxOnError && VMError::is_error_reported()) { os::infinite_sleep(); diff --git a/test/hotspot/jtreg/TEST.groups b/test/hotspot/jtreg/TEST.groups index ecded09f4cc..101cbe76afd 100644 --- a/test/hotspot/jtreg/TEST.groups +++ b/test/hotspot/jtreg/TEST.groups @@ -448,6 +448,7 @@ hotspot_appcds_dynamic = \ -runtime/cds/appcds/lambdaForm/DefaultClassListLFInvokers.java \ -runtime/cds/appcds/methodHandles \ -runtime/cds/appcds/sharedStrings \ + -runtime/cds/appcds/resolvedConstants \ -runtime/cds/appcds/ArchiveRelocationTest.java \ -runtime/cds/appcds/BadBSM.java \ -runtime/cds/appcds/DumpClassList.java \ diff --git a/test/hotspot/jtreg/runtime/cds/appcds/resolvedConstants/ResolvedConstants.java b/test/hotspot/jtreg/runtime/cds/appcds/resolvedConstants/ResolvedConstants.java new file mode 100644 index 00000000000..96744b546a8 --- /dev/null +++ b/test/hotspot/jtreg/runtime/cds/appcds/resolvedConstants/ResolvedConstants.java @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +/* + * @test + * @summary Dump time resolutiom of constant pool entries. + * @requires vm.cds + * @requires vm.compMode != "Xcomp" + * @library /test/lib + * @build ResolvedConstants + * @run driver jdk.test.lib.helpers.ClassFileInstaller -jar app.jar ResolvedConstantsApp ResolvedConstantsFoo ResolvedConstantsBar + * @run driver ResolvedConstants + */ + +import jdk.test.lib.cds.CDSOptions; +import jdk.test.lib.cds.CDSTestUtils; +import jdk.test.lib.helpers.ClassFileInstaller; + +public class ResolvedConstants { + static final String classList = "ResolvedConstants.classlist"; + static final String appJar = ClassFileInstaller.getJarPath("app.jar"); + static final String mainClass = ResolvedConstantsApp.class.getName(); + + public static void main(String[] args) throws Exception { + // dump class list + CDSTestUtils.dumpClassList(classList, "-cp", appJar, mainClass) + .assertNormalExit(output -> { + output.shouldContain("Hello ResolvedConstantsApp"); + }); + + CDSOptions opts = (new CDSOptions()) + .addPrefix("-XX:ExtraSharedClassListFile=" + classList, + "-cp", appJar, + "-Xlog:cds+resolve=trace"); + CDSTestUtils.createArchiveAndCheck(opts) + // Always resolve reference when a class references itself + .shouldMatch("cds,resolve.*archived klass.* ResolvedConstantsApp app => ResolvedConstantsApp app") + + // Always resolve reference when a class references a super class + .shouldMatch("cds,resolve.*archived klass.* ResolvedConstantsApp app => java/lang/Object boot") + .shouldMatch("cds,resolve.*archived klass.* ResolvedConstantsBar app => ResolvedConstantsFoo app") + + // Always resolve reference when a class references a super interface + .shouldMatch("cds,resolve.*archived klass.* ResolvedConstantsApp app => java/lang/Runnable boot") + + // java/lang/System is in the root loader but ResolvedConstantsApp is loaded by the app loader. + // Even though System is in the vmClasses list, when ResolvedConstantsApp looks up + // "java/lang/System" in its ConstantPool, the app loader may not have resolved the System + // class yet (i.e., there's no initiaited class entry for System in the app loader's dictionary) + .shouldMatch("cds,resolve.*reverted klass.* ResolvedConstantsApp .*java/lang/System") + + // Always resolve references to fields in the current class or super class(es) + .shouldMatch("cds,resolve.*archived field.* ResolvedConstantsBar => ResolvedConstantsBar.b:I") + .shouldMatch("cds,resolve.*archived field.* ResolvedConstantsBar => ResolvedConstantsBar.a:I") + .shouldMatch("cds,resolve.*archived field.* ResolvedConstantsBar => ResolvedConstantsFoo.a:I") + + // Do not resolve field references to child classes + .shouldMatch("cds,resolve.*archived field.* ResolvedConstantsFoo => ResolvedConstantsFoo.a:I") + .shouldMatch("cds,resolve.*reverted field.* ResolvedConstantsFoo ResolvedConstantsBar.a:I") + .shouldMatch("cds,resolve.*reverted field.* ResolvedConstantsFoo ResolvedConstantsBar.b:I") + + + // Do not resolve field references to unrelated classes + .shouldMatch("cds,resolve.*reverted field.* ResolvedConstantsApp ResolvedConstantsBar.a:I") + .shouldMatch("cds,resolve.*reverted field.* ResolvedConstantsApp ResolvedConstantsBar.b:I") + + ; + } +} + +class ResolvedConstantsApp implements Runnable { + public static void main(String args[]) { + System.out.println("Hello ResolvedConstantsApp"); + Object a = new ResolvedConstantsApp(); + ((Runnable)a).run(); + + ResolvedConstantsFoo foo = new ResolvedConstantsFoo(); + ResolvedConstantsBar bar = new ResolvedConstantsBar(); + bar.a ++; + bar.b ++; + bar.doit(); + } + public void run() {} +} + +class ResolvedConstantsFoo { + int a = 1; + void doit() { + } + + void doBar(ResolvedConstantsBar bar) { + bar.a ++; + bar.b ++; + } +} + +class ResolvedConstantsBar extends ResolvedConstantsFoo { + int b = 2; + void doit() { + System.out.println("Hello ResolvedConstantsBar and " + ResolvedConstantsFoo.class.getName()); + System.out.println("a = " + a); + System.out.println("a = " + ((ResolvedConstantsFoo)this).a); + System.out.println("b = " + b); + + doBar(this); + } +} diff --git a/test/hotspot/jtreg/runtime/cds/appcds/resolvedConstants/ResolvedPutField.java b/test/hotspot/jtreg/runtime/cds/appcds/resolvedConstants/ResolvedPutField.java new file mode 100644 index 00000000000..250ff7d7d6f --- /dev/null +++ b/test/hotspot/jtreg/runtime/cds/appcds/resolvedConstants/ResolvedPutField.java @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +/* + * @test + * @summary Fieldref entry for putfield bytecodes for a final field cannot be preresolved if it's used by a + * method outside of + * @requires vm.cds + * @requires vm.compMode != "Xcomp" + * @library /test/lib + * @build ResolvedPutFieldHelper + * @build ResolvedPutField + * @run driver jdk.test.lib.helpers.ClassFileInstaller -jar app.jar ResolvedPutFieldApp ResolvedPutFieldHelper + * @run driver ResolvedPutField + */ + +import jdk.test.lib.cds.CDSOptions; +import jdk.test.lib.cds.CDSTestUtils; +import jdk.test.lib.helpers.ClassFileInstaller; + +public class ResolvedPutField { + static final String classList = "ResolvedPutField.classlist"; + static final String appJar = ClassFileInstaller.getJarPath("app.jar"); + static final String mainClass = ResolvedPutFieldApp.class.getName(); + static final String error = "Update to non-static final field ResolvedPutFieldHelper.x attempted from a different method (set_x) than the initializer method "; + public static void main(String[] args) throws Exception { + // dump class list + CDSTestUtils.dumpClassList(classList, "-cp", appJar, mainClass) + .assertNormalExit(error); + + CDSOptions opts = (new CDSOptions()) + .addPrefix("-XX:ExtraSharedClassListFile=" + classList, + "-cp", appJar, + "-Xlog:cds+resolve=trace"); + CDSTestUtils.createArchiveAndCheck(opts) + .shouldMatch("cds,resolve.*Failed to resolve putfield .*ResolvedPutFieldHelper -> ResolvedPutFieldHelper.x:I"); + } +} + +class ResolvedPutFieldApp { + public static void main(String args[]) { + try { + ResolvedPutFieldHelper.main(args); + } catch (IllegalAccessError e) { + System.out.println("IllegalAccessError expected:"); + System.out.println(e); + System.exit(0); + } + throw new RuntimeException("IllegalAccessError expected!"); + } +} diff --git a/test/hotspot/jtreg/runtime/cds/appcds/resolvedConstants/ResolvedPutFieldHelper.jasm b/test/hotspot/jtreg/runtime/cds/appcds/resolvedConstants/ResolvedPutFieldHelper.jasm new file mode 100644 index 00000000000..dc7bcfff050 --- /dev/null +++ b/test/hotspot/jtreg/runtime/cds/appcds/resolvedConstants/ResolvedPutFieldHelper.jasm @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + + +/* + +class ResolvedPutFieldHelper { + int x; // change it to 'final' + ResolvedPutFieldHelper() { x = 1; } + void set_x() { x = 2; } + + public static void main(String args[]) { + ResolvedPutFieldHelper s = new ResolvedPutFieldHelper(); + s.set_x(); + System.out.println(s.x); + } +} + +*/ + + + +super class ResolvedPutFieldHelper + version 66:0 +{ + //WAS Field x:I; + final Field x:I; + + Method "":"()V" + stack 2 locals 1 + { + aload_0; + invokespecial Method java/lang/Object."":"()V"; + aload_0; + iconst_1; + putfield Field x:"I"; + return; + } + + // set_x is not allowed to write to the final "x" field. If CDS pre-resolves its + // ResolvedFieldEntry for the putfield bytecode, then we cannot get + // the IllegalAccessError at runtime. See JDK-8157181 for the code that + // throws the IllegalAccessError. + + Method set_x:"()V" + stack 2 locals 1 + { + aload_0; + iconst_2; + putfield Field x:"I"; + return; + } + public static Method main:"([Ljava/lang/String;)V" + stack 2 locals 2 + { + new class ResolvedPutFieldHelper; + dup; + invokespecial Method "":"()V"; + astore_1; + aload_1; + invokevirtual Method set_x:"()V"; + getstatic Field java/lang/System.out:"Ljava/io/PrintStream;"; + aload_1; + getfield Field x:"I"; + invokevirtual Method java/io/PrintStream.println:"(I)V"; + return; + } +} From 6861766b638c5135ba40f261d78d9731954ce5ab Mon Sep 17 00:00:00 2001 From: Matthias Baesken Date: Fri, 14 Jun 2024 07:13:22 +0000 Subject: [PATCH 18/70] 8332818: ubsan: archiveHeapLoader.cpp:70:27: runtime error: applying non-zero offset 18446744073707454464 to null pointer Reviewed-by: stuefe, lucy --- src/hotspot/share/cds/archiveHeapLoader.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/hotspot/share/cds/archiveHeapLoader.cpp b/src/hotspot/share/cds/archiveHeapLoader.cpp index 2ef502a3643..57a96a8c4e0 100644 --- a/src/hotspot/share/cds/archiveHeapLoader.cpp +++ b/src/hotspot/share/cds/archiveHeapLoader.cpp @@ -61,6 +61,9 @@ ptrdiff_t ArchiveHeapLoader::_mapped_heap_delta = 0; // Every mapped region is offset by _mapped_heap_delta from its requested address. // See FileMapInfo::heap_region_requested_address(). +#if defined(__clang__) || defined(__GNUC__) +__attribute__((no_sanitize("undefined"))) +#endif void ArchiveHeapLoader::init_mapped_heap_info(address mapped_heap_bottom, ptrdiff_t delta, int dumptime_oop_shift) { assert(!_mapped_heap_relocation_initialized, "only once"); if (!UseCompressedOops) { From 9b0a5c5cd056262fab99525e9260762b617152a3 Mon Sep 17 00:00:00 2001 From: Gui Cao Date: Fri, 14 Jun 2024 09:19:04 +0000 Subject: [PATCH 19/70] 8333248: VectorGatherMaskFoldingTest.java failed when maximum vector bits is 64 Reviewed-by: dfenacci, fyang --- .../VectorGatherMaskFoldingTest.java | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/test/hotspot/jtreg/compiler/vectorapi/VectorGatherMaskFoldingTest.java b/test/hotspot/jtreg/compiler/vectorapi/VectorGatherMaskFoldingTest.java index 88d1bbde1d4..88175baf8e4 100644 --- a/test/hotspot/jtreg/compiler/vectorapi/VectorGatherMaskFoldingTest.java +++ b/test/hotspot/jtreg/compiler/vectorapi/VectorGatherMaskFoldingTest.java @@ -100,7 +100,7 @@ public class VectorGatherMaskFoldingTest { for (int i = 0; i < L_SPECIES.length(); i++) { longArray[i] = i + 1; longArray2[i] = L_SPECIES.length() - i + 1; - longMask[i] = i % 2 == 0; + longMask[i] = L_SPECIES.length() > 1 && i % 2 == 0; longMask2[i] = i >= L_SPECIES.length() / 2; longIndices[i] = (i + L_SPECIES.length() / 2) % L_SPECIES.length(); longIndices2[i] = (L_SPECIES.length() - i) % L_SPECIES.length(); @@ -126,7 +126,7 @@ public class VectorGatherMaskFoldingTest { for (int i = 0; i < D_SPECIES.length(); i++) { doubleArray[i] = (double) i + 1.0; doubleArray2[i] = (double) (D_SPECIES.length() - i) + 1.0; - doubleMask[i] = i % 2 == 0; + doubleMask[i] = D_SPECIES.length() > 1 && i % 2 == 0; doubleMask2[i] = i >= D_SPECIES.length() / 2; doubleIndices[i] = (i + D_SPECIES.length() / 2) % D_SPECIES.length(); doubleIndices2[i] = (D_SPECIES.length() - i) % D_SPECIES.length(); @@ -168,7 +168,7 @@ public static void testTwoLongVectorLoadGatherNotEqualArray() { public static void testTwoLongVectorLoadGatherNotEqualIndices() { LongVector res = LongVector.fromArray(L_SPECIES, longArray, 0, longIndices, 0); LongVector res2 = LongVector.fromArray(L_SPECIES, longArray, 0, longIndices2, 0); - Asserts.assertNotEquals(res, res2); + Asserts.assertFalse(L_SPECIES.length() != 1 && res.equals(res2)); } @Test @@ -176,7 +176,7 @@ public static void testTwoLongVectorLoadGatherNotEqualIndices() { public static void testOneLongVectorLoadGather() { LongVector res = LongVector.fromArray(L_SPECIES, longArray, 0); LongVector res2 = LongVector.fromArray(L_SPECIES, longArray, 0, longIndices, 0); - Asserts.assertNotEquals(res, res2); + Asserts.assertFalse(L_SPECIES.length() != 1 && res.equals(res2)); } @Test @@ -232,7 +232,7 @@ public static void testTwoLongVectorLoadGatherMaskedNotEqualMask() { public static void testTwoLongVectorLoadGatherMaskedNotEqualIndices() { LongVector res = LongVector.fromArray(L_SPECIES, longArray, 0, longIndices, 0, longVectorMask); LongVector res2 = LongVector.fromArray(L_SPECIES, longArray, 0, longIndices2, 0, longVectorMask); - Asserts.assertNotEquals(res, res2); + Asserts.assertFalse(L_SPECIES.length() != 1 && res.equals(res2)); } @@ -334,7 +334,7 @@ public static void testTwoDoubleVectorLoadGatherNotEqualArray() { public static void testTwoDoubleVectorLoadGatherNotEqualIndices() { DoubleVector res = DoubleVector.fromArray(D_SPECIES, doubleArray, 0, doubleIndices, 0); DoubleVector res2 = DoubleVector.fromArray(D_SPECIES, doubleArray, 0, doubleIndices2, 0); - Asserts.assertNotEquals(res, res2); + Asserts.assertFalse(D_SPECIES.length() != 1 && res.equals(res2)); } @Test @@ -342,7 +342,7 @@ public static void testTwoDoubleVectorLoadGatherNotEqualIndices() { public static void testOneDoubleVectorLoadGather() { DoubleVector res = DoubleVector.fromArray(D_SPECIES, doubleArray, 0); DoubleVector res2 = DoubleVector.fromArray(D_SPECIES, doubleArray, 0, doubleIndices, 0); - Asserts.assertNotEquals(res, res2); + Asserts.assertFalse(D_SPECIES.length() != 1 && res.equals(res2)); } @Test @@ -398,7 +398,7 @@ public static void testTwoDoubleVectorLoadGatherMaskedNotEqualMask() { public static void testTwoDoubleVectorLoadGatherMaskedNotEqualIndices() { DoubleVector res = DoubleVector.fromArray(D_SPECIES, doubleArray, 0, doubleIndices, 0, doubleVectorMask); DoubleVector res2 = DoubleVector.fromArray(D_SPECIES, doubleArray, 0, doubleIndices2, 0, doubleVectorMask); - Asserts.assertNotEquals(res, res2); + Asserts.assertFalse(D_SPECIES.length() != 1 && res.equals(res2)); } @@ -506,7 +506,7 @@ public static void testTwoLongVectorStoreScatterNotEqualIndices() { long[] res2 = new long[L_SPECIES.length()]; longVector.intoArray(res, 0, longIndices, 0); longVector.intoArray(res2, 0, longIndices2, 0); - Asserts.assertFalse(Arrays.equals(res, res2)); + Asserts.assertFalse(L_SPECIES.length() != 1 && Arrays.equals(res, res2)); } @Test @@ -516,7 +516,7 @@ public static void testOneLongVectorStoreScatter() { long[] res2 = new long[L_SPECIES.length()]; longVector.intoArray(res, 0); longVector.intoArray(res2, 0, longIndices, 0); - Asserts.assertFalse(Arrays.equals(res, res2)); + Asserts.assertFalse(L_SPECIES.length() != 1 && Arrays.equals(res, res2)); } @Test @@ -586,7 +586,7 @@ public static void testTwoLongVectorStoreScatterMaskedNotEqualIndices() { long[] res2 = new long[L_SPECIES.length()]; longVector.intoArray(res, 0, longIndices, 0, longVectorMask); longVector.intoArray(res2, 0, longIndices2, 0, longVectorMask); - Asserts.assertFalse(Arrays.equals(res, res2)); + Asserts.assertFalse(L_SPECIES.length() != 1 && Arrays.equals(res, res2)); } @@ -712,7 +712,7 @@ public static void testTwoDoubleVectorStoreScatterNotEqualIndices() { double[] res2 = new double[D_SPECIES.length()]; doubleVector.intoArray(res, 0, doubleIndices, 0); doubleVector.intoArray(res2, 0, doubleIndices2, 0); - Asserts.assertFalse(Arrays.equals(res, res2)); + Asserts.assertFalse(D_SPECIES.length() != 1 && Arrays.equals(res, res2)); } @Test @@ -722,7 +722,7 @@ public static void testOneDoubleVectorStoreScatter() { double[] res2 = new double[D_SPECIES.length()]; doubleVector.intoArray(res, 0); doubleVector.intoArray(res2, 0, doubleIndices, 0); - Asserts.assertFalse(Arrays.equals(res, res2)); + Asserts.assertFalse(D_SPECIES.length() != 1 && Arrays.equals(res, res2)); } @Test @@ -792,7 +792,7 @@ public static void testTwoDoubleVectorStoreScatterMaskedNotEqualIndices() { double[] res2 = new double[D_SPECIES.length()]; doubleVector.intoArray(res, 0, doubleIndices, 0, doubleVectorMask); doubleVector.intoArray(res2, 0, doubleIndices2, 0, doubleVectorMask); - Asserts.assertFalse(Arrays.equals(res, res2)); + Asserts.assertFalse(D_SPECIES.length() != 1 && Arrays.equals(res, res2)); } @@ -909,7 +909,7 @@ public static void testOneLongVectorStoreLoadGather() { long[] array = new long[L_SPECIES.length()]; longVector.intoArray(array, 0); LongVector res = LongVector.fromArray(L_SPECIES, array, 0, longIndices, 0); - Asserts.assertNotEquals(res, longVector); + Asserts.assertFalse(L_SPECIES.length() != 1 && res.equals(longVector)); } @Test @@ -918,7 +918,7 @@ public static void testOneLongVectorStoreScatterLoad() { long[] array = new long[L_SPECIES.length()]; longVector.intoArray(array, 0, longIndices, 0); LongVector res = LongVector.fromArray(L_SPECIES, array, 0); - Asserts.assertNotEquals(res, longVector); + Asserts.assertFalse(L_SPECIES.length() != 1 && res.equals(longVector)); } @Test @@ -945,7 +945,7 @@ public static void testLongVectorLoadGatherStoreScatterDuplicateIndicesVector() long[] res = new long[L_SPECIES.length()]; longVector.intoArray(res, 0, duplicateLongIndices, 0); LongVector res2 = LongVector.fromArray(L_SPECIES, res, 0, duplicateLongIndices, 0); - Asserts.assertNotEquals(res2, longVector); + Asserts.assertFalse(L_SPECIES.length() != 1 && res2.equals(longVector)); } @Test @@ -963,7 +963,7 @@ public static void testStoreLoadLongVectorDifferentSpeciesVector() { long[] res = new long[L_SPECIES.length()]; longVector.intoArray(res, 0); LongVector res2 = LongVector.fromArray(LongVector.SPECIES_64, res, 0); - Asserts.assertNotEquals(res2, longVector); + Asserts.assertFalse(L_SPECIES.length() != 1 && res2.equals(longVector)); } @@ -1041,7 +1041,7 @@ public static void testOneDoubleVectorStoreLoadGather() { double[] array = new double[D_SPECIES.length()]; doubleVector.intoArray(array, 0); DoubleVector res = DoubleVector.fromArray(D_SPECIES, array, 0, doubleIndices, 0); - Asserts.assertNotEquals(res, doubleVector); + Asserts.assertFalse(D_SPECIES.length() != 1 && res.equals(doubleVector)); } @Test @@ -1050,7 +1050,7 @@ public static void testOneDoubleVectorStoreScatterLoad() { double[] array = new double[D_SPECIES.length()]; doubleVector.intoArray(array, 0, doubleIndices, 0); DoubleVector res = DoubleVector.fromArray(D_SPECIES, array, 0); - Asserts.assertNotEquals(res, doubleVector); + Asserts.assertFalse(D_SPECIES.length() != 1 && res.equals(doubleVector)); } @Test @@ -1077,7 +1077,7 @@ public static void testDoubleVectorLoadGatherStoreScatterDuplicateIndicesVector( double[] res = new double[D_SPECIES.length()]; doubleVector.intoArray(res, 0, duplicateDoubleIndices, 0); DoubleVector res2 = DoubleVector.fromArray(D_SPECIES, res, 0, duplicateDoubleIndices, 0); - Asserts.assertNotEquals(res2, doubleVector); + Asserts.assertFalse(D_SPECIES.length() != 1 && res2.equals(doubleVector)); } @Test @@ -1095,7 +1095,7 @@ public static void testStoreLoadDoubleVectorDifferentSpeciesVector() { double[] res = new double[D_SPECIES.length()]; doubleVector.intoArray(res, 0); DoubleVector res2 = DoubleVector.fromArray(DoubleVector.SPECIES_64, res, 0); - Asserts.assertNotEquals(res2, doubleVector); + Asserts.assertFalse(D_SPECIES.length() != 1 && res2.equals(doubleVector)); } @@ -1175,7 +1175,7 @@ public static void testOneLongVectorLoadGatherStore() { long[] res = new long[L_SPECIES.length()]; LongVector vector = LongVector.fromArray(L_SPECIES, longArray, 0, longIndices, 0); vector.intoArray(res, 0); - Asserts.assertFalse(Arrays.equals(res, longArray)); + Asserts.assertFalse(L_SPECIES.length() != 1 && Arrays.equals(res, longArray)); } @Test @@ -1184,7 +1184,7 @@ public static void testOneLongVectorLoadStoreScatter() { long[] res = new long[L_SPECIES.length()]; LongVector vector = LongVector.fromArray(L_SPECIES, longArray, 0); vector.intoArray(res, 0, longIndices, 0); - Asserts.assertFalse(Arrays.equals(res, longArray)); + Asserts.assertFalse(L_SPECIES.length() != 1 && Arrays.equals(res, longArray)); } @Test @@ -1211,7 +1211,7 @@ public static void testLongVectorStoreScatterLoadGatherDuplicateIndicesVector() long[] res = new long[L_SPECIES.length()]; LongVector vector = LongVector.fromArray(L_SPECIES, longArray, 0, duplicateLongIndices, 0); vector.intoArray(res, 0, duplicateLongIndices, 0); - Asserts.assertFalse(Arrays.equals(res, longArray)); + Asserts.assertFalse(L_SPECIES.length() != 1 && Arrays.equals(res, longArray)); } @Test @@ -1289,7 +1289,7 @@ public static void testOneDoubleVectorLoadGatherStore() { double[] res = new double[D_SPECIES.length()]; DoubleVector vector = DoubleVector.fromArray(D_SPECIES, doubleArray, 0, doubleIndices, 0); vector.intoArray(res, 0); - Asserts.assertFalse(Arrays.equals(res, doubleArray)); + Asserts.assertFalse(D_SPECIES.length() != 1 && Arrays.equals(res, doubleArray)); } @Test @@ -1298,7 +1298,7 @@ public static void testOneDoubleVectorLoadStoreScatter() { double[] res = new double[D_SPECIES.length()]; DoubleVector vector = DoubleVector.fromArray(D_SPECIES, doubleArray, 0); vector.intoArray(res, 0, doubleIndices, 0); - Asserts.assertFalse(Arrays.equals(res, doubleArray)); + Asserts.assertFalse(D_SPECIES.length() != 1 && Arrays.equals(res, doubleArray)); } @Test @@ -1325,7 +1325,7 @@ public static void testDoubleVectorStoreScatterLoadGatherDuplicateIndicesVector( double[] res = new double[D_SPECIES.length()]; DoubleVector vector = DoubleVector.fromArray(D_SPECIES, doubleArray, 0, duplicateDoubleIndices, 0); vector.intoArray(res, 0, duplicateDoubleIndices, 0); - Asserts.assertFalse(Arrays.equals(res, doubleArray)); + Asserts.assertFalse(D_SPECIES.length() != 1 && Arrays.equals(res, doubleArray)); } @Test @@ -1398,7 +1398,7 @@ public static void testFloatVectorLoadMaskedStoreVector() { public static void main(String[] args) { TestFramework testFramework = new TestFramework(); testFramework.setDefaultWarmup(10000) - .addFlags("--add-modules=jdk.incubator.vector", "-XX:+IncrementalInlineForceCleanup") + .addFlags("--add-modules=jdk.incubator.vector", "-XX:+IgnoreUnrecognizedVMOptions", "-XX:+IncrementalInlineForceCleanup") .start(); } } From cc64aeac47917f20a6d70e9796f0de9aa165ce62 Mon Sep 17 00:00:00 2001 From: Robert Toyonaga Date: Fri, 14 Jun 2024 09:32:52 +0000 Subject: [PATCH 20/70] 8332400: isspace argument should be a valid unsigned char Reviewed-by: dholmes, amitkumar, stuefe, jwaters --- src/hotspot/os/linux/cgroupSubsystem_linux.cpp | 2 +- src/hotspot/os/linux/os_linux.cpp | 4 ++-- src/hotspot/share/runtime/arguments.cpp | 10 +++++----- src/hotspot/share/services/diagnosticFramework.cpp | 4 ++-- src/java.base/share/native/libjli/args.c | 6 +++--- src/jdk.hotspot.agent/linux/native/libsaproc/ps_proc.c | 2 +- src/jdk.jdwp.agent/unix/native/libjdwp/exec_md.c | 4 ++-- src/jdk.jpackage/share/native/common/ErrorHandling.cpp | 2 +- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/hotspot/os/linux/cgroupSubsystem_linux.cpp b/src/hotspot/os/linux/cgroupSubsystem_linux.cpp index be9ff1440c0..560589c3602 100644 --- a/src/hotspot/os/linux/cgroupSubsystem_linux.cpp +++ b/src/hotspot/os/linux/cgroupSubsystem_linux.cpp @@ -661,7 +661,7 @@ bool CgroupController::read_numerical_key_value(const char* filename, const char for (; line != nullptr; line = fgets(buf, buf_len, fp)) { char after_key = line[key_len]; if (strncmp(line, key, key_len) == 0 - && isspace(after_key) != 0 + && isspace((unsigned char) after_key) != 0 && after_key != '\n') { // Skip key, skip space const char* value_substr = line + key_len + 1; diff --git a/src/hotspot/os/linux/os_linux.cpp b/src/hotspot/os/linux/os_linux.cpp index 00ee3519301..b56d4082354 100644 --- a/src/hotspot/os/linux/os_linux.cpp +++ b/src/hotspot/os/linux/os_linux.cpp @@ -1356,7 +1356,7 @@ void os::Linux::capture_initial_stack(size_t max_size) { i = 0; if (s) { // Skip blank chars - do { s++; } while (s && isspace(*s)); + do { s++; } while (s && isspace((unsigned char) *s)); #define _UFM UINTX_FORMAT #define _DFM INTX_FORMAT @@ -5222,7 +5222,7 @@ static jlong slow_thread_cpu_time(Thread *thread, bool user_sys_cpu_time) { if (s == nullptr) return -1; // Skip blank chars - do { s++; } while (s && isspace(*s)); + do { s++; } while (s && isspace((unsigned char) *s)); count = sscanf(s,"%c %d %d %d %d %d %lu %lu %lu %lu %lu %lu %lu", &cdummy, &idummy, &idummy, &idummy, &idummy, &idummy, diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp index 10a4c06d53c..5f89384ba66 100644 --- a/src/hotspot/share/runtime/arguments.cpp +++ b/src/hotspot/share/runtime/arguments.cpp @@ -748,7 +748,7 @@ static bool set_bool_flag(JVMFlag* flag, bool value, JVMFlagOrigin origin) { static bool set_fp_numeric_flag(JVMFlag* flag, const char* value, JVMFlagOrigin origin) { // strtod allows leading whitespace, but our flag format does not. - if (*value == '\0' || isspace(*value)) { + if (*value == '\0' || isspace((unsigned char) *value)) { return false; } char* end; @@ -1178,13 +1178,13 @@ bool Arguments::process_settings_file(const char* file_name, bool should_exist, if (c == '\n') in_comment = false; } else { if (c == '#') in_comment = true; - else if (!isspace(c)) { + else if (!isspace((unsigned char) c)) { in_white_space = false; token[pos++] = checked_cast(c); } } } else { - if (c == '\n' || (!in_quote && isspace(c))) { + if (c == '\n' || (!in_quote && isspace((unsigned char) c))) { // token ends at newline, or at unquoted whitespace // this allows a way to include spaces in string-valued options token[pos] = '\0'; @@ -3141,7 +3141,7 @@ jint Arguments::parse_options_buffer(const char* name, char* buffer, const size_ // parse all options while (rd < buffer_end) { // skip leading white space from the input string - while (rd < buffer_end && isspace(*rd)) { + while (rd < buffer_end && isspace((unsigned char) *rd)) { rd++; } @@ -3154,7 +3154,7 @@ jint Arguments::parse_options_buffer(const char* name, char* buffer, const size_ // Tokens are strings of non white space characters separated // by one or more white spaces. - while (rd < buffer_end && !isspace(*rd)) { + while (rd < buffer_end && !isspace((unsigned char) *rd)) { if (*rd == '\'' || *rd == '"') { // handle a quoted string int quote = *rd; // matching quote to look for rd++; // don't copy open quote diff --git a/src/hotspot/share/services/diagnosticFramework.cpp b/src/hotspot/share/services/diagnosticFramework.cpp index 006c08cb63f..984122f2777 100644 --- a/src/hotspot/share/services/diagnosticFramework.cpp +++ b/src/hotspot/share/services/diagnosticFramework.cpp @@ -45,7 +45,7 @@ CmdLine::CmdLine(const char* line, size_t len, bool no_command_name) line_end = &line[len]; // Skip whitespace in the beginning of the line. - while (_cmd < line_end && isspace((int) _cmd[0])) { + while (_cmd < line_end && isspace((unsigned char) _cmd[0])) { _cmd++; } cmd_end = _cmd; @@ -55,7 +55,7 @@ CmdLine::CmdLine(const char* line, size_t len, bool no_command_name) _cmd_len = 0; } else { // Look for end of the command name - while (cmd_end < line_end && !isspace((int) cmd_end[0])) { + while (cmd_end < line_end && !isspace((unsigned char) cmd_end[0])) { cmd_end++; } _cmd_len = cmd_end - _cmd; diff --git a/src/java.base/share/native/libjli/args.c b/src/java.base/share/native/libjli/args.c index 379291fe8ec..1e9b48730a9 100644 --- a/src/java.base/share/native/libjli/args.c +++ b/src/java.base/share/native/libjli/args.c @@ -501,7 +501,7 @@ static jboolean expand(JLI_List args, const char *str, const char *var_name) { // This is retained until the process terminates as it is saved as the args p = JLI_MemAlloc(JLI_StrLen(str) + 1); while (*str != '\0') { - while (*str != '\0' && isspace(*str)) { + while (*str != '\0' && isspace((unsigned char) *str)) { str++; } @@ -511,7 +511,7 @@ static jboolean expand(JLI_List args, const char *str, const char *var_name) { } arg = p; - while (*str != '\0' && !isspace(*str)) { + while (*str != '\0' && !isspace((unsigned char) *str)) { if (inEnvVar && (*str == '"' || *str == '\'')) { quote = *str++; while (*str != quote && *str != '\0') { @@ -577,7 +577,7 @@ static jboolean expand(JLI_List args, const char *str, const char *var_name) { exit(1); } - assert (*str == '\0' || isspace(*str)); + assert (*str == '\0' || isspace((unsigned char) *str)); } return JNI_TRUE; diff --git a/src/jdk.hotspot.agent/linux/native/libsaproc/ps_proc.c b/src/jdk.hotspot.agent/linux/native/libsaproc/ps_proc.c index 3068f475626..41207b5a9df 100644 --- a/src/jdk.hotspot.agent/linux/native/libsaproc/ps_proc.c +++ b/src/jdk.hotspot.agent/linux/native/libsaproc/ps_proc.c @@ -242,7 +242,7 @@ static bool process_doesnt_exist(pid_t pid) { found_state = true; state = buf + state_len; // Skip the spaces - while (isspace(*state)) { + while (isspace((unsigned char) *state)) { state++; } // A state value of 'X' indicates that the thread is dead. 'Z' diff --git a/src/jdk.jdwp.agent/unix/native/libjdwp/exec_md.c b/src/jdk.jdwp.agent/unix/native/libjdwp/exec_md.c index a694bba93c4..a0f2687a88c 100644 --- a/src/jdk.jdwp.agent/unix/native/libjdwp/exec_md.c +++ b/src/jdk.jdwp.agent/unix/native/libjdwp/exec_md.c @@ -35,14 +35,14 @@ #include "error_messages.h" static char *skipWhitespace(char *p) { - while ((*p != '\0') && isspace(*p)) { + while ((*p != '\0') && isspace((unsigned char) *p)) { p++; } return p; } static char *skipNonWhitespace(char *p) { - while ((*p != '\0') && !isspace(*p)) { + while ((*p != '\0') && !isspace((unsigned char) *p)) { p++; } return p; diff --git a/src/jdk.jpackage/share/native/common/ErrorHandling.cpp b/src/jdk.jpackage/share/native/common/ErrorHandling.cpp index b3f7206bfc1..a3a4c2a9dfe 100644 --- a/src/jdk.jpackage/share/native/common/ErrorHandling.cpp +++ b/src/jdk.jpackage/share/native/common/ErrorHandling.cpp @@ -72,7 +72,7 @@ std::string makeMessage(const std::runtime_error& e, const SourceCodePos& pos) { namespace { bool isNotSpace(int chr) { - return isspace(chr) == 0; + return isspace((unsigned char) chr) == 0; } From efab48c06554476eae7a7bd946dee033d16a9c38 Mon Sep 17 00:00:00 2001 From: Jaikiran Pai Date: Fri, 14 Jun 2024 12:48:43 +0000 Subject: [PATCH 21/70] 8333714: Cleanup the usages of CHECK_EXCEPTION_NULL_FAIL macro in java launcher Reviewed-by: alanb --- src/java.base/share/native/libjli/java.c | 90 ++++++++++++++++-------- 1 file changed, 59 insertions(+), 31 deletions(-) diff --git a/src/java.base/share/native/libjli/java.c b/src/java.base/share/native/libjli/java.c index 1d506c3a6df..1b4ece834d6 100644 --- a/src/java.base/share/native/libjli/java.c +++ b/src/java.base/share/native/libjli/java.c @@ -387,73 +387,92 @@ JLI_Launch(int argc, char ** argv, /* main argc, argv */ } \ } while (JNI_FALSE) -#define CHECK_EXCEPTION_NULL_FAIL(obj) \ - do { \ - if ((*env)->ExceptionOccurred(env)) { \ - return 0; \ - } else if (obj == NULL) { \ - return 0; \ - } \ - } while (JNI_FALSE) - /* - * Invoke a static main with arguments. Returns 1 (true) if successful otherwise - * processes the pending exception from GetStaticMethodID and returns 0 (false). + * Invokes static main(String[]) method if found. + * Returns 0 with a pending exception if not found. Returns 1 if invoked, maybe + * a pending exception if the method threw. */ int invokeStaticMainWithArgs(JNIEnv *env, jclass mainClass, jobjectArray mainArgs) { jmethodID mainID = (*env)->GetStaticMethodID(env, mainClass, "main", "([Ljava/lang/String;)V"); - CHECK_EXCEPTION_NULL_FAIL(mainID); + if (mainID == NULL) { + // static main(String[]) not found + return 0; + } (*env)->CallStaticVoidMethod(env, mainClass, mainID, mainArgs); - return 1; + return 1; // method was invoked } /* - * Invoke an instance main with arguments. Returns 1 (true) if successful otherwise - * processes the pending exception from GetMethodID and returns 0 (false). + * Invokes instance main(String[]) method if found. + * Returns 0 with a pending exception if not found. Returns 1 if invoked, maybe + * a pending exception if the method threw. */ int invokeInstanceMainWithArgs(JNIEnv *env, jclass mainClass, jobjectArray mainArgs) { jmethodID constructor = (*env)->GetMethodID(env, mainClass, "", "()V"); - CHECK_EXCEPTION_NULL_FAIL(constructor); + if (constructor == NULL) { + // main class' no-arg constructor not found + return 0; + } jobject mainObject = (*env)->NewObject(env, mainClass, constructor); - CHECK_EXCEPTION_NULL_FAIL(mainObject); + if (mainObject == NULL) { + // main class instance couldn't be constructed + return 0; + } jmethodID mainID = (*env)->GetMethodID(env, mainClass, "main", "([Ljava/lang/String;)V"); - CHECK_EXCEPTION_NULL_FAIL(mainID); + if (mainID == NULL) { + // instance method main(String[]) method not found + return 0; + } (*env)->CallVoidMethod(env, mainObject, mainID, mainArgs); - return 1; + return 1; // method was invoked } /* - * Invoke a static main without arguments. Returns 1 (true) if successful otherwise - * processes the pending exception from GetStaticMethodID and returns 0 (false). + * Invokes no-arg static main() method if found. + * Returns 0 with a pending exception if not found. Returns 1 if invoked, maybe + * a pending exception if the method threw. */ int invokeStaticMainWithoutArgs(JNIEnv *env, jclass mainClass) { jmethodID mainID = (*env)->GetStaticMethodID(env, mainClass, "main", "()V"); - CHECK_EXCEPTION_NULL_FAIL(mainID); + if (mainID == NULL) { + // static main() method couldn't be located + return 0; + } (*env)->CallStaticVoidMethod(env, mainClass, mainID); - return 1; + return 1; // method was invoked } /* - * Invoke an instance main without arguments. Returns 1 (true) if successful otherwise - * processes the pending exception from GetMethodID and returns 0 (false). + * Invokes no-arg instance main() method if found. + * Returns 0 with a pending exception if not found. Returns 1 if invoked, maybe + * a pending exception if the method threw. */ int invokeInstanceMainWithoutArgs(JNIEnv *env, jclass mainClass) { jmethodID constructor = (*env)->GetMethodID(env, mainClass, "", "()V"); - CHECK_EXCEPTION_NULL_FAIL(constructor); + if (constructor == NULL) { + // main class' no-arg constructor not found + return 0; + } jobject mainObject = (*env)->NewObject(env, mainClass, constructor); - CHECK_EXCEPTION_NULL_FAIL(mainObject); + if (mainObject == NULL) { + // couldn't create instance of main class + return 0; + } jmethodID mainID = (*env)->GetMethodID(env, mainClass, "main", "()V"); - CHECK_EXCEPTION_NULL_FAIL(mainID); + if (mainID == NULL) { + // instance method main() not found + return 0; + } (*env)->CallVoidMethod(env, mainObject, mainID); - return 1; + return 1; // method was invoked } int @@ -639,6 +658,8 @@ JavaMain(void* _args) } } if (!ret) { + // An appropriate main method couldn't be located, check and report + // any exception and LEAVE() CHECK_EXCEPTION_LEAVE(1); } @@ -646,8 +667,15 @@ JavaMain(void* _args) * The launcher's exit code (in the absence of calls to * System.exit) will be non-zero if main threw an exception. */ - ret = (*env)->ExceptionOccurred(env) == NULL ? 0 : 1; - + if (ret && (*env)->ExceptionOccurred(env) == NULL) { + // main method was invoked and no exception was thrown from it, + // return success. + ret = 0; + } else { + // Either the main method couldn't be located or an exception occurred + // in the invoked main method, return failure. + ret = 1; + } LEAVE(); } From b5212d7bfe78b18c18e45c42c724a22365709328 Mon Sep 17 00:00:00 2001 From: Roland Westrelin Date: Fri, 14 Jun 2024 13:50:21 +0000 Subject: [PATCH 22/70] 8328107: Shenandoah/C2: TestVerifyLoopOptimizations test failure Reviewed-by: shade --- .../gc/shenandoah/c2/shenandoahSupport.cpp | 8 ++ .../compiler/TestBarrierOnLoopBackedge.java | 84 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 test/hotspot/jtreg/gc/shenandoah/compiler/TestBarrierOnLoopBackedge.java diff --git a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp index dbb45995698..8cd76dd3d6b 100644 --- a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp +++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp @@ -1333,6 +1333,14 @@ void ShenandoahBarrierC2Support::pin_and_expand(PhaseIdealLoop* phase) { OuterStripMinedLoopNode* outer = head->as_OuterStripMinedLoop(); hide_strip_mined_loop(outer, outer->unique_ctrl_out()->as_CountedLoop(), phase); } + if (head->is_BaseCountedLoop() && ctrl->is_IfProj() && ctrl->in(0)->is_BaseCountedLoopEnd() && + head->as_BaseCountedLoop()->loopexit() == ctrl->in(0)) { + Node* entry = head->in(LoopNode::EntryControl); + Node* backedge = head->in(LoopNode::LoopBackControl); + Node* new_head = new LoopNode(entry, backedge); + phase->register_control(new_head, phase->get_loop(entry), entry); + phase->lazy_replace(head, new_head); + } } // Expand load-reference-barriers diff --git a/test/hotspot/jtreg/gc/shenandoah/compiler/TestBarrierOnLoopBackedge.java b/test/hotspot/jtreg/gc/shenandoah/compiler/TestBarrierOnLoopBackedge.java new file mode 100644 index 00000000000..a72c7d69d7f --- /dev/null +++ b/test/hotspot/jtreg/gc/shenandoah/compiler/TestBarrierOnLoopBackedge.java @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2024, Red Hat, Inc. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8328107 + * @summary Barrier expanded on backedge break loop verification code + * @requires vm.gc.Shenandoah + * + * @run main/othervm -XX:+UseShenandoahGC -XX:-BackgroundCompilation -XX:CompileCommand=dontinline,TestBarrierOnLoopBackedge::notInlined + * -XX:+IgnoreUnrecognizedVMOptions -XX:+VerifyLoopOptimizations TestBarrierOnLoopBackedge + * @run main/othervm -XX:+UseShenandoahGC -XX:-BackgroundCompilation -XX:CompileCommand=dontinline,TestBarrierOnLoopBackedge::notInlined + * -XX:+IgnoreUnrecognizedVMOptions -XX:+VerifyLoopOptimizations -XX:-UseCountedLoopSafepoints TestBarrierOnLoopBackedge + */ + +public class TestBarrierOnLoopBackedge { + private static A field = new A(); + private static final A finalField = new A(); + private static float floatField; + + public static void main(String[] args) { + A[] array = new A[1]; + array[0] = finalField; + for (int i = 0; i < 20_000; i++) { + test1(); + test2(); + } + } + + private static void test1() { + floatField = field.f; + for (int i = 0; i < 1000; i++) { + notInlined(field); // load barrier split thru phi and ends up on back edge + if (i % 2 == 0) { + field = finalField; + } + } + } + + private static void test2() { + A[] array = new A[1]; + notInlined(array); + int i = 0; + A a = array[0]; + for (;;) { + synchronized (new Object()) { + } + notInlined(a); + i++; + if (i >= 1000) { + break; + } + a = array[0]; // load barrier pinned on backedge + } + } + + private static void notInlined(Object a) { + + } + + private static class A { + float f; + } +} From dae0bda9d0096c25d6378561ab2d09df05f381cf Mon Sep 17 00:00:00 2001 From: Archie Cobbs Date: Fri, 14 Jun 2024 14:53:05 +0000 Subject: [PATCH 23/70] 8334252: Verifier error for lambda declared in early construction context Reviewed-by: mcimadamore --- .../sun/tools/javac/comp/LambdaToMethod.java | 24 +++++----- .../javac/SuperInit/LambdaOuterCapture.java | 46 +++++++++++++++++++ 2 files changed, 57 insertions(+), 13 deletions(-) create mode 100644 test/langtools/tools/javac/SuperInit/LambdaOuterCapture.java diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java index 5b70a376f2a..7e5dcee0e8d 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1239,7 +1239,7 @@ class LambdaAnalyzerPreprocessor extends TreeTranslator { private int lambdaCount = 0; /** - * List of types undergoing construction via explicit constructor chaining. + * List of types undergoing construction, i.e., in an early construction context. */ private List typesUnderConstruction; @@ -1280,15 +1280,10 @@ private JCClassDecl analyzeAndPreprocessClass(JCClassDecl tree) { @Override public void visitApply(JCMethodInvocation tree) { - List previousNascentTypes = typesUnderConstruction; - try { - Name methName = TreeInfo.name(tree.meth); - if (methName == names._this || methName == names._super) { - typesUnderConstruction = typesUnderConstruction.prepend(currentClass()); - } - super.visitApply(tree); - } finally { - typesUnderConstruction = previousNascentTypes; + super.visitApply(tree); + if (TreeInfo.isConstructorCall(tree)) { + Assert.check(typesUnderConstruction.head == currentClass()); + typesUnderConstruction = typesUnderConstruction.tail; // end of early construction context } } // where @@ -1439,13 +1434,16 @@ private LambdaTranslationContext analyzeLambda(JCLambda tree, String statKey) { @Override public void visitMethodDef(JCMethodDecl tree) { + List prevTypesUnderConstruction = typesUnderConstruction; List prevStack = frameStack; try { + if (TreeInfo.isConstructor(tree)) // start early construction context (Object() notwithstanding) + typesUnderConstruction = typesUnderConstruction.prepend(currentClass()); frameStack = frameStack.prepend(new Frame(tree)); super.visitMethodDef(tree); - } - finally { + } finally { frameStack = prevStack; + typesUnderConstruction = prevTypesUnderConstruction; } } diff --git a/test/langtools/tools/javac/SuperInit/LambdaOuterCapture.java b/test/langtools/tools/javac/SuperInit/LambdaOuterCapture.java new file mode 100644 index 00000000000..092e2916c69 --- /dev/null +++ b/test/langtools/tools/javac/SuperInit/LambdaOuterCapture.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +/* + * @test + * @bug 8194743 + * @summary Test lambda declared in early construction context + * @enablePreview + */ + +public class LambdaOuterCapture { + + public class Inner { + + public Inner() { + Runnable r = () -> System.out.println(LambdaOuterCapture.this); + this(r); + } + + public Inner(Runnable r) { + } + } + + public static void main(String[] args) { + new LambdaOuterCapture().new Inner(); + } +} From 548e95a689d63e97ddbdfe7dd7df3a2e3377046c Mon Sep 17 00:00:00 2001 From: Leonid Mesnik Date: Fri, 14 Jun 2024 15:32:04 +0000 Subject: [PATCH 24/70] 8330702: Update failure handler to don't generate Error message if cores actions are empty Reviewed-by: sspitsyn --- .../jdk/test/failurehandler/action/ActionSet.java | 9 ++++++--- test/failure_handler/src/share/conf/windows.properties | 4 +++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionSet.java b/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionSet.java index d67611697bf..46f1c5bc6f1 100644 --- a/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionSet.java +++ b/test/failure_handler/src/share/classes/jdk/test/failurehandler/action/ActionSet.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -104,8 +104,11 @@ private List getPatternActions(PrintWriter log, private String[] getTools(PrintWriter writer, Properties p, String key) { String value = p.getProperty(key); - if (value == null || value.isEmpty()) { - writer.printf("ERROR: '%s' property is empty%n", key); + if (value == null) { + writer.printf("ERROR: '%s' property is not set%n", key); + return new String[]{}; + } + if (value.isEmpty()) { return new String[]{}; } return value.split(" "); diff --git a/test/failure_handler/src/share/conf/windows.properties b/test/failure_handler/src/share/conf/windows.properties index e22c1a523d8..6d11553ebbf 100644 --- a/test/failure_handler/src/share/conf/windows.properties +++ b/test/failure_handler/src/share/conf/windows.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2015, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -59,6 +59,8 @@ native.stack.params.repeat=6 native.core.app=cdb native.core.args=-c ".dump /mA core.%p;qd" -p %p native.core.params.timeout=600000 + +cores= ################################################################################ # environment info to gather ################################################################################ From 8464ce6db5cbd5d50ac2a2bcba905b7255f510f5 Mon Sep 17 00:00:00 2001 From: Leonid Mesnik Date: Fri, 14 Jun 2024 15:32:19 +0000 Subject: [PATCH 25/70] 8332113: Update nsk.share.Log to be always verbose Reviewed-by: sspitsyn, cjplummer --- test/hotspot/jtreg/vmTestbase/nsk/share/Log.java | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/test/hotspot/jtreg/vmTestbase/nsk/share/Log.java b/test/hotspot/jtreg/vmTestbase/nsk/share/Log.java index 735f487f6c3..e5750182495 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/share/Log.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/share/Log.java @@ -74,15 +74,15 @@ public class Log { /** * Is log-mode verbose? - * Default value is false. + * Always enabled. */ - private boolean verbose = false; + private final boolean verbose = true; /** * Should log messages prefixed with timestamps? - * Default value is false. + * Always enabled. */ - private boolean timestamp = false; + private final boolean timestamp = true; /** * Names for trace levels @@ -193,7 +193,6 @@ public Log(PrintStream stream) { */ public Log(PrintStream stream, boolean verbose) { this(stream); - this.verbose = verbose; } /** @@ -204,7 +203,6 @@ public Log(PrintStream stream, boolean verbose) { public Log(PrintStream stream, ArgumentParser argsParser) { this(stream, argsParser.verbose()); traceLevel = argsParser.getTraceLevel(); - timestamp = argsParser.isTimestamp(); } ///////////////////////////////////////////////////////////////// @@ -220,10 +218,9 @@ public boolean verbose() { * Enable or disable verbose mode for printing messages. */ public void enableVerbose(boolean enable) { - if (!verbose) { - flushLogBuffer(); + if (!enable) { + throw new RuntimeException("The non-verbose logging is not supported."); } - verbose = enable; } public int getTraceLevel() { @@ -422,7 +419,6 @@ protected synchronized void logTo(PrintStream stream) { out.flush(); } out = stream; - verbose = true; } ///////////////////////////////////////////////////////////////// From 31e8debae63e008da79e403bcb870a7be631af2c Mon Sep 17 00:00:00 2001 From: Liming Liu Date: Mon, 17 Jun 2024 06:16:26 +0000 Subject: [PATCH 26/70] 8324781: runtime/Thread/TestAlwaysPreTouchStacks.java failed with Expected a higher ratio between stack committed and reserved 8325218: gc/parallel/TestAlwaysPreTouchBehavior.java fails Reviewed-by: stefank, jsjolen, stuefe --- test/hotspot/jtreg/ProblemList.txt | 2 -- .../gc/parallel/TestAlwaysPreTouchBehavior.java | 3 +-- .../runtime/Thread/TestAlwaysPreTouchStacks.java | 14 +++++++++----- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/test/hotspot/jtreg/ProblemList.txt b/test/hotspot/jtreg/ProblemList.txt index 5290a9bb626..4391357b703 100644 --- a/test/hotspot/jtreg/ProblemList.txt +++ b/test/hotspot/jtreg/ProblemList.txt @@ -77,7 +77,6 @@ gc/epsilon/TestMemoryMXBeans.java 8206434 generic-all gc/g1/humongousObjects/objectGraphTest/TestObjectGraphAfterGC.java 8156755 generic-all gc/g1/logging/TestG1LoggingFailure.java 8169634 generic-all gc/g1/humongousObjects/TestHeapCounters.java 8178918 generic-all -gc/parallel/TestAlwaysPreTouchBehavior.java 8325218 linux-all gc/TestAllocHumongousFragment.java#adaptive 8298781 generic-all gc/TestAllocHumongousFragment.java#aggressive 8298781 generic-all gc/TestAllocHumongousFragment.java#iu-aggressive 8298781 generic-all @@ -102,7 +101,6 @@ runtime/StackGuardPages/TestStackGuardPagesNative.java 8303612 linux-all runtime/ErrorHandling/TestDwarf.java#checkDecoder 8305489 linux-all runtime/ErrorHandling/MachCodeFramesInErrorFile.java 8313315 linux-ppc64le runtime/cds/appcds/customLoader/HelloCustom_JFR.java 8241075 linux-all,windows-x64 -runtime/Thread/TestAlwaysPreTouchStacks.java 8324781 linux-all applications/jcstress/copy.java 8229852 linux-all diff --git a/test/hotspot/jtreg/gc/parallel/TestAlwaysPreTouchBehavior.java b/test/hotspot/jtreg/gc/parallel/TestAlwaysPreTouchBehavior.java index 12c03661e0e..3a5b2b557cc 100644 --- a/test/hotspot/jtreg/gc/parallel/TestAlwaysPreTouchBehavior.java +++ b/test/hotspot/jtreg/gc/parallel/TestAlwaysPreTouchBehavior.java @@ -31,7 +31,7 @@ * @requires os.family == "linux" * @requires os.maxMemory > 2G * @library /test/lib - * @run main/othervm -Xmx1g -Xms1g -XX:+UseParallelGC -XX:+AlwaysPreTouch gc.parallel.TestAlwaysPreTouchBehavior + * @run main/othervm -Xmx1g -Xms1g -XX:+UseParallelGC -XX:+AlwaysPreTouch -XX:+UnlockDiagnosticVMOptions -XX:-UseMadvPopulateWrite gc.parallel.TestAlwaysPreTouchBehavior */ import java.lang.management.ManagementFactory; import java.lang.management.ThreadInfo; @@ -77,4 +77,3 @@ public static void main(String [] args) { Asserts.assertGreaterThanOrEqual(rss, committedMemory, "RSS of this process(" + rss + "kb) should be bigger than or equal to committed heap mem(" + committedMemory + "kb)"); } } - diff --git a/test/hotspot/jtreg/runtime/Thread/TestAlwaysPreTouchStacks.java b/test/hotspot/jtreg/runtime/Thread/TestAlwaysPreTouchStacks.java index a10f4193234..b12eff0cf84 100644 --- a/test/hotspot/jtreg/runtime/Thread/TestAlwaysPreTouchStacks.java +++ b/test/hotspot/jtreg/runtime/Thread/TestAlwaysPreTouchStacks.java @@ -27,6 +27,7 @@ import java.io.IOException; import java.util.ArrayList; +import java.util.Collections; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.concurrent.CyclicBarrier; @@ -89,14 +90,17 @@ public static void main(String[] args) throws Exception { // should show up with fully - or almost fully - committed thread stacks. } else { - - ProcessBuilder pb = ProcessTools.createLimitedTestJavaProcessBuilder( + ArrayList vmArgs = new ArrayList<>(); + Collections.addAll(vmArgs, "-XX:+UnlockDiagnosticVMOptions", "-Xmx100M", "-XX:+AlwaysPreTouchStacks", - "-XX:NativeMemoryTracking=summary", "-XX:+PrintNMTStatistics", - "TestAlwaysPreTouchStacks", - "test"); + "-XX:NativeMemoryTracking=summary", "-XX:+PrintNMTStatistics"); + if (System.getProperty("os.name").contains("Linux")) { + vmArgs.add("-XX:-UseMadvPopulateWrite"); + } + Collections.addAll(vmArgs, "TestAlwaysPreTouchStacks", "test"); + ProcessBuilder pb = ProcessTools.createLimitedTestJavaProcessBuilder(vmArgs); OutputAnalyzer output = new OutputAnalyzer(pb.start()); output.reportDiagnosticSummary(); From 29b63928387a8b6ab387057cb3eac4771b1bfff1 Mon Sep 17 00:00:00 2001 From: Emanuel Peter Date: Mon, 17 Jun 2024 06:58:55 +0000 Subject: [PATCH 27/70] 8334228: C2 SuperWord: fix JDK-24 regression in VPointer::cmp_for_sort after JDK-8325155 Reviewed-by: chagedorn, kvn --- src/hotspot/share/opto/vectorization.cpp | 29 +++++----- .../vectorization/TestOffsetSorting.java | 55 +++++++++++++++++++ 2 files changed, 70 insertions(+), 14 deletions(-) create mode 100644 test/hotspot/jtreg/compiler/vectorization/TestOffsetSorting.java diff --git a/src/hotspot/share/opto/vectorization.cpp b/src/hotspot/share/opto/vectorization.cpp index ac575d7192c..01b235e8b27 100644 --- a/src/hotspot/share/opto/vectorization.cpp +++ b/src/hotspot/share/opto/vectorization.cpp @@ -807,24 +807,26 @@ void VPointer::maybe_add_to_invar(Node* new_invar, bool negate) { _invar = register_if_new(add); } +// We use two comparisons, because a subtraction could underflow. +#define RETURN_CMP_VALUE_IF_NOT_EQUAL(a, b) \ + if (a < b) { return -1; } \ + if (a > b) { return 1; } + // To be in the same group, two VPointers must be the same, // except for the offset. int VPointer::cmp_for_sort_by_group(const VPointer** p1, const VPointer** p2) { const VPointer* a = *p1; const VPointer* b = *p2; - int cmp_base = a->base()->_idx - b->base()->_idx; - if (cmp_base != 0) { return cmp_base; } - - int cmp_opcode = a->mem()->Opcode() - b->mem()->Opcode(); - if (cmp_opcode != 0) { return cmp_opcode; } + RETURN_CMP_VALUE_IF_NOT_EQUAL(a->base()->_idx, b->base()->_idx); + RETURN_CMP_VALUE_IF_NOT_EQUAL(a->mem()->Opcode(), b->mem()->Opcode()); + RETURN_CMP_VALUE_IF_NOT_EQUAL(a->scale_in_bytes(), b->scale_in_bytes()); - int cmp_scale = a->scale_in_bytes() - b->scale_in_bytes(); - if (cmp_scale != 0) { return cmp_scale; } + int a_inva_idx = a->invar() == nullptr ? 0 : a->invar()->_idx; + int b_inva_idx = b->invar() == nullptr ? 0 : b->invar()->_idx; + RETURN_CMP_VALUE_IF_NOT_EQUAL(a_inva_idx, b_inva_idx); - int cmp_invar = (a->invar() == nullptr ? 0 : a->invar()->_idx) - - (b->invar() == nullptr ? 0 : b->invar()->_idx); - return cmp_invar; + return 0; // equal } // We compare by group, then by offset, and finally by node idx. @@ -835,10 +837,9 @@ int VPointer::cmp_for_sort(const VPointer** p1, const VPointer** p2) { const VPointer* a = *p1; const VPointer* b = *p2; - int cmp_offset = a->offset_in_bytes() - b->offset_in_bytes(); - if (cmp_offset != 0) { return cmp_offset; } - - return a->mem()->_idx - b->mem()->_idx; + RETURN_CMP_VALUE_IF_NOT_EQUAL(a->offset_in_bytes(), b->offset_in_bytes()); + RETURN_CMP_VALUE_IF_NOT_EQUAL(a->mem()->_idx, b->mem()->_idx); + return 0; // equal } #ifndef PRODUCT diff --git a/test/hotspot/jtreg/compiler/vectorization/TestOffsetSorting.java b/test/hotspot/jtreg/compiler/vectorization/TestOffsetSorting.java new file mode 100644 index 00000000000..a1b86293a18 --- /dev/null +++ b/test/hotspot/jtreg/compiler/vectorization/TestOffsetSorting.java @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * @test + * @bug 8334228 + * @summary Test sorting of VPointer by offset, when subtraction of two offsets can overflow. + * @run main/othervm -XX:CompileCommand=compileonly,compiler.vectorization.TestOffsetSorting::test -Xcomp compiler.vectorization.TestOffsetSorting + * @run main compiler.vectorization.TestOffsetSorting + */ + +package compiler.vectorization; + +public class TestOffsetSorting { + static int RANGE = 10_000; + + public static void main(String[] args) { + int[] a = new int[RANGE]; + for (int i = 0; i < 10_000; i++) { + try { + test(a, 0); + throw new RuntimeException("test should go out-of-bounds"); + } catch (ArrayIndexOutOfBoundsException e) { + } + } + } + + static void test(int[] a, int invar) { + int large = (1 << 28) + (1 << 20); + for (int i = 0; i < 1_000; i++) { + a[i + invar - large] = 42; + a[i + invar + large] = 42; + } + } +} From 7b38bfea331437ad99277032de7fce939303abc8 Mon Sep 17 00:00:00 2001 From: Emanuel Peter Date: Mon, 17 Jun 2024 07:00:03 +0000 Subject: [PATCH 28/70] 8333729: C2 SuperWord: remove some @requires usages in test/hotspot/jtreg/compiler/loopopts/superword Reviewed-by: chagedorn, kvn --- .../superword/CoLocatePackMemoryState.java | 3 +- .../loopopts/superword/RedTest_long.java | 6 +++- .../loopopts/superword/ReductionPerf.java | 5 ++- .../loopopts/superword/TestAlignVector.java | 5 +-- .../superword/TestAlignVectorFuzzer.java | 5 --- .../superword/TestCyclicDependency.java | 1 - .../superword/TestDependencyOffsets.java | 6 ++-- .../superword/TestGeneralizedReductions.java | 20 +++++++---- ...tIndependentPacksWithCyclicDependency.java | 9 +++-- ...IndependentPacksWithCyclicDependency2.java | 5 ++- .../superword/TestLargeCompilation.java | 4 +-- .../superword/TestLargeScaleAndStride.java | 3 +- .../superword/TestMovingLoadBeforeStore.java | 6 ++-- .../loopopts/superword/TestMulAddS2I.java | 4 +-- .../superword/TestPeeledReductionNode.java | 5 +-- .../superword/TestPickFirstMemoryState.java | 1 - .../superword/TestPickLastMemoryState.java | 1 - .../TestScheduleReordersScalarMemops.java | 5 ++- .../loopopts/superword/TestSplitPacks.java | 3 +- .../superword/TestUnorderedReduction.java | 12 +++---- ...norderedReductionPartialVectorization.java | 2 +- .../loopopts/superword/Vec_MulAddS2I.java | 33 ++++++++++++++----- 22 files changed, 76 insertions(+), 68 deletions(-) diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/CoLocatePackMemoryState.java b/test/hotspot/jtreg/compiler/loopopts/superword/CoLocatePackMemoryState.java index 9dc1cf1f031..c60144da0cd 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/CoLocatePackMemoryState.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/CoLocatePackMemoryState.java @@ -24,12 +24,11 @@ /** * @test - * @requires vm.compiler2.enabled * @bug 8238438 * @summary Tests to select the memory state of the last load in a load pack in SuperWord::co_locate_pack. * * @run main/othervm -Xbatch -XX:CompileCommand=compileonly,compiler.loopopts.superword.CoLocatePackMemoryState::test - * -XX:LoopMaxUnroll=16 compiler.loopopts.superword.CoLocatePackMemoryState + * -XX:+IgnoreUnrecognizedVMOptions -XX:LoopMaxUnroll=16 compiler.loopopts.superword.CoLocatePackMemoryState */ package compiler.loopopts.superword; diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/RedTest_long.java b/test/hotspot/jtreg/compiler/loopopts/superword/RedTest_long.java index 27bfa8cec0e..ee691a91bda 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/RedTest_long.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/RedTest_long.java @@ -25,7 +25,6 @@ * @test * @bug 8240248 * @summary Add C2 x86 Superword support for scalar logical reduction optimizations : long test - * @requires vm.bits == "64" * @library /test/lib / * @run driver compiler.loopopts.superword.RedTest_long */ @@ -137,6 +136,7 @@ public static void reductionInit2( failOn = {IRNode.ADD_REDUCTION_VL}) @IR(applyIfCPUFeature = {"avx2", "true"}, applyIfAnd = {"SuperWordReductions", "true", "LoopMaxUnroll", ">= 8"}, + applyIfPlatform = {"64-bit", "true"}, counts = {IRNode.ADD_REDUCTION_VL, ">= 1", IRNode.ADD_REDUCTION_VL, "<= 2"}) // one for main-loop, one for vector-post-loop public static long sumReductionImplement( long[] a, @@ -154,6 +154,7 @@ public static long sumReductionImplement( failOn = {IRNode.OR_REDUCTION_V}) @IR(applyIfCPUFeature = {"avx2", "true"}, applyIfAnd = {"SuperWordReductions", "true", "LoopMaxUnroll", ">= 8"}, + applyIfPlatform = {"64-bit", "true"}, counts = {IRNode.OR_REDUCTION_V, ">= 1", IRNode.OR_REDUCTION_V, "<= 2"}) // one for main-loop, one for vector-post-loop public static long orReductionImplement( long[] a, @@ -171,6 +172,7 @@ public static long orReductionImplement( failOn = {IRNode.AND_REDUCTION_V}) @IR(applyIfCPUFeature = {"avx2", "true"}, applyIfAnd = {"SuperWordReductions", "true", "LoopMaxUnroll", ">= 8"}, + applyIfPlatform = {"64-bit", "true"}, counts = {IRNode.AND_REDUCTION_V, ">= 1", IRNode.AND_REDUCTION_V, "<= 2"}) // one for main-loop, one for vector-post-loop public static long andReductionImplement( long[] a, @@ -188,6 +190,7 @@ public static long andReductionImplement( failOn = {IRNode.XOR_REDUCTION_V}) @IR(applyIfCPUFeature = {"avx2", "true"}, applyIfAnd = {"SuperWordReductions", "true", "LoopMaxUnroll", ">= 8"}, + applyIfPlatform = {"64-bit", "true"}, counts = {IRNode.XOR_REDUCTION_V, ">= 1", IRNode.XOR_REDUCTION_V, "<= 2"}) // one for main-loop, one for vector-post-loop public static long xorReductionImplement( long[] a, @@ -205,6 +208,7 @@ public static long xorReductionImplement( failOn = {IRNode.MUL_REDUCTION_VL}) @IR(applyIfCPUFeature = {"avx512dq", "true"}, applyIfAnd = {"SuperWordReductions", "true", "LoopMaxUnroll", ">= 8"}, + applyIfPlatform = {"64-bit", "true"}, counts = {IRNode.MUL_REDUCTION_VL, ">= 1", IRNode.MUL_REDUCTION_VL, "<= 2"}) // one for main-loop, one for vector-post-loop public static long mulReductionImplement( long[] a, diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/ReductionPerf.java b/test/hotspot/jtreg/compiler/loopopts/superword/ReductionPerf.java index b1495d00548..591765bb582 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/ReductionPerf.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/ReductionPerf.java @@ -25,11 +25,10 @@ * @test * @bug 8074981 8302652 * @summary Test SuperWord Reduction Perf. - * @requires vm.compiler2.enabled - * @requires vm.simpleArch == "x86" | vm.simpleArch == "x64" | vm.simpleArch == "aarch64" | vm.simpleArch == "riscv64" * @library /test/lib / - * @run main/othervm -Xbatch -XX:LoopUnrollLimit=250 + * @run main/othervm -Xbatch * -XX:CompileCommand=exclude,compiler.loopopts.superword.ReductionPerf::main + * -XX:+IgnoreUnrecognizedVMOptions -XX:LoopUnrollLimit=250 * compiler.loopopts.superword.ReductionPerf */ diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestAlignVector.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestAlignVector.java index fe873770ab4..fd5c2969074 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestAlignVector.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestAlignVector.java @@ -39,7 +39,6 @@ * @summary Test AlignVector with various loop init, stride, scale, invar, etc. * @modules java.base/jdk.internal.misc * @library /test/lib / - * @requires vm.compiler2.enabled * @run driver compiler.loopopts.superword.TestAlignVector NoAlignVector */ @@ -49,7 +48,6 @@ * @summary Test AlignVector with various loop init, stride, scale, invar, etc. * @modules java.base/jdk.internal.misc * @library /test/lib / - * @requires vm.compiler2.enabled * @run driver compiler.loopopts.superword.TestAlignVector AlignVector */ @@ -59,7 +57,6 @@ * @summary Test AlignVector with various loop init, stride, scale, invar, etc. * @modules java.base/jdk.internal.misc * @library /test/lib / - * @requires vm.compiler2.enabled * @run driver compiler.loopopts.superword.TestAlignVector VerifyAlignVector */ @@ -96,7 +93,7 @@ interface TestFunction { public static void main(String[] args) { TestFramework framework = new TestFramework(TestAlignVector.class); framework.addFlags("--add-modules", "java.base", "--add-exports", "java.base/jdk.internal.misc=ALL-UNNAMED", - "-XX:LoopUnrollLimit=250"); + "-XX:+IgnoreUnrecognizedVMOptions", "-XX:LoopUnrollLimit=250"); switch (args[0]) { case "NoAlignVector" -> { framework.addFlags("-XX:-AlignVector"); } diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestAlignVectorFuzzer.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestAlignVectorFuzzer.java index e27feb36e86..7b95781905e 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestAlignVectorFuzzer.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestAlignVectorFuzzer.java @@ -27,7 +27,6 @@ * @summary Fuzzing loops with different (random) init, limit, stride, scale etc. Do not force alignment. * @modules java.base/jdk.internal.misc * @library /test/lib - * @requires vm.compiler2.enabled * @key randomness * @run main/bootclasspath/othervm -XX:+IgnoreUnrecognizedVMOptions * -XX:LoopUnrollLimit=250 @@ -41,7 +40,6 @@ * @summary Fuzzing loops with different (random) init, limit, stride, scale etc. Verify AlignVector. * @modules java.base/jdk.internal.misc * @library /test/lib - * @requires vm.compiler2.enabled * @key randomness * @run main/bootclasspath/othervm -XX:+IgnoreUnrecognizedVMOptions * -XX:+AlignVector -XX:+VerifyAlignVector @@ -56,8 +54,6 @@ * @summary Fuzzing loops with different (random) init, limit, stride, scale etc. Verify AlignVector. * @modules java.base/jdk.internal.misc * @library /test/lib - * @requires vm.compiler2.enabled - * @requires vm.bits == 64 * @key randomness * @run main/bootclasspath/othervm -XX:+IgnoreUnrecognizedVMOptions * -XX:+AlignVector -XX:+VerifyAlignVector @@ -73,7 +69,6 @@ * @summary Fuzzing loops with different (random) init, limit, stride, scale etc. Verify AlignVector. * @modules java.base/jdk.internal.misc * @library /test/lib - * @requires vm.compiler2.enabled * @key randomness * @run main/bootclasspath/othervm -XX:+IgnoreUnrecognizedVMOptions * -XX:+AlignVector -XX:+VerifyAlignVector diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestCyclicDependency.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestCyclicDependency.java index 94e47f3f747..3849f1b05cf 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestCyclicDependency.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestCyclicDependency.java @@ -27,7 +27,6 @@ * @bug 8298935 * @summary Writing forward on array creates cyclic dependency * which leads to wrong result, when ignored. - * @requires vm.compiler2.enabled * @library /test/lib / * @run driver TestCyclicDependency */ diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestDependencyOffsets.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestDependencyOffsets.java index 1e48ae07106..2f0a5809d08 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestDependencyOffsets.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestDependencyOffsets.java @@ -27,7 +27,7 @@ * and various MaxVectorSize values, and +- AlignVector. * * Note: this test is auto-generated. Please modify / generate with script: - * https://bugs.openjdk.org/browse/JDK-8310190 + * https://bugs.openjdk.org/browse/JDK-8333729 * * Types: int, long, short, char, byte, float, double * Offsets: 0, -1, 1, -2, 2, -3, 3, -4, 4, -7, 7, -8, 8, -14, 14, -16, 16, -18, 18, -20, 20, -31, 31, -32, 32, -63, 63, -64, 64, -65, 65, -128, 128, -129, 129, -192, 192 @@ -113,7 +113,6 @@ * @test id=vanilla-A * @bug 8298935 8308606 8310308 8312570 8310190 * @summary Test SuperWord: vector size, offsets, dependencies, alignment. - * @requires vm.compiler2.enabled * @library /test/lib / * @run driver compiler.loopopts.superword.TestDependencyOffsets vanilla-A */ @@ -122,7 +121,6 @@ * @test id=vanilla-U * @bug 8298935 8308606 8310308 8312570 8310190 * @summary Test SuperWord: vector size, offsets, dependencies, alignment. - * @requires vm.compiler2.enabled * @library /test/lib / * @run driver compiler.loopopts.superword.TestDependencyOffsets vanilla-U */ @@ -1285,7 +1283,7 @@ public static void main(String args[]) { "-XX:CompileCommand=compileonly,compiler.loopopts.superword.TestDependencyOffsets::init", "-XX:CompileCommand=compileonly,compiler.loopopts.superword.TestDependencyOffsets::test*", "-XX:CompileCommand=compileonly,compiler.loopopts.superword.TestDependencyOffsets::verify", - "-XX:LoopUnrollLimit=250"); + "-XX:+IgnoreUnrecognizedVMOptions", "-XX:LoopUnrollLimit=250"); if (args.length != 1) { throw new RuntimeException("Test requires exactly one argument!"); diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestGeneralizedReductions.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestGeneralizedReductions.java index 2a27aad8d5a..a0e4b58f509 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestGeneralizedReductions.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestGeneralizedReductions.java @@ -27,7 +27,6 @@ * @summary Test reduction vectorizations that are enabled by performing SLP * reduction analysis on unrolled loops. * @library /test/lib / - * @requires vm.bits == 64 * @run driver compiler.loopopts.superword.TestGeneralizedReductions */ @@ -42,7 +41,7 @@ public class TestGeneralizedReductions { public static void main(String[] args) throws Exception { // Fix maximum number of unrolls for test stability. - TestFramework.runWithFlags("-XX:LoopMaxUnroll=16"); + TestFramework.runWithFlags("-XX:+IgnoreUnrecognizedVMOptions", "-XX:LoopMaxUnroll=16"); } @Run(test = {"testReductionOnGlobalAccumulator", @@ -82,7 +81,9 @@ private static void initArray(long[] array) { } @Test - @IR(applyIfCPUFeature = {"avx2", "true"}, applyIf = {"SuperWordReductions", "true"}, + @IR(applyIfCPUFeature = {"avx2", "true"}, + applyIf = {"SuperWordReductions", "true"}, + applyIfPlatform = {"64-bit", "true"}, counts = {IRNode.ADD_REDUCTION_VI, ">= 1"}) private static long testReductionOnGlobalAccumulator(long[] array) { acc = 0; @@ -93,7 +94,9 @@ private static long testReductionOnGlobalAccumulator(long[] array) { } @Test - @IR(applyIfCPUFeature = {"avx2", "true"}, applyIf = {"SuperWordReductions", "true"}, + @IR(applyIfCPUFeature = {"avx2", "true"}, + applyIf = {"SuperWordReductions", "true"}, + applyIfPlatform = {"64-bit", "true"}, counts = {IRNode.ADD_REDUCTION_VI, ">= 1"}) private static long testReductionOnPartiallyUnrolledLoop(long[] array) { int sum = 0; @@ -105,7 +108,9 @@ private static long testReductionOnPartiallyUnrolledLoop(long[] array) { } @Test - @IR(applyIfCPUFeature = {"avx2", "true"}, applyIf = {"SuperWordReductions", "true"}, + @IR(applyIfCPUFeature = {"avx2", "true"}, + applyIf = {"SuperWordReductions", "true"}, + applyIfPlatform = {"64-bit", "true"}, counts = {IRNode.ADD_REDUCTION_VI, ">= 1"}) private static long testReductionOnLargePartiallyUnrolledLoop(long[] array) { int sum = 0; @@ -128,7 +133,9 @@ private static long testReductionOnLargePartiallyUnrolledLoop(long[] array) { // If this limitation is overcome in the future, the test case should be // turned into a positive one. @Test - @IR(applyIfCPUFeature = {"avx2", "true"}, applyIf = {"SuperWordReductions", "true"}, + @IR(applyIfCPUFeature = {"avx2", "true"}, + applyIf = {"SuperWordReductions", "true"}, + applyIfPlatform = {"64-bit", "true"}, failOn = {IRNode.ADD_REDUCTION_VI}) private static long testReductionOnPartiallyUnrolledLoopWithSwappedInputs(long[] array) { int sum = 0; @@ -142,6 +149,7 @@ private static long testReductionOnPartiallyUnrolledLoopWithSwappedInputs(long[] @Test @IR(applyIfCPUFeature = {"avx2", "true"}, applyIfAnd = {"SuperWordReductions", "true","UsePopCountInstruction", "true"}, + applyIfPlatform = {"64-bit", "true"}, counts = {IRNode.ADD_REDUCTION_VI, ">= 1", IRNode.POPCOUNT_VL, ">= 1"}) @IR(applyIfPlatform = {"riscv64", "true"}, diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestIndependentPacksWithCyclicDependency.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestIndependentPacksWithCyclicDependency.java index b2748348036..65398e8adfd 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestIndependentPacksWithCyclicDependency.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestIndependentPacksWithCyclicDependency.java @@ -27,8 +27,6 @@ * @bug 8304042 * @summary Test some examples with independent packs with cyclic dependency * between the packs. - * @requires vm.bits == 64 - * @requires vm.compiler2.enabled * @modules java.base/jdk.internal.misc * @library /test/lib / * @run driver compiler.loopopts.superword.TestIndependentPacksWithCyclicDependency @@ -78,7 +76,7 @@ public static void main(String args[]) { "-XX:CompileCommand=compileonly,compiler.loopopts.superword.TestIndependentPacksWithCyclicDependency::test*", "-XX:CompileCommand=compileonly,compiler.loopopts.superword.TestIndependentPacksWithCyclicDependency::verify", "-XX:CompileCommand=compileonly,compiler.loopopts.superword.TestIndependentPacksWithCyclicDependency::init", - "-XX:LoopUnrollLimit=1000"); + "-XX:+IgnoreUnrecognizedVMOptions", "-XX:LoopUnrollLimit=1000"); } TestIndependentPacksWithCyclicDependency() { @@ -120,6 +118,7 @@ public void runTest0() { @Test @IR(counts = {IRNode.ADD_VI, "> 0", IRNode.MUL_VF, "> 0"}, + applyIfPlatform = {"64-bit", "true"}, applyIfCPUFeatureOr = {"sse4.1", "true", "asimd", "true"}) static void test0(int[] dataIa, int[] dataIb, float[] dataFa, float[] dataFb) { for (int i = 0; i < RANGE; i+=2) { @@ -144,6 +143,7 @@ public void runTest1() { @Test @IR(counts = {IRNode.ADD_VI, "> 0", IRNode.MUL_VF, "> 0", IRNode.VECTOR_CAST_F2I, "> 0", IRNode.VECTOR_CAST_I2F, "> 0"}, + applyIfPlatform = {"64-bit", "true"}, applyIfCPUFeatureOr = {"avx2", "true", "asimd", "true"}) static void test1(int[] dataIa, int[] dataIb, float[] dataFa, float[] dataFb) { for (int i = 0; i < RANGE; i+=2) { @@ -167,6 +167,7 @@ public void runTest2() { @Test @IR(counts = {IRNode.ADD_VI, "> 0", IRNode.MUL_VI, "> 0"}, + applyIfPlatform = {"64-bit", "true"}, applyIfCPUFeatureOr = {"sse4.1", "true", "asimd", "true"}) static void test2(int[] dataIa, int[] dataIb, float[] dataFa, float[] dataFb) { for (int i = 0; i < RANGE; i+=2) { @@ -191,6 +192,7 @@ public void runTest3() { @Test @IR(counts = {IRNode.ADD_VI, "> 0", IRNode.MUL_VF, "> 0"}, + applyIfPlatform = {"64-bit", "true"}, applyIfCPUFeatureOr = {"sse4.1", "true", "asimd", "true"}) static void test3(int[] dataIa, int[] dataIb, float[] dataFa, float[] dataFb) { for (int i = 0; i < RANGE; i+=2) { @@ -267,6 +269,7 @@ public void runTest6() { @Test @IR(counts = {IRNode.ADD_VI, "> 0", IRNode.MUL_VI, "> 0", IRNode.ADD_VF, "> 0"}, + applyIfPlatform = {"64-bit", "true"}, applyIfCPUFeatureOr = {"sse4.1", "true", "asimd", "true"}) static void test6(int[] dataIa, int[] dataIb, float[] dataFa, float[] dataFb, long[] dataLa, long[] dataLb) { diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestIndependentPacksWithCyclicDependency2.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestIndependentPacksWithCyclicDependency2.java index 31a2ba3a0cb..32d69689a42 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestIndependentPacksWithCyclicDependency2.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestIndependentPacksWithCyclicDependency2.java @@ -28,11 +28,10 @@ * @summary Test some examples with independent packs with cyclic dependency * between the packs. * Before fix, this hit: "assert(!is_visited) failed: visit only once" - * @requires vm.compiler2.enabled * @modules java.base/jdk.internal.misc * @library /test/lib / - * @run main/othervm -XX:LoopUnrollLimit=250 - * -XX:CompileCommand=compileonly,compiler.loopopts.superword.TestIndependentPacksWithCyclicDependency2::test + * @run main/othervm -XX:CompileCommand=compileonly,compiler.loopopts.superword.TestIndependentPacksWithCyclicDependency2::test + * -XX:+IgnoreUnrecognizedVMOptions -XX:LoopUnrollLimit=250 * compiler.loopopts.superword.TestIndependentPacksWithCyclicDependency2 */ diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestLargeCompilation.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestLargeCompilation.java index afe19fa1cd8..cdd80d3baaa 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestLargeCompilation.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestLargeCompilation.java @@ -27,9 +27,9 @@ * @test * @bug 8327978 * @summary Test compile time for large compilation, where SuperWord takes especially much time. - * @requires vm.compiler2.enabled - * @run main/othervm/timeout=30 -XX:LoopUnrollLimit=1000 -Xbatch + * @run main/othervm/timeout=30 -Xbatch * -XX:CompileCommand=compileonly,compiler.loopopts.superword.TestLargeCompilation::test* + * -XX:+IgnoreUnrecognizedVMOptions -XX:LoopUnrollLimit=1000 * compiler.loopopts.superword.TestLargeCompilation */ diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestLargeScaleAndStride.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestLargeScaleAndStride.java index cfb2931d928..b3453c24d77 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestLargeScaleAndStride.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestLargeScaleAndStride.java @@ -35,8 +35,7 @@ * @bug 8328938 * @modules java.base/jdk.internal.misc * @library /test/lib / - * @requires vm.compiler2.enabled - * @run main/othervm -XX:+AlignVector compiler.loopopts.superword.TestLargeScaleAndStride + * @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -XX:+AlignVector compiler.loopopts.superword.TestLargeScaleAndStride */ package compiler.loopopts.superword; diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestMovingLoadBeforeStore.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestMovingLoadBeforeStore.java index 752c8010468..45e3af07741 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestMovingLoadBeforeStore.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestMovingLoadBeforeStore.java @@ -24,16 +24,16 @@ /** * @test - * @requires vm.compiler2.enabled * @bug 8316679 8316594 * @summary In SuperWord::output, LoadVector can be moved before StoreVector, but only if it is proven to be safe. * @key randomness * @modules java.base/jdk.internal.misc * @library /test/lib * @run main/othervm -XX:CompileCommand=compileonly,compiler.loopopts.superword.TestMovingLoadBeforeStore::test* - * -Xbatch -XX:LoopUnrollLimit=100 - * -XX:+UnlockDiagnosticVMOptions -XX:+StressLCM * --add-modules java.base --add-exports java.base/jdk.internal.misc=ALL-UNNAMED + * -Xbatch + * -XX:+UnlockDiagnosticVMOptions -XX:+StressLCM + * -XX:+IgnoreUnrecognizedVMOptions -XX:LoopUnrollLimit=100 * compiler.loopopts.superword.TestMovingLoadBeforeStore */ diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestMulAddS2I.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestMulAddS2I.java index 578d4ee8bdb..e0f073c7f8f 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestMulAddS2I.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestMulAddS2I.java @@ -75,8 +75,8 @@ public class TestMulAddS2I { public static void main(String[] args) { - TestFramework.runWithFlags("-XX:+AlignVector"); - TestFramework.runWithFlags("-XX:-AlignVector"); + TestFramework.runWithFlags("-XX:+IgnoreUnrecognizedVMOptions", "-XX:+AlignVector"); + TestFramework.runWithFlags("-XX:+IgnoreUnrecognizedVMOptions", "-XX:-AlignVector"); } @Run(test = {"testa", "testb", "testc", "testd", "teste", "testf", "testg", "testh", diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestPeeledReductionNode.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestPeeledReductionNode.java index 99e1e2465f8..b69bff04088 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestPeeledReductionNode.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestPeeledReductionNode.java @@ -29,8 +29,9 @@ * @library /test/lib * @comment The test is run with -XX:LoopUnrollLimit=32 to prevent unrolling * from fully replacing vectorization. - * @run main/othervm -Xbatch -XX:LoopUnrollLimit=32 - * compiler.loopopts.superword.TestPeeledReductionNode + * @run main/othervm -Xbatch + * -XX:+IgnoreUnrecognizedVMOptions -XX:LoopUnrollLimit=32 + * compiler.loopopts.superword.TestPeeledReductionNode */ package compiler.loopopts.superword; diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestPickFirstMemoryState.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestPickFirstMemoryState.java index 488e32c416a..5d419766aeb 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestPickFirstMemoryState.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestPickFirstMemoryState.java @@ -24,7 +24,6 @@ /** * @test - * @requires vm.compiler2.enabled * @bug 8240281 * @summary Test which needs to select the memory state of the first load in a load pack in SuperWord::co_locate_pack. * diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestPickLastMemoryState.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestPickLastMemoryState.java index 4f1972dfdfe..bbdf4d3ad7a 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestPickLastMemoryState.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestPickLastMemoryState.java @@ -25,7 +25,6 @@ /** * @test - * @requires vm.compiler2.enabled * @bug 8290910 8293216 * @summary Test which needs to select the memory state of the last load in a load pack in SuperWord::co_locate_pack. * diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestScheduleReordersScalarMemops.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestScheduleReordersScalarMemops.java index f74c19d1b8b..f2ed8b6aec2 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestScheduleReordersScalarMemops.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestScheduleReordersScalarMemops.java @@ -28,7 +28,6 @@ * @bug 8304720 * @summary Test some examples where non-vectorized memops also need to * be reordered during SuperWord::schedule. - * @requires vm.compiler2.enabled * @modules java.base/jdk.internal.misc * @library /test/lib / * @run driver compiler.loopopts.superword.TestScheduleReordersScalarMemops @@ -55,8 +54,8 @@ public static void main(String args[]) { "-XX:CompileCommand=compileonly,compiler.loopopts.superword.TestScheduleReordersScalarMemops::test*", "-XX:CompileCommand=compileonly,compiler.loopopts.superword.TestScheduleReordersScalarMemops::verify", "-XX:CompileCommand=compileonly,compiler.loopopts.superword.TestScheduleReordersScalarMemops::init", - "-XX:LoopUnrollLimit=1000", - "-XX:-TieredCompilation", "-Xbatch"); + "-XX:-TieredCompilation", "-Xbatch", + "-XX:+IgnoreUnrecognizedVMOptions", "-XX:LoopUnrollLimit=1000"); } TestScheduleReordersScalarMemops() { diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestSplitPacks.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestSplitPacks.java index a872dbc616b..1824f18c8ff 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestSplitPacks.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestSplitPacks.java @@ -37,7 +37,6 @@ * @bug 8326139 * @summary Test splitting packs in SuperWord * @library /test/lib / - * @requires vm.compiler2.enabled * @run driver compiler.loopopts.superword.TestSplitPacks */ @@ -71,7 +70,7 @@ interface TestFunction { } public static void main(String[] args) { - TestFramework.runWithFlags("-XX:LoopUnrollLimit=1000"); + TestFramework.runWithFlags("-XX:+IgnoreUnrecognizedVMOptions", "-XX:LoopUnrollLimit=1000"); } public TestSplitPacks() { diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestUnorderedReduction.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestUnorderedReduction.java index 30cdc05bfe5..eed03b3a4a1 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestUnorderedReduction.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestUnorderedReduction.java @@ -25,7 +25,6 @@ * @test id=Vanilla-Unaligned * @bug 8302652 8314612 * @summary Special test cases for PhaseIdealLoop::move_unordered_reduction_out_of_loop - * @requires vm.compiler2.enabled * @library /test/lib / * @run driver compiler.loopopts.superword.TestUnorderedReduction Vanilla-Unaligned */ @@ -34,7 +33,6 @@ * @test id=Vanilla-Aligned * @bug 8302652 8314612 * @summary Special test cases for PhaseIdealLoop::move_unordered_reduction_out_of_loop - * @requires vm.compiler2.enabled * @library /test/lib / * @run driver compiler.loopopts.superword.TestUnorderedReduction Vanilla-Aligned */ @@ -43,7 +41,6 @@ * @test id=MaxVectorSize16-Unaligned * @bug 8302652 8314612 * @summary Special test cases for PhaseIdealLoop::move_unordered_reduction_out_of_loop - * @requires vm.compiler2.enabled * @library /test/lib / * @run driver compiler.loopopts.superword.TestUnorderedReduction MaxVectorSize16-Unaligned */ @@ -52,7 +49,6 @@ * @test id=MaxVectorSize32-Aligned * @bug 8302652 8314612 * @summary Special test cases for PhaseIdealLoop::move_unordered_reduction_out_of_loop - * @requires vm.compiler2.enabled * @library /test/lib / * @run driver compiler.loopopts.superword.TestUnorderedReduction MaxVectorSize32-Aligned */ @@ -75,10 +71,10 @@ public static void main(String[] args) { } switch (args[0]) { - case "Vanilla-Unaligned" -> { framework.addFlags("-XX:-AlignVector"); } - case "Vanilla-Aligned" -> { framework.addFlags("-XX:+AlignVector"); } - case "MaxVectorSize16-Unaligned" -> { framework.addFlags("-XX:-AlignVector", "-XX:MaxVectorSize=16"); } - case "MaxVectorSize32-Aligned" -> { framework.addFlags("-XX:+AlignVector", "-XX:MaxVectorSize=32"); } + case "Vanilla-Unaligned" -> { framework.addFlags("-XX:+IgnoreUnrecognizedVMOptions", "-XX:-AlignVector"); } + case "Vanilla-Aligned" -> { framework.addFlags("-XX:+IgnoreUnrecognizedVMOptions", "-XX:+AlignVector"); } + case "MaxVectorSize16-Unaligned" -> { framework.addFlags("-XX:+IgnoreUnrecognizedVMOptions", "-XX:-AlignVector", "-XX:MaxVectorSize=16"); } + case "MaxVectorSize32-Aligned" -> { framework.addFlags("-XX:+IgnoreUnrecognizedVMOptions", "-XX:+AlignVector", "-XX:MaxVectorSize=32"); } default -> { throw new RuntimeException("Test argument not recognized: " + args[0]); } } framework.start(); diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestUnorderedReductionPartialVectorization.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestUnorderedReductionPartialVectorization.java index 666ddaac441..0d4a4e7b5d8 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestUnorderedReductionPartialVectorization.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestUnorderedReductionPartialVectorization.java @@ -26,7 +26,6 @@ * @bug JDK-8310130 * @summary Special test cases for PhaseIdealLoop::move_unordered_reduction_out_of_loop * Here a case with partial vectorization of the reduction. - * @requires vm.bits == "64" * @library /test/lib / * @run driver compiler.loopopts.superword.TestUnorderedReductionPartialVectorization */ @@ -62,6 +61,7 @@ public void runTests() throws Exception { @IR(counts = {IRNode.LOAD_VECTOR_I, IRNode.VECTOR_SIZE + "min(max_int, max_long)", "> 0", IRNode.VECTOR_CAST_I2L, IRNode.VECTOR_SIZE + "min(max_int, max_long)", "> 0", IRNode.OR_REDUCTION_V, "> 0",}, + applyIfPlatform = {"64-bit", "true"}, applyIfCPUFeatureOr = {"avx2", "true"}) static long test1(int[] data, long sum) { for (int i = 0; i < data.length; i+=2) { diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/Vec_MulAddS2I.java b/test/hotspot/jtreg/compiler/loopopts/superword/Vec_MulAddS2I.java index f63692871ad..d595e914ff4 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/Vec_MulAddS2I.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/Vec_MulAddS2I.java @@ -27,47 +27,62 @@ * @bug 8214751 * @summary Test operations in C2 MulAddS2I and MulAddVS2VI nodes. * @library /test/lib - * @requires vm.compiler2.enabled * - * @run main/othervm -XX:LoopUnrollLimit=250 + * @run main/othervm + * -XX:+IgnoreUnrecognizedVMOptions + * -XX:LoopUnrollLimit=250 * -XX:CompileThresholdScaling=0.1 * -XX:+UseSuperWord * -XX:LoopMaxUnroll=2 * compiler.loopopts.superword.Vec_MulAddS2I - * @run main/othervm -XX:LoopUnrollLimit=250 + * @run main/othervm + * -XX:+IgnoreUnrecognizedVMOptions + * -XX:LoopUnrollLimit=250 * -XX:CompileThresholdScaling=0.1 * -XX:-UseSuperWord * -XX:LoopMaxUnroll=2 * compiler.loopopts.superword.Vec_MulAddS2I * - * @run main/othervm -XX:LoopUnrollLimit=250 + * @run main/othervm + * -XX:+IgnoreUnrecognizedVMOptions + * -XX:LoopUnrollLimit=250 * -XX:CompileThresholdScaling=0.1 * -XX:+UseSuperWord * -XX:LoopMaxUnroll=4 * compiler.loopopts.superword.Vec_MulAddS2I - * @run main/othervm -XX:LoopUnrollLimit=250 + * @run main/othervm + * -XX:+IgnoreUnrecognizedVMOptions + * -XX:LoopUnrollLimit=250 * -XX:CompileThresholdScaling=0.1 * -XX:-UseSuperWord * -XX:LoopMaxUnroll=4 * compiler.loopopts.superword.Vec_MulAddS2I * - * @run main/othervm -XX:LoopUnrollLimit=250 + * @run main/othervm + * -XX:+IgnoreUnrecognizedVMOptions + * -XX:LoopUnrollLimit=250 * -XX:CompileThresholdScaling=0.1 * -XX:+UseSuperWord * -XX:LoopMaxUnroll=8 * compiler.loopopts.superword.Vec_MulAddS2I - * @run main/othervm -XX:LoopUnrollLimit=250 + * @run main/othervm + * -XX:+IgnoreUnrecognizedVMOptions + * -XX:LoopUnrollLimit=250 * -XX:CompileThresholdScaling=0.1 * -XX:-UseSuperWord * -XX:LoopMaxUnroll=8 * compiler.loopopts.superword.Vec_MulAddS2I * - * @run main/othervm -XX:LoopUnrollLimit=250 + * @run main/othervm + * -XX:+IgnoreUnrecognizedVMOptions + * -XX:LoopUnrollLimit=250 * -XX:CompileThresholdScaling=0.1 * -XX:+UseSuperWord * -XX:LoopMaxUnroll=16 * compiler.loopopts.superword.Vec_MulAddS2I - * @run main/othervm -XX:LoopUnrollLimit=250 + * @run main/othervm + * -XX:+IgnoreUnrecognizedVMOptions + * -XX:LoopUnrollLimit=250 * -XX:CompileThresholdScaling=0.1 * -XX:-UseSuperWord * -XX:LoopMaxUnroll=16 From 5e09397bf6244c98204180f53a2891604d2843d1 Mon Sep 17 00:00:00 2001 From: Matthias Baesken Date: Mon, 17 Jun 2024 08:06:20 +0000 Subject: [PATCH 29/70] 8334222: exclude containers/cgroup/PlainRead.java Reviewed-by: lucy --- test/hotspot/jtreg/ProblemList.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/test/hotspot/jtreg/ProblemList.txt b/test/hotspot/jtreg/ProblemList.txt index 4391357b703..a4ff429bd00 100644 --- a/test/hotspot/jtreg/ProblemList.txt +++ b/test/hotspot/jtreg/ProblemList.txt @@ -104,6 +104,7 @@ runtime/cds/appcds/customLoader/HelloCustom_JFR.java 8241075 linux-all,windows-x applications/jcstress/copy.java 8229852 linux-all +containers/cgroup/PlainRead.java 8333967,8261242 linux-all containers/docker/TestJcmd.java 8278102 linux-all containers/docker/TestMemoryAwareness.java 8303470 linux-all containers/docker/TestJFREvents.java 8327723 linux-x64 From d751441b76ef41880c77b48372c491f9558f1c68 Mon Sep 17 00:00:00 2001 From: Aleksey Shipilev Date: Mon, 17 Jun 2024 08:23:39 +0000 Subject: [PATCH 30/70] 8330586: GHA: Drop additional gcc/glibc packages installation for x86_32 Reviewed-by: ihse --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index df53a2cd310..067548b9768 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -146,7 +146,7 @@ jobs: apt-architecture: 'i386' # Some multilib libraries do not have proper inter-dependencies, so we have to # install their dependencies manually. - apt-extra-packages: 'libfreetype-dev:i386 libtiff-dev:i386 libcupsimage2-dev:i386 libc6-i386 libgcc-s1:i386 libstdc++6:i386 libffi-dev:i386' + apt-extra-packages: 'libfreetype-dev:i386 libtiff-dev:i386 libcupsimage2-dev:i386 libffi-dev:i386' extra-conf-options: '--with-target-bits=32 --enable-fallback-linker --enable-libffi-bundling' configure-arguments: ${{ github.event.inputs.configure-arguments }} make-arguments: ${{ github.event.inputs.make-arguments }} From 113a2c028dc3b9abb6229d5f0b812b54a9b61011 Mon Sep 17 00:00:00 2001 From: Matthias Baesken Date: Mon, 17 Jun 2024 08:57:57 +0000 Subject: [PATCH 31/70] 8332903: ubsan: opto/output.cpp:1002:18: runtime error: load of value 171, which is not a valid value for type 'bool' Reviewed-by: kvn, mdoerr --- src/hotspot/cpu/ppc/ppc.ad | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hotspot/cpu/ppc/ppc.ad b/src/hotspot/cpu/ppc/ppc.ad index cbe28deb516..fcc24060a3a 100644 --- a/src/hotspot/cpu/ppc/ppc.ad +++ b/src/hotspot/cpu/ppc/ppc.ad @@ -3430,6 +3430,7 @@ encode %{ call->_in_rms = _in_rms; call->_nesting = _nesting; call->_override_symbolic_info = _override_symbolic_info; + call->_arg_escape = _arg_escape; // New call needs all inputs of old call. // Req... From 0d1080d194c596dc74dd8b173b18b14cc71e1b52 Mon Sep 17 00:00:00 2001 From: Martin Doerr Date: Mon, 17 Jun 2024 09:30:48 +0000 Subject: [PATCH 32/70] 8331117: [PPC64] secondary_super_cache does not scale well Reviewed-by: rrich, amitkumar --- src/hotspot/cpu/ppc/macroAssembler_ppc.cpp | 289 +++++++++++++++++++++ src/hotspot/cpu/ppc/macroAssembler_ppc.hpp | 27 ++ src/hotspot/cpu/ppc/ppc.ad | 47 ++++ src/hotspot/cpu/ppc/stubGenerator_ppc.cpp | 50 ++++ src/hotspot/cpu/ppc/vm_version_ppc.cpp | 7 + src/hotspot/cpu/ppc/vm_version_ppc.hpp | 1 + 6 files changed, 421 insertions(+) diff --git a/src/hotspot/cpu/ppc/macroAssembler_ppc.cpp b/src/hotspot/cpu/ppc/macroAssembler_ppc.cpp index 6aaa7f3c057..0527cb306b2 100644 --- a/src/hotspot/cpu/ppc/macroAssembler_ppc.cpp +++ b/src/hotspot/cpu/ppc/macroAssembler_ppc.cpp @@ -2130,6 +2130,295 @@ void MacroAssembler::check_klass_subtype(Register sub_klass, bind(L_failure); // Fallthru if not successful. } +// scans count pointer sized words at [addr] for occurrence of value, +// generic (count must be >0) +// iff found: CR0 eq, scratch == 0 +void MacroAssembler::repne_scan(Register addr, Register value, Register count, Register scratch) { + Label Lloop, Lexit; + +#ifdef ASSERT + { + Label ok; + cmpdi(CCR0, count, 0); + bgt(CCR0, ok); + stop("count must be positive"); + bind(ok); + } +#endif + + mtctr(count); + + bind(Lloop); + ld(scratch, 0 , addr); + xor_(scratch, scratch, value); + beq(CCR0, Lexit); + addi(addr, addr, wordSize); + bdnz(Lloop); + + bind(Lexit); +} + +// Ensure that the inline code and the stub are using the same registers. +#define LOOKUP_SECONDARY_SUPERS_TABLE_REGISTERS \ +do { \ + assert(r_super_klass == R4_ARG2 && \ + r_array_base == R3_ARG1 && \ + r_array_length == R7_ARG5 && \ + (r_array_index == R6_ARG4 || r_array_index == noreg) && \ + (r_sub_klass == R5_ARG3 || r_sub_klass == noreg) && \ + (r_bitmap == R11_scratch1 || r_bitmap == noreg) && \ + (result == R8_ARG6 || result == noreg), "registers must match ppc64.ad"); \ +} while(0) + +// Return true: we succeeded in generating this code +void MacroAssembler::lookup_secondary_supers_table(Register r_sub_klass, + Register r_super_klass, + Register temp1, + Register temp2, + Register temp3, + Register temp4, + Register result, + u1 super_klass_slot) { + assert_different_registers(r_sub_klass, r_super_klass, temp1, temp2, temp3, temp4, result); + + Label L_done; + + BLOCK_COMMENT("lookup_secondary_supers_table {"); + + const Register + r_array_base = temp1, + r_array_length = temp2, + r_array_index = temp3, + r_bitmap = temp4; + + LOOKUP_SECONDARY_SUPERS_TABLE_REGISTERS; + + ld(r_bitmap, in_bytes(Klass::bitmap_offset()), r_sub_klass); + + // First check the bitmap to see if super_klass might be present. If + // the bit is zero, we are certain that super_klass is not one of + // the secondary supers. + u1 bit = super_klass_slot; + int shift_count = Klass::SECONDARY_SUPERS_TABLE_MASK - bit; + + // if (shift_count == 0) this is used for comparing with 0: + sldi_(r_array_index, r_bitmap, shift_count); + + li(result, 1); // failure + // We test the MSB of r_array_index, i.e. its sign bit + bge(CCR0, L_done); + + // We will consult the secondary-super array. + ld(r_array_base, in_bytes(Klass::secondary_supers_offset()), r_sub_klass); + + // The value i in r_array_index is >= 1, so even though r_array_base + // points to the length, we don't need to adjust it to point to the + // data. + assert(Array::base_offset_in_bytes() == wordSize, "Adjust this code"); + + // Get the first array index that can contain super_klass. + if (bit != 0) { + popcntd(r_array_index, r_array_index); + // NB! r_array_index is off by 1. It is compensated by keeping r_array_base off by 1 word. + sldi(r_array_index, r_array_index, LogBytesPerWord); // scale + ldx(result, r_array_base, r_array_index); + } else { + // Actually use index 0, but r_array_base and r_array_index are off by 1 word + // such that the sum is precise. + ld(result, BytesPerWord, r_array_base); + li(r_array_index, BytesPerWord); // for slow path (scaled) + } + + xor_(result, result, r_super_klass); + beq(CCR0, L_done); // Found a match (result == 0) + + // Is there another entry to check? Consult the bitmap. + testbitdi(CCR0, /* temp */ r_array_length, r_bitmap, (bit + 1) & Klass::SECONDARY_SUPERS_TABLE_MASK); + beq(CCR0, L_done); // (result != 0) + + // Linear probe. Rotate the bitmap so that the next bit to test is + // in Bit 2 for the look-ahead check in the slow path. + if (bit != 0) { + rldicl(r_bitmap, r_bitmap, 64 - bit, 0); + } + + // Calls into the stub generated by lookup_secondary_supers_table_slow_path. + // Arguments: r_super_klass, r_array_base, r_array_index, r_bitmap. + // Kills: r_array_length. + // Returns: result. + address stub = StubRoutines::lookup_secondary_supers_table_slow_path_stub(); + Register r_stub_addr = r_array_length; + add_const_optimized(r_stub_addr, R29_TOC, MacroAssembler::offset_to_global_toc(stub), R0); + mtctr(r_stub_addr); + bctrl(); + + bind(L_done); + BLOCK_COMMENT("} lookup_secondary_supers_table"); + + if (VerifySecondarySupers) { + verify_secondary_supers_table(r_sub_klass, r_super_klass, result, + temp1, temp2, temp3); + } +} + +// Called by code generated by check_klass_subtype_slow_path +// above. This is called when there is a collision in the hashed +// lookup in the secondary supers array. +void MacroAssembler::lookup_secondary_supers_table_slow_path(Register r_super_klass, + Register r_array_base, + Register r_array_index, + Register r_bitmap, + Register result, + Register temp1) { + assert_different_registers(r_super_klass, r_array_base, r_array_index, r_bitmap, result, temp1); + + const Register + r_array_length = temp1, + r_sub_klass = noreg; + + LOOKUP_SECONDARY_SUPERS_TABLE_REGISTERS; + + Label L_done; + + // Load the array length. + lwa(r_array_length, Array::length_offset_in_bytes(), r_array_base); + // And adjust the array base to point to the data. + // NB! Effectively increments current slot index by 1. + assert(Array::base_offset_in_bytes() == wordSize, ""); + addi(r_array_base, r_array_base, Array::base_offset_in_bytes()); + + // Linear probe + Label L_huge; + + // The bitmap is full to bursting. + // Implicit invariant: BITMAP_FULL implies (length > 0) + assert(Klass::SECONDARY_SUPERS_BITMAP_FULL == ~uintx(0), ""); + cmpdi(CCR0, r_bitmap, -1); + beq(CCR0, L_huge); + + // NB! Our caller has checked bits 0 and 1 in the bitmap. The + // current slot (at secondary_supers[r_array_index]) has not yet + // been inspected, and r_array_index may be out of bounds if we + // wrapped around the end of the array. + + { // This is conventional linear probing, but instead of terminating + // when a null entry is found in the table, we maintain a bitmap + // in which a 0 indicates missing entries. + // The check above guarantees there are 0s in the bitmap, so the loop + // eventually terminates. + +#ifdef ASSERT + { + // We should only reach here after having found a bit in the bitmap. + // Invariant: array_length == popcount(bitmap) + Label ok; + cmpdi(CCR0, r_array_length, 0); + bgt(CCR0, ok); + stop("array_length must be positive"); + bind(ok); + } +#endif + + // Compute limit in r_array_length + addi(r_array_length, r_array_length, -1); + sldi(r_array_length, r_array_length, LogBytesPerWord); + + Label L_loop; + bind(L_loop); + + // Check for wraparound. + cmpd(CCR0, r_array_index, r_array_length); + isel_0(r_array_index, CCR0, Assembler::greater); + + ldx(result, r_array_base, r_array_index); + xor_(result, result, r_super_klass); + beq(CCR0, L_done); // success (result == 0) + + // look-ahead check (Bit 2); result is non-zero + testbitdi(CCR0, R0, r_bitmap, 2); + beq(CCR0, L_done); // fail (result != 0) + + rldicl(r_bitmap, r_bitmap, 64 - 1, 0); + addi(r_array_index, r_array_index, BytesPerWord); + b(L_loop); + } + + { // Degenerate case: more than 64 secondary supers. + // FIXME: We could do something smarter here, maybe a vectorized + // comparison or a binary search, but is that worth any added + // complexity? + bind(L_huge); + repne_scan(r_array_base, r_super_klass, r_array_length, result); + } + + bind(L_done); +} + +// Make sure that the hashed lookup and a linear scan agree. +void MacroAssembler::verify_secondary_supers_table(Register r_sub_klass, + Register r_super_klass, + Register result, + Register temp1, + Register temp2, + Register temp3) { + assert_different_registers(r_sub_klass, r_super_klass, result, temp1, temp2, temp3); + + const Register + r_array_base = temp1, + r_array_length = temp2, + r_array_index = temp3, + r_bitmap = noreg; // unused + + LOOKUP_SECONDARY_SUPERS_TABLE_REGISTERS; + + BLOCK_COMMENT("verify_secondary_supers_table {"); + + Label passed, failure; + + // We will consult the secondary-super array. + ld(r_array_base, in_bytes(Klass::secondary_supers_offset()), r_sub_klass); + // Load the array length. + lwa(r_array_length, Array::length_offset_in_bytes(), r_array_base); + // And adjust the array base to point to the data. + addi(r_array_base, r_array_base, Array::base_offset_in_bytes()); + + // convert !=0 to 1 + neg(R0, result); + orr(result, result, R0); + srdi(result, result, 63); + + const Register linear_result = r_array_index; // reuse + li(linear_result, 1); + cmpdi(CCR0, r_array_length, 0); + ble(CCR0, failure); + repne_scan(r_array_base, r_super_klass, r_array_length, linear_result); + bind(failure); + + // convert !=0 to 1 + neg(R0, linear_result); + orr(linear_result, linear_result, R0); + srdi(linear_result, linear_result, 63); + + cmpd(CCR0, result, linear_result); + beq(CCR0, passed); + + assert_different_registers(R3_ARG1, r_sub_klass, linear_result, result); + mr_if_needed(R3_ARG1, r_super_klass); + assert_different_registers(R4_ARG2, linear_result, result); + mr_if_needed(R4_ARG2, r_sub_klass); + assert_different_registers(R5_ARG3, result); + neg(R5_ARG3, linear_result); + neg(R6_ARG4, result); + const char* msg = "mismatch"; + load_const_optimized(R7_ARG5, (intptr_t)msg, R0); + call_VM_leaf(CAST_FROM_FN_PTR(address, Klass::on_secondary_supers_verification_failure)); + should_not_reach_here(); + + bind(passed); + + BLOCK_COMMENT("} verify_secondary_supers_table"); +} + void MacroAssembler::clinit_barrier(Register klass, Register thread, Label* L_fast_path, Label* L_slow_path) { assert(L_fast_path != nullptr || L_slow_path != nullptr, "at least one is required"); diff --git a/src/hotspot/cpu/ppc/macroAssembler_ppc.hpp b/src/hotspot/cpu/ppc/macroAssembler_ppc.hpp index 4444690e3a3..4f2ff708a46 100644 --- a/src/hotspot/cpu/ppc/macroAssembler_ppc.hpp +++ b/src/hotspot/cpu/ppc/macroAssembler_ppc.hpp @@ -604,6 +604,33 @@ class MacroAssembler: public Assembler { Register temp2_reg, Label& L_success); + void repne_scan(Register addr, Register value, Register count, Register scratch); + + // As above, but with a constant super_klass. + // The result is in Register result, not the condition codes. + void lookup_secondary_supers_table(Register r_sub_klass, + Register r_super_klass, + Register temp1, + Register temp2, + Register temp3, + Register temp4, + Register result, + u1 super_klass_slot); + + void verify_secondary_supers_table(Register r_sub_klass, + Register r_super_klass, + Register result, + Register temp1, + Register temp2, + Register temp3); + + void lookup_secondary_supers_table_slow_path(Register r_super_klass, + Register r_array_base, + Register r_array_index, + Register r_bitmap, + Register result, + Register temp1); + void clinit_barrier(Register klass, Register thread, Label* L_fast_path = nullptr, diff --git a/src/hotspot/cpu/ppc/ppc.ad b/src/hotspot/cpu/ppc/ppc.ad index fcc24060a3a..8917b344e54 100644 --- a/src/hotspot/cpu/ppc/ppc.ad +++ b/src/hotspot/cpu/ppc/ppc.ad @@ -641,6 +641,8 @@ reg_class rarg1_bits64_reg(R3_H, R3); reg_class rarg2_bits64_reg(R4_H, R4); reg_class rarg3_bits64_reg(R5_H, R5); reg_class rarg4_bits64_reg(R6_H, R6); +reg_class rarg5_bits64_reg(R7_H, R7); +reg_class rarg6_bits64_reg(R8_H, R8); // Thread register, 'written' by tlsLoadP, see there. reg_class thread_bits64_reg(R16_H, R16); @@ -4354,6 +4356,8 @@ operand iRegPsrc() %{ match(rarg2RegP); match(rarg3RegP); match(rarg4RegP); + match(rarg5RegP); + match(rarg6RegP); match(threadRegP); format %{ %} interface(REG_INTER); @@ -4409,6 +4413,20 @@ operand rarg4RegP() %{ interface(REG_INTER); %} +operand rarg5RegP() %{ + constraint(ALLOC_IN_RC(rarg5_bits64_reg)); + match(iRegPdst); + format %{ %} + interface(REG_INTER); +%} + +operand rarg6RegP() %{ + constraint(ALLOC_IN_RC(rarg6_bits64_reg)); + match(iRegPdst); + format %{ %} + interface(REG_INTER); +%} + operand iRegNsrc() %{ constraint(ALLOC_IN_RC(bits32_reg_ro)); match(RegN); @@ -12024,6 +12042,35 @@ instruct partialSubtypeCheck(iRegPdst result, iRegP_N2P subklass, iRegP_N2P supe ins_pipe(pipe_class_default); %} +instruct partialSubtypeCheckConstSuper(rarg3RegP sub, rarg2RegP super_reg, immP super_con, rarg6RegP result, + rarg1RegP tempR1, rarg5RegP tempR2, rarg4RegP tempR3, rscratch1RegP tempR4, + flagsRegCR0 cr0, regCTR ctr) +%{ + match(Set result (PartialSubtypeCheck sub (Binary super_reg super_con))); + predicate(UseSecondarySupersTable); + effect(KILL cr0, KILL ctr, TEMP tempR1, TEMP tempR2, TEMP tempR3, TEMP tempR4); + + ins_cost(DEFAULT_COST*8); // smaller than the other version + format %{ "partialSubtypeCheck $result, $sub, $super_reg" %} + + ins_encode %{ + u1 super_klass_slot = ((Klass*)$super_con$$constant)->hash_slot(); + if (InlineSecondarySupersTest) { + __ lookup_secondary_supers_table($sub$$Register, $super_reg$$Register, + $tempR1$$Register, $tempR2$$Register, $tempR3$$Register, $tempR4$$Register, + $result$$Register, super_klass_slot); + } else { + address stub = StubRoutines::lookup_secondary_supers_table_stub(super_klass_slot); + Register r_stub_addr = $tempR1$$Register; + __ add_const_optimized(r_stub_addr, R29_TOC, MacroAssembler::offset_to_global_toc(stub), R0); + __ mtctr(r_stub_addr); + __ bctrl(); + } + %} + + ins_pipe(pipe_class_memory); +%} + // inlined locking and unlocking instruct cmpFastLock(flagsRegCR0 crx, iRegPdst oop, iRegPdst box, iRegPdst tmp1, iRegPdst tmp2) %{ diff --git a/src/hotspot/cpu/ppc/stubGenerator_ppc.cpp b/src/hotspot/cpu/ppc/stubGenerator_ppc.cpp index ee7aa27a630..8da7cf7e791 100644 --- a/src/hotspot/cpu/ppc/stubGenerator_ppc.cpp +++ b/src/hotspot/cpu/ppc/stubGenerator_ppc.cpp @@ -4531,6 +4531,46 @@ class StubGenerator: public StubCodeGenerator { #endif // VM_LITTLE_ENDIAN +address generate_lookup_secondary_supers_table_stub(u1 super_klass_index) { + StubCodeMark mark(this, "StubRoutines", "lookup_secondary_supers_table"); + + address start = __ pc(); + const Register + r_super_klass = R4_ARG2, + r_array_base = R3_ARG1, + r_array_length = R7_ARG5, + r_array_index = R6_ARG4, + r_sub_klass = R5_ARG3, + r_bitmap = R11_scratch1, + result = R8_ARG6; + + __ lookup_secondary_supers_table(r_sub_klass, r_super_klass, + r_array_base, r_array_length, r_array_index, + r_bitmap, result, super_klass_index); + __ blr(); + + return start; + } + + // Slow path implementation for UseSecondarySupersTable. + address generate_lookup_secondary_supers_table_slow_path_stub() { + StubCodeMark mark(this, "StubRoutines", "lookup_secondary_supers_table_slow_path"); + + address start = __ pc(); + const Register + r_super_klass = R4_ARG2, + r_array_base = R3_ARG1, + temp1 = R7_ARG5, + r_array_index = R6_ARG4, + r_bitmap = R11_scratch1, + result = R8_ARG6; + + __ lookup_secondary_supers_table_slow_path(r_super_klass, r_array_base, r_array_index, r_bitmap, result, temp1); + __ blr(); + + return start; + } + address generate_cont_thaw(const char* label, Continuation::thaw_kind kind) { if (!Continuations::enabled()) return nullptr; @@ -4807,6 +4847,16 @@ class StubGenerator: public StubCodeGenerator { // arraycopy stubs used by compilers generate_arraycopy_stubs(); + if (UseSecondarySupersTable) { + StubRoutines::_lookup_secondary_supers_table_slow_path_stub = generate_lookup_secondary_supers_table_slow_path_stub(); + if (!InlineSecondarySupersTest) { + for (int slot = 0; slot < Klass::SECONDARY_SUPERS_TABLE_SIZE; slot++) { + StubRoutines::_lookup_secondary_supers_table_stubs[slot] + = generate_lookup_secondary_supers_table_stub(slot); + } + } + } + StubRoutines::_upcall_stub_exception_handler = generate_upcall_stub_exception_handler(); } diff --git a/src/hotspot/cpu/ppc/vm_version_ppc.cpp b/src/hotspot/cpu/ppc/vm_version_ppc.cpp index 5a9d035be60..20578ed3b8b 100644 --- a/src/hotspot/cpu/ppc/vm_version_ppc.cpp +++ b/src/hotspot/cpu/ppc/vm_version_ppc.cpp @@ -340,6 +340,13 @@ void VM_Version::initialize() { FLAG_SET_DEFAULT(UseSHA, false); } + if (UseSecondarySupersTable && PowerArchitecturePPC64 < 7) { + if (!FLAG_IS_DEFAULT(UseSecondarySupersTable)) { + warning("UseSecondarySupersTable requires Power7 or later."); + } + FLAG_SET_DEFAULT(UseSecondarySupersTable, false); + } + #ifdef COMPILER2 if (FLAG_IS_DEFAULT(UseSquareToLenIntrinsic)) { UseSquareToLenIntrinsic = true; diff --git a/src/hotspot/cpu/ppc/vm_version_ppc.hpp b/src/hotspot/cpu/ppc/vm_version_ppc.hpp index 0efde131277..9d8e4b88ee2 100644 --- a/src/hotspot/cpu/ppc/vm_version_ppc.hpp +++ b/src/hotspot/cpu/ppc/vm_version_ppc.hpp @@ -95,6 +95,7 @@ class VM_Version: public Abstract_VM_Version { static bool supports_fast_class_init_checks() { return true; } constexpr static bool supports_stack_watermark_barrier() { return true; } constexpr static bool supports_recursive_lightweight_locking() { return true; } + constexpr static bool supports_secondary_supers_table() { return true; } static bool is_determine_features_test_running() { return _is_determine_features_test_running; } // CPU instruction support From ef7923e1277ce86c6e5331871f1031c28bf82e31 Mon Sep 17 00:00:00 2001 From: Gui Cao Date: Mon, 17 Jun 2024 11:35:41 +0000 Subject: [PATCH 33/70] 8334078: RISC-V: TestIntVect.java fails after JDK-8332153 when running without RVV Reviewed-by: fyang, mli --- .../linux_riscv/vm_version_linux_riscv.cpp | 5 +- .../compiler/c2/cr7200264/TestIntVect.java | 117 +++--------------- .../irTests/TestVectorizeURShiftSubword.java | 2 +- .../intrinsics/TestBitShuffleOpers.java | 2 +- .../intrinsics/chacha/TestChaCha20.java | 20 ++- .../ir_framework/test/IREncodingPrinter.java | 2 +- .../vectorapi/reshape/TestVectorCastRVV.java | 2 +- .../vectorization/TestSignumVector.java | 2 +- .../runner/ArrayShiftOpTest.java | 35 ++---- .../vectorization/runner/BasicByteOpTest.java | 15 +-- .../vectorization/runner/BasicCharOpTest.java | 15 +-- .../vectorization/runner/BasicIntOpTest.java | 15 +-- .../vectorization/runner/BasicLongOpTest.java | 15 +-- .../runner/BasicShortOpTest.java | 15 +-- 14 files changed, 58 insertions(+), 204 deletions(-) diff --git a/src/hotspot/os_cpu/linux_riscv/vm_version_linux_riscv.cpp b/src/hotspot/os_cpu/linux_riscv/vm_version_linux_riscv.cpp index f74ed8c8f81..3f9f26b525b 100644 --- a/src/hotspot/os_cpu/linux_riscv/vm_version_linux_riscv.cpp +++ b/src/hotspot/os_cpu/linux_riscv/vm_version_linux_riscv.cpp @@ -131,7 +131,10 @@ void VM_Version::setup_cpu_available_features() { if (_feature_list[i]->feature_string()) { const char* tmp = _feature_list[i]->pretty(); if (strlen(tmp) == 1) { - strcat(buf, " "); + // Feature string is expected to be in multi-character form + // like rvc, rvv, etc so that it will be easier to specify + // target feature string in tests. + strcat(buf, " rv"); strcat(buf, tmp); } else { // Feature string is expected to be lower case. diff --git a/test/hotspot/jtreg/compiler/c2/cr7200264/TestIntVect.java b/test/hotspot/jtreg/compiler/c2/cr7200264/TestIntVect.java index 17556896f26..457e33667b2 100644 --- a/test/hotspot/jtreg/compiler/c2/cr7200264/TestIntVect.java +++ b/test/hotspot/jtreg/compiler/c2/cr7200264/TestIntVect.java @@ -480,10 +480,7 @@ void test_suba(int[] a0, int[] a1, int[] a2) { @Test @IR(counts = { IRNode.SUB_VI, "> 0", IRNode.LSHIFT_VI, "> 0" }, - applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) - @IR(counts = { IRNode.SUB_VI, "> 0", IRNode.LSHIFT_VI, "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true", "rvv", "true"}) void test_mulc(int[] a0, int[] a1) { for (int i = 0; i < a0.length; i+=1) { a0[i] = (int)(a1[i]*VALUE); @@ -492,10 +489,7 @@ void test_mulc(int[] a0, int[] a1) { @Test @IR(counts = { IRNode.SUB_VI, "> 0", IRNode.LSHIFT_VI, "> 0" }, - applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) - @IR(counts = { IRNode.SUB_VI, "> 0", IRNode.LSHIFT_VI, "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true", "rvv", "true"}) void test_mulc_n(int[] a0, int[] a1) { for (int i = 0; i < a0.length; i+=1) { a0[i] = (int)(a1[i]*(-VALUE)); @@ -527,15 +521,7 @@ void test_mula(int[] a0, int[] a1, int[] a2) { IRNode.VECTOR_SIZE + "min(max_int, max_long)", "> 0", IRNode.SUB_VI, IRNode.VECTOR_SIZE + "min(max_int, max_long)", "> 0" }, - applyIfCPUFeatureOr = {"avx2", "true", "sve", "true"}) - @IR(counts = { IRNode.ADD_VI, - IRNode.VECTOR_SIZE + "min(max_int, max_long)", "> 0", - IRNode.RSHIFT_VI, - IRNode.VECTOR_SIZE + "min(max_int, max_long)", "> 0", - IRNode.SUB_VI, - IRNode.VECTOR_SIZE + "min(max_int, max_long)", "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"avx2", "true", "sve", "true", "rvv", "true"}) // Not vectorized: On aarch64, vectorization for this example results in // MulVL nodes, which asimd does not support. @IR(counts = { IRNode.LOAD_VECTOR_I, "= 0", @@ -555,15 +541,7 @@ void test_divc(int[] a0, int[] a1) { IRNode.VECTOR_SIZE + "min(max_int, max_long)", "> 0", IRNode.SUB_VI, IRNode.VECTOR_SIZE + "min(max_int, max_long)", "> 0" }, - applyIfCPUFeatureOr = {"avx2", "true", "sve", "true"}) - @IR(counts = { IRNode.ADD_VI, - IRNode.VECTOR_SIZE + "min(max_int, max_long)", "> 0", - IRNode.RSHIFT_VI, - IRNode.VECTOR_SIZE + "min(max_int, max_long)", "> 0", - IRNode.SUB_VI, - IRNode.VECTOR_SIZE + "min(max_int, max_long)", "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"avx2", "true", "sve", "true", "rvv", "true"}) // Not vectorized: On aarch64, vectorization for this example results in // MulVL nodes, which asimd does not support. @IR(counts = { IRNode.LOAD_VECTOR_I, "= 0", @@ -683,10 +661,7 @@ void test_xora(int[] a0, int[] a1, int[] a2) { @Test @IR(counts = { IRNode.LSHIFT_VI, "> 0" }, - applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) - @IR(counts = { IRNode.LSHIFT_VI, "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true", "rvv", "true"}) void test_sllc(int[] a0, int[] a1) { for (int i = 0; i < a0.length; i+=1) { a0[i] = (int)(a1[i]< 0" }, - applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) - @IR(counts = { IRNode.LSHIFT_VI, "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true", "rvv", "true"}) void test_sllc_n(int[] a0, int[] a1) { for (int i = 0; i < a0.length; i+=1) { a0[i] = (int)(a1[i]<<(-VALUE)); @@ -710,12 +682,7 @@ void test_sllc_n(int[] a0, int[] a1) { @IR(counts = { IRNode.LSHIFT_VI, "= 0", IRNode.LOAD_VECTOR_I, "> 0", IRNode.STORE_VECTOR, "> 0" }, - applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) - @IR(counts = { IRNode.LSHIFT_VI, "= 0", - IRNode.LOAD_VECTOR_I, "> 0", - IRNode.STORE_VECTOR, "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true", "rvv", "true"}) void test_sllc_o(int[] a0, int[] a1) { for (int i = 0; i < a0.length; i+=1) { a0[i] = (int)(a1[i]< 0", IRNode.STORE_VECTOR, "> 0" }, - applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) - @IR(counts = { IRNode.LSHIFT_VI, "= 0", - IRNode.LOAD_VECTOR_I, "> 0", - IRNode.STORE_VECTOR, "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true", "rvv", "true"}) void test_sllc_on(int[] a0, int[] a1) { for (int i = 0; i < a0.length; i+=1) { a0[i] = (int)(a1[i]<<(-SHIFT)); @@ -741,10 +703,7 @@ void test_sllc_on(int[] a0, int[] a1) { @Test @IR(counts = { IRNode.LSHIFT_VI, "> 0" }, - applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) - @IR(counts = { IRNode.LSHIFT_VI, "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true", "rvv", "true"}) void test_sllv(int[] a0, int[] a1, int b) { for (int i = 0; i < a0.length; i+=1) { a0[i] = (int)(a1[i]< 0" }, - applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) - @IR(counts = { IRNode.URSHIFT_VI, "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true", "rvv", "true"}) void test_srlc(int[] a0, int[] a1) { for (int i = 0; i < a0.length; i+=1) { a0[i] = (int)(a1[i]>>>VALUE); @@ -765,10 +721,7 @@ void test_srlc(int[] a0, int[] a1) { @Test @IR(counts = { IRNode.URSHIFT_VI, "> 0" }, - applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) - @IR(counts = { IRNode.URSHIFT_VI, "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true", "rvv", "true"}) void test_srlc_n(int[] a0, int[] a1) { for (int i = 0; i < a0.length; i+=1) { a0[i] = (int)(a1[i]>>>(-VALUE)); @@ -780,12 +733,7 @@ void test_srlc_n(int[] a0, int[] a1) { @IR(counts = { IRNode.URSHIFT_VI, "= 0", IRNode.LOAD_VECTOR_I, "> 0", IRNode.STORE_VECTOR, "> 0" }, - applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) - @IR(counts = { IRNode.URSHIFT_VI, "= 0", - IRNode.LOAD_VECTOR_I, "> 0", - IRNode.STORE_VECTOR, "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true", "rvv", "true"}) void test_srlc_o(int[] a0, int[] a1) { for (int i = 0; i < a0.length; i+=1) { a0[i] = (int)(a1[i]>>>SHIFT); @@ -797,12 +745,7 @@ void test_srlc_o(int[] a0, int[] a1) { @IR(counts = { IRNode.URSHIFT_VI, "= 0", IRNode.LOAD_VECTOR_I, "> 0", IRNode.STORE_VECTOR, "> 0" }, - applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) - @IR(counts = { IRNode.URSHIFT_VI, "= 0", - IRNode.LOAD_VECTOR_I, "> 0", - IRNode.STORE_VECTOR, "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true", "rvv", "true"}) void test_srlc_on(int[] a0, int[] a1) { for (int i = 0; i < a0.length; i+=1) { a0[i] = (int)(a1[i]>>>(-SHIFT)); @@ -811,10 +754,7 @@ void test_srlc_on(int[] a0, int[] a1) { @Test @IR(counts = { IRNode.URSHIFT_VI, "> 0" }, - applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) - @IR(counts = { IRNode.URSHIFT_VI, "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true", "rvv", "true"}) void test_srlv(int[] a0, int[] a1, int b) { for (int i = 0; i < a0.length; i+=1) { a0[i] = (int)(a1[i]>>>b); @@ -823,10 +763,7 @@ void test_srlv(int[] a0, int[] a1, int b) { @Test @IR(counts = { IRNode.RSHIFT_VI, "> 0" }, - applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) - @IR(counts = { IRNode.RSHIFT_VI, "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true", "rvv", "true"}) void test_srac(int[] a0, int[] a1) { for (int i = 0; i < a0.length; i+=1) { a0[i] = (int)(a1[i]>>VALUE); @@ -835,10 +772,7 @@ void test_srac(int[] a0, int[] a1) { @Test @IR(counts = { IRNode.RSHIFT_VI, "> 0" }, - applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) - @IR(counts = { IRNode.RSHIFT_VI, "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true", "rvv", "true"}) void test_srac_n(int[] a0, int[] a1) { for (int i = 0; i < a0.length; i+=1) { a0[i] = (int)(a1[i]>>(-VALUE)); @@ -850,12 +784,7 @@ void test_srac_n(int[] a0, int[] a1) { @IR(counts = { IRNode.RSHIFT_VI, "= 0", IRNode.LOAD_VECTOR_I, "> 0", IRNode.STORE_VECTOR, "> 0" }, - applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) - @IR(counts = { IRNode.RSHIFT_VI, "= 0", - IRNode.LOAD_VECTOR_I, "> 0", - IRNode.STORE_VECTOR, "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true", "rvv", "true"}) void test_srac_o(int[] a0, int[] a1) { for (int i = 0; i < a0.length; i+=1) { a0[i] = (int)(a1[i]>>SHIFT); @@ -867,12 +796,7 @@ void test_srac_o(int[] a0, int[] a1) { @IR(counts = { IRNode.RSHIFT_VI, "= 0", IRNode.LOAD_VECTOR_I, "> 0", IRNode.STORE_VECTOR, "> 0" }, - applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) - @IR(counts = { IRNode.RSHIFT_VI, "= 0", - IRNode.LOAD_VECTOR_I, "> 0", - IRNode.STORE_VECTOR, "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true", "rvv", "true"}) void test_srac_on(int[] a0, int[] a1) { for (int i = 0; i < a0.length; i+=1) { a0[i] = (int)(a1[i]>>(-SHIFT)); @@ -881,10 +805,7 @@ void test_srac_on(int[] a0, int[] a1) { @Test @IR(counts = { IRNode.RSHIFT_VI, "> 0" }, - applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true"}) - @IR(counts = { IRNode.RSHIFT_VI, "> 0" }, - applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}) + applyIfCPUFeatureOr = {"sse2", "true", "asimd", "true", "rvv", "true"}) void test_srav(int[] a0, int[] a1, int b) { for (int i = 0; i < a0.length; i+=1) { a0[i] = (int)(a1[i]>>b); diff --git a/test/hotspot/jtreg/compiler/c2/irTests/TestVectorizeURShiftSubword.java b/test/hotspot/jtreg/compiler/c2/irTests/TestVectorizeURShiftSubword.java index f477a08f717..9896a8b906e 100644 --- a/test/hotspot/jtreg/compiler/c2/irTests/TestVectorizeURShiftSubword.java +++ b/test/hotspot/jtreg/compiler/c2/irTests/TestVectorizeURShiftSubword.java @@ -35,7 +35,7 @@ * @key randomness * @summary Auto-vectorization enhancement for unsigned shift right on signed subword types * @requires ((os.arch=="amd64" | os.arch=="x86_64") & (vm.opt.UseSSE == "null" | vm.opt.UseSSE > 3)) | os.arch=="aarch64" | - * (os.arch == "riscv64" & vm.cpu.features ~= ".*v,.*") + * (os.arch == "riscv64" & vm.cpu.features ~= ".*rvv.*") * @library /test/lib / * @run driver compiler.c2.irTests.TestVectorizeURShiftSubword */ diff --git a/test/hotspot/jtreg/compiler/intrinsics/TestBitShuffleOpers.java b/test/hotspot/jtreg/compiler/intrinsics/TestBitShuffleOpers.java index 9a7e0c6b9f2..064ffeb41fb 100644 --- a/test/hotspot/jtreg/compiler/intrinsics/TestBitShuffleOpers.java +++ b/test/hotspot/jtreg/compiler/intrinsics/TestBitShuffleOpers.java @@ -31,7 +31,7 @@ * (vm.cpu.features ~= ".*bmi2.*" & vm.cpu.features ~= ".*bmi1.*" & * vm.cpu.features ~= ".*sse2.*")) | * (os.arch=="aarch64" & vm.cpu.features ~= ".*svebitperm.*") | - * (os.arch=="riscv64" & vm.cpu.features ~= ".*v,.*")) + * (os.arch=="riscv64" & vm.cpu.features ~= ".*rvv.*")) * @library /test/lib / * @run driver compiler.intrinsics.TestBitShuffleOpers */ diff --git a/test/hotspot/jtreg/compiler/intrinsics/chacha/TestChaCha20.java b/test/hotspot/jtreg/compiler/intrinsics/chacha/TestChaCha20.java index 55f8375332d..448d594b6aa 100644 --- a/test/hotspot/jtreg/compiler/intrinsics/chacha/TestChaCha20.java +++ b/test/hotspot/jtreg/compiler/intrinsics/chacha/TestChaCha20.java @@ -38,7 +38,7 @@ * @library /test/lib * @requires (vm.cpu.features ~= ".*avx512.*" | vm.cpu.features ~= ".*avx2.*" | vm.cpu.features ~= ".*avx.*") | * (os.arch=="aarch64" & vm.cpu.features ~= ".*simd.*") | - * (os.arch == "riscv64" & vm.cpu.features ~= ".*v,.*") + * (os.arch == "riscv64" & vm.cpu.features ~= ".*rvv.*") * @build compiler.intrinsics.chacha.ExerciseChaCha20 * jdk.test.whitebox.WhiteBox * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox @@ -60,13 +60,9 @@ private static List mix(List o, String... mix) { return n; } - private static boolean containsFuzzy(List list, String sub, Boolean matchExactly) { + private static boolean containsFuzzy(List list, String sub) { for (String s : list) { - if (matchExactly) { - if (s.equals(sub)) return true; - } else { - if (s.contains(sub)) return true; - } + if (s.contains(sub)) return true; } return false; } @@ -86,27 +82,27 @@ public static void main(String... args) throws Exception { } // Otherwise, select the tests that make sense on current platform. - if (containsFuzzy(cpuFeatures, "avx512", false)) { + if (containsFuzzy(cpuFeatures, "avx512")) { System.out.println("Setting up AVX512 worker"); configs.add(List.of("-XX:UseAVX=3")); } - if (containsFuzzy(cpuFeatures, "avx2", false)) { + if (containsFuzzy(cpuFeatures, "avx2")) { System.out.println("Setting up AVX2 worker"); configs.add(List.of("-XX:UseAVX=2")); } - if (containsFuzzy(cpuFeatures, "avx", false)) { + if (containsFuzzy(cpuFeatures, "avx")) { System.out.println("Setting up AVX worker"); configs.add(List.of("-XX:UseAVX=1")); } } else if (Platform.isAArch64()) { // AArch64 intrinsics require the advanced simd instructions - if (containsFuzzy(cpuFeatures, "simd", false)) { + if (containsFuzzy(cpuFeatures, "simd")) { System.out.println("Setting up ASIMD worker"); configs.add(new ArrayList()); } } else if (Platform.isRISCV64()) { // Riscv64 intrinsics require the vector instructions - if (containsFuzzy(cpuFeatures, "v", true)) { + if (containsFuzzy(cpuFeatures, "rvv")) { System.out.println("Setting up vector worker"); configs.add(List.of("-XX:+UseRVV")); } diff --git a/test/hotspot/jtreg/compiler/lib/ir_framework/test/IREncodingPrinter.java b/test/hotspot/jtreg/compiler/lib/ir_framework/test/IREncodingPrinter.java index fc46712bb43..73943db3f53 100644 --- a/test/hotspot/jtreg/compiler/lib/ir_framework/test/IREncodingPrinter.java +++ b/test/hotspot/jtreg/compiler/lib/ir_framework/test/IREncodingPrinter.java @@ -108,7 +108,7 @@ public class IREncodingPrinter { "asimd", "sve", // Riscv64 - "v", + "rvv", "zvbb" )); diff --git a/test/hotspot/jtreg/compiler/vectorapi/reshape/TestVectorCastRVV.java b/test/hotspot/jtreg/compiler/vectorapi/reshape/TestVectorCastRVV.java index ebcd4a727f0..b8bcf73b403 100644 --- a/test/hotspot/jtreg/compiler/vectorapi/reshape/TestVectorCastRVV.java +++ b/test/hotspot/jtreg/compiler/vectorapi/reshape/TestVectorCastRVV.java @@ -34,7 +34,7 @@ * @modules jdk.incubator.vector * @modules java.base/jdk.internal.misc * @summary Test that vector cast intrinsics work as intended on riscv (rvv). - * @requires os.arch == "riscv64" & vm.cpu.features ~= ".*v,.*" + * @requires os.arch == "riscv64" & vm.cpu.features ~= ".*rvv.*" * @library /test/lib / * @run main/timeout=300 compiler.vectorapi.reshape.TestVectorCastRVV */ diff --git a/test/hotspot/jtreg/compiler/vectorization/TestSignumVector.java b/test/hotspot/jtreg/compiler/vectorization/TestSignumVector.java index 66943d68a67..ee4e613dbbb 100644 --- a/test/hotspot/jtreg/compiler/vectorization/TestSignumVector.java +++ b/test/hotspot/jtreg/compiler/vectorization/TestSignumVector.java @@ -28,7 +28,7 @@ * and riscv64 (vector) * @requires vm.compiler2.enabled * @requires (os.simpleArch == "x64" & vm.cpu.features ~= ".*avx.*") | os.arch == "aarch64" | - * (os.arch == "riscv64" & vm.cpu.features ~= ".*v,.*") + * (os.arch == "riscv64" & vm.cpu.features ~= ".*rvv.*") * @library /test/lib / * @run driver compiler.vectorization.TestSignumVector */ diff --git a/test/hotspot/jtreg/compiler/vectorization/runner/ArrayShiftOpTest.java b/test/hotspot/jtreg/compiler/vectorization/runner/ArrayShiftOpTest.java index c4f601f42c8..ec1e3f998ca 100644 --- a/test/hotspot/jtreg/compiler/vectorization/runner/ArrayShiftOpTest.java +++ b/test/hotspot/jtreg/compiler/vectorization/runner/ArrayShiftOpTest.java @@ -153,10 +153,7 @@ public long[] longExplicitRotateWithPopulateIndex2() { @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.RSHIFT_VI, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.RSHIFT_VI, ">0"}) public int[] intShiftLargeDistConstant() { int[] res = new int[SIZE]; @@ -167,10 +164,7 @@ public int[] intShiftLargeDistConstant() { } @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.RSHIFT_VI, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.RSHIFT_VI, ">0"}) public int[] intShiftLargeDistInvariant() { int[] res = new int[SIZE]; @@ -181,10 +175,7 @@ public int[] intShiftLargeDistInvariant() { } @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.RSHIFT_VS, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.RSHIFT_VS, ">0"}) public short[] shortShiftLargeDistConstant() { short[] res = new short[SIZE]; @@ -195,10 +186,7 @@ public short[] shortShiftLargeDistConstant() { } @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.RSHIFT_VS, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.RSHIFT_VS, ">0"}) public short[] shortShiftLargeDistInvariant() { short[] res = new short[SIZE]; @@ -209,10 +197,7 @@ public short[] shortShiftLargeDistInvariant() { } @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.LSHIFT_VL, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.LSHIFT_VL, ">0"}) public long[] longShiftLargeDistConstant() { long[] res = new long[SIZE]; @@ -223,10 +208,7 @@ public long[] longShiftLargeDistConstant() { } @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.URSHIFT_VL, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.URSHIFT_VL, ">0"}) public long[] longShiftLargeDistInvariant() { long[] res = new long[SIZE]; @@ -259,10 +241,7 @@ public short[] loopIndexShiftDistance() { } @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.RSHIFT_VS, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.RSHIFT_VS, ">0"}) public short[] vectorUnsignedShiftRight() { short[] res = new short[SIZE]; diff --git a/test/hotspot/jtreg/compiler/vectorization/runner/BasicByteOpTest.java b/test/hotspot/jtreg/compiler/vectorization/runner/BasicByteOpTest.java index f080e29d1c3..60a6d78a7d4 100644 --- a/test/hotspot/jtreg/compiler/vectorization/runner/BasicByteOpTest.java +++ b/test/hotspot/jtreg/compiler/vectorization/runner/BasicByteOpTest.java @@ -189,10 +189,7 @@ public byte[] vectorXor() { // ---------------- Shift ---------------- @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4.1", "true"}, - counts = {IRNode.LSHIFT_VB, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4.1", "true", "rvv", "true"}, counts = {IRNode.LSHIFT_VB, ">0"}) public byte[] vectorShiftLeft() { byte[] res = new byte[SIZE]; @@ -203,10 +200,7 @@ public byte[] vectorShiftLeft() { } @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4.1", "true"}, - counts = {IRNode.RSHIFT_VB, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4.1", "true", "rvv", "true"}, counts = {IRNode.RSHIFT_VB, ">0"}) public byte[] vectorSignedShiftRight() { byte[] res = new byte[SIZE]; @@ -217,10 +211,7 @@ public byte[] vectorSignedShiftRight() { } @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4.1", "true"}, - counts = {IRNode.RSHIFT_VB, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse4.1", "true", "rvv", "true"}, counts = {IRNode.RSHIFT_VB, ">0"}) public byte[] vectorUnsignedShiftRight() { byte[] res = new byte[SIZE]; diff --git a/test/hotspot/jtreg/compiler/vectorization/runner/BasicCharOpTest.java b/test/hotspot/jtreg/compiler/vectorization/runner/BasicCharOpTest.java index 9fa53609ea2..8c20b879d59 100644 --- a/test/hotspot/jtreg/compiler/vectorization/runner/BasicCharOpTest.java +++ b/test/hotspot/jtreg/compiler/vectorization/runner/BasicCharOpTest.java @@ -191,10 +191,7 @@ public char[] vectorXor() { // ---------------- Shift ---------------- @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.LSHIFT_VC, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.LSHIFT_VC, ">0"}) public char[] vectorShiftLeft() { char[] res = new char[SIZE]; @@ -205,10 +202,7 @@ public char[] vectorShiftLeft() { } @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.URSHIFT_VC, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.URSHIFT_VC, ">0"}) public char[] vectorSignedShiftRight() { char[] res = new char[SIZE]; @@ -219,10 +213,7 @@ public char[] vectorSignedShiftRight() { } @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.URSHIFT_VC, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.URSHIFT_VC, ">0"}) public char[] vectorUnsignedShiftRight() { char[] res = new char[SIZE]; diff --git a/test/hotspot/jtreg/compiler/vectorization/runner/BasicIntOpTest.java b/test/hotspot/jtreg/compiler/vectorization/runner/BasicIntOpTest.java index 5774e3b63b2..b3d7c215867 100644 --- a/test/hotspot/jtreg/compiler/vectorization/runner/BasicIntOpTest.java +++ b/test/hotspot/jtreg/compiler/vectorization/runner/BasicIntOpTest.java @@ -198,10 +198,7 @@ public int[] vectorXor() { // ---------------- Shift ---------------- @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.LSHIFT_VI, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.LSHIFT_VI, ">0"}) public int[] vectorShiftLeft() { int[] res = new int[SIZE]; @@ -212,10 +209,7 @@ public int[] vectorShiftLeft() { } @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.RSHIFT_VI, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.RSHIFT_VI, ">0"}) public int[] vectorSignedShiftRight() { int[] res = new int[SIZE]; @@ -226,10 +220,7 @@ public int[] vectorSignedShiftRight() { } @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.URSHIFT_VI, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.URSHIFT_VI, ">0"}) public int[] vectorUnsignedShiftRight() { int[] res = new int[SIZE]; diff --git a/test/hotspot/jtreg/compiler/vectorization/runner/BasicLongOpTest.java b/test/hotspot/jtreg/compiler/vectorization/runner/BasicLongOpTest.java index c6ecac096f9..2f1bfcdf1df 100644 --- a/test/hotspot/jtreg/compiler/vectorization/runner/BasicLongOpTest.java +++ b/test/hotspot/jtreg/compiler/vectorization/runner/BasicLongOpTest.java @@ -190,10 +190,7 @@ public long[] vectorXor() { // ---------------- Shift ---------------- @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.LSHIFT_VL, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.LSHIFT_VL, ">0"}) public long[] vectorShiftLeft() { long[] res = new long[SIZE]; @@ -204,10 +201,7 @@ public long[] vectorShiftLeft() { } @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.RSHIFT_VL, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.RSHIFT_VL, ">0"}) public long[] vectorSignedShiftRight() { long[] res = new long[SIZE]; @@ -218,10 +212,7 @@ public long[] vectorSignedShiftRight() { } @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.URSHIFT_VL, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.URSHIFT_VL, ">0"}) public long[] vectorUnsignedShiftRight() { long[] res = new long[SIZE]; diff --git a/test/hotspot/jtreg/compiler/vectorization/runner/BasicShortOpTest.java b/test/hotspot/jtreg/compiler/vectorization/runner/BasicShortOpTest.java index bf5516ddaf8..50b68cd2e48 100644 --- a/test/hotspot/jtreg/compiler/vectorization/runner/BasicShortOpTest.java +++ b/test/hotspot/jtreg/compiler/vectorization/runner/BasicShortOpTest.java @@ -189,10 +189,7 @@ public short[] vectorXor() { // ---------------- Shift ---------------- @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.LSHIFT_VS, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.LSHIFT_VS, ">0"}) public short[] vectorShiftLeft() { short[] res = new short[SIZE]; @@ -203,10 +200,7 @@ public short[] vectorShiftLeft() { } @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.RSHIFT_VS, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.RSHIFT_VS, ">0"}) public short[] vectorSignedShiftRight() { short[] res = new short[SIZE]; @@ -242,10 +236,7 @@ public short[] vectorMax() { } @Test - @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, - counts = {IRNode.RSHIFT_VS, ">0"}) - @IR(applyIfPlatform = {"riscv64", "true"}, - applyIfCPUFeature = {"v", "true"}, + @IR(applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, counts = {IRNode.RSHIFT_VS, ">0"}) public short[] vectorUnsignedShiftRight() { short[] res = new short[SIZE]; From cdf22b13204456b589349500bef0e9d48af44e83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20Gr=C3=B6nlund?= Date: Mon, 17 Jun 2024 12:57:09 +0000 Subject: [PATCH 34/70] 8326715: ZGC: RunThese24H fails with ExitCode 139 during shutdown Reviewed-by: egahlin --- .../checkpoint/objectSampleCheckpoint.cpp | 113 ++++++---------- .../checkpoint/objectSampleCheckpoint.hpp | 5 +- .../leakprofiler/sampling/objectSample.hpp | 4 +- .../checkpoint/jfrCheckpointManager.cpp | 28 ++-- .../checkpoint/jfrCheckpointWriter.hpp | 1 + .../storage/jfrReferenceCountedStorage.cpp | 79 ++++++++++++ .../storage/jfrReferenceCountedStorage.hpp | 68 ++++++++++ .../jfr/support/jfrDeprecationEventWriter.cpp | 29 ++++- .../jfr/support/jfrDeprecationEventWriter.hpp | 13 +- .../jfr/support/jfrDeprecationManager.cpp | 122 ++++++++++-------- .../jfr/support/jfrDeprecationManager.hpp | 13 +- 11 files changed, 312 insertions(+), 163 deletions(-) create mode 100644 src/hotspot/share/jfr/recorder/storage/jfrReferenceCountedStorage.cpp create mode 100644 src/hotspot/share/jfr/recorder/storage/jfrReferenceCountedStorage.hpp diff --git a/src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleCheckpoint.cpp b/src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleCheckpoint.cpp index 2412454f6aa..b7f9b733c0f 100644 --- a/src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleCheckpoint.cpp +++ b/src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleCheckpoint.cpp @@ -36,6 +36,7 @@ #include "jfr/recorder/checkpoint/types/traceid/jfrTraceId.inline.hpp" #include "jfr/recorder/service/jfrOptionSet.hpp" #include "jfr/recorder/stacktrace/jfrStackTraceRepository.hpp" +#include "jfr/recorder/storage/jfrReferenceCountedStorage.hpp" #include "jfr/support/jfrKlassUnloading.hpp" #include "jfr/support/jfrMethodLookup.hpp" #include "jfr/utilities/jfrHashtable.hpp" @@ -272,11 +273,30 @@ static void install_stack_traces(const ObjectSampler* sampler) { iterate_samples(installer); } +// Resets the blob write states from the previous epoch. +static void reset_blob_write_state(const ObjectSampler* sampler, JavaThread* jt) { + assert(sampler != nullptr, "invariant"); + const ObjectSample* sample = sampler->last_resolved(); + while (sample != nullptr) { + if (sample->has_stacktrace()) { + sample->stacktrace()->reset_write_state(); + } + if (sample->has_thread()) { + sample->thread()->reset_write_state(); + } + if (sample->has_type_set()) { + sample->type_set()->reset_write_state(); + } + sample = sample->next(); + } +} + void ObjectSampleCheckpoint::on_rotation(const ObjectSampler* sampler) { assert(sampler != nullptr, "invariant"); assert(LeakProfiler::is_running(), "invariant"); JavaThread* const thread = JavaThread::current(); DEBUG_ONLY(JfrJavaSupport::check_java_thread_in_native(thread);) + reset_blob_write_state(sampler, thread); if (!ObjectSampler::has_unresolved_entry()) { return; } @@ -326,38 +346,34 @@ void ObjectSampleCheckpoint::write_stacktrace(const JfrStackTrace* trace, JfrChe } } -static void write_blob(const JfrBlobHandle& blob, JfrCheckpointWriter& writer, bool reset) { - if (reset) { - blob->reset_write_state(); - return; - } +static void write_blob(const JfrBlobHandle& blob, JfrCheckpointWriter& writer) { blob->exclusive_write(writer); } -static void write_type_set_blob(const ObjectSample* sample, JfrCheckpointWriter& writer, bool reset) { +static void write_type_set_blob(const ObjectSample* sample, JfrCheckpointWriter& writer) { if (sample->has_type_set()) { - write_blob(sample->type_set(), writer, reset); + write_blob(sample->type_set(), writer); } } -static void write_thread_blob(const ObjectSample* sample, JfrCheckpointWriter& writer, bool reset) { +static void write_thread_blob(const ObjectSample* sample, JfrCheckpointWriter& writer) { assert(sample->has_thread(), "invariant"); if (sample->is_virtual_thread() || has_thread_exited(sample->thread_id())) { - write_blob(sample->thread(), writer, reset); + write_blob(sample->thread(), writer); } } -static void write_stacktrace_blob(const ObjectSample* sample, JfrCheckpointWriter& writer, bool reset) { +static void write_stacktrace_blob(const ObjectSample* sample, JfrCheckpointWriter& writer) { if (sample->has_stacktrace()) { - write_blob(sample->stacktrace(), writer, reset); + write_blob(sample->stacktrace(), writer); } } -static void write_blobs(const ObjectSample* sample, JfrCheckpointWriter& writer, bool reset) { +static void write_blobs(const ObjectSample* sample, JfrCheckpointWriter& writer) { assert(sample != nullptr, "invariant"); - write_stacktrace_blob(sample, writer, reset); - write_thread_blob(sample, writer, reset); - write_type_set_blob(sample, writer, reset); + write_stacktrace_blob(sample, writer); + write_thread_blob(sample, writer); + write_type_set_blob(sample, writer); } class BlobWriter { @@ -365,18 +381,14 @@ class BlobWriter { const ObjectSampler* _sampler; JfrCheckpointWriter& _writer; const jlong _last_sweep; - bool _reset; public: BlobWriter(const ObjectSampler* sampler, JfrCheckpointWriter& writer, jlong last_sweep) : - _sampler(sampler), _writer(writer), _last_sweep(last_sweep), _reset(false) {} + _sampler(sampler), _writer(writer), _last_sweep(last_sweep) {} void sample_do(ObjectSample* sample) { if (sample->is_alive_and_older_than(_last_sweep)) { - write_blobs(sample, _writer, _reset); + write_blobs(sample, _writer); } } - void set_reset() { - _reset = true; - } }; static void write_sample_blobs(const ObjectSampler* sampler, bool emit_all, Thread* thread) { @@ -385,9 +397,6 @@ static void write_sample_blobs(const ObjectSampler* sampler, bool emit_all, Thre JfrCheckpointWriter writer(thread, false); BlobWriter cbw(sampler, writer, last_sweep); iterate_samples(cbw, true); - // reset blob write states - cbw.set_reset(); - iterate_samples(cbw, true); } void ObjectSampleCheckpoint::write(const ObjectSampler* sampler, EdgeStore* edge_store, bool emit_all, Thread* thread) { @@ -403,67 +412,17 @@ void ObjectSampleCheckpoint::write(const ObjectSampler* sampler, EdgeStore* edge } } -// A linked list of saved type set blobs for the epoch. -// The link consist of a reference counted handle. -static JfrBlobHandle saved_type_set_blobs; - -static void release_state_for_previous_epoch() { - // decrements the reference count and the list is reinitialized - saved_type_set_blobs = JfrBlobHandle(); -} - -class BlobInstaller { - public: - ~BlobInstaller() { - release_state_for_previous_epoch(); - } - void sample_do(ObjectSample* sample) { - if (!sample->is_dead()) { - sample->set_type_set(saved_type_set_blobs); - } - } -}; - -static void install_type_set_blobs() { - if (saved_type_set_blobs.valid()) { - BlobInstaller installer; - iterate_samples(installer); - } -} - -static void save_type_set_blob(JfrCheckpointWriter& writer) { - assert(writer.has_data(), "invariant"); - const JfrBlobHandle blob = writer.copy(); - if (saved_type_set_blobs.valid()) { - saved_type_set_blobs->set_next(blob); - } else { - saved_type_set_blobs = blob; - } -} - // This routine has exclusive access to the sampler instance on entry. -void ObjectSampleCheckpoint::on_type_set(JfrCheckpointWriter& writer) { +void ObjectSampleCheckpoint::on_type_set(JavaThread* jt) { assert(LeakProfiler::is_running(), "invariant"); DEBUG_ONLY(JfrJavaSupport::check_java_thread_in_vm(JavaThread::current());) assert(ClassLoaderDataGraph_lock->owned_by_self(), "invariant"); if (!ObjectSampler::has_unresolved_entry()) { return; } - const ObjectSample* const last = ObjectSampler::sampler()->last(); + ObjectSample* const last = ObjectSampler::sampler()->last(); assert(last != nullptr, "invariant"); assert(last != ObjectSampler::sampler()->last_resolved(), "invariant"); - if (writer.has_data()) { - save_type_set_blob(writer); - } - install_type_set_blobs(); + JfrReferenceCountedStorage::install(last, ObjectSampler::sampler()->last_resolved()); ObjectSampler::sampler()->set_last_resolved(last); } - -// This routine does NOT have exclusive access to the sampler instance on entry. -void ObjectSampleCheckpoint::on_type_set_unload(JfrCheckpointWriter& writer) { - assert(LeakProfiler::is_running(), "invariant"); - assert_locked_or_safepoint(ClassLoaderDataGraph_lock); - if (writer.has_data() && ObjectSampler::has_unresolved_entry()) { - save_type_set_blob(writer); - } -} diff --git a/src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleCheckpoint.hpp b/src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleCheckpoint.hpp index eb887f2db9a..bf1965b13b5 100644 --- a/src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleCheckpoint.hpp +++ b/src/hotspot/share/jfr/leakprofiler/checkpoint/objectSampleCheckpoint.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -50,8 +50,7 @@ class ObjectSampleCheckpoint : AllStatic { static void write(const ObjectSampler* sampler, EdgeStore* edge_store, bool emit_all, Thread* thread); static void clear(); public: - static void on_type_set(JfrCheckpointWriter& writer); - static void on_type_set_unload(JfrCheckpointWriter& writer); + static void on_type_set(JavaThread* jt); static void on_thread_exit(traceid tid); static void on_rotation(const ObjectSampler* sampler); }; diff --git a/src/hotspot/share/jfr/leakprofiler/sampling/objectSample.hpp b/src/hotspot/share/jfr/leakprofiler/sampling/objectSample.hpp index c202ba8d8aa..214de827d03 100644 --- a/src/hotspot/share/jfr/leakprofiler/sampling/objectSample.hpp +++ b/src/hotspot/share/jfr/leakprofiler/sampling/objectSample.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -233,7 +233,7 @@ class ObjectSample : public JfrCHeapObj { return _type_set.valid(); } - void set_type_set(const JfrBlobHandle& ref) { + void install_type_set(const JfrBlobHandle& ref) { if (_type_set != ref) { if (_type_set.valid()) { _type_set->set_next(ref); diff --git a/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp b/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp index 0aed916702e..a2e887e71a3 100644 --- a/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp +++ b/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,6 +37,7 @@ #include "jfr/recorder/service/jfrOptionSet.hpp" #include "jfr/recorder/storage/jfrEpochStorage.inline.hpp" #include "jfr/recorder/storage/jfrMemorySpace.inline.hpp" +#include "jfr/recorder/storage/jfrReferenceCountedStorage.hpp" #include "jfr/recorder/storage/jfrStorageUtils.inline.hpp" #include "jfr/recorder/stringpool/jfrStringPool.hpp" #include "jfr/support/jfrDeprecationManager.hpp" @@ -589,12 +590,14 @@ void JfrCheckpointManager::clear_type_set() { MutexLocker module_lock(Module_lock); JfrTypeSet::clear(&writer, &leakp_writer); } - JfrDeprecationManager::on_type_set(leakp_writer, nullptr, thread); - // We placed a blob in the Deprecated subsystem by moving the information - // from the leakp writer. For the real writer, the data will not be - // committed, because the JFR system is yet to be started. - // Therefore, the writer is cancelled before its destructor is run, - // to avoid writing unnecessary information into the checkpoint system. + JfrAddRefCountedBlob add_blob(leakp_writer); + JfrDeprecationManager::on_type_set(nullptr, thread); + // We installed a blob in the JfrReferenceCountedStorage subsystem + // by moving the information from the leakp writer. + // For the real writer, the data will not be committed, + // because the JFR system is yet to be started. + // Therefore, we cancel the writer before its destructor is run + // to avoid writing invalid information into the checkpoint system. writer.cancel(); } @@ -613,11 +616,11 @@ void JfrCheckpointManager::write_type_set() { MutexLocker module_lock(thread, Module_lock); JfrTypeSet::serialize(&writer, &leakp_writer, false, false); } + JfrAddRefCountedBlob add_blob(leakp_writer); if (LeakProfiler::is_running()) { - ObjectSampleCheckpoint::on_type_set(leakp_writer); + ObjectSampleCheckpoint::on_type_set(thread); } - // Place this call after ObjectSampleCheckpoint::on_type_set. - JfrDeprecationManager::on_type_set(leakp_writer, _chunkwriter, thread); + JfrDeprecationManager::on_type_set(_chunkwriter, thread); } write(); } @@ -626,10 +629,7 @@ void JfrCheckpointManager::on_unloading_classes() { assert_locked_or_safepoint(ClassLoaderDataGraph_lock); JfrCheckpointWriter writer(Thread::current()); JfrTypeSet::on_unloading_classes(&writer); - if (LeakProfiler::is_running()) { - ObjectSampleCheckpoint::on_type_set_unload(writer); - } - JfrDeprecationManager::on_type_set_unload(writer); + JfrAddRefCountedBlob add_blob(writer, false /* move */, false /* reset */); } static size_t flush_type_set(Thread* thread) { diff --git a/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointWriter.hpp b/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointWriter.hpp index a8ec2fd70f5..aaebc8f3e7e 100644 --- a/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointWriter.hpp +++ b/src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointWriter.hpp @@ -54,6 +54,7 @@ struct JfrCheckpointContext { }; class JfrCheckpointWriter : public JfrCheckpointWriterBase { + friend class JfrAddRefCountedBlob; friend class JfrCheckpointManager; friend class JfrDeprecationManager; friend class JfrSerializerRegistration; diff --git a/src/hotspot/share/jfr/recorder/storage/jfrReferenceCountedStorage.cpp b/src/hotspot/share/jfr/recorder/storage/jfrReferenceCountedStorage.cpp new file mode 100644 index 00000000000..ac652905c5b --- /dev/null +++ b/src/hotspot/share/jfr/recorder/storage/jfrReferenceCountedStorage.cpp @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#include "precompiled.hpp" +#include "jfr/leakprofiler/sampling/objectSampler.hpp" +#include "jfr/recorder/checkpoint/jfrCheckpointWriter.hpp" +#include "jfr/recorder/storage/jfrReferenceCountedStorage.hpp" +#include "jfr/support/jfrDeprecationManager.hpp" + +// Currently only two subsystems use type set blobs. Save a blob only if either has an unresolved entry. +static inline bool save_blob_predicate() { + return JfrDeprecationManager::has_unresolved_entry() || ObjectSampler::has_unresolved_entry(); +} + +JfrAddRefCountedBlob::JfrAddRefCountedBlob(JfrCheckpointWriter& writer, bool move /* true */, bool reset /* true */) : _reset(reset) { + if (writer.has_data()) { + if (save_blob_predicate()) { + JfrReferenceCountedStorage::save_blob(writer, move); + } else if (move) { + writer.cancel(); + } + } + DEBUG_ONLY(if (reset) JfrReferenceCountedStorage::set_scope();) +} + +JfrAddRefCountedBlob::~JfrAddRefCountedBlob() { + if (_reset) { + JfrReferenceCountedStorage::reset(); + } +} + +JfrBlobHandle JfrReferenceCountedStorage::_type_sets = JfrBlobHandle(); +DEBUG_ONLY(bool JfrReferenceCountedStorage::_scope = false;) + +void JfrReferenceCountedStorage::save_blob(JfrCheckpointWriter& writer, bool move /* false */) { + assert(writer.has_data(), "invariant"); + const JfrBlobHandle blob = move ? writer.move() : writer.copy(); + if (_type_sets.valid()) { + _type_sets->set_next(blob); + return; + } + _type_sets = blob; +} + +void JfrReferenceCountedStorage::reset() { + assert(_scope, "invariant"); + if (_type_sets.valid()) { + _type_sets = JfrBlobHandle(); + } + DEBUG_ONLY(_scope = false;) +} + +#ifdef ASSERT +void JfrReferenceCountedStorage::set_scope() { + assert(!_scope, "invariant"); + _scope = true; +} +#endif diff --git a/src/hotspot/share/jfr/recorder/storage/jfrReferenceCountedStorage.hpp b/src/hotspot/share/jfr/recorder/storage/jfrReferenceCountedStorage.hpp new file mode 100644 index 00000000000..6d32e1b0ead --- /dev/null +++ b/src/hotspot/share/jfr/recorder/storage/jfrReferenceCountedStorage.hpp @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#ifndef SHARE_JFR_RECORDER_STORAGE_JFRREFERENCECOUNTEDSTORAGE_HPP +#define SHARE_JFR_RECORDER_STORAGE_JFRREFERENCECOUNTEDSTORAGE_HPP + +#include "jfr/utilities/jfrBlob.hpp" +#include "memory/allocation.hpp" +#include "utilities/macros.hpp" + +class JfrCheckpointWriter; + +// RAII helper class for adding blobs to the storage. +class JfrAddRefCountedBlob : public StackObj { + private: + bool _reset; + public: + JfrAddRefCountedBlob(JfrCheckpointWriter& writer, bool move = true, bool reset = true); + ~JfrAddRefCountedBlob(); +}; + +// The debug aid 'scope' implies the proper RAII save construct is placed on stack. +// This is a necessary condition for installing reference counted storage to nodes. +class JfrReferenceCountedStorage : AllStatic { + friend class JfrAddRefCountedBlob; + private: + static JfrBlobHandle _type_sets; // linked-list of blob handles saved during epoch. + DEBUG_ONLY(static bool _scope;) + + static void save_blob(JfrCheckpointWriter& writer, bool move = false); + static void reset(); + DEBUG_ONLY(static void set_scope();) + + public: + template + static void install(T* node, const T* end) { + assert(_scope, "invariant"); + if (_type_sets.valid()) { + while (node != end) { + node->install_type_set(_type_sets); + node = node->next(); + } + } + } +}; + +#endif // SHARE_JFR_RECORDER_STORAGE_JFRREFERENCECOUNTEDSTORAGE_HPP diff --git a/src/hotspot/share/jfr/support/jfrDeprecationEventWriter.cpp b/src/hotspot/share/jfr/support/jfrDeprecationEventWriter.cpp index 24cdbdc1611..4aa61bdddff 100644 --- a/src/hotspot/share/jfr/support/jfrDeprecationEventWriter.cpp +++ b/src/hotspot/share/jfr/support/jfrDeprecationEventWriter.cpp @@ -1,5 +1,5 @@ /* -* Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. +* Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -116,8 +116,8 @@ bool JfrDeprecatedStackTraceWriter::process(const JfrDeprecatedEdge* edge) { return true; } -JfrDeprecatedEventWriter::JfrDeprecatedEventWriter(JfrChunkWriter& cw, bool stacktrace) : - _now(JfrTicks::now()),_cw(cw), _for_removal(only_for_removal()), _stacktrace(stacktrace), _did_write(false) {} +JfrDeprecatedEventWriter::JfrDeprecatedEventWriter(JfrChunkWriter& cw, JfrCheckpointWriter& tsw, bool stacktrace) : + _now(JfrTicks::now()),_cw(cw), _tsw(tsw), _for_removal(only_for_removal()), _stacktrace(stacktrace) {} static size_t calculate_event_size(const JfrDeprecatedEdge* edge, JfrChunkWriter& cw, const JfrTicks& now, bool stacktrace) { assert(edge != nullptr, "invariant"); @@ -141,14 +141,31 @@ static void write_event(const JfrDeprecatedEdge* edge, JfrChunkWriter& cw, const cw.write(edge->for_removal()); } +static void write_type_set(const JfrDeprecatedEdge* edge, JfrCheckpointWriter& tsw) { + if (!edge->has_type_set()) { + return; + } + edge->type_set()->exclusive_write(tsw); +} + bool JfrDeprecatedEventWriter::process(const JfrDeprecatedEdge* edge) { assert(edge != nullptr, "invariant"); if (_for_removal && !edge->for_removal()) { return true; } - write_event(edge, _cw,_now, _stacktrace); - if (!_did_write) { - _did_write = true; + write_event(edge, _cw, _now, _stacktrace); + write_type_set(edge, _tsw); + return true; +} + +JfrDeprecatedEventClear::JfrDeprecatedEventClear() {} + +bool JfrDeprecatedEventClear::process(const JfrDeprecatedEdge* edge) { + assert(edge != nullptr, "invariant"); + if (!edge->has_type_set()) { + return true; } + edge->type_set()->reset_write_state(); return true; } + diff --git a/src/hotspot/share/jfr/support/jfrDeprecationEventWriter.hpp b/src/hotspot/share/jfr/support/jfrDeprecationEventWriter.hpp index 77699c94979..1d73d4dc3a3 100644 --- a/src/hotspot/share/jfr/support/jfrDeprecationEventWriter.hpp +++ b/src/hotspot/share/jfr/support/jfrDeprecationEventWriter.hpp @@ -1,5 +1,5 @@ /* -* Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. +* Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -56,12 +56,17 @@ class JfrDeprecatedEventWriter : public StackObj { private: JfrTicks _now; JfrChunkWriter& _cw; + JfrCheckpointWriter& _tsw; bool _for_removal; bool _stacktrace; - bool _did_write; public: - JfrDeprecatedEventWriter(JfrChunkWriter& cw, bool stacktrace); - bool did_write() const { return _did_write; } + JfrDeprecatedEventWriter(JfrChunkWriter& cw, JfrCheckpointWriter& tsw, bool stacktrace); + bool process(const JfrDeprecatedEdge* edge); +}; + +class JfrDeprecatedEventClear : public StackObj { + public: + JfrDeprecatedEventClear(); bool process(const JfrDeprecatedEdge* edge); }; diff --git a/src/hotspot/share/jfr/support/jfrDeprecationManager.cpp b/src/hotspot/share/jfr/support/jfrDeprecationManager.cpp index 5f5c87d239c..8969b787a1c 100644 --- a/src/hotspot/share/jfr/support/jfrDeprecationManager.cpp +++ b/src/hotspot/share/jfr/support/jfrDeprecationManager.cpp @@ -1,5 +1,5 @@ /* -* Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. +* Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,6 +32,7 @@ #include "jfr/recorder/checkpoint/types/traceid/jfrTraceId.inline.hpp" #include "jfr/recorder/repository/jfrChunkWriter.hpp" #include "jfr/recorder/stacktrace/jfrStackTraceRepository.hpp" +#include "jfr/recorder/storage/jfrReferenceCountedStorage.hpp" #include "jfr/support/jfrDeprecationEventWriter.hpp" #include "jfr/support/jfrDeprecationManager.hpp" #include "jfr/support/jfrKlassUnloading.hpp" @@ -66,6 +67,7 @@ static inline traceid load_traceid(const Method* method) { JfrDeprecatedEdge::JfrDeprecatedEdge(const Method* method, Method* sender, int bci, u1 frame_type, JavaThread* jt) : _invocation_time(JfrTicks::now()), _stacktrace(), + _type_set(), _next(nullptr), _deprecated_ik(method->method_holder()), _deprecated_methodid(load_traceid(method)), @@ -94,11 +96,25 @@ const JfrBlobHandle& JfrDeprecatedEdge::stacktrace() const { return _stacktrace; } +bool JfrDeprecatedEdge::has_type_set() const { + return _type_set.valid(); +} + +const JfrBlobHandle& JfrDeprecatedEdge::type_set() const { + assert(has_type_set(), "invariant"); + return _type_set; +} + +void JfrDeprecatedEdge::install_type_set(const JfrBlobHandle& type_set) { + assert(!has_type_set(), "invariant"); + _type_set = type_set; +} + typedef JfrLinkedList DeprecatedEdgeList; static DeprecatedEdgeList _list; // Newly constructed edges are concurrently added to this list. static DeprecatedEdgeList _pending_list; // During epoch rotation (safepoint) entries in _list are moved onto _pending_list -static DeprecatedEdgeList _resolved_list; // Fully resolved edges (event and stacktrace blobs). +static DeprecatedEdgeList _resolved_list; // Fully resolved edges (event, stacktrace and typeset blobs). static JfrDeprecatedEdge* allocate_edge(const Method* method, Method* sender, int bci, u1 frame_type, JavaThread* jt) { DEBUG_ONLY(JfrJavaSupport::check_java_thread_in_vm(jt);) @@ -225,10 +241,6 @@ static void transfer_list() { } } -void JfrDeprecationManager::on_level_setting_update(int64_t new_level) { - JfrDeprecatedEventWriterState::on_level_setting_update(new_level); -} - void JfrDeprecationManager::on_safepoint_clear() { assert(!_enqueue_klasses, "invariant"); // We are now starting JFR, so begin enqueuing tagged klasses. @@ -270,6 +282,23 @@ static void add_to_leakp_set(const JfrDeprecatedEdge* edge) { static DeprecatedEdgeList::NodePtr _pending_head = nullptr; static DeprecatedEdgeList::NodePtr _pending_tail = nullptr; +inline DeprecatedEdgeList::NodePtr pending_head() { + return Atomic::load(&_pending_head); +} + +// The test for a pending head can be read concurrently from a thread doing class unloading. +inline static bool has_pending_head() { + return pending_head() != nullptr; +} + +inline static bool no_pending_head() { + return !has_pending_head(); +} + +inline static void set_pending_head(DeprecatedEdgeList::NodePtr head) { + Atomic::store(&_pending_head, head); +} + class PendingListProcessor { private: JfrCheckpointWriter& _writer; @@ -281,66 +310,57 @@ class PendingListProcessor { JfrDeprecatedStackTraceWriter::install_stacktrace_blob(edge, _writer, _jt); assert(edge->has_stacktrace(), "invariant"); add_to_leakp_set(edge); - if (_pending_head == nullptr) { - _pending_head = edge; + if (no_pending_head()) { + set_pending_head(edge); } _pending_tail = edge; return true; } }; -void JfrDeprecationManager::prepare_type_set(JavaThread* jt) { - _pending_head = nullptr; +// Resets the pending head and tail. +// Resets blob write states for nodes on the resolved list, dirtied in the previous epoch. +static void reset_type_set_blobs() { + set_pending_head(nullptr); _pending_tail = nullptr; + if (_resolved_list.is_nonempty()) { + JfrDeprecatedEventClear clear; + _resolved_list.iterate(clear); + } +} + +void JfrDeprecationManager::prepare_type_set(JavaThread* jt) { + reset_type_set_blobs(); if (_pending_list.is_nonempty()) { JfrKlassUnloading::sort(true); JfrCheckpointWriter writer(true /* prev epoch */, jt, false /* header */); PendingListProcessor plp(writer, jt); _pending_list.iterate(plp); - assert(_pending_head != nullptr, "invariant"); + assert(has_pending_head(), "invariant"); assert(_pending_tail != nullptr, "invariant"); assert(_pending_tail->next() == nullptr, "invariant"); // Excise already resolved edges to link them. _pending_tail->set_next(_resolved_list.cut()); // Re-insertion. - _resolved_list.add_list(_pending_head); + _resolved_list.add_list(pending_head()); _pending_list.clear(); } assert(_pending_list.is_empty(), "invariant"); } -// A linked-list of blob handles. -static JfrBlobHandle type_set_blobs; - -static inline void write_type_set_blobs(JfrCheckpointWriter& writer) { - type_set_blobs->write(writer); -} - -static void save_type_set_blob(JfrCheckpointWriter& writer, bool copy = false) { - assert(writer.has_data(), "invariant"); - const JfrBlobHandle blob = copy ? writer.copy() : writer.move(); - if (type_set_blobs.valid()) { - type_set_blobs->set_next(blob); - } else { - type_set_blobs = blob; - } -} - -void JfrDeprecationManager::on_type_set_unload(JfrCheckpointWriter& writer) { - if (writer.has_data()) { - save_type_set_blob(writer, true); - } +bool JfrDeprecationManager::has_unresolved_entry() { + return _list.is_nonempty() || has_pending_head() || _pending_list.is_nonempty(); } static inline bool has_stacktrace() { return JfrEventSetting::has_stacktrace(JfrDeprecatedInvocationEvent); } -static inline bool write_events(JfrChunkWriter& cw) { +static inline void write_events(JfrChunkWriter& cw, Thread* thread, bool on_error) { assert(_resolved_list.is_nonempty(), "invariant"); - JfrDeprecatedEventWriter ebw(cw, has_stacktrace()); + JfrCheckpointWriter type_set_writer(!on_error, thread, false); + JfrDeprecatedEventWriter ebw(cw, type_set_writer, has_stacktrace()); _resolved_list.iterate(ebw); - return ebw.did_write(); } static inline void write_stacktraces(JfrChunkWriter& cw) { @@ -349,34 +369,30 @@ static inline void write_stacktraces(JfrChunkWriter& cw) { _resolved_list.iterate(scw); } -static inline void write_type_sets(Thread* thread, bool on_error) { - JfrCheckpointWriter writer(!on_error, thread, false); - write_type_set_blobs(writer); -} - -// First, we consolidate all stacktrace blobs into a single TYPE_STACKTRACE checkpoint and serialize it to the chunk. -// Secondly, we serialize all events to the chunk. -// Thirdly, the type set blobs are written into the JfrCheckpoint system, to be serialized to the chunk -// just after we return from here. +// First, we consolidate all stack trace blobs into a single TYPE_STACKTRACE checkpoint +// and serialize it to the chunk. Then, all events are serialized, and unique type set blobs +// written into the JfrCheckpoint system to be serialized to the chunk upon return. void JfrDeprecationManager::write_edges(JfrChunkWriter& cw, Thread* thread, bool on_error /* false */) { if (_resolved_list.is_nonempty() && JfrEventSetting::is_enabled(JfrDeprecatedInvocationEvent)) { if (has_stacktrace()) { write_stacktraces(cw); } - if (write_events(cw)) { - write_type_sets(thread, on_error); - } + write_events(cw, thread, on_error); } } -void JfrDeprecationManager::on_type_set(JfrCheckpointWriter& writer, JfrChunkWriter* cw, Thread* thread) { +void JfrDeprecationManager::on_type_set(JfrChunkWriter* cw, Thread* thread) { assert(_pending_list.is_empty(), "invariant"); - if (_pending_head != nullptr) { - save_type_set_blob(writer); - } else { - writer.cancel(); + if (has_pending_head()) { + assert(_pending_tail != nullptr, "invariant"); + // Install type set blobs for the pending, i.e. unresolved nodes. + JfrReferenceCountedStorage::install(pending_head(), _pending_tail->next()); } if (cw != nullptr) { write_edges(*cw, thread); } } + +void JfrDeprecationManager::on_level_setting_update(int64_t new_level) { + JfrDeprecatedEventWriterState::on_level_setting_update(new_level); +} diff --git a/src/hotspot/share/jfr/support/jfrDeprecationManager.hpp b/src/hotspot/share/jfr/support/jfrDeprecationManager.hpp index a1948357491..d156679521a 100644 --- a/src/hotspot/share/jfr/support/jfrDeprecationManager.hpp +++ b/src/hotspot/share/jfr/support/jfrDeprecationManager.hpp @@ -1,5 +1,5 @@ /* -* Copyright (c) 2023, Oracle and/or its affiliates. All rights reserved. +* Copyright (c) 2023, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -42,6 +42,7 @@ class JfrDeprecatedEdge : public CHeapObj { private: JfrTicks _invocation_time; JfrBlobHandle _stacktrace; + JfrBlobHandle _type_set; JfrDeprecatedEdge* _next; InstanceKlass* _deprecated_ik; traceid _deprecated_methodid; @@ -58,7 +59,7 @@ class JfrDeprecatedEdge : public CHeapObj { public: JfrDeprecatedEdge(const Method* method, Method* sender, int bci, u1 frame_type, JavaThread* jt); - const JfrDeprecatedEdge* next() const { return _next; } + JfrDeprecatedEdge* next() const { return _next; } void set_next(JfrDeprecatedEdge* edge) { _next = edge; } bool has_event() const; @@ -68,6 +69,10 @@ class JfrDeprecatedEdge : public CHeapObj { const JfrBlobHandle& stacktrace() const; void install_stacktrace_blob(JavaThread* jt); + bool has_type_set() const; + const JfrBlobHandle& type_set() const; + void install_type_set(const JfrBlobHandle& type_set); + const InstanceKlass* deprecated_ik() const { return _deprecated_ik; } traceid deprecated_methodid() const { return _deprecated_methodid; } @@ -89,11 +94,11 @@ class JfrDeprecationManager : AllStatic { static void on_safepoint_write(); static void on_recorder_stop(); static void prepare_type_set(JavaThread* jt); - static void on_type_set(JfrCheckpointWriter& writer, JfrChunkWriter* cw, Thread* thread); - static void on_type_set_unload(JfrCheckpointWriter& writer); + static void on_type_set(JfrChunkWriter* cw, Thread* thread); static void write_edges(JfrChunkWriter& cw, Thread* thread, bool on_error = false); static void on_link(const Method* method, Method* sender, int bci, u1 frame_type, JavaThread* thread); static void on_level_setting_update(int64_t new_level); + static bool has_unresolved_entry(); }; #endif // SHARE_JFR_SUPPORT_JFRDEPRECATIONMANAGER_HPP From c94af6f943c179553d1827550847b93491d47506 Mon Sep 17 00:00:00 2001 From: Albert Mingkun Yang Date: Mon, 17 Jun 2024 15:50:55 +0000 Subject: [PATCH 35/70] 8333962: Obsolete OldSize Reviewed-by: dholmes, zgu --- .../share/gc/serial/tenuredGeneration.cpp | 1 + src/hotspot/share/gc/shared/gc_globals.hpp | 4 - src/hotspot/share/gc/shared/genArguments.cpp | 74 ++--------------- src/hotspot/share/gc/shared/genArguments.hpp | 2 + src/hotspot/share/runtime/arguments.cpp | 3 +- .../sun/jvm/hotspot/tools/HeapSummary.java | 1 - .../gtest/gc/shared/test_collectorPolicy.cpp | 79 ------------------- .../gc/arguments/TestMaxHeapSizeTools.java | 16 ++-- .../jtreg/gc/arguments/TestMaxNewSize.java | 7 +- .../jtreg/gc/g1/TestInvalidateArrayCopy.java | 2 +- .../jtreg/gc/g1/plab/lib/PLABUtils.java | 1 - .../TestOptionsWithRanges.java | 1 - .../largeheap/MemOptions/MemOptionsTest.java | 4 - .../jdk/jfr/event/runtime/TestSizeTFlags.java | 13 +-- .../jhsdb/heapconfig/JMapHeapConfigTest.java | 1 - 15 files changed, 24 insertions(+), 185 deletions(-) diff --git a/src/hotspot/share/gc/serial/tenuredGeneration.cpp b/src/hotspot/share/gc/serial/tenuredGeneration.cpp index fedded6de08..1cddce2dc51 100644 --- a/src/hotspot/share/gc/serial/tenuredGeneration.cpp +++ b/src/hotspot/share/gc/serial/tenuredGeneration.cpp @@ -32,6 +32,7 @@ #include "gc/shared/gcLocker.hpp" #include "gc/shared/gcTimer.hpp" #include "gc/shared/gcTrace.hpp" +#include "gc/shared/genArguments.hpp" #include "gc/shared/space.hpp" #include "gc/shared/spaceDecorator.hpp" #include "logging/log.hpp" diff --git a/src/hotspot/share/gc/shared/gc_globals.hpp b/src/hotspot/share/gc/shared/gc_globals.hpp index 1440f788e18..66496544b96 100644 --- a/src/hotspot/share/gc/shared/gc_globals.hpp +++ b/src/hotspot/share/gc/shared/gc_globals.hpp @@ -540,10 +540,6 @@ "Soft limit for maximum heap size (in bytes)") \ constraint(SoftMaxHeapSizeConstraintFunc,AfterMemoryInit) \ \ - product(size_t, OldSize, ScaleForWordSize(4*M), \ - "(Deprecated) Initial tenured generation size (in bytes)") \ - range(0, max_uintx) \ - \ product(size_t, NewSize, ScaleForWordSize(1*M), \ "Initial new generation size (in bytes)") \ constraint(NewSizeConstraintFunc,AfterErgo) \ diff --git a/src/hotspot/share/gc/shared/genArguments.cpp b/src/hotspot/share/gc/shared/genArguments.cpp index 3eac2e39f38..76f9f6d4052 100644 --- a/src/hotspot/share/gc/shared/genArguments.cpp +++ b/src/hotspot/share/gc/shared/genArguments.cpp @@ -37,6 +37,8 @@ size_t MinNewSize = 0; size_t MinOldSize = 0; size_t MaxOldSize = 0; +size_t OldSize = 0; + size_t GenAlignment = 0; size_t GenArguments::conservative_max_heap_alignment() { return (size_t)Generation::GenGrain; } @@ -152,24 +154,7 @@ void GenArguments::initialize_heap_flags_and_sizes() { vm_exit_during_initialization("Invalid young gen ratio specified"); } - if (OldSize < old_gen_size_lower_bound()) { - FLAG_SET_ERGO(OldSize, old_gen_size_lower_bound()); - } - if (!is_aligned(OldSize, GenAlignment)) { - FLAG_SET_ERGO(OldSize, align_down(OldSize, GenAlignment)); - } - - if (FLAG_IS_CMDLINE(OldSize) && FLAG_IS_DEFAULT(MaxHeapSize)) { - // NewRatio will be used later to set the young generation size so we use - // it to calculate how big the heap should be based on the requested OldSize - // and NewRatio. - assert(NewRatio > 0, "NewRatio should have been set up earlier"); - size_t calculated_heapsize = (OldSize / NewRatio) * (NewRatio + 1); - - calculated_heapsize = align_up(calculated_heapsize, HeapAlignment); - FLAG_SET_ERGO(MaxHeapSize, calculated_heapsize); - FLAG_SET_ERGO(InitialHeapSize, calculated_heapsize); - } + OldSize = old_gen_size_lower_bound(); // Adjust NewSize and OldSize or MaxHeapSize to match each other if (NewSize + OldSize > MaxHeapSize) { @@ -185,23 +170,12 @@ void GenArguments::initialize_heap_flags_and_sizes() { // HeapAlignment, and we just made sure that NewSize is aligned to // GenAlignment. In initialize_flags() we verified that HeapAlignment // is a multiple of GenAlignment. - FLAG_SET_ERGO(OldSize, MaxHeapSize - NewSize); + OldSize = MaxHeapSize - NewSize; } else { FLAG_SET_ERGO(MaxHeapSize, align_up(NewSize + OldSize, HeapAlignment)); } } - // Update NewSize, if possible, to avoid sizing the young gen too small when only - // OldSize is set on the command line. - if (FLAG_IS_CMDLINE(OldSize) && !FLAG_IS_CMDLINE(NewSize)) { - if (OldSize < InitialHeapSize) { - size_t new_size = InitialHeapSize - OldSize; - if (new_size >= MinNewSize && new_size <= MaxNewSize) { - FLAG_SET_ERGO(NewSize, new_size); - } - } - } - DEBUG_ONLY(assert_flags();) } @@ -215,12 +189,6 @@ void GenArguments::initialize_heap_flags_and_sizes() { // In the absence of explicitly set command line flags, policies // such as the use of NewRatio are used to size the generation. -// Minimum sizes of the generations may be different than -// the initial sizes. An inconsistency is permitted here -// in the total size that can be specified explicitly by -// command line specification of OldSize and NewSize and -// also a command line specification of -Xms. Issue a warning -// but allow the values to pass. void GenArguments::initialize_size_info() { GCArguments::initialize_size_info(); @@ -286,37 +254,7 @@ void GenArguments::initialize_size_info() { InitialHeapSize - initial_young_size, MinHeapSize - MinNewSize); - size_t initial_old_size = OldSize; - - // If no explicit command line flag has been set for the - // old generation size, use what is left. - if (!FLAG_IS_CMDLINE(OldSize)) { - // The user has not specified any value but the ergonomics - // may have chosen a value (which may or may not be consistent - // with the overall heap size). In either case make - // the minimum, maximum and initial sizes consistent - // with the young sizes and the overall heap sizes. - initial_old_size = clamp(InitialHeapSize - initial_young_size, MinOldSize, MaxOldSize); - // MaxOldSize and MinOldSize have already been made consistent above. - } else { - // OldSize has been explicitly set on the command line. Use it - // for the initial size but make sure the minimum allow a young - // generation to fit as well. - // If the user has explicitly set an OldSize that is inconsistent - // with other command line flags, issue a warning. - // The generation minimums and the overall heap minimum should - // be within one generation alignment. - if (initial_old_size > MaxOldSize) { - log_warning(gc, ergo)("Inconsistency between maximum heap size and maximum " - "generation sizes: using maximum heap = " SIZE_FORMAT - ", -XX:OldSize flag is being ignored", - MaxHeapSize); - initial_old_size = MaxOldSize; - } else if (initial_old_size < MinOldSize) { - log_warning(gc, ergo)("Inconsistency between initial old size and minimum old size"); - MinOldSize = initial_old_size; - } - } + size_t initial_old_size = clamp(InitialHeapSize - initial_young_size, MinOldSize, MaxOldSize);; // The initial generation sizes should match the initial heap size, // if not issue a warning and resize the generations. This behavior @@ -359,7 +297,7 @@ void GenArguments::initialize_size_info() { } if (OldSize != initial_old_size) { - FLAG_SET_ERGO(OldSize, initial_old_size); + OldSize = initial_old_size; } log_trace(gc, heap)("Minimum old " SIZE_FORMAT " Initial old " SIZE_FORMAT " Maximum old " SIZE_FORMAT, diff --git a/src/hotspot/share/gc/shared/genArguments.hpp b/src/hotspot/share/gc/shared/genArguments.hpp index a4c62ff5afe..dfc392cac6b 100644 --- a/src/hotspot/share/gc/shared/genArguments.hpp +++ b/src/hotspot/share/gc/shared/genArguments.hpp @@ -33,6 +33,8 @@ extern size_t MinNewSize; extern size_t MinOldSize; extern size_t MaxOldSize; +extern size_t OldSize; + extern size_t GenAlignment; class GenArguments : public GCArguments { diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp index 5f89384ba66..38f63354735 100644 --- a/src/hotspot/share/runtime/arguments.cpp +++ b/src/hotspot/share/runtime/arguments.cpp @@ -34,6 +34,7 @@ #include "compiler/compilerDefinitions.hpp" #include "gc/shared/gcArguments.hpp" #include "gc/shared/gcConfig.hpp" +#include "gc/shared/genArguments.hpp" #include "gc/shared/stringdedup/stringDedup.hpp" #include "gc/shared/tlab_globals.hpp" #include "jvm.h" @@ -502,7 +503,6 @@ static SpecialFlag const special_jvm_flags[] = { { "RequireSharedSpaces", JDK_Version::jdk(18), JDK_Version::jdk(19), JDK_Version::undefined() }, { "UseSharedSpaces", JDK_Version::jdk(18), JDK_Version::jdk(19), JDK_Version::undefined() }, { "DontYieldALot", JDK_Version::jdk(23), JDK_Version::jdk(24), JDK_Version::jdk(25) }, - { "OldSize", JDK_Version::jdk(23), JDK_Version::jdk(24), JDK_Version::jdk(25) }, { "PreserveAllAnnotations", JDK_Version::jdk(23), JDK_Version::jdk(24), JDK_Version::jdk(25) }, { "UseNotificationThread", JDK_Version::jdk(23), JDK_Version::jdk(24), JDK_Version::jdk(25) }, { "UseEmptySlotsInSupers", JDK_Version::jdk(23), JDK_Version::jdk(24), JDK_Version::jdk(25) }, @@ -513,6 +513,7 @@ static SpecialFlag const special_jvm_flags[] = { { "MetaspaceReclaimPolicy", JDK_Version::undefined(), JDK_Version::jdk(21), JDK_Version::undefined() }, + { "OldSize", JDK_Version::jdk(23), JDK_Version::jdk(24), JDK_Version::jdk(25) }, #if defined(X86) { "UseRTMLocking", JDK_Version::jdk(23), JDK_Version::jdk(24), JDK_Version::jdk(25) }, { "UseRTMDeopt", JDK_Version::jdk(23), JDK_Version::jdk(24), JDK_Version::jdk(25) }, diff --git a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/HeapSummary.java b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/HeapSummary.java index 41788757e0c..22eb627d39f 100644 --- a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/HeapSummary.java +++ b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/HeapSummary.java @@ -80,7 +80,6 @@ public void run() { printValMB("MaxHeapSize = ", getFlagValue("MaxHeapSize", flagMap)); printValMB("NewSize = ", getFlagValue("NewSize", flagMap)); printValMB("MaxNewSize = ", getFlagValue("MaxNewSize", flagMap)); - printValMB("OldSize = ", getFlagValue("OldSize", flagMap)); printValue("NewRatio = ", getFlagValue("NewRatio", flagMap)); printValue("SurvivorRatio = ", getFlagValue("SurvivorRatio", flagMap)); printValMB("MetaspaceSize = ", getFlagValue("MetaspaceSize", flagMap)); diff --git a/test/hotspot/gtest/gc/shared/test_collectorPolicy.cpp b/test/hotspot/gtest/gc/shared/test_collectorPolicy.cpp index 102ede42de6..b38586a8975 100644 --- a/test/hotspot/gtest/gc/shared/test_collectorPolicy.cpp +++ b/test/hotspot/gtest/gc/shared/test_collectorPolicy.cpp @@ -63,11 +63,9 @@ class TestGenCollectorPolicy { AutoSaveRestore FLAG_GUARD(MaxNewSize); AutoSaveRestore FLAG_GUARD(MinHeapDeltaBytes); AutoSaveRestore FLAG_GUARD(NewSize); - AutoSaveRestore FLAG_GUARD(OldSize); MinHeapSize = 40 * M; FLAG_SET_ERGO(InitialHeapSize, 100 * M); - FLAG_SET_ERGO(OldSize, 4 * M); FLAG_SET_ERGO(NewSize, 1 * M); FLAG_SET_ERGO(MaxNewSize, 80 * M); @@ -144,14 +142,6 @@ class TestGenCollectorPolicy { } }; - class SetOldSizeCmd : public UnaryExecutor { - public: - SetOldSizeCmd(size_t param) : UnaryExecutor(param) { } - void execute() { - FLAG_SET_CMDLINE(OldSize, param); - } - }; - class SetMaxNewSizeCmd : public BinaryExecutor { public: SetMaxNewSizeCmd(size_t param1, size_t param2) : BinaryExecutor(param1, param2) { } @@ -162,49 +152,6 @@ class TestGenCollectorPolicy { FLAG_SET_CMDLINE(MaxNewSize, new_size_value); } }; - - class CheckOldMin : public UnaryExecutor { - public: - CheckOldMin(size_t param) : UnaryExecutor(param) { } - void execute() { - SerialArguments sa; - sa.initialize_heap_sizes(); - ASSERT_LE(MinOldSize, param); - } - }; - - class CheckOldInitial : public Executor { - public: - void execute() { - size_t heap_alignment = GCArguments::compute_heap_alignment(); - - SerialArguments sa; - sa.initialize_heap_sizes(); - - size_t expected_old_initial = align_up(InitialHeapSize, heap_alignment) - - MaxNewSize; - - ASSERT_EQ(expected_old_initial, OldSize); - } - }; - - class CheckOldInitialMaxNewSize : public BinaryExecutor { - public: - CheckOldInitialMaxNewSize(size_t param1, size_t param2) : BinaryExecutor(param1, param2) { } - void execute() { - size_t heap_alignment = GCArguments::compute_heap_alignment(); - size_t new_size_value = align_up(MaxHeapSize, heap_alignment) - - param1 + param2; - - SerialArguments sa; - sa.initialize_heap_sizes(); - - size_t expected_old_initial = align_up(MaxHeapSize, heap_alignment) - - new_size_value; - - ASSERT_EQ(expected_old_initial, OldSize); - } - }; }; @@ -244,29 +191,3 @@ TEST_OTHER_VM(CollectorPolicy, young_cmd) { TestGenCollectorPolicy::CheckYoungInitial checker_large(80 * M); TestGenCollectorPolicy::TestWrapper::test(&setter_large, &checker_large); } - -// Since a flag has been set with FLAG_SET_CMDLINE it -// will be treated as it have been set on the command line for -// the rest of the VM lifetime. This is an irreversible change and -// could impact other tests so we use TEST_OTHER_VM -TEST_OTHER_VM(CollectorPolicy, old_cmd) { - // If OldSize is set on the command line, it should be used - // for both min and initial old size if less than min heap. - TestGenCollectorPolicy::SetOldSizeCmd setter(20 * M); - - TestGenCollectorPolicy::CheckOldMin checker_min(20 * M); - TestGenCollectorPolicy::TestWrapper::test(&setter, &checker_min); - - TestGenCollectorPolicy::CheckOldInitial checker_initial; - TestGenCollectorPolicy::TestWrapper::test(&setter, &checker_initial); - - // If MaxNewSize is large, the maximum OldSize will be less than - // what's requested on the command line and it should be reset - // ergonomically. - // We intentionally set MaxNewSize + OldSize > MaxHeapSize - TestGenCollectorPolicy::SetOldSizeCmd setter_old_size(30 * M); - TestGenCollectorPolicy::SetMaxNewSizeCmd setter_max_new_size(30 * M, 20 * M); - TestGenCollectorPolicy::CheckOldInitialMaxNewSize checker_large(30 * M, 20 * M); - - TestGenCollectorPolicy::TestWrapper::test(&setter_old_size, &setter_max_new_size, &checker_large); -} diff --git a/test/hotspot/jtreg/gc/arguments/TestMaxHeapSizeTools.java b/test/hotspot/jtreg/gc/arguments/TestMaxHeapSizeTools.java index fd784861663..7194e97c768 100644 --- a/test/hotspot/jtreg/gc/arguments/TestMaxHeapSizeTools.java +++ b/test/hotspot/jtreg/gc/arguments/TestMaxHeapSizeTools.java @@ -59,15 +59,10 @@ public static void checkMinInitialMaxHeapFlags(String gcflag) throws Exception { } public static void checkMinInitialErgonomics(String gcflag) throws Exception { - // heap sizing ergonomics use the value NewSize + OldSize as default values - // for ergonomics calculation. Retrieve these values. - long[] values = new long[2]; - getNewOldSize(gcflag, values); - // we check cases with values smaller and larger than this default value. - long newPlusOldSize = values[0] + values[1]; - long smallValue = newPlusOldSize / 2; - long largeValue = newPlusOldSize * 2; + long initialHeapSize = getInitialHeapSize(gcflag); + long smallValue = initialHeapSize / 2; + long largeValue = initialHeapSize * 2; long maxHeapSize = largeValue + (2 * 1024 * 1024); // -Xms is not set @@ -114,14 +109,13 @@ private static long align_up(long value, long alignment) { return (value + alignmentMinusOne) & ~alignmentMinusOne; } - private static void getNewOldSize(String gcflag, long[] values) throws Exception { + private static long getInitialHeapSize(String gcflag) throws Exception { OutputAnalyzer output = GCArguments.executeTestJava(gcflag, "-XX:+PrintFlagsFinal", "-version"); output.shouldHaveExitValue(0); String stdout = output.getStdout(); - values[0] = getFlagValue(" NewSize", stdout); - values[1] = getFlagValue(" OldSize", stdout); + return getFlagValue(" InitialHeapSize", stdout); } public static void checkGenMaxHeapErgo(String gcflag) throws Exception { diff --git a/test/hotspot/jtreg/gc/arguments/TestMaxNewSize.java b/test/hotspot/jtreg/gc/arguments/TestMaxNewSize.java index 3f741ab1440..d967a4f609f 100644 --- a/test/hotspot/jtreg/gc/arguments/TestMaxNewSize.java +++ b/test/hotspot/jtreg/gc/arguments/TestMaxNewSize.java @@ -29,7 +29,7 @@ * @summary Make sure that MaxNewSize always has a useful value after argument * processing. * @key flag-sensitive - * @requires vm.gc.Serial & vm.opt.MaxNewSize == null & vm.opt.NewRatio == null & vm.opt.NewSize == null & vm.opt.OldSize == null + * @requires vm.gc.Serial & vm.opt.MaxNewSize == null & vm.opt.NewRatio == null & vm.opt.NewSize == null * @library /test/lib * @library / * @modules java.base/jdk.internal.misc @@ -44,7 +44,7 @@ * @summary Make sure that MaxNewSize always has a useful value after argument * processing. * @key flag-sensitive - * @requires vm.gc.Parallel & vm.opt.MaxNewSize == null & vm.opt.NewRatio == null & vm.opt.NewSize == null & vm.opt.OldSize == null + * @requires vm.gc.Parallel & vm.opt.MaxNewSize == null & vm.opt.NewRatio == null & vm.opt.NewSize == null * @library /test/lib * @library / * @modules java.base/jdk.internal.misc @@ -59,7 +59,7 @@ * @summary Make sure that MaxNewSize always has a useful value after argument * processing. * @key flag-sensitive - * @requires vm.gc.G1 & vm.opt.MaxNewSize == null & vm.opt.NewRatio == null & vm.opt.NewSize == null & vm.opt.OldSize == null + * @requires vm.gc.G1 & vm.opt.MaxNewSize == null & vm.opt.NewRatio == null & vm.opt.NewSize == null * @library /test/lib * @library / * @modules java.base/jdk.internal.misc @@ -116,7 +116,6 @@ public static void main(String args[]) throws Exception { checkMaxNewSize(new String[] { gcName, "-Xmx128M" }, 128 * M); checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-XX:NewRatio=5" }, 128 * M); checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-XX:NewSize=32M" }, 128 * M); - checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-XX:OldSize=96M" }, 128 * M); checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-XX:MaxNewSize=32M" }, 32 * M); checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-XX:NewSize=32M", "-XX:MaxNewSize=32M" }, 32 * M); checkMaxNewSize(new String[] { gcName, "-Xmx128M", "-XX:NewRatio=6", "-XX:MaxNewSize=32M" }, 32 * M); diff --git a/test/hotspot/jtreg/gc/g1/TestInvalidateArrayCopy.java b/test/hotspot/jtreg/gc/g1/TestInvalidateArrayCopy.java index 2e5b3c0a363..84140ae1679 100644 --- a/test/hotspot/jtreg/gc/g1/TestInvalidateArrayCopy.java +++ b/test/hotspot/jtreg/gc/g1/TestInvalidateArrayCopy.java @@ -29,7 +29,7 @@ * @summary Check that benign (0-sized) out of heap bounds card table invalidations do not assert. * @requires vm.gc.G1 * @requires vm.debug - * @run main/othervm -XX:NewSize=1M -Xlog:gc -XX:MaxNewSize=1m -XX:-UseTLAB -XX:OldSize=63M -XX:MaxHeapSize=64M gc.g1.TestInvalidateArrayCopy + * @run main/othervm -XX:NewSize=1M -Xlog:gc -XX:MaxNewSize=1m -XX:-UseTLAB -XX:MaxHeapSize=64M gc.g1.TestInvalidateArrayCopy */ // The test allocates zero-sized arrays of j.l.O and tries to arraycopy random data into it so diff --git a/test/hotspot/jtreg/gc/g1/plab/lib/PLABUtils.java b/test/hotspot/jtreg/gc/g1/plab/lib/PLABUtils.java index 0ae28ab9d55..b9192c45fbf 100644 --- a/test/hotspot/jtreg/gc/g1/plab/lib/PLABUtils.java +++ b/test/hotspot/jtreg/gc/g1/plab/lib/PLABUtils.java @@ -40,7 +40,6 @@ public class PLABUtils { private final static String[] GC_TUNE_OPTIONS = { "-XX:+UseG1GC", "-XX:G1HeapRegionSize=1m", - "-XX:OldSize=64m", "-XX:-UseAdaptiveSizePolicy", "-XX:MaxTenuringThreshold=1", "-XX:-UseTLAB", diff --git a/test/hotspot/jtreg/runtime/CommandLine/OptionsValidation/TestOptionsWithRanges.java b/test/hotspot/jtreg/runtime/CommandLine/OptionsValidation/TestOptionsWithRanges.java index 12bced849d9..033b74f7eb1 100644 --- a/test/hotspot/jtreg/runtime/CommandLine/OptionsValidation/TestOptionsWithRanges.java +++ b/test/hotspot/jtreg/runtime/CommandLine/OptionsValidation/TestOptionsWithRanges.java @@ -240,7 +240,6 @@ public static void main(String[] args) throws Exception { excludeTestMaxRange("MaxHeapSize"); excludeTestMaxRange("MaxRAM"); excludeTestMaxRange("NewSize"); - excludeTestMaxRange("OldSize"); excludeTestMaxRange("ParallelGCThreads"); excludeTestMaxRange("TLABSize"); diff --git a/test/hotspot/jtreg/vmTestbase/gc/huge/quicklook/largeheap/MemOptions/MemOptionsTest.java b/test/hotspot/jtreg/vmTestbase/gc/huge/quicklook/largeheap/MemOptions/MemOptionsTest.java index 67e629fddcd..4547bcdbc30 100644 --- a/test/hotspot/jtreg/vmTestbase/gc/huge/quicklook/largeheap/MemOptions/MemOptionsTest.java +++ b/test/hotspot/jtreg/vmTestbase/gc/huge/quicklook/largeheap/MemOptions/MemOptionsTest.java @@ -79,10 +79,6 @@ public void test() throws IOException { // positive("Initial young generation size at 32-bit range", "-Xmx5G", "-XX:NewSize=4G"); // positive("Initial young generation size outside 32-bit range", "-Xmx5G", "-XX:NewSize=4G"); - // positive("Initial old generation size within 32-bit range", "-Xmx3G", "-XX:OldSize=2G"); - // positive("Initial old generation size at 32-bit range", "-Xmx5G", "-XX:OldSize=4G"); - // positive("Initial old generation size outside 32-bit range", "-Xmx5G", "-XX:OldSize=4G"); - if (!failed.isEmpty()) { throw new AssertionError(String.format("%d cases failed : %s", failed.size(), failed)); } diff --git a/test/jdk/jdk/jfr/event/runtime/TestSizeTFlags.java b/test/jdk/jdk/jfr/event/runtime/TestSizeTFlags.java index c2ad220d78d..ae21537840f 100644 --- a/test/jdk/jdk/jfr/event/runtime/TestSizeTFlags.java +++ b/test/jdk/jdk/jfr/event/runtime/TestSizeTFlags.java @@ -40,13 +40,12 @@ * @key jfr * @summary Test checks that flags of type size_t are being sent to the jfr * @library /test/lib - * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:-UseFastUnorderedTimeStamps -XX:+UseG1GC -XX:+UseTLAB -XX:MinTLABSize=3k -XX:OldSize=30m -XX:YoungPLABSize=3k -XX:MaxDirectMemorySize=5M jdk.jfr.event.runtime.TestSizeTFlags + * @run main/othervm -XX:+UnlockExperimentalVMOptions -XX:-UseFastUnorderedTimeStamps -XX:+UseG1GC -XX:+UseTLAB -XX:MinTLABSize=3k -XX:YoungPLABSize=3k -XX:MaxDirectMemorySize=5M jdk.jfr.event.runtime.TestSizeTFlags */ public class TestSizeTFlags { private static final String EVENT_NAME = EventNames.UnsignedLongFlag; - private static final int NUMBER_OF_FLAGS_TO_CHECK = 4; + private static final int NUMBER_OF_FLAGS_TO_CHECK = 3; private static final long MIN_TLAB_SIZE_FLAG_VALUE = 3*1024L; - private static final long OLD_SIZE_FLAG_VALUE = 30*1024*1024L; private static final long YOUNG_PLAB_SIZE_FLAG_VALUE = 3*1024L; private static final long MAX_DIRECT_MEMORY_SIZE_FLAG_VALUE = 5*1024*1024L; @@ -71,16 +70,12 @@ public static void main(String[] args) throws Exception { flagsFoundWithExpectedValue[0] = MIN_TLAB_SIZE_FLAG_VALUE == value; continue; } - case "OldSize": { - flagsFoundWithExpectedValue[1] = OLD_SIZE_FLAG_VALUE == value; - continue; - } case "YoungPLABSize": { - flagsFoundWithExpectedValue[2] = YOUNG_PLAB_SIZE_FLAG_VALUE == value; + flagsFoundWithExpectedValue[1] = YOUNG_PLAB_SIZE_FLAG_VALUE == value; continue; } case "MaxDirectMemorySize": { - flagsFoundWithExpectedValue[3] = MAX_DIRECT_MEMORY_SIZE_FLAG_VALUE == value; + flagsFoundWithExpectedValue[2] = MAX_DIRECT_MEMORY_SIZE_FLAG_VALUE == value; continue; } default: { diff --git a/test/jdk/sun/tools/jhsdb/heapconfig/JMapHeapConfigTest.java b/test/jdk/sun/tools/jhsdb/heapconfig/JMapHeapConfigTest.java index 53330c08618..89a5801cff7 100644 --- a/test/jdk/sun/tools/jhsdb/heapconfig/JMapHeapConfigTest.java +++ b/test/jdk/sun/tools/jhsdb/heapconfig/JMapHeapConfigTest.java @@ -54,7 +54,6 @@ public class JMapHeapConfigTest { "MaxHeapSize", "NewSize", "MaxNewSize", - "OldSize", "NewRatio", "SurvivorRatio", "MetaspaceSize", From 801bf15f02ca47c3547eb677079d7d2f3af1de8c Mon Sep 17 00:00:00 2001 From: Thomas Stuefe Date: Mon, 17 Jun 2024 17:27:01 +0000 Subject: [PATCH 36/70] 8332105: Exploded JDK does not include CDS Reviewed-by: dholmes, iklam --- src/hotspot/share/prims/whitebox.cpp | 6 +++++- .../CompressedCPUSpecificClassSpaceReservation.java | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/hotspot/share/prims/whitebox.cpp b/src/hotspot/share/prims/whitebox.cpp index a45be186aa4..821444ea389 100644 --- a/src/hotspot/share/prims/whitebox.cpp +++ b/src/hotspot/share/prims/whitebox.cpp @@ -29,6 +29,7 @@ #include "cds/filemap.hpp" #include "cds/heapShared.hpp" #include "cds/metaspaceShared.hpp" +#include "classfile/classLoader.hpp" #include "classfile/classLoaderDataGraph.hpp" #include "classfile/classLoaderStats.hpp" #include "classfile/classPrinter.hpp" @@ -2115,7 +2116,10 @@ WB_END WB_ENTRY(jboolean, WB_IsCDSIncluded(JNIEnv* env)) #if INCLUDE_CDS - return true; + // An exploded build inhibits use of CDS. Therefore, for the + // purpose of testing, the JVM can be treated as not having CDS + // built in at all. + return ClassLoader::has_jrt_entry(); #else return false; #endif // INCLUDE_CDS diff --git a/test/hotspot/jtreg/runtime/CompressedOops/CompressedCPUSpecificClassSpaceReservation.java b/test/hotspot/jtreg/runtime/CompressedOops/CompressedCPUSpecificClassSpaceReservation.java index 8a25b1eff88..f1b4c7143b4 100644 --- a/test/hotspot/jtreg/runtime/CompressedOops/CompressedCPUSpecificClassSpaceReservation.java +++ b/test/hotspot/jtreg/runtime/CompressedOops/CompressedCPUSpecificClassSpaceReservation.java @@ -26,6 +26,7 @@ * @summary Test the various CPU-specific reservation schemes * @requires vm.bits == 64 & !vm.graal.enabled & vm.debug == true * @requires vm.flagless + * @requires vm.cds * @requires (os.family != "windows") & (os.family != "aix") * @library /test/lib * @modules java.base/jdk.internal.misc From ba5a4670b8ad86fefb41a939752754bf36aac9dc Mon Sep 17 00:00:00 2001 From: Phil Race Date: Mon, 17 Jun 2024 19:37:32 +0000 Subject: [PATCH 37/70] 8332854: Unable to build openjdk with --with-harfbuzz=system Reviewed-by: jwaters, erikj, jdv, ihse --- make/modules/java.desktop/lib/ClientLibraries.gmk | 1 + 1 file changed, 1 insertion(+) diff --git a/make/modules/java.desktop/lib/ClientLibraries.gmk b/make/modules/java.desktop/lib/ClientLibraries.gmk index 6f3616608cc..f0239695369 100644 --- a/make/modules/java.desktop/lib/ClientLibraries.gmk +++ b/make/modules/java.desktop/lib/ClientLibraries.gmk @@ -281,6 +281,7 @@ endif ifeq ($(USE_EXTERNAL_HARFBUZZ), true) LIBFONTMANAGER_EXTRA_SRC = LIBFONTMANAGER_LIBS += $(HARFBUZZ_LIBS) + LIBFONTMANAGER_CFLAGS += $(HARFBUZZ_CFLAGS) else LIBFONTMANAGER_EXTRA_SRC = libharfbuzz From e95f092862307c248bbd93e7026cbd92053fb4c9 Mon Sep 17 00:00:00 2001 From: Gui Cao Date: Tue, 18 Jun 2024 05:24:33 +0000 Subject: [PATCH 38/70] 8333964: RISC-V: C2: Check "requires_strict_order" flag for floating-point add reduction Reviewed-by: fyang --- src/hotspot/cpu/riscv/riscv_v.ad | 50 +++++++++++++++++-- .../superword/TestVectorFPReduction.java | 4 +- .../vectorapi/TestVectorAddMulReduction.java | 14 +++--- 3 files changed, 55 insertions(+), 13 deletions(-) diff --git a/src/hotspot/cpu/riscv/riscv_v.ad b/src/hotspot/cpu/riscv/riscv_v.ad index 4a71da9f20c..841e8cb260c 100644 --- a/src/hotspot/cpu/riscv/riscv_v.ad +++ b/src/hotspot/cpu/riscv/riscv_v.ad @@ -2007,11 +2007,20 @@ instruct reduce_addL(iRegLNoSp dst, iRegL src1, vReg src2, vReg tmp) %{ ins_pipe(pipe_slow); %} -instruct reduce_addF(fRegF dst, fRegF src1, vReg src2, vReg tmp) %{ +// Distinguish two cases based on requires_strict_order +// 1. Non strictly-ordered AddReductionVF/D. For example, AddReductionVF/D +// generated by Vector API. It is more beneficial performance-wise to do +// an unordered FP reduction sum (vfredusum.vs). +// 2. Strictly-ordered AddReductionVF/D. For example, AddReductionVF/D +// generated by auto-vectorization. Must do an ordered FP reduction sum +// (vfredosum.vs). + +instruct reduce_addF_ordered(fRegF dst, fRegF src1, vReg src2, vReg tmp) %{ + predicate(n->as_Reduction()->requires_strict_order()); match(Set dst (AddReductionVF src1 src2)); effect(TEMP tmp); ins_cost(VEC_COST); - format %{ "reduce_addF $dst, $src1, $src2\t# KILL $tmp" %} + format %{ "reduce_addF_ordered $dst, $src1, $src2\t# KILL $tmp" %} ins_encode %{ __ vsetvli_helper(T_FLOAT, Matcher::vector_length(this, $src2)); __ vfmv_s_f(as_VectorRegister($tmp$$reg), $src1$$FloatRegister); @@ -2022,11 +2031,28 @@ instruct reduce_addF(fRegF dst, fRegF src1, vReg src2, vReg tmp) %{ ins_pipe(pipe_slow); %} -instruct reduce_addD(fRegD dst, fRegD src1, vReg src2, vReg tmp) %{ +instruct reduce_addF_unordered(fRegF dst, fRegF src1, vReg src2, vReg tmp) %{ + predicate(!n->as_Reduction()->requires_strict_order()); + match(Set dst (AddReductionVF src1 src2)); + effect(TEMP tmp); + ins_cost(VEC_COST); + format %{ "reduce_addF_unordered $dst, $src1, $src2\t# KILL $tmp" %} + ins_encode %{ + __ vsetvli_helper(T_FLOAT, Matcher::vector_length(this, $src2)); + __ vfmv_s_f(as_VectorRegister($tmp$$reg), $src1$$FloatRegister); + __ vfredusum_vs(as_VectorRegister($tmp$$reg), as_VectorRegister($src2$$reg), + as_VectorRegister($tmp$$reg)); + __ vfmv_f_s($dst$$FloatRegister, as_VectorRegister($tmp$$reg)); + %} + ins_pipe(pipe_slow); +%} + +instruct reduce_addD_ordered(fRegD dst, fRegD src1, vReg src2, vReg tmp) %{ + predicate(n->as_Reduction()->requires_strict_order()); match(Set dst (AddReductionVD src1 src2)); effect(TEMP tmp); ins_cost(VEC_COST); - format %{ "reduce_addD $dst, $src1, $src2\t# KILL $tmp" %} + format %{ "reduce_addD_ordered $dst, $src1, $src2\t# KILL $tmp" %} ins_encode %{ __ vsetvli_helper(T_DOUBLE, Matcher::vector_length(this, $src2)); __ vfmv_s_f(as_VectorRegister($tmp$$reg), $src1$$FloatRegister); @@ -2037,6 +2063,22 @@ instruct reduce_addD(fRegD dst, fRegD src1, vReg src2, vReg tmp) %{ ins_pipe(pipe_slow); %} +instruct reduce_addD_unordered(fRegD dst, fRegD src1, vReg src2, vReg tmp) %{ + predicate(!n->as_Reduction()->requires_strict_order()); + match(Set dst (AddReductionVD src1 src2)); + effect(TEMP tmp); + ins_cost(VEC_COST); + format %{ "reduce_addD_unordered $dst, $src1, $src2\t# KILL $tmp" %} + ins_encode %{ + __ vsetvli_helper(T_DOUBLE, Matcher::vector_length(this, $src2)); + __ vfmv_s_f(as_VectorRegister($tmp$$reg), $src1$$FloatRegister); + __ vfredusum_vs(as_VectorRegister($tmp$$reg), as_VectorRegister($src2$$reg), + as_VectorRegister($tmp$$reg)); + __ vfmv_f_s($dst$$FloatRegister, as_VectorRegister($tmp$$reg)); + %} + ins_pipe(pipe_slow); +%} + // vector add reduction - predicated instruct reduce_addI_masked(iRegINoSp dst, iRegIorL2I src1, vReg src2, vRegMask_V0 v0, vReg tmp) %{ diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestVectorFPReduction.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestVectorFPReduction.java index 327e6e5e12d..b328d4135ec 100644 --- a/test/hotspot/jtreg/compiler/loopopts/superword/TestVectorFPReduction.java +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestVectorFPReduction.java @@ -54,7 +54,7 @@ public static void main(String[] args) { applyIfCPUFeatureAnd = {"asimd", "true", "sve", "false"}) @IR(counts = {"requires_strict_order", ">=1", IRNode.ADD_REDUCTION_VF, ">=1"}, failOn = {"no_strict_order"}, - applyIfCPUFeatureOr = {"sve", "true", "sse2", "true"}, + applyIfCPUFeatureOr = {"sve", "true", "sse2", "true", "rvv", "true"}, phase = CompilePhase.PRINT_IDEAL) private static void testAddReductionVF() { float result = 1; @@ -69,7 +69,7 @@ private static void testAddReductionVF() { applyIfCPUFeatureAnd = {"asimd", "true", "sve", "false"}) @IR(counts = {"requires_strict_order", ">=1", IRNode.ADD_REDUCTION_VD, ">=1"}, failOn = {"no_strict_order"}, - applyIfCPUFeatureOr = {"sve", "true", "sse2", "true"}, + applyIfCPUFeatureOr = {"sve", "true", "sse2", "true", "rvv", "true"}, phase = CompilePhase.PRINT_IDEAL) private static void testAddReductionVD() { double result = 1; diff --git a/test/hotspot/jtreg/compiler/vectorapi/TestVectorAddMulReduction.java b/test/hotspot/jtreg/compiler/vectorapi/TestVectorAddMulReduction.java index 549d9aa5d49..38a2753a7ed 100644 --- a/test/hotspot/jtreg/compiler/vectorapi/TestVectorAddMulReduction.java +++ b/test/hotspot/jtreg/compiler/vectorapi/TestVectorAddMulReduction.java @@ -78,7 +78,7 @@ public static void testFloatAddKernel(VectorSpecies SPECIES, float[] f) { @Test @IR(counts = {IRNode.ADD_REDUCTION_VF, ">=1", "no_strict_order", ">=1"}, failOn = {"requires_strict_order"}, - applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, + applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, applyIf = {"MaxVectorSize", ">=8"}, phase = CompilePhase.PRINT_IDEAL) public static void testFloatAdd_64() { @@ -88,7 +88,7 @@ public static void testFloatAdd_64() { @Test @IR(counts = {IRNode.ADD_REDUCTION_VF, ">=1", "no_strict_order", ">=1"}, failOn = {"requires_strict_order"}, - applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, + applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, applyIf = {"MaxVectorSize", ">=16"}, phase = CompilePhase.PRINT_IDEAL) public static void testFloatAdd_128() { @@ -98,7 +98,7 @@ public static void testFloatAdd_128() { @Test @IR(counts = {IRNode.ADD_REDUCTION_VF, ">=1", "no_strict_order", ">=1"}, failOn = {"requires_strict_order"}, - applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, + applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, applyIf = {"MaxVectorSize", ">=32"}, phase = CompilePhase.PRINT_IDEAL) public static void testFloatAdd_256() { @@ -108,7 +108,7 @@ public static void testFloatAdd_256() { @Test @IR(counts = {IRNode.ADD_REDUCTION_VF, ">=1", "no_strict_order", ">=1"}, failOn = {"requires_strict_order"}, - applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, + applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, applyIf = {"MaxVectorSize", ">=64"}, phase = CompilePhase.PRINT_IDEAL) public static void testFloatAdd_512() { @@ -127,7 +127,7 @@ public static void testDoubleAddKernel(VectorSpecies SPECIES, double[] d) { @Test @IR(counts = {IRNode.ADD_REDUCTION_VD, ">=1", "no_strict_order", ">=1"}, failOn = {"requires_strict_order"}, - applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, + applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, applyIf = {"MaxVectorSize", ">=16"}, phase = CompilePhase.PRINT_IDEAL) public static void testDoubleAdd_128() { @@ -137,7 +137,7 @@ public static void testDoubleAdd_128() { @Test @IR(counts = {IRNode.ADD_REDUCTION_VD, ">=1", "no_strict_order", ">=1"}, failOn = {"requires_strict_order"}, - applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, + applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, applyIf = {"MaxVectorSize", ">=32"}, phase = CompilePhase.PRINT_IDEAL) public static void testDoubleAdd_256() { @@ -147,7 +147,7 @@ public static void testDoubleAdd_256() { @Test @IR(counts = {IRNode.ADD_REDUCTION_VD, ">=1", "no_strict_order", ">=1"}, failOn = {"requires_strict_order"}, - applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true"}, + applyIfCPUFeatureOr = {"asimd", "true", "sse2", "true", "rvv", "true"}, applyIf = {"MaxVectorSize", ">=64"}, phase = CompilePhase.PRINT_IDEAL) public static void testDoubleAdd_512() { From 0199fee431e0dccdd570b38595ea29c760dbed44 Mon Sep 17 00:00:00 2001 From: Martin Doerr Date: Tue, 18 Jun 2024 06:48:26 +0000 Subject: [PATCH 39/70] 8333639: ubsan: cppVtables.cpp:81:55: runtime error: index 14 out of bounds for type 'long int [1]' Reviewed-by: aboldtch, mbaesken, kbarrett --- src/hotspot/share/cds/cppVtables.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/hotspot/share/cds/cppVtables.cpp b/src/hotspot/share/cds/cppVtables.cpp index f17d94a82fd..6dd5e65ae43 100644 --- a/src/hotspot/share/cds/cppVtables.cpp +++ b/src/hotspot/share/cds/cppVtables.cpp @@ -66,19 +66,17 @@ class CppVtableInfo { intptr_t _vtable_size; - intptr_t _cloned_vtable[1]; + intptr_t _cloned_vtable[1]; // Pseudo flexible array member. + static size_t cloned_vtable_offset() { return offset_of(CppVtableInfo, _cloned_vtable); } public: - static int num_slots(int vtable_size) { - return 1 + vtable_size; // Need to add the space occupied by _vtable_size; - } int vtable_size() { return int(uintx(_vtable_size)); } void set_vtable_size(int n) { _vtable_size = intptr_t(n); } - intptr_t* cloned_vtable() { return &_cloned_vtable[0]; } - void zero() { memset(_cloned_vtable, 0, sizeof(intptr_t) * vtable_size()); } + // Using _cloned_vtable[i] for i > 0 causes undefined behavior. We use address calculation instead. + intptr_t* cloned_vtable() { return (intptr_t*)((char*)this + cloned_vtable_offset()); } + void zero() { memset(cloned_vtable(), 0, sizeof(intptr_t) * vtable_size()); } // Returns the address of the next CppVtableInfo that can be placed immediately after this CppVtableInfo static size_t byte_size(int vtable_size) { - CppVtableInfo i; - return pointer_delta(&i._cloned_vtable[vtable_size], &i, sizeof(u1)); + return cloned_vtable_offset() + (sizeof(intptr_t) * vtable_size); } }; From 99fefec092f49cd759f93aa75e008cfa06d2a183 Mon Sep 17 00:00:00 2001 From: Christian Stein Date: Tue, 18 Jun 2024 07:25:17 +0000 Subject: [PATCH 40/70] 8331431: Update to use jtreg 7.4 Reviewed-by: ihse, erikj, jpai --- make/autoconf/lib-tests.m4 | 4 ++-- make/conf/github-actions.conf | 2 +- make/conf/jib-profiles.js | 4 ++-- test/hotspot/jtreg/TEST.ROOT | 4 ++-- test/jaxp/TEST.ROOT | 2 +- test/jdk/TEST.ROOT | 2 +- test/langtools/TEST.ROOT | 2 +- test/lib-test/TEST.ROOT | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/make/autoconf/lib-tests.m4 b/make/autoconf/lib-tests.m4 index be099e50a04..955b8c9ba83 100644 --- a/make/autoconf/lib-tests.m4 +++ b/make/autoconf/lib-tests.m4 @@ -1,5 +1,5 @@ # -# Copyright (c) 2018, 2023, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -28,7 +28,7 @@ ################################################################################ # Minimum supported versions -JTREG_MINIMUM_VERSION=7.3.1 +JTREG_MINIMUM_VERSION=7.4 GTEST_MINIMUM_VERSION=1.14.0 ############################################################################### diff --git a/make/conf/github-actions.conf b/make/conf/github-actions.conf index f6b00bd2a13..deb5e36f605 100644 --- a/make/conf/github-actions.conf +++ b/make/conf/github-actions.conf @@ -26,7 +26,7 @@ # Versions and download locations for dependencies used by GitHub Actions (GHA) GTEST_VERSION=1.14.0 -JTREG_VERSION=7.3.1+1 +JTREG_VERSION=7.4+1 LINUX_X64_BOOT_JDK_EXT=tar.gz LINUX_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk22/830ec9fcccef480bb3e73fb7ecafe059/36/GPL/openjdk-22_linux-x64_bin.tar.gz diff --git a/make/conf/jib-profiles.js b/make/conf/jib-profiles.js index b6f091398d5..30c45d4cde1 100644 --- a/make/conf/jib-profiles.js +++ b/make/conf/jib-profiles.js @@ -1184,9 +1184,9 @@ var getJibProfilesDependencies = function (input, common) { jtreg: { server: "jpg", product: "jtreg", - version: "7.3.1", + version: "7.4", build_number: "1", - file: "bundles/jtreg-7.3.1+1.zip", + file: "bundles/jtreg-7.4+1.zip", environment_name: "JT_HOME", environment_path: input.get("jtreg", "home_path") + "/bin", configure_args: "--with-jtreg=" + input.get("jtreg", "home_path"), diff --git a/test/hotspot/jtreg/TEST.ROOT b/test/hotspot/jtreg/TEST.ROOT index 4c9a28a3076..5f4c52186a7 100644 --- a/test/hotspot/jtreg/TEST.ROOT +++ b/test/hotspot/jtreg/TEST.ROOT @@ -1,5 +1,5 @@ # -# Copyright (c) 2005, 2023, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -90,7 +90,7 @@ requires.properties= \ jdk.containerized # Minimum jtreg version -requiredVersion=7.3.1+1 +requiredVersion=7.4+1 # Path to libraries in the topmost test directory. This is needed so @library # does not need ../../../ notation to reach them diff --git a/test/jaxp/TEST.ROOT b/test/jaxp/TEST.ROOT index a44ad3a7c01..8098695b80e 100644 --- a/test/jaxp/TEST.ROOT +++ b/test/jaxp/TEST.ROOT @@ -23,7 +23,7 @@ modules=java.xml groups=TEST.groups # Minimum jtreg version -requiredVersion=7.3.1+1 +requiredVersion=7.4+1 # Path to libraries in the topmost test directory. This is needed so @library # does not need ../../ notation to reach them diff --git a/test/jdk/TEST.ROOT b/test/jdk/TEST.ROOT index bfa99c72b66..67eceaa5a3e 100644 --- a/test/jdk/TEST.ROOT +++ b/test/jdk/TEST.ROOT @@ -106,7 +106,7 @@ requires.properties= \ jdk.foreign.linker # Minimum jtreg version -requiredVersion=7.3.1+1 +requiredVersion=7.4+1 # Path to libraries in the topmost test directory. This is needed so @library # does not need ../../ notation to reach them diff --git a/test/langtools/TEST.ROOT b/test/langtools/TEST.ROOT index da884dee170..11daad5244f 100644 --- a/test/langtools/TEST.ROOT +++ b/test/langtools/TEST.ROOT @@ -15,7 +15,7 @@ keys=intermittent randomness needs-src needs-src-jdk_javadoc groups=TEST.groups # Minimum jtreg version -requiredVersion=7.3.1+1 +requiredVersion=7.4+1 # Use new module options useNewOptions=true diff --git a/test/lib-test/TEST.ROOT b/test/lib-test/TEST.ROOT index 9b91a0dfcc1..27576a2d040 100644 --- a/test/lib-test/TEST.ROOT +++ b/test/lib-test/TEST.ROOT @@ -1,5 +1,5 @@ # -# Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -29,7 +29,7 @@ keys=randomness # Minimum jtreg version -requiredVersion=7.3.1+1 +requiredVersion=7.4+1 # Path to libraries in the topmost test directory. This is needed so @library # does not need ../../ notation to reach them From 0665195e59889c3f8dc5ade6521d6ca2eb4ca8b4 Mon Sep 17 00:00:00 2001 From: Albert Mingkun Yang Date: Tue, 18 Jun 2024 08:27:26 +0000 Subject: [PATCH 41/70] 8334293: G1: Refactor G1ConcurrentMark::update_top_at_rebuild_start Reviewed-by: tschatzl, iwalulya --- src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp | 9 +++------ src/hotspot/share/gc/g1/g1RemSetTrackingPolicy.cpp | 8 -------- src/hotspot/share/gc/g1/g1RemSetTrackingPolicy.hpp | 3 --- 3 files changed, 3 insertions(+), 17 deletions(-) diff --git a/src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp b/src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp index 9f165cf1d22..7b9be48d9b5 100644 --- a/src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp +++ b/src/hotspot/share/gc/g1/g1ConcurrentMark.inline.hpp @@ -214,17 +214,14 @@ inline HeapWord* G1ConcurrentMark::top_at_rebuild_start(G1HeapRegion* r) const { } inline void G1ConcurrentMark::update_top_at_rebuild_start(G1HeapRegion* r) { + assert(r->is_old() || r->is_humongous(), "precondition"); + uint const region = r->hrm_index(); assert(region < _g1h->max_reserved_regions(), "Tried to access TARS for region %u out of bounds", region); assert(_top_at_rebuild_starts[region] == nullptr, "TARS for region %u has already been set to " PTR_FORMAT " should be null", region, p2i(_top_at_rebuild_starts[region])); - G1RemSetTrackingPolicy* tracker = _g1h->policy()->remset_tracker(); - if (tracker->needs_scan_for_rebuild(r)) { - _top_at_rebuild_starts[region] = r->top(); - } else { - // Leave TARS at null. - } + _top_at_rebuild_starts[region] = r->top(); } inline void G1CMTask::update_liveness(oop const obj, const size_t obj_size) { diff --git a/src/hotspot/share/gc/g1/g1RemSetTrackingPolicy.cpp b/src/hotspot/share/gc/g1/g1RemSetTrackingPolicy.cpp index 6a97deacfab..21b188c00c2 100644 --- a/src/hotspot/share/gc/g1/g1RemSetTrackingPolicy.cpp +++ b/src/hotspot/share/gc/g1/g1RemSetTrackingPolicy.cpp @@ -30,14 +30,6 @@ #include "gc/g1/g1RemSetTrackingPolicy.hpp" #include "runtime/safepoint.hpp" -bool G1RemSetTrackingPolicy::needs_scan_for_rebuild(G1HeapRegion* r) const { - // All non-free and non-young regions need to be scanned for references; - // At every gc we gather references to other regions in young. - // Free regions trivially do not need scanning because they do not contain live - // objects. - return !(r->is_young() || r->is_free()); -} - void G1RemSetTrackingPolicy::update_at_allocate(G1HeapRegion* r) { assert(r->is_young() || r->is_humongous() || r->is_old(), "Region %u with unexpected heap region type %s", r->hrm_index(), r->get_type_str()); diff --git a/src/hotspot/share/gc/g1/g1RemSetTrackingPolicy.hpp b/src/hotspot/share/gc/g1/g1RemSetTrackingPolicy.hpp index 7560b726080..a89c24e6f4e 100644 --- a/src/hotspot/share/gc/g1/g1RemSetTrackingPolicy.hpp +++ b/src/hotspot/share/gc/g1/g1RemSetTrackingPolicy.hpp @@ -34,9 +34,6 @@ // set is complete. class G1RemSetTrackingPolicy : public CHeapObj { public: - // Do we need to scan the given region to get all outgoing references for remembered - // set rebuild? - bool needs_scan_for_rebuild(G1HeapRegion* r) const; // Update remembered set tracking state at allocation of the region. May be // called at any time. The caller makes sure that the changes to the remembered // set state are visible to other threads. From b42fe86e817ec6975c869f46922797f546734ee0 Mon Sep 17 00:00:00 2001 From: Albert Mingkun Yang Date: Tue, 18 Jun 2024 08:33:02 +0000 Subject: [PATCH 42/70] 8334097: Parallel: Obsolete HeapFirstMaximumCompactionCount Reviewed-by: tschatzl, dholmes --- src/hotspot/share/gc/parallel/parallel_globals.hpp | 4 ---- src/hotspot/share/gc/parallel/psParallelCompact.cpp | 3 +-- src/hotspot/share/runtime/arguments.cpp | 2 ++ 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/hotspot/share/gc/parallel/parallel_globals.hpp b/src/hotspot/share/gc/parallel/parallel_globals.hpp index 291dd5d73c6..e3b9660b069 100644 --- a/src/hotspot/share/gc/parallel/parallel_globals.hpp +++ b/src/hotspot/share/gc/parallel/parallel_globals.hpp @@ -36,10 +36,6 @@ "any dead space)") \ range(0, max_uintx) \ \ - product(uintx, HeapFirstMaximumCompactionCount, 3, \ - "The collection count for the first maximum compaction") \ - range(0, max_uintx) \ - \ product(bool, UseMaximumCompactionOnSystemGC, true, \ "Use maximum compaction in the Parallel Old garbage collector " \ "for a system GC") \ diff --git a/src/hotspot/share/gc/parallel/psParallelCompact.cpp b/src/hotspot/share/gc/parallel/psParallelCompact.cpp index e0d174dcc6a..6c085034384 100644 --- a/src/hotspot/share/gc/parallel/psParallelCompact.cpp +++ b/src/hotspot/share/gc/parallel/psParallelCompact.cpp @@ -837,8 +837,7 @@ bool PSParallelCompact::reassess_maximum_compaction(bool maximum_compaction, const uint total_invocations = ParallelScavengeHeap::heap()->total_full_collections(); assert(total_invocations >= _maximum_compaction_gc_num, "sanity"); const size_t gcs_since_max = total_invocations - _maximum_compaction_gc_num; - const bool is_interval_ended = gcs_since_max > HeapMaximumCompactionInterval - || total_invocations == HeapFirstMaximumCompactionCount; + const bool is_interval_ended = gcs_since_max > HeapMaximumCompactionInterval; // If all regions in old-gen are full const bool is_region_full = diff --git a/src/hotspot/share/runtime/arguments.cpp b/src/hotspot/share/runtime/arguments.cpp index 38f63354735..a56e1fcb998 100644 --- a/src/hotspot/share/runtime/arguments.cpp +++ b/src/hotspot/share/runtime/arguments.cpp @@ -519,6 +519,8 @@ static SpecialFlag const special_jvm_flags[] = { { "UseRTMDeopt", JDK_Version::jdk(23), JDK_Version::jdk(24), JDK_Version::jdk(25) }, { "RTMRetryCount", JDK_Version::jdk(23), JDK_Version::jdk(24), JDK_Version::jdk(25) }, #endif // X86 + + { "HeapFirstMaximumCompactionCount", JDK_Version::undefined(), JDK_Version::jdk(24), JDK_Version::jdk(25) }, #ifdef ASSERT { "DummyObsoleteTestFlag", JDK_Version::undefined(), JDK_Version::jdk(18), JDK_Version::undefined() }, #endif From d4c13737171b7ab7a8a29a69fa9965f8363c5aee Mon Sep 17 00:00:00 2001 From: Archie Cobbs Date: Tue, 18 Jun 2024 08:42:44 +0000 Subject: [PATCH 43/70] 8334043: VerifyError when inner class is accessed in prologue Reviewed-by: mcimadamore --- .../classes/com/sun/tools/javac/comp/Resolve.java | 15 ++++++++++++++- .../tools/javac/SuperInit/EarlyAssignments.java | 11 +++++++++++ .../tools/javac/SuperInit/EarlyAssignments.out | 3 ++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java index ac8374a9a55..3dcac0b2646 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java @@ -3861,7 +3861,20 @@ private boolean isAllowedEarlyReference(Env env, VarSymbol v) { // Get the symbol's qualifier, if any JCExpression lhs = TreeInfo.skipParens(assign.lhs); - JCExpression base = lhs instanceof JCFieldAccess select ? select.selected : null; + JCExpression base; + switch (lhs.getTag()) { + case IDENT: + base = null; + break; + case SELECT: + JCFieldAccess select = (JCFieldAccess)lhs; + base = select.selected; + if (!TreeInfo.isExplicitThisReference(types, (ClassType)env.enclClass.type, base)) + return false; + break; + default: + return false; + } // If an early reference, the field must not be declared in a superclass if (isEarlyReference(env, base, v) && v.owner != env.enclClass.sym) diff --git a/test/langtools/tools/javac/SuperInit/EarlyAssignments.java b/test/langtools/tools/javac/SuperInit/EarlyAssignments.java index 89a13ccf0ff..c3cad5d7016 100644 --- a/test/langtools/tools/javac/SuperInit/EarlyAssignments.java +++ b/test/langtools/tools/javac/SuperInit/EarlyAssignments.java @@ -158,4 +158,15 @@ public Inner7() { super(); } } + + public static class Inner8 { + class Inner8a { + int x; + } + + public Inner8() { + this.new Inner8a().x = 1; // FAIL - illegal early access + super(); + } + } } diff --git a/test/langtools/tools/javac/SuperInit/EarlyAssignments.out b/test/langtools/tools/javac/SuperInit/EarlyAssignments.out index 81b4f20b505..38182c2d312 100644 --- a/test/langtools/tools/javac/SuperInit/EarlyAssignments.out +++ b/test/langtools/tools/javac/SuperInit/EarlyAssignments.out @@ -23,6 +23,7 @@ EarlyAssignments.java:134:17: compiler.err.cant.ref.before.ctor.called: super EarlyAssignments.java:139:23: compiler.err.cant.ref.before.ctor.called: this EarlyAssignments.java:148:13: compiler.err.cant.assign.initialized.before.ctor.called: x EarlyAssignments.java:157:13: compiler.err.cant.assign.val.to.var: final, x +EarlyAssignments.java:168:13: compiler.err.cant.ref.before.ctor.called: this - compiler.note.preview.filename: EarlyAssignments.java, DEFAULT - compiler.note.preview.recompile -25 errors +26 errors From 614b99a8f8360dc0a6a018f06fb336c6883f0f4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20Casta=C3=B1eda=20Lozano?= Date: Tue, 18 Jun 2024 09:48:31 +0000 Subject: [PATCH 44/70] 8334442: Temporarily disable return type assertion to reduce noise in testing Reviewed-by: thartmann, chagedorn --- src/hotspot/share/opto/parse1.cpp | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/hotspot/share/opto/parse1.cpp b/src/hotspot/share/opto/parse1.cpp index 4dc3ac37042..3989020451e 100644 --- a/src/hotspot/share/opto/parse1.cpp +++ b/src/hotspot/share/opto/parse1.cpp @@ -1057,16 +1057,6 @@ void Parse::do_exits() { // loading. It could also be due to an error, so mark this method as not compilable because // otherwise this could lead to an infinite compile loop. // In any case, this code path is rarely (and never in my testing) reached. -#ifdef ASSERT - tty->print_cr("# Can't determine return type."); - tty->print_cr("# exit control"); - _exits.control()->dump(2); - tty->print_cr("# ret phi type"); - _gvn.type(ret_phi)->dump(); - tty->print_cr("# ret phi"); - ret_phi->dump(2); -#endif // ASSERT - assert(false, "Can't determine return type."); C->record_method_not_compilable("Can't determine return type."); return; } From 472b935b442f7f925b665c7de91eda77f3dcbe8b Mon Sep 17 00:00:00 2001 From: SendaoYan Date: Tue, 18 Jun 2024 10:24:43 +0000 Subject: [PATCH 45/70] 8334332: TestIOException.java fails if run by root Reviewed-by: prappo --- .../testIOException/TestIOException.java | 60 ++++++------------- 1 file changed, 19 insertions(+), 41 deletions(-) diff --git a/test/langtools/jdk/javadoc/doclet/testIOException/TestIOException.java b/test/langtools/jdk/javadoc/doclet/testIOException/TestIOException.java index 9127cdf86bb..5dd81b62d33 100644 --- a/test/langtools/jdk/javadoc/doclet/testIOException/TestIOException.java +++ b/test/langtools/jdk/javadoc/doclet/testIOException/TestIOException.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,9 +23,9 @@ /* * @test - * @bug 8164130 + * @bug 8164130 8334332 * @summary test IOException handling - * @library ../../lib + * @library ../../lib /test/lib * @modules jdk.javadoc/jdk.javadoc.internal.tool * @build javadoc.tester.* * @run main TestIOException @@ -39,6 +39,7 @@ import java.util.Map; import javadoc.tester.JavadocTester; +import jtreg.SkippedException; /** * Tests IO Exception handling. @@ -61,16 +62,13 @@ public static void main(String... args) throws Exception { public void testReadOnlyDirectory() { File outDir = new File("out1"); if (!outDir.mkdir()) { - throw error(outDir, "Cannot create directory"); + throw skip(outDir, "Cannot create directory"); } if (!outDir.setReadOnly()) { - if (skip(outDir)) { - return; - } - throw error(outDir, "could not set directory read-only"); + throw skip(outDir, "could not set directory read-only"); } if (outDir.canWrite()) { - throw error(outDir, "directory is writable"); + throw skip(outDir, "directory is writable"); } try { @@ -93,15 +91,15 @@ public void testReadOnlyDirectory() { public void testReadOnlyFile() throws Exception { File outDir = new File("out2"); if (!outDir.mkdir()) { - throw error(outDir, "Cannot create directory"); + throw skip(outDir, "Cannot create directory"); } File index = new File(outDir, "index.html"); try (FileWriter fw = new FileWriter(index)) { } if (!index.setReadOnly()) { - throw error(index, "could not set index read-only"); + throw skip(index, "could not set index read-only"); } if (index.canWrite()) { - throw error(index, "index is writable"); + throw skip(index, "index is writable"); } try { @@ -139,16 +137,13 @@ public void testReadOnlySubdirectory() throws Exception { File outDir = new File("out3"); File pkgOutDir = new File(outDir, "p"); if (!pkgOutDir.mkdirs()) { - throw error(pkgOutDir, "Cannot create directory"); + throw skip(pkgOutDir, "Cannot create directory"); } if (!pkgOutDir.setReadOnly()) { - if (skip(pkgOutDir)) { - return; - } - throw error(pkgOutDir, "could not set directory read-only"); + throw skip(pkgOutDir, "could not set directory read-only"); } if (pkgOutDir.canWrite()) { - throw error(pkgOutDir, "directory is writable"); + throw skip(pkgOutDir, "directory is writable"); } // run javadoc and check results @@ -192,16 +187,13 @@ public void testReadOnlyDocFilesDir() throws Exception { File pkgOutDir = new File(outDir, "p"); File docFilesOutDir = new File(pkgOutDir, "doc-files"); if (!docFilesOutDir.mkdirs()) { - throw error(docFilesOutDir, "Cannot create directory"); + throw skip(docFilesOutDir, "Cannot create directory"); } if (!docFilesOutDir.setReadOnly()) { - if (skip(docFilesOutDir)) { - return; - } - throw error(docFilesOutDir, "could not set directory read-only"); + throw skip(docFilesOutDir, "could not set directory read-only"); } if (docFilesOutDir.canWrite()) { - throw error(docFilesOutDir, "directory is writable"); + throw skip(docFilesOutDir, "directory is writable"); } try { @@ -219,10 +211,11 @@ public void testReadOnlyDocFilesDir() throws Exception { } } - private Error error(File f, String message) { + private Error skip(File f, String message) { + out.print(System.getProperty("user.name")); out.println(f + ": " + message); showAllAttributes(f.toPath()); - throw new Error(f + ": " + message); + throw new SkippedException(f + ": " + message); } private void showAllAttributes(Path p) { @@ -242,20 +235,5 @@ private void showAttributes(Path p, String attributes) { out.println("Error accessing attributes " + attributes + ": " + t); } } - - private boolean skip(File dir) { - if (isWindows()) { - showAllAttributes(dir.toPath()); - out.println("Windows: cannot set directory read only:" + dir); - out.println("TEST CASE SKIPPED"); - return true; - } else { - return false; - } - } - - private boolean isWindows() { - return System.getProperty("os.name").toLowerCase(Locale.US).startsWith("windows"); - } } From fa401f37dffe7bde27e562065dfd24381d5237cc Mon Sep 17 00:00:00 2001 From: Roland Westrelin Date: Tue, 18 Jun 2024 12:08:57 +0000 Subject: [PATCH 46/70] 8333805: Replaying compilation with null static final fields results in a crash Reviewed-by: thartmann, dlong --- src/hotspot/share/ci/ciInstanceKlass.cpp | 10 ++- src/hotspot/share/ci/ciReplay.cpp | 87 ++++++++++--------- .../ciReplay/TestNullStaticField.java | 82 +++++++++++++++++ 3 files changed, 135 insertions(+), 44 deletions(-) create mode 100644 test/hotspot/jtreg/compiler/ciReplay/TestNullStaticField.java diff --git a/src/hotspot/share/ci/ciInstanceKlass.cpp b/src/hotspot/share/ci/ciInstanceKlass.cpp index fa084e2287f..240bb25ae3a 100644 --- a/src/hotspot/share/ci/ciInstanceKlass.cpp +++ b/src/hotspot/share/ci/ciInstanceKlass.cpp @@ -661,7 +661,8 @@ class StaticFinalFieldPrinter : public FieldClosure { ResourceMark rm; oop mirror = fd->field_holder()->java_mirror(); _out->print("staticfield %s %s %s ", _holder, fd->name()->as_quoted_ascii(), fd->signature()->as_quoted_ascii()); - switch (fd->field_type()) { + BasicType field_type = fd->field_type(); + switch (field_type) { case T_BYTE: _out->print_cr("%d", mirror->byte_field(fd->offset())); break; case T_BOOLEAN: _out->print_cr("%d", mirror->bool_field(fd->offset())); break; case T_SHORT: _out->print_cr("%d", mirror->short_field(fd->offset())); break; @@ -682,9 +683,12 @@ class StaticFinalFieldPrinter : public FieldClosure { case T_OBJECT: { oop value = mirror->obj_field_acquire(fd->offset()); if (value == nullptr) { - _out->print_cr("null"); + if (field_type == T_ARRAY) { + _out->print("%d", -1); + } + _out->cr(); } else if (value->is_instance()) { - assert(fd->field_type() == T_OBJECT, ""); + assert(field_type == T_OBJECT, ""); if (value->is_a(vmClasses::String_klass())) { const char* ascii_value = java_lang_String::as_quoted_ascii(value); _out->print_cr("\"%s\"", (ascii_value != nullptr) ? ascii_value : ""); diff --git a/src/hotspot/share/ci/ciReplay.cpp b/src/hotspot/share/ci/ciReplay.cpp index 5fa30f86411..3ed71806b07 100644 --- a/src/hotspot/share/ci/ciReplay.cpp +++ b/src/hotspot/share/ci/ciReplay.cpp @@ -1056,46 +1056,48 @@ class CompileReplay : public StackObj { int length = parse_int("array length"); oop value = nullptr; - if (field_signature[1] == JVM_SIGNATURE_ARRAY) { - // multi dimensional array - ArrayKlass* kelem = (ArrayKlass *)parse_klass(CHECK); - if (kelem == nullptr) { - return; - } - int rank = 0; - while (field_signature[rank] == JVM_SIGNATURE_ARRAY) { - rank++; - } - jint* dims = NEW_RESOURCE_ARRAY(jint, rank); - dims[0] = length; - for (int i = 1; i < rank; i++) { - dims[i] = 1; // These aren't relevant to the compiler - } - value = kelem->multi_allocate(rank, dims, CHECK); - } else { - if (strcmp(field_signature, "[B") == 0) { - value = oopFactory::new_byteArray(length, CHECK); - } else if (strcmp(field_signature, "[Z") == 0) { - value = oopFactory::new_boolArray(length, CHECK); - } else if (strcmp(field_signature, "[C") == 0) { - value = oopFactory::new_charArray(length, CHECK); - } else if (strcmp(field_signature, "[S") == 0) { - value = oopFactory::new_shortArray(length, CHECK); - } else if (strcmp(field_signature, "[F") == 0) { - value = oopFactory::new_floatArray(length, CHECK); - } else if (strcmp(field_signature, "[D") == 0) { - value = oopFactory::new_doubleArray(length, CHECK); - } else if (strcmp(field_signature, "[I") == 0) { - value = oopFactory::new_intArray(length, CHECK); - } else if (strcmp(field_signature, "[J") == 0) { - value = oopFactory::new_longArray(length, CHECK); - } else if (field_signature[0] == JVM_SIGNATURE_ARRAY && - field_signature[1] == JVM_SIGNATURE_CLASS) { - parse_klass(CHECK); // eat up the array class name - Klass* kelem = resolve_klass(field_signature + 1, CHECK); - value = oopFactory::new_objArray(kelem, length, CHECK); + if (length != -1) { + if (field_signature[1] == JVM_SIGNATURE_ARRAY) { + // multi dimensional array + ArrayKlass* kelem = (ArrayKlass *)parse_klass(CHECK); + if (kelem == nullptr) { + return; + } + int rank = 0; + while (field_signature[rank] == JVM_SIGNATURE_ARRAY) { + rank++; + } + jint* dims = NEW_RESOURCE_ARRAY(jint, rank); + dims[0] = length; + for (int i = 1; i < rank; i++) { + dims[i] = 1; // These aren't relevant to the compiler + } + value = kelem->multi_allocate(rank, dims, CHECK); } else { - report_error("unhandled array staticfield"); + if (strcmp(field_signature, "[B") == 0) { + value = oopFactory::new_byteArray(length, CHECK); + } else if (strcmp(field_signature, "[Z") == 0) { + value = oopFactory::new_boolArray(length, CHECK); + } else if (strcmp(field_signature, "[C") == 0) { + value = oopFactory::new_charArray(length, CHECK); + } else if (strcmp(field_signature, "[S") == 0) { + value = oopFactory::new_shortArray(length, CHECK); + } else if (strcmp(field_signature, "[F") == 0) { + value = oopFactory::new_floatArray(length, CHECK); + } else if (strcmp(field_signature, "[D") == 0) { + value = oopFactory::new_doubleArray(length, CHECK); + } else if (strcmp(field_signature, "[I") == 0) { + value = oopFactory::new_intArray(length, CHECK); + } else if (strcmp(field_signature, "[J") == 0) { + value = oopFactory::new_longArray(length, CHECK); + } else if (field_signature[0] == JVM_SIGNATURE_ARRAY && + field_signature[1] == JVM_SIGNATURE_CLASS) { + Klass* actual_array_klass = parse_klass(CHECK); + Klass* kelem = ObjArrayKlass::cast(actual_array_klass)->element_klass(); + value = oopFactory::new_objArray(kelem, length, CHECK); + } else { + report_error("unhandled array staticfield"); + } } } java_mirror->obj_field_put(fd.offset(), value); @@ -1133,8 +1135,11 @@ class CompileReplay : public StackObj { Handle value = java_lang_String::create_from_str(string_value, CHECK); java_mirror->obj_field_put(fd.offset(), value()); } else if (field_signature[0] == JVM_SIGNATURE_CLASS) { - Klass* k = resolve_klass(string_value, CHECK); - oop value = InstanceKlass::cast(k)->allocate_instance(CHECK); + oop value = nullptr; + if (string_value != nullptr) { + Klass* k = resolve_klass(string_value, CHECK); + value = InstanceKlass::cast(k)->allocate_instance(CHECK); + } java_mirror->obj_field_put(fd.offset(), value); } else { report_error("unhandled staticfield"); diff --git a/test/hotspot/jtreg/compiler/ciReplay/TestNullStaticField.java b/test/hotspot/jtreg/compiler/ciReplay/TestNullStaticField.java new file mode 100644 index 00000000000..47a78ad5e44 --- /dev/null +++ b/test/hotspot/jtreg/compiler/ciReplay/TestNullStaticField.java @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2024, Red Hat, Inc. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8333805 + * @library / /test/lib + * @summary Replaying compilation with null static final fields results in a crash + * @requires vm.flightRecorder != true & vm.compMode != "Xint" & vm.compMode != "Xcomp" & vm.debug == true & vm.compiler2.enabled + * @modules java.base/jdk.internal.misc + * @build jdk.test.whitebox.WhiteBox + * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox + * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI + * compiler.ciReplay.TestNullStaticField + */ + +package compiler.ciReplay; + +public class TestNullStaticField extends DumpReplayBase { + + public static void main(String[] args) { + new TestNullStaticField().runTest(TIERED_DISABLED_VM_OPTION); + } + + @Override + public void testAction() { + positiveTest(TIERED_DISABLED_VM_OPTION, "-XX:+ReplayIgnoreInitErrors"); + } + + @Override + public String getTestClass() { + return TestClassNullStaticField.class.getName(); + } + +} + +class TestClassNullStaticField { + + static final Object[] staticNullArrayField = null; + static final Object[][] staticNullMultiArrayField = null; + static final Object staticNullObjectField = null; + static final String staticNullStringField = null; + static final int[] staticNullIntArrayField = null; + static final Object[] staticNotNullArrayField = new A[10]; + static final Object[][] staticNotNullMultiArrayField = new A[10][10]; + static final Object staticNotNullObjectField = new A(); + static final String staticNotNullStringField = "Not null"; + static final int[] staticNotNullIntArrayField = new int[10]; + + public static void main(String[] args) { + for (int i = 0; i < 20_000; i++) { + test(); + } + } + public static void test() { + + } + + private static class A { + } +} + From e681b4e9b3ae24f45d8c6adab4105df39e6b8a92 Mon Sep 17 00:00:00 2001 From: nibjen Date: Tue, 18 Jun 2024 13:28:37 +0000 Subject: [PATCH 47/70] 8332524: Instead of printing "TLSv1.3," it is showing "TLS13" Reviewed-by: mullan --- .../share/classes/sun/security/ssl/ClientHello.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/java.base/share/classes/sun/security/ssl/ClientHello.java b/src/java.base/share/classes/sun/security/ssl/ClientHello.java index 091bfa8986e..babf2bb452d 100644 --- a/src/java.base/share/classes/sun/security/ssl/ClientHello.java +++ b/src/java.base/share/classes/sun/security/ssl/ClientHello.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -903,8 +903,8 @@ private ProtocolVersion negotiateProtocol( throw context.conContext.fatal(Alert.PROTOCOL_VERSION, "The client supported protocol versions " + Arrays.toString( ProtocolVersion.toStringArray(clientSupportedVersions)) + - " are not accepted by server preferences " + - context.activeProtocols); + " are not accepted by server preferences " + Arrays.toString( + ProtocolVersion.toStringArray(context.activeProtocols))); } } From 91bd85d65dff9cea91b88da7ef241be5c7b85f94 Mon Sep 17 00:00:00 2001 From: Chen Liang Date: Tue, 18 Jun 2024 13:51:50 +0000 Subject: [PATCH 48/70] 8333854: IllegalAccessError with proxies after JDK-8332457 Reviewed-by: redestad, asotona --- .../java/lang/reflect/ProxyGenerator.java | 248 ++++++++++++------ .../Proxy/NonPublicMethodTypeTest.java | 59 +++++ 2 files changed, 230 insertions(+), 77 deletions(-) create mode 100644 test/jdk/java/lang/reflect/Proxy/NonPublicMethodTypeTest.java diff --git a/src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java b/src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java index a484c191206..6c82a6ecb6f 100644 --- a/src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java +++ b/src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java @@ -47,13 +47,10 @@ import static java.lang.classfile.ClassFile.*; import java.lang.classfile.attribute.StackMapFrameInfo; import java.lang.classfile.attribute.StackMapTableAttribute; -import java.lang.constant.ConstantDescs; + import static java.lang.constant.ConstantDescs.*; import static jdk.internal.constant.ConstantUtils.*; -import java.lang.constant.DirectMethodHandleDesc; -import java.lang.constant.DynamicConstantDesc; - /** * ProxyGenerator contains the code to generate a dynamic proxy class * for the java.lang.reflect.Proxy API. @@ -67,7 +64,10 @@ final class ProxyGenerator { ClassFile.of(ClassFile.StackMapsOption.DROP_STACK_MAPS); private static final ClassDesc + CD_ClassLoader = ReferenceClassDescImpl.ofValidated("Ljava/lang/ClassLoader;"), CD_Class_array = ReferenceClassDescImpl.ofValidated("[Ljava/lang/Class;"), + CD_ClassNotFoundException = ReferenceClassDescImpl.ofValidated("Ljava/lang/ClassNotFoundException;"), + CD_NoClassDefFoundError = ReferenceClassDescImpl.ofValidated("Ljava/lang/NoClassDefFoundError;"), CD_IllegalAccessException = ReferenceClassDescImpl.ofValidated("Ljava/lang/IllegalAccessException;"), CD_InvocationHandler = ReferenceClassDescImpl.ofValidated("Ljava/lang/reflect/InvocationHandler;"), CD_Method = ReferenceClassDescImpl.ofValidated("Ljava/lang/reflect/Method;"), @@ -83,8 +83,9 @@ final class ProxyGenerator { MTD_void_String = MethodTypeDescImpl.ofValidated(CD_void, CD_String), MTD_void_Throwable = MethodTypeDescImpl.ofValidated(CD_void, CD_Throwable), MTD_Class = MethodTypeDescImpl.ofValidated(CD_Class), - MTD_Class_array = MethodTypeDescImpl.ofValidated(CD_Class_array), - MTD_Method_String_Class_array = MethodTypeDescImpl.ofValidated(CD_Method, ConstantDescs.CD_String, CD_Class_array), + MTD_Class_String_boolean_ClassLoader = MethodTypeDescImpl.ofValidated(CD_Class, CD_String, CD_boolean, CD_ClassLoader), + MTD_ClassLoader = MethodTypeDescImpl.ofValidated(CD_ClassLoader), + MTD_Method_String_Class_array = MethodTypeDescImpl.ofValidated(CD_Method, CD_String, CD_Class_array), MTD_MethodHandles$Lookup = MethodTypeDescImpl.ofValidated(CD_MethodHandles_Lookup), MTD_MethodHandles$Lookup_MethodHandles$Lookup = MethodTypeDescImpl.ofValidated(CD_MethodHandles_Lookup, CD_MethodHandles_Lookup), MTD_Object_Object_Method_ObjectArray = MethodTypeDescImpl.ofValidated(CD_Object, CD_Object, CD_Method, CD_Object_array), @@ -109,34 +110,33 @@ final class ProxyGenerator { "jdk.proxy.ProxyGenerator.saveGeneratedFiles")); /* Preloaded ProxyMethod objects for methods in java.lang.Object */ - private static final ProxyMethod HASH_CODE_METHOD; - private static final ProxyMethod EQUALS_METHOD; - private static final ProxyMethod TO_STRING_METHOD; + private static final Method OBJECT_HASH_CODE_METHOD; + private static final Method OBJECT_EQUALS_METHOD; + private static final Method OBJECT_TO_STRING_METHOD; static { try { - HASH_CODE_METHOD = new ProxyMethod(Object.class.getMethod("hashCode")); - EQUALS_METHOD = new ProxyMethod(Object.class.getMethod("equals", Object.class)); - TO_STRING_METHOD = new ProxyMethod(Object.class.getMethod("toString")); + OBJECT_HASH_CODE_METHOD = Object.class.getMethod("hashCode"); + OBJECT_EQUALS_METHOD = Object.class.getMethod("equals", Object.class); + OBJECT_TO_STRING_METHOD = Object.class.getMethod("toString"); } catch (NoSuchMethodException e) { throw new NoSuchMethodError(e.getMessage()); } } private final ConstantPoolBuilder cp; - private final List throwableStack; + private final List classLoaderLocal, throwableStack; private final NameAndTypeEntry exInit; - private final ClassEntry object, proxy, ute; + private final ClassEntry objectCE, proxyCE, uteCE, classCE; private final FieldRefEntry handlerField; - private final InterfaceMethodRefEntry invoke; - private final MethodRefEntry uteInit; - private final DirectMethodHandleDesc bsm; + private final InterfaceMethodRefEntry invocationHandlerInvoke; + private final MethodRefEntry uteInit, classGetMethod, classForName, throwableGetMessage; /** - * Name of proxy class + * ClassEntry for this proxy class */ - private final ClassEntry classEntry; + private final ClassEntry thisClassCE; /** * Proxy interfaces @@ -155,6 +155,12 @@ final class ProxyGenerator { */ private final Map> proxyMethods = new LinkedHashMap<>(); + /** + * Ordinal of next ProxyMethod object added to proxyMethods. + * Indexes are reserved for hashcode(0), equals(1), toString(2). + */ + private int proxyMethodCount = 3; + /** * Construct a ProxyGenerator to generate a proxy class with the * specified name and for the given interfaces. @@ -165,18 +171,23 @@ final class ProxyGenerator { private ProxyGenerator(String className, List> interfaces, int accessFlags) { this.cp = ConstantPoolBuilder.of(); - this.classEntry = cp.classEntry(ConstantUtils.binaryNameToDesc(className)); + this.thisClassCE = cp.classEntry(ConstantUtils.binaryNameToDesc(className)); this.interfaces = interfaces; this.accessFlags = accessFlags; - this.throwableStack = List.of(StackMapFrameInfo.ObjectVerificationTypeInfo.of(cp.classEntry(CD_Throwable))); + var throwable = cp.classEntry(CD_Throwable); + this.classLoaderLocal = List.of(StackMapFrameInfo.ObjectVerificationTypeInfo.of(cp.classEntry(CD_ClassLoader))); + this.throwableStack = List.of(StackMapFrameInfo.ObjectVerificationTypeInfo.of(throwable)); this.exInit = cp.nameAndTypeEntry(INIT_NAME, MTD_void_String); - this.object = cp.classEntry(CD_Object); - this.proxy = cp.classEntry(CD_Proxy); - this.handlerField = cp.fieldRefEntry(proxy, cp.nameAndTypeEntry(NAME_HANDLER_FIELD, CD_InvocationHandler)); - this.invoke = cp.interfaceMethodRefEntry(CD_InvocationHandler, "invoke", MTD_Object_Object_Method_ObjectArray); - this.ute = cp.classEntry(CD_UndeclaredThrowableException); - this.uteInit = cp.methodRefEntry(ute, cp.nameAndTypeEntry(INIT_NAME, MTD_void_Throwable)); - this.bsm = ConstantDescs.ofConstantBootstrap(classEntry.asSymbol(), "$getMethod", CD_Method, CD_Class, CD_String, CD_MethodType); + this.objectCE = cp.classEntry(CD_Object); + this.proxyCE = cp.classEntry(CD_Proxy); + this.classCE = cp.classEntry(CD_Class); + this.handlerField = cp.fieldRefEntry(proxyCE, cp.nameAndTypeEntry(NAME_HANDLER_FIELD, CD_InvocationHandler)); + this.invocationHandlerInvoke = cp.interfaceMethodRefEntry(CD_InvocationHandler, "invoke", MTD_Object_Object_Method_ObjectArray); + this.uteCE = cp.classEntry(CD_UndeclaredThrowableException); + this.uteInit = cp.methodRefEntry(uteCE, cp.nameAndTypeEntry(INIT_NAME, MTD_void_Throwable)); + this.classGetMethod = cp.methodRefEntry(classCE, cp.nameAndTypeEntry("getMethod", MTD_Method_String_Class_array)); + this.classForName = cp.methodRefEntry(classCE, cp.nameAndTypeEntry("forName", MTD_Class_String_boolean_ClassLoader)); + this.throwableGetMessage = cp.methodRefEntry(throwable, cp.nameAndTypeEntry("getMessage", MTD_String)); } /** @@ -435,9 +446,9 @@ private byte[] generateClassFile() { * java.lang.Object take precedence over duplicate methods in the * proxy interfaces. */ - addProxyMethod(HASH_CODE_METHOD); - addProxyMethod(EQUALS_METHOD); - addProxyMethod(TO_STRING_METHOD); + addProxyMethod(new ProxyMethod(OBJECT_HASH_CODE_METHOD, "m0")); + addProxyMethod(new ProxyMethod(OBJECT_EQUALS_METHOD, "m1")); + addProxyMethod(new ProxyMethod(OBJECT_TO_STRING_METHOD, "m2")); /* * Accumulate all of the methods from the proxy interfaces. @@ -458,20 +469,23 @@ private byte[] generateClassFile() { checkReturnTypes(sigmethods); } - return CF_CONTEXT.build(classEntry, cp, clb -> { - clb.withSuperclass(proxy); + return CF_CONTEXT.build(thisClassCE, cp, clb -> { + clb.withSuperclass(proxyCE); clb.withFlags(accessFlags); clb.withInterfaces(toClassEntries(cp, interfaces)); generateConstructor(clb); for (List sigmethods : proxyMethods.values()) { for (ProxyMethod pm : sigmethods) { + // add static field for the Method object + clb.withField(pm.methodFieldName, CD_Method, ACC_PRIVATE | ACC_STATIC | ACC_FINAL); + // Generate code for proxy method - pm.generateMethod(this, clb); + pm.generateMethod(clb); } } - generateBootstrapMethod(clb); + generateStaticInitializer(clb); generateLookupAccessor(clb); }); } @@ -514,7 +528,7 @@ private void addProxyMethod(Method m, Class fromClass) { } } sigmethods.add(new ProxyMethod(m, sig, m.getSharedParameterTypes(), returnType, - exceptionTypes, fromClass)); + exceptionTypes, fromClass, "m" + proxyMethodCount++)); } /** @@ -536,32 +550,56 @@ private void generateConstructor(ClassBuilder clb) { clb.withMethodBody(INIT_NAME, MTD_void_InvocationHandler, ACC_PUBLIC, cob -> cob .aload(0) .aload(1) - .invokespecial(cp.methodRefEntry(proxy, cp.nameAndTypeEntry(INIT_NAME, MTD_void_InvocationHandler))) + .invokespecial(cp.methodRefEntry(proxyCE, + cp.nameAndTypeEntry(INIT_NAME, MTD_void_InvocationHandler))) .return_()); } /** - * Generate CONDY bootstrap method for the proxy class to retrieve {@link Method} instances. + * Generate the class initializer. + * Discussion: Currently, for Proxy to work with SecurityManager, + * we rely on the parameter classes of the methods to be computed + * from Proxy instead of via user code paths like bootstrap method + * lazy evaluation. That might change if we can pass in the live + * Method objects directly.. */ - private void generateBootstrapMethod(ClassBuilder clb) { - clb.withMethodBody(bsm.methodName(), bsm.invocationType(), ClassFile.ACC_PRIVATE | ClassFile.ACC_STATIC, cob -> { - cob.aload(3) //interface Class - .aload(4) //interface method name String - .aload(5) //interface MethodType - .invokevirtual(CD_MethodType, "parameterArray", MTD_Class_array) - .invokevirtual(ConstantDescs.CD_Class, "getMethod", MTD_Method_String_Class_array) - .areturn(); - Label failLabel = cob.newBoundLabel(); - ClassEntry nsme = cp.classEntry(CD_NoSuchMethodError); - cob.exceptionCatch(cob.startLabel(), failLabel, failLabel, CD_NoSuchMethodException) - .new_(nsme) + private void generateStaticInitializer(ClassBuilder clb) { + clb.withMethodBody(CLASS_INIT_NAME, MTD_void, ACC_STATIC, cob -> { + // Put ClassLoader at local variable index 0, used by + // Class.forName(String, boolean, ClassLoader) calls + cob.ldc(thisClassCE) + .invokevirtual(cp.methodRefEntry(classCE, + cp.nameAndTypeEntry("getClassLoader", MTD_ClassLoader))) + .astore(0); + var ts = cob.newBoundLabel(); + for (List sigmethods : proxyMethods.values()) { + for (ProxyMethod pm : sigmethods) { + pm.codeFieldInitialization(cob); + } + } + cob.return_(); + var c1 = cob.newBoundLabel(); + var nsmError = cp.classEntry(CD_NoSuchMethodError); + cob.exceptionCatch(ts, c1, c1, CD_NoSuchMethodException) + .new_(nsmError) + .dup_x1() + .swap() + .invokevirtual(throwableGetMessage) + .invokespecial(cp.methodRefEntry(nsmError, exInit)) + .athrow(); + var c2 = cob.newBoundLabel(); + var ncdfError = cp.classEntry(CD_NoClassDefFoundError); + cob.exceptionCatch(ts, c1, c2, CD_ClassNotFoundException) + .new_(ncdfError) .dup_x1() .swap() - .invokevirtual(cp.methodRefEntry(CD_Throwable, "getMessage", MTD_String)) - .invokespecial(cp.methodRefEntry(nsme, exInit)) - .athrow() - .with(StackMapTableAttribute.of(List.of( - StackMapFrameInfo.of(failLabel, List.of(), throwableStack)))); + .invokevirtual(throwableGetMessage) + .invokespecial(cp.methodRefEntry(ncdfError, exInit)) + .athrow(); + cob.with(StackMapTableAttribute.of(List.of( + StackMapFrameInfo.of(c1, classLoaderLocal, throwableStack), + StackMapFrameInfo.of(c2, classLoaderLocal, throwableStack)))); + }); } @@ -581,7 +619,7 @@ private void generateLookupAccessor(ClassBuilder clb) { ClassEntry iae = cp.classEntry(CD_IllegalAccessException); cob.aload(cob.parameterSlot(0)) .invokevirtual(cp.methodRefEntry(mhl, cp.nameAndTypeEntry("lookupClass", MTD_Class))) - .ldc(proxy) + .ldc(proxyCE) .if_acmpne(failLabel) .aload(cob.parameterSlot(0)) .invokevirtual(cp.methodRefEntry(mhl, cp.nameAndTypeEntry("hasFullPrivilegeAccess", MTD_boolean))) @@ -607,24 +645,29 @@ private void generateLookupAccessor(ClassBuilder clb) { * being generated: a method whose implementation will encode and * dispatch invocations to the proxy instance's invocation handler. */ - private static class ProxyMethod { + private class ProxyMethod { private final Method method; private final String shortSignature; private final Class fromClass; private final Class[] parameterTypes; private final Class returnType; + private final String methodFieldName; private Class[] exceptionTypes; + private final FieldRefEntry methodField; private ProxyMethod(Method method, String sig, Class[] parameterTypes, Class returnType, Class[] exceptionTypes, - Class fromClass) { + Class fromClass, String methodFieldName) { this.method = method; this.shortSignature = sig; this.parameterTypes = parameterTypes; this.returnType = returnType; this.exceptionTypes = exceptionTypes; this.fromClass = fromClass; + this.methodFieldName = methodFieldName; + this.methodField = cp.fieldRefEntry(thisClassCE, + cp.nameAndTypeEntry(methodFieldName, CD_Method)); } /** @@ -632,17 +675,16 @@ private ProxyMethod(Method method, String sig, Class[] parameterTypes, * * @param method The method for which to create a proxy */ - private ProxyMethod(Method method) { + private ProxyMethod(Method method, String methodFieldName) { this(method, method.toShortSignature(), method.getSharedParameterTypes(), method.getReturnType(), - method.getSharedExceptionTypes(), method.getDeclaringClass()); + method.getSharedExceptionTypes(), method.getDeclaringClass(), methodFieldName); } /** * Generate this method, including the code and exception table entry. */ - private void generateMethod(ProxyGenerator pg, ClassBuilder clb) { - var cp = pg.cp; + private void generateMethod(ClassBuilder clb) { var desc = methodTypeDesc(returnType, parameterTypes); int accessFlags = (method.isVarArgs()) ? ACC_VARARGS | ACC_PUBLIC | ACC_FINAL : ACC_PUBLIC | ACC_FINAL; @@ -650,17 +692,14 @@ private void generateMethod(ProxyGenerator pg, ClassBuilder clb) { clb.withMethod(method.getName(), desc, accessFlags, mb -> mb.with(ExceptionsAttribute.of(toClassEntries(cp, List.of(exceptionTypes)))) .withCode(cob -> { - cob.aload(0) - .getfield(pg.handlerField) - .aload(0) - .ldc(DynamicConstantDesc.of(pg.bsm, - referenceClassDesc(fromClass), - method.getName(), - desc)); + cob.aload(cob.receiverSlot()) + .getfield(handlerField) + .aload(cob.receiverSlot()) + .getstatic(methodField); if (parameterTypes.length > 0) { // Create an array and fill with the parameters converting primitives to wrappers cob.loadConstant(parameterTypes.length) - .anewarray(pg.object); + .anewarray(objectCE); for (int i = 0; i < parameterTypes.length; i++) { cob.dup() .loadConstant(i); @@ -671,7 +710,7 @@ private void generateMethod(ProxyGenerator pg, ClassBuilder clb) { cob.aconst_null(); } - cob.invokeinterface(pg.invoke); + cob.invokeinterface(invocationHandlerInvoke); if (returnType == void.class) { cob.pop() @@ -687,14 +726,14 @@ private void generateMethod(ProxyGenerator pg, ClassBuilder clb) { cob.athrow(); // just rethrow the exception var c2 = cob.newBoundLabel(); cob.exceptionCatchAll(cob.startLabel(), c1, c2) - .new_(pg.ute) + .new_(uteCE) .dup_x1() .swap() - .invokespecial(pg.uteInit) + .invokespecial(uteInit) .athrow() .with(StackMapTableAttribute.of(List.of( - StackMapFrameInfo.of(c1, List.of(), pg.throwableStack), - StackMapFrameInfo.of(c2, List.of(), pg.throwableStack)))); + StackMapFrameInfo.of(c1, List.of(), throwableStack), + StackMapFrameInfo.of(c2, List.of(), throwableStack)))); } })); } @@ -709,7 +748,7 @@ private void codeWrapArgument(CodeBuilder cob, Class type, int slot) { if (type.isPrimitive()) { cob.loadLocal(TypeKind.from(type).asLoadable(), slot); PrimitiveTypeInfo prim = PrimitiveTypeInfo.get(type); - cob.invokestatic(prim.wrapperMethodRef(cob.constantPool())); + cob.invokestatic(prim.wrapperMethodRef(cp)); } else { cob.aload(slot); } @@ -725,7 +764,7 @@ private void codeUnwrapReturnValue(CodeBuilder cob, Class type) { PrimitiveTypeInfo prim = PrimitiveTypeInfo.get(type); cob.checkcast(prim.wrapperClass) - .invokevirtual(prim.unwrapMethodRef(cob.constantPool())) + .invokevirtual(prim.unwrapMethodRef(cp)) .return_(TypeKind.from(type).asLoadable()); } else { cob.checkcast(referenceClassDesc(type)) @@ -733,6 +772,57 @@ private void codeUnwrapReturnValue(CodeBuilder cob, Class type) { } } + /** + * Generate code for initializing the static field that stores + * the Method object for this proxy method. A class loader is + * anticipated at local variable index 0. + * The generated code must be run in an AccessController.doPrivileged + * block if a SecurityManager is present, as otherwise the code + * cannot pass {@code null} ClassLoader to forName. + */ + private void codeFieldInitialization(CodeBuilder cob) { + var cp = cob.constantPool(); + codeClassForName(cob, fromClass); + + cob.ldc(method.getName()) + .loadConstant(parameterTypes.length) + .anewarray(classCE); + + // Construct an array with the parameter types mapping primitives to Wrapper types + for (int i = 0; i < parameterTypes.length; i++) { + cob.dup() + .loadConstant(i); + if (parameterTypes[i].isPrimitive()) { + PrimitiveTypeInfo prim = PrimitiveTypeInfo.get(parameterTypes[i]); + cob.getstatic(prim.typeFieldRef(cp)); + } else { + codeClassForName(cob, parameterTypes[i]); + } + cob.aastore(); + } + // lookup the method + cob.invokevirtual(classGetMethod) + .putstatic(methodField); + } + + /* + * =============== Code Generation Utility Methods =============== + */ + + /** + * Generate code to invoke the Class.forName with the name of the given + * class to get its Class object at runtime. The code is written to + * the supplied stream. Note that the code generated by this method + * may cause the checked ClassNotFoundException to be thrown. A class + * loader is anticipated at local variable index 0. + */ + private void codeClassForName(CodeBuilder cob, Class cl) { + cob.ldc(cl.getName()) + .iconst_0() // false + .aload(0)// classLoader + .invokestatic(classForName); + } + @Override public String toString() { return method.toShortString(); @@ -799,5 +889,9 @@ public MethodRefEntry wrapperMethodRef(ConstantPoolBuilder cp) { public MethodRefEntry unwrapMethodRef(ConstantPoolBuilder cp) { return cp.methodRefEntry(wrapperClass, unwrapMethodName, unwrapMethodType); } + + public FieldRefEntry typeFieldRef(ConstantPoolBuilder cp) { + return cp.fieldRefEntry(wrapperClass, "TYPE", CD_Class); + } } } diff --git a/test/jdk/java/lang/reflect/Proxy/NonPublicMethodTypeTest.java b/test/jdk/java/lang/reflect/Proxy/NonPublicMethodTypeTest.java new file mode 100644 index 00000000000..8919dc2f0b2 --- /dev/null +++ b/test/jdk/java/lang/reflect/Proxy/NonPublicMethodTypeTest.java @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8333854 + * @summary Test invoking a method in a proxy interface with package-private + * classes or interfaces in its method type + * @run junit NonPublicMethodTypeTest + */ + +import org.junit.jupiter.api.Test; + +import java.lang.reflect.Proxy; + +import static org.junit.jupiter.api.Assertions.assertNotSame; + +public final class NonPublicMethodTypeTest { + interface NonPublicWorker { + void work(); + } + + public interface PublicWorkable { + void accept(NonPublicWorker worker); + } + + @Test + public void test() { + PublicWorkable proxy = (PublicWorkable) Proxy.newProxyInstance( + NonPublicMethodTypeTest.class.getClassLoader(), + new Class[] {PublicWorkable.class}, + (_, _, _) -> null); + assertNotSame(NonPublicWorker.class.getPackage(), + proxy.getClass().getPackage(), + "Proxy class should not be able to access method parameter " + + "NonPublic type's package"); + proxy.accept(() -> {}); // Call should not fail + } +} From 8bc2fbe57893b110fdb5fd567df4615e7833e5ae Mon Sep 17 00:00:00 2001 From: Sonia Zaldana Calles Date: Tue, 18 Jun 2024 14:05:11 +0000 Subject: [PATCH 49/70] 8333769: Pretouching tests dont test pretouching Reviewed-by: stuefe, asmehra --- src/hotspot/os/aix/os_aix.cpp | 2 + src/hotspot/os/bsd/os_bsd.cpp | 16 +++ src/hotspot/os/linux/os_linux.cpp | 9 ++ src/hotspot/os/windows/os_windows.cpp | 13 ++ src/hotspot/share/prims/whitebox.cpp | 6 + src/hotspot/share/runtime/os.hpp | 1 + .../jtreg/gc/TestAlwaysPreTouchBehavior.java | 130 ++++++++++++++++++ .../parallel/TestAlwaysPreTouchBehavior.java | 79 ----------- test/lib/jdk/test/whitebox/WhiteBox.java | 1 + 9 files changed, 178 insertions(+), 79 deletions(-) create mode 100644 test/hotspot/jtreg/gc/TestAlwaysPreTouchBehavior.java delete mode 100644 test/hotspot/jtreg/gc/parallel/TestAlwaysPreTouchBehavior.java diff --git a/src/hotspot/os/aix/os_aix.cpp b/src/hotspot/os/aix/os_aix.cpp index f0a984d3d1f..39f3e420662 100644 --- a/src/hotspot/os/aix/os_aix.cpp +++ b/src/hotspot/os/aix/os_aix.cpp @@ -287,6 +287,8 @@ julong os::physical_memory() { return Aix::physical_memory(); } +size_t os::rss() { return (size_t)0; } + // Cpu architecture string #if defined(PPC32) static char cpu_arch[] = "ppc"; diff --git a/src/hotspot/os/bsd/os_bsd.cpp b/src/hotspot/os/bsd/os_bsd.cpp index e5b6c74ce2f..fe1e7098fd5 100644 --- a/src/hotspot/os/bsd/os_bsd.cpp +++ b/src/hotspot/os/bsd/os_bsd.cpp @@ -210,6 +210,22 @@ julong os::physical_memory() { return Bsd::physical_memory(); } +size_t os::rss() { + size_t rss = 0; +#ifdef __APPLE__ + mach_task_basic_info info; + mach_msg_type_number_t count = MACH_TASK_BASIC_INFO_COUNT; + + kern_return_t ret = task_info(mach_task_self(), MACH_TASK_BASIC_INFO, + (task_info_t)&info, &count); + if (ret == KERN_SUCCESS) { + rss = info.resident_size; + } +#endif // __APPLE__ + + return rss; +} + // Cpu architecture string #if defined(ZERO) static char cpu_arch[] = ZERO_LIBARCH; diff --git a/src/hotspot/os/linux/os_linux.cpp b/src/hotspot/os/linux/os_linux.cpp index b56d4082354..52866a44b26 100644 --- a/src/hotspot/os/linux/os_linux.cpp +++ b/src/hotspot/os/linux/os_linux.cpp @@ -359,6 +359,15 @@ julong os::physical_memory() { return phys_mem; } +size_t os::rss() { + size_t size = 0; + os::Linux::meminfo_t info; + if (os::Linux::query_process_memory_info(&info)) { + size = info.vmrss * K; + } + return size; +} + static uint64_t initial_total_ticks = 0; static uint64_t initial_steal_ticks = 0; static bool has_initial_tick_info = false; diff --git a/src/hotspot/os/windows/os_windows.cpp b/src/hotspot/os/windows/os_windows.cpp index 773bda647e1..49f05fe94b3 100644 --- a/src/hotspot/os/windows/os_windows.cpp +++ b/src/hotspot/os/windows/os_windows.cpp @@ -858,6 +858,19 @@ julong os::physical_memory() { return win32::physical_memory(); } +size_t os::rss() { + size_t rss = 0; + PROCESS_MEMORY_COUNTERS_EX pmex; + ZeroMemory(&pmex, sizeof(PROCESS_MEMORY_COUNTERS_EX)); + pmex.cb = sizeof(pmex); + BOOL ret = GetProcessMemoryInfo( + GetCurrentProcess(), (PROCESS_MEMORY_COUNTERS *)&pmex, sizeof(pmex)); + if (ret) { + rss = pmex.WorkingSetSize; + } + return rss; +} + bool os::has_allocatable_memory_limit(size_t* limit) { MEMORYSTATUSEX ms; ms.dwLength = sizeof(ms); diff --git a/src/hotspot/share/prims/whitebox.cpp b/src/hotspot/share/prims/whitebox.cpp index 821444ea389..5ed593b0d2f 100644 --- a/src/hotspot/share/prims/whitebox.cpp +++ b/src/hotspot/share/prims/whitebox.cpp @@ -2657,6 +2657,11 @@ WB_ENTRY(void, WB_CleanMetaspaces(JNIEnv* env, jobject target)) ClassLoaderDataGraph::safepoint_and_clean_metaspaces(); WB_END +// Reports resident set size (RSS) in bytes +WB_ENTRY(jlong, WB_Rss(JNIEnv* env, jobject o)) + return os::rss(); +WB_END + #define CC (char*) static JNINativeMethod methods[] = { @@ -2944,6 +2949,7 @@ static JNINativeMethod methods[] = { {CC"setVirtualThreadsNotifyJvmtiMode", CC"(Z)Z", (void*)&WB_SetVirtualThreadsNotifyJvmtiMode}, {CC"preTouchMemory", CC"(JJ)V", (void*)&WB_PreTouchMemory}, {CC"cleanMetaspaces", CC"()V", (void*)&WB_CleanMetaspaces}, + {CC"rss", CC"()J", (void*)&WB_Rss}, }; diff --git a/src/hotspot/share/runtime/os.hpp b/src/hotspot/share/runtime/os.hpp index a6626c1389f..ce7a07d4c43 100644 --- a/src/hotspot/share/runtime/os.hpp +++ b/src/hotspot/share/runtime/os.hpp @@ -344,6 +344,7 @@ class os: AllStatic { static julong physical_memory(); static bool has_allocatable_memory_limit(size_t* limit); static bool is_server_class_machine(); + static size_t rss(); // Returns the id of the processor on which the calling thread is currently executing. // The returned value is guaranteed to be between 0 and (os::processor_count() - 1). diff --git a/test/hotspot/jtreg/gc/TestAlwaysPreTouchBehavior.java b/test/hotspot/jtreg/gc/TestAlwaysPreTouchBehavior.java new file mode 100644 index 00000000000..c282c2876ea --- /dev/null +++ b/test/hotspot/jtreg/gc/TestAlwaysPreTouchBehavior.java @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2014, 2024, Alibaba Group Holding Limited. All rights reserved. + * Copyright (c) 2024, Red Hat Inc. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package gc; + +/** + * @test id=ParallelCollector + * @summary tests AlwaysPreTouch + * @requires vm.gc.Parallel + * @requires os.maxMemory > 2G + * @requires os.family != "aix" + * @library /test/lib + * @build jdk.test.whitebox.WhiteBox + * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox + * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xmx512m -Xms512m -XX:+UseParallelGC -XX:+AlwaysPreTouch gc.TestAlwaysPreTouchBehavior + */ + + /** + * @test id=SerialCollector + * @summary tests AlwaysPreTouch + * @requires vm.gc.Serial + * @requires os.maxMemory > 2G + * @requires os.family != "aix" + * @library /test/lib + * @build jdk.test.whitebox.WhiteBox + * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox + * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xmx512m -Xms512m -XX:+UseSerialGC -XX:+AlwaysPreTouch gc.TestAlwaysPreTouchBehavior + */ + +/** + * @test id=Shenandoah + * @summary tests AlwaysPreTouch + * @requires vm.gc.Shenandoah + * @requires os.maxMemory > 2G + * @requires os.family != "aix" + * @library /test/lib + * @build jdk.test.whitebox.WhiteBox + * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox + * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xmx512m -Xms512m -XX:+UseShenandoahGC -XX:+AlwaysPreTouch gc.TestAlwaysPreTouchBehavior + */ + +/** + * @test id=G1 + * @summary tests AlwaysPreTouch + * @requires vm.gc.G1 + * @requires os.maxMemory > 2G + * @requires os.family != "aix" + * @library /test/lib + * @build jdk.test.whitebox.WhiteBox + * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox + * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xmx512m -Xms512m -XX:+AlwaysPreTouch gc.TestAlwaysPreTouchBehavior + */ + +/** + * @test id=ZGenerational + * @summary tests AlwaysPreTouch + * @requires vm.gc.ZGenerational + * @requires os.maxMemory > 2G + * @requires os.family != "aix" + * @library /test/lib + * @build jdk.test.whitebox.WhiteBox + * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox + * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:+UseZGC -XX:+ZGenerational -Xmx512m -Xms512m -XX:+AlwaysPreTouch gc.TestAlwaysPreTouchBehavior + */ + +/** + * @test id=ZSinglegen + * @summary tests AlwaysPreTouch + * @requires vm.gc.ZSinglegen + * @requires os.maxMemory > 2G + * @requires os.family != "aix" + * @library /test/lib + * @build jdk.test.whitebox.WhiteBox + * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox + * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:+UseZGC -XX:-ZGenerational -Xmx512m -Xms512m -XX:+AlwaysPreTouch gc.TestAlwaysPreTouchBehavior + */ + +/** + * @test id=Epsilon + * @summary tests AlwaysPreTouch + * @requires vm.gc.Epsilon + * @requires os.maxMemory > 2G + * @requires os.family != "aix" + * @library /test/lib + * @build jdk.test.whitebox.WhiteBox + * @run driver jdk.test.lib.helpers.ClassFileInstaller jdk.test.whitebox.WhiteBox + * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -Xmx512m -Xms512m -XX:+AlwaysPreTouch gc.TestAlwaysPreTouchBehavior + */ + + +import jdk.test.lib.Asserts; + +import jdk.test.whitebox.WhiteBox; + +public class TestAlwaysPreTouchBehavior { + + public static void main(String [] args) { + long rss = WhiteBox.getWhiteBox().rss(); + System.out.println("RSS: " + rss); + if (rss == 0) { + System.out.println("cannot get RSS, just skip"); + return; // Did not get available RSS, just ignore this test. + } + Runtime runtime = Runtime.getRuntime(); + long committedMemory = runtime.totalMemory(); + Asserts.assertGreaterThan(rss, committedMemory, "RSS of this process(" + rss + "b) should be bigger than or equal to committed heap mem(" + committedMemory + "b)"); + } +} + diff --git a/test/hotspot/jtreg/gc/parallel/TestAlwaysPreTouchBehavior.java b/test/hotspot/jtreg/gc/parallel/TestAlwaysPreTouchBehavior.java deleted file mode 100644 index 3a5b2b557cc..00000000000 --- a/test/hotspot/jtreg/gc/parallel/TestAlwaysPreTouchBehavior.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2014, 2024, Alibaba Group Holding Limited. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package gc.parallel; - -/** - * @test TestAlwaysPreTouchBehavior - * @summary Tests AlwaysPreTouch Bahavior, pages of java heap should be pretouched with AlwaysPreTouch enabled. This test reads RSS of test process, which should be bigger than heap size(1g) with AlwaysPreTouch enabled. - * @requires vm.gc.Parallel - * @requires vm.debug != true - * @requires os.family == "linux" - * @requires os.maxMemory > 2G - * @library /test/lib - * @run main/othervm -Xmx1g -Xms1g -XX:+UseParallelGC -XX:+AlwaysPreTouch -XX:+UnlockDiagnosticVMOptions -XX:-UseMadvPopulateWrite gc.parallel.TestAlwaysPreTouchBehavior - */ -import java.lang.management.ManagementFactory; -import java.lang.management.ThreadInfo; -import java.lang.management.ThreadMXBean; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.io.IOException; -import java.util.*; -import javax.management.*; -import java.lang.management.*; -import jdk.test.lib.Utils; -import jdk.test.lib.Asserts; -import java.lang.management.*; -import java.util.stream.*; -import java.io.*; - -public class TestAlwaysPreTouchBehavior { - public static long getProcessRssInKb() throws IOException { - String pid = ManagementFactory.getRuntimeMXBean().getName().split("@")[0]; - // Read RSS from /proc/$pid/status. Only available on Linux. - String processStatusFile = "/proc/" + pid + "/status"; - BufferedReader reader = new BufferedReader(new FileReader(processStatusFile)); - String line = null; - while ((line = reader.readLine()) != null) { - if (line.startsWith("VmRSS:")) { - break; - } - } - reader.close(); - return Long.valueOf(line.split("\\s+")[1].trim()); - } - public static void main(String [] args) { - long rss = 0; - Runtime runtime = Runtime.getRuntime(); - long committedMemory = runtime.totalMemory() / 1024; // in kb - try { - rss = getProcessRssInKb(); - } catch (Exception e) { - System.out.println("cannot get RSS, just skip"); - return; // Did not get avaiable RSS, just ignore this test - } - Asserts.assertGreaterThanOrEqual(rss, committedMemory, "RSS of this process(" + rss + "kb) should be bigger than or equal to committed heap mem(" + committedMemory + "kb)"); - } -} diff --git a/test/lib/jdk/test/whitebox/WhiteBox.java b/test/lib/jdk/test/whitebox/WhiteBox.java index 2402e39974e..3b930aec16f 100644 --- a/test/lib/jdk/test/whitebox/WhiteBox.java +++ b/test/lib/jdk/test/whitebox/WhiteBox.java @@ -798,4 +798,5 @@ public native int validateCgroup(String procCgroups, public native boolean setVirtualThreadsNotifyJvmtiMode(boolean enabled); public native void preTouchMemory(long addr, long size); + public native long rss(); } From 6f860f8f6f69369130ed79e71255005b5beed45a Mon Sep 17 00:00:00 2001 From: Vladimir Kozlov Date: Tue, 18 Jun 2024 14:48:46 +0000 Subject: [PATCH 50/70] 8334430: Clean up nativeInst_x86.* Reviewed-by: jwaters, jiefu --- src/hotspot/cpu/x86/nativeInst_x86.cpp | 161 +---------------------- src/hotspot/cpu/x86/nativeInst_x86.hpp | 172 +------------------------ 2 files changed, 2 insertions(+), 331 deletions(-) diff --git a/src/hotspot/cpu/x86/nativeInst_x86.cpp b/src/hotspot/cpu/x86/nativeInst_x86.cpp index b59f4246256..0426c0f5174 100644 --- a/src/hotspot/cpu/x86/nativeInst_x86.cpp +++ b/src/hotspot/cpu/x86/nativeInst_x86.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -41,143 +41,6 @@ void NativeInstruction::wrote(int offset) { ICache::invalidate_word(addr_at(offset)); } -#ifdef ASSERT -void NativeLoadGot::report_and_fail() const { - tty->print_cr("Addr: " INTPTR_FORMAT " Code: %x %x %x", p2i(instruction_address()), - (has_rex ? ubyte_at(0) : 0), ubyte_at(rex_size), ubyte_at(rex_size + 1)); - fatal("not a indirect rip mov to rbx"); -} - -void NativeLoadGot::verify() const { - if (has_rex) { - int rex = ubyte_at(0); - if (rex != rex_prefix && rex != rex_b_prefix) { - report_and_fail(); - } - } - - int inst = ubyte_at(rex_size); - if (inst != instruction_code) { - report_and_fail(); - } - int modrm = ubyte_at(rex_size + 1); - if (modrm != modrm_rbx_code && modrm != modrm_rax_code) { - report_and_fail(); - } -} -#endif - -intptr_t NativeLoadGot::data() const { - return *(intptr_t *) got_address(); -} - -address NativePltCall::destination() const { - NativeGotJump* jump = nativeGotJump_at(plt_jump()); - return jump->destination(); -} - -address NativePltCall::plt_entry() const { - return return_address() + displacement(); -} - -address NativePltCall::plt_jump() const { - address entry = plt_entry(); - // Virtual PLT code has move instruction first - if (((NativeGotJump*)entry)->is_GotJump()) { - return entry; - } else { - return nativeLoadGot_at(entry)->next_instruction_address(); - } -} - -address NativePltCall::plt_load_got() const { - address entry = plt_entry(); - if (!((NativeGotJump*)entry)->is_GotJump()) { - // Virtual PLT code has move instruction first - return entry; - } else { - // Static PLT code has move instruction second (from c2i stub) - return nativeGotJump_at(entry)->next_instruction_address(); - } -} - -address NativePltCall::plt_c2i_stub() const { - address entry = plt_load_got(); - // This method should be called only for static calls which has C2I stub. - NativeLoadGot* load = nativeLoadGot_at(entry); - return entry; -} - -address NativePltCall::plt_resolve_call() const { - NativeGotJump* jump = nativeGotJump_at(plt_jump()); - address entry = jump->next_instruction_address(); - if (((NativeGotJump*)entry)->is_GotJump()) { - return entry; - } else { - // c2i stub 2 instructions - entry = nativeLoadGot_at(entry)->next_instruction_address(); - return nativeGotJump_at(entry)->next_instruction_address(); - } -} - -void NativePltCall::reset_to_plt_resolve_call() { - set_destination_mt_safe(plt_resolve_call()); -} - -void NativePltCall::set_destination_mt_safe(address dest) { - // rewriting the value in the GOT, it should always be aligned - NativeGotJump* jump = nativeGotJump_at(plt_jump()); - address* got = (address *) jump->got_address(); - *got = dest; -} - -void NativePltCall::set_stub_to_clean() { - NativeLoadGot* method_loader = nativeLoadGot_at(plt_c2i_stub()); - NativeGotJump* jump = nativeGotJump_at(method_loader->next_instruction_address()); - method_loader->set_data(0); - jump->set_jump_destination((address)-1); -} - -void NativePltCall::verify() const { - // Make sure code pattern is actually a call rip+off32 instruction. - int inst = ubyte_at(0); - if (inst != instruction_code) { - tty->print_cr("Addr: " INTPTR_FORMAT " Code: 0x%x", p2i(instruction_address()), - inst); - fatal("not a call rip+off32"); - } -} - -address NativeGotJump::destination() const { - address *got_entry = (address *) got_address(); - return *got_entry; -} - -#ifdef ASSERT -void NativeGotJump::report_and_fail() const { - tty->print_cr("Addr: " INTPTR_FORMAT " Code: %x %x %x", p2i(instruction_address()), - (has_rex() ? ubyte_at(0) : 0), ubyte_at(rex_size()), ubyte_at(rex_size() + 1)); - fatal("not a indirect rip jump"); -} - -void NativeGotJump::verify() const { - if (has_rex()) { - int rex = ubyte_at(0); - if (rex != rex_prefix) { - report_and_fail(); - } - } - int inst = ubyte_at(rex_size()); - if (inst != instruction_code) { - report_and_fail(); - } - int modrm = ubyte_at(rex_size() + 1); - if (modrm != modrm_code) { - report_and_fail(); - } -} -#endif - void NativeCall::verify() { // Make sure code pattern is actually a call imm32 instruction. int inst = ubyte_at(0); @@ -565,28 +428,6 @@ void NativeJump::patch_verified_entry(address entry, address verified_entry, add } -address NativeFarJump::jump_destination() const { - NativeMovConstReg* mov = nativeMovConstReg_at(addr_at(0)); - return (address)mov->data(); -} - -void NativeFarJump::verify() { - if (is_far_jump()) { - NativeMovConstReg* mov = nativeMovConstReg_at(addr_at(0)); - NativeInstruction* jmp = nativeInstruction_at(mov->next_instruction_address()); - if (jmp->is_jump_reg()) return; - } - fatal("not a jump instruction"); -} - -void NativePopReg::insert(address code_pos, Register reg) { - assert(reg->encoding() < 8, "no space for REX"); - assert(NativePopReg::instruction_size == sizeof(char), "right address unit for update"); - *code_pos = (u_char)(instruction_code | reg->encoding()); - ICache::invalidate_range(code_pos, instruction_size); -} - - void NativeIllegalInstruction::insert(address code_pos) { assert(NativeIllegalInstruction::instruction_size == sizeof(short), "right address unit for update"); *(short *)code_pos = instruction_code; diff --git a/src/hotspot/cpu/x86/nativeInst_x86.hpp b/src/hotspot/cpu/x86/nativeInst_x86.hpp index 70cb6179366..3a300472944 100644 --- a/src/hotspot/cpu/x86/nativeInst_x86.hpp +++ b/src/hotspot/cpu/x86/nativeInst_x86.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -37,7 +37,6 @@ // - - NativeMovRegMem // - - NativeMovRegMemPatching // - - NativeJump -// - - NativeFarJump // - - NativeIllegalOpCode // - - NativeGeneralJump // - - NativeReturn @@ -64,7 +63,6 @@ class NativeInstruction { inline bool is_return(); inline bool is_jump(); inline bool is_jump_reg(); - inline bool is_far_jump(); inline bool is_cond_jump(); inline bool is_safepoint_poll(); inline bool is_mov_literal64(); @@ -104,47 +102,6 @@ inline NativeInstruction* nativeInstruction_at(address address) { return inst; } -class NativePltCall: public NativeInstruction { -public: - enum Intel_specific_constants { - instruction_code = 0xE8, - instruction_size = 5, - instruction_offset = 0, - displacement_offset = 1, - return_address_offset = 5 - }; - address instruction_address() const { return addr_at(instruction_offset); } - address next_instruction_address() const { return addr_at(return_address_offset); } - address displacement_address() const { return addr_at(displacement_offset); } - int displacement() const { return (jint) int_at(displacement_offset); } - address return_address() const { return addr_at(return_address_offset); } - address destination() const; - address plt_entry() const; - address plt_jump() const; - address plt_load_got() const; - address plt_resolve_call() const; - address plt_c2i_stub() const; - void set_stub_to_clean(); - - void reset_to_plt_resolve_call(); - void set_destination_mt_safe(address dest); - - void verify() const; -}; - -inline NativePltCall* nativePltCall_at(address address) { - NativePltCall* call = (NativePltCall*) address; -#ifdef ASSERT - call->verify(); -#endif - return call; -} - -inline NativePltCall* nativePltCall_before(address addr) { - address at = addr - NativePltCall::instruction_size; - return nativePltCall_at(at); -} - class NativeCall; inline NativeCall* nativeCall_at(address address); // The NativeCall is an abstraction for accessing/manipulating native call imm32/rel32off @@ -426,57 +383,6 @@ class NativeLoadAddress: public NativeMovRegMem { } }; -// destination is rbx or rax -// mov rbx, [rip + offset] -class NativeLoadGot: public NativeInstruction { -#ifdef AMD64 - static const bool has_rex = true; - static const int rex_size = 1; -#else - static const bool has_rex = false; - static const int rex_size = 0; -#endif - - enum Intel_specific_constants { - rex_prefix = 0x48, - rex_b_prefix = 0x49, - instruction_code = 0x8b, - modrm_rbx_code = 0x1d, - modrm_rax_code = 0x05, - instruction_length = 6 + rex_size, - offset_offset = 2 + rex_size - }; - - int rip_offset() const { return int_at(offset_offset); } - address return_address() const { return addr_at(instruction_length); } - address got_address() const { return return_address() + rip_offset(); } - -#ifdef ASSERT - void report_and_fail() const; - address instruction_address() const { return addr_at(0); } -#endif - -public: - address next_instruction_address() const { return return_address(); } - intptr_t data() const; - void set_data(intptr_t data) { - intptr_t *addr = (intptr_t *) got_address(); - *addr = data; - } - - DEBUG_ONLY( void verify() const ); -}; - -inline NativeLoadGot* nativeLoadGot_at(address addr) { - NativeLoadGot* load = (NativeLoadGot*) addr; -#ifdef ASSERT - load->verify(); -#endif - return load; -} - -// jump rel32off - class NativeJump: public NativeInstruction { public: enum Intel_specific_constants { @@ -532,26 +438,6 @@ inline NativeJump* nativeJump_at(address address) { return jump; } -// far jump reg -class NativeFarJump: public NativeInstruction { - public: - address jump_destination() const; - - // Creation - inline friend NativeFarJump* nativeFarJump_at(address address); - - void verify(); - -}; - -inline NativeFarJump* nativeFarJump_at(address address) { - NativeFarJump* jump = (NativeFarJump*)(address); -#ifdef ASSERT - jump->verify(); -#endif - return jump; -} - // Handles all kinds of jump on Intel. Long/far, conditional/unconditional class NativeGeneralJump: public NativeInstruction { public: @@ -585,61 +471,6 @@ inline NativeGeneralJump* nativeGeneralJump_at(address address) { return jump; } -class NativeGotJump: public NativeInstruction { - enum Intel_specific_constants { - rex_prefix = 0x41, - instruction_code = 0xff, - modrm_code = 0x25, - instruction_size = 6, - rip_offset = 2 - }; - - bool has_rex() const { return ubyte_at(0) == rex_prefix; } - int rex_size() const { return has_rex() ? 1 : 0; } - - address return_address() const { return addr_at(instruction_size + rex_size()); } - int got_offset() const { return (jint) int_at(rip_offset + rex_size()); } - -#ifdef ASSERT - void report_and_fail() const; - address instruction_address() const { return addr_at(0); } -#endif - -public: - address got_address() const { return return_address() + got_offset(); } - address next_instruction_address() const { return return_address(); } - bool is_GotJump() const { return ubyte_at(rex_size()) == instruction_code; } - - address destination() const; - void set_jump_destination(address dest) { - address *got_entry = (address *) got_address(); - *got_entry = dest; - } - - DEBUG_ONLY( void verify() const; ) -}; - -inline NativeGotJump* nativeGotJump_at(address addr) { - NativeGotJump* jump = (NativeGotJump*)(addr); - debug_only(jump->verify()); - return jump; -} - -class NativePopReg : public NativeInstruction { - public: - enum Intel_specific_constants { - instruction_code = 0x58, - instruction_size = 1, - instruction_offset = 0, - data_offset = 1, - next_instruction_offset = 1 - }; - - // Insert a pop instruction - static void insert(address code_pos, Register reg); -}; - - class NativeIllegalInstruction: public NativeInstruction { public: enum Intel_specific_constants { @@ -702,7 +533,6 @@ inline bool NativeInstruction::is_jump_reg() { if (ubyte_at(0) == Assembler::REX_B) pos = 1; return ubyte_at(pos) == 0xFF && (ubyte_at(pos + 1) & 0xF0) == 0xE0; } -inline bool NativeInstruction::is_far_jump() { return is_mov_literal64(); } inline bool NativeInstruction::is_cond_jump() { return (int_at(0) & 0xF0FF) == 0x800F /* long jump */ || (ubyte_at(0) & 0xF0) == 0x70; /* short jump */ } inline bool NativeInstruction::is_safepoint_poll() { From e965d70a7425bec78620a2ca8bfaca3c392edf6a Mon Sep 17 00:00:00 2001 From: Emanuel Peter Date: Tue, 18 Jun 2024 16:15:09 +0000 Subject: [PATCH 51/70] 8333876: C2 SuperWord: regression after JDK-8325155: failed: internal connection Reviewed-by: kvn, roland --- src/hotspot/share/opto/superword.cpp | 8 +-- .../superword/TestParallelReduction.java | 60 +++++++++++++++++++ 2 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 test/hotspot/jtreg/compiler/loopopts/superword/TestParallelReduction.java diff --git a/src/hotspot/share/opto/superword.cpp b/src/hotspot/share/opto/superword.cpp index 5cd4341c42d..f78a9b63926 100644 --- a/src/hotspot/share/opto/superword.cpp +++ b/src/hotspot/share/opto/superword.cpp @@ -2755,11 +2755,11 @@ bool SuperWord::is_vector_use(Node* use, int u_idx) const { // Reduction: first input is internal connection. if (is_marked_reduction(use) && u_idx == 1) { -#ifdef ASSERT - for (uint i = 1; i < u_pk->size(); i++) { - assert(u_pk->at(i - 1) == u_pk->at(i)->in(1), "internal connection"); + for (uint i = 1; i < u_pk->size(); i++) { + if (u_pk->at(i - 1) != u_pk->at(i)->in(1)) { + return false; // not internally connected } -#endif + } return true; } diff --git a/test/hotspot/jtreg/compiler/loopopts/superword/TestParallelReduction.java b/test/hotspot/jtreg/compiler/loopopts/superword/TestParallelReduction.java new file mode 100644 index 00000000000..2062469edb0 --- /dev/null +++ b/test/hotspot/jtreg/compiler/loopopts/superword/TestParallelReduction.java @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package compiler.loopopts.superword; + +/* + * @test + * @bug 8333876 + * @summary Test parallel reductions. + * @run main compiler.loopopts.superword.TestParallelReduction + */ + +public class TestParallelReduction { + static int RANGE = 10_000; + + public static void main(String[] args) { + float[] a = new float[RANGE]; + for (int i = 0; i < a.length; i++) { + a[i] = i; + } + + float gold = test(a); + + for (int i = 0; i < 10_000; i++) { + if (test(a) != gold) { + throw new RuntimeException("wrong value"); + } + } + } + + static float test(float[] a) { + float x = 0; + float y = 0; + for (int i = 0; i < a.length; i+=2) { + x += a[i+0]; + y += a[i+1]; + } + return x+y; + } +} From 2ce85d96352cef4910cb6a5c2d9b174ca9d8a4e4 Mon Sep 17 00:00:00 2001 From: Alisen Chung Date: Tue, 18 Jun 2024 21:31:16 +0000 Subject: [PATCH 52/70] 8291472: [macos] jawt 1.4 lock/unlock not supported Reviewed-by: serb --- src/java.desktop/macosx/native/libjawt/jawt.m | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/java.desktop/macosx/native/libjawt/jawt.m b/src/java.desktop/macosx/native/libjawt/jawt.m index f5dc048a482..36d4e897f60 100644 --- a/src/java.desktop/macosx/native/libjawt/jawt.m +++ b/src/java.desktop/macosx/native/libjawt/jawt.m @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -55,15 +55,14 @@ awt->GetDrawingSurface = awt_GetDrawingSurface; awt->FreeDrawingSurface = awt_FreeDrawingSurface; - if (awt->version >= JAWT_VERSION_1_4) { - awt->Lock = awt_Lock; - awt->Unlock = awt_Unlock; - awt->GetComponent = awt_GetComponent; - if (awt->version >= JAWT_VERSION_9) { - awt->CreateEmbeddedFrame = awt_CreateEmbeddedFrame; - awt->SetBounds = awt_SetBounds; - awt->SynthesizeWindowActivation = awt_SynthesizeWindowActivation; - } + + awt->Lock = awt_Lock; + awt->Unlock = awt_Unlock; + awt->GetComponent = awt_GetComponent; + if (awt->version >= JAWT_VERSION_9) { + awt->CreateEmbeddedFrame = awt_CreateEmbeddedFrame; + awt->SetBounds = awt_SetBounds; + awt->SynthesizeWindowActivation = awt_SynthesizeWindowActivation; } return JNI_TRUE; From e227c7e37d4de0656f013f3a936b1acfa56cc2e0 Mon Sep 17 00:00:00 2001 From: Archie Cobbs Date: Tue, 18 Jun 2024 23:23:39 +0000 Subject: [PATCH 53/70] 8334258: Compiler erronousely allows access to instance variable in argument expression of a constructor invocation Reviewed-by: mcimadamore --- .../com/sun/tools/javac/comp/Resolve.java | 23 +++++++++++-------- .../SuperInit/EarlyAssignmentNoPreview1.java | 21 +++++++++++++++++ .../SuperInit/EarlyAssignmentNoPreview1.out | 2 ++ .../SuperInit/EarlyAssignmentNoPreview2.java | 21 +++++++++++++++++ .../SuperInit/EarlyAssignmentNoPreview2.out | 2 ++ .../SuperInit/EarlyAssignmentNoPreview3.java | 21 +++++++++++++++++ .../SuperInit/EarlyAssignmentNoPreview3.out | 2 ++ 7 files changed, 83 insertions(+), 9 deletions(-) create mode 100644 test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview1.java create mode 100644 test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview1.out create mode 100644 test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview2.java create mode 100644 test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview2.out create mode 100644 test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview3.java create mode 100644 test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview3.out diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java index 3dcac0b2646..079a0bc5c6a 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -100,6 +100,7 @@ public class Resolve { DeferredAttr deferredAttr; Check chk; Infer infer; + Preview preview; ClassFinder finder; ModuleFinder moduleFinder; Types types; @@ -135,7 +136,7 @@ protected Resolve(Context context) { moduleFinder = ModuleFinder.instance(context); types = Types.instance(context); diags = JCDiagnostic.Factory.instance(context); - Preview preview = Preview.instance(context); + preview = Preview.instance(context); Source source = Source.instance(context); Options options = Options.instance(context); compactMethodDiags = options.isSet(Option.XDIAGS, "compact") || @@ -1480,10 +1481,11 @@ else throw new FatalError( /** Find unqualified variable or field with given name. * Synthetic fields always skipped. + * @param pos The position to use for error reporting. * @param env The current environment. * @param name The name of the variable or field. */ - Symbol findVar(Env env, Name name) { + Symbol findVar(DiagnosticPosition pos, Env env, Name name) { Symbol bestSoFar = varNotFound; Env env1 = env; boolean staticOnly = false; @@ -1508,7 +1510,7 @@ Symbol findVar(Env env, Name name) { (sym.flags() & STATIC) == 0) { if (staticOnly) return new StaticError(sym); - if (env1.info.ctorPrologue && !isAllowedEarlyReference(env1, (VarSymbol)sym)) + if (env1.info.ctorPrologue && !isAllowedEarlyReference(pos, env1, (VarSymbol)sym)) return new RefBeforeCtorCalledError(sym); } return sym; @@ -2421,15 +2423,15 @@ Symbol findType(Env env, Name name) { * (a subset of VAL, TYP, PCK). */ Symbol findIdent(DiagnosticPosition pos, Env env, Name name, KindSelector kind) { - return checkNonExistentType(checkRestrictedType(pos, findIdentInternal(env, name, kind), name)); + return checkNonExistentType(checkRestrictedType(pos, findIdentInternal(pos, env, name, kind), name)); } - Symbol findIdentInternal(Env env, Name name, KindSelector kind) { + Symbol findIdentInternal(DiagnosticPosition pos, Env env, Name name, KindSelector kind) { Symbol bestSoFar = typeNotFound; Symbol sym; if (kind.contains(KindSelector.VAL)) { - sym = findVar(env, name); + sym = findVar(pos, env, name); if (sym.exists()) return sym; else bestSoFar = bestOf(bestSoFar, sym); } @@ -3776,7 +3778,7 @@ Symbol resolveSelf(DiagnosticPosition pos, if (sym != null) { if (staticOnly) sym = new StaticError(sym); - else if (env1.info.ctorPrologue && !isAllowedEarlyReference(env1, (VarSymbol)sym)) + else if (env1.info.ctorPrologue && !isAllowedEarlyReference(pos, env1, (VarSymbol)sym)) sym = new RefBeforeCtorCalledError(sym); return accessBase(sym, pos, env.enclClass.sym.type, name, true); @@ -3845,7 +3847,7 @@ private List pruneInterfaces(Type t) { * We also don't verify that the field has no initializer, which is required. * To catch those cases, we rely on similar logic in Attr.checkAssignable(). */ - private boolean isAllowedEarlyReference(Env env, VarSymbol v) { + private boolean isAllowedEarlyReference(DiagnosticPosition pos, Env env, VarSymbol v) { // Check assumptions Assert.check(env.info.ctorPrologue); @@ -3880,6 +3882,9 @@ private boolean isAllowedEarlyReference(Env env, VarSymbol v) { if (isEarlyReference(env, base, v) && v.owner != env.enclClass.sym) return false; + // The flexible constructors feature must be enabled + preview.checkSourceLevel(pos, Feature.FLEXIBLE_CONSTRUCTORS); + // OK return true; } diff --git a/test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview1.java b/test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview1.java new file mode 100644 index 00000000000..abb6bacbc8f --- /dev/null +++ b/test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview1.java @@ -0,0 +1,21 @@ +/* + * @test /nodynamiccopyright/ + * @bug 8334258 + * @summary Disallow early assignment if FLEXIBLE_CONSTRUCTORS preview feature is not enabled + * @compile/fail/ref=EarlyAssignmentNoPreview1.out -XDrawDiagnostics EarlyAssignmentNoPreview1.java + */ +public class EarlyAssignmentNoPreview1 { + + Runnable r; + + public EarlyAssignmentNoPreview1() { + this(r = () -> System.out.println("hello")); + } + + public EarlyAssignmentNoPreview1(Runnable r) { + } + + public static void main(String[] args) { + new EarlyAssignmentNoPreview1(); + } +} diff --git a/test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview1.out b/test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview1.out new file mode 100644 index 00000000000..6c5afbbd12b --- /dev/null +++ b/test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview1.out @@ -0,0 +1,2 @@ +EarlyAssignmentNoPreview1.java:12:14: compiler.err.preview.feature.disabled: (compiler.misc.feature.flexible.constructors) +1 error diff --git a/test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview2.java b/test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview2.java new file mode 100644 index 00000000000..3c33734f42a --- /dev/null +++ b/test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview2.java @@ -0,0 +1,21 @@ +/* + * @test /nodynamiccopyright/ + * @bug 8334258 + * @summary Disallow early assignment if FLEXIBLE_CONSTRUCTORS preview feature is not enabled + * @compile/fail/ref=EarlyAssignmentNoPreview2.out -XDrawDiagnostics EarlyAssignmentNoPreview2.java + */ +public class EarlyAssignmentNoPreview2 { + + Runnable r; + + public EarlyAssignmentNoPreview2() { + this(this.r = () -> System.out.println("hello")); + } + + public EarlyAssignmentNoPreview2(Runnable r) { + } + + public static void main(String[] args) { + new EarlyAssignmentNoPreview2(); + } +} diff --git a/test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview2.out b/test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview2.out new file mode 100644 index 00000000000..38fb885684e --- /dev/null +++ b/test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview2.out @@ -0,0 +1,2 @@ +EarlyAssignmentNoPreview2.java:12:14: compiler.err.preview.feature.disabled: (compiler.misc.feature.flexible.constructors) +1 error diff --git a/test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview3.java b/test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview3.java new file mode 100644 index 00000000000..f6269f2cb1f --- /dev/null +++ b/test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview3.java @@ -0,0 +1,21 @@ +/* + * @test /nodynamiccopyright/ + * @bug 8334258 + * @summary Disallow early assignment if FLEXIBLE_CONSTRUCTORS preview feature is not enabled + * @compile/fail/ref=EarlyAssignmentNoPreview3.out -XDrawDiagnostics EarlyAssignmentNoPreview3.java + */ +public class EarlyAssignmentNoPreview3 { + + Runnable r; + + public EarlyAssignmentNoPreview3() { + this(EarlyAssignmentNoPreview3.this.r = () -> System.out.println("hello")); + } + + public EarlyAssignmentNoPreview3(Runnable r) { + } + + public static void main(String[] args) { + new EarlyAssignmentNoPreview3(); + } +} diff --git a/test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview3.out b/test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview3.out new file mode 100644 index 00000000000..def9f4f3722 --- /dev/null +++ b/test/langtools/tools/javac/SuperInit/EarlyAssignmentNoPreview3.out @@ -0,0 +1,2 @@ +EarlyAssignmentNoPreview3.java:12:39: compiler.err.preview.feature.disabled: (compiler.misc.feature.flexible.constructors) +1 error From 48621ae193ef70b2fae4dcb7ddc524f349beb131 Mon Sep 17 00:00:00 2001 From: Christian Hagedorn Date: Wed, 19 Jun 2024 06:45:04 +0000 Subject: [PATCH 54/70] 8331168: Introduce PredicateEntryIterator to iterate through predicate entries Reviewed-by: roland, kvn --- src/hotspot/share/opto/loopnode.cpp | 54 +++++++++++------------- src/hotspot/share/opto/loopnode.hpp | 6 ++- src/hotspot/share/opto/loopopts.cpp | 2 +- src/hotspot/share/opto/predicates.cpp | 59 ++++++++++++++++++++++----- src/hotspot/share/opto/predicates.hpp | 48 ++++++++++++++++++---- 5 files changed, 118 insertions(+), 51 deletions(-) diff --git a/src/hotspot/share/opto/loopnode.cpp b/src/hotspot/share/opto/loopnode.cpp index d58be510516..6c16d7cc6a4 100644 --- a/src/hotspot/share/opto/loopnode.cpp +++ b/src/hotspot/share/opto/loopnode.cpp @@ -169,10 +169,10 @@ Node *PhaseIdealLoop::get_early_ctrl_for_expensive(Node *n, Node* earliest) { return earliest; } - while (1) { - Node *next = ctl; - // Moving the node out of a loop on the projection of a If - // confuses loop predication. So once we hit a Loop in a If branch + while (true) { + Node* next = ctl; + // Moving the node out of a loop on the projection of an If + // confuses Loop Predication. So, once we hit a loop in an If branch // that doesn't branch to an UNC, we stop. The code that process // expensive nodes will notice the loop and skip over it to try to // move the node further up. @@ -6081,20 +6081,27 @@ Node* PhaseIdealLoop::get_late_ctrl_with_anti_dep(LoadNode* n, Node* early, Node return LCA; } -// true if CFG node d dominates CFG node n -bool PhaseIdealLoop::is_dominator(Node *d, Node *n) { - if (d == n) +// Is CFG node 'dominator' dominating node 'n'? +bool PhaseIdealLoop::is_dominator(Node* dominator, Node* n) { + if (dominator == n) { return true; - assert(d->is_CFG() && n->is_CFG(), "must have CFG nodes"); - uint dd = dom_depth(d); + } + assert(dominator->is_CFG() && n->is_CFG(), "must have CFG nodes"); + uint dd = dom_depth(dominator); while (dom_depth(n) >= dd) { - if (n == d) + if (n == dominator) { return true; + } n = idom(n); } return false; } +// Is CFG node 'dominator' strictly dominating node 'n'? +bool PhaseIdealLoop::is_strict_dominator(Node* dominator, Node* n) { + return dominator != n && is_dominator(dominator, n); +} + //------------------------------dom_lca_for_get_late_ctrl_internal------------- // Pair-wise LCA with tags. // Tag each index with the node 'tag' currently being processed @@ -6377,31 +6384,16 @@ void PhaseIdealLoop::build_loop_late_post_work(Node *n, bool pinned) { if (least != early) { // Move the node above predicates as far up as possible so a - // following pass of loop predication doesn't hoist a predicate + // following pass of Loop Predication doesn't hoist a predicate // that depends on it above that node. - Node* new_ctrl = least; - for (;;) { - if (!new_ctrl->is_Proj()) { - break; - } - CallStaticJavaNode* call = new_ctrl->as_Proj()->is_uncommon_trap_if_pattern(); - if (call == nullptr) { - break; - } - int req = call->uncommon_trap_request(); - Deoptimization::DeoptReason trap_reason = Deoptimization::trap_request_reason(req); - if (trap_reason != Deoptimization::Reason_loop_limit_check && - trap_reason != Deoptimization::Reason_predicate && - trap_reason != Deoptimization::Reason_profile_predicate) { - break; - } - Node* c = new_ctrl->in(0)->in(0); - if (is_dominator(c, early) && c != early) { + PredicateEntryIterator predicate_iterator(least); + while (predicate_iterator.has_next()) { + Node* next_predicate_entry = predicate_iterator.next_entry(); + if (is_strict_dominator(next_predicate_entry, early)) { break; } - new_ctrl = c; + least = next_predicate_entry; } - least = new_ctrl; } // Try not to place code on a loop entry projection // which can inhibit range check elimination. diff --git a/src/hotspot/share/opto/loopnode.hpp b/src/hotspot/share/opto/loopnode.hpp index 90ef4da4f1e..8d9d4b3e0e5 100644 --- a/src/hotspot/share/opto/loopnode.hpp +++ b/src/hotspot/share/opto/loopnode.hpp @@ -1011,8 +1011,10 @@ class PhaseIdealLoop : public PhaseTransform { assert(n == find_non_split_ctrl(n), "must return legal ctrl" ); return n; } - // true if CFG node d dominates CFG node n - bool is_dominator(Node *d, Node *n); + + bool is_dominator(Node* dominator, Node* n); + bool is_strict_dominator(Node* dominator, Node* n); + // return get_ctrl for a data node and self(n) for a CFG node Node* ctrl_or_self(Node* n) { if (has_ctrl(n)) diff --git a/src/hotspot/share/opto/loopopts.cpp b/src/hotspot/share/opto/loopopts.cpp index b19c71fdd86..23b2edce654 100644 --- a/src/hotspot/share/opto/loopopts.cpp +++ b/src/hotspot/share/opto/loopopts.cpp @@ -4294,7 +4294,7 @@ bool PhaseIdealLoop::duplicate_loop_backedge(IdealLoopTree *loop, Node_List &old } else { wq.push(c->in(0)); } - assert(!is_dominator(c, region) || c == region, "shouldn't go above region"); + assert(!is_strict_dominator(c, region), "shouldn't go above region"); } Node* region_dom = idom(region); diff --git a/src/hotspot/share/opto/predicates.cpp b/src/hotspot/share/opto/predicates.cpp index 9f782f34bdb..5b0de2e02d5 100644 --- a/src/hotspot/share/opto/predicates.cpp +++ b/src/hotspot/share/opto/predicates.cpp @@ -32,29 +32,29 @@ // (i.e. not belonging to an Initialized Assertion Predicate anymore) Node* AssertionPredicatesWithHalt::find_entry(Node* start_proj) { Node* entry = start_proj; - while (is_assertion_predicate_success_proj(entry)) { + while (AssertionPredicateWithHalt::is_predicate(entry)) { entry = entry->in(0)->in(0); } return entry; } -bool AssertionPredicatesWithHalt::is_assertion_predicate_success_proj(const Node* predicate_proj) { - if (predicate_proj == nullptr || !predicate_proj->is_IfProj() || !predicate_proj->in(0)->is_If()) { +bool AssertionPredicateWithHalt::is_predicate(const Node* maybe_success_proj) { + if (maybe_success_proj == nullptr || !maybe_success_proj->is_IfProj() || !maybe_success_proj->in(0)->is_If()) { return false; } - return has_assertion_predicate_opaque(predicate_proj) && has_halt(predicate_proj); + return has_assertion_predicate_opaque(maybe_success_proj) && has_halt(maybe_success_proj); } // Check if the If node of `predicate_proj` has an Opaque4 (Template Assertion Predicate) or an // OpaqueInitializedAssertionPredicate (Initialized Assertion Predicate) node as input. -bool AssertionPredicatesWithHalt::has_assertion_predicate_opaque(const Node* predicate_proj) { +bool AssertionPredicateWithHalt::has_assertion_predicate_opaque(const Node* predicate_proj) { IfNode* iff = predicate_proj->in(0)->as_If(); Node* bol = iff->in(1); return bol->is_Opaque4() || bol->is_OpaqueInitializedAssertionPredicate(); } // Check if the other projection (UCT projection) of `success_proj` has a Halt node as output. -bool AssertionPredicatesWithHalt::has_halt(const Node* success_proj) { +bool AssertionPredicateWithHalt::has_halt(const Node* success_proj) { ProjNode* other_proj = success_proj->as_IfProj()->other_if_proj(); return other_proj->outcnt() == 1 && other_proj->unique_out()->Opcode() == Op_Halt; } @@ -72,7 +72,15 @@ ParsePredicateNode* ParsePredicate::init_parse_predicate(Node* parse_predicate_p return nullptr; } -Deoptimization::DeoptReason RuntimePredicate::uncommon_trap_reason(IfProjNode* if_proj) { +bool ParsePredicate::is_predicate(Node* maybe_success_proj) { + if (!maybe_success_proj->is_IfProj()) { + return false; + } + IfNode* if_node = maybe_success_proj->in(0)->as_If(); + return if_node->is_ParsePredicate(); +} + +Deoptimization::DeoptReason RegularPredicateWithUCT::uncommon_trap_reason(IfProjNode* if_proj) { CallStaticJavaNode* uct_call = if_proj->is_uncommon_trap_if_pattern(); if (uct_call == nullptr) { return Deoptimization::Reason_none; @@ -80,8 +88,20 @@ Deoptimization::DeoptReason RuntimePredicate::uncommon_trap_reason(IfProjNode* i return Deoptimization::trap_request_reason(uct_call->uncommon_trap_request()); } -bool RuntimePredicate::is_success_proj(Node* node, Deoptimization::DeoptReason deopt_reason) { - if (may_be_runtime_predicate_if(node)) { +bool RegularPredicateWithUCT::is_predicate(Node* maybe_success_proj) { + if (may_be_predicate_if(maybe_success_proj)) { + IfProjNode* success_proj = maybe_success_proj->as_IfProj(); + const Deoptimization::DeoptReason deopt_reason = uncommon_trap_reason(success_proj); + return (deopt_reason == Deoptimization::Reason_loop_limit_check || + deopt_reason == Deoptimization::Reason_predicate || + deopt_reason == Deoptimization::Reason_profile_predicate); + } else { + return false; + } +} + +bool RegularPredicateWithUCT::is_predicate(Node* node, Deoptimization::DeoptReason deopt_reason) { + if (may_be_predicate_if(node)) { return deopt_reason == uncommon_trap_reason(node->as_IfProj()); } else { return false; @@ -89,7 +109,7 @@ bool RuntimePredicate::is_success_proj(Node* node, Deoptimization::DeoptReason d } // A Runtime Predicate must have an If or a RangeCheck node, while the If should not be a zero trip guard check. -bool RuntimePredicate::may_be_runtime_predicate_if(Node* node) { +bool RegularPredicateWithUCT::may_be_predicate_if(Node* node) { if (node->is_IfProj()) { const IfNode* if_node = node->in(0)->as_If(); const int opcode_if = if_node->Opcode(); @@ -101,6 +121,10 @@ bool RuntimePredicate::may_be_runtime_predicate_if(Node* node) { return false; } +bool RuntimePredicate::is_success_proj(Node* node, Deoptimization::DeoptReason deopt_reason) { + return RegularPredicateWithUCT::is_predicate(node, deopt_reason); +} + ParsePredicateIterator::ParsePredicateIterator(const Predicates& predicates) : _current_index(0) { const PredicateBlock* loop_limit_check_predicate_block = predicates.loop_limit_check_predicate_block(); if (loop_limit_check_predicate_block->has_parse_predicate()) { @@ -356,3 +380,18 @@ bool TemplateAssertionPredicateExpressionNode::is_in_expression(Node* node) { bool TemplateAssertionPredicateExpressionNode::is_template_assertion_predicate(Node* node) { return node->is_If() && node->in(1)->is_Opaque4(); } + +// Is current node pointed to by iterator a predicate? +bool PredicateEntryIterator::has_next() const { + return ParsePredicate::is_predicate(_current) || + RegularPredicateWithUCT::is_predicate(_current) || + AssertionPredicateWithHalt::is_predicate(_current); +} + +// Skip the current predicate pointed to by iterator by returning the input into the predicate. This could possibly be +// a non-predicate node. +Node* PredicateEntryIterator::next_entry() { + assert(has_next(), "current must be predicate"); + _current = _current->in(0)->in(0); + return _current; +} diff --git a/src/hotspot/share/opto/predicates.hpp b/src/hotspot/share/opto/predicates.hpp index bf12aeb6a51..9cac98eb993 100644 --- a/src/hotspot/share/opto/predicates.hpp +++ b/src/hotspot/share/opto/predicates.hpp @@ -26,6 +26,7 @@ #define SHARE_OPTO_PREDICATES_HPP #include "opto/cfgnode.hpp" +#include "opto/connode.hpp" #include "opto/opaquenode.hpp" /* @@ -199,9 +200,6 @@ class AssertionPredicatesWithHalt : public StackObj { Node* _entry; static Node* find_entry(Node* start_proj); - static bool has_assertion_predicate_opaque(const Node* predicate_proj); - static bool has_halt(const Node* success_proj); - static bool is_assertion_predicate_success_proj(const Node* predicate_proj); public: AssertionPredicatesWithHalt(Node* assertion_predicate_proj) : _entry(find_entry(assertion_predicate_proj)) {} @@ -213,13 +211,37 @@ class AssertionPredicatesWithHalt : public StackObj { } }; +// Class to represent a single Assertion Predicate with a HaltNode. This could either be: +// - A Template Assertion Predicate. +// - An Initialized Assertion Predicate. +// Note that all other Regular Predicates have an UCT node. +class AssertionPredicateWithHalt : public StackObj { + static bool has_assertion_predicate_opaque(const Node* predicate_proj); + static bool has_halt(const Node* success_proj); + public: + static bool is_predicate(const Node* maybe_success_proj); +}; + +// Class to represent a single Regular Predicate with an UCT. This could either be: +// - A Runtime Predicate +// - A Template Assertion Predicate +// Note that all other Regular Predicates have a Halt node. +class RegularPredicateWithUCT : public StackObj { + static Deoptimization::DeoptReason uncommon_trap_reason(IfProjNode* if_proj); + static bool may_be_predicate_if(Node* node); + + public: + static bool is_predicate(Node* maybe_success_proj); + static bool is_predicate(Node* node, Deoptimization::DeoptReason deopt_reason); +}; + // Class to represent a Parse Predicate. class ParsePredicate : public StackObj { ParsePredicateSuccessProj* _success_proj; ParsePredicateNode* _parse_predicate_node; Node* _entry; - IfTrueNode* init_success_proj(const Node* parse_predicate_proj) const { + static IfTrueNode* init_success_proj(const Node* parse_predicate_proj) { assert(parse_predicate_proj != nullptr, "must not be null"); return parse_predicate_proj->isa_IfTrue(); } @@ -253,13 +275,12 @@ class ParsePredicate : public StackObj { assert(is_valid(), "must be valid"); return _success_proj; } + + static bool is_predicate(Node* maybe_success_proj); }; // Utility class for queries on Runtime Predicates. class RuntimePredicate : public StackObj { - static Deoptimization::DeoptReason uncommon_trap_reason(IfProjNode* if_proj); - static bool may_be_runtime_predicate_if(Node* node); - public: static bool is_success_proj(Node* node, Deoptimization::DeoptReason deopt_reason); }; @@ -473,4 +494,17 @@ class ParsePredicateIterator : public StackObj { ParsePredicateNode* next(); }; + +// Special predicate iterator that can be used to walk through predicate entries, regardless of whether the predicate +// belongs to the same loop or not (i.e. leftovers from already folded nodes). The iterator returns the next entry +// to a predicate. +class PredicateEntryIterator : public StackObj { + Node* _current; + + public: + explicit PredicateEntryIterator(Node* start) : _current(start) {}; + + bool has_next() const; + Node* next_entry(); +}; #endif // SHARE_OPTO_PREDICATES_HPP From 2165a053e8bf56220af8ef1ef50708364f555931 Mon Sep 17 00:00:00 2001 From: Yudi Zheng Date: Wed, 19 Jun 2024 09:04:12 +0000 Subject: [PATCH 55/70] 8334399: [JVMCI] Implement JVMCICompiler::is_intrinsic_supported Reviewed-by: dnsimon --- src/hotspot/share/jvmci/jvmciCompiler.cpp | 11 +++++++- src/hotspot/share/jvmci/jvmciCompiler.hpp | 4 ++- src/hotspot/share/jvmci/jvmciEnv.cpp | 27 ++++++++++++++++++- src/hotspot/share/jvmci/jvmciEnv.hpp | 4 ++- src/hotspot/share/jvmci/jvmciJavaClasses.hpp | 3 ++- src/hotspot/share/jvmci/jvmciRuntime.cpp | 10 +++++++ src/hotspot/share/jvmci/jvmciRuntime.hpp | 3 +++ src/hotspot/share/jvmci/vmSymbols_jvmci.hpp | 3 ++- .../vm/ci/hotspot/HotSpotJVMCIRuntime.java | 8 +++++- .../vm/ci/hotspot/HotSpotVMConfigStore.java | 23 +++++++++++++++- .../jdk/vm/ci/runtime/JVMCICompiler.java | 13 ++++++++- 11 files changed, 100 insertions(+), 9 deletions(-) diff --git a/src/hotspot/share/jvmci/jvmciCompiler.cpp b/src/hotspot/share/jvmci/jvmciCompiler.cpp index 5be065aadad..2b8684f7ab8 100644 --- a/src/hotspot/share/jvmci/jvmciCompiler.cpp +++ b/src/hotspot/share/jvmci/jvmciCompiler.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -200,6 +200,15 @@ void JVMCICompiler::print_timers() { _hosted_code_installs.print_on(tty, " Install Code: "); } +bool JVMCICompiler::is_intrinsic_supported(const methodHandle& method) { + vmIntrinsics::ID id = method->intrinsic_id(); + assert(id != vmIntrinsics::_none, "must be a VM intrinsic"); + JavaThread* thread = JavaThread::current(); + JVMCIEnv jvmciEnv(thread, __FILE__, __LINE__); + JVMCIRuntime* runtime = JVMCI::compiler_runtime(thread, false); + return runtime->is_intrinsic_supported(&jvmciEnv, (jint) id); +} + void JVMCICompiler::CodeInstallStats::print_on(outputStream* st, const char* prefix) const { double time = _timer.seconds(); st->print_cr("%s%7.3f s (installs: %d, CodeBlob total size: %d, CodeBlob code size: %d)", diff --git a/src/hotspot/share/jvmci/jvmciCompiler.hpp b/src/hotspot/share/jvmci/jvmciCompiler.hpp index bdb50cfc26a..0d03bd08bf6 100644 --- a/src/hotspot/share/jvmci/jvmciCompiler.hpp +++ b/src/hotspot/share/jvmci/jvmciCompiler.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -136,6 +136,8 @@ class JVMCICompiler : public AbstractCompiler { // Print compilation timers and statistics virtual void print_timers(); + virtual bool is_intrinsic_supported(const methodHandle& method); + // Gets the number of methods that have been successfully compiled by // a call to JVMCICompiler::compile_method(). int methods_compiled() { return _methods_compiled; } diff --git a/src/hotspot/share/jvmci/jvmciEnv.cpp b/src/hotspot/share/jvmci/jvmciEnv.cpp index 624b25b9e2c..01b78b45b2a 100644 --- a/src/hotspot/share/jvmci/jvmciEnv.cpp +++ b/src/hotspot/share/jvmci/jvmciEnv.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -967,6 +967,31 @@ jboolean JVMCIEnv::call_HotSpotJVMCIRuntime_isGCSupported (JVMCIObject runtime, } } +jboolean JVMCIEnv::call_HotSpotJVMCIRuntime_isIntrinsicSupported (JVMCIObject runtime, jint intrinsicIdentifier) { + JavaThread* THREAD = JavaThread::current(); // For exception macros. + if (is_hotspot()) { + JavaCallArguments jargs; + jargs.push_oop(Handle(THREAD, HotSpotJVMCI::resolve(runtime))); + jargs.push_int(intrinsicIdentifier); + JavaValue result(T_BOOLEAN); + JavaCalls::call_special(&result, + HotSpotJVMCI::HotSpotJVMCIRuntime::klass(), + vmSymbols::isIntrinsicSupported_name(), + vmSymbols::int_bool_signature(), &jargs, CHECK_0); + return result.get_jboolean(); + } else { + JNIAccessMark jni(this, THREAD); + jboolean result = jni()->CallNonvirtualBooleanMethod(runtime.as_jobject(), + JNIJVMCI::HotSpotJVMCIRuntime::clazz(), + JNIJVMCI::HotSpotJVMCIRuntime::isIntrinsicSupported_method(), + intrinsicIdentifier); + if (jni()->ExceptionCheck()) { + return false; + } + return result; + } +} + JVMCIObject JVMCIEnv::call_HotSpotJVMCIRuntime_compileMethod (JVMCIObject runtime, JVMCIObject method, int entry_bci, jlong compile_state, int id) { JavaThread* THREAD = JVMCI::compilation_tick(JavaThread::current()); // For exception macros. diff --git a/src/hotspot/share/jvmci/jvmciEnv.hpp b/src/hotspot/share/jvmci/jvmciEnv.hpp index b3aa487f34c..69f6647b0d6 100644 --- a/src/hotspot/share/jvmci/jvmciEnv.hpp +++ b/src/hotspot/share/jvmci/jvmciEnv.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -359,6 +359,8 @@ class JVMCIEnv : public ResourceObj { jboolean call_HotSpotJVMCIRuntime_isGCSupported(JVMCIObject runtime, jint gcIdentifier); + jboolean call_HotSpotJVMCIRuntime_isIntrinsicSupported(JVMCIObject runtime, jint intrinsicIdentifier); + void call_HotSpotJVMCIRuntime_postTranslation(JVMCIObject object, JVMCI_TRAPS); // Converts the JavaKind.typeChar value in `ch` to a BasicType diff --git a/src/hotspot/share/jvmci/jvmciJavaClasses.hpp b/src/hotspot/share/jvmci/jvmciJavaClasses.hpp index 3561093caaa..d5fcd2aaaba 100644 --- a/src/hotspot/share/jvmci/jvmciJavaClasses.hpp +++ b/src/hotspot/share/jvmci/jvmciJavaClasses.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -202,6 +202,7 @@ objectarray_field(HotSpotJVMCIRuntime, excludeFromJVMCICompilation, "[Ljava/lang/Module;") \ jvmci_method(CallNonvirtualObjectMethod, GetMethodID, call_special, JVMCIObject, HotSpotJVMCIRuntime, compileMethod, compileMethod_signature) \ jvmci_method(CallNonvirtualObjectMethod, GetMethodID, call_special, JVMCIObject, HotSpotJVMCIRuntime, isGCSupported, int_bool_signature) \ + jvmci_method(CallNonvirtualObjectMethod, GetMethodID, call_special, JVMCIObject, HotSpotJVMCIRuntime, isIntrinsicSupported, int_bool_signature) \ jvmci_method(CallNonvirtualVoidMethod, GetMethodID, call_special, void, HotSpotJVMCIRuntime, bootstrapFinished, void_method_signature) \ jvmci_method(CallNonvirtualVoidMethod, GetMethodID, call_special, void, HotSpotJVMCIRuntime, shutdown, void_method_signature) \ jvmci_method(CallStaticObjectMethod, GetStaticMethodID, call_static, JVMCIObject, HotSpotJVMCIRuntime, runtime, runtime_signature) \ diff --git a/src/hotspot/share/jvmci/jvmciRuntime.cpp b/src/hotspot/share/jvmci/jvmciRuntime.cpp index 9dc0e381df9..504fbfcb1b0 100644 --- a/src/hotspot/share/jvmci/jvmciRuntime.cpp +++ b/src/hotspot/share/jvmci/jvmciRuntime.cpp @@ -2050,6 +2050,16 @@ bool JVMCIRuntime::is_gc_supported(JVMCIEnv* JVMCIENV, CollectedHeap::Name name) return JVMCIENV->call_HotSpotJVMCIRuntime_isGCSupported(receiver, (int) name); } +bool JVMCIRuntime::is_intrinsic_supported(JVMCIEnv* JVMCIENV, jint id) { + JVMCI_EXCEPTION_CONTEXT + + JVMCIObject receiver = get_HotSpotJVMCIRuntime(JVMCIENV); + if (JVMCIENV->has_pending_exception()) { + fatal_exception(JVMCIENV, "Exception during HotSpotJVMCIRuntime initialization"); + } + return JVMCIENV->call_HotSpotJVMCIRuntime_isIntrinsicSupported(receiver, id); +} + // ------------------------------------------------------------------ JVMCI::CodeInstallResult JVMCIRuntime::register_method(JVMCIEnv* JVMCIENV, const methodHandle& method, diff --git a/src/hotspot/share/jvmci/jvmciRuntime.hpp b/src/hotspot/share/jvmci/jvmciRuntime.hpp index 123cfde15ac..bc5bee4edeb 100644 --- a/src/hotspot/share/jvmci/jvmciRuntime.hpp +++ b/src/hotspot/share/jvmci/jvmciRuntime.hpp @@ -431,6 +431,9 @@ class JVMCIRuntime: public CHeapObj { // Determines if the GC identified by `name` is supported by the JVMCI compiler. bool is_gc_supported(JVMCIEnv* JVMCIENV, CollectedHeap::Name name); + // Determines if the intrinsic identified by `id` is supported by the JVMCI compiler. + bool is_intrinsic_supported(JVMCIEnv* JVMCIENV, jint id); + // Register the result of a compilation. JVMCI::CodeInstallResult register_method(JVMCIEnv* JVMCIENV, const methodHandle& target, diff --git a/src/hotspot/share/jvmci/vmSymbols_jvmci.hpp b/src/hotspot/share/jvmci/vmSymbols_jvmci.hpp index 13d81d9f286..c0a7afe2b63 100644 --- a/src/hotspot/share/jvmci/vmSymbols_jvmci.hpp +++ b/src/hotspot/share/jvmci/vmSymbols_jvmci.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -81,6 +81,7 @@ template(compileMethod_name, "compileMethod") \ template(compileMethod_signature, "(Ljdk/vm/ci/hotspot/HotSpotResolvedJavaMethod;IJI)Ljdk/vm/ci/hotspot/HotSpotCompilationRequestResult;") \ template(isGCSupported_name, "isGCSupported") \ + template(isIntrinsicSupported_name, "isIntrinsicSupported") \ template(fromMetaspace_name, "fromMetaspace") \ template(method_fromMetaspace_signature, "(JLjdk/vm/ci/hotspot/HotSpotResolvedObjectTypeImpl;)Ljdk/vm/ci/hotspot/HotSpotResolvedJavaMethod;") \ template(constantPool_fromMetaspace_signature, "(J)Ljdk/vm/ci/hotspot/HotSpotConstantPool;") \ diff --git a/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java b/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java index 87cd10b400f..3dcf855ff23 100644 --- a/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java +++ b/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -987,6 +987,12 @@ private boolean isGCSupported(int gcIdentifier) { return getCompiler().isGCSupported(gcIdentifier); } + @SuppressWarnings("try") + @VMEntryPoint + private boolean isIntrinsicSupported(int intrinsicIdentifier) { + return getCompiler().isIntrinsicSupported(intrinsicIdentifier); + } + /** * Guard to ensure shut down actions are performed by at most one thread. */ diff --git a/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotVMConfigStore.java b/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotVMConfigStore.java index 0ee69f135c9..c6735cef5f6 100644 --- a/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotVMConfigStore.java +++ b/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/hotspot/HotSpotVMConfigStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -82,6 +82,27 @@ public List getIntrinsics() { return Collections.unmodifiableList(vmIntrinsics); } + /** + * Gets the VM intrinsic description by its ID. + */ + public VMIntrinsicMethod getIntrinsic(int intrinsicID) { + if (intrinsicID >= 1 && intrinsicID <= vmIntrinsics.size()) { + // valid intrinsicID starts from 1 + VMIntrinsicMethod intrinsic = vmIntrinsics.get(intrinsicID - 1); + // We speculate that vmIntrinsics are sorted by ID + if (intrinsic.id == intrinsicID) { + return intrinsic; + } + } + // Assumption failed, fall back to iteration + for (VMIntrinsicMethod intrinsic : vmIntrinsics) { + if (intrinsic.id == intrinsicID) { + return intrinsic; + } + } + return null; + } + final HashMap vmFields; final HashMap vmConstants; final HashMap vmAddresses; diff --git a/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/runtime/JVMCICompiler.java b/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/runtime/JVMCICompiler.java index bbb9c79e9f5..accd9e01490 100644 --- a/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/runtime/JVMCICompiler.java +++ b/src/jdk.internal.vm.ci/share/classes/jdk/vm/ci/runtime/JVMCICompiler.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -44,4 +44,15 @@ public interface JVMCICompiler { default boolean isGCSupported(int gcIdentifier) { return true; } + + /** + * Determines if this compiler supports the {@code intrinsicIdentifier} intrinsic. The default + * implementation of this method returns false as that is the effective answer given by a + * {@link JVMCICompiler} before this method was added. + * + * @param intrinsicIdentifier intrinsic identifier defined in vmIntrinsics.hpp. + */ + default boolean isIntrinsicSupported(int intrinsicIdentifier) { + return false; + } } From 07ebda54f290cc17c6682abd26ceca2868488a63 Mon Sep 17 00:00:00 2001 From: Inigo Mediavilla Saiz Date: Wed, 19 Jun 2024 10:35:32 +0000 Subject: [PATCH 56/70] 8334215: serviceability/dcmd/thread/PrintMountedVirtualThread.java failing with JTREG_TEST_THREAD_FACTORY=Virtual Reviewed-by: dholmes --- src/hotspot/share/runtime/threads.cpp | 7 +++++-- .../dcmd/thread/PrintMountedVirtualThread.java | 17 ++++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/hotspot/share/runtime/threads.cpp b/src/hotspot/share/runtime/threads.cpp index e65470ac526..9800f85dfe4 100644 --- a/src/hotspot/share/runtime/threads.cpp +++ b/src/hotspot/share/runtime/threads.cpp @@ -1332,8 +1332,11 @@ void Threads::print_on(outputStream* st, bool print_stacks, if (p->is_vthread_mounted()) { const oop vt = p->vthread(); assert(vt != nullptr, "vthread should not be null when vthread is mounted"); - st->print_cr(" Mounted virtual thread \"%s\" #" INT64_FORMAT, JavaThread::name_for(vt), (int64_t)java_lang_Thread::thread_id(vt)); - p->print_vthread_stack_on(st); + // JavaThread._vthread can refer to the carrier thread. Print only if _vthread refers to a virtual thread. + if (vt != thread_oop) { + st->print_cr(" Mounted virtual thread #" INT64_FORMAT, (int64_t)java_lang_Thread::thread_id(vt)); + p->print_vthread_stack_on(st); + } } } } diff --git a/test/hotspot/jtreg/serviceability/dcmd/thread/PrintMountedVirtualThread.java b/test/hotspot/jtreg/serviceability/dcmd/thread/PrintMountedVirtualThread.java index bffe4c266a4..04163d7536a 100644 --- a/test/hotspot/jtreg/serviceability/dcmd/thread/PrintMountedVirtualThread.java +++ b/test/hotspot/jtreg/serviceability/dcmd/thread/PrintMountedVirtualThread.java @@ -26,7 +26,6 @@ import jdk.test.lib.process.OutputAnalyzer; import org.junit.Test; -import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicBoolean; import java.util.regex.Pattern; @@ -41,16 +40,18 @@ public class PrintMountedVirtualThread { public void run(CommandExecutor executor) throws InterruptedException { var shouldFinish = new AtomicBoolean(false); - var started = new CountDownLatch(1); + var started = new AtomicBoolean(); final Runnable runnable = new DummyRunnable(shouldFinish, started); try { Thread vthread = Thread.ofVirtual().name("Dummy Vthread").start(runnable); - started.await(); + while (!started.get()) { + Thread.sleep(10); + } /* Execute */ OutputAnalyzer output = executor.execute("Thread.print"); output.shouldMatch(".*at " + Pattern.quote(DummyRunnable.class.getName()) + "\\.run.*"); output.shouldMatch(".*at " + Pattern.quote(DummyRunnable.class.getName()) + "\\.compute.*"); - output.shouldMatch("Mounted virtual thread " + "\"Dummy Vthread\"" + " #" + vthread.threadId()); + output.shouldMatch("Mounted virtual thread " + "#" + vthread.threadId()); } finally { shouldFinish.set(true); @@ -63,11 +64,10 @@ public void jmx() throws InterruptedException { } static class DummyRunnable implements Runnable { - private final AtomicBoolean shouldFinish; - private final CountDownLatch started; + private final AtomicBoolean started; - public DummyRunnable(AtomicBoolean shouldFinish, CountDownLatch started) { + public DummyRunnable(AtomicBoolean shouldFinish, AtomicBoolean started) { this.shouldFinish = shouldFinish; this.started = started; } @@ -77,12 +77,11 @@ public void run() { } void compute() { - started.countDown(); + started.set(true); while (!shouldFinish.get()) { Thread.onSpinWait(); } } } - } From 7b3a96d57023e8a7cf495e2d7c551976f0e5656b Mon Sep 17 00:00:00 2001 From: Archie Cobbs Date: Wed, 19 Jun 2024 10:45:34 +0000 Subject: [PATCH 57/70] 8334488: Improve error for illegal early access from nested class Reviewed-by: mcimadamore --- .../classes/com/sun/tools/javac/comp/Attr.java | 3 +-- .../classes/com/sun/tools/javac/comp/Enter.java | 1 + .../AnonymousInSuperCallNegTest.out | 2 +- .../tools/javac/LocalClassCtorPrologue.out | 2 +- .../EarlyInnerAccessErrorMessageTest.java | 16 ++++++++++++++++ .../EarlyInnerAccessErrorMessageTest.out | 4 ++++ .../tools/javac/SuperInit/EarlyLocalClass.out | 2 +- 7 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 test/langtools/tools/javac/SuperInit/EarlyInnerAccessErrorMessageTest.java create mode 100644 test/langtools/tools/javac/SuperInit/EarlyInnerAccessErrorMessageTest.out diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java index 533541bd108..08c37fc5aa4 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java @@ -950,7 +950,6 @@ public void visitClassDef(JCClassDecl tree) { Optional.ofNullable(env.info.attributionMode.isSpeculative ? argumentAttr.withLocalCacheContext() : null); boolean ctorProloguePrev = env.info.ctorPrologue; - env.info.ctorPrologue = false; try { // Local and anonymous classes have not been entered yet, so we need to // do it now. @@ -995,7 +994,7 @@ public void visitMethodDef(JCMethodDecl tree) { Lint lint = env.info.lint.augment(m); Lint prevLint = chk.setLint(lint); boolean ctorProloguePrev = env.info.ctorPrologue; - env.info.ctorPrologue = false; + Assert.check(!env.info.ctorPrologue); MethodSymbol prevMethod = chk.setMethod(m); try { deferredLintHandler.flush(tree.pos(), lint); diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Enter.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Enter.java index 7478ef1c907..926be3b6e26 100644 --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Enter.java +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Enter.java @@ -209,6 +209,7 @@ public Env classEnv(JCClassDecl tree, Env env) { localEnv.info.lint = null; // leave this to be filled in by Attr, // when annotations have been processed localEnv.info.isAnonymousDiamond = TreeInfo.isDiamond(env.tree); + localEnv.info.ctorPrologue = false; return localEnv; } diff --git a/test/langtools/tools/javac/AnonymousClass/AnonymousInSuperCallNegTest.out b/test/langtools/tools/javac/AnonymousClass/AnonymousInSuperCallNegTest.out index 140521689a0..c04b45bce1e 100644 --- a/test/langtools/tools/javac/AnonymousClass/AnonymousInSuperCallNegTest.out +++ b/test/langtools/tools/javac/AnonymousClass/AnonymousInSuperCallNegTest.out @@ -1,2 +1,2 @@ -AnonymousInSuperCallNegTest.java:23:49: compiler.err.no.encl.instance.of.type.in.scope: AnonymousInSuperCallNegTest.JavacBug +AnonymousInSuperCallNegTest.java:23:49: compiler.err.cant.ref.before.ctor.called: x 1 error diff --git a/test/langtools/tools/javac/LocalClassCtorPrologue.out b/test/langtools/tools/javac/LocalClassCtorPrologue.out index f1a999af491..65f3418825d 100644 --- a/test/langtools/tools/javac/LocalClassCtorPrologue.out +++ b/test/langtools/tools/javac/LocalClassCtorPrologue.out @@ -1,4 +1,4 @@ -LocalClassCtorPrologue.java:16:17: compiler.err.no.encl.instance.of.type.in.scope: LocalClassCtorPrologue +LocalClassCtorPrologue.java:16:17: compiler.err.cant.ref.before.ctor.called: x - compiler.note.preview.filename: LocalClassCtorPrologue.java, DEFAULT - compiler.note.preview.recompile 1 error diff --git a/test/langtools/tools/javac/SuperInit/EarlyInnerAccessErrorMessageTest.java b/test/langtools/tools/javac/SuperInit/EarlyInnerAccessErrorMessageTest.java new file mode 100644 index 00000000000..a8ee3a2aea5 --- /dev/null +++ b/test/langtools/tools/javac/SuperInit/EarlyInnerAccessErrorMessageTest.java @@ -0,0 +1,16 @@ +/* + * @test /nodynamiccopyright/ + * @bug 8334488 + * @summary Verify the error message generated for early access from inner class + * @compile/fail/ref=EarlyInnerAccessErrorMessageTest.out -XDrawDiagnostics EarlyInnerAccessErrorMessageTest.java + * @enablePreview + */ +public class EarlyInnerAccessErrorMessageTest { + int x; + EarlyInnerAccessErrorMessageTest() { + class Inner { + { System.out.println(x); } + } + super(); + } +} diff --git a/test/langtools/tools/javac/SuperInit/EarlyInnerAccessErrorMessageTest.out b/test/langtools/tools/javac/SuperInit/EarlyInnerAccessErrorMessageTest.out new file mode 100644 index 00000000000..a8d690a4c23 --- /dev/null +++ b/test/langtools/tools/javac/SuperInit/EarlyInnerAccessErrorMessageTest.out @@ -0,0 +1,4 @@ +EarlyInnerAccessErrorMessageTest.java:12:34: compiler.err.cant.ref.before.ctor.called: x +- compiler.note.preview.filename: EarlyInnerAccessErrorMessageTest.java, DEFAULT +- compiler.note.preview.recompile +1 error diff --git a/test/langtools/tools/javac/SuperInit/EarlyLocalClass.out b/test/langtools/tools/javac/SuperInit/EarlyLocalClass.out index 390b68ea2c9..ee01f9c403d 100644 --- a/test/langtools/tools/javac/SuperInit/EarlyLocalClass.out +++ b/test/langtools/tools/javac/SuperInit/EarlyLocalClass.out @@ -1,4 +1,4 @@ -EarlyLocalClass.java:12:32: compiler.err.no.encl.instance.of.type.in.scope: EarlyLocalClass +EarlyLocalClass.java:12:32: compiler.err.cant.ref.before.ctor.called: this - compiler.note.preview.filename: EarlyLocalClass.java, DEFAULT - compiler.note.preview.recompile 1 error From 50bed6c67b1edd7736bdf79308d135a4e1047ff0 Mon Sep 17 00:00:00 2001 From: Daniel Fuchs Date: Wed, 19 Jun 2024 10:54:13 +0000 Subject: [PATCH 58/70] 8334297: (so) java/nio/channels/SocketChannel/OpenLeak.java should not depend on SecurityManager Reviewed-by: alanb --- .../nio/channels/SocketChannel/OpenLeak.java | 104 ++++++++++++++++-- 1 file changed, 93 insertions(+), 11 deletions(-) diff --git a/test/jdk/java/nio/channels/SocketChannel/OpenLeak.java b/test/jdk/java/nio/channels/SocketChannel/OpenLeak.java index 8d8673355ef..c7eed1f27a0 100644 --- a/test/jdk/java/nio/channels/SocketChannel/OpenLeak.java +++ b/test/jdk/java/nio/channels/SocketChannel/OpenLeak.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2007, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,28 +25,110 @@ * @bug 6548464 * @summary SocketChannel.open(SocketAddress) leaks file descriptor if * connection cannot be established + * @requires vm.flagless * @build OpenLeak - * @run main/othervm -Djava.security.manager=allow OpenLeak + * @run junit/othervm OpenLeak */ +import java.io.IOException; +import java.net.ConnectException; import java.net.InetAddress; import java.net.InetSocketAddress; +import java.net.SocketAddress; import java.nio.channels.SocketChannel; +import java.nio.channels.UnresolvedAddressException; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import static org.junit.jupiter.api.Assertions.assertThrows; + public class OpenLeak { - public static void main(String[] args) throws Exception { - InetAddress lh = InetAddress.getLocalHost(); - InetSocketAddress isa = new InetSocketAddress(lh, 12345); + static final String OS_NAME = System.getProperty("os.name").toLowerCase(Locale.ROOT); + static final boolean IS_WINDOWS_2016 = OS_NAME.contains("windows") && OS_NAME.contains("2016"); + + // On Windows Server 2016 trying to connect to port 47 consumes the + // whole connect timeout - which makes the test fail in timeout. + // We skip this part of the test on Windows Server 2016 + static final boolean TEST_WITH_RESERVED_PORT = !IS_WINDOWS_2016; + + private static final int MAX_LOOP = 250000; - System.setSecurityManager( new SecurityManager() ); - for (int i=0; i<100000; i++) { - try { - SocketChannel.open(isa); - throw new RuntimeException("This should not happen"); - } catch (SecurityException x) { } + + // Try to find a suitable port to provoke a "Connection Refused" + // error. + private static InetSocketAddress findSuitableRefusedAddress(InetSocketAddress isa) + throws IOException { + if (!TEST_WITH_RESERVED_PORT) return null; + var addr = isa.getAddress(); + try (SocketChannel sc1 = SocketChannel.open(isa)) { + // If we manage to connect, let's try to use some other + // port. + // port 51 is reserved too - there should be nothing there... + isa = new InetSocketAddress(addr, 51); + try (SocketChannel sc2 = SocketChannel.open(isa)) { + } + // OK, last attempt... + // port 61 is reserved too - there should be nothing there... + isa = new InetSocketAddress(addr, 61); + try (SocketChannel sc3 = SocketChannel.open(isa)) { + } + System.err.println("Could not find a suitable port"); + return null; + } catch (ConnectException x) { } + return isa; + } + + private static InetSocketAddress createUnresolved(InetSocketAddress isa, InetSocketAddress def) { + var sa = isa == null ? def : isa; + return InetSocketAddress.createUnresolved(sa.getHostString(), sa.getPort()); + } + + // Builds a list of test cases + static List testCases() throws Exception { + InetAddress lo = InetAddress.getLoopbackAddress(); + + // Try to find a suitable port that will cause a + // Connection Refused exception + // port 47 is reserved - there should be nothing there... + InetSocketAddress def = new InetSocketAddress(lo, 47); + InetSocketAddress isa = findSuitableRefusedAddress(def); + InetSocketAddress sa = createUnresolved(isa, def); + + final List cases = new ArrayList<>(); + cases.add(new Object[]{sa, UnresolvedAddressException.class}); + if (isa != null) { + cases.add(new Object[]{isa, ConnectException.class}); + } + return cases; + } + + @ParameterizedTest + @MethodSource("testCases") + public void test(SocketAddress sa, Class expectedException) throws Exception { + System.err.printf("%nExpecting %s for %s%n", expectedException, sa); + + int i = 0; + try { + for (i = 0; i < MAX_LOOP; i++) { + Throwable x = + assertThrows(expectedException, () -> SocketChannel.open(sa)); + if (i < 5 || i >= MAX_LOOP - 5) { + // print a message for the first five and last 5 exceptions + System.err.println(x); + } + } + } catch (Throwable t) { + System.err.println("Failed at " + i + " with " + t); + throw t; + } } } From 01ee4241b76e78ca67803c4b083fcedecef1c96c Mon Sep 17 00:00:00 2001 From: Adam Sotona Date: Wed, 19 Jun 2024 15:15:30 +0000 Subject: [PATCH 59/70] 8294960: Convert java.base/java.lang.invoke package to use the Classfile API to generate lambdas and method handles Co-authored-by: Claes Redestad Reviewed-by: redestad, liach --- .../java/lang/invoke/ClassSpecializer.java | 502 +++--- .../lang/invoke/GenerateJLIClassesHelper.java | 30 +- .../invoke/InnerClassLambdaMetafactory.java | 552 +++---- .../lang/invoke/InvokerBytecodeGenerator.java | 1454 +++++++---------- .../classes/java/lang/invoke/LambdaForm.java | 20 +- .../java/lang/invoke/MethodHandleImpl.java | 68 +- .../java/lang/invoke/MethodHandles.java | 28 +- .../classes/java/lang/invoke/MethodType.java | 20 +- .../invoke/TypeConvertingMethodAdapter.java | 296 ++-- .../classfile/impl/StackMapGenerator.java | 43 +- test/hotspot/jtreg/ProblemList.txt | 1 + 11 files changed, 1298 insertions(+), 1716 deletions(-) diff --git a/src/java.base/share/classes/java/lang/invoke/ClassSpecializer.java b/src/java.base/share/classes/java/lang/invoke/ClassSpecializer.java index a5eb681fb88..cca05a906ff 100644 --- a/src/java.base/share/classes/java/lang/invoke/ClassSpecializer.java +++ b/src/java.base/share/classes/java/lang/invoke/ClassSpecializer.java @@ -25,13 +25,12 @@ package java.lang.invoke; -import jdk.internal.loader.BootLoader; -import jdk.internal.org.objectweb.asm.ClassWriter; -import jdk.internal.org.objectweb.asm.FieldVisitor; -import jdk.internal.org.objectweb.asm.MethodVisitor; -import jdk.internal.vm.annotation.Stable; -import sun.invoke.util.BytecodeName; - +import java.lang.classfile.*; +import java.lang.classfile.attribute.ExceptionsAttribute; +import java.lang.classfile.attribute.SourceFileAttribute; +import java.lang.constant.ClassDesc; +import java.lang.constant.MethodTypeDesc; +import java.lang.invoke.LambdaForm.BasicType; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Modifier; @@ -42,12 +41,19 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; -import static java.lang.invoke.LambdaForm.*; +import jdk.internal.constant.MethodTypeDescImpl; +import jdk.internal.constant.ReferenceClassDescImpl; +import jdk.internal.loader.BootLoader; +import jdk.internal.vm.annotation.Stable; +import sun.invoke.util.BytecodeName; +import sun.invoke.util.Wrapper; + +import static java.lang.classfile.ClassFile.*; +import static java.lang.constant.ConstantDescs.*; import static java.lang.invoke.MethodHandleNatives.Constants.REF_getStatic; import static java.lang.invoke.MethodHandleNatives.Constants.REF_putStatic; import static java.lang.invoke.MethodHandleStatics.*; import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; -import static jdk.internal.org.objectweb.asm.Opcodes.*; /** * Class specialization code. @@ -57,6 +63,10 @@ */ /*non-public*/ abstract class ClassSpecializer.SpeciesData> { + + private static final ClassDesc CD_LambdaForm = ReferenceClassDescImpl.ofValidated("Ljava/lang/invoke/LambdaForm;"); + private static final ClassDesc CD_BoundMethodHandle = ReferenceClassDescImpl.ofValidated("Ljava/lang/invoke/BoundMethodHandle;"); + private final Class topClass; private final Class keyType; private final Class metaType; @@ -404,7 +414,7 @@ protected String deriveTypeString() { buf.append(basicType.basicTypeChar()); } else { buf.append('V'); - end.append(classSig(type)); + end.append(type.descriptorString()); } } String typeString; @@ -572,8 +582,9 @@ Class generateConcreteSpeciesCode(String className, ClassSpecialize } // These are named like constants because there is only one per specialization scheme: - private final String SPECIES_DATA = classBCName(metaType); - private final String SPECIES_DATA_SIG = classSig(SPECIES_DATA); + + private final ClassDesc CD_SPECIES_DATA = classDesc(metaType); + private final MethodTypeDesc MTD_SPECIES_DATA = MethodTypeDescImpl.ofValidated(CD_SPECIES_DATA); private final String SPECIES_DATA_NAME = sdAccessor.getName(); private final int SPECIES_DATA_MODS = sdAccessor.getModifiers(); private final List TRANSFORM_NAMES; // derived from transformMethods @@ -595,268 +606,207 @@ Class generateConcreteSpeciesCode(String className, ClassSpecialize TRANSFORM_TYPES = List.of(tts.toArray(new MethodType[0])); TRANSFORM_MODS = List.of(tms.toArray(new Integer[0])); } + private static final MethodTypeDesc MTD_TRANFORM_HELPER = MethodTypeDescImpl.ofValidated(CD_MethodHandle, CD_int); private static final int ACC_PPP = ACC_PUBLIC | ACC_PRIVATE | ACC_PROTECTED; /*non-public*/ byte[] generateConcreteSpeciesCodeFile(String className0, ClassSpecializer.SpeciesData speciesData) { - final String className = classBCName(className0); - final String superClassName = classBCName(speciesData.deriveSuperClass()); - - final ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS + ClassWriter.COMPUTE_FRAMES); - final int NOT_ACC_PUBLIC = 0; // not ACC_PUBLIC - cw.visit(CLASSFILE_VERSION, NOT_ACC_PUBLIC + ACC_FINAL + ACC_SUPER, className, null, superClassName, null); - - final String sourceFile = className.substring(className.lastIndexOf('.')+1); - cw.visitSource(sourceFile, null); - - // emit static types and BMH_SPECIES fields - FieldVisitor fw = cw.visitField(NOT_ACC_PUBLIC + ACC_STATIC, sdFieldName, SPECIES_DATA_SIG, null, null); - fw.visitAnnotation(STABLE_SIG, true); - fw.visitEnd(); - - // handy holder for dealing with groups of typed values (ctor arguments and fields) - class Var { - final int index; - final String name; - final Class type; - final String desc; - final BasicType basicType; - final int slotIndex; - Var(int index, int slotIndex) { - this.index = index; - this.slotIndex = slotIndex; - name = null; type = null; desc = null; - basicType = BasicType.V_TYPE; - } - Var(String name, Class type, Var prev) { - int slotIndex = prev.nextSlotIndex(); - int index = prev.nextIndex(); - if (name == null) name = "x"; - if (name.endsWith("#")) - name = name.substring(0, name.length()-1) + index; - assert(!type.equals(void.class)); - String desc = classSig(type); - BasicType basicType = BasicType.basicType(type); - this.index = index; - this.name = name; - this.type = type; - this.desc = desc; - this.basicType = basicType; - this.slotIndex = slotIndex; - } - Var lastOf(List vars) { - int n = vars.size(); - return (n == 0 ? this : vars.get(n-1)); - } - List fromTypes(List types) { - Var prev = this; - ArrayList result = new ArrayList<>(types.size()); - int i = 0; - for (X x : types) { - String vn = name; - Class vt; - if (x instanceof Class cl) { - vt = cl; - // make the names friendlier if debugging - assert((vn = vn + "_" + (i++)) != null); - } else { - @SuppressWarnings("unchecked") - Var v = (Var) x; - vn = v.name; - vt = v.type; + final ClassDesc classDesc = ClassDesc.of(className0); + final ClassDesc superClassDesc = classDesc(speciesData.deriveSuperClass()); + return ClassFile.of().build(classDesc, clb -> { + clb.withFlags(ACC_FINAL | ACC_SUPER) + .withSuperclass(superClassDesc) + .with(SourceFileAttribute.of(classDesc.displayName())) + + // emit static types and BMH_SPECIES fields + .withField(sdFieldName, CD_SPECIES_DATA, ACC_STATIC); + + // handy holder for dealing with groups of typed values (ctor arguments and fields) + class Var { + final int index; + final String name; + final Class type; + final ClassDesc desc; + final BasicType basicType; + final int slotIndex; + Var(int index, int slotIndex) { + this.index = index; + this.slotIndex = slotIndex; + name = null; type = null; desc = null; + basicType = BasicType.V_TYPE; + } + Var(String name, Class type, Var prev) { + int slotIndex = prev.nextSlotIndex(); + int index = prev.nextIndex(); + if (name == null) name = "x"; + if (name.endsWith("#")) + name = name.substring(0, name.length()-1) + index; + assert(!type.equals(void.class)); + this.index = index; + this.name = name; + this.type = type; + this.desc = classDesc(type); + this.basicType = BasicType.basicType(type); + this.slotIndex = slotIndex; + } + Var lastOf(List vars) { + int n = vars.size(); + return (n == 0 ? this : vars.get(n-1)); + } + List fromTypes(List types) { + Var prev = this; + ArrayList result = new ArrayList<>(types.size()); + int i = 0; + for (X x : types) { + String vn = name; + Class vt; + if (x instanceof Class cl) { + vt = cl; + // make the names friendlier if debugging + assert((vn = vn + "_" + (i++)) != null); + } else { + @SuppressWarnings("unchecked") + Var v = (Var) x; + vn = v.name; + vt = v.type; + } + prev = new Var(vn, vt, prev); + result.add(prev); } - prev = new Var(vn, vt, prev); - result.add(prev); + return result; } - return result; - } - int slotSize() { return basicType.basicTypeSlots(); } - int nextIndex() { return index + (slotSize() == 0 ? 0 : 1); } - int nextSlotIndex() { return slotIndex >= 0 ? slotIndex + slotSize() : slotIndex; } - boolean isInHeap() { return slotIndex < 0; } - void emitVarInstruction(int asmop, MethodVisitor mv) { - if (asmop == ALOAD) - asmop = typeLoadOp(basicType.basicTypeChar()); - else - throw new AssertionError("bad op="+asmop+" for desc="+desc); - mv.visitVarInsn(asmop, slotIndex); - } - public void emitFieldInsn(int asmop, MethodVisitor mv) { - mv.visitFieldInsn(asmop, className, name, desc); - } - } - - final Var NO_THIS = new Var(0, 0), - AFTER_THIS = new Var(0, 1), - IN_HEAP = new Var(0, -1); - - // figure out the field types - final List> fieldTypes = speciesData.fieldTypes(); - final List fields = new ArrayList<>(fieldTypes.size()); - { - Var nextF = IN_HEAP; - for (Class ft : fieldTypes) { - String fn = chooseFieldName(ft, nextF.nextIndex()); - nextF = new Var(fn, ft, nextF); - fields.add(nextF); + int slotSize() { return basicType.basicTypeSlots(); } + int nextIndex() { return index + (slotSize() == 0 ? 0 : 1); } + int nextSlotIndex() { return slotIndex >= 0 ? slotIndex + slotSize() : slotIndex; } + boolean isInHeap() { return slotIndex < 0; } + void emitLoadInstruction(CodeBuilder cob) { + cob.loadLocal(basicType.btKind, slotIndex); + } } - } - // emit bound argument fields - for (Var field : fields) { - cw.visitField(ACC_FINAL, field.name, field.desc, null, null).visitEnd(); - } - - MethodVisitor mv; - - // emit implementation of speciesData() - mv = cw.visitMethod((SPECIES_DATA_MODS & ACC_PPP) + ACC_FINAL, - SPECIES_DATA_NAME, "()" + SPECIES_DATA_SIG, null, null); - mv.visitCode(); - mv.visitFieldInsn(GETSTATIC, className, sdFieldName, SPECIES_DATA_SIG); - mv.visitInsn(ARETURN); - mv.visitMaxs(0, 0); - mv.visitEnd(); - - // figure out the constructor arguments - MethodType superCtorType = ClassSpecializer.this.baseConstructorType(); - MethodType thisCtorType = superCtorType.appendParameterTypes(fieldTypes); - - // emit constructor - { - mv = cw.visitMethod(ACC_PRIVATE, - "", methodSig(thisCtorType), null, null); - mv.visitCode(); - mv.visitVarInsn(ALOAD, 0); // this - - final List ctorArgs = AFTER_THIS.fromTypes(superCtorType.parameterList()); - for (Var ca : ctorArgs) { - ca.emitVarInstruction(ALOAD, mv); + final Var NO_THIS = new Var(0, 0), + AFTER_THIS = new Var(0, 1), + IN_HEAP = new Var(0, -1); + + // figure out the field types + final List> fieldTypes = speciesData.fieldTypes(); + final List fields = new ArrayList<>(fieldTypes.size()); + { + Var nextF = IN_HEAP; + for (Class ft : fieldTypes) { + String fn = chooseFieldName(ft, nextF.nextIndex()); + nextF = new Var(fn, ft, nextF); + fields.add(nextF); + } } - // super(ca...) - mv.visitMethodInsn(INVOKESPECIAL, superClassName, - "", methodSig(superCtorType), false); - - // store down fields - Var lastFV = AFTER_THIS.lastOf(ctorArgs); - for (Var f : fields) { - // this.argL1 = argL1 - mv.visitVarInsn(ALOAD, 0); // this - lastFV = new Var(f.name, f.type, lastFV); - lastFV.emitVarInstruction(ALOAD, mv); - f.emitFieldInsn(PUTFIELD, mv); + // emit bound argument fields + for (Var field : fields) { + clb.withField(field.name, field.desc, ACC_FINAL); } - mv.visitInsn(RETURN); - mv.visitMaxs(0, 0); - mv.visitEnd(); - } + // emit implementation of speciesData() + clb.withMethodBody(SPECIES_DATA_NAME, MTD_SPECIES_DATA, (SPECIES_DATA_MODS & ACC_PPP) | ACC_FINAL, + cob -> cob.getstatic(classDesc, sdFieldName, CD_SPECIES_DATA) + .areturn()); - // emit make() ...factory method wrapping constructor - { - MethodType ftryType = thisCtorType.changeReturnType(topClass()); - mv = cw.visitMethod(NOT_ACC_PUBLIC + ACC_STATIC, - "make", methodSig(ftryType), null, null); - mv.visitCode(); - // make instance - mv.visitTypeInsn(NEW, className); - mv.visitInsn(DUP); - // load factory method arguments: ctarg... and arg... - for (Var v : NO_THIS.fromTypes(ftryType.parameterList())) { - v.emitVarInstruction(ALOAD, mv); - } + // figure out the constructor arguments + MethodType superCtorType = ClassSpecializer.this.baseConstructorType(); + MethodType thisCtorType = superCtorType.appendParameterTypes(fieldTypes); - // finally, invoke the constructor and return - mv.visitMethodInsn(INVOKESPECIAL, className, - "", methodSig(thisCtorType), false); - mv.visitInsn(ARETURN); - mv.visitMaxs(0, 0); - mv.visitEnd(); - } + // emit constructor + clb.withMethodBody(INIT_NAME, methodDesc(thisCtorType), ACC_PRIVATE, cob -> { + cob.aload(0); // this - // For each transform, emit the customized override of the transform method. - // This method mixes together some incoming arguments (from the transform's - // static type signature) with the field types themselves, and passes - // the resulting mish-mosh of values to a method handle produced by - // the species itself. (Typically this method handle is the factory - // method of this species or a related one.) - for (int whichtm = 0; whichtm < TRANSFORM_NAMES.size(); whichtm++) { - final String TNAME = TRANSFORM_NAMES.get(whichtm); - final MethodType TTYPE = TRANSFORM_TYPES.get(whichtm); - final int TMODS = TRANSFORM_MODS.get(whichtm); - mv = cw.visitMethod((TMODS & ACC_PPP) | ACC_FINAL, - TNAME, TTYPE.toMethodDescriptorString(), null, E_THROWABLE); - mv.visitCode(); - // return a call to the corresponding "transform helper", something like this: - // MY_SPECIES.transformHelper(whichtm).invokeBasic(ctarg, ..., argL0, ..., xarg) - mv.visitFieldInsn(GETSTATIC, className, - sdFieldName, SPECIES_DATA_SIG); - emitIntConstant(whichtm, mv); - mv.visitMethodInsn(INVOKEVIRTUAL, SPECIES_DATA, - "transformHelper", "(I)" + MH_SIG, false); - - List targs = AFTER_THIS.fromTypes(TTYPE.parameterList()); - List tfields = new ArrayList<>(fields); - // mix them up and load them for the transform helper: - List helperArgs = speciesData.deriveTransformHelperArguments(transformMethods.get(whichtm), whichtm, targs, tfields); - List> helperTypes = new ArrayList<>(helperArgs.size()); - for (Var ha : helperArgs) { - helperTypes.add(ha.basicType.basicTypeClass()); - if (ha.isInHeap()) { - assert(tfields.contains(ha)); - mv.visitVarInsn(ALOAD, 0); - ha.emitFieldInsn(GETFIELD, mv); - } else { - assert(targs.contains(ha)); - ha.emitVarInstruction(ALOAD, mv); + final List ctorArgs = AFTER_THIS.fromTypes(superCtorType.parameterList()); + for (Var ca : ctorArgs) { + ca.emitLoadInstruction(cob); } - } - - // jump into the helper (which is probably a factory method) - final Class rtype = TTYPE.returnType(); - final BasicType rbt = BasicType.basicType(rtype); - MethodType invokeBasicType = MethodType.methodType(rbt.basicTypeClass(), helperTypes); - mv.visitMethodInsn(INVOKEVIRTUAL, MH, - "invokeBasic", methodSig(invokeBasicType), false); - if (rbt == BasicType.L_TYPE) { - mv.visitTypeInsn(CHECKCAST, classBCName(rtype)); - mv.visitInsn(ARETURN); - } else { - throw newInternalError("NYI: transform of type "+rtype); - } - mv.visitMaxs(0, 0); - mv.visitEnd(); - } - cw.visitEnd(); - - return cw.toByteArray(); - } + // super(ca...) + cob.invokespecial(superClassDesc, INIT_NAME, methodDesc(superCtorType)); + + // store down fields + Var lastFV = AFTER_THIS.lastOf(ctorArgs); + for (Var f : fields) { + // this.argL1 = argL1 + cob.aload(0); // this + lastFV = new Var(f.name, f.type, lastFV); + lastFV.emitLoadInstruction(cob); + cob.putfield(classDesc, f.name, f.desc); + } - private int typeLoadOp(char t) { - return switch (t) { - case 'L' -> ALOAD; - case 'I' -> ILOAD; - case 'J' -> LLOAD; - case 'F' -> FLOAD; - case 'D' -> DLOAD; - default -> throw newInternalError("unrecognized type " + t); - }; - } + cob.return_(); + }); - private void emitIntConstant(int con, MethodVisitor mv) { - if (ICONST_M1 - ICONST_0 <= con && con <= ICONST_5 - ICONST_0) - mv.visitInsn(ICONST_0 + con); - else if (con == (byte) con) - mv.visitIntInsn(BIPUSH, con); - else if (con == (short) con) - mv.visitIntInsn(SIPUSH, con); - else { - mv.visitLdcInsn(con); - } + // emit make() ...factory method wrapping constructor + MethodType ftryType = thisCtorType.changeReturnType(topClass()); + clb.withMethodBody("make", methodDesc(ftryType), ACC_STATIC, cob -> { + // make instance + cob.new_(classDesc) + .dup(); + // load factory method arguments: ctarg... and arg... + for (Var v : NO_THIS.fromTypes(ftryType.parameterList())) { + v.emitLoadInstruction(cob); + } + // finally, invoke the constructor and return + cob.invokespecial(classDesc, INIT_NAME, methodDesc(thisCtorType)) + .areturn(); + }); + + // For each transform, emit the customized override of the transform method. + // This method mixes together some incoming arguments (from the transform's + // static type signature) with the field types themselves, and passes + // the resulting mish-mosh of values to a method handle produced by + // the species itself. (Typically this method handle is the factory + // method of this species or a related one.) + for (int i = 0; i < TRANSFORM_NAMES.size(); i++) { + final int whichtm = i; + final String TNAME = TRANSFORM_NAMES.get(whichtm); + final MethodType TTYPE = TRANSFORM_TYPES.get(whichtm); + final int TMODS = TRANSFORM_MODS.get(whichtm); + clb.withMethod(TNAME, methodDesc(TTYPE), (TMODS & ACC_PPP) | ACC_FINAL, mb -> { + mb.with(ExceptionsAttribute.ofSymbols(CD_Throwable)) + .withCode(cob -> { + // return a call to the corresponding "transform helper", something like this: + // MY_SPECIES.transformHelper(whichtm).invokeBasic(ctarg, ..., argL0, ..., xarg) + cob.getstatic(classDesc, sdFieldName, CD_SPECIES_DATA) + .loadConstant(whichtm) + .invokevirtual(CD_SPECIES_DATA, "transformHelper", MTD_TRANFORM_HELPER); + + List targs = AFTER_THIS.fromTypes(TTYPE.parameterList()); + List tfields = new ArrayList<>(fields); + // mix them up and load them for the transform helper: + List helperArgs = speciesData.deriveTransformHelperArguments(transformMethods.get(whichtm), whichtm, targs, tfields); + ClassDesc[] helperTypes = new ClassDesc[helperArgs.size()]; + for (int hi = 0; hi < helperTypes.length; hi++) { + Var ha = helperArgs.get(hi); + helperTypes[hi] = ha.basicType.basicTypeWrapper().basicClassDescriptor(); + if (ha.isInHeap()) { + assert(tfields.contains(ha)); + cob.aload(0); + cob.getfield(classDesc, ha.name, ha.desc); + } else { + assert(targs.contains(ha)); + ha.emitLoadInstruction(cob); + } + } + + // jump into the helper (which is probably a factory method) + final Class rtype = TTYPE.returnType(); + if (!rtype.isPrimitive()) { + cob.invokevirtual(CD_MethodHandle, "invokeBasic", MethodTypeDescImpl.ofValidated(CD_Object, helperTypes)) + .checkcast(classDesc(rtype)) + .areturn(); + } else { + throw newInternalError("NYI: transform of type "+rtype); + } + }); + }); + } + }); } // @@ -990,39 +940,25 @@ protected Factory makeFactory() { // Other misc helpers: - private static final String MH = "java/lang/invoke/MethodHandle"; - private static final String MH_SIG = "L" + MH + ";"; - private static final String STABLE = "jdk/internal/vm/annotation/Stable"; - private static final String STABLE_SIG = "L" + STABLE + ";"; - private static final String[] E_THROWABLE = new String[] { "java/lang/Throwable" }; - static { - assert(MH_SIG.equals(classSig(MethodHandle.class))); - assert(MH.equals(classBCName(MethodHandle.class))); - } - - static String methodSig(MethodType mt) { - return mt.toMethodDescriptorString(); - } - static String classSig(Class cls) { - if (cls.isPrimitive() || cls.isArray()) - return MethodType.methodType(cls).toMethodDescriptorString().substring(2); - return classSig(classBCName(cls)); - } - static String classSig(String bcName) { - assert(bcName.indexOf('.') < 0); - assert(!bcName.endsWith(";")); - assert(!bcName.startsWith("[")); - return "L" + bcName + ";"; - } - static String classBCName(Class cls) { - return classBCName(className(cls)); - } static String classBCName(String str) { assert(str.indexOf('/') < 0) : str; return str.replace('.', '/'); } - static String className(Class cls) { - assert(!cls.isArray() && !cls.isPrimitive()); - return cls.getName(); + + static ClassDesc classDesc(Class cls) { + return cls.isPrimitive() ? Wrapper.forPrimitiveType(cls).basicClassDescriptor() + : cls == Object.class ? CD_Object + : cls == MethodType.class ? CD_MethodType + : cls == LambdaForm.class ? CD_LambdaForm + : cls == BoundMethodHandle.class ? CD_BoundMethodHandle + : ReferenceClassDescImpl.ofValidated(cls.descriptorString()); + } + + static MethodTypeDesc methodDesc(MethodType mt) { + var params = new ClassDesc[mt.parameterCount()]; + for (int i = 0; i < params.length; i++) { + params[i] = classDesc(mt.parameterType(i)); + } + return MethodTypeDescImpl.ofValidated(classDesc(mt.returnType()), params); } } diff --git a/src/java.base/share/classes/java/lang/invoke/GenerateJLIClassesHelper.java b/src/java.base/share/classes/java/lang/invoke/GenerateJLIClassesHelper.java index 46eeb67de54..1e3f465f97d 100644 --- a/src/java.base/share/classes/java/lang/invoke/GenerateJLIClassesHelper.java +++ b/src/java.base/share/classes/java/lang/invoke/GenerateJLIClassesHelper.java @@ -25,10 +25,11 @@ package java.lang.invoke; -import jdk.internal.org.objectweb.asm.ClassWriter; -import jdk.internal.org.objectweb.asm.Opcodes; import sun.invoke.util.Wrapper; +import java.lang.classfile.ClassFile; +import java.lang.classfile.attribute.SourceFileAttribute; +import java.lang.constant.ClassDesc; import java.util.ArrayList; import java.util.HashSet; import java.util.Map; @@ -38,10 +39,10 @@ import java.util.TreeSet; import java.util.stream.Stream; +import static java.lang.classfile.ClassFile.*; import static java.lang.invoke.LambdaForm.BasicType.*; -import static java.lang.invoke.MethodHandleStatics.CLASSFILE_VERSION; -import static java.lang.invoke.MethodTypeForm.*; import static java.lang.invoke.LambdaForm.Kind.*; +import static java.lang.invoke.MethodTypeForm.*; /** * Helper class to assist the GenerateJLIClassesPlugin to get access to @@ -557,19 +558,14 @@ static byte[] generateInvokersHolderClassBytes(String className, * a class with a specified name. */ private static byte[] generateCodeBytesForLFs(String className, String[] names, LambdaForm[] forms) { - ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS + ClassWriter.COMPUTE_FRAMES); - cw.visit(CLASSFILE_VERSION, Opcodes.ACC_PRIVATE + Opcodes.ACC_FINAL + Opcodes.ACC_SUPER, - className, null, InvokerBytecodeGenerator.INVOKER_SUPER_NAME, null); - cw.visitSource(className.substring(className.lastIndexOf('/') + 1), null); - - for (int i = 0; i < forms.length; i++) { - InvokerBytecodeGenerator g - = new InvokerBytecodeGenerator(className, names[i], forms[i], forms[i].methodType()); - g.setClassWriter(cw); - g.addMethod(); - } - - return cw.toByteArray(); + return ClassFile.of().build(ClassDesc.ofInternalName(className), clb -> { + clb.withFlags(ACC_PRIVATE | ACC_FINAL | ACC_SUPER) + .withSuperclass(InvokerBytecodeGenerator.INVOKER_SUPER_DESC) + .with(SourceFileAttribute.of(className.substring(className.lastIndexOf('/') + 1))); + for (int i = 0; i < forms.length; i++) { + new InvokerBytecodeGenerator(className, names[i], forms[i], forms[i].methodType()).addMethod(clb); + } + }); } private static LambdaForm makeReinvokerFor(MethodType type) { diff --git a/src/java.base/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java b/src/java.base/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java index b4afbc098c9..ce2547710a5 100644 --- a/src/java.base/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java +++ b/src/java.base/share/classes/java/lang/invoke/InnerClassLambdaMetafactory.java @@ -26,23 +26,40 @@ package java.lang.invoke; import jdk.internal.misc.CDS; -import jdk.internal.org.objectweb.asm.*; import jdk.internal.util.ClassFileDumper; -import sun.invoke.util.BytecodeDescriptor; import sun.invoke.util.VerifyAccess; import sun.security.action.GetBooleanAction; import java.io.Serializable; -import java.lang.constant.ConstantDescs; +import java.lang.classfile.ClassBuilder; +import java.lang.classfile.ClassFile; +import java.lang.classfile.CodeBuilder; +import java.lang.classfile.FieldBuilder; +import java.lang.classfile.MethodBuilder; +import java.lang.classfile.Opcode; +import java.lang.classfile.TypeKind; +import java.lang.constant.ClassDesc; +import java.lang.constant.DynamicConstantDesc; +import java.lang.constant.MethodTypeDesc; import java.lang.reflect.Modifier; import java.util.LinkedHashSet; +import java.util.List; import java.util.Set; - -import static java.lang.invoke.MethodHandleStatics.CLASSFILE_VERSION; +import java.util.function.Consumer; + +import static java.lang.classfile.ClassFile.*; +import java.lang.classfile.attribute.ExceptionsAttribute; +import java.lang.classfile.constantpool.ClassEntry; +import java.lang.classfile.constantpool.ConstantPoolBuilder; +import java.lang.classfile.constantpool.MethodRefEntry; +import static java.lang.constant.ConstantDescs.*; import static java.lang.invoke.MethodHandles.Lookup.ClassOption.NESTMATE; import static java.lang.invoke.MethodHandles.Lookup.ClassOption.STRONG; import static java.lang.invoke.MethodType.methodType; -import static jdk.internal.org.objectweb.asm.Opcodes.*; +import jdk.internal.constant.ConstantUtils; +import jdk.internal.constant.MethodTypeDescImpl; +import jdk.internal.constant.ReferenceClassDescImpl; +import sun.invoke.util.Wrapper; /** * Lambda metafactory implementation which dynamically creates an @@ -51,42 +68,29 @@ * @see LambdaMetafactory */ /* package */ final class InnerClassLambdaMetafactory extends AbstractValidatingLambdaMetafactory { - private static final String METHOD_DESCRIPTOR_VOID = Type.getMethodDescriptor(Type.VOID_TYPE); - private static final String JAVA_LANG_OBJECT = "java/lang/Object"; - private static final String NAME_CTOR = ""; private static final String LAMBDA_INSTANCE_FIELD = "LAMBDA_INSTANCE$"; - - //Serialization support - private static final String NAME_SERIALIZED_LAMBDA = "java/lang/invoke/SerializedLambda"; - private static final String NAME_NOT_SERIALIZABLE_EXCEPTION = "java/io/NotSerializableException"; - private static final String DESCR_METHOD_WRITE_REPLACE = "()Ljava/lang/Object;"; - private static final String DESCR_METHOD_WRITE_OBJECT = "(Ljava/io/ObjectOutputStream;)V"; - private static final String DESCR_METHOD_READ_OBJECT = "(Ljava/io/ObjectInputStream;)V"; - - private static final String NAME_METHOD_WRITE_REPLACE = "writeReplace"; - private static final String NAME_METHOD_READ_OBJECT = "readObject"; - private static final String NAME_METHOD_WRITE_OBJECT = "writeObject"; - - private static final String DESCR_CLASS = "Ljava/lang/Class;"; - private static final String DESCR_STRING = "Ljava/lang/String;"; - private static final String DESCR_OBJECT = "Ljava/lang/Object;"; - private static final String DESCR_CTOR_SERIALIZED_LAMBDA - = "(" + DESCR_CLASS + DESCR_STRING + DESCR_STRING + DESCR_STRING + "I" - + DESCR_STRING + DESCR_STRING + DESCR_STRING + DESCR_STRING + "[" + DESCR_OBJECT + ")V"; - - private static final String DESCR_CTOR_NOT_SERIALIZABLE_EXCEPTION = "(Ljava/lang/String;)V"; - private static final String[] SER_HOSTILE_EXCEPTIONS = new String[] {NAME_NOT_SERIALIZABLE_EXCEPTION}; - private static final String[] EMPTY_STRING_ARRAY = new String[0]; + private static final ClassDesc[] EMPTY_CLASSDESC_ARRAY = ConstantUtils.EMPTY_CLASSDESC; + + // Static builders to avoid lambdas + record FieldFlags(int flags) implements Consumer { + @Override + public void accept(FieldBuilder fb) { + fb.withFlags(flags); + } + }; + record MethodBody(Consumer code) implements Consumer { + @Override + public void accept(MethodBuilder mb) { + mb.withCode(code); + } + }; // For dumping generated classes to disk, for debugging purposes private static final ClassFileDumper lambdaProxyClassFileDumper; private static final boolean disableEagerInitialization; - // condy to load implMethod from class data - private static final ConstantDynamic implMethodCondy; - static { // To dump the lambda proxy classes, set this system property: // -Djdk.invoke.LambdaMetafactory.dumpProxyClassFiles @@ -96,23 +100,18 @@ final String disableEagerInitializationKey = "jdk.internal.lambda.disableEagerInitialization"; disableEagerInitialization = GetBooleanAction.privilegedGetProperty(disableEagerInitializationKey); - - // condy to load implMethod from class data - MethodType classDataMType = methodType(Object.class, MethodHandles.Lookup.class, String.class, Class.class); - Handle classDataBsm = new Handle(H_INVOKESTATIC, Type.getInternalName(MethodHandles.class), "classData", - classDataMType.descriptorString(), false); - implMethodCondy = new ConstantDynamic(ConstantDescs.DEFAULT_NAME, MethodHandle.class.descriptorString(), classDataBsm); } // See context values in AbstractValidatingLambdaMetafactory - private final String implMethodClassName; // Name of type containing implementation "CC" + private final ClassDesc implMethodClassDesc; // Name of type containing implementation "CC" private final String implMethodName; // Name of implementation method "impl" - private final String implMethodDesc; // Type descriptor for implementation methods "(I)Ljava/lang/String;" + private final MethodTypeDesc implMethodDesc; // Type descriptor for implementation methods "(I)Ljava/lang/String;" private final MethodType constructorType; // Generated class constructor type "(CC)void" - private final ClassWriter cw; // ASM class writer + private final MethodTypeDesc constructorTypeDesc;// Type descriptor for the generated class constructor type "(CC)void" private final String[] argNames; // Generated names for the constructor arguments - private final String[] argDescs; // Type descriptors for the constructor arguments - private final String lambdaClassName; // Generated name for the generated class "X$$Lambda" + private final ClassDesc[] argDescs; // Type descriptors for the constructor arguments + private final String lambdaClassName; // Generated name for the generated class "X$$Lambda$1" + private final ClassDesc lambdaClassDesc; // Type descriptor for the generated class "X$$Lambda$1" private final boolean useImplMethodHandle; // use MethodHandle invocation instead of symbolic bytecode invocation /** @@ -168,11 +167,13 @@ public InnerClassLambdaMetafactory(MethodHandles.Lookup caller, super(caller, factoryType, interfaceMethodName, interfaceMethodType, implementation, dynamicMethodType, isSerializable, altInterfaces, altMethods); - implMethodClassName = implClass.getName().replace('.', '/'); + implMethodClassDesc = implClassDesc(implClass); implMethodName = implInfo.getName(); - implMethodDesc = implInfo.getMethodType().toMethodDescriptorString(); + implMethodDesc = methodDesc(implInfo.getMethodType()); constructorType = factoryType.changeReturnType(Void.TYPE); + constructorTypeDesc = methodDesc(constructorType); lambdaClassName = lambdaClassName(targetClass); + lambdaClassDesc = ClassDesc.ofInternalName(lambdaClassName); // If the target class invokes a protected method inherited from a // superclass in a different package, or does 'invokespecial', the // lambda class has no access to the resolved method, or does @@ -182,19 +183,19 @@ public InnerClassLambdaMetafactory(MethodHandles.Lookup caller, // situation by generating bridges in the target class) useImplMethodHandle = (Modifier.isProtected(implInfo.getModifiers()) && !VerifyAccess.isSamePackage(targetClass, implInfo.getDeclaringClass())) || - implKind == H_INVOKESPECIAL || - implKind == H_INVOKESTATIC && implClass.isHidden(); - cw = new ClassWriter(ClassWriter.COMPUTE_MAXS); + implKind == MethodHandleInfo.REF_invokeSpecial || + implKind == MethodHandleInfo.REF_invokeStatic && implClass.isHidden(); int parameterCount = factoryType.parameterCount(); if (parameterCount > 0) { argNames = new String[parameterCount]; - argDescs = new String[parameterCount]; + argDescs = new ClassDesc[parameterCount]; for (int i = 0; i < parameterCount; i++) { argNames[i] = "arg$" + (i + 1); - argDescs[i] = BytecodeDescriptor.unparse(factoryType.parameterType(i)); + argDescs[i] = classDesc(factoryType.parameterType(i)); } } else { - argNames = argDescs = EMPTY_STRING_ARRAY; + argNames = EMPTY_STRING_ARRAY; + argDescs = EMPTY_CLASSDESC_ARRAY; } } @@ -300,65 +301,63 @@ private Class spinInnerClass() throws LambdaConversionException { * is not found */ private Class generateInnerClass() throws LambdaConversionException { - String[] interfaceNames; - String interfaceName = interfaceClass.getName().replace('.', '/'); + List interfaces; + ClassDesc interfaceDesc = classDesc(interfaceClass); boolean accidentallySerializable = !isSerializable && Serializable.class.isAssignableFrom(interfaceClass); if (altInterfaces.length == 0) { - interfaceNames = new String[]{interfaceName}; + interfaces = List.of(interfaceDesc); } else { // Assure no duplicate interfaces (ClassFormatError) - Set itfs = LinkedHashSet.newLinkedHashSet(altInterfaces.length + 1); - itfs.add(interfaceName); + Set itfs = LinkedHashSet.newLinkedHashSet(altInterfaces.length + 1); + itfs.add(interfaceDesc); for (Class i : altInterfaces) { - itfs.add(i.getName().replace('.', '/')); + itfs.add(classDesc(i)); accidentallySerializable |= !isSerializable && Serializable.class.isAssignableFrom(i); } - interfaceNames = itfs.toArray(new String[itfs.size()]); + interfaces = List.copyOf(itfs); } + final boolean finalAccidentallySerializable = accidentallySerializable; + final byte[] classBytes = ClassFile.of().build(lambdaClassDesc, new Consumer() { + @Override + public void accept(ClassBuilder clb) { + clb.withFlags(ACC_SUPER | ACC_FINAL | ACC_SYNTHETIC) + .withInterfaceSymbols(interfaces); + // Generate final fields to be filled in by constructor + for (int i = 0; i < argDescs.length; i++) { + clb.withField(argNames[i], argDescs[i], new FieldFlags(ACC_PRIVATE | ACC_FINAL)); + } - cw.visit(CLASSFILE_VERSION, ACC_SUPER + ACC_FINAL + ACC_SYNTHETIC, - lambdaClassName, null, - JAVA_LANG_OBJECT, interfaceNames); - - // Generate final fields to be filled in by constructor - for (int i = 0; i < argDescs.length; i++) { - FieldVisitor fv = cw.visitField(ACC_PRIVATE + ACC_FINAL, - argNames[i], - argDescs[i], - null, null); - fv.visitEnd(); - } + generateConstructor(clb); - generateConstructor(); + if (factoryType.parameterCount() == 0 && disableEagerInitialization) { + generateClassInitializer(clb); + } - if (factoryType.parameterCount() == 0 && disableEagerInitialization) { - generateClassInitializer(); - } + // Forward the SAM method + clb.withMethod(interfaceMethodName, + methodDesc(interfaceMethodType), + ACC_PUBLIC, + forwardingMethod(interfaceMethodType)); + + // Forward the bridges + if (altMethods != null) { + for (MethodType mt : altMethods) { + clb.withMethod(interfaceMethodName, + methodDesc(mt), + ACC_PUBLIC | ACC_BRIDGE, + forwardingMethod(mt)); + } + } - // Forward the SAM method - MethodVisitor mv = cw.visitMethod(ACC_PUBLIC, interfaceMethodName, - interfaceMethodType.toMethodDescriptorString(), null, null); - new ForwardingMethodGenerator(mv).generate(interfaceMethodType); - - // Forward the altMethods - if (altMethods != null) { - for (MethodType mt : altMethods) { - mv = cw.visitMethod(ACC_PUBLIC, interfaceMethodName, - mt.toMethodDescriptorString(), null, null); - new ForwardingMethodGenerator(mv).generate(mt); + if (isSerializable) + generateSerializationFriendlyMethods(clb); + else if (finalAccidentallySerializable) + generateSerializationHostileMethods(clb); } - } - - if (isSerializable) - generateSerializationFriendlyMethods(); - else if (accidentallySerializable) - generateSerializationHostileMethods(); - - cw.visitEnd(); + }); // Define the generated class in this VM. - final byte[] classBytes = cw.toByteArray(); try { // this class is linked at the indy callsite; so define a hidden nestmate var classdata = useImplMethodHandle? implementation : null; @@ -373,237 +372,214 @@ else if (accidentallySerializable) /** * Generate a static field and a static initializer that sets this field to an instance of the lambda */ - private void generateClassInitializer() { - String lambdaTypeDescriptor = factoryType.returnType().descriptorString(); + private void generateClassInitializer(ClassBuilder clb) { + ClassDesc lambdaTypeDescriptor = classDesc(factoryType.returnType()); // Generate the static final field that holds the lambda singleton - FieldVisitor fv = cw.visitField(ACC_PRIVATE | ACC_STATIC | ACC_FINAL, - LAMBDA_INSTANCE_FIELD, lambdaTypeDescriptor, null, null); - fv.visitEnd(); + clb.withField(LAMBDA_INSTANCE_FIELD, lambdaTypeDescriptor, new FieldFlags(ACC_PRIVATE | ACC_STATIC | ACC_FINAL)); // Instantiate the lambda and store it to the static final field - MethodVisitor clinit = cw.visitMethod(ACC_STATIC, "", "()V", null, null); - clinit.visitCode(); - - clinit.visitTypeInsn(NEW, lambdaClassName); - clinit.visitInsn(Opcodes.DUP); - assert factoryType.parameterCount() == 0; - clinit.visitMethodInsn(INVOKESPECIAL, lambdaClassName, NAME_CTOR, constructorType.toMethodDescriptorString(), false); - clinit.visitFieldInsn(PUTSTATIC, lambdaClassName, LAMBDA_INSTANCE_FIELD, lambdaTypeDescriptor); - - clinit.visitInsn(RETURN); - clinit.visitMaxs(-1, -1); - clinit.visitEnd(); + clb.withMethod(CLASS_INIT_NAME, MTD_void, ACC_STATIC, new MethodBody(new Consumer() { + @Override + public void accept(CodeBuilder cob) { + assert factoryType.parameterCount() == 0; + cob.new_(lambdaClassDesc) + .dup() + .invokespecial(lambdaClassDesc, INIT_NAME, constructorTypeDesc) + .putstatic(lambdaClassDesc, LAMBDA_INSTANCE_FIELD, lambdaTypeDescriptor) + .return_(); + } + })); } /** * Generate the constructor for the class */ - private void generateConstructor() { + private void generateConstructor(ClassBuilder clb) { // Generate constructor - MethodVisitor ctor = cw.visitMethod(ACC_PRIVATE, NAME_CTOR, - constructorType.toMethodDescriptorString(), null, null); - ctor.visitCode(); - ctor.visitVarInsn(ALOAD, 0); - ctor.visitMethodInsn(INVOKESPECIAL, JAVA_LANG_OBJECT, NAME_CTOR, - METHOD_DESCRIPTOR_VOID, false); - int parameterCount = factoryType.parameterCount(); - for (int i = 0, lvIndex = 0; i < parameterCount; i++) { - ctor.visitVarInsn(ALOAD, 0); - Class argType = factoryType.parameterType(i); - ctor.visitVarInsn(getLoadOpcode(argType), lvIndex + 1); - lvIndex += getParameterSize(argType); - ctor.visitFieldInsn(PUTFIELD, lambdaClassName, argNames[i], argDescs[i]); - } - ctor.visitInsn(RETURN); - // Maxs computed by ClassWriter.COMPUTE_MAXS, these arguments ignored - ctor.visitMaxs(-1, -1); - ctor.visitEnd(); + clb.withMethod(INIT_NAME, constructorTypeDesc, ACC_PRIVATE, + new MethodBody(new Consumer() { + @Override + public void accept(CodeBuilder cob) { + cob.aload(0) + .invokespecial(CD_Object, INIT_NAME, MTD_void); + int parameterCount = factoryType.parameterCount(); + for (int i = 0; i < parameterCount; i++) { + cob.aload(0); + Class argType = factoryType.parameterType(i); + cob.loadLocal(TypeKind.from(argType), cob.parameterSlot(i)); + cob.putfield(lambdaClassDesc, argNames[i], argDescs[i]); + } + cob.return_(); + } + })); + } + + private static class SerializationSupport { + // Serialization support + private static final ClassDesc CD_SerializedLambda = ReferenceClassDescImpl.ofValidated("Ljava/lang/invoke/SerializedLambda;"); + private static final ClassDesc CD_ObjectOutputStream = ReferenceClassDescImpl.ofValidated("Ljava/io/ObjectOutputStream;"); + private static final ClassDesc CD_ObjectInputStream = ReferenceClassDescImpl.ofValidated("Ljava/io/ObjectInputStream;"); + private static final MethodTypeDesc MTD_Object = MethodTypeDescImpl.ofValidated(CD_Object); + private static final MethodTypeDesc MTD_void_ObjectOutputStream = MethodTypeDescImpl.ofValidated(CD_void, CD_ObjectOutputStream); + private static final MethodTypeDesc MTD_void_ObjectInputStream = MethodTypeDescImpl.ofValidated(CD_void, CD_ObjectInputStream); + + private static final String NAME_METHOD_WRITE_REPLACE = "writeReplace"; + private static final String NAME_METHOD_READ_OBJECT = "readObject"; + private static final String NAME_METHOD_WRITE_OBJECT = "writeObject"; + + static final ClassDesc CD_NotSerializableException = ReferenceClassDescImpl.ofValidated("Ljava/io/NotSerializableException;"); + static final MethodTypeDesc MTD_CTOR_NOT_SERIALIZABLE_EXCEPTION = MethodTypeDescImpl.ofValidated(CD_void, CD_String); + static final MethodTypeDesc MTD_CTOR_SERIALIZED_LAMBDA = MethodTypeDescImpl.ofValidated(CD_void, + CD_Class, CD_String, CD_String, CD_String, CD_int, CD_String, CD_String, CD_String, CD_String, ReferenceClassDescImpl.ofValidated("[Ljava/lang/Object;")); + } /** * Generate a writeReplace method that supports serialization */ - private void generateSerializationFriendlyMethods() { - TypeConvertingMethodAdapter mv - = new TypeConvertingMethodAdapter( - cw.visitMethod(ACC_PRIVATE + ACC_FINAL, - NAME_METHOD_WRITE_REPLACE, DESCR_METHOD_WRITE_REPLACE, - null, null)); - - mv.visitCode(); - mv.visitTypeInsn(NEW, NAME_SERIALIZED_LAMBDA); - mv.visitInsn(DUP); - mv.visitLdcInsn(Type.getType(targetClass)); - mv.visitLdcInsn(factoryType.returnType().getName().replace('.', '/')); - mv.visitLdcInsn(interfaceMethodName); - mv.visitLdcInsn(interfaceMethodType.toMethodDescriptorString()); - mv.visitLdcInsn(implInfo.getReferenceKind()); - mv.visitLdcInsn(implInfo.getDeclaringClass().getName().replace('.', '/')); - mv.visitLdcInsn(implInfo.getName()); - mv.visitLdcInsn(implInfo.getMethodType().toMethodDescriptorString()); - mv.visitLdcInsn(dynamicMethodType.toMethodDescriptorString()); - mv.iconst(argDescs.length); - mv.visitTypeInsn(ANEWARRAY, JAVA_LANG_OBJECT); - for (int i = 0; i < argDescs.length; i++) { - mv.visitInsn(DUP); - mv.iconst(i); - mv.visitVarInsn(ALOAD, 0); - mv.visitFieldInsn(GETFIELD, lambdaClassName, argNames[i], argDescs[i]); - mv.boxIfTypePrimitive(Type.getType(argDescs[i])); - mv.visitInsn(AASTORE); - } - mv.visitMethodInsn(INVOKESPECIAL, NAME_SERIALIZED_LAMBDA, NAME_CTOR, - DESCR_CTOR_SERIALIZED_LAMBDA, false); - mv.visitInsn(ARETURN); - // Maxs computed by ClassWriter.COMPUTE_MAXS, these arguments ignored - mv.visitMaxs(-1, -1); - mv.visitEnd(); + private void generateSerializationFriendlyMethods(ClassBuilder clb) { + clb.withMethod(SerializationSupport.NAME_METHOD_WRITE_REPLACE, SerializationSupport.MTD_Object, ACC_PRIVATE | ACC_FINAL, + new MethodBody(new Consumer() { + @Override + public void accept(CodeBuilder cob) { + cob.new_(SerializationSupport.CD_SerializedLambda) + .dup() + .ldc(classDesc(targetClass)) + .ldc(factoryType.returnType().getName().replace('.', '/')) + .ldc(interfaceMethodName) + .ldc(interfaceMethodType.toMethodDescriptorString()) + .ldc(implInfo.getReferenceKind()) + .ldc(implInfo.getDeclaringClass().getName().replace('.', '/')) + .ldc(implInfo.getName()) + .ldc(implInfo.getMethodType().toMethodDescriptorString()) + .ldc(dynamicMethodType.toMethodDescriptorString()) + .loadConstant(argDescs.length) + .anewarray(CD_Object); + for (int i = 0; i < argDescs.length; i++) { + cob.dup() + .loadConstant(i) + .aload(0) + .getfield(lambdaClassDesc, argNames[i], argDescs[i]); + TypeConvertingMethodAdapter.boxIfTypePrimitive(cob, TypeKind.from(argDescs[i])); + cob.aastore(); + } + cob.invokespecial(SerializationSupport.CD_SerializedLambda, INIT_NAME, + SerializationSupport.MTD_CTOR_SERIALIZED_LAMBDA) + .areturn(); + } + })); } /** * Generate a readObject/writeObject method that is hostile to serialization */ - private void generateSerializationHostileMethods() { - MethodVisitor mv = cw.visitMethod(ACC_PRIVATE + ACC_FINAL, - NAME_METHOD_WRITE_OBJECT, DESCR_METHOD_WRITE_OBJECT, - null, SER_HOSTILE_EXCEPTIONS); - mv.visitCode(); - mv.visitTypeInsn(NEW, NAME_NOT_SERIALIZABLE_EXCEPTION); - mv.visitInsn(DUP); - mv.visitLdcInsn("Non-serializable lambda"); - mv.visitMethodInsn(INVOKESPECIAL, NAME_NOT_SERIALIZABLE_EXCEPTION, NAME_CTOR, - DESCR_CTOR_NOT_SERIALIZABLE_EXCEPTION, false); - mv.visitInsn(ATHROW); - mv.visitMaxs(-1, -1); - mv.visitEnd(); - - mv = cw.visitMethod(ACC_PRIVATE + ACC_FINAL, - NAME_METHOD_READ_OBJECT, DESCR_METHOD_READ_OBJECT, - null, SER_HOSTILE_EXCEPTIONS); - mv.visitCode(); - mv.visitTypeInsn(NEW, NAME_NOT_SERIALIZABLE_EXCEPTION); - mv.visitInsn(DUP); - mv.visitLdcInsn("Non-serializable lambda"); - mv.visitMethodInsn(INVOKESPECIAL, NAME_NOT_SERIALIZABLE_EXCEPTION, NAME_CTOR, - DESCR_CTOR_NOT_SERIALIZABLE_EXCEPTION, false); - mv.visitInsn(ATHROW); - mv.visitMaxs(-1, -1); - mv.visitEnd(); + private void generateSerializationHostileMethods(ClassBuilder clb) { + var hostileMethod = new Consumer() { + @Override + public void accept(MethodBuilder mb) { + ConstantPoolBuilder cp = mb.constantPool(); + ClassEntry nseCE = cp.classEntry(SerializationSupport.CD_NotSerializableException); + mb.with(ExceptionsAttribute.of(nseCE)) + .withCode(new Consumer() { + @Override + public void accept(CodeBuilder cob) { + cob.new_(nseCE) + .dup() + .ldc("Non-serializable lambda") + .invokespecial(cp.methodRefEntry(nseCE, cp.nameAndTypeEntry(INIT_NAME, + SerializationSupport.MTD_CTOR_NOT_SERIALIZABLE_EXCEPTION))) + .athrow(); + } + }); + } + }; + clb.withMethod(SerializationSupport.NAME_METHOD_WRITE_OBJECT, SerializationSupport.MTD_void_ObjectOutputStream, + ACC_PRIVATE + ACC_FINAL, hostileMethod); + clb.withMethod(SerializationSupport.NAME_METHOD_READ_OBJECT, SerializationSupport.MTD_void_ObjectInputStream, + ACC_PRIVATE + ACC_FINAL, hostileMethod); } /** - * This class generates a method body which calls the lambda implementation + * This method generates a method body which calls the lambda implementation * method, converting arguments, as needed. */ - private class ForwardingMethodGenerator extends TypeConvertingMethodAdapter { - - ForwardingMethodGenerator(MethodVisitor mv) { - super(mv); - } - - void generate(MethodType methodType) { - visitCode(); - - if (implKind == MethodHandleInfo.REF_newInvokeSpecial) { - visitTypeInsn(NEW, implMethodClassName); - visitInsn(DUP); - } - if (useImplMethodHandle) { - visitLdcInsn(implMethodCondy); - } - for (int i = 0; i < argNames.length; i++) { - visitVarInsn(ALOAD, 0); - visitFieldInsn(GETFIELD, lambdaClassName, argNames[i], argDescs[i]); - } + Consumer forwardingMethod(MethodType methodType) { + return new MethodBody(new Consumer() { + @Override + public void accept(CodeBuilder cob) { + if (implKind == MethodHandleInfo.REF_newInvokeSpecial) { + cob.new_(implMethodClassDesc) + .dup(); + } + if (useImplMethodHandle) { + ConstantPoolBuilder cp = cob.constantPool(); + cob.ldc(cp.constantDynamicEntry(cp.bsmEntry(cp.methodHandleEntry(BSM_CLASS_DATA), List.of()), + cp.nameAndTypeEntry(DEFAULT_NAME, CD_MethodHandle))); + } + for (int i = 0; i < argNames.length; i++) { + cob.aload(0) + .getfield(lambdaClassDesc, argNames[i], argDescs[i]); + } - convertArgumentTypes(methodType); + convertArgumentTypes(cob, methodType); - if (useImplMethodHandle) { - MethodType mtype = implInfo.getMethodType(); - if (implKind != MethodHandleInfo.REF_invokeStatic) { - mtype = mtype.insertParameterTypes(0, implClass); + if (useImplMethodHandle) { + MethodType mtype = implInfo.getMethodType(); + if (implKind != MethodHandleInfo.REF_invokeStatic) { + mtype = mtype.insertParameterTypes(0, implClass); + } + cob.invokevirtual(CD_MethodHandle, "invokeExact", methodDesc(mtype)); + } else { + // Invoke the method we want to forward to + cob.invoke(invocationOpcode(), implMethodClassDesc, implMethodName, implMethodDesc, implClass.isInterface()); } - visitMethodInsn(INVOKEVIRTUAL, "java/lang/invoke/MethodHandle", - "invokeExact", mtype.descriptorString(), false); - } else { - // Invoke the method we want to forward to - visitMethodInsn(invocationOpcode(), implMethodClassName, - implMethodName, implMethodDesc, - implClass.isInterface()); + // Convert the return value (if any) and return it + // Note: if adapting from non-void to void, the 'return' + // instruction will pop the unneeded result + Class implReturnClass = implMethodType.returnType(); + Class samReturnClass = methodType.returnType(); + TypeConvertingMethodAdapter.convertType(cob, implReturnClass, samReturnClass, samReturnClass); + cob.return_(TypeKind.from(samReturnClass)); } - // Convert the return value (if any) and return it - // Note: if adapting from non-void to void, the 'return' - // instruction will pop the unneeded result - Class implReturnClass = implMethodType.returnType(); - Class samReturnClass = methodType.returnType(); - convertType(implReturnClass, samReturnClass, samReturnClass); - visitInsn(getReturnOpcode(samReturnClass)); - // Maxs computed by ClassWriter.COMPUTE_MAXS,these arguments ignored - visitMaxs(-1, -1); - visitEnd(); - } - - private void convertArgumentTypes(MethodType samType) { - int lvIndex = 0; - int samParametersLength = samType.parameterCount(); - int captureArity = factoryType.parameterCount(); - for (int i = 0; i < samParametersLength; i++) { - Class argType = samType.parameterType(i); - visitVarInsn(getLoadOpcode(argType), lvIndex + 1); - lvIndex += getParameterSize(argType); - convertType(argType, implMethodType.parameterType(captureArity + i), dynamicMethodType.parameterType(i)); - } - } + }); + } - private int invocationOpcode() throws InternalError { - return switch (implKind) { - case MethodHandleInfo.REF_invokeStatic -> INVOKESTATIC; - case MethodHandleInfo.REF_newInvokeSpecial -> INVOKESPECIAL; - case MethodHandleInfo.REF_invokeVirtual -> INVOKEVIRTUAL; - case MethodHandleInfo.REF_invokeInterface -> INVOKEINTERFACE; - case MethodHandleInfo.REF_invokeSpecial -> INVOKESPECIAL; - default -> throw new InternalError("Unexpected invocation kind: " + implKind); - }; + private void convertArgumentTypes(CodeBuilder cob, MethodType samType) { + int samParametersLength = samType.parameterCount(); + int captureArity = factoryType.parameterCount(); + for (int i = 0; i < samParametersLength; i++) { + Class argType = samType.parameterType(i); + cob.loadLocal(TypeKind.from(argType), cob.parameterSlot(i)); + TypeConvertingMethodAdapter.convertType(cob, argType, implMethodType.parameterType(captureArity + i), dynamicMethodType.parameterType(i)); } } - static int getParameterSize(Class c) { - if (c == Void.TYPE) { - return 0; - } else if (c == Long.TYPE || c == Double.TYPE) { - return 2; - } - return 1; + private Opcode invocationOpcode() throws InternalError { + return switch (implKind) { + case MethodHandleInfo.REF_invokeStatic -> Opcode.INVOKESTATIC; + case MethodHandleInfo.REF_newInvokeSpecial -> Opcode.INVOKESPECIAL; + case MethodHandleInfo.REF_invokeVirtual -> Opcode.INVOKEVIRTUAL; + case MethodHandleInfo.REF_invokeInterface -> Opcode.INVOKEINTERFACE; + case MethodHandleInfo.REF_invokeSpecial -> Opcode.INVOKESPECIAL; + default -> throw new InternalError("Unexpected invocation kind: " + implKind); + }; } - static int getLoadOpcode(Class c) { - if(c == Void.TYPE) { - throw new InternalError("Unexpected void type of load opcode"); - } - return ILOAD + getOpcodeOffset(c); + static ClassDesc implClassDesc(Class cls) { + return cls.isHidden() ? null : ReferenceClassDescImpl.ofValidated(cls.descriptorString()); } - static int getReturnOpcode(Class c) { - if(c == Void.TYPE) { - return RETURN; - } - return IRETURN + getOpcodeOffset(c); + static ClassDesc classDesc(Class cls) { + return cls.isPrimitive() ? Wrapper.forPrimitiveType(cls).basicClassDescriptor() + : ReferenceClassDescImpl.ofValidated(cls.descriptorString()); } - private static int getOpcodeOffset(Class c) { - if (c.isPrimitive()) { - if (c == Long.TYPE) { - return 1; - } else if (c == Float.TYPE) { - return 2; - } else if (c == Double.TYPE) { - return 3; - } - return 0; - } else { - return 4; + static MethodTypeDesc methodDesc(MethodType mt) { + var params = new ClassDesc[mt.parameterCount()]; + for (int i = 0; i < params.length; i++) { + params[i] = classDesc(mt.parameterType(i)); } + return MethodTypeDescImpl.ofValidated(classDesc(mt.returnType()), params); } - } diff --git a/src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java b/src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java index 4e3ebb3834d..6d71296c134 100644 --- a/src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java +++ b/src/java.base/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java @@ -25,30 +25,38 @@ package java.lang.invoke; -import jdk.internal.org.objectweb.asm.ClassWriter; -import jdk.internal.org.objectweb.asm.FieldVisitor; -import jdk.internal.org.objectweb.asm.Label; -import jdk.internal.org.objectweb.asm.MethodVisitor; -import jdk.internal.org.objectweb.asm.Opcodes; -import jdk.internal.org.objectweb.asm.Type; import sun.invoke.util.VerifyAccess; import sun.invoke.util.VerifyType; import sun.invoke.util.Wrapper; +import java.lang.classfile.*; +import java.lang.classfile.attribute.RuntimeVisibleAnnotationsAttribute; +import java.lang.classfile.attribute.SourceFileAttribute; +import java.lang.classfile.instruction.SwitchCase; +import java.lang.constant.ClassDesc; +import java.lang.constant.ConstantDesc; +import java.lang.constant.MethodTypeDesc; +import java.lang.invoke.LambdaForm.BasicType; +import java.lang.invoke.LambdaForm.Name; +import java.lang.invoke.LambdaForm.NamedFunction; import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Set; +import java.util.function.Consumer; import java.util.stream.Stream; +import jdk.internal.constant.MethodTypeDescImpl; +import jdk.internal.constant.ReferenceClassDescImpl; -import static java.lang.invoke.LambdaForm.BasicType; -import static java.lang.invoke.LambdaForm.BasicType.*; +import static java.lang.classfile.ClassFile.*; +import static java.lang.constant.ConstantDescs.*; import static java.lang.invoke.LambdaForm.*; +import static java.lang.invoke.LambdaForm.BasicType.*; import static java.lang.invoke.MethodHandleNatives.Constants.*; import static java.lang.invoke.MethodHandleStatics.*; -import static java.lang.invoke.MethodHandles.Lookup.*; +import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; /** * Code generation backend for LambdaForm. @@ -57,32 +65,46 @@ */ class InvokerBytecodeGenerator { /** Define class names for convenience. */ - private static final String MH = "java/lang/invoke/MethodHandle"; - private static final String MHI = "java/lang/invoke/MethodHandleImpl"; - private static final String LF = "java/lang/invoke/LambdaForm"; - private static final String LFN = "java/lang/invoke/LambdaForm$Name"; - private static final String CLS = "java/lang/Class"; - private static final String OBJ = "java/lang/Object"; - private static final String OBJARY = "[Ljava/lang/Object;"; - - private static final String LOOP_CLAUSES = MHI + "$LoopClauses"; - private static final String MHARY2 = "[[L" + MH + ";"; - private static final String MH_SIG = "L" + MH + ";"; - - - private static final String LF_SIG = "L" + LF + ";"; - private static final String LFN_SIG = "L" + LFN + ";"; - private static final String LL_SIG = "(L" + OBJ + ";)L" + OBJ + ";"; - private static final String LLV_SIG = "(L" + OBJ + ";L" + OBJ + ";)V"; - private static final String CLASS_PREFIX = LF + "$"; + private static final ClassDesc CD_CasesHolder = ReferenceClassDescImpl.ofValidated("Ljava/lang/invoke/MethodHandleImpl$CasesHolder;"); + private static final ClassDesc CD_DirectMethodHandle = ReferenceClassDescImpl.ofValidated("Ljava/lang/invoke/DirectMethodHandle;"); + private static final ClassDesc CD_MethodHandleImpl = ReferenceClassDescImpl.ofValidated("Ljava/lang/invoke/MethodHandleImpl;"); + private static final ClassDesc CD_LambdaForm = ReferenceClassDescImpl.ofValidated("Ljava/lang/invoke/LambdaForm;"); + private static final ClassDesc CD_LambdaForm_Name = ReferenceClassDescImpl.ofValidated("Ljava/lang/invoke/LambdaForm$Name;"); + private static final ClassDesc CD_LoopClauses = ReferenceClassDescImpl.ofValidated("Ljava/lang/invoke/MethodHandleImpl$LoopClauses;"); + private static final ClassDesc CD_Object_array = ReferenceClassDescImpl.ofValidated("[Ljava/lang/Object;"); + private static final ClassDesc CD_MethodHandle_array = ReferenceClassDescImpl.ofValidated("[Ljava/lang/invoke/MethodHandle;"); + private static final ClassDesc CD_MethodHandle_array2 = ReferenceClassDescImpl.ofValidated("[[Ljava/lang/invoke/MethodHandle;"); + + private static final MethodTypeDesc MTD_boolean_Object = MethodTypeDescImpl.ofValidated(CD_boolean, CD_Object); + private static final MethodTypeDesc MTD_Object_int = MethodTypeDescImpl.ofValidated(CD_Object, CD_int); + private static final MethodTypeDesc MTD_Object_Class = MethodTypeDescImpl.ofValidated(CD_Object, CD_Class); + private static final MethodTypeDesc MTD_Object_Object = MethodTypeDescImpl.ofValidated(CD_Object, CD_Object); + + private static final String CLASS_PREFIX = "java/lang/invoke/LambdaForm$"; private static final String SOURCE_PREFIX = "LambdaForm$"; + // Static builders to avoid lambdas + private static final Consumer STATIC_FINAL_FIELD = new Consumer() { + @Override + public void accept(FieldBuilder fb) { + fb.withFlags(ACC_STATIC | ACC_FINAL); + } + }; + + record MethodBody(Consumer code) implements Consumer { + @Override + public void accept(MethodBuilder mb) { + mb.withCode(code); + } + }; + /** Name of its super class*/ - static final String INVOKER_SUPER_NAME = OBJ; + static final ClassDesc INVOKER_SUPER_DESC = CD_Object; /** Name of new class */ private final String name; private final String className; + private final ClassDesc classDesc; private final LambdaForm lambdaForm; private final String invokerName; @@ -92,15 +114,8 @@ class InvokerBytecodeGenerator { private int[] localsMap; // index private Class[] localClasses; // type - /** ASM bytecode generation. */ - private ClassWriter cw; - private MethodVisitor mv; private final List classData = new ArrayList<>(); - /** Single element internal class name lookup cache. */ - private Class lastClass; - private String lastInternalName; - private static final MemberName.Factory MEMBERNAME_FACTORY = MemberName.getFactory(); private static final Class HOST_CLASS = LambdaForm.class; private static final MethodHandles.Lookup LOOKUP = lookup(); @@ -126,6 +141,7 @@ private InvokerBytecodeGenerator(LambdaForm lambdaForm, int localsMapSize, } this.name = name; this.className = CLASS_PREFIX + name; + this.classDesc = ClassDesc.ofInternalName(className); this.lambdaForm = lambdaForm; this.invokerName = invokerName; this.invokerType = invokerType; @@ -188,10 +204,10 @@ private static String makeDumpableClassName(String className) { static class ClassData { final String name; - final String desc; + final ClassDesc desc; final Object value; - ClassData(String name, String desc, Object value) { + ClassData(String name, ClassDesc desc, Object value) { this.name = name; this.desc = desc; this.value = value; @@ -204,15 +220,15 @@ public String toString() { } String classData(Object arg) { - String desc; + ClassDesc desc; if (arg instanceof Class) { - desc = "Ljava/lang/Class;"; + desc = CD_Class; } else if (arg instanceof MethodHandle) { - desc = MH_SIG; + desc = CD_MethodHandle; } else if (arg instanceof LambdaForm) { - desc = LF_SIG; + desc = CD_LambdaForm; } else { - desc = "Ljava/lang/Object;"; + desc = CD_Object; } // unique static variable name @@ -231,16 +247,6 @@ String classData(Object arg) { return name; } - private static String debugString(Object arg) { - if (arg instanceof MethodHandle mh) { - MemberName member = mh.internalMemberName(); - if (member != null) - return member.toString(); - return mh.debugString(); - } - return arg.toString(); - } - /** * Extract the MemberName of a newly-defined method. */ @@ -265,27 +271,25 @@ private static MemberName resolveInvokerMember(Class invokerClass, String nam /** * Set up class file generation. */ - private ClassWriter classFilePrologue() { - final int NOT_ACC_PUBLIC = 0; // not ACC_PUBLIC - ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS + ClassWriter.COMPUTE_FRAMES); - setClassWriter(cw); - cw.visit(CLASSFILE_VERSION, NOT_ACC_PUBLIC + Opcodes.ACC_FINAL + Opcodes.ACC_SUPER, - className, null, INVOKER_SUPER_NAME, null); - cw.visitSource(SOURCE_PREFIX + name, null); - return cw; - } - - private void methodPrologue() { - String invokerDesc = invokerType.toMethodDescriptorString(); - mv = cw.visitMethod(Opcodes.ACC_STATIC, invokerName, invokerDesc, null, null); + private byte[] classFileSetup(Consumer config) { + try { + return ClassFile.of().build(classDesc, new Consumer<>() { + @Override + public void accept(ClassBuilder clb) { + clb.withFlags(ACC_FINAL | ACC_SUPER) + .withSuperclass(INVOKER_SUPER_DESC) + .with(SourceFileAttribute.of(clb.constantPool().utf8Entry(SOURCE_PREFIX + name))); + config.accept(clb); + } + }); + } catch (RuntimeException e) { + throw new BytecodeGenerationException(e); + } } - /** - * Tear down class file generation. - */ - private void methodEpilogue() { - mv.visitMaxs(0, 0); - mv.visitEnd(); + private void methodSetup(ClassBuilder clb, Consumer config) { + var invokerDesc = methodDesc(invokerType); + clb.withMethod(invokerName, invokerDesc, ACC_STATIC, config); } /** @@ -318,202 +322,49 @@ private Object classDataValues() { * to initialize the static final fields with the live class data * LambdaForms can't use condy due to bootstrapping issue. */ - static void clinit(ClassWriter cw, String className, List classData) { + static void clinit(ClassBuilder clb, ClassDesc classDesc, List classData) { if (classData.isEmpty()) return; for (ClassData p : classData) { // add the static field - FieldVisitor fv = cw.visitField(Opcodes.ACC_STATIC|Opcodes.ACC_FINAL, p.name, p.desc, null, null); - fv.visitEnd(); - } - - MethodVisitor mv = cw.visitMethod(Opcodes.ACC_STATIC, "", "()V", null, null); - mv.visitCode(); - mv.visitLdcInsn(Type.getType("L" + className + ";")); - mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/invoke/MethodHandles", - "classData", "(Ljava/lang/Class;)Ljava/lang/Object;", false); - if (classData.size() == 1) { - ClassData p = classData.get(0); - mv.visitTypeInsn(Opcodes.CHECKCAST, p.desc.substring(1, p.desc.length()-1)); - mv.visitFieldInsn(Opcodes.PUTSTATIC, className, p.name, p.desc); - } else { - mv.visitTypeInsn(Opcodes.CHECKCAST, "java/util/List"); - mv.visitVarInsn(Opcodes.ASTORE, 0); - int index = 0; - for (ClassData p : classData) { - // initialize the static field - mv.visitVarInsn(Opcodes.ALOAD, 0); - emitIconstInsn(mv, index++); - mv.visitMethodInsn(Opcodes.INVOKEINTERFACE, "java/util/List", - "get", "(I)Ljava/lang/Object;", true); - mv.visitTypeInsn(Opcodes.CHECKCAST, p.desc.substring(1, p.desc.length()-1)); - mv.visitFieldInsn(Opcodes.PUTSTATIC, className, p.name, p.desc); - } - } - mv.visitInsn(Opcodes.RETURN); - mv.visitMaxs(2, 1); - mv.visitEnd(); - } - - /* - * Low-level emit helpers. - */ - private void emitConst(Object con) { - if (con == null) { - mv.visitInsn(Opcodes.ACONST_NULL); - return; - } - if (con instanceof Integer) { - emitIconstInsn((int) con); - return; - } - if (con instanceof Byte) { - emitIconstInsn((byte)con); - return; - } - if (con instanceof Short) { - emitIconstInsn((short)con); - return; - } - if (con instanceof Character) { - emitIconstInsn((char)con); - return; - } - if (con instanceof Long) { - long x = (long) con; - short sx = (short)x; - if (x == sx) { - if (sx >= 0 && sx <= 1) { - mv.visitInsn(Opcodes.LCONST_0 + (int) sx); - } else { - emitIconstInsn((int) x); - mv.visitInsn(Opcodes.I2L); - } - return; - } - } - if (con instanceof Float) { - float x = (float) con; - short sx = (short)x; - if (x == sx) { - if (sx >= 0 && sx <= 2) { - mv.visitInsn(Opcodes.FCONST_0 + (int) sx); + clb.withField(p.name, p.desc, STATIC_FINAL_FIELD); + } + + clb.withMethod(CLASS_INIT_NAME, MTD_void, ACC_STATIC, new MethodBody(new Consumer() { + @Override + public void accept(CodeBuilder cob) { + cob.loadConstant(classDesc) + .invokestatic(CD_MethodHandles, "classData", MTD_Object_Class); + if (classData.size() == 1) { + ClassData p = classData.get(0); + cob.checkcast(p.desc) + .putstatic(classDesc, p.name, p.desc); } else { - emitIconstInsn((int) x); - mv.visitInsn(Opcodes.I2F); - } - return; - } - } - if (con instanceof Double) { - double x = (double) con; - short sx = (short)x; - if (x == sx) { - if (sx >= 0 && sx <= 1) { - mv.visitInsn(Opcodes.DCONST_0 + (int) sx); - } else { - emitIconstInsn((int) x); - mv.visitInsn(Opcodes.I2D); + cob.checkcast(CD_List) + .astore(0); + int index = 0; + var listGet = cob.constantPool().interfaceMethodRefEntry(CD_List, "get", MTD_Object_int); + for (ClassData p : classData) { + // initialize the static field + cob.aload(0) + .loadConstant(index++) + .invokeinterface(listGet) + .checkcast(p.desc) + .putstatic(classDesc, p.name, p.desc); + } } - return; + cob.return_(); } - } - if (con instanceof Boolean) { - emitIconstInsn((boolean) con ? 1 : 0); - return; - } - // fall through: - mv.visitLdcInsn(con); - } - - private void emitIconstInsn(final int cst) { - emitIconstInsn(mv, cst); - } - - private static void emitIconstInsn(MethodVisitor mv, int cst) { - if (cst >= -1 && cst <= 5) { - mv.visitInsn(Opcodes.ICONST_0 + cst); - } else if (cst >= Byte.MIN_VALUE && cst <= Byte.MAX_VALUE) { - mv.visitIntInsn(Opcodes.BIPUSH, cst); - } else if (cst >= Short.MIN_VALUE && cst <= Short.MAX_VALUE) { - mv.visitIntInsn(Opcodes.SIPUSH, cst); - } else { - mv.visitLdcInsn(cst); - } - } - - /* - * NOTE: These load/store methods use the localsMap to find the correct index! - */ - private void emitLoadInsn(BasicType type, int index) { - int opcode = loadInsnOpcode(type); - mv.visitVarInsn(opcode, localsMap[index]); + })); } - private int loadInsnOpcode(BasicType type) throws InternalError { - return switch (type) { - case I_TYPE -> Opcodes.ILOAD; - case J_TYPE -> Opcodes.LLOAD; - case F_TYPE -> Opcodes.FLOAD; - case D_TYPE -> Opcodes.DLOAD; - case L_TYPE -> Opcodes.ALOAD; - default -> throw new InternalError("unknown type: " + type); - }; - } - private void emitAloadInsn(int index) { - emitLoadInsn(L_TYPE, index); + private void emitLoadInsn(CodeBuilder cob, TypeKind type, int index) { + cob.loadLocal(type, localsMap[index]); } - private void emitStoreInsn(BasicType type, int index) { - int opcode = storeInsnOpcode(type); - mv.visitVarInsn(opcode, localsMap[index]); - } - - private int storeInsnOpcode(BasicType type) throws InternalError { - return switch (type) { - case I_TYPE -> Opcodes.ISTORE; - case J_TYPE -> Opcodes.LSTORE; - case F_TYPE -> Opcodes.FSTORE; - case D_TYPE -> Opcodes.DSTORE; - case L_TYPE -> Opcodes.ASTORE; - default -> throw new InternalError("unknown type: " + type); - }; - } - private void emitAstoreInsn(int index) { - emitStoreInsn(L_TYPE, index); - } - - private byte arrayTypeCode(Wrapper elementType) { - return (byte) switch (elementType) { - case BOOLEAN -> Opcodes.T_BOOLEAN; - case BYTE -> Opcodes.T_BYTE; - case CHAR -> Opcodes.T_CHAR; - case SHORT -> Opcodes.T_SHORT; - case INT -> Opcodes.T_INT; - case LONG -> Opcodes.T_LONG; - case FLOAT -> Opcodes.T_FLOAT; - case DOUBLE -> Opcodes.T_DOUBLE; - case OBJECT -> 0; // in place of Opcodes.T_OBJECT - default -> throw new InternalError(); - }; - } - - private int arrayInsnOpcode(byte tcode, int aaop) throws InternalError { - assert(aaop == Opcodes.AASTORE || aaop == Opcodes.AALOAD); - int xas = switch (tcode) { - case Opcodes.T_BOOLEAN -> Opcodes.BASTORE; - case Opcodes.T_BYTE -> Opcodes.BASTORE; - case Opcodes.T_CHAR -> Opcodes.CASTORE; - case Opcodes.T_SHORT -> Opcodes.SASTORE; - case Opcodes.T_INT -> Opcodes.IASTORE; - case Opcodes.T_LONG -> Opcodes.LASTORE; - case Opcodes.T_FLOAT -> Opcodes.FASTORE; - case Opcodes.T_DOUBLE -> Opcodes.DASTORE; - case 0 -> Opcodes.AASTORE; - default -> throw new InternalError(); - }; - return xas - Opcodes.AASTORE + aaop; + private void emitStoreInsn(CodeBuilder cob, TypeKind type, int index) { + cob.storeLocal(type, localsMap[index]); } /** @@ -521,11 +372,8 @@ private int arrayInsnOpcode(byte tcode, int aaop) throws InternalError { * * @param wrapper primitive type class to box. */ - private void emitBoxing(Wrapper wrapper) { - String owner = "java/lang/" + wrapper.wrapperType().getSimpleName(); - String name = "valueOf"; - String desc = "(" + wrapper.basicTypeChar() + ")L" + owner + ";"; - mv.visitMethodInsn(Opcodes.INVOKESTATIC, owner, name, desc, false); + private void emitBoxing(CodeBuilder cob, TypeKind tk) { + TypeConvertingMethodAdapter.box(cob, tk); } /** @@ -533,12 +381,15 @@ private void emitBoxing(Wrapper wrapper) { * * @param wrapper wrapper type class to unbox. */ - private void emitUnboxing(Wrapper wrapper) { - String owner = "java/lang/" + wrapper.wrapperType().getSimpleName(); - String name = wrapper.primitiveSimpleName() + "Value"; - String desc = "()" + wrapper.basicTypeChar(); - emitReferenceCast(wrapper.wrapperType(), null); - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, owner, name, desc, false); + private void emitUnboxing(CodeBuilder cob, TypeKind target) { + switch (target) { + case BooleanType -> emitReferenceCast(cob, Boolean.class, null); + case CharType -> emitReferenceCast(cob, Character.class, null); + case ByteType, DoubleType, FloatType, IntType, LongType, ShortType -> + emitReferenceCast(cob, Number.class, null); + default -> {} + } + TypeConvertingMethodAdapter.unbox(cob, target); } /** @@ -549,7 +400,7 @@ private void emitUnboxing(Wrapper wrapper) { * @param pclass type of value required on stack * @param arg compile-time representation of value on stack (Node, constant) or null if none */ - private void emitImplicitConversion(BasicType ptype, Class pclass, Object arg) { + private void emitImplicitConversion(CodeBuilder cob, BasicType ptype, Class pclass, Object arg) { assert(basicType(pclass) == ptype); // boxing/unboxing handled by caller if (pclass == ptype.basicTypeClass() && ptype != L_TYPE) return; // nothing to do @@ -557,14 +408,14 @@ private void emitImplicitConversion(BasicType ptype, Class pclass, Object arg case L_TYPE: if (VerifyType.isNullConversion(Object.class, pclass, false)) { if (PROFILE_LEVEL > 0) - emitReferenceCast(Object.class, arg); + emitReferenceCast(cob, Object.class, arg); return; } - emitReferenceCast(pclass, arg); + emitReferenceCast(cob, pclass, arg); return; case I_TYPE: if (!VerifyType.isNullConversion(int.class, pclass, false)) - emitPrimCast(ptype.basicTypeWrapper(), Wrapper.forPrimitiveType(pclass)); + emitPrimCast(cob, ptype.basicTypeKind(), TypeKind.from(pclass)); return; } throw newInternalError("bad implicit conversion: tc="+ptype+": "+pclass); @@ -582,7 +433,7 @@ private boolean assertStaticType(Class cls, Name n) { return false; } - private void emitReferenceCast(Class cls, Object arg) { + private void emitReferenceCast(CodeBuilder cob, Class cls, Object arg) { Name writeBack = null; // local to write back result if (arg instanceof Name n) { if (lambdaForm.useCount(n) > 1) { @@ -594,53 +445,23 @@ private void emitReferenceCast(Class cls, Object arg) { } } if (isStaticallyNameable(cls)) { - String sig = getInternalName(cls); - mv.visitTypeInsn(Opcodes.CHECKCAST, sig); + ClassDesc sig = classDesc(cls); + cob.checkcast(sig); } else { - mv.visitFieldInsn(Opcodes.GETSTATIC, className, classData(cls), "Ljava/lang/Class;"); - mv.visitInsn(Opcodes.SWAP); - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, CLS, "cast", LL_SIG, false); + cob.getstatic(classDesc, classData(cls), CD_Class) + .swap() + .invokevirtual(CD_Class, "cast", MTD_Object_Object); if (Object[].class.isAssignableFrom(cls)) - mv.visitTypeInsn(Opcodes.CHECKCAST, OBJARY); + cob.checkcast(CD_Object_array); else if (PROFILE_LEVEL > 0) - mv.visitTypeInsn(Opcodes.CHECKCAST, OBJ); + cob.checkcast(CD_Object); } if (writeBack != null) { - mv.visitInsn(Opcodes.DUP); - emitAstoreInsn(writeBack.index()); + cob.dup(); + emitStoreInsn(cob, TypeKind.ReferenceType, writeBack.index()); } } - /** - * Emits an actual return instruction conforming to the given return type. - */ - private void emitReturnInsn(BasicType type) { - int opcode = switch (type) { - case I_TYPE -> Opcodes.IRETURN; - case J_TYPE -> Opcodes.LRETURN; - case F_TYPE -> Opcodes.FRETURN; - case D_TYPE -> Opcodes.DRETURN; - case L_TYPE -> Opcodes.ARETURN; - case V_TYPE -> Opcodes.RETURN; - default -> throw new InternalError("unknown return type: " + type); - }; - mv.visitInsn(opcode); - } - - private String getInternalName(Class c) { - if (c == Object.class) return OBJ; - else if (c == Object[].class) return OBJARY; - else if (c == Class.class) return CLS; - else if (c == MethodHandle.class) return MH; - assert(VerifyAccess.ensureTypeVisible(c, Object.class)) : c.getName(); - - if (c == lastClass) { - return lastInternalName; - } - lastClass = c; - return lastInternalName = c.getName().replace('.', '/'); - } - private static MemberName resolveFrom(String name, MethodType type, Class holder) { assert(!UNSAFE.shouldBeInitialized(holder)) : holder + "not initialized"; MemberName member = new MemberName(holder, name, type, REF_invokeStatic); @@ -713,173 +534,151 @@ static MemberName generateCustomizedCode(LambdaForm form, MethodType invokerType } /** Generates code to check that actual receiver and LambdaForm matches */ - private boolean checkActualReceiver() { + private boolean checkActualReceiver(CodeBuilder cob) { // Expects MethodHandle on the stack and actual receiver MethodHandle in slot #0 - mv.visitInsn(Opcodes.DUP); - mv.visitVarInsn(Opcodes.ALOAD, localsMap[0]); - mv.visitMethodInsn(Opcodes.INVOKESTATIC, MHI, "assertSame", LLV_SIG, false); + cob.dup() + .aload(0) + .invokestatic(CD_MethodHandleImpl, "assertSame", MethodTypeDescImpl.ofValidated(CD_void, CD_Object, CD_Object)); return true; } - static String className(String cn) { - assert checkClassName(cn): "Class not found: " + cn; - return cn; - } - - static boolean checkClassName(String cn) { - Type tp = Type.getType(cn); - // additional sanity so only valid "L;" descriptors work - if (tp.getSort() != Type.OBJECT) { - return false; - } - try { - Class c = Class.forName(tp.getClassName(), false, null); - return true; - } catch (ClassNotFoundException e) { - return false; - } - } - - static final String DONTINLINE_SIG = className("Ljdk/internal/vm/annotation/DontInline;"); - static final String FORCEINLINE_SIG = className("Ljdk/internal/vm/annotation/ForceInline;"); - static final String HIDDEN_SIG = className("Ljdk/internal/vm/annotation/Hidden;"); - static final String INJECTEDPROFILE_SIG = className("Ljava/lang/invoke/InjectedProfile;"); - static final String LF_COMPILED_SIG = className("Ljava/lang/invoke/LambdaForm$Compiled;"); + static final Annotation DONTINLINE = Annotation.of(ReferenceClassDescImpl.ofValidated("Ljdk/internal/vm/annotation/DontInline;")); + static final Annotation FORCEINLINE = Annotation.of(ReferenceClassDescImpl.ofValidated("Ljdk/internal/vm/annotation/ForceInline;")); + static final Annotation HIDDEN = Annotation.of(ReferenceClassDescImpl.ofValidated("Ljdk/internal/vm/annotation/Hidden;")); + static final Annotation INJECTEDPROFILE = Annotation.of(ReferenceClassDescImpl.ofValidated("Ljava/lang/invoke/InjectedProfile;")); + static final Annotation LF_COMPILED = Annotation.of(ReferenceClassDescImpl.ofValidated("Ljava/lang/invoke/LambdaForm$Compiled;")); /** * Generate an invoker method for the passed {@link LambdaForm}. */ private byte[] generateCustomizedCodeBytes() { - classFilePrologue(); - addMethod(); - clinit(cw, className, classData); - bogusMethod(lambdaForm); - - return toByteArray(); + final byte[] classFile = classFileSetup(new Consumer() { + @Override + public void accept(ClassBuilder clb) { + addMethod(clb); + clinit(clb, classDesc, classData); + bogusMethod(clb, lambdaForm); + } + }); + return classFile; } - void setClassWriter(ClassWriter cw) { - this.cw = cw; - } + void addMethod(ClassBuilder clb) { + methodSetup(clb, new Consumer() { + @Override + public void accept(MethodBuilder mb) { - void addMethod() { - methodPrologue(); + List annotations = new ArrayList<>(3); - // Suppress this method in backtraces displayed to the user. - mv.visitAnnotation(HIDDEN_SIG, true); + // Suppress this method in backtraces displayed to the user. + annotations.add(HIDDEN); - // Mark this method as a compiled LambdaForm - mv.visitAnnotation(LF_COMPILED_SIG, true); + // Mark this method as a compiled LambdaForm + annotations.add(LF_COMPILED); - if (lambdaForm.forceInline) { - // Force inlining of this invoker method. - mv.visitAnnotation(FORCEINLINE_SIG, true); - } else { - mv.visitAnnotation(DONTINLINE_SIG, true); - } + if (lambdaForm.forceInline) { + // Force inlining of this invoker method. + annotations.add(FORCEINLINE); + } else { + annotations.add(DONTINLINE); + } + mb.accept(RuntimeVisibleAnnotationsAttribute.of(annotations)); + + classData(lambdaForm); // keep LambdaForm instance & its compiled form lifetime tightly coupled. + + mb.withCode(new Consumer() { + @Override + public void accept(CodeBuilder cob) { + if (lambdaForm.customized != null) { + // Since LambdaForm is customized for a particular MethodHandle, it's safe to substitute + // receiver MethodHandle (at slot #0) with an embedded constant and use it instead. + // It enables more efficient code generation in some situations, since embedded constants + // are compile-time constants for JIT compiler. + cob.getstatic(classDesc, classData(lambdaForm.customized), CD_MethodHandle) + .checkcast(CD_MethodHandle); + assert(checkActualReceiver(cob)); // expects MethodHandle on top of the stack + cob.astore(0); + } - classData(lambdaForm); // keep LambdaForm instance & its compiled form lifetime tightly coupled. - - if (lambdaForm.customized != null) { - // Since LambdaForm is customized for a particular MethodHandle, it's safe to substitute - // receiver MethodHandle (at slot #0) with an embedded constant and use it instead. - // It enables more efficient code generation in some situations, since embedded constants - // are compile-time constants for JIT compiler. - mv.visitFieldInsn(Opcodes.GETSTATIC, className, classData(lambdaForm.customized), MH_SIG); - mv.visitTypeInsn(Opcodes.CHECKCAST, MH); - assert(checkActualReceiver()); // expects MethodHandle on top of the stack - mv.visitVarInsn(Opcodes.ASTORE, localsMap[0]); - } + // iterate over the form's names, generating bytecode instructions for each + // start iterating at the first name following the arguments + Name onStack = null; + for (int i = lambdaForm.arity; i < lambdaForm.names.length; i++) { + Name name = lambdaForm.names[i]; + + emitStoreResult(cob, onStack); + onStack = name; // unless otherwise modified below + MethodHandleImpl.Intrinsic intr = name.function.intrinsicName(); + switch (intr) { + case SELECT_ALTERNATIVE: + assert lambdaForm.isSelectAlternative(i); + if (PROFILE_GWT) { + assert(name.arguments[0] instanceof Name n && + n.refersTo(MethodHandleImpl.class, "profileBoolean")); + mb.with(RuntimeVisibleAnnotationsAttribute.of(List.of(INJECTEDPROFILE))); + } + onStack = emitSelectAlternative(cob, name, lambdaForm.names[i+1]); + i++; // skip MH.invokeBasic of the selectAlternative result + continue; + case GUARD_WITH_CATCH: + assert lambdaForm.isGuardWithCatch(i); + onStack = emitGuardWithCatch(cob, i); + i += 2; // jump to the end of GWC idiom + continue; + case TRY_FINALLY: + assert lambdaForm.isTryFinally(i); + onStack = emitTryFinally(cob, i); + i += 2; // jump to the end of the TF idiom + continue; + case TABLE_SWITCH: + assert lambdaForm.isTableSwitch(i); + int numCases = (Integer) name.function.intrinsicData(); + onStack = emitTableSwitch(cob, i, numCases); + i += 2; // jump to the end of the TS idiom + continue; + case LOOP: + assert lambdaForm.isLoop(i); + onStack = emitLoop(cob, i); + i += 2; // jump to the end of the LOOP idiom + continue; + case ARRAY_LOAD: + emitArrayLoad(cob, name); + continue; + case ARRAY_STORE: + emitArrayStore(cob, name); + continue; + case ARRAY_LENGTH: + emitArrayLength(cob, name); + continue; + case IDENTITY: + assert(name.arguments.length == 1); + emitPushArguments(cob, name, 0); + continue; + case ZERO: + assert(name.arguments.length == 0); + cob.loadConstant((ConstantDesc)name.type.basicTypeWrapper().zero()); + continue; + case NONE: + // no intrinsic associated + break; + default: + throw newInternalError("Unknown intrinsic: "+intr); + } + + MemberName member = name.function.member(); + if (isStaticallyInvocable(member)) { + emitStaticInvoke(cob, member, name); + } else { + emitInvoke(cob, name); + } + } - // iterate over the form's names, generating bytecode instructions for each - // start iterating at the first name following the arguments - Name onStack = null; - for (int i = lambdaForm.arity; i < lambdaForm.names.length; i++) { - Name name = lambdaForm.names[i]; - - emitStoreResult(onStack); - onStack = name; // unless otherwise modified below - MethodHandleImpl.Intrinsic intr = name.function.intrinsicName(); - switch (intr) { - case SELECT_ALTERNATIVE: - assert lambdaForm.isSelectAlternative(i); - if (PROFILE_GWT) { - assert(name.arguments[0] instanceof Name n && - n.refersTo(MethodHandleImpl.class, "profileBoolean")); - mv.visitAnnotation(INJECTEDPROFILE_SIG, true); + // return statement + emitReturn(cob, onStack); } - onStack = emitSelectAlternative(name, lambdaForm.names[i+1]); - i++; // skip MH.invokeBasic of the selectAlternative result - continue; - case GUARD_WITH_CATCH: - assert lambdaForm.isGuardWithCatch(i); - onStack = emitGuardWithCatch(i); - i += 2; // jump to the end of GWC idiom - continue; - case TRY_FINALLY: - assert lambdaForm.isTryFinally(i); - onStack = emitTryFinally(i); - i += 2; // jump to the end of the TF idiom - continue; - case TABLE_SWITCH: - assert lambdaForm.isTableSwitch(i); - int numCases = (Integer) name.function.intrinsicData(); - onStack = emitTableSwitch(i, numCases); - i += 2; // jump to the end of the TS idiom - continue; - case LOOP: - assert lambdaForm.isLoop(i); - onStack = emitLoop(i); - i += 2; // jump to the end of the LOOP idiom - continue; - case ARRAY_LOAD: - emitArrayLoad(name); - continue; - case ARRAY_STORE: - emitArrayStore(name); - continue; - case ARRAY_LENGTH: - emitArrayLength(name); - continue; - case IDENTITY: - assert(name.arguments.length == 1); - emitPushArguments(name, 0); - continue; - case ZERO: - assert(name.arguments.length == 0); - emitConst(name.type.basicTypeWrapper().zero()); - continue; - case NONE: - // no intrinsic associated - break; - default: - throw newInternalError("Unknown intrinsic: "+intr); - } - - MemberName member = name.function.member(); - if (isStaticallyInvocable(member)) { - emitStaticInvoke(member, name); - } else { - emitInvoke(name); + }); } - } - - // return statement - emitReturn(onStack); - - methodEpilogue(); - } - - /* - * @throws BytecodeGenerationException if something goes wrong when - * generating the byte code - */ - private byte[] toByteArray() { - try { - return cw.toByteArray(); - } catch (RuntimeException e) { - throw new BytecodeGenerationException(e); - } + }); } /** @@ -892,48 +691,60 @@ static final class BytecodeGenerationException extends RuntimeException { } } - void emitArrayLoad(Name name) { emitArrayOp(name, Opcodes.AALOAD); } - void emitArrayStore(Name name) { emitArrayOp(name, Opcodes.AASTORE); } - void emitArrayLength(Name name) { emitArrayOp(name, Opcodes.ARRAYLENGTH); } + void emitArrayLoad(CodeBuilder cob, Name name) { + Class elementType = name.function.methodType().parameterType(0).getComponentType(); + assert elementType != null; + emitPushArguments(cob, name, 0); + if (elementType.isPrimitive()) { + cob.arrayLoad(TypeKind.from(elementType)); + } else { + cob.aaload(); + } + } - void emitArrayOp(Name name, int arrayOpcode) { - assert arrayOpcode == Opcodes.AALOAD || arrayOpcode == Opcodes.AASTORE || arrayOpcode == Opcodes.ARRAYLENGTH; + void emitArrayStore(CodeBuilder cob, Name name) { Class elementType = name.function.methodType().parameterType(0).getComponentType(); assert elementType != null; - emitPushArguments(name, 0); - if (arrayOpcode != Opcodes.ARRAYLENGTH && elementType.isPrimitive()) { - Wrapper w = Wrapper.forPrimitiveType(elementType); - arrayOpcode = arrayInsnOpcode(arrayTypeCode(w), arrayOpcode); + emitPushArguments(cob, name, 0); + if (elementType.isPrimitive()) { + cob.arrayStore(TypeKind.from(elementType)); + } else { + cob.aastore(); } - mv.visitInsn(arrayOpcode); + } + + void emitArrayLength(CodeBuilder cob, Name name) { + assert name.function.methodType().parameterType(0).isArray(); + emitPushArguments(cob, name, 0); + cob.arraylength(); } /** * Emit an invoke for the given name. */ - void emitInvoke(Name name) { + void emitInvoke(CodeBuilder cob, Name name) { assert(!name.isLinkerMethodInvoke()); // should use the static path for these if (true) { // push receiver MethodHandle target = name.function.resolvedHandle(); assert(target != null) : name.exprString(); - mv.visitFieldInsn(Opcodes.GETSTATIC, className, classData(target), MH_SIG); - emitReferenceCast(MethodHandle.class, target); + cob.getstatic(classDesc, classData(target), CD_MethodHandle); + emitReferenceCast(cob, MethodHandle.class, target); } else { // load receiver - emitAloadInsn(0); - emitReferenceCast(MethodHandle.class, null); - mv.visitFieldInsn(Opcodes.GETFIELD, MH, "form", LF_SIG); - mv.visitFieldInsn(Opcodes.GETFIELD, LF, "names", LFN_SIG); + cob.aload(0); + emitReferenceCast(cob, MethodHandle.class, null); + cob.getfield(CD_MethodHandle, "form", CD_LambdaForm) + .getfield(CD_LambdaForm, "names", CD_LambdaForm_Name); // TODO more to come } // push arguments - emitPushArguments(name, 0); + emitPushArguments(cob, name, 0); // invocation MethodType type = name.function.methodType(); - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", type.basicType().toMethodDescriptorString(), false); + cob.invokevirtual(CD_MethodHandle, "invokeBasic", methodDesc(type.basicType())); } private static final Class[] STATICALLY_INVOCABLE_PACKAGES = { @@ -1020,19 +831,18 @@ static boolean isStaticallyNameable(Class cls) { return false; } - void emitStaticInvoke(Name name) { - emitStaticInvoke(name.function.member(), name); + void emitStaticInvoke(CodeBuilder cob, Name name) { + emitStaticInvoke(cob, name.function.member(), name); } /** * Emit an invoke for the given name, using the MemberName directly. */ - void emitStaticInvoke(MemberName member, Name name) { + void emitStaticInvoke(CodeBuilder cob, MemberName member, Name name) { assert(member.equals(name.function.member())); Class defc = member.getDeclaringClass(); - String cname = getInternalName(defc); + ClassDesc cdesc = classDesc(defc); String mname = member.getName(); - String mtype; byte refKind = member.getReferenceKind(); if (refKind == REF_invokeSpecial) { // in order to pass the verifier, we need to convert this to invokevirtual in all cases @@ -1043,16 +853,16 @@ void emitStaticInvoke(MemberName member, Name name) { assert(!(member.getDeclaringClass().isInterface() && refKind == REF_invokeVirtual)); // push arguments - emitPushArguments(name, 0); + emitPushArguments(cob, name, 0); // invocation if (member.isMethod()) { - mtype = member.getMethodType().toMethodDescriptorString(); - mv.visitMethodInsn(refKindOpcode(refKind), cname, mname, mtype, - member.getDeclaringClass().isInterface()); + var methodTypeDesc = methodDesc(member.getMethodType()); + cob.invoke(refKindOpcode(refKind), cdesc, mname, methodTypeDesc, + member.getDeclaringClass().isInterface()); } else { - mtype = MethodType.toFieldDescriptorString(member.getFieldType()); - mv.visitFieldInsn(refKindOpcode(refKind), cname, mname, mtype); + var fieldTypeDesc = classDesc(member.getFieldType()); + cob.fieldAccess(refKindOpcode(refKind), cdesc, mname, fieldTypeDesc); } // Issue a type assertion for the result, so we can avoid casts later. if (name.type == L_TYPE) { @@ -1064,16 +874,16 @@ void emitStaticInvoke(MemberName member, Name name) { } } - int refKindOpcode(byte refKind) { + Opcode refKindOpcode(byte refKind) { switch (refKind) { - case REF_invokeVirtual: return Opcodes.INVOKEVIRTUAL; - case REF_invokeStatic: return Opcodes.INVOKESTATIC; - case REF_invokeSpecial: return Opcodes.INVOKESPECIAL; - case REF_invokeInterface: return Opcodes.INVOKEINTERFACE; - case REF_getField: return Opcodes.GETFIELD; - case REF_putField: return Opcodes.PUTFIELD; - case REF_getStatic: return Opcodes.GETSTATIC; - case REF_putStatic: return Opcodes.PUTSTATIC; + case REF_invokeVirtual: return Opcode.INVOKEVIRTUAL; + case REF_invokeStatic: return Opcode.INVOKESTATIC; + case REF_invokeSpecial: return Opcode.INVOKESPECIAL; + case REF_invokeInterface: return Opcode.INVOKEINTERFACE; + case REF_getField: return Opcode.GETFIELD; + case REF_putField: return Opcode.PUTFIELD; + case REF_getStatic: return Opcode.GETSTATIC; + case REF_putStatic: return Opcode.PUTSTATIC; } throw new InternalError("refKind="+refKind); } @@ -1089,40 +899,40 @@ int refKindOpcode(byte refKind) { * t4:I=MethodHandle.invokeBasic(t3:L,a1:I);t4:I} * } */ - private Name emitSelectAlternative(Name selectAlternativeName, Name invokeBasicName) { + private Name emitSelectAlternative(CodeBuilder cob, Name selectAlternativeName, Name invokeBasicName) { assert isStaticallyInvocable(invokeBasicName); Name receiver = (Name) invokeBasicName.arguments[0]; - Label L_fallback = new Label(); - Label L_done = new Label(); + Label L_fallback = cob.newLabel(); + Label L_done = cob.newLabel(); // load test result - emitPushArgument(selectAlternativeName, 0); + emitPushArgument(cob, selectAlternativeName, 0); // if_icmpne L_fallback - mv.visitJumpInsn(Opcodes.IFEQ, L_fallback); + cob.ifeq(L_fallback); // invoke selectAlternativeName.arguments[1] Class[] preForkClasses = localClasses.clone(); - emitPushArgument(selectAlternativeName, 1); // get 2nd argument of selectAlternative - emitAstoreInsn(receiver.index()); // store the MH in the receiver slot - emitStaticInvoke(invokeBasicName); + emitPushArgument(cob, selectAlternativeName, 1); // get 2nd argument of selectAlternative + emitStoreInsn(cob, TypeKind.ReferenceType, receiver.index()); // store the MH in the receiver slot + emitStaticInvoke(cob, invokeBasicName); // goto L_done - mv.visitJumpInsn(Opcodes.GOTO, L_done); + cob.goto_w(L_done); // L_fallback: - mv.visitLabel(L_fallback); + cob.labelBinding(L_fallback); // invoke selectAlternativeName.arguments[2] System.arraycopy(preForkClasses, 0, localClasses, 0, preForkClasses.length); - emitPushArgument(selectAlternativeName, 2); // get 3rd argument of selectAlternative - emitAstoreInsn(receiver.index()); // store the MH in the receiver slot - emitStaticInvoke(invokeBasicName); + emitPushArgument(cob, selectAlternativeName, 2); // get 3rd argument of selectAlternative + emitStoreInsn(cob, TypeKind.ReferenceType, receiver.index()); // store the MH in the receiver slot + emitStaticInvoke(cob, invokeBasicName); // L_done: - mv.visitLabel(L_done); + cob.labelBinding(L_done); // for now do not bother to merge typestate; just reset to the dominator state System.arraycopy(preForkClasses, 0, localClasses, 0, preForkClasses.length); @@ -1149,57 +959,57 @@ private Name emitSelectAlternative(Name selectAlternativeName, Name invokeBasicN * return a3.invokeBasic(ex, a6, a7); * }} */ - private Name emitGuardWithCatch(int pos) { + private Name emitGuardWithCatch(CodeBuilder cob, int pos) { Name args = lambdaForm.names[pos]; Name invoker = lambdaForm.names[pos+1]; Name result = lambdaForm.names[pos+2]; - Label L_startBlock = new Label(); - Label L_endBlock = new Label(); - Label L_handler = new Label(); - Label L_done = new Label(); + Label L_startBlock = cob.newLabel(); + Label L_endBlock = cob.newLabel(); + Label L_handler = cob.newLabel(); + Label L_done = cob.newLabel(); Class returnType = result.function.resolvedHandle().type().returnType(); MethodType type = args.function.resolvedHandle().type() .dropParameterTypes(0,1) .changeReturnType(returnType); - mv.visitTryCatchBlock(L_startBlock, L_endBlock, L_handler, "java/lang/Throwable"); + cob.exceptionCatch(L_startBlock, L_endBlock, L_handler, CD_Throwable); // Normal case - mv.visitLabel(L_startBlock); + cob.labelBinding(L_startBlock); // load target - emitPushArgument(invoker, 0); - emitPushArguments(args, 1); // skip 1st argument: method handle - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", type.basicType().toMethodDescriptorString(), false); - mv.visitLabel(L_endBlock); - mv.visitJumpInsn(Opcodes.GOTO, L_done); + emitPushArgument(cob, invoker, 0); + emitPushArguments(cob, args, 1); // skip 1st argument: method handle + cob.invokevirtual(CD_MethodHandle, "invokeBasic", methodDesc(type.basicType())); + cob.labelBinding(L_endBlock); + cob.goto_w(L_done); // Exceptional case - mv.visitLabel(L_handler); + cob.labelBinding(L_handler); // Check exception's type - mv.visitInsn(Opcodes.DUP); + cob.dup(); // load exception class - emitPushArgument(invoker, 1); - mv.visitInsn(Opcodes.SWAP); - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Class", "isInstance", "(Ljava/lang/Object;)Z", false); - Label L_rethrow = new Label(); - mv.visitJumpInsn(Opcodes.IFEQ, L_rethrow); + emitPushArgument(cob, invoker, 1); + cob.swap(); + cob.invokevirtual(CD_Class, "isInstance", MTD_boolean_Object); + Label L_rethrow = cob.newLabel(); + cob.ifeq(L_rethrow); // Invoke catcher // load catcher - emitPushArgument(invoker, 2); - mv.visitInsn(Opcodes.SWAP); - emitPushArguments(args, 1); // skip 1st argument: method handle + emitPushArgument(cob, invoker, 2); + cob.swap(); + emitPushArguments(cob, args, 1); // skip 1st argument: method handle MethodType catcherType = type.insertParameterTypes(0, Throwable.class); - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", catcherType.basicType().toMethodDescriptorString(), false); - mv.visitJumpInsn(Opcodes.GOTO, L_done); + cob.invokevirtual(CD_MethodHandle, "invokeBasic", methodDesc(catcherType.basicType())); + cob.goto_w(L_done); - mv.visitLabel(L_rethrow); - mv.visitInsn(Opcodes.ATHROW); + cob.labelBinding(L_rethrow); + cob.athrow(); - mv.visitLabel(L_done); + cob.labelBinding(L_done); return result; } @@ -1264,15 +1074,15 @@ private Name emitGuardWithCatch(int pos) { * } * * = depends on whether the return type takes up 2 stack slots. */ - private Name emitTryFinally(int pos) { + private Name emitTryFinally(CodeBuilder cob, int pos) { Name args = lambdaForm.names[pos]; Name invoker = lambdaForm.names[pos+1]; Name result = lambdaForm.names[pos+2]; - Label lFrom = new Label(); - Label lTo = new Label(); - Label lCatch = new Label(); - Label lDone = new Label(); + Label lFrom = cob.newLabel(); + Label lTo = cob.newLabel(); + Label lCatch = cob.newLabel(); + Label lDone = cob.newLabel(); Class returnType = result.function.resolvedHandle().type().returnType(); BasicType basicReturnType = BasicType.basicType(returnType); @@ -1285,68 +1095,64 @@ private Name emitTryFinally(int pos) { if (isNonVoid) { cleanupType = cleanupType.insertParameterTypes(1, returnType); } - String cleanupDesc = cleanupType.basicType().toMethodDescriptorString(); + MethodTypeDesc cleanupDesc = methodDesc(cleanupType.basicType()); // exception handler table - mv.visitTryCatchBlock(lFrom, lTo, lCatch, "java/lang/Throwable"); + cob.exceptionCatch(lFrom, lTo, lCatch, CD_Throwable); // TRY: - mv.visitLabel(lFrom); - emitPushArgument(invoker, 0); // load target - emitPushArguments(args, 1); // load args (skip 0: method handle) - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", type.basicType().toMethodDescriptorString(), false); - mv.visitLabel(lTo); + cob.labelBinding(lFrom); + emitPushArgument(cob, invoker, 0); // load target + emitPushArguments(cob, args, 1); // load args (skip 0: method handle) + cob.invokevirtual(CD_MethodHandle, "invokeBasic", methodDesc(type.basicType())); + cob.labelBinding(lTo); // FINALLY_NORMAL: int index = extendLocalsMap(new Class[]{ returnType }); if (isNonVoid) { - emitStoreInsn(basicReturnType, index); + emitStoreInsn(cob, basicReturnType.basicTypeKind(), index); } - emitPushArgument(invoker, 1); // load cleanup - mv.visitInsn(Opcodes.ACONST_NULL); + emitPushArgument(cob, invoker, 1); // load cleanup + cob.loadConstant(null); if (isNonVoid) { - emitLoadInsn(basicReturnType, index); + emitLoadInsn(cob, basicReturnType.basicTypeKind(), index); } - emitPushArguments(args, 1); // load args (skip 0: method handle) - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", cleanupDesc, false); - mv.visitJumpInsn(Opcodes.GOTO, lDone); + emitPushArguments(cob, args, 1); // load args (skip 0: method handle) + cob.invokevirtual(CD_MethodHandle, "invokeBasic", cleanupDesc); + cob.goto_w(lDone); // CATCH: - mv.visitLabel(lCatch); - mv.visitInsn(Opcodes.DUP); + cob.labelBinding(lCatch); + cob.dup(); // FINALLY_EXCEPTIONAL: - emitPushArgument(invoker, 1); // load cleanup - mv.visitInsn(Opcodes.SWAP); + emitPushArgument(cob, invoker, 1); // load cleanup + cob.swap(); if (isNonVoid) { - emitZero(BasicType.basicType(returnType)); // load default for result + emitZero(cob, BasicType.basicType(returnType)); // load default for result } - emitPushArguments(args, 1); // load args (skip 0: method handle) - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", cleanupDesc, false); + emitPushArguments(cob, args, 1); // load args (skip 0: method handle) + cob.invokevirtual(CD_MethodHandle, "invokeBasic", cleanupDesc); if (isNonVoid) { - emitPopInsn(basicReturnType); + emitPopInsn(cob, basicReturnType); } - mv.visitInsn(Opcodes.ATHROW); + cob.athrow(); // DONE: - mv.visitLabel(lDone); + cob.labelBinding(lDone); return result; } - private void emitPopInsn(BasicType type) { - mv.visitInsn(popInsnOpcode(type)); - } - - private static int popInsnOpcode(BasicType type) { - return switch (type) { - case I_TYPE, F_TYPE, L_TYPE -> Opcodes.POP; - case J_TYPE, D_TYPE -> Opcodes.POP2; + private void emitPopInsn(CodeBuilder cob, BasicType type) { + switch (type) { + case I_TYPE, F_TYPE, L_TYPE -> cob.pop(); + case J_TYPE, D_TYPE -> cob.pop2(); default -> throw new InternalError("unknown type: " + type); - }; + } } - private Name emitTableSwitch(int pos, int numCases) { + private Name emitTableSwitch(CodeBuilder cob, int pos, int numCases) { Name args = lambdaForm.names[pos]; Name invoker = lambdaForm.names[pos + 1]; Name result = lambdaForm.names[pos + 2]; @@ -1355,45 +1161,44 @@ private Name emitTableSwitch(int pos, int numCases) { MethodType caseType = args.function.resolvedHandle().type() .dropParameterTypes(0, 1) // drop collector .changeReturnType(returnType); - String caseDescriptor = caseType.basicType().toMethodDescriptorString(); + MethodTypeDesc caseDescriptor = methodDesc(caseType.basicType()); - emitPushArgument(invoker, 2); // push cases - mv.visitFieldInsn(Opcodes.GETFIELD, "java/lang/invoke/MethodHandleImpl$CasesHolder", "cases", - "[Ljava/lang/invoke/MethodHandle;"); + emitPushArgument(cob, invoker, 2); // push cases + cob.getfield(CD_CasesHolder, "cases", CD_MethodHandle_array); int casesLocal = extendLocalsMap(new Class[] { MethodHandle[].class }); - emitStoreInsn(L_TYPE, casesLocal); + emitStoreInsn(cob, TypeKind.ReferenceType, casesLocal); - Label endLabel = new Label(); - Label defaultLabel = new Label(); - Label[] caseLabels = new Label[numCases]; - for (int i = 0; i < caseLabels.length; i++) { - caseLabels[i] = new Label(); + Label endLabel = cob.newLabel(); + Label defaultLabel = cob.newLabel(); + List cases = new ArrayList<>(numCases); + for (int i = 0; i < numCases; i++) { + cases.add(SwitchCase.of(i, cob.newLabel())); } - emitPushArgument(invoker, 0); // push switch input - mv.visitTableSwitchInsn(0, numCases - 1, defaultLabel, caseLabels); + emitPushArgument(cob, invoker, 0); // push switch input + cob.tableswitch(0, numCases - 1, defaultLabel, cases); - mv.visitLabel(defaultLabel); - emitPushArgument(invoker, 1); // push default handle - emitPushArguments(args, 1); // again, skip collector - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", caseDescriptor, false); - mv.visitJumpInsn(Opcodes.GOTO, endLabel); + cob.labelBinding(defaultLabel); + emitPushArgument(cob, invoker, 1); // push default handle + emitPushArguments(cob, args, 1); // again, skip collector + cob.invokevirtual(CD_MethodHandle, "invokeBasic", caseDescriptor); + cob.goto_(endLabel); for (int i = 0; i < numCases; i++) { - mv.visitLabel(caseLabels[i]); + cob.labelBinding(cases.get(i).target()); // Load the particular case: - emitLoadInsn(L_TYPE, casesLocal); - emitIconstInsn(i); - mv.visitInsn(Opcodes.AALOAD); + emitLoadInsn(cob, TypeKind.ReferenceType, casesLocal); + cob.loadConstant(i); + cob.aaload(); // invoke it: - emitPushArguments(args, 1); // again, skip collector - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", caseDescriptor, false); + emitPushArguments(cob, args, 1); // again, skip collector + cob.invokevirtual(CD_MethodHandle, "invokeBasic", caseDescriptor); - mv.visitJumpInsn(Opcodes.GOTO, endLabel); + cob.goto_(endLabel); } - mv.visitLabel(endLabel); + cob.labelBinding(endLabel); return result; } @@ -1480,7 +1285,7 @@ private Name emitTableSwitch(int pos, int numCases) { * GOTO DONE // jump beyond end of clauses to return from loop * } */ - private Name emitLoop(int pos) { + private Name emitLoop(CodeBuilder cob, int pos) { Name args = lambdaForm.names[pos]; Name invoker = lambdaForm.names[pos+1]; Name result = lambdaForm.names[pos+2]; @@ -1488,8 +1293,9 @@ private Name emitLoop(int pos) { // extract clause and loop-local state types // find the type info in the loop invocation BasicType[] loopClauseTypes = (BasicType[]) invoker.arguments[0]; - Class[] loopLocalStateTypes = Stream.of(loopClauseTypes). - filter(bt -> bt != BasicType.V_TYPE).map(BasicType::basicTypeClass).toArray(Class[]::new); + Class[] loopLocalStateTypes = Stream.of(loopClauseTypes) + .filter(bt -> bt != BasicType.V_TYPE) + .map(BasicType::basicTypeClass).toArray(Class[]::new); Class[] localTypes = new Class[loopLocalStateTypes.length + 1]; localTypes[0] = MethodHandleImpl.LoopClauses.class; System.arraycopy(loopLocalStateTypes, 0, localTypes, 1, loopLocalStateTypes.length); @@ -1513,61 +1319,61 @@ private Name emitLoop(int pos) { final int preds = 3; final int finis = 4; - Label lLoop = new Label(); - Label lDone = new Label(); + Label lLoop = cob.newLabel(); + Label lDone = cob.newLabel(); Label lNext; // PREINIT: - emitPushArgument(MethodHandleImpl.LoopClauses.class, invoker.arguments[1]); - mv.visitFieldInsn(Opcodes.GETFIELD, LOOP_CLAUSES, "clauses", MHARY2); - emitAstoreInsn(clauseDataIndex); + emitPushArgument(cob, MethodHandleImpl.LoopClauses.class, invoker.arguments[1]); + cob.getfield(CD_LoopClauses, "clauses", CD_MethodHandle_array2); + emitStoreInsn(cob, TypeKind.ReferenceType, clauseDataIndex); // INIT: for (int c = 0, state = 0; c < nClauses; ++c) { MethodType cInitType = loopType.changeReturnType(loopClauseTypes[c].basicTypeClass()); - emitLoopHandleInvoke(invoker, inits, c, args, false, cInitType, loopLocalStateTypes, clauseDataIndex, + emitLoopHandleInvoke(cob, invoker, inits, c, args, false, cInitType, loopLocalStateTypes, clauseDataIndex, firstLoopStateIndex); if (cInitType.returnType() != void.class) { - emitStoreInsn(BasicType.basicType(cInitType.returnType()), firstLoopStateIndex + state); + emitStoreInsn(cob, BasicType.basicType(cInitType.returnType()).basicTypeKind(), firstLoopStateIndex + state); ++state; } } // LOOP: - mv.visitLabel(lLoop); + cob.labelBinding(lLoop); for (int c = 0, state = 0; c < nClauses; ++c) { - lNext = new Label(); + lNext = cob.newLabel(); MethodType stepType = loopHandleType.changeReturnType(loopClauseTypes[c].basicTypeClass()); boolean isVoid = stepType.returnType() == void.class; // invoke loop step - emitLoopHandleInvoke(invoker, steps, c, args, true, stepType, loopLocalStateTypes, clauseDataIndex, + emitLoopHandleInvoke(cob, invoker, steps, c, args, true, stepType, loopLocalStateTypes, clauseDataIndex, firstLoopStateIndex); if (!isVoid) { - emitStoreInsn(BasicType.basicType(stepType.returnType()), firstLoopStateIndex + state); + emitStoreInsn(cob, BasicType.basicType(stepType.returnType()).basicTypeKind(), firstLoopStateIndex + state); ++state; } // invoke loop predicate - emitLoopHandleInvoke(invoker, preds, c, args, true, predType, loopLocalStateTypes, clauseDataIndex, + emitLoopHandleInvoke(cob, invoker, preds, c, args, true, predType, loopLocalStateTypes, clauseDataIndex, firstLoopStateIndex); - mv.visitJumpInsn(Opcodes.IFNE, lNext); + cob.ifne(lNext); // invoke fini - emitLoopHandleInvoke(invoker, finis, c, args, true, finiType, loopLocalStateTypes, clauseDataIndex, + emitLoopHandleInvoke(cob, invoker, finis, c, args, true, finiType, loopLocalStateTypes, clauseDataIndex, firstLoopStateIndex); - mv.visitJumpInsn(Opcodes.GOTO, lDone); + cob.goto_w(lDone); // this is the beginning of the next loop clause - mv.visitLabel(lNext); + cob.labelBinding(lNext); } - mv.visitJumpInsn(Opcodes.GOTO, lLoop); + cob.goto_w(lLoop); // DONE: - mv.visitLabel(lDone); + cob.labelBinding(lDone); return result; } @@ -1588,69 +1394,67 @@ private int extendLocalsMap(Class[] types) { return firstSlot; } - private void emitLoopHandleInvoke(Name holder, int handles, int clause, Name args, boolean pushLocalState, + private void emitLoopHandleInvoke(CodeBuilder cob, Name holder, int handles, int clause, Name args, boolean pushLocalState, MethodType type, Class[] loopLocalStateTypes, int clauseDataSlot, int firstLoopStateSlot) { // load handle for clause - emitPushClauseArray(clauseDataSlot, handles); - emitIconstInsn(clause); - mv.visitInsn(Opcodes.AALOAD); + emitPushClauseArray(cob, clauseDataSlot, handles); + cob.loadConstant(clause); + cob.aaload(); // load loop state (preceding the other arguments) if (pushLocalState) { for (int s = 0; s < loopLocalStateTypes.length; ++s) { - emitLoadInsn(BasicType.basicType(loopLocalStateTypes[s]), firstLoopStateSlot + s); + emitLoadInsn(cob, BasicType.basicType(loopLocalStateTypes[s]).basicTypeKind(), firstLoopStateSlot + s); } } // load loop args (skip 0: method handle) - emitPushArguments(args, 1); - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", type.toMethodDescriptorString(), false); + emitPushArguments(cob, args, 1); + cob.invokevirtual(CD_MethodHandle, "invokeBasic", methodDesc(type)); } - private void emitPushClauseArray(int clauseDataSlot, int which) { - emitAloadInsn(clauseDataSlot); - emitIconstInsn(which - 1); - mv.visitInsn(Opcodes.AALOAD); + private void emitPushClauseArray(CodeBuilder cob, int clauseDataSlot, int which) { + emitLoadInsn(cob, TypeKind.ReferenceType, clauseDataSlot); + cob.loadConstant(which - 1); + cob.aaload(); } - private void emitZero(BasicType type) { - mv.visitInsn(switch (type) { - case I_TYPE -> Opcodes.ICONST_0; - case J_TYPE -> Opcodes.LCONST_0; - case F_TYPE -> Opcodes.FCONST_0; - case D_TYPE -> Opcodes.DCONST_0; - case L_TYPE -> Opcodes.ACONST_NULL; + private void emitZero(CodeBuilder cob, BasicType type) { + switch (type) { + case I_TYPE -> cob.iconst_0(); + case J_TYPE -> cob.lconst_0(); + case F_TYPE -> cob.fconst_0(); + case D_TYPE -> cob.dconst_0(); + case L_TYPE -> cob.aconst_null(); default -> throw new InternalError("unknown type: " + type); - }); + }; } - private void emitPushArguments(Name args, int start) { + private void emitPushArguments(CodeBuilder cob, Name args, int start) { MethodType type = args.function.methodType(); for (int i = start; i < args.arguments.length; i++) { - emitPushArgument(type.parameterType(i), args.arguments[i]); + emitPushArgument(cob, type.parameterType(i), args.arguments[i]); } } - private void emitPushArgument(Name name, int paramIndex) { + private void emitPushArgument(CodeBuilder cob, Name name, int paramIndex) { Object arg = name.arguments[paramIndex]; Class ptype = name.function.methodType().parameterType(paramIndex); - emitPushArgument(ptype, arg); + emitPushArgument(cob, ptype, arg); } - private void emitPushArgument(Class ptype, Object arg) { + private void emitPushArgument(CodeBuilder cob, Class ptype, Object arg) { BasicType bptype = basicType(ptype); if (arg instanceof Name n) { - emitLoadInsn(n.type, n.index()); - emitImplicitConversion(n.type, ptype, n); - } else if (arg == null && bptype == L_TYPE) { - mv.visitInsn(Opcodes.ACONST_NULL); - } else if (arg instanceof String && bptype == L_TYPE) { - mv.visitLdcInsn(arg); + emitLoadInsn(cob, n.type.basicTypeKind(), n.index()); + emitImplicitConversion(cob, n.type, ptype, n); + } else if ((arg == null || arg instanceof String) && bptype == L_TYPE) { + cob.loadConstant((ConstantDesc)arg); } else { if (Wrapper.isWrapperType(arg.getClass()) && bptype != L_TYPE) { - emitConst(arg); + cob.loadConstant((ConstantDesc)arg); } else { - mv.visitFieldInsn(Opcodes.GETSTATIC, className, classData(arg), "Ljava/lang/Object;"); - emitImplicitConversion(L_TYPE, ptype, arg); + cob.getstatic(classDesc, classData(arg), CD_Object); + emitImplicitConversion(cob, L_TYPE, ptype, arg); } } } @@ -1658,44 +1462,44 @@ private void emitPushArgument(Class ptype, Object arg) { /** * Store the name to its local, if necessary. */ - private void emitStoreResult(Name name) { + private void emitStoreResult(CodeBuilder cob, Name name) { if (name != null && name.type != V_TYPE) { // non-void: actually assign - emitStoreInsn(name.type, name.index()); + emitStoreInsn(cob, name.type.basicTypeKind(), name.index()); } } /** * Emits a return statement from a LF invoker. If required, the result type is cast to the correct return type. */ - private void emitReturn(Name onStack) { + private void emitReturn(CodeBuilder cob, Name onStack) { // return statement Class rclass = invokerType.returnType(); BasicType rtype = lambdaForm.returnType(); assert(rtype == basicType(rclass)); // must agree if (rtype == V_TYPE) { // void - mv.visitInsn(Opcodes.RETURN); + cob.return_(); // it doesn't matter what rclass is; the JVM will discard any value } else { LambdaForm.Name rn = lambdaForm.names[lambdaForm.result]; // put return value on the stack if it is not already there if (rn != onStack) { - emitLoadInsn(rtype, lambdaForm.result); + emitLoadInsn(cob, rtype.basicTypeKind(), lambdaForm.result); } - emitImplicitConversion(rtype, rclass, rn); + emitImplicitConversion(cob, rtype, rclass, rn); // generate actual return statement - emitReturnInsn(rtype); + cob.return_(rtype.basicTypeKind()); } } /** * Emit a type conversion bytecode casting from "from" to "to". */ - private void emitPrimCast(Wrapper from, Wrapper to) { + private void emitPrimCast(CodeBuilder cob, TypeKind from, TypeKind to) { // Here's how. // - indicates forbidden // <-> indicates implicit @@ -1708,80 +1512,10 @@ private void emitPrimCast(Wrapper from, Wrapper to) { // long - l2i,i2b l2i,i2s l2i,i2c l2i <-> l2f l2d // float - f2i,i2b f2i,i2s f2i,i2c f2i f2l <-> f2d // double - d2i,i2b d2i,i2s d2i,i2c d2i d2l d2f <-> - if (from == to) { - // no cast required, should be dead code anyway - return; - } - if (from.isSubwordOrInt()) { - // cast from {byte,short,char,int} to anything - emitI2X(to); - } else { - // cast from {long,float,double} to anything - if (to.isSubwordOrInt()) { - // cast to {byte,short,char,int} - emitX2I(from); - if (to.bitWidth() < 32) { - // targets other than int require another conversion - emitI2X(to); - } - } else { - // cast to {long,float,double} - this is verbose - boolean error = false; - switch (from) { - case LONG -> { - switch (to) { - case FLOAT -> mv.visitInsn(Opcodes.L2F); - case DOUBLE -> mv.visitInsn(Opcodes.L2D); - default -> error = true; - } - } - case FLOAT -> { - switch (to) { - case LONG -> mv.visitInsn(Opcodes.F2L); - case DOUBLE -> mv.visitInsn(Opcodes.F2D); - default -> error = true; - } - } - case DOUBLE -> { - switch (to) { - case LONG -> mv.visitInsn(Opcodes.D2L); - case FLOAT -> mv.visitInsn(Opcodes.D2F); - default -> error = true; - } - } - default -> error = true; - } - if (error) { - throw new IllegalStateException("unhandled prim cast: " + from + "2" + to); - } - } - } - } - - private void emitI2X(Wrapper type) { - switch (type) { - case BYTE: mv.visitInsn(Opcodes.I2B); break; - case SHORT: mv.visitInsn(Opcodes.I2S); break; - case CHAR: mv.visitInsn(Opcodes.I2C); break; - case INT: /* naught */ break; - case LONG: mv.visitInsn(Opcodes.I2L); break; - case FLOAT: mv.visitInsn(Opcodes.I2F); break; - case DOUBLE: mv.visitInsn(Opcodes.I2D); break; - case BOOLEAN: - // For compatibility with ValueConversions and explicitCastArguments: - mv.visitInsn(Opcodes.ICONST_1); - mv.visitInsn(Opcodes.IAND); - break; - default: throw new InternalError("unknown type: " + type); - } - } - - private void emitX2I(Wrapper type) { - switch (type) { - case LONG -> mv.visitInsn(Opcodes.L2I); - case FLOAT -> mv.visitInsn(Opcodes.F2I); - case DOUBLE -> mv.visitInsn(Opcodes.D2I); - default -> throw new InternalError("unknown type: " + type); + if (from != to && from != TypeKind.BooleanType) try { + cob.conversion(from, to); + } catch (IllegalArgumentException e) { + throw new IllegalStateException("unhandled prim cast: " + from + "2" + to); } } @@ -1798,51 +1532,61 @@ static MemberName generateLambdaFormInterpreterEntryPoint(MethodType mt) { } private byte[] generateLambdaFormInterpreterEntryPointBytes() { - classFilePrologue(); - methodPrologue(); - - // Suppress this method in backtraces displayed to the user. - mv.visitAnnotation(HIDDEN_SIG, true); - - // Don't inline the interpreter entry. - mv.visitAnnotation(DONTINLINE_SIG, true); - - // create parameter array - emitIconstInsn(invokerType.parameterCount()); - mv.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/Object"); - - // fill parameter array - for (int i = 0; i < invokerType.parameterCount(); i++) { - Class ptype = invokerType.parameterType(i); - mv.visitInsn(Opcodes.DUP); - emitIconstInsn(i); - emitLoadInsn(basicType(ptype), i); - // box if primitive type - if (ptype.isPrimitive()) { - emitBoxing(Wrapper.forPrimitiveType(ptype)); + final byte[] classFile = classFileSetup(new Consumer() { + @Override + public void accept(ClassBuilder clb) { + methodSetup(clb, new Consumer() { + @Override + public void accept(MethodBuilder mb) { + + mb.with(RuntimeVisibleAnnotationsAttribute.of(List.of( + HIDDEN, // Suppress this method in backtraces displayed to the user. + DONTINLINE // Don't inline the interpreter entry. + ))); + + mb.withCode(new Consumer() { + @Override + public void accept(CodeBuilder cob) { + // create parameter array + cob.loadConstant(invokerType.parameterCount()); + cob.anewarray(CD_Object); + + // fill parameter array + for (int i = 0; i < invokerType.parameterCount(); i++) { + Class ptype = invokerType.parameterType(i); + cob.dup(); + cob.loadConstant(i); + emitLoadInsn(cob, basicType(ptype).basicTypeKind(), i); + // box if primitive type + if (ptype.isPrimitive()) { + emitBoxing(cob, TypeKind.from(ptype)); + } + cob.aastore(); + } + // invoke + cob.aload(0); + cob.getfield(CD_MethodHandle, "form", CD_LambdaForm); + cob.swap(); // swap form and array; avoid local variable + cob.invokevirtual(CD_LambdaForm, "interpretWithArguments", MethodTypeDescImpl.ofValidated(CD_Object, CD_Object_array)); + + // maybe unbox + Class rtype = invokerType.returnType(); + TypeKind rtypeK = TypeKind.from(rtype); + if (rtype.isPrimitive() && rtype != void.class) { + emitUnboxing(cob, rtypeK); + } + + // return statement + cob.return_(rtypeK); + } + }); + } + }); + clinit(clb, classDesc, classData); + bogusMethod(clb, invokerType); } - mv.visitInsn(Opcodes.AASTORE); - } - // invoke - emitAloadInsn(0); - mv.visitFieldInsn(Opcodes.GETFIELD, MH, "form", "Ljava/lang/invoke/LambdaForm;"); - mv.visitInsn(Opcodes.SWAP); // swap form and array; avoid local variable - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, LF, "interpretWithArguments", "([Ljava/lang/Object;)Ljava/lang/Object;", false); - - // maybe unbox - Class rtype = invokerType.returnType(); - if (rtype.isPrimitive() && rtype != void.class) { - emitUnboxing(Wrapper.forPrimitiveType(rtype)); - } - - // return statement - emitReturnInsn(basicType(rtype)); - - methodEpilogue(); - clinit(cw, className, classData); - bogusMethod(invokerType); - - return cw.toByteArray(); + }); + return classFile; } /** @@ -1857,73 +1601,101 @@ static MemberName generateNamedFunctionInvoker(MethodTypeForm typeForm) { private byte[] generateNamedFunctionInvokerImpl(MethodTypeForm typeForm) { MethodType dstType = typeForm.erasedType(); - classFilePrologue(); - methodPrologue(); - - // Suppress this method in backtraces displayed to the user. - mv.visitAnnotation(HIDDEN_SIG, true); - - // Force inlining of this invoker method. - mv.visitAnnotation(FORCEINLINE_SIG, true); - - // Load receiver - emitAloadInsn(0); - - // Load arguments from array - for (int i = 0; i < dstType.parameterCount(); i++) { - emitAloadInsn(1); - emitIconstInsn(i); - mv.visitInsn(Opcodes.AALOAD); - - // Maybe unbox - Class dptype = dstType.parameterType(i); - if (dptype.isPrimitive()) { - Wrapper dstWrapper = Wrapper.forBasicType(dptype); - Wrapper srcWrapper = dstWrapper.isSubwordOrInt() ? Wrapper.INT : dstWrapper; // narrow subword from int - emitUnboxing(srcWrapper); - emitPrimCast(srcWrapper, dstWrapper); + final byte[] classFile = classFileSetup(new Consumer() { + @Override + public void accept(ClassBuilder clb) { + methodSetup(clb, new Consumer() { + @Override + public void accept(MethodBuilder mb) { + + mb.with(RuntimeVisibleAnnotationsAttribute.of(List.of( + HIDDEN, // Suppress this method in backtraces displayed to the user. + FORCEINLINE // Force inlining of this invoker method. + ))); + + mb.withCode(new Consumer() { + @Override + public void accept(CodeBuilder cob) { + // Load receiver + cob.aload(0); + + // Load arguments from array + for (int i = 0; i < dstType.parameterCount(); i++) { + cob.aload(1); + cob.loadConstant(i); + cob.aaload(); + + // Maybe unbox + Class dptype = dstType.parameterType(i); + if (dptype.isPrimitive()) { + TypeKind dstTK = TypeKind.from(dptype); + TypeKind srcTK = dstTK.asLoadable(); + emitUnboxing(cob, srcTK); + emitPrimCast(cob, srcTK, dstTK); + } + } + + // Invoke + MethodTypeDesc targetDesc = methodDesc(dstType.basicType()); + cob.invokevirtual(CD_MethodHandle, "invokeBasic", targetDesc); + + // Box primitive types + Class rtype = dstType.returnType(); + if (rtype != void.class && rtype.isPrimitive()) { + TypeKind srcTK = TypeKind.from(rtype); + TypeKind dstTK = srcTK.asLoadable(); + // boolean casts not allowed + emitPrimCast(cob, srcTK, dstTK); + emitBoxing(cob, dstTK); + } + + // If the return type is void we return a null reference. + if (rtype == void.class) { + cob.aconst_null(); + } + cob.areturn(); // NOTE: NamedFunction invokers always return a reference value. + } + }); + } + }); + clinit(clb, classDesc, classData); + bogusMethod(clb, dstType); } - } - - // Invoke - String targetDesc = dstType.basicType().toMethodDescriptorString(); - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, MH, "invokeBasic", targetDesc, false); - - // Box primitive types - Class rtype = dstType.returnType(); - if (rtype != void.class && rtype.isPrimitive()) { - Wrapper srcWrapper = Wrapper.forBasicType(rtype); - Wrapper dstWrapper = srcWrapper.isSubwordOrInt() ? Wrapper.INT : srcWrapper; // widen subword to int - // boolean casts not allowed - emitPrimCast(srcWrapper, dstWrapper); - emitBoxing(dstWrapper); - } - - // If the return type is void we return a null reference. - if (rtype == void.class) { - mv.visitInsn(Opcodes.ACONST_NULL); - } - emitReturnInsn(L_TYPE); // NOTE: NamedFunction invokers always return a reference value. - - methodEpilogue(); - clinit(cw, className, classData); - bogusMethod(dstType); - - return cw.toByteArray(); + }); + return classFile; } /** * Emit a bogus method that just loads some string constants. This is to get the constants into the constant pool * for debugging purposes. */ - private void bogusMethod(Object os) { + private void bogusMethod(ClassBuilder clb, Object os) { if (dumper().isEnabled()) { - mv = cw.visitMethod(Opcodes.ACC_STATIC, "dummy", "()V", null, null); - mv.visitLdcInsn(os.toString()); - mv.visitInsn(Opcodes.POP); - mv.visitInsn(Opcodes.RETURN); - mv.visitMaxs(0, 0); - mv.visitEnd(); + clb.withMethod("dummy", MTD_void, ACC_STATIC, new MethodBody(new Consumer() { + @Override + public void accept(CodeBuilder cob) { + cob.loadConstant(os.toString()); + cob.pop(); + cob.return_(); + } + })); + } + } + + static ClassDesc classDesc(Class cls) { +// assert(VerifyAccess.isTypeVisible(cls, Object.class)) : cls.getName(); + return cls.isPrimitive() ? Wrapper.forPrimitiveType(cls).basicClassDescriptor() + : cls == MethodHandle.class ? CD_MethodHandle + : cls == DirectMethodHandle.class ? CD_DirectMethodHandle + : cls == Object.class ? CD_Object + : ReferenceClassDescImpl.ofValidated(cls.descriptorString()); + } + + static MethodTypeDesc methodDesc(MethodType mt) { + var params = new ClassDesc[mt.parameterCount()]; + for (int i = 0; i < params.length; i++) { + params[i] = classDesc(mt.parameterType(i)); } + return MethodTypeDescImpl.ofValidated(classDesc(mt.returnType()), params); } } diff --git a/src/java.base/share/classes/java/lang/invoke/LambdaForm.java b/src/java.base/share/classes/java/lang/invoke/LambdaForm.java index 823f527b6c4..09ea5df4a23 100644 --- a/src/java.base/share/classes/java/lang/invoke/LambdaForm.java +++ b/src/java.base/share/classes/java/lang/invoke/LambdaForm.java @@ -25,6 +25,7 @@ package java.lang.invoke; +import java.lang.classfile.TypeKind; import jdk.internal.perf.PerfCounter; import jdk.internal.vm.annotation.DontInline; import jdk.internal.vm.annotation.Hidden; @@ -137,12 +138,12 @@ class LambdaForm { public static final int VOID_RESULT = -1, LAST_RESULT = -2; enum BasicType { - L_TYPE('L', Object.class, Wrapper.OBJECT), // all reference types - I_TYPE('I', int.class, Wrapper.INT), - J_TYPE('J', long.class, Wrapper.LONG), - F_TYPE('F', float.class, Wrapper.FLOAT), - D_TYPE('D', double.class, Wrapper.DOUBLE), // all primitive types - V_TYPE('V', void.class, Wrapper.VOID); // not valid in all contexts + L_TYPE('L', Object.class, Wrapper.OBJECT, TypeKind.ReferenceType), // all reference types + I_TYPE('I', int.class, Wrapper.INT, TypeKind.IntType), + J_TYPE('J', long.class, Wrapper.LONG, TypeKind.LongType), + F_TYPE('F', float.class, Wrapper.FLOAT, TypeKind.FloatType), + D_TYPE('D', double.class, Wrapper.DOUBLE, TypeKind.DoubleType), // all primitive types + V_TYPE('V', void.class, Wrapper.VOID, TypeKind.VoidType); // not valid in all contexts static final @Stable BasicType[] ALL_TYPES = BasicType.values(); static final @Stable BasicType[] ARG_TYPES = Arrays.copyOf(ALL_TYPES, ALL_TYPES.length-1); @@ -153,11 +154,13 @@ enum BasicType { final char btChar; final Class btClass; final Wrapper btWrapper; + final TypeKind btKind; - private BasicType(char btChar, Class btClass, Wrapper wrapper) { + private BasicType(char btChar, Class btClass, Wrapper wrapper, TypeKind typeKind) { this.btChar = btChar; this.btClass = btClass; this.btWrapper = wrapper; + this.btKind = typeKind; } char basicTypeChar() { @@ -169,6 +172,9 @@ Class basicTypeClass() { Wrapper basicTypeWrapper() { return btWrapper; } + TypeKind basicTypeKind() { + return btKind; + } int basicTypeSlots() { return btWrapper.stackSlots(); } diff --git a/src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java b/src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java index e79c8463d30..57446c9b2fd 100644 --- a/src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java +++ b/src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java @@ -27,8 +27,9 @@ import jdk.internal.access.JavaLangInvokeAccess; import jdk.internal.access.SharedSecrets; +import jdk.internal.constant.MethodTypeDescImpl; +import jdk.internal.constant.ReferenceClassDescImpl; import jdk.internal.foreign.abi.NativeEntryPoint; -import jdk.internal.org.objectweb.asm.ClassWriter; import jdk.internal.reflect.CallerSensitive; import jdk.internal.reflect.Reflection; import jdk.internal.vm.annotation.ForceInline; @@ -39,6 +40,8 @@ import sun.invoke.util.VerifyType; import sun.invoke.util.Wrapper; +import java.lang.classfile.ClassFile; +import java.lang.constant.ClassDesc; import java.lang.invoke.MethodHandles.Lookup; import java.lang.reflect.Array; import java.lang.reflect.Constructor; @@ -56,13 +59,14 @@ import java.util.function.Function; import java.util.stream.Stream; +import static java.lang.classfile.ClassFile.*; +import static java.lang.constant.ConstantDescs.*; import static java.lang.invoke.LambdaForm.*; import static java.lang.invoke.MethodHandleNatives.Constants.MN_CALLER_SENSITIVE; import static java.lang.invoke.MethodHandleNatives.Constants.MN_HIDDEN_MEMBER; import static java.lang.invoke.MethodHandleStatics.*; import static java.lang.invoke.MethodHandles.Lookup.IMPL_LOOKUP; import static java.lang.invoke.MethodHandles.Lookup.ClassOption.NESTMATE; -import static jdk.internal.org.objectweb.asm.Opcodes.*; /** * Trusted implementation code for MethodHandle. @@ -1035,8 +1039,10 @@ static MethodHandle bindCaller(MethodHandle mh, Class hostClass) { // Put the whole mess into its own nested class. // That way we can lazily load the code and set up the constants. private static class BindCaller { - private static MethodType INVOKER_MT = MethodType.methodType(Object.class, MethodHandle.class, Object[].class); - private static MethodType REFLECT_INVOKER_MT = MethodType.methodType(Object.class, MethodHandle.class, Object.class, Object[].class); + + private static final ClassDesc CD_Object_array = ReferenceClassDescImpl.ofValidated("[Ljava/lang/Object;"); + private static final MethodType INVOKER_MT = MethodType.methodType(Object.class, MethodHandle.class, Object[].class); + private static final MethodType REFLECT_INVOKER_MT = MethodType.methodType(Object.class, MethodHandle.class, Object.class, Object[].class); static MethodHandle bindCaller(MethodHandle mh, Class hostClass) { // Code in the boot layer should now be careful while creating method handles or @@ -1250,8 +1256,6 @@ private static boolean checkCallerClass(Class expected) { /** Produces byte code for a class that is used as an injected invoker. */ private static byte[] generateInvokerTemplate() { - ClassWriter cw = new ClassWriter(0); - // private static class InjectedInvoker { // /* this is used to wrap DMH(s) of caller-sensitive methods */ // @Hidden @@ -1265,39 +1269,25 @@ private static byte[] generateInvokerTemplate() { // } // } // } - cw.visit(CLASSFILE_VERSION, ACC_PRIVATE | ACC_SUPER, "InjectedInvoker", null, "java/lang/Object", null); - { - var mv = cw.visitMethod(ACC_STATIC, "invoke_V", - "(Ljava/lang/invoke/MethodHandle;[Ljava/lang/Object;)Ljava/lang/Object;", - null, null); - - mv.visitCode(); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/invoke/MethodHandle", "invokeExact", - "([Ljava/lang/Object;)Ljava/lang/Object;", false); - mv.visitInsn(ARETURN); - mv.visitMaxs(2, 2); - mv.visitEnd(); - - cw.visitEnd(); - } - - { - var mv = cw.visitMethod(ACC_STATIC, "reflect_invoke_V", - "(Ljava/lang/invoke/MethodHandle;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;", - null, null); - mv.visitCode(); - mv.visitVarInsn(ALOAD, 0); - mv.visitVarInsn(ALOAD, 1); - mv.visitVarInsn(ALOAD, 2); - mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/invoke/MethodHandle", "invokeExact", - "(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;", false); - mv.visitInsn(ARETURN); - mv.visitMaxs(3, 3); - mv.visitEnd(); - } - return cw.toByteArray(); + return ClassFile.of().build(ReferenceClassDescImpl.ofValidated("LInjectedInvoker;"), clb -> clb + .withFlags(ACC_PRIVATE | ACC_SUPER) + .withMethodBody( + "invoke_V", + MethodTypeDescImpl.ofValidated(CD_Object, CD_MethodHandle, CD_Object_array), + ACC_STATIC, + cob -> cob.aload(0) + .aload(1) + .invokevirtual(CD_MethodHandle, "invokeExact", MethodTypeDescImpl.ofValidated(CD_Object, CD_Object_array)) + .areturn()) + .withMethodBody( + "reflect_invoke_V", + MethodTypeDescImpl.ofValidated(CD_Object, CD_MethodHandle, CD_Object, CD_Object_array), + ACC_STATIC, + cob -> cob.aload(0) + .aload(1) + .aload(2) + .invokevirtual(CD_MethodHandle, "invokeExact", MethodTypeDescImpl.ofValidated(CD_Object, CD_Object, CD_Object_array)) + .areturn())); } } diff --git a/src/java.base/share/classes/java/lang/invoke/MethodHandles.java b/src/java.base/share/classes/java/lang/invoke/MethodHandles.java index 9ac8e42a2f0..0cb77f632b3 100644 --- a/src/java.base/share/classes/java/lang/invoke/MethodHandles.java +++ b/src/java.base/share/classes/java/lang/invoke/MethodHandles.java @@ -28,9 +28,6 @@ import jdk.internal.access.SharedSecrets; import jdk.internal.misc.Unsafe; import jdk.internal.misc.VM; -import jdk.internal.org.objectweb.asm.ClassReader; -import jdk.internal.org.objectweb.asm.Opcodes; -import jdk.internal.org.objectweb.asm.Type; import jdk.internal.reflect.CallerSensitive; import jdk.internal.reflect.CallerSensitiveAdapter; import jdk.internal.reflect.Reflection; @@ -42,8 +39,10 @@ import sun.reflect.misc.ReflectUtil; import sun.security.util.SecurityConstants; +import java.lang.classfile.ClassModel; import java.lang.constant.ConstantDescs; import java.lang.invoke.LambdaForm.BasicType; +import java.lang.invoke.MethodHandleImpl.Intrinsic; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Member; @@ -62,8 +61,8 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Stream; +import static java.lang.classfile.ClassFile.*; import static java.lang.invoke.LambdaForm.BasicType.V_TYPE; -import static java.lang.invoke.MethodHandleImpl.Intrinsic; import static java.lang.invoke.MethodHandleNatives.Constants.*; import static java.lang.invoke.MethodHandleStatics.UNSAFE; import static java.lang.invoke.MethodHandleStatics.newIllegalArgumentException; @@ -2288,27 +2287,16 @@ private static ClassFile readClassFile(byte[] bytes) { String name; int accessFlags; try { - ClassReader reader = new ClassReader(bytes); - // ClassReader does not check if `this_class` is CONSTANT_Class_info - // workaround to read `this_class` using readConst and validate the value - int thisClass = reader.readUnsignedShort(reader.header + 2); - Object constant = reader.readConst(thisClass, new char[reader.getMaxStringLength()]); - if (!(constant instanceof Type type)) { - throw new ClassFormatError("this_class item: #" + thisClass + " not a CONSTANT_Class_info"); - } - if (!type.getDescriptor().startsWith("L")) { - throw new ClassFormatError("this_class item: #" + thisClass + " not a CONSTANT_Class_info"); - } - name = type.getInternalName(); - accessFlags = reader.readUnsignedShort(reader.header); - } catch (RuntimeException e) { - // ASM exceptions are poorly specified + ClassModel cm = java.lang.classfile.ClassFile.of().parse(bytes); + name = cm.thisClass().asInternalName(); + accessFlags = cm.flags().flagsMask(); + } catch (IllegalArgumentException e) { ClassFormatError cfe = new ClassFormatError(); cfe.initCause(e); throw cfe; } // must be a class or interface - if ((accessFlags & Opcodes.ACC_MODULE) != 0) { + if ((accessFlags & ACC_MODULE) != 0) { throw newIllegalArgumentException("Not a class or interface: ACC_MODULE flag is set"); } return new ClassFile(name, accessFlags, bytes); diff --git a/src/java.base/share/classes/java/lang/invoke/MethodType.java b/src/java.base/share/classes/java/lang/invoke/MethodType.java index 29a338261e9..faf8302206e 100644 --- a/src/java.base/share/classes/java/lang/invoke/MethodType.java +++ b/src/java.base/share/classes/java/lang/invoke/MethodType.java @@ -1291,15 +1291,21 @@ static String toFieldDescriptorString(Class cls) { */ @Override public Optional describeConstable() { - try { - return Optional.of(MethodTypeDesc.of(returnType().describeConstable().orElseThrow(), - Stream.of(parameterArray()) - .map(p -> p.describeConstable().orElseThrow()) - .toArray(ClassDesc[]::new))); - } - catch (NoSuchElementException e) { + var retDesc = returnType().describeConstable(); + if (retDesc.isEmpty()) return Optional.empty(); + + if (parameterCount() == 0) + return Optional.of(MethodTypeDesc.of(retDesc.get())); + + var params = new ClassDesc[parameterCount()]; + for (int i = 0; i < params.length; i++) { + var paramDesc = parameterType(i).describeConstable(); + if (paramDesc.isEmpty()) + return Optional.empty(); + params[i] = paramDesc.get(); } + return Optional.of(MethodTypeDesc.of(retDesc.get(), params)); } //--- Serialization. diff --git a/src/java.base/share/classes/java/lang/invoke/TypeConvertingMethodAdapter.java b/src/java.base/share/classes/java/lang/invoke/TypeConvertingMethodAdapter.java index e49094073c3..e35271dc8b4 100644 --- a/src/java.base/share/classes/java/lang/invoke/TypeConvertingMethodAdapter.java +++ b/src/java.base/share/classes/java/lang/invoke/TypeConvertingMethodAdapter.java @@ -25,176 +25,103 @@ package java.lang.invoke; -import jdk.internal.org.objectweb.asm.MethodVisitor; -import jdk.internal.org.objectweb.asm.Opcodes; -import jdk.internal.org.objectweb.asm.Type; -import sun.invoke.util.BytecodeDescriptor; +import java.lang.constant.ClassDesc; +import java.lang.classfile.CodeBuilder; +import java.lang.classfile.TypeKind; +import java.lang.classfile.constantpool.ConstantPoolBuilder; +import java.lang.classfile.constantpool.MethodRefEntry; +import jdk.internal.constant.MethodTypeDescImpl; +import jdk.internal.constant.ReferenceClassDescImpl; import sun.invoke.util.Wrapper; -import static sun.invoke.util.Wrapper.*; -class TypeConvertingMethodAdapter extends MethodVisitor { +import static java.lang.constant.ConstantDescs.*; - TypeConvertingMethodAdapter(MethodVisitor mv) { - super(Opcodes.ASM7, mv); - } - - private static final int NUM_WRAPPERS = Wrapper.COUNT; - - private static final String NAME_OBJECT = "java/lang/Object"; - private static final String WRAPPER_PREFIX = "Ljava/lang/"; - - // Same for all primitives; name of the boxing method - private static final String NAME_BOX_METHOD = "valueOf"; - - // Table of opcodes for widening primitive conversions; NOP = no conversion - private static final int[][] wideningOpcodes = new int[NUM_WRAPPERS][NUM_WRAPPERS]; - - private static final Wrapper[] FROM_WRAPPER_NAME = new Wrapper[16]; - - // Table of wrappers for primitives, indexed by ASM type sorts - private static final Wrapper[] FROM_TYPE_SORT = new Wrapper[12]; - - static { - for (Wrapper w : Wrapper.values()) { - if (w.basicTypeChar() != 'L') { - int wi = hashWrapperName(w.wrapperSimpleName()); - assert (FROM_WRAPPER_NAME[wi] == null); - FROM_WRAPPER_NAME[wi] = w; - } - } - - // wideningOpcodes[][] will be NOP-initialized by default - assert(Opcodes.NOP == 0); +class TypeConvertingMethodAdapter { - initWidening(LONG, Opcodes.I2L, BYTE, SHORT, INT, CHAR); - initWidening(LONG, Opcodes.F2L, FLOAT); - initWidening(FLOAT, Opcodes.I2F, BYTE, SHORT, INT, CHAR); - initWidening(FLOAT, Opcodes.L2F, LONG); - initWidening(DOUBLE, Opcodes.I2D, BYTE, SHORT, INT, CHAR); - initWidening(DOUBLE, Opcodes.F2D, FLOAT); - initWidening(DOUBLE, Opcodes.L2D, LONG); + private static class BoxHolder { + private static final ConstantPoolBuilder CP = ConstantPoolBuilder.of(); - FROM_TYPE_SORT[Type.BYTE] = Wrapper.BYTE; - FROM_TYPE_SORT[Type.SHORT] = Wrapper.SHORT; - FROM_TYPE_SORT[Type.INT] = Wrapper.INT; - FROM_TYPE_SORT[Type.LONG] = Wrapper.LONG; - FROM_TYPE_SORT[Type.CHAR] = Wrapper.CHAR; - FROM_TYPE_SORT[Type.FLOAT] = Wrapper.FLOAT; - FROM_TYPE_SORT[Type.DOUBLE] = Wrapper.DOUBLE; - FROM_TYPE_SORT[Type.BOOLEAN] = Wrapper.BOOLEAN; - } - - private static void initWidening(Wrapper to, int opcode, Wrapper... from) { - for (Wrapper f : from) { - wideningOpcodes[f.ordinal()][to.ordinal()] = opcode; + private static MethodRefEntry box(ClassDesc primitive, ClassDesc target) { + return CP.methodRefEntry(target, "valueOf", MethodTypeDescImpl.ofValidated(target, primitive)); } - } - /** - * Class name to Wrapper hash, derived from Wrapper.hashWrap() - * @param xn - * @return The hash code 0-15 - */ - private static int hashWrapperName(String xn) { - if (xn.length() < 3) { - return 0; + private static final MethodRefEntry BOX_BOOLEAN = box(CD_boolean, CD_Boolean), + BOX_BYTE = box(CD_byte, CD_Byte), + BOX_SHORT = box(CD_short, CD_Short), + BOX_CHAR = box(CD_char, CD_Character), + BOX_INT = box(CD_int, CD_Integer), + BOX_LONG = box(CD_long, CD_Long), + BOX_FLOAT = box(CD_float, CD_Float), + BOX_DOUBLE = box(CD_double, CD_Double); + + private static MethodRefEntry unbox(ClassDesc owner, String methodName, ClassDesc primitiveTarget) { + return CP.methodRefEntry(owner, methodName, MethodTypeDescImpl.ofValidated(primitiveTarget)); } - return (3 * xn.charAt(1) + xn.charAt(2)) % 16; - } - - private Wrapper wrapperOrNullFromDescriptor(String desc) { - if (!desc.startsWith(WRAPPER_PREFIX)) { - // Not a class type (array or method), so not a boxed type - // or not in the right package - return null; - } - // Pare it down to the simple class name - String cname = desc.substring(WRAPPER_PREFIX.length(), desc.length() - 1); - // Hash to a Wrapper - Wrapper w = FROM_WRAPPER_NAME[hashWrapperName(cname)]; - if (w == null || w.wrapperSimpleName().equals(cname)) { - return w; - } else { - return null; - } - } - private static String wrapperName(Wrapper w) { - return "java/lang/" + w.wrapperSimpleName(); + private static final MethodRefEntry UNBOX_BOOLEAN = unbox(CD_Boolean, "booleanValue", CD_boolean), + UNBOX_BYTE = unbox(CD_Number, "byteValue", CD_byte), + UNBOX_SHORT = unbox(CD_Number, "shortValue", CD_short), + UNBOX_CHAR = unbox(CD_Character, "charValue", CD_char), + UNBOX_INT = unbox(CD_Number, "intValue", CD_int), + UNBOX_LONG = unbox(CD_Number, "longValue", CD_long), + UNBOX_FLOAT = unbox(CD_Number, "floatValue", CD_float), + UNBOX_DOUBLE = unbox(CD_Number, "doubleValue", CD_double); } - private static String unboxMethod(Wrapper w) { - return w.primitiveSimpleName() + "Value"; + private static TypeKind primitiveTypeKindFromClass(Class type) { + if (type == int.class) return TypeKind.IntType; + if (type == long.class) return TypeKind.LongType; + if (type == boolean.class) return TypeKind.BooleanType; + if (type == short.class) return TypeKind.ShortType; + if (type == byte.class) return TypeKind.ByteType; + if (type == char.class) return TypeKind.CharType; + if (type == float.class) return TypeKind.FloatType; + if (type == double.class) return TypeKind.DoubleType; + return null; } - private static String boxingDescriptor(Wrapper w) { - return "(" + w.basicTypeChar() + ")L" + wrapperName(w) + ";"; + static void boxIfTypePrimitive(CodeBuilder cob, TypeKind tk) { + box(cob, tk); } - private static String unboxingDescriptor(Wrapper w) { - return "()" + w.basicTypeChar(); - } - - void boxIfTypePrimitive(Type t) { - Wrapper w = FROM_TYPE_SORT[t.getSort()]; - if (w != null) { - box(w); - } - } - - void widen(Wrapper ws, Wrapper wt) { + static void widen(CodeBuilder cob, TypeKind ws, TypeKind wt) { + ws = ws.asLoadable(); + wt = wt.asLoadable(); if (ws != wt) { - int opcode = wideningOpcodes[ws.ordinal()][wt.ordinal()]; - if (opcode != Opcodes.NOP) { - visitInsn(opcode); - } + cob.conversion(ws, wt); } } - void box(Wrapper w) { - visitMethodInsn(Opcodes.INVOKESTATIC, - wrapperName(w), - NAME_BOX_METHOD, - boxingDescriptor(w), false); - } - - /** - * Convert types by unboxing. The source type is known to be a primitive wrapper. - * @param sname A primitive wrapper corresponding to wrapped reference source type - * @param wt A primitive wrapper being converted to - */ - void unbox(String sname, Wrapper wt) { - visitMethodInsn(Opcodes.INVOKEVIRTUAL, - sname, - unboxMethod(wt), - unboxingDescriptor(wt), false); - } - - private String descriptorToName(String desc) { - int last = desc.length() - 1; - if (desc.charAt(0) == 'L' && desc.charAt(last) == ';') { - // In descriptor form - return desc.substring(1, last); - } else { - // Already in internal name form - return desc; + static void box(CodeBuilder cob, TypeKind tk) { + switch (tk) { + case BooleanType -> cob.invokestatic(BoxHolder.BOX_BOOLEAN); + case ByteType -> cob.invokestatic(BoxHolder.BOX_BYTE); + case CharType -> cob.invokestatic(BoxHolder.BOX_CHAR); + case DoubleType -> cob.invokestatic(BoxHolder.BOX_DOUBLE); + case FloatType -> cob.invokestatic(BoxHolder.BOX_FLOAT); + case IntType -> cob.invokestatic(BoxHolder.BOX_INT); + case LongType -> cob.invokestatic(BoxHolder.BOX_LONG); + case ShortType -> cob.invokestatic(BoxHolder.BOX_SHORT); } } - void cast(String ds, String dt) { - String ns = descriptorToName(ds); - String nt = descriptorToName(dt); - if (!nt.equals(ns) && !nt.equals(NAME_OBJECT)) { - visitTypeInsn(Opcodes.CHECKCAST, nt); + static void unbox(CodeBuilder cob, TypeKind to) { + switch (to) { + case BooleanType -> cob.invokevirtual(BoxHolder.UNBOX_BOOLEAN); + case ByteType -> cob.invokevirtual(BoxHolder.UNBOX_BYTE); + case CharType -> cob.invokevirtual(BoxHolder.UNBOX_CHAR); + case DoubleType -> cob.invokevirtual(BoxHolder.UNBOX_DOUBLE); + case FloatType -> cob.invokevirtual(BoxHolder.UNBOX_FLOAT); + case IntType -> cob.invokevirtual(BoxHolder.UNBOX_INT); + case LongType -> cob.invokevirtual(BoxHolder.UNBOX_LONG); + case ShortType -> cob.invokevirtual(BoxHolder.UNBOX_SHORT); } } - private Wrapper toWrapper(String desc) { - char first = desc.charAt(0); - if (first == '[' || first == '(') { - first = 'L'; + static void cast(CodeBuilder cob, ClassDesc dt) { + if (!dt.equals(CD_Object)) { + cob.checkcast(dt); } - return Wrapper.forBasicType(first); } /** @@ -204,7 +131,7 @@ private Wrapper toWrapper(String desc) { * @param target * @param functional */ - void convertType(Class arg, Class target, Class functional) { + static void convertType(CodeBuilder cob, Class arg, Class target, Class functional) { if (arg.equals(target) && arg.equals(functional)) { return; } @@ -212,84 +139,69 @@ void convertType(Class arg, Class target, Class functional) { return; } if (arg.isPrimitive()) { - Wrapper wArg = Wrapper.forPrimitiveType(arg); if (target.isPrimitive()) { // Both primitives: widening - widen(wArg, Wrapper.forPrimitiveType(target)); + widen(cob, TypeKind.from(arg), TypeKind.from(target)); } else { // Primitive argument to reference target - String dTarget = BytecodeDescriptor.unparse(target); - Wrapper wPrimTarget = wrapperOrNullFromDescriptor(dTarget); - if (wPrimTarget != null) { + TypeKind wPrimTk = primitiveTypeKindFromClass(target); + if (wPrimTk != null) { // The target is a boxed primitive type, widen to get there before boxing - widen(wArg, wPrimTarget); - box(wPrimTarget); + widen(cob, TypeKind.from(arg), wPrimTk); + box(cob, wPrimTk); } else { // Otherwise, box and cast - box(wArg); - cast(wrapperName(wArg), dTarget); + box(cob, TypeKind.from(arg)); + cast(cob, classDesc(target)); } } } else { - String dArg = BytecodeDescriptor.unparse(arg); - String dSrc; - if (functional.isPrimitive()) { - dSrc = dArg; + Class src; + if (arg == functional || functional.isPrimitive()) { + src = arg; } else { // Cast to convert to possibly more specific type, and generate CCE for invalid arg - dSrc = BytecodeDescriptor.unparse(functional); - cast(dArg, dSrc); + src = functional; + cast(cob, classDesc(functional)); } - String dTarget = BytecodeDescriptor.unparse(target); if (target.isPrimitive()) { - Wrapper wTarget = toWrapper(dTarget); // Reference argument to primitive target - Wrapper wps = wrapperOrNullFromDescriptor(dSrc); + TypeKind wps = primitiveTypeKindFromClass(src); if (wps != null) { - if (wps.isSigned() || wps.isFloating()) { + if (src != Character.class && src != Boolean.class) { // Boxed number to primitive - unbox(wrapperName(wps), wTarget); + unbox(cob, TypeKind.from(target)); } else { // Character or Boolean - unbox(wrapperName(wps), wps); - widen(wps, wTarget); + unbox(cob, wps); + widen(cob, wps, TypeKind.from(target)); } } else { // Source type is reference type, but not boxed type, // assume it is super type of target type - String intermediate; - if (wTarget.isSigned() || wTarget.isFloating()) { - // Boxed number to primitive - intermediate = "java/lang/Number"; + if (target == char.class) { + cast(cob, CD_Character); + } else if (target == boolean.class) { + cast(cob, CD_Boolean); } else { - // Character or Boolean - intermediate = wrapperName(wTarget); + // Boxed number to primitive + cast(cob, CD_Number); } - cast(dSrc, intermediate); - unbox(intermediate, wTarget); + unbox(cob, TypeKind.from(target)); } } else { // Both reference types: just case to target type - cast(dSrc, dTarget); + if (src != target) { + cast(cob, classDesc(target)); + } } } } - /** - * The following method is copied from - * org.objectweb.asm.commons.InstructionAdapter. Part of ASM: a very small - * and fast Java bytecode manipulation framework. - * Copyright (c) 2000-2005 INRIA, France Telecom All rights reserved. - */ - void iconst(final int cst) { - if (cst >= -1 && cst <= 5) { - mv.visitInsn(Opcodes.ICONST_0 + cst); - } else if (cst >= Byte.MIN_VALUE && cst <= Byte.MAX_VALUE) { - mv.visitIntInsn(Opcodes.BIPUSH, cst); - } else if (cst >= Short.MIN_VALUE && cst <= Short.MAX_VALUE) { - mv.visitIntInsn(Opcodes.SIPUSH, cst); - } else { - mv.visitLdcInsn(cst); - } + static ClassDesc classDesc(Class cls) { + return cls.isPrimitive() ? Wrapper.forPrimitiveType(cls).basicClassDescriptor() + : cls == Object.class ? CD_Object + : cls == String.class ? CD_String + : ReferenceClassDescImpl.ofValidated(cls.descriptorString()); } } diff --git a/src/java.base/share/classes/jdk/internal/classfile/impl/StackMapGenerator.java b/src/java.base/share/classes/jdk/internal/classfile/impl/StackMapGenerator.java index ddb14b2d26a..0f1f6fb69de 100644 --- a/src/java.base/share/classes/jdk/internal/classfile/impl/StackMapGenerator.java +++ b/src/java.base/share/classes/jdk/internal/classfile/impl/StackMapGenerator.java @@ -25,15 +25,19 @@ */ package jdk.internal.classfile.impl; -import java.lang.classfile.constantpool.InvokeDynamicEntry; -import java.lang.constant.ClassDesc; -import static java.lang.constant.ConstantDescs.*; -import java.lang.constant.MethodTypeDesc; +import java.lang.classfile.Attribute; +import java.lang.classfile.Attributes; +import java.lang.classfile.BufWriter; import java.lang.classfile.ClassFile; +import java.lang.classfile.Label; +import java.lang.classfile.attribute.StackMapTableAttribute; import java.lang.classfile.constantpool.ClassEntry; import java.lang.classfile.constantpool.ConstantDynamicEntry; -import java.lang.classfile.constantpool.MemberRefEntry; import java.lang.classfile.constantpool.ConstantPoolBuilder; +import java.lang.classfile.constantpool.InvokeDynamicEntry; +import java.lang.classfile.constantpool.MemberRefEntry; +import java.lang.constant.ClassDesc; +import java.lang.constant.MethodTypeDesc; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Arrays; @@ -41,15 +45,10 @@ import java.util.List; import java.util.Objects; import java.util.stream.Collectors; -import java.lang.classfile.Attribute; +import jdk.internal.constant.ReferenceClassDescImpl; import static java.lang.classfile.ClassFile.*; -import static jdk.internal.constant.ConstantUtils.binaryNameToDesc; - -import java.lang.classfile.BufWriter; -import java.lang.classfile.Label; -import java.lang.classfile.attribute.StackMapTableAttribute; -import java.lang.classfile.Attributes; +import static java.lang.constant.ConstantDescs.*; /** * StackMapGenerator is responsible for stack map frames generation. @@ -1249,14 +1248,14 @@ private static record Type(int tag, ClassDesc sym, int bci) { //frequently used types to reduce footprint static final Type OBJECT_TYPE = referenceType(CD_Object), THROWABLE_TYPE = referenceType(CD_Throwable), - INT_ARRAY_TYPE = referenceType(CD_int.arrayType()), - BOOLEAN_ARRAY_TYPE = referenceType(CD_boolean.arrayType()), - BYTE_ARRAY_TYPE = referenceType(CD_byte.arrayType()), - CHAR_ARRAY_TYPE = referenceType(CD_char.arrayType()), - SHORT_ARRAY_TYPE = referenceType(CD_short.arrayType()), - LONG_ARRAY_TYPE = referenceType(CD_long.arrayType()), - DOUBLE_ARRAY_TYPE = referenceType(CD_double.arrayType()), - FLOAT_ARRAY_TYPE = referenceType(CD_float.arrayType()), + INT_ARRAY_TYPE = referenceType(ReferenceClassDescImpl.ofValidated("[I")), + BOOLEAN_ARRAY_TYPE = referenceType(ReferenceClassDescImpl.ofValidated("[Z")), + BYTE_ARRAY_TYPE = referenceType(ReferenceClassDescImpl.ofValidated("[B")), + CHAR_ARRAY_TYPE = referenceType(ReferenceClassDescImpl.ofValidated("[C")), + SHORT_ARRAY_TYPE = referenceType(ReferenceClassDescImpl.ofValidated("[S")), + LONG_ARRAY_TYPE = referenceType(ReferenceClassDescImpl.ofValidated("[J")), + DOUBLE_ARRAY_TYPE = referenceType(ReferenceClassDescImpl.ofValidated("[D")), + FLOAT_ARRAY_TYPE = referenceType(ReferenceClassDescImpl.ofValidated("[F")), STRING_TYPE = referenceType(CD_String), CLASS_TYPE = referenceType(CD_Class), METHOD_HANDLE_TYPE = referenceType(CD_MethodHandle), @@ -1321,8 +1320,8 @@ Type mergeComponentFrom(Type from, ClassHierarchyImpl context) { } } - private static final ClassDesc CD_Cloneable = binaryNameToDesc("java.lang.Cloneable"); - private static final ClassDesc CD_Serializable = binaryNameToDesc("java.io.Serializable"); + private static final ClassDesc CD_Cloneable = ReferenceClassDescImpl.ofValidated("Ljava/lang/Cloneable;"); + private static final ClassDesc CD_Serializable = ReferenceClassDescImpl.ofValidated("Ljava/io/Serializable;"); private Type mergeReferenceFrom(Type from, ClassHierarchyImpl context) { if (from == NULL_TYPE) { diff --git a/test/hotspot/jtreg/ProblemList.txt b/test/hotspot/jtreg/ProblemList.txt index a4ff429bd00..c7c76c8fa3a 100644 --- a/test/hotspot/jtreg/ProblemList.txt +++ b/test/hotspot/jtreg/ProblemList.txt @@ -101,6 +101,7 @@ runtime/StackGuardPages/TestStackGuardPagesNative.java 8303612 linux-all runtime/ErrorHandling/TestDwarf.java#checkDecoder 8305489 linux-all runtime/ErrorHandling/MachCodeFramesInErrorFile.java 8313315 linux-ppc64le runtime/cds/appcds/customLoader/HelloCustom_JFR.java 8241075 linux-all,windows-x64 +runtime/ClassInitErrors/TestStackOverflowDuringInit.java 8334545 generic-all applications/jcstress/copy.java 8229852 linux-all From 856931d01f14b1c665c04e05d5637b8237c56988 Mon Sep 17 00:00:00 2001 From: Erik Gahlin Date: Wed, 19 Jun 2024 16:23:22 +0000 Subject: [PATCH 60/70] 8304732: jdk/jfr/api/consumer/recordingstream/TestStop.java failed again with "Expected outer stream to have 3 events" Reviewed-by: mgronlun --- src/hotspot/share/jfr/jni/jfrJniMethod.cpp | 5 ++ src/hotspot/share/jfr/jni/jfrJniMethod.hpp | 2 + .../jfr/jni/jfrJniMethodRegistration.cpp | 3 +- .../jfr/recorder/repository/jfrChunk.cpp | 6 +-- .../jfr/recorder/repository/jfrChunk.hpp | 4 +- .../share/jfr/support/jfrIntrinsics.hpp | 4 +- src/hotspot/share/runtime/objectMonitor.cpp | 2 +- .../classes/jdk/jfr/internal/HiddenWait.java | 32 +++++++++++++ .../share/classes/jdk/jfr/internal/JVM.java | 13 ++--- .../classes/jdk/jfr/internal/JVMSupport.java | 8 +--- .../jdk/jfr/internal/MetadataRepository.java | 23 +++++++-- .../consumer/AbstractEventStream.java | 6 +-- .../consumer/EventDirectoryStream.java | 44 ++++++++++------- .../internal/consumer/EventFileStream.java | 4 +- .../internal/management/StreamBarrier.java | 15 ++++-- .../classes/jdk/jfr/internal/util/Utils.java | 6 ++- .../consumer/recordingstream/TestStop.java | 47 +++++++++++-------- 17 files changed, 154 insertions(+), 70 deletions(-) create mode 100644 src/jdk.jfr/share/classes/jdk/jfr/internal/HiddenWait.java diff --git a/src/hotspot/share/jfr/jni/jfrJniMethod.cpp b/src/hotspot/share/jfr/jni/jfrJniMethod.cpp index 8953976cd0c..d60baa3c1cc 100644 --- a/src/hotspot/share/jfr/jni/jfrJniMethod.cpp +++ b/src/hotspot/share/jfr/jni/jfrJniMethod.cpp @@ -30,6 +30,7 @@ #include "jfr/recorder/jfrRecorder.hpp" #include "jfr/recorder/checkpoint/jfrMetadataEvent.hpp" #include "jfr/recorder/checkpoint/types/traceid/jfrTraceId.inline.hpp" +#include "jfr/recorder/repository/jfrChunk.hpp" #include "jfr/recorder/repository/jfrRepository.hpp" #include "jfr/recorder/repository/jfrChunkRotation.hpp" #include "jfr/recorder/repository/jfrChunkWriter.hpp" @@ -425,3 +426,7 @@ JVM_END JVM_ENTRY_NO_ENV(void, jfr_unregister_stack_filter(JNIEnv* env, jclass jvm, jlong id)) JfrStackFilterRegistry::remove(id); JVM_END + +NO_TRANSITION(jlong, jfr_nanos_now(JNIEnv* env, jclass jvm)) + return JfrChunk::nanos_now(); +NO_TRANSITION_END diff --git a/src/hotspot/share/jfr/jni/jfrJniMethod.hpp b/src/hotspot/share/jfr/jni/jfrJniMethod.hpp index 6a2d622d7e9..ca119c1f8c3 100644 --- a/src/hotspot/share/jfr/jni/jfrJniMethod.hpp +++ b/src/hotspot/share/jfr/jni/jfrJniMethod.hpp @@ -165,6 +165,8 @@ jlong JNICALL jfr_register_stack_filter(JNIEnv* env, jclass jvm, jobjectArray cl jlong JNICALL jfr_unregister_stack_filter(JNIEnv* env, jclass jvm, jlong id); +jlong JNICALL jfr_nanos_now(JNIEnv* env, jclass jvm); + #ifdef __cplusplus } #endif diff --git a/src/hotspot/share/jfr/jni/jfrJniMethodRegistration.cpp b/src/hotspot/share/jfr/jni/jfrJniMethodRegistration.cpp index 7ef831f6282..415c7468a62 100644 --- a/src/hotspot/share/jfr/jni/jfrJniMethodRegistration.cpp +++ b/src/hotspot/share/jfr/jni/jfrJniMethodRegistration.cpp @@ -100,7 +100,8 @@ JfrJniMethodRegistration::JfrJniMethodRegistration(JNIEnv* env) { (char*)"hostTotalSwapMemory", (char*)"()J", (void*) jfr_host_total_swap_memory, (char*)"emitDataLoss", (char*)"(J)V", (void*)jfr_emit_data_loss, (char*)"registerStackFilter", (char*)"([Ljava/lang/String;[Ljava/lang/String;)J", (void*)jfr_register_stack_filter, - (char*)"unregisterStackFilter", (char*)"(J)V", (void*)jfr_unregister_stack_filter + (char*)"unregisterStackFilter", (char*)"(J)V", (void*)jfr_unregister_stack_filter, + (char*)"nanosNow", (char*)"()J", (void*)jfr_nanos_now }; const size_t method_array_length = sizeof(method) / sizeof(JNINativeMethod); diff --git a/src/hotspot/share/jfr/recorder/repository/jfrChunk.cpp b/src/hotspot/share/jfr/recorder/repository/jfrChunk.cpp index 6d0ec7773b9..b88ba06bdf7 100644 --- a/src/hotspot/share/jfr/recorder/repository/jfrChunk.cpp +++ b/src/hotspot/share/jfr/recorder/repository/jfrChunk.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -35,7 +35,7 @@ static const u2 JFR_VERSION_MAJOR = 2; static const u2 JFR_VERSION_MINOR = 1; // strictly monotone -static jlong nanos_now() { +jlong JfrChunk::nanos_now() { static jlong last = 0; jlong seconds; @@ -147,7 +147,7 @@ void JfrChunk::update_start_ticks() { } void JfrChunk::update_start_nanos() { - const jlong now = nanos_now(); + const jlong now = JfrChunk::nanos_now(); assert(now >= _start_nanos, "invariant"); assert(now >= _last_update_nanos, "invariant"); _start_nanos = _last_update_nanos = now; diff --git a/src/hotspot/share/jfr/recorder/repository/jfrChunk.hpp b/src/hotspot/share/jfr/recorder/repository/jfrChunk.hpp index d7bd3411160..91b42948181 100644 --- a/src/hotspot/share/jfr/recorder/repository/jfrChunk.hpp +++ b/src/hotspot/share/jfr/recorder/repository/jfrChunk.hpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2019, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,6 +34,8 @@ const u1 PAD = 0; class JfrChunk : public JfrCHeapObj { friend class JfrChunkWriter; friend class JfrChunkHeadWriter; + public: + static jlong nanos_now(); private: char* _path; int64_t _start_ticks; diff --git a/src/hotspot/share/jfr/support/jfrIntrinsics.hpp b/src/hotspot/share/jfr/support/jfrIntrinsics.hpp index 65a94164a97..6520f3cb00c 100644 --- a/src/hotspot/share/jfr/support/jfrIntrinsics.hpp +++ b/src/hotspot/share/jfr/support/jfrIntrinsics.hpp @@ -1,5 +1,5 @@ /* -* Copyright (c) 2012, 2023, Oracle and/or its affiliates. All rights reserved. +* Copyright (c) 2012, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -47,13 +47,13 @@ class JfrIntrinsicSupport : AllStatic { #define JFR_HAVE_INTRINSICS #define JFR_TEMPLATES(template) \ + template(jdk_jfr_internal_HiddenWait, "jdk/jfr/internal/HiddenWait") \ template(jdk_jfr_internal_JVM, "jdk/jfr/internal/JVM") \ template(jdk_jfr_internal_event_EventWriterFactory, "jdk/jfr/internal/event/EventWriterFactory") \ template(jdk_jfr_internal_event_EventConfiguration_signature, "Ljdk/jfr/internal/event/EventConfiguration;") \ template(getEventWriter_signature, "()Ljdk/jfr/internal/event/EventWriter;") \ template(eventConfiguration_name, "eventConfiguration") \ template(commit_name, "commit") \ - template(jfr_chunk_rotation_monitor, "jdk/jfr/internal/JVM$ChunkRotationMonitor") \ #define JFR_INTRINSICS(do_intrinsic, do_class, do_name, do_signature, do_alias) \ do_intrinsic(_counterTime, jdk_jfr_internal_JVM, counterTime_name, void_long_signature, F_SN) \ diff --git a/src/hotspot/share/runtime/objectMonitor.cpp b/src/hotspot/share/runtime/objectMonitor.cpp index 178f3e97d71..ba463231592 100644 --- a/src/hotspot/share/runtime/objectMonitor.cpp +++ b/src/hotspot/share/runtime/objectMonitor.cpp @@ -1442,7 +1442,7 @@ bool ObjectMonitor::check_owner(TRAPS) { static inline bool is_excluded(const Klass* monitor_klass) { assert(monitor_klass != nullptr, "invariant"); NOT_JFR_RETURN_(false); - JFR_ONLY(return vmSymbols::jfr_chunk_rotation_monitor() == monitor_klass->name();) + JFR_ONLY(return vmSymbols::jdk_jfr_internal_HiddenWait() == monitor_klass->name();) } static void post_monitor_wait_event(EventJavaMonitorWait* event, diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/HiddenWait.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/HiddenWait.java new file mode 100644 index 00000000000..26505990332 --- /dev/null +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/HiddenWait.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package jdk.jfr.internal; + +/** + * The HiddenWait class is used to exclude jdk.JavaMonitorWait events + * from being generated when Object.wait() is called on an object of this type. + */ +public final class HiddenWait { +} diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/JVM.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/JVM.java index 02edfd1e5ab..2e600c8c029 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/JVM.java +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/JVM.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -41,14 +41,10 @@ public final class JVM { static final long RESERVED_CLASS_ID_LIMIT = 500; - private static class ChunkRotationMonitor {} - /* * The JVM uses the chunk rotation monitor to notify Java that a rotation is warranted. - * The monitor type is used to exclude jdk.JavaMonitorWait events from being generated - * when Object.wait() is called on this monitor. */ - public static final Object CHUNK_ROTATION_MONITOR = new ChunkRotationMonitor(); + public static final Object CHUNK_ROTATION_MONITOR = new HiddenWait(); private static volatile boolean nativeOK; @@ -174,6 +170,11 @@ private static class ChunkRotationMonitor {} */ public static native long getTicksFrequency(); + /** + * Returns the same clock that sets the start time of a chunk (in nanos). + */ + public static native long nanosNow(); + /** * Write message to log. Should swallow null or empty message, and be able * to handle any Java character and not crash with very large message diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/JVMSupport.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/JVMSupport.java index 036d49e6e0e..345d2fdcc8d 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/JVMSupport.java +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/JVMSupport.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2016, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -119,11 +119,7 @@ private static void awaitUniqueTimestamp() { lastTimestamp = time; return; } - try { - Thread.sleep(0, 100); - } catch (InterruptedException iex) { - // ignore - } + Utils.takeNap(1); } } diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/MetadataRepository.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/MetadataRepository.java index 7031718cb28..75be70a0d1d 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/MetadataRepository.java +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/MetadataRepository.java @@ -64,6 +64,8 @@ public final class MetadataRepository { private boolean unregistered; private long lastUnloaded = -1; + private long lastMillis; + public MetadataRepository() { initializeJVMEventTypes(); } @@ -313,11 +315,12 @@ synchronized Instant setOutput(String filename) { if (staleMetadata) { storeDescriptorInJVM(); } + // Each chunk needs a unique timestamp. If two chunks get the same + // timestamp, the parser may stop prematurely at an earlier chunk. + // The resolution needs to be measured in milliseconds as this + // is what RecordingInfo:getStopTime() returns. + awaitEpochMilliShift(); JVM.setOutput(filename); - // Each chunk needs a unique start timestamp and - // if the clock resolution is low, two chunks may - // get the same timestamp. Utils.getChunkStartNanos() - // ensures the timestamp is unique for the next chunk long chunkStart = JVMSupport.getChunkStartNanos(); if (filename != null) { RepositoryFiles.notifyNewFile(); @@ -332,6 +335,18 @@ synchronized Instant setOutput(String filename) { return Utils.epochNanosToInstant(chunkStart); } + private void awaitEpochMilliShift() { + while (true) { + long nanos = JVM.nanosNow(); + long millis = Utils.epochNanosToInstant(nanos).toEpochMilli(); + if (millis != lastMillis) { + lastMillis = millis; + return; + } + Utils.takeNap(1); + } + } + private void unregisterUnloaded() { long unloaded = JVM.getUnloadedEventClassCount(); if (this.lastUnloaded != unloaded) { diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/AbstractEventStream.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/AbstractEventStream.java index e3b43635e33..cdfc8f017a6 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/AbstractEventStream.java +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/AbstractEventStream.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -205,7 +205,7 @@ public final void awaitTermination(Duration timeout) throws InterruptedException protected abstract void process() throws IOException; - protected abstract boolean isRecording(); + protected abstract boolean isRecordingStream(); protected final void closeParser() { parserState.close(); @@ -249,7 +249,7 @@ private void startInternal(long startNanos) { if (streamConfiguration.started) { throw new IllegalStateException("Event stream can only be started once"); } - if (isRecording() && streamConfiguration.startTime == null) { + if (isRecordingStream() && streamConfiguration.startTime == null) { streamConfiguration.setStartNanos(startNanos); } streamConfiguration.setStarted(true); diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/EventDirectoryStream.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/EventDirectoryStream.java index 3ed1c4c8d35..bc9aa7987c3 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/EventDirectoryStream.java +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/EventDirectoryStream.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2023, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -33,9 +33,11 @@ import java.util.Comparator; import java.util.List; import java.util.Objects; +import java.util.concurrent.atomic.AtomicLong; import java.util.function.Consumer; import jdk.jfr.Configuration; +import jdk.jfr.RecordingState; import jdk.jfr.consumer.RecordedEvent; import jdk.jfr.internal.JVM; import jdk.jfr.internal.LogLevel; @@ -59,6 +61,7 @@ public final class EventDirectoryStream extends AbstractEventStream { private final FileAccess fileAccess; private final PlatformRecording recording; private final StreamBarrier barrier = new StreamBarrier(); + private final AtomicLong streamId = new AtomicLong(); private ChunkParser currentParser; private long currentChunkStartNanos; private RecordedEvent[] sortedCache; @@ -80,6 +83,8 @@ public EventDirectoryStream( } this.fileAccess = Objects.requireNonNull(fileAccess); this.repositoryFiles = new RepositoryFiles(fileAccess, p, allowSubDirectories); + this.streamId.incrementAndGet(); + Logger.log(LogTag.JFR_SYSTEM_PARSER, LogLevel.INFO, "Stream " + streamId + " started."); } @Override @@ -137,13 +142,14 @@ protected void processRecursionSafe() throws IOException { Dispatcher lastDisp = null; Dispatcher disp = dispatcher(); Path path; - boolean validStartTime = isRecording() || disp.startTime != null; + boolean validStartTime = isRecordingStream() || disp.startTime != null; if (validStartTime) { path = repositoryFiles.firstPath(disp.startNanos, true); } else { path = repositoryFiles.lastPath(true); } if (path == null) { // closed + logStreamEnd("no first chunk file found."); return; } currentChunkStartNanos = repositoryFiles.getTimestamp(path); @@ -168,7 +174,10 @@ protected void processRecursionSafe() throws IOException { processUnordered(disp); } currentParser.resetCache(); - if (currentParser.getLastFlush() > filterEnd) { + long lastFlush = currentParser.getLastFlush(); + if (lastFlush > filterEnd) { + logStreamEnd("end time at " + filterEnd + + "ns (epoch), parser at " + lastFlush + "ns (epoch)."); return; } } @@ -177,20 +186,25 @@ protected void processRecursionSafe() throws IOException { barrier.check(); // block if recording is being stopped if (barrier.getStreamEnd() <= endMillis) { + String msg = "stopped at " + barrier.getStreamEnd() + "ms (epoch), "; + msg += "parser at " + endMillis + "ms (epoch), " + endNanos + "ns (epoch)"; + logStreamEnd(msg); return; } - if (!barrier.hasStreamEnd() && isLastChunk()) { - // Recording was stopped/closed externally, and no more data to process. - return; + if (isRecordingStream()) { + if (recording.getState() == RecordingState.STOPPED && !barrier.used()) { + logStreamEnd("recording stopped externally."); + return; + } } if (repositoryFiles.hasFixedPath() && currentParser.isFinalChunk()) { - // JVM process exited/crashed, or repository migrated to an unknown location + logStreamEnd("JVM process exited/crashed, or repository migrated to an unknown location."); return; } if (isClosed()) { - // Stream was closed + logStreamEnd("stream closed."); return; } long durationNanos = currentParser.getChunkDuration(); @@ -205,7 +219,8 @@ protected void processRecursionSafe() throws IOException { } path = repositoryFiles.nextPath(currentChunkStartNanos + durationNanos, true); if (path == null) { - return; // stream closed + logStreamEnd("no more chunk files found."); + return; } currentChunkStartNanos = repositoryFiles.getTimestamp(path); input.setFile(path); @@ -217,15 +232,12 @@ protected void processRecursionSafe() throws IOException { } } - - private boolean isLastChunk() { - if (!isRecording()) { - return false; - } - return recording.getFinalChunkStartNanos() >= currentParser.getStartNanos(); + private void logStreamEnd(String text) { + String msg = "Stream " + streamId + " ended, " + text; + Logger.log(LogTag.JFR_SYSTEM_PARSER, LogLevel.INFO, msg); } - protected boolean isRecording() { + protected boolean isRecordingStream() { return recording != null; } diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/EventFileStream.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/EventFileStream.java index 9ecaf2a6075..f03e8d8acb4 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/EventFileStream.java +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/consumer/EventFileStream.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2019, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -73,7 +73,7 @@ public void close() { } @Override - protected boolean isRecording() { + protected boolean isRecordingStream() { return false; } diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/management/StreamBarrier.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/management/StreamBarrier.java index ed94a908d47..0b3132da217 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/management/StreamBarrier.java +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/management/StreamBarrier.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -41,6 +41,7 @@ public final class StreamBarrier implements Closeable { private boolean activated = false; + private boolean used = false; private long end = Long.MAX_VALUE; // Blocks thread until barrier is deactivated @@ -62,12 +63,9 @@ public synchronized long getStreamEnd() { return end; } - public synchronized boolean hasStreamEnd() { - return end != Long.MAX_VALUE; - } - public synchronized void activate() { activated = true; + used = true; } @Override @@ -75,4 +73,11 @@ public synchronized void close() throws IOException { activated = false; this.notifyAll(); } + + /** + * Returns {@code true) if barrier is, or has been, in active state, {@code false) otherwise. + */ + public synchronized boolean used() { + return used; + } } diff --git a/src/jdk.jfr/share/classes/jdk/jfr/internal/util/Utils.java b/src/jdk.jfr/share/classes/jdk/jfr/internal/util/Utils.java index 0049662e9a1..5e04a25fe7d 100644 --- a/src/jdk.jfr/share/classes/jdk/jfr/internal/util/Utils.java +++ b/src/jdk.jfr/share/classes/jdk/jfr/internal/util/Utils.java @@ -48,6 +48,7 @@ import jdk.jfr.Event; import jdk.jfr.EventType; import jdk.jfr.RecordingState; +import jdk.jfr.internal.HiddenWait; import jdk.jfr.internal.LogLevel; import jdk.jfr.internal.LogTag; import jdk.jfr.internal.Logger; @@ -351,8 +352,11 @@ private static boolean isSupportedType(Class type) { } public static void takeNap(long millis) { + HiddenWait hiddenWait = new HiddenWait(); try { - Thread.sleep(millis); + synchronized(hiddenWait) { + hiddenWait.wait(millis); + } } catch (InterruptedException e) { // ok } diff --git a/test/jdk/jdk/jfr/api/consumer/recordingstream/TestStop.java b/test/jdk/jdk/jfr/api/consumer/recordingstream/TestStop.java index 58dcbbcbe20..36bbaa3c557 100644 --- a/test/jdk/jdk/jfr/api/consumer/recordingstream/TestStop.java +++ b/test/jdk/jdk/jfr/api/consumer/recordingstream/TestStop.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2022, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -41,7 +41,7 @@ * @requires vm.hasJFR * @library /test/lib /test/jdk * @build jdk.jfr.api.consumer.recordingstream.EventProducer - * @run main/othervm jdk.jfr.api.consumer.recordingstream.TestStop + * @run main/othervm -Xlog:system+parser+jfr=info jdk.jfr.api.consumer.recordingstream.TestStop */ public class TestStop { static class StopEvent extends Event { @@ -139,41 +139,50 @@ private static void testNestedStop() throws Exception { Path fileInner = Path.of("inner.jfr"); inner.dump(fileInner); outer.dump(fileOuter); - System.out.println("Outer dump:"); var dumpOuter = RecordingFile.readAllEvents(fileOuter); - for (RecordedEvent e : dumpOuter) { - System.out.println(eventToText(e)); - } - System.out.println("Inner dump:"); var dumpInner = RecordingFile.readAllEvents(fileInner); - for (RecordedEvent e : dumpInner) { - System.out.println(eventToText(e)); - } - System.out.println(); - System.out.println("Outer stream:"); - for (String s : outerStream) { - System.out.println(s); - } - System.out.println("Inner stream:"); - for (String s : innerStream) { - System.out.println(s); - } + if (dumpOuter.size() != 3) { + log(outerStream, innerStream, dumpOuter, dumpInner); throw new AssertionError("Expected outer dump to have 3 events"); } if (outerStream.size() != 3) { + log(outerStream, innerStream, dumpOuter, dumpInner); throw new AssertionError("Expected outer stream to have 3 events"); } if (dumpInner.size() != 1) { + log(outerStream, innerStream, dumpOuter, dumpInner); throw new AssertionError("Expected inner dump to have 1 event"); } if (innerStream.size() != 1) { + log(outerStream, innerStream, dumpOuter, dumpInner); throw new AssertionError("Expected inner stream to have 1 event"); } } } } + private static void log(List outerStream, List innerStream, List dumpOuter, + List dumpInner) { + System.out.println("Outer dump:"); + for (RecordedEvent e : dumpOuter) { + System.out.println(eventToText(e)); + } + System.out.println("Inner dump:"); + for (RecordedEvent e : dumpInner) { + System.out.println(eventToText(e)); + } + System.out.println(); + System.out.println("Outer stream:"); + for (String s : outerStream) { + System.out.println(s); + } + System.out.println("Inner stream:"); + for (String s : innerStream) { + System.out.println(s); + } + } + private static String eventToText(RecordedEvent event) { Instant timestamp = event.getEndTime(); long s = timestamp.getEpochSecond(); From bcf4bb4882e06d8c52f6eb4e9c4e027ba0622c5f Mon Sep 17 00:00:00 2001 From: Kevin Walls Date: Wed, 19 Jun 2024 16:35:20 +0000 Subject: [PATCH 61/70] 8333344: JMX attaching of Subject does not work when security manager not allowed Reviewed-by: weijun, dfuchs --- src/java.base/share/classes/module-info.java | 1 + .../remote/rmi/RMIConnectionImpl.java | 91 ++++++++++++++----- .../remote/internal/ServerNotifForwarder.java | 5 +- .../MBeanServerFileAccessController.java | 22 +++-- .../javax/management/monitor/Monitor.java | 36 ++++++-- .../management/monitor/StartStopTest.java | 10 +- .../management/monitor/ThreadPoolAccTest.java | 14 ++- test/jdk/javax/management/monitor/all.policy | 3 + .../NotificationAccessControllerTest.java | 2 + .../notif/NotificationEmissionTest.java | 4 +- .../NonJMXPrincipalsTest.java | 1 + .../PasswordAccessFileTest.java | 2 + .../passwordAuthenticator/RMIAltAuthTest.java | 3 + .../RMIPasswdAuthTest.java | 3 + .../passwordAuthenticator/SimpleStandard.java | 6 +- .../security/AuthorizationTest.java | 6 ++ .../jmxremote/bootstrap/RmiBootstrapTest.java | 2 + 17 files changed, 162 insertions(+), 49 deletions(-) create mode 100644 test/jdk/javax/management/monitor/all.policy diff --git a/src/java.base/share/classes/module-info.java b/src/java.base/share/classes/module-info.java index a8b0a0c992c..52c1029dd3d 100644 --- a/src/java.base/share/classes/module-info.java +++ b/src/java.base/share/classes/module-info.java @@ -165,6 +165,7 @@ java.desktop, java.logging, java.management, + java.management.rmi, java.naming, java.rmi, jdk.charsets, diff --git a/src/java.management.rmi/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java b/src/java.management.rmi/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java index 289bc8f3822..047863d34ef 100644 --- a/src/java.management.rmi/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java +++ b/src/java.management.rmi/share/classes/javax/management/remote/rmi/RMIConnectionImpl.java @@ -46,6 +46,7 @@ import javax.management.remote.JMXServerErrorException; import javax.management.remote.NotificationResult; import javax.security.auth.Subject; +import jdk.internal.access.SharedSecrets; import sun.reflect.misc.ReflectUtil; import static javax.management.remote.rmi.RMIConnector.Util.cast; @@ -108,14 +109,19 @@ public RMIConnectionImpl(RMIServerImpl rmiServer, this.rmiServer = rmiServer; this.connectionId = connectionId; this.defaultClassLoader = defaultClassLoader; - this.subject = subject; + if (subject == null) { this.acc = null; } else { // An authenticated Subject was provided. // Subject Delegation has been removed. - this.acc = JMXSubjectDomainCombiner.getContext(subject); + if (SharedSecrets.getJavaLangAccess().allowSecurityManager()) { + // SM is allowed. Will use ACC created with Subject: + this.acc = JMXSubjectDomainCombiner.getContext(subject); + } else { + this.acc = null; + } } this.mbeanServer = rmiServer.getMBeanServer(); @@ -1292,10 +1298,21 @@ public NotificationResult run() { return getServerNotifFwd().fetchNotifs(csn, t, mn); } }; - if (acc == null) - return action.run(); - else - return AccessController.doPrivileged(action, acc); + if (!SharedSecrets.getJavaLangAccess().allowSecurityManager()) { + // Modern case + if (subject == null) { + return action.run(); + } else { + return Subject.doAs(subject, action); + } + } else { + // SM permitted + if (acc == null) { + return action.run(); // No Subject or ACC + } else { + return AccessController.doPrivileged(action, acc); + } + } } finally { serverCommunicatorAdmin.rspOutgoing(); } @@ -1411,16 +1428,36 @@ private Object doPrivilegedOperation(final int operation, serverCommunicatorAdmin.reqIncoming(); try { PrivilegedOperation op = new PrivilegedOperation(operation, params); - if (acc == null) { - try { - return op.run(); - } catch (Exception e) { - if (e instanceof RuntimeException) - throw (RuntimeException) e; - throw new PrivilegedActionException(e); + if (!SharedSecrets.getJavaLangAccess().allowSecurityManager()) { + // Modern case + if (subject == null) { + try { + return op.run(); + } catch (Exception e) { + if (e instanceof RuntimeException) { + throw (RuntimeException) e; + } else { + throw new PrivilegedActionException(e); + } + } + } else { + return Subject.doAs(subject, op); } } else { - return AccessController.doPrivileged(op, acc); + // SM permitted + if (acc == null) { + try { + return op.run(); + } catch (Exception e) { + if (e instanceof RuntimeException) { + throw (RuntimeException) e; + } else { + throw new PrivilegedActionException(e); + } + } + } else { + return AccessController.doPrivileged(op, acc); + } } } catch (Error e) { throw new JMXServerErrorException(e.toString(),e); @@ -1585,15 +1622,25 @@ private T unwrap(final MarshalledObject mo, } try { final ClassLoader old = AccessController.doPrivileged(new SetCcl(cl)); - try{ - if (acc != null) { - return AccessController.doPrivileged( - (PrivilegedExceptionAction) () -> - wrappedClass.cast(mo.get()), acc); - }else{ - return wrappedClass.cast(mo.get()); + try { + if (!SharedSecrets.getJavaLangAccess().allowSecurityManager()) { + // Modern case + if (subject != null) { + return Subject.doAs(subject, (PrivilegedExceptionAction) () -> wrappedClass.cast(mo.get())); + } else { + return wrappedClass.cast(mo.get()); + } + } else { + // SM permitted + if (acc != null) { + return AccessController.doPrivileged( + (PrivilegedExceptionAction) () -> + wrappedClass.cast(mo.get()), acc); + } else { + return wrappedClass.cast(mo.get()); + } } - }finally{ + } finally { AccessController.doPrivileged(new SetCcl(old)); } } catch (PrivilegedActionException pe) { diff --git a/src/java.management/share/classes/com/sun/jmx/remote/internal/ServerNotifForwarder.java b/src/java.management/share/classes/com/sun/jmx/remote/internal/ServerNotifForwarder.java index e04a375c998..7ea1e485869 100644 --- a/src/java.management/share/classes/com/sun/jmx/remote/internal/ServerNotifForwarder.java +++ b/src/java.management/share/classes/com/sun/jmx/remote/internal/ServerNotifForwarder.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -343,10 +343,9 @@ public void terminate() { //---------------- // PRIVATE METHODS //---------------- - @SuppressWarnings("removal") private Subject getSubject() { - return Subject.getSubject(AccessController.getContext()); + return Subject.current(); } private void checkState() throws IOException { diff --git a/src/java.management/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java b/src/java.management/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java index d694d9cce31..bc14b6ad3f2 100644 --- a/src/java.management/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java +++ b/src/java.management/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -42,6 +42,7 @@ import javax.management.MBeanServer; import javax.management.ObjectName; import javax.security.auth.Subject; +import jdk.internal.access.SharedSecrets; /** *

An object of this class implements the MBeanServerAccessController @@ -300,16 +301,19 @@ private static Properties propertiesFromFile(String fname) } } + @SuppressWarnings("removal") private synchronized void checkAccess(AccessType requiredAccess, String arg) { - @SuppressWarnings("removal") - final AccessControlContext acc = AccessController.getContext(); - @SuppressWarnings("removal") - final Subject s = - AccessController.doPrivileged(new PrivilegedAction<>() { - public Subject run() { - return Subject.getSubject(acc); - } + Subject s = null; + if (!SharedSecrets.getJavaLangAccess().allowSecurityManager()) { + s = Subject.current(); + } else { + final AccessControlContext acc = AccessController.getContext(); + s = AccessController.doPrivileged(new PrivilegedAction<>() { + public Subject run() { + return Subject.getSubject(acc); + } }); + } if (s == null) return; /* security has not been enabled */ final Set principals = s.getPrincipals(); String newPropertyValue = null; diff --git a/src/java.management/share/classes/javax/management/monitor/Monitor.java b/src/java.management/share/classes/javax/management/monitor/Monitor.java index aa6ec14ab63..2ccb96b8db6 100644 --- a/src/java.management/share/classes/javax/management/monitor/Monitor.java +++ b/src/java.management/share/classes/javax/management/monitor/Monitor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -60,6 +60,8 @@ import javax.management.NotificationBroadcasterSupport; import javax.management.ObjectName; import javax.management.ReflectionException; +import javax.security.auth.Subject; +import jdk.internal.access.SharedSecrets; import static javax.management.monitor.MonitorNotification.*; /** @@ -169,8 +171,9 @@ public final synchronized void setDerivedGaugeTimeStamp( new CopyOnWriteArrayList<>(); /** - * AccessControlContext of the Monitor.start() caller. + * Subject and possibly AccessControlContext of the Monitor.start() caller. */ + private volatile Subject subject; @SuppressWarnings("removal") private static final AccessControlContext noPermissionsACC = new AccessControlContext( @@ -713,10 +716,14 @@ void doStart() { // cleanupIsComplexTypeAttribute(); - // Cache the AccessControlContext of the Monitor.start() caller. + // Cache the Subject or AccessControlContext of the Monitor.start() caller. // The monitor tasks will be executed within this context. // - acc = AccessController.getContext(); + if (!SharedSecrets.getJavaLangAccess().allowSecurityManager()) { + subject = Subject.current(); + } else { + acc = AccessController.getContext(); + } // Start the scheduler. // @@ -747,8 +754,9 @@ void doStop() { // cleanupFutures(); - // Reset the AccessControlContext. + // Reset the Subject and AccessControlContext. // + subject = null; acc = noPermissionsACC; // Reset the complex type attribute information @@ -1512,9 +1520,11 @@ public Future submit() { @SuppressWarnings("removal") public void run() { final ScheduledFuture sf; + final Subject s; final AccessControlContext ac; synchronized (Monitor.this) { sf = Monitor.this.schedulerFuture; + s = Monitor.this.subject; ac = Monitor.this.acc; } PrivilegedAction action = new PrivilegedAction<>() { @@ -1531,10 +1541,20 @@ public Void run() { return null; } }; - if (ac == null) { - throw new SecurityException("AccessControlContext cannot be null"); + if (!SharedSecrets.getJavaLangAccess().allowSecurityManager()) { + // No SecurityManager permitted: + if (s == null) { + action.run(); + } else { + Subject.doAs(s, action); + } + } else { + if (ac == null) { + throw new SecurityException("AccessControlContext cannot be null"); + } + // ACC means SM is permitted. + AccessController.doPrivileged(action, ac); } - AccessController.doPrivileged(action, ac); synchronized (Monitor.this) { if (Monitor.this.isActive() && Monitor.this.schedulerFuture == sf) { diff --git a/test/jdk/javax/management/monitor/StartStopTest.java b/test/jdk/javax/management/monitor/StartStopTest.java index 8e5490aeaae..4779f40cdc7 100644 --- a/test/jdk/javax/management/monitor/StartStopTest.java +++ b/test/jdk/javax/management/monitor/StartStopTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,9 +32,17 @@ * * @run clean StartStopTest * @run build StartStopTest + * * @run main/othervm/timeout=300 StartStopTest 1 * @run main/othervm/timeout=300 StartStopTest 2 * @run main/othervm/timeout=300 StartStopTest 3 + * @run main/othervm/timeout=300 -Djava.security.manager=allow StartStopTest 1 + * @run main/othervm/timeout=300 -Djava.security.manager=allow StartStopTest 2 + * @run main/othervm/timeout=300 -Djava.security.manager=allow StartStopTest 3 + * @run main/othervm/timeout=300/policy=all.policy StartStopTest 1 + * @run main/othervm/timeout=300/policy=all.policy StartStopTest 2 + * @run main/othervm/timeout=300/policy=all.policy StartStopTest 3 + * * @run main/othervm/timeout=300 -Djmx.x.monitor.maximum.pool.size=5 StartStopTest 1 * @run main/othervm/timeout=300 -Djmx.x.monitor.maximum.pool.size=5 StartStopTest 2 * @run main/othervm/timeout=300 -Djmx.x.monitor.maximum.pool.size=5 StartStopTest 3 diff --git a/test/jdk/javax/management/monitor/ThreadPoolAccTest.java b/test/jdk/javax/management/monitor/ThreadPoolAccTest.java index 542fa9c657c..508cefddf94 100644 --- a/test/jdk/javax/management/monitor/ThreadPoolAccTest.java +++ b/test/jdk/javax/management/monitor/ThreadPoolAccTest.java @@ -30,13 +30,19 @@ * * @run clean ThreadPoolAccTest * @run build ThreadPoolAccTest + * + * @run main/othervm ThreadPoolAccTest * @run main/othervm -Djava.security.manager=allow ThreadPoolAccTest + * @run main/othervm -Djava.security.manager=allow -DThreadPoolAccTest.useGetSubjectACC=true ThreadPoolAccTest + * @run main/othervm/policy=all.policy ThreadPoolAccTest + * @run main/othervm/policy=all.policy -DThreadPoolAccTest.useGetSubjectACC=true ThreadPoolAccTest */ import java.security.AccessController; import java.security.PrivilegedAction; import java.util.Date; import java.util.Set; +import java.util.concurrent.Callable; import javax.management.MBeanServer; import javax.management.MBeanServerFactory; import javax.management.ObjectName; @@ -67,7 +73,9 @@ public String getString() { return ""; } private void setPrincipal() { - Subject subject = Subject.getSubject(AccessController.getContext()); + // Use Subject.current() unless test Property is set. + Subject subject = Boolean.getBoolean("ThreadPoolAccTest.useGetSubjectACC") ? + Subject.getSubject(AccessController.getContext()) : Subject.current(); Set principals = subject.getPrincipals(JMXPrincipal.class); principal = principals.iterator().next().getName(); } @@ -136,7 +144,9 @@ public Void run() { return null; } }; - Subject.doAs(subject, action); + // Subject.doAs(subject, action); + Callable c = (Callable) () -> action.run(); + Subject.callAs(subject, c); } sleep(500); // wait for getX method to be called, which calls setPrincipal diff --git a/test/jdk/javax/management/monitor/all.policy b/test/jdk/javax/management/monitor/all.policy new file mode 100644 index 00000000000..cb9dbed32cc --- /dev/null +++ b/test/jdk/javax/management/monitor/all.policy @@ -0,0 +1,3 @@ +grant { + permission java.security.AllPermission; +}; diff --git a/test/jdk/javax/management/remote/mandatory/notif/NotificationAccessControllerTest.java b/test/jdk/javax/management/remote/mandatory/notif/NotificationAccessControllerTest.java index 352faea27d1..57db8588ed3 100644 --- a/test/jdk/javax/management/remote/mandatory/notif/NotificationAccessControllerTest.java +++ b/test/jdk/javax/management/remote/mandatory/notif/NotificationAccessControllerTest.java @@ -30,6 +30,8 @@ * java.management/com.sun.jmx.remote.security * @run clean NotificationAccessControllerTest * @run build NotificationAccessControllerTest + * + * @run main/othervm NotificationAccessControllerTest * @run main/othervm -Djava.security.manager=allow NotificationAccessControllerTest */ diff --git a/test/jdk/javax/management/remote/mandatory/notif/NotificationEmissionTest.java b/test/jdk/javax/management/remote/mandatory/notif/NotificationEmissionTest.java index a4c57005853..e57636c87f6 100644 --- a/test/jdk/javax/management/remote/mandatory/notif/NotificationEmissionTest.java +++ b/test/jdk/javax/management/remote/mandatory/notif/NotificationEmissionTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,7 +31,9 @@ * * @run clean NotificationEmissionTest * @run build NotificationEmissionTest + * * @run main NotificationEmissionTest 1 + * @run main/othervm -Djava.security.manager=allow NotificationEmissionTest 1 * @run main/othervm -Djava.security.manager=allow NotificationEmissionTest 2 * @run main/othervm -Djava.security.manager=allow NotificationEmissionTest 3 * @run main/othervm -Djava.security.manager=allow NotificationEmissionTest 4 diff --git a/test/jdk/javax/management/remote/mandatory/passwordAccessFile/NonJMXPrincipalsTest.java b/test/jdk/javax/management/remote/mandatory/passwordAccessFile/NonJMXPrincipalsTest.java index f9e04a373f6..796507eeff3 100644 --- a/test/jdk/javax/management/remote/mandatory/passwordAccessFile/NonJMXPrincipalsTest.java +++ b/test/jdk/javax/management/remote/mandatory/passwordAccessFile/NonJMXPrincipalsTest.java @@ -30,6 +30,7 @@ * * @run clean NonJMXPrincipalsTest SimpleStandard SimpleStandardMBean * @run build NonJMXPrincipalsTest SimpleStandard SimpleStandardMBean + * @run main/othervm NonJMXPrincipalsTest * @run main/othervm -Djava.security.manager=allow NonJMXPrincipalsTest */ diff --git a/test/jdk/javax/management/remote/mandatory/passwordAccessFile/PasswordAccessFileTest.java b/test/jdk/javax/management/remote/mandatory/passwordAccessFile/PasswordAccessFileTest.java index d073553d3f5..ae3ec697b39 100644 --- a/test/jdk/javax/management/remote/mandatory/passwordAccessFile/PasswordAccessFileTest.java +++ b/test/jdk/javax/management/remote/mandatory/passwordAccessFile/PasswordAccessFileTest.java @@ -30,6 +30,8 @@ * * @run clean PasswordAccessFileTest SimpleStandard SimpleStandardMBean * @run build PasswordAccessFileTest SimpleStandard SimpleStandardMBean + * + * @run main/othervm PasswordAccessFileTest * @run main/othervm -Djava.security.manager=allow PasswordAccessFileTest */ diff --git a/test/jdk/javax/management/remote/mandatory/passwordAuthenticator/RMIAltAuthTest.java b/test/jdk/javax/management/remote/mandatory/passwordAuthenticator/RMIAltAuthTest.java index e86f9cc8f1a..13d94a87920 100644 --- a/test/jdk/javax/management/remote/mandatory/passwordAuthenticator/RMIAltAuthTest.java +++ b/test/jdk/javax/management/remote/mandatory/passwordAuthenticator/RMIAltAuthTest.java @@ -30,7 +30,10 @@ * java.management/com.sun.jmx.remote.security * @run clean RMIAltAuthTest * @run build RMIAltAuthTest SimpleStandard SimpleStandardMBean + * + * @run main/othervm RMIAltAuthTest * @run main/othervm -Djava.security.manager=allow RMIAltAuthTest + * @run main/othervm -Djava.security.manager=allow -DSimpleStandard.useGetSubjectACC=true RMIAltAuthTest */ import java.io.File; diff --git a/test/jdk/javax/management/remote/mandatory/passwordAuthenticator/RMIPasswdAuthTest.java b/test/jdk/javax/management/remote/mandatory/passwordAuthenticator/RMIPasswdAuthTest.java index 87384e070cd..8897d34c4e8 100644 --- a/test/jdk/javax/management/remote/mandatory/passwordAuthenticator/RMIPasswdAuthTest.java +++ b/test/jdk/javax/management/remote/mandatory/passwordAuthenticator/RMIPasswdAuthTest.java @@ -30,7 +30,10 @@ * java.management/com.sun.jmx.remote.security * @run clean RMIPasswdAuthTest * @run build RMIPasswdAuthTest SimpleStandard SimpleStandardMBean + * + * @run main/othervm RMIPasswdAuthTest * @run main/othervm -Djava.security.manager=allow RMIPasswdAuthTest + * @run main/othervm -Djava.security.manager=allow -DSimpleStandard.useGetSubjectACC=true RMIPasswdAuthTest */ import java.io.File; diff --git a/test/jdk/javax/management/remote/mandatory/passwordAuthenticator/SimpleStandard.java b/test/jdk/javax/management/remote/mandatory/passwordAuthenticator/SimpleStandard.java index bc503b3e291..b5657498365 100644 --- a/test/jdk/javax/management/remote/mandatory/passwordAuthenticator/SimpleStandard.java +++ b/test/jdk/javax/management/remote/mandatory/passwordAuthenticator/SimpleStandard.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2024, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -152,8 +152,8 @@ public int getNbResets() { * type JMXPrincipal and refers to the "monitorRole" identity. */ private void checkSubject() { - AccessControlContext acc = AccessController.getContext(); - Subject subject = Subject.getSubject(acc); + Subject subject = Boolean.getBoolean("SimpleStandard.useGetSubjectACC") ? + Subject.getSubject(AccessController.getContext()) : Subject.current(); Set principals = subject.getPrincipals(); Principal principal = (Principal) principals.iterator().next(); if (!(principal instanceof JMXPrincipal)) diff --git a/test/jdk/javax/management/security/AuthorizationTest.java b/test/jdk/javax/management/security/AuthorizationTest.java index 2c48dbffb56..cdb412e139b 100644 --- a/test/jdk/javax/management/security/AuthorizationTest.java +++ b/test/jdk/javax/management/security/AuthorizationTest.java @@ -29,9 +29,15 @@ * @modules java.management.rmi * @library /test/lib * @compile Simple.java + * + * @run main/othervm/timeout=300 -DDEBUG_STANDARD -Dusername=username1 -Dpassword=password1 AuthorizationTest -server -mapType x.access.file;x.password.file -populate -client -mapType credentials + * @run main/othervm/timeout=300 -DDEBUG_STANDARD -Dusername=username2 -Dpassword=password2 AuthorizationTest -server -mapType x.access.file;x.password.file -populate -client -mapType credentials -expectedCreateException -expectedSetException -expectedInvokeException + * @run main/othervm/timeout=300 -DDEBUG_STANDARD -Dusername=username6 -Dpassword=password6 AuthorizationTest -server -mapType x.access.file;x.password.file -populate -client -mapType credentials -expectedCreateException -expectedGetException -expectedSetException -expectedInvokeException + * * @run main/othervm/timeout=300 -Djava.security.manager=allow -DDEBUG_STANDARD -Dusername=username1 -Dpassword=password1 AuthorizationTest -server -mapType x.access.file;x.password.file -populate -client -mapType credentials * @run main/othervm/timeout=300 -Djava.security.manager=allow -DDEBUG_STANDARD -Dusername=username2 -Dpassword=password2 AuthorizationTest -server -mapType x.access.file;x.password.file -populate -client -mapType credentials -expectedCreateException -expectedSetException -expectedInvokeException * @run main/othervm/timeout=300 -Djava.security.manager=allow -DDEBUG_STANDARD -Dusername=username6 -Dpassword=password6 AuthorizationTest -server -mapType x.access.file;x.password.file -populate -client -mapType credentials -expectedCreateException -expectedGetException -expectedSetException -expectedInvokeException + * * @run main/othervm/timeout=300/policy=java.policy.authorization -DDEBUG_STANDARD -Dusername=username1 -Dpassword=password1 AuthorizationTest -server -mapType x.password.file -populate -client -mapType credentials * @run main/othervm/timeout=300/policy=java.policy.authorization -DDEBUG_STANDARD -Dusername=username3 -Dpassword=password3 AuthorizationTest -server -mapType x.password.file -populate -client -mapType credentials -expectedGetException * @run main/othervm/timeout=300/policy=java.policy.authorization -DDEBUG_STANDARD -Dusername=username5 -Dpassword=password5 AuthorizationTest -server -mapType x.password.file -populate -client -mapType credentials -expectedCreateException -expectedGetException -expectedSetException -expectedInvokeException diff --git a/test/jdk/sun/management/jmxremote/bootstrap/RmiBootstrapTest.java b/test/jdk/sun/management/jmxremote/bootstrap/RmiBootstrapTest.java index 770b642088a..09e32174c74 100644 --- a/test/jdk/sun/management/jmxremote/bootstrap/RmiBootstrapTest.java +++ b/test/jdk/sun/management/jmxremote/bootstrap/RmiBootstrapTest.java @@ -61,6 +61,7 @@ * * @library /test/lib * + * @run main/othervm/timeout=300 RmiBootstrapTest .*_test.*.in * @run main/othervm/timeout=300 -Djava.security.manager=allow RmiBootstrapTest .*_test.*.in * */ @@ -72,6 +73,7 @@ * * @library /test/lib * + * @run main/othervm/timeout=300 RmiBootstrapTest .*_ssltest.*.in * @run main/othervm/timeout=300 -Djava.security.manager=allow RmiBootstrapTest .*_ssltest.*.in * */ From 78682fe78e18268b1857855c3595b4d118808c66 Mon Sep 17 00:00:00 2001 From: Magnus Ihse Bursie Date: Wed, 19 Jun 2024 19:12:31 +0000 Subject: [PATCH 62/70] 8329288: Update Visual Studio visibility support for POSIX functions Reviewed-by: kbarrett --- make/autoconf/flags-cflags.m4 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/make/autoconf/flags-cflags.m4 b/make/autoconf/flags-cflags.m4 index 09395202f22..da63a6dba06 100644 --- a/make/autoconf/flags-cflags.m4 +++ b/make/autoconf/flags-cflags.m4 @@ -502,12 +502,12 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER], elif test "x$TOOLCHAIN_TYPE" = xclang; then ALWAYS_DEFINES_JVM="-D_GNU_SOURCE" elif test "x$TOOLCHAIN_TYPE" = xmicrosoft; then - # Access APIs for Windows 8 and above - # see https://docs.microsoft.com/en-us/cpp/porting/modifying-winver-and-win32-winnt?view=msvc-170 - ALWAYS_DEFINES_JDK="-DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0602 \ - -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -DWIN32 -DIAL" - ALWAYS_DEFINES_JVM="-DNOMINMAX -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0602 \ - -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE" + # _WIN32_WINNT=0x0602 means access APIs for Windows 8 and above. See + # https://docs.microsoft.com/en-us/cpp/porting/modifying-winver-and-win32-winnt?view=msvc-170 + ALWAYS_DEFINES="-DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0602 \ + -D_CRT_DECLARE_NONSTDC_NAMES -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS" + ALWAYS_DEFINES_JDK="$ALWAYS_DEFINES -DWIN32 -DIAL" + ALWAYS_DEFINES_JVM="$ALWAYS_DEFINES -DNOMINMAX" fi ############################################################################### From 4e58d8c897d845cfa73780264481da174d46acb4 Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Wed, 19 Jun 2024 23:23:52 +0000 Subject: [PATCH 63/70] 8309821: Link to hidden classes section in Class specification for Class::isHidden Reviewed-by: iris, rriggs --- src/java.base/share/classes/java/lang/Class.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/java.base/share/classes/java/lang/Class.java b/src/java.base/share/classes/java/lang/Class.java index 4bc7ccab834..5b378077d56 100644 --- a/src/java.base/share/classes/java/lang/Class.java +++ b/src/java.base/share/classes/java/lang/Class.java @@ -4720,6 +4720,7 @@ public Optional describeConstable() { * * @since 15 * @see MethodHandles.Lookup#defineHiddenClass + * @see Class##hiddenClasses Hidden Classes */ @IntrinsicCandidate public native boolean isHidden(); From b211929e05c0acdf7343c3edd025749d573c67b3 Mon Sep 17 00:00:00 2001 From: Sonia Zaldana Calles Date: Thu, 20 Jun 2024 01:36:05 +0000 Subject: [PATCH 64/70] 8334570: Problem list gc/TestAlwaysPreTouchBehavior.java Reviewed-by: ayang, tschatzl --- test/hotspot/jtreg/ProblemList.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/hotspot/jtreg/ProblemList.txt b/test/hotspot/jtreg/ProblemList.txt index c7c76c8fa3a..469a410e31d 100644 --- a/test/hotspot/jtreg/ProblemList.txt +++ b/test/hotspot/jtreg/ProblemList.txt @@ -82,6 +82,13 @@ gc/TestAllocHumongousFragment.java#aggressive 8298781 generic-all gc/TestAllocHumongousFragment.java#iu-aggressive 8298781 generic-all gc/TestAllocHumongousFragment.java#g1 8298781 generic-all gc/TestAllocHumongousFragment.java#static 8298781 generic-all +gc/TestAlwaysPreTouchBehavior.java#ParallelCollector 8334513 generic-all +gc/TestAlwaysPreTouchBehavior.java#SerialCollector 8334513 generic-all +gc/TestAlwaysPreTouchBehavior.java#Shenandoah 8334513 generic-all +gc/TestAlwaysPreTouchBehavior.java#G1 8334513 generic-all +gc/TestAlwaysPreTouchBehavior.java#ZGenerational 8334513 generic-all +gc/TestAlwaysPreTouchBehavior.java#ZSinglegen 8334513 generic-all +gc/TestAlwaysPreTouchBehavior.java#Epsilon 8334513 generic-all gc/stress/gclocker/TestExcessGCLockerCollections.java 8229120 generic-all ############################################################################# From fad6644eabbad6b6d3472206d9db946408aca612 Mon Sep 17 00:00:00 2001 From: Sibabrata Sahoo Date: Thu, 20 Jun 2024 04:18:39 +0000 Subject: [PATCH 65/70] 8333754: Add a Test against ECDSA and ECDH NIST Test vector Reviewed-by: ascarpino --- test/jdk/sun/security/ec/ECDHPrimitive.java | 144 + test/jdk/sun/security/ec/ECDSAPrimitive.java | 429 ++ .../security/ec/KAS_ECC_CDH_PrimitiveTest.txt | 3049 +++++++++ test/jdk/sun/security/ec/SigGen-1.txt | 5879 +++++++++++++++++ 4 files changed, 9501 insertions(+) create mode 100644 test/jdk/sun/security/ec/ECDHPrimitive.java create mode 100644 test/jdk/sun/security/ec/ECDSAPrimitive.java create mode 100644 test/jdk/sun/security/ec/KAS_ECC_CDH_PrimitiveTest.txt create mode 100644 test/jdk/sun/security/ec/SigGen-1.txt diff --git a/test/jdk/sun/security/ec/ECDHPrimitive.java b/test/jdk/sun/security/ec/ECDHPrimitive.java new file mode 100644 index 00000000000..b41b93bc5ff --- /dev/null +++ b/test/jdk/sun/security/ec/ECDHPrimitive.java @@ -0,0 +1,144 @@ +/* + * Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.io.*; +import java.math.BigInteger; +import java.nio.file.Files; +import java.nio.file.Path; +import java.security.*; +import java.security.spec.*; +import java.util.*; +import javax.crypto.*; + +import jdk.test.lib.Asserts; + +/* + * @test + * @bug 8189189 + * @summary Test ECDH primitive operations + * @library /test/lib + * @run main ECDHPrimitive + */ +public class ECDHPrimitive { + + + private static final Map NAME_MAP = Map.of( + "P-256", "secp256r1", + "P-384", "secp384r1", + "P-521", "secp521r1" + ); + + public static void main(String[] args) throws Exception { + Path testFile = Path.of(System.getProperty("test.src"), "KAS_ECC_CDH_PrimitiveTest.txt"); + + ECParameterSpec ecParams = null; + + try (BufferedReader in = Files.newBufferedReader(testFile)) { + Map values = new HashMap<>(); + String line = in.readLine(); + while (line != null) { + line = line.trim(); + if (line.startsWith("#") || line.length() == 0) { + // ignore + } else if (line.startsWith("[")) { + // change curve name + StringTokenizer tok = new StringTokenizer(line, "[]"); + String name = tok.nextToken(); + String curveName = lookupName(name); + + if (curveName == null) { + System.out.println("Unknown curve: " + name + + ". Skipping test"); + ecParams = null; + } else { + AlgorithmParameters params + = AlgorithmParameters.getInstance("EC"); + + params.init(new ECGenParameterSpec(curveName)); + ecParams = params.getParameterSpec( + ECParameterSpec.class); + System.out.println("Testing curve: " + curveName); + } + + } else if (line.startsWith("ZIUT")) { + addKeyValue(line, values); + if (ecParams != null) { + runTest(ecParams, values); + } + } else { + addKeyValue(line, values); + } + + line = in.readLine(); + } + } + } + + private static void runTest(ECParameterSpec ecParams, + Map values) throws Exception { + + byte[] xArr = values.get("QCAVSx"); + BigInteger x = new BigInteger(1, xArr); + byte[] yArr = values.get("QCAVSy"); + BigInteger y = new BigInteger(1, yArr); + ECPoint w = new ECPoint(x, y); + ECPublicKeySpec pubSpec = new ECPublicKeySpec(w, ecParams); + + byte[] dArr = values.get("dIUT"); + BigInteger d = new BigInteger(1, dArr); + ECPrivateKeySpec priSpec = new ECPrivateKeySpec(d, ecParams); + + KeyFactory kf = KeyFactory.getInstance("EC"); + PublicKey pub = kf.generatePublic(pubSpec); + PrivateKey pri = kf.generatePrivate(priSpec); + + KeyAgreement ka = KeyAgreement.getInstance("ECDH"); + ka.init(pri); + ka.doPhase(pub, true); + byte[] secret = ka.generateSecret(); + + byte[] expectedSecret = values.get("ZIUT"); + Asserts.assertEqualsByteArray(secret, expectedSecret, "Incorrect secret value"); + int testIndex = values.get("COUNT")[0]; + System.out.println("Test " + testIndex + " passed."); + } + + private static void addKeyValue(String line, Map values) { + StringTokenizer tok = new StringTokenizer(line, " ="); + String key = tok.nextToken(); + String value = tok.nextToken(); + byte[] valueArr; + if (value.length() <= 2) { + valueArr = new byte[1]; + valueArr[0] = Byte.parseByte(value, 10); + } else { + valueArr = HexFormat.of().parseHex(value); + } + + values.put(key, valueArr); + } + + private static String lookupName(String name) { + return NAME_MAP.get(name); + } +} \ No newline at end of file diff --git a/test/jdk/sun/security/ec/ECDSAPrimitive.java b/test/jdk/sun/security/ec/ECDSAPrimitive.java new file mode 100644 index 00000000000..ba9ed0dec80 --- /dev/null +++ b/test/jdk/sun/security/ec/ECDSAPrimitive.java @@ -0,0 +1,429 @@ +/* + * Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.io.*; +import java.math.BigInteger; +import java.nio.file.Path; +import java.security.*; +import java.security.spec.*; +import java.util.*; + +import sun.security.ec.*; +import sun.security.ec.point.*; +import sun.security.util.ArrayUtil; +import sun.security.util.math.*; +import jdk.test.lib.Asserts; + +/* + * @test + * @bug 8189189 8147502 8295010 + * @summary Test ECDSA primitive operations + * @library /test/lib + * @modules java.base/sun.security.ec java.base/sun.security.ec.point + * java.base/sun.security.util java.base/sun.security.util.math + * @run main ECDSAPrimitive + */ +public class ECDSAPrimitive { + + private static final Map CURVE_NAME_MAP = Map.ofEntries( + Map.entry("P-256", "secp256r1"), + Map.entry("P-384", "secp384r1"), + Map.entry("P-521", "secp521r1") + ); + private static final Set DIGEST_NAME_SET = Set.of( + "SHA-224", + "SHA-256", + "SHA-384", + "SHA-512" + ); + + public static void main(String[] args) throws Exception { + Path siggenFile = Path.of(System.getProperty("test.src"), "SigGen-1.txt"); + + ECParameterSpec ecParams = null; + String digestAlg = null; + + try (BufferedReader in = new BufferedReader(new FileReader( + siggenFile.toFile()))) { + Map values = new HashMap<>(); + String line = in.readLine(); + while (line != null) { + line = line.trim(); + if (line.startsWith("#") || line.length() == 0) { + // ignore + } else if (line.startsWith("[")) { + // change curve and hash + StringTokenizer tok = new StringTokenizer(line, "[,]"); + String name = tok.nextToken(); + String curveName = lookUpCurveName(name); + + String digestName = tok.nextToken(); + digestAlg = lookUpDigestName(digestName); + + if (curveName == null) { + System.out.println("Unknown curve: " + name + + ". Skipping test"); + ecParams = null; + digestAlg = null; + } + if (digestAlg == null) { + System.out.println("Unknown digest: " + digestName + + ". Skipping test"); + ecParams = null; + digestAlg = null; + } else { + AlgorithmParameters params = + AlgorithmParameters.getInstance("EC", "SunEC"); + params.init(new ECGenParameterSpec(curveName)); + ecParams = params.getParameterSpec( + ECParameterSpec.class); + System.out.println("Testing curve/digest: " + + curveName + "/" + digestAlg); + } + + } else if (line.startsWith("S")) { + addKeyValue(line, values); + if (ecParams != null) { + runTest(ecParams, digestAlg, values); + } + } else { + addKeyValue(line, values); + } + + line = in.readLine(); + } + } + } + + private static void runTest(ECParameterSpec ecParams, String digestAlg, + Map values) throws Exception { + + Optional opsOpt = + ECDSAOperations.forParameters(ecParams); + Optional signerOpt = opsOpt.map(OpsSigner::new); + Signer signer = signerOpt.orElseGet(() -> new JCASigner(ecParams)); + + byte[] msg = values.get("Msg"); + MessageDigest md = MessageDigest.getInstance(digestAlg); + byte[] digest = md.digest(msg); + + // all operations accept little endian private key and nonce + byte[] privateKey = values.get("d"); + byte[] k = values.get("k"); + + byte[] computedSig = signer.sign(privateKey, digest, k); + + int valueLength = computedSig.length / 2; + byte[] computedR = Arrays.copyOf(computedSig, valueLength); + byte[] expectedR = values.get("R"); + Asserts.assertEquals(new BigInteger(1, expectedR), new BigInteger(1, computedR), "R"); + + byte[] computedS = Arrays.copyOfRange(computedSig, valueLength, + 2 * valueLength); + byte[] expectedS = values.get("S"); + Asserts.assertEquals(new BigInteger(1, expectedS), new BigInteger(1, computedS), "S"); + + // ensure public key is correct + byte[] expectedQx = values.get("Qx"); + byte[] expectedQy = values.get("Qy"); + ECPoint ecPublicKey = + signer.checkPublicKey(privateKey, expectedQx, expectedQy); + + // ensure the verification works + if (!signer.verify(ecPublicKey, digest, computedSig)) { + throw new RuntimeException("Signature did not verify"); + } + + // ensure incorrect signature does not verify + int length = k.length; + computedSig[length / 2] ^= (byte) 1; + if (signer.verify(ecPublicKey, digest, computedSig)) { + throw new RuntimeException("Incorrect signature verified"); + } + computedSig[length / 2] ^= (byte) 1; + computedSig[length + length / 2] ^= (byte) 1; + if (signer.verify(ecPublicKey, digest, computedSig)) { + throw new RuntimeException("Incorrect signature verified"); + } + + System.out.println("Test case passed"); + } + + private static void addKeyValue(String line, Map values) { + StringTokenizer tok = new StringTokenizer(line, " ="); + String key = tok.nextToken(); + String value = tok.nextToken(); + byte[] valueArr; + if (value.length() <= 2) { + valueArr = new byte[1]; + valueArr[0] = Byte.parseByte(value, 10); + } else { + // some values are odd-length big-endian integers + if (value.length() % 2 == 1) { + if (key.equals("Msg")) { + throw new RuntimeException("message length may not be odd"); + } + value = "0" + value; + } + valueArr = HexFormat.of().parseHex(value); + } + + values.put(key, valueArr); + } + + private static String lookUpCurveName(String name) { + return CURVE_NAME_MAP.get(name); + } + + private static String lookUpDigestName(String name) { + return DIGEST_NAME_SET.contains(name) ? name : null; + } + + public static boolean verifySignedDigest(ECDSAOperations ops, ECPoint publicKey, + byte[] digest, byte[] signature) { + + try { + return verifySignedDigestImpl(ops, publicKey, digest, signature); + } catch (ImproperSignatureException ex) { + return false; + } + } + + private static boolean verifySignedDigestImpl(ECDSAOperations ops, ECPoint publicKey, + byte[] digest, byte[] signature) + throws ImproperSignatureException { + + ECOperations ecOps = ops.getEcOperations(); + IntegerFieldModuloP orderField = ecOps.getOrderField(); + int orderBits = orderField.getSize().bitLength(); + if (orderBits % 8 != 0 && orderBits < digest.length * 8) { + // This implementation does not support truncating digests to + // a length that is not a multiple of 8. + throw new ProviderException("Invalid digest length"); + } + // decode signature as (r, s) + byte[] rBytes = Arrays.copyOf(signature, signature.length / 2); + ArrayUtil.reverse(rBytes); + byte[] sBytes = Arrays.copyOfRange(signature, signature.length / 2, + signature.length); + ArrayUtil.reverse(sBytes); + + // convert r and s to field elements + // TODO: reject non-canonical values + IntegerModuloP s = orderField.getElement(sBytes); + IntegerModuloP r = orderField.getElement(rBytes); + + // truncate the digest and interpret as a field element + int length = (orderBits + 7) / 8; + int lengthE = Math.min(length, digest.length); + byte[] E = new byte[lengthE]; + System.arraycopy(digest, 0, E, 0, lengthE); + ArrayUtil.reverse(E); + IntegerModuloP e = orderField.getElement(E); + + // perform the calculation + IntegerModuloP sInverse = s.multiplicativeInverse(); + IntegerModuloP u1 = e.multiply(sInverse); + IntegerModuloP u2 = r.multiply(sInverse); + + byte[] u1Bytes = u1.asByteArray(length); + byte[] u2Bytes = u2.asByteArray(length); + AffinePoint publicKeyPoint = ECDSAOperations.toAffinePoint(publicKey, + ecOps.getField()); + MutablePoint R = ecOps.multiply(publicKeyPoint, u2Bytes); + AffinePoint a1 = ops.basePointMultiply(u1Bytes); + MutablePoint p2 = new ProjectivePoint.Mutable( + a1.getX(false).mutable(), + a1.getY(false).mutable(), + ecOps.getField().get1().mutable()); + ecOps.setSum(R, p2); + + // can't continue if R is neutral + if (ecOps.isNeutral(R)) { + throw new ImproperSignatureException(); + } + + IntegerModuloP xr = R.asAffine().getX(); + byte[] temp = new byte[length]; + xr.asByteArray(temp); + IntegerModuloP v = orderField.getElement(temp); + + // Check that v==r by subtracting and comparing result to 0 + v.subtract(r).mutable().asByteArray(temp); + return ECOperations.allZero(temp); + } + + private interface Signer { + byte[] sign(byte[] privateKey, byte[] digest, byte[] k); + + ECPoint checkPublicKey(byte[] privateKey, byte[] expectedQx, + byte[] expectedQy); + + boolean verify(ECPoint ecPublicKey, byte[] digest, byte[] sig); + } + + private static class FixedRandom extends SecureRandom { + + private final byte[] val; + + public FixedRandom(byte[] val) { + BigInteger biVal = new BigInteger(1, val); + biVal = biVal.subtract(BigInteger.ONE); + byte[] temp = biVal.toByteArray(); + this.val = new byte[val.length]; + int inStartPos = Math.max(0, temp.length - val.length); + int outStartPos = Math.max(0, val.length - temp.length); + System.arraycopy(temp, inStartPos, this.val, outStartPos, + temp.length - inStartPos); + } + + @Override + public void nextBytes(byte[] bytes) { + Arrays.fill(bytes, (byte) 0); + int copyLength = Math.min(val.length, bytes.length - 2); + System.arraycopy(val, 0, bytes, bytes.length - copyLength - 2, + copyLength); + } + } + + // The signature verification function lives here. It is not used in the + // JDK, but it is working, and the performance is roughly as good as the + // native implementation in the JDK. + + private static class JCASigner implements Signer { + + private static final String SIG_ALG = "NONEwithECDSAinP1363Format"; + private final ECParameterSpec ecParams; + + private JCASigner(ECParameterSpec ecParams) { + this.ecParams = ecParams; + } + + @Override + public byte[] sign(byte[] privateKey, byte[] digest, byte[] k) { + + try { + + KeyFactory kf = KeyFactory.getInstance("EC", "SunEC"); + BigInteger s = new BigInteger(1, privateKey); + ECPrivateKeySpec privKeySpec = + new ECPrivateKeySpec(s, ecParams); + PrivateKey privKey = kf.generatePrivate(privKeySpec); + + Signature sig = Signature.getInstance(SIG_ALG, "SunEC"); + sig.initSign(privKey, new FixedRandom(k)); + sig.update(digest); + return sig.sign(); + } catch (Exception ex) { + throw new RuntimeException(ex); + } + } + + @Override + public ECPoint checkPublicKey(byte[] privateKey, byte[] expectedQx, + byte[] expectedQy) { + // no way to compute the public key using the API + BigInteger x = new BigInteger(1, expectedQx); + BigInteger y = new BigInteger(1, expectedQy); + return new ECPoint(x, y); + } + + @Override + public boolean verify(ECPoint ecPublicKey, byte[] digest, + byte[] providedSig) { + + try { + KeyFactory kf = KeyFactory.getInstance("EC", "SunEC"); + ECPublicKeySpec pubKeySpec = + new ECPublicKeySpec(ecPublicKey, ecParams); + PublicKey pubKey = kf.generatePublic(pubKeySpec); + + Signature sig = Signature.getInstance(SIG_ALG, "SunEC"); + sig.initVerify(pubKey); + sig.update(digest); + return sig.verify(providedSig); + } catch (Exception ex) { + throw new RuntimeException(ex); + } + } + } + + private static class OpsSigner implements Signer { + + private final ECDSAOperations ops; + + public OpsSigner(ECDSAOperations ops) { + this.ops = ops; + } + + @Override + public byte[] sign(byte[] privateKey, byte[] digest, byte[] k) { + + privateKey = privateKey.clone(); + ArrayUtil.reverse(privateKey); + k = k.clone(); + ArrayUtil.reverse(k); + ECDSAOperations.Nonce nonce = new ECDSAOperations.Nonce(k); + try { + return ops.signDigest(privateKey, digest, nonce); + } catch (Exception ex) { + throw new RuntimeException(ex); + } + } + + @Override + public ECPoint checkPublicKey(byte[] privateKey, byte[] expectedQx, + byte[] expectedQy) { + + privateKey = privateKey.clone(); + ArrayUtil.reverse(privateKey); + AffinePoint publicKey = ops.basePointMultiply(privateKey); + int length = privateKey.length; + byte[] computedQx = new byte[length]; + byte[] computedQy = new byte[length]; + publicKey.getX().asByteArray(computedQx); + ArrayUtil.reverse(computedQx); + Asserts.assertEqualsByteArray(expectedQx, computedQx, "Qx"); + publicKey.getY().asByteArray(computedQy); + ArrayUtil.reverse(computedQy); + Asserts.assertEqualsByteArray(expectedQy, computedQy, "Qy"); + BigInteger bigX = publicKey.getX().asBigInteger(); + BigInteger bigY = publicKey.getY().asBigInteger(); + return new ECPoint(bigX, bigY); + } + + @Override + public boolean verify(ECPoint publicKey, byte[] digest, byte[] sig) { + return verifySignedDigest(ops, publicKey, digest, sig); + } + } + + /* + * An exception indicating that a signature is not formed correctly. + */ + private static class ImproperSignatureException extends Exception { + + private static final long serialVersionUID = 1; + } + +} diff --git a/test/jdk/sun/security/ec/KAS_ECC_CDH_PrimitiveTest.txt b/test/jdk/sun/security/ec/KAS_ECC_CDH_PrimitiveTest.txt new file mode 100644 index 00000000000..00da4fa3aef --- /dev/null +++ b/test/jdk/sun/security/ec/KAS_ECC_CDH_PrimitiveTest.txt @@ -0,0 +1,3049 @@ +# CAVS 14.1 +# ECC CDH Primitive (SP800-56A Section 5.7.1.2) Test Information for "testecccdh" +# Curves tested: Curves tested: P-192 P-224 P-256 P-384 P-521 K-163 K-233 K-283 K-409 K-571 B-163 B-233 B-283 B-409 B-571 +# Generated on Mon Nov 19 10:52:17 2012 + +[P-192] + +COUNT = 0 +QCAVSx = 42ea6dd9969dd2a61fea1aac7f8e98edcc896c6e55857cc0 +QCAVSy = dfbe5d7c61fac88b11811bde328e8a0d12bf01a9d204b523 +dIUT = f17d3fea367b74d340851ca4270dcb24c271f445bed9d527 +QIUTx = b15053401f57285637ec324c1cd2139e3a67de3739234b37 +QIUTy = f269c158637482aad644cd692dd1d3ef2c8a7c49e389f7f6 +ZIUT = 803d8ab2e5b6e6fca715737c3a82f7ce3c783124f6d51cd0 + +COUNT = 1 +QCAVSx = deb5712fa027ac8d2f22c455ccb73a91e17b6512b5e030e7 +QCAVSy = 7e2690a02cc9b28708431a29fb54b87b1f0c14e011ac2125 +dIUT = 56e853349d96fe4c442448dacb7cf92bb7a95dcf574a9bd5 +QIUTx = c00d435716ffea53fd8c162792414c37665187e582716539 +QIUTy = ab711c62aa71a5a18e8a3c48f89dc6fa52fac0108e52a8a0 +ZIUT = c208847568b98835d7312cef1f97f7aa298283152313c29d + +COUNT = 2 +QCAVSx = 4edaa8efc5a0f40f843663ec5815e7762dddc008e663c20f +QCAVSy = 0a9f8dc67a3e60ef6d64b522185d03df1fc0adfd42478279 +dIUT = c6ef61fe12e80bf56f2d3f7d0bb757394519906d55500949 +QIUTx = e184bc182482f3403c8787b83842477467fcd011db0f6c64 +QIUTy = f9d1c14142f40de8639db97d51a63d2cce1007ccf773cdcb +ZIUT = 87229107047a3b611920d6e3b2c0c89bea4f49412260b8dd + +COUNT = 3 +QCAVSx = 8887c276edeed3e9e866b46d58d895c73fbd80b63e382e88 +QCAVSy = 04c5097ba6645e16206cfb70f7052655947dd44a17f1f9d5 +dIUT = e6747b9c23ba7044f38ff7e62c35e4038920f5a0163d3cda +QIUTx = 2b838dbe73735f37a39a78d3195783d26991e86ff4d92d1a +QIUTy = 60d344942274489f98903b2e7f93f8d197fc9ae60a0ed53a +ZIUT = eec0bed8fc55e1feddc82158fd6dc0d48a4d796aaf47d46c + +COUNT = 4 +QCAVSx = 0d045f30254adc1fcefa8a5b1f31bf4e739dd327cd18d594 +QCAVSy = 542c314e41427c08278a08ce8d7305f3b5b849c72d8aff73 +dIUT = beabedd0154a1afcfc85d52181c10f5eb47adc51f655047d +QIUTx = 1f65cf6e8978e1c1bc10bb61a7db311de310088c8cf9768b +QIUTy = f7d438168e7f42ab14b16af53a7a2f646ff40b53d74cbcc7 +ZIUT = 716e743b1b37a2cd8479f0a3d5a74c10ba2599be18d7e2f4 + +COUNT = 5 +QCAVSx = fb35ca20d2e96665c51b98e8f6eb3d79113508d8bccd4516 +QCAVSy = 368eec0d5bfb847721df6aaff0e5d48c444f74bf9cd8a5a7 +dIUT = cf70354226667321d6e2baf40999e2fd74c7a0f793fa8699 +QIUTx = 5f4844ffcce61005d24f737db98675e92f7b6543aeb6106c +QIUTy = 5424f598139215d389b6b12b86d58014857f2ddadb540f51 +ZIUT = f67053b934459985a315cb017bf0302891798d45d0e19508 + +COUNT = 6 +QCAVSx = 824752960c1307e5f13a83da21c7998ca8b5b00b9549f6d0 +QCAVSy = bc52d91e234363bc32ee0b6778f25cd8c1847510f4348b94 +dIUT = fe942515237fffdd7b4eb5c64909eee4856a076cdf12bae2 +QIUTx = e6369df79b207b8b8679f7c869cfc264859d1ab55aa401e8 +QIUTy = 1f99c71f801a30b52f74da6e5e6dbb62ee4c5da1090cc020 +ZIUT = 75822971193edd472bf30151a782619c55ad0b279c9303dd + +COUNT = 7 +QCAVSx = 10bb57020291141981f833b4749e5611034b308e84011d21 +QCAVSy = e1cacd6b7bd17ed8ddb50b6aee0654c35f2d0eddc1cffcf6 +dIUT = 33fed10492afa5bea0333c0af12cac940c4d222455bcd0fe +QIUTx = ef0b28afc41637d737f42e4c8aaceadc84ba2e0b849ca18c +QIUTy = 57797942e552173bba17f73278e029f42335068bd770ddf2 +ZIUT = 67cba2cbb69ee78bf1abafb0e6fbe33fa2094c128d59652d + +COUNT = 8 +QCAVSx = 5192fce4185a7758ea1bc56e0e4f4e8b2dce32348d0dced1 +QCAVSy = 20989981beaaf0006d88a96e7971a2fa3a33ba46047fc7ba +dIUT = f3557c5d70b4c7954960c33568776adbe8e43619abe26b13 +QIUTx = d70112c5f0f0844386494ac1ad99dce2214134176ebfb9af +QIUTy = d3c187a038510ab31d459e2b7af1a380dd7576af06267548 +ZIUT = cf99a2770a386ca0137d1eca0a226e484297ac3c513f3631 + +COUNT = 9 +QCAVSx = 26d019dbe279ead01eed143a91601ada26e2f42225b1c62b +QCAVSy = 6ca653f08272e0386fc9421fbd580093d7ae6301bca94476 +dIUT = 586cfba1c6e81766ed52828f177b1be14ebbc5b83348c311 +QIUTx = 58b3c63e56bec9d696bf9a88df2873738391f76368aa2b49 +QIUTy = 5776773b261faf7ba2fdc4fe43b92c0b1c7a2fd054a43650 +ZIUT = 576331e2b4fb38a112810e1529834de8307fb0a0d2756877 + +COUNT = 10 +QCAVSx = 539bc40fe20a0fb267888b647b03eaaf6ec20c02a1e1f8c8 +QCAVSy = 69095e5bb7b4d44c3278a7ee6beca397c45246da9a34c8be +dIUT = cad8100603a4f65be08d8fc8a1b7e884c5ff65deb3c96d99 +QIUTx = b7fcc0f52c7a411edbed39e10bf02b6ae0f26614c6b325a2 +QIUTy = 47483b26eb67776de2b93ab7119d5447573739e3d55e72fb +ZIUT = 902f4501916a0dd945554c3a37b3d780d375a6da713197c4 + +COUNT = 11 +QCAVSx = 5d343ddb96318fb4794d10f6c573f99fee5d0d57b996250f +QCAVSy = 99fbdf9d97dd88ad410235dac36e5b92ce2824b8e587a82c +dIUT = 1edd879cc5c79619cae6c73a691bd5a0395c0ef3b356fcd2 +QIUTx = 6ce6adb2c30808f590048c33dffad4524ebf7a5fd39b747b +QIUTy = 4966bd2f3d00569b4d4c0409fbd7a2db752f6d09bca8c25f +ZIUT = 46e4de335054d429863218ae33636fc9b89c628b64b506c7 + +COUNT = 12 +QCAVSx = 8d3db9bdce137ffbfb891388c37df6c0cbc90aa5e5376220 +QCAVSy = 135d30b5cb660eef8764ffc744f15c1b5d6dc06ba4416d37 +dIUT = 460e452273fe1827602187ad3bebee65cb84423bb4f47537 +QIUTx = d1bd3a3efabf4767fe6380bdf0dbf49d52d4cf0cbb89404c +QIUTy = c150c2b4c8b3aa35f765f847e4f7f8fd8704d241a181ee99 +ZIUT = 1bfe9e5a20ac7a38d8f605b425bb9030be31ef97c101c76c + +COUNT = 13 +QCAVSx = 9e0a6949519c7f5be68c0433c5fdf13064aa13fb29483dc3 +QCAVSy = e1c8ba63e1f471db23185f50d9c871edea21255b3a63b4b7 +dIUT = b970365008456f8758ecc5a3b33cf3ae6a8d568107a52167 +QIUTx = c1b8610c8c63f8d4abda093b9a11a566044bf65c6faa8999 +QIUTy = a5bc4b3ca095382e9738aee95fe9479b17879b3ad5295559 +ZIUT = 0e8c493a4adc445dc9288a3b9b272599224054592d7265b3 + +COUNT = 14 +QCAVSx = be088238902e9939b3d054eeeb8492daf4bdcf09a2ab77f1 +QCAVSy = 58d6749a3a923dc80440f2661fd35b651617e65294b46375 +dIUT = 59c15b8a2464e41dfe4371c7f7dadf470ae425544f8113bd +QIUTx = 1fe776f73567b6ac0b0d6764164de6c5be751ba8d1ff455e +QIUTy = 4c160bf38afb2b71f684261664115ce874553e8b059432d2 +ZIUT = 0f1991086b455ded6a1c4146f7bf59fe9b495de566ebc6bf + +COUNT = 15 +QCAVSx = bf5ae05025e1be617e666d87a4168363873d5761b376b503 +QCAVSy = e1e6e38b372b6bee0ff5b3502d83735e3b2c26825e4f0fcc +dIUT = a6e9b885c66b959d1fc2708d591b6d3228e49eb98f726d61 +QIUTx = 632bb7651dbf49dde9dd125d13fb234e06617723beed3d1b +QIUTy = f4ad5209638488397c5f44f994dd7479807e79f4887d2e71 +ZIUT = b30f2127c34df35aaa91dbf0bbe15798e799a03ed11698c1 + +COUNT = 16 +QCAVSx = 6cc4feed84c7ab0d09005d660ed34de6955a9461c4138d11 +QCAVSy = 31225f33864ed48da06fa45a913b46cf42557742e35085e6 +dIUT = bdb754096ffbfbd8b0f3cb046ccb7ca149c4e7192067a3ee +QIUTx = d9c098d421d741f6faab116f3e4731d28c5558e19fe112a1 +QIUTy = 38d4dc48ccdb1d3ed8d31fd06784a4f87a68aec1cbd5b08f +ZIUT = 64a5c246599d3e8177a2402a1110eb81e6c456ab4edb5127 + +COUNT = 17 +QCAVSx = 36157315bee7afedded58c4e8ba14d3421c401e51135bcc9 +QCAVSy = 37c297ca703f77c52bb062d8ce971db84097ba0c753a418f +dIUT = d5bcf2534dafc3d99964c7bd63ab7bd15999fe56dd969c42 +QIUTx = fda1d5d28d6fe0e7909d6a8bafa7824db5572ab92ffe7de6 +QIUTy = 134a297c1d9c8bbab249abacd951ed11e5a99f92e7991572 +ZIUT = 017b8ca53c82fab163da2ab783966a39e061b32c8cfa334d + +COUNT = 18 +QCAVSx = 98464d47f0256f8292e027e8c92582ea77cf9051f5ce8e5d +QCAVSy = 449552ef7578be96236fe5ed9d0643c0bb6c5a9134b0108d +dIUT = 43d4b9df1053be5b4268104c02244d3bf9594b010b46a8b2 +QIUTx = c3020b7091463d788f1f1d76f7cfeec82ecdb3b7d99c345c +QIUTy = 9a7710d5179591d8f3df0aa122301768ae7db7eee2d7f583 +ZIUT = 340ef3db3dbebdd91c62c3d4e1a3da2c7c52a3338b865259 + +COUNT = 19 +QCAVSx = 563eb66c334cf6f123bf04c7803b48a3110214237e983bf5 +QCAVSy = 0f351104819199ef07c9a6051d20758f3af79027ea66a53f +dIUT = 94cac2c2ca714746401670d94edbf3f677867b5a03bee7ad +QIUTx = b18554a2e743ef0aa2f040987c4c451004e096df3d80ddae +QIUTy = 6e3e2c618f896e36ba620077684b70a05ffb79bf5e6c7640 +ZIUT = 2162144921df5103d0e6a650fb13fd246f4738d0896ce92f + +COUNT = 20 +QCAVSx = 86828c4ac92b5507618aec7873a1d4fc6543c5be33cf3078 +QCAVSy = b22ca72437545e10d6d4f052422eb898b737a4b8543ee550 +dIUT = 2a3a9e33c8cc3107a9f9265c3bdea1206570e86f92ac7014 +QIUTx = a7ba38be1bc669dd23ccfcee0645b1f0db8cf942deafaeb6 +QIUTy = b82db79d80cd0e37f28d4163adc389dee8fc7797b5c9831b +ZIUT = 4c69e7feed4b11159adfc16a6047a92572ea44e0740b23af + +COUNT = 21 +QCAVSx = 6700a102437781a9581da2bc25ced5abf419da91d3c803df +QCAVSy = 71396c9cf08bcd91854e3e6e42d8c657ce0f27ab77a9dc4b +dIUT = 4a6b78a98ac98fa8e99a8ece08ec0251125f85c6fd0e289b +QIUTx = e769dbbcd5ce2d83514b768d3d2d5aa0bcd8f66af15f5500 +QIUTy = 2fc6d0b039e0f28f74fbeffe9e883d4dd72296e4e95cae71 +ZIUT = 46072acefd67bff50de355ca7a31fa6be59f26e467587259 + +COUNT = 22 +QCAVSx = a82f354cf97bee5d22dc6c079f2902ead44d96a8f614f178 +QCAVSy = a654a9aa8a1a0802f2ce0ee8a0f4ebe96dee1b37464b1ff2 +dIUT = c5a6491d78844d6617ef33be6b8bd54da221450885d5950f +QIUTx = db1b24f7466bc154e9d7d2c3ca52dcfe0bfc9563c5fdb6f3 +QIUTy = 1c74fbbf5bd99921f1a9a744f8e1cf770bd6a76a772b3003 +ZIUT = ec5580eabca9f3389d2b427ddf6e49e26d629afd03fa766e + +COUNT = 23 +QCAVSx = 3cec21b28668a12a2cf78e1a8e55d0efe065152fffc34718 +QCAVSy = 1029557beba4ff1992bd21c23cb4825f6dae70e3318fd1ca +dIUT = 2ba2703c5e23f6463c5b88dc37292fabd3399b5e1fb67c05 +QIUTx = 7543148906cef9b37a71a7c08363cdd3bba50142d65241aa +QIUTy = 8b3a6973de8dc271e27c1ead1e962fdaae3710c724daac38 +ZIUT = 7f3929dd3cbf7673bc30d859d90b880307475f800660ea32 + +COUNT = 24 +QCAVSx = 7082644715b8b731f8228b5118e7270d34d181f361a221fc +QCAVSy = 464649d6c88ca89614488a1cc7b8442bb42f9fb3020a3d76 +dIUT = 836118c6248f882e9147976f764826c1a28755a6102977d5 +QIUTx = fcd345a976c720caaa97de6697226825615e1287a9eff67e +QIUTy = 58ea42edbeeafca9ff44cfd7f29abd2cbde7626d79e422c9 +ZIUT = 72e88f3ea67d46d46dbf83926e7e2a6b85b54536741e6d2c + + +[P-224] + +COUNT = 0 +QCAVSx = af33cd0629bc7e996320a3f40368f74de8704fa37b8fab69abaae280 +QCAVSy = 882092ccbba7930f419a8a4f9bb16978bbc3838729992559a6f2e2d7 +dIUT = 8346a60fc6f293ca5a0d2af68ba71d1dd389e5e40837942df3e43cbd +QIUTx = 8de2e26adf72c582d6568ef638c4fd59b18da171bdf501f1d929e048 +QIUTy = 4a68a1c2b0fb22930d120555c1ece50ea98dea8407f71be36efac0de +ZIUT = 7d96f9a3bd3c05cf5cc37feb8b9d5209d5c2597464dec3e9983743e8 + +COUNT = 1 +QCAVSx = 13bfcd4f8e9442393cab8fb46b9f0566c226b22b37076976f0617a46 +QCAVSy = eeb2427529b288c63c2f8963c1e473df2fca6caa90d52e2f8db56dd4 +dIUT = 043cb216f4b72cdf7629d63720a54aee0c99eb32d74477dac0c2f73d +QIUTx = 2f90f5c8eac9c7decdbb97b6c2f715ab725e4fe40fe6d746efbf4e1b +QIUTy = 66897351454f927a309b269c5a6d31338be4c19a5acfc32cf656f45c +ZIUT = ee93ce06b89ff72009e858c68eb708e7bc79ee0300f73bed69bbca09 + +COUNT = 2 +QCAVSx = 756dd806b9d9c34d899691ecb45b771af468ec004486a0fdd283411e +QCAVSy = 4d02c2ca617bb2c5d9613f25dd72413d229fd2901513aa29504eeefb +dIUT = 5ad0dd6dbabb4f3c2ea5fe32e561b2ca55081486df2c7c15c9622b08 +QIUTx = 005bca45d793e7fe99a843704ed838315ab14a5f6277507e9bc37531 +QIUTy = 43e9d421e1486ae5893bfd23c210e5c140d7c6b1ada59d842c9a98de +ZIUT = 3fcc01e34d4449da2a974b23fc36f9566754259d39149790cfa1ebd3 + +COUNT = 3 +QCAVSx = 0f537bf1c1122c55656d25e8aa8417e0b44b1526ae0523144f9921c4 +QCAVSy = f79b26d30e491a773696cc2c79b4f0596bc5b9eebaf394d162fb8684 +dIUT = 0aa6ff55a5d820efcb4e7d10b845ea3c9f9bc5dff86106db85318e22 +QIUTx = 2f96754131e0968198aa78fbe8c201dc5f3581c792de487340d32448 +QIUTy = 61e8a5cd79615203b6d89e9496f9e236fe3b6be8731e743d615519c6 +ZIUT = 49129628b23afcef48139a3f6f59ff5e9811aa746aa4ff33c24bb940 + +COUNT = 4 +QCAVSx = 2b3631d2b06179b3174a100f7f57131eeea8947be0786c3dc64b2239 +QCAVSy = 83de29ae3dad31adc0236c6de7f14561ca2ea083c5270c78a2e6cbc0 +dIUT = efe6e6e25affaf54c98d002abbc6328da159405a1b752e32dc23950a +QIUTx = 355e962920bde043695f6bffb4b355c63da6f5de665ed46f2ec817e2 +QIUTy = 748e095368f62e1d364edd461719793b404adbdaacbcadd88922ff37 +ZIUT = fcdc69a40501d308a6839653a8f04309ec00233949522902ffa5eac6 + +COUNT = 5 +QCAVSx = 4511403de29059f69a475c5a6a5f6cabed5d9f014436a8cb70a02338 +QCAVSy = 7d2d1b62aa046df9340f9c37a087a06b32cf7f08a223f992812a828b +dIUT = 61cb2932524001e5e9eeed6df7d9c8935ee3322029edd7aa8acbfd51 +QIUTx = d50e4adabfd989d7dbc7cf4052546cc7c447a97630436997ad4b9536 +QIUTy = 5bea503473c5eaef9552d42c40b1f2f7ca292733b255b9bbe1b12337 +ZIUT = 827e9025cb62e0e837c596063f3b9b5a0f7afd8d8783200086d61ec1 + +COUNT = 6 +QCAVSx = 314a0b26dd31c248845d7cc17b61cad4608259bed85a58d1f1ffd378 +QCAVSy = 66e4b350352e119eecada382907f3619fd748ea73ae4899dfd496302 +dIUT = 8c7ace347171f92def98d845475fc82e1d1496da81ee58f505b985fa +QIUTx = b1a8dcac89aca2799320b451df1c7ff4d97567abb68141c0d95fc2aa +QIUTy = 3524950902b1510bdc987d860afc27ad871ceaea66935abd3c0a99a8 +ZIUT = 335ba51228d94acbed851ca7821c801d5cb1c7975d7aa90a7159f8fa + +COUNT = 7 +QCAVSx = abe6843beec2fd9e5fb64730d0be4d165438ce922ed75dd80b4603e5 +QCAVSy = 6afe8673a96c4ba9900ad85995e631e436c6cc88a2c2b47b7c4886b8 +dIUT = 382feb9b9ba10f189d99e71a89cdfe44cb554cec13a212840977fb68 +QIUTx = abb6f1e3773ff8fc73aea2a0b107809ce70adcefed6e41fc5cb43045 +QIUTy = a963897ae906c10a055eeadb97ffdd6f748d3e5621e5fff304e48ba7 +ZIUT = 8c2e627594206b34f7356d3426eb3d79f518ef843fbe94014cceace3 + +COUNT = 8 +QCAVSx = 13cf9d6d2c9aae8274c27d446afd0c888ffdd52ae299a35984d4f527 +QCAVSy = dcbee75b515751f8ee2ae355e8afd5de21c62a939a6507b538cbc4af +dIUT = e0d62035101ef487c485c60fb4500eebe6a32ec64dbe97dbe0232c46 +QIUTx = 88537735e9b23e3e0e076f135a82d33f9bffb465f3abce8322a62a62 +QIUTy = b4c8c123673197875c0bd14ed097606d330fba2b9200ef65a44764d3 +ZIUT = 632abb662728dbc994508873d5c527ca5ef923c0d31fa6c47ef4c825 + +COUNT = 9 +QCAVSx = 965b637c0dfbc0cf954035686d70f7ec30929e664e521dbaa2280659 +QCAVSy = 82a58ff61bc90019bbcbb5875d3863db0bc2a1fa34b0ad4de1a83f99 +dIUT = b96ade5b73ba72aa8b6e4d74d7bf9c58e962ff78eb542287c7b44ba2 +QIUTx = 37682926a54f70a4c1748f54d50d5b00138a055f924f2c65e5b0bbe4 +QIUTy = 596afefcdd640d29635015b89bdddd1f8c2723686d332e7a06ca8799 +ZIUT = 34641141aab05ef58bd376d609345901fb8f63477c6be9097f037f1f + +COUNT = 10 +QCAVSx = 73cc645372ca2e71637cda943d8148f3382ab6dd0f2e1a49da94e134 +QCAVSy = df5c355c23e6e232ebc3bee2ab1873ee0d83e3382f8e6fe613f6343c +dIUT = a40d7e12049c71e6522c7ff2384224061c3a457058b310557655b854 +QIUTx = 399801243bfe0c2da9b0a53c8ca57f2eee87aaa94a8e4d5e029f42ca +QIUTy = aa49e6d4b47cee7a5c4ab71d5a67da84e0b9b425ce3e70da68c889e7 +ZIUT = 4f74ac8507501a32bfc5a78d8271c200e835966e187e8d00011a8c75 + +COUNT = 11 +QCAVSx = 546578216250354e449e21546dd11cd1c5174236739acad9ce0f4512 +QCAVSy = d2a22fcd66d1abedc767668327c5cb9c599043276239cf3c8516af24 +dIUT = ad2519bc724d484e02a69f05149bb047714bf0f5986fac2e222cd946 +QIUTx = df9c1e0ef15e53b9f626e2be1cbe893639c06f3e0439ee95d7d4b1e3 +QIUTy = 7a52a7386adda243efdf8941085c84e31239cab92b8017336748965e +ZIUT = ad09c9ae4d2324ea81bb555b200d3c003e22a6870ee03b52df49e4de + +COUNT = 12 +QCAVSx = 1d46b1dc3a28123cb51346e67baec56404868678faf7d0e8b2afa22a +QCAVSy = 0ec9e65ec97e218373e7fc115c2274d5b829a60d93f71e01d58136c3 +dIUT = 3d312a9b9d8ed09140900bbac1e095527ebc9e3c6493bcf3666e3a29 +QIUTx = b4a0198dc8810e884425b750928b0c960c31f7a99663400b01a179df +QIUTy = 812b601bfc0738242c6f86f830f27acd632ca618a0b5280c9d5769f7 +ZIUT = ef029c28c68064b8abd2965a38c404fb5e944ace57e8638daba9d3cd + +COUNT = 13 +QCAVSx = 266d038cc7a4fe21f6c976318e827b82bb5b8f7443a55298136506e0 +QCAVSy = df123d98a7a20bbdf3943df2e3563422f8c0cf74d53aaabdd7c973ba +dIUT = 8ce0822dc24c153995755ac350737ef506641c7d752b4f9300c612ed +QIUTx = 00dfc7ec137690cd6d12fdb2fd0b8c5314582108769c2b722ffb3958 +QIUTy = 5eef3da4ba458127346bb64023868bddb7558a2ecfc813645f4ce9fe +ZIUT = f83c16661dfcbad021cc3b5a5af51d9a18db4653866b3ff90787ce3e + +COUNT = 14 +QCAVSx = eb0a09f7a1c236a61f595809ec5670efd92e4598d5e613e092cdfdca +QCAVSy = 50787ae2f2f15b88bc10f7b5f0aee1418373f16153aebd1fba54288d +dIUT = 0ff9b485325ab77f29e7bc379fed74bfac859482da0dee7528c19db2 +QIUTx = 7e603e6976db83c36011508fa695d1b515249e2e54b48fcbcfb90247 +QIUTy = 0179a600ce86adfca9b1b931fa5173d618da09e841803d19b0264286 +ZIUT = f51258c63f232e55a66aa25ebd597b2018d1052c02eeb63866758005 + +COUNT = 15 +QCAVSx = 6b2f6b18a587f562ffc61bd9b0047322286986a78f1fd139b84f7c24 +QCAVSy = 7096908e4615266be59a53cd655515056ff92370a6271a5d3823d704 +dIUT = 19cf5ff6306467f28b9fe0675a43c0582552c8c12e59ce7c38f292b1 +QIUTx = fc20e906e609c112cfc2e0fea6303882c5db94e87e022373ab2c082a +QIUTy = aecdf1daa71782bc5a26bbbd8d7e8a76490e26abc17dffc774bd7341 +ZIUT = 7fdc969a186ff18429f2a276dac43beea21182d82ce2e5a0876552b1 + +COUNT = 16 +QCAVSx = 328101ba826acd75ff9f34d5574ce0dbc92f709bad8d7a33c47940c1 +QCAVSy = df39f1ea88488c55d5538160878b9ced18a887ea261dd712d14024ff +dIUT = 90a15368e3532c0b1e51e55d139447c2c89bc160719d697291ea7c14 +QIUTx = c6837d506e976da7db3ad1267c359dff2ea6fb0b7f7f8e77024c59e9 +QIUTy = 67eb491d2fc8a530c46525d2a8b2d7c1df5fba1ae740a4649c683ee6 +ZIUT = 3d60ab6db2b3ffe2d29ccff46d056e54230cf34982e241556ed2920c + +COUNT = 17 +QCAVSx = 0081e34270871e2ebbd94183f617b4ae15f0416dd634fe6e934cf3c0 +QCAVSy = 3a1e9f38a7b90b7317d26b9f6311063ab58b268cf489b2e50386d5d6 +dIUT = 8e0838e05e1721491067e1cabc2e8051b290e2616eec427b7121897d +QIUTx = e9150f770075626019e18f95473b71e6828041791d3f08d3faeeaa2b +QIUTy = 475f70735eaae52308a3b763dc88efe18ab590ebafa035f6e08b001c +ZIUT = 9116d72786f4db5df7a8b43078c6ab9160d423513d35ea5e2559306d + +COUNT = 18 +QCAVSx = 2623632fdf0bd856805a69aa186d4133ef5904e1f655a972d66cce07 +QCAVSy = 2cef9728dd06fb8b50150f529b695076d4507983912585c89bd0682e +dIUT = 38106e93f16a381adb1d72cee3da66ae462ad4bbfea9ecdf35d0814e +QIUTx = 7be6c4c917829ab657dd79e8637d7aefd2f81f0de7654d957e97658d +QIUTy = 430d22d9e8438310f61e0d43f25fa3e34585f432baad27db3021bf0d +ZIUT = 207c53dcefac789aaa0276d9200b3a940ce5f2296f4cb2e81a185d3d + +COUNT = 19 +QCAVSx = 8ee4d1dcc31dee4bf6fe21ca8a587721d910acfb122c16c2a77a8152 +QCAVSy = 4ebf323fff04eb477069a0ac68b345f6b1ae134efc31940e513cb99f +dIUT = e5d1718431cf50f6cbd1bc8019fa16762dfa12c989e5999977fb4ea2 +QIUTx = 2ea4966e7f92ed7f5cc61fde792045f63b731d6e7d0de2577f2d8ece +QIUTy = 1c4a7b1ede6f839162292df424be78e8176fb6f942a3c02391700f31 +ZIUT = 10e467da34f48ad7072005bccd6da1b2ba3f71eafa1c393842f91d74 + +COUNT = 20 +QCAVSx = 97dcbe6d28335882a6d193cc54a1063dd0775dc328565300bb99e691 +QCAVSy = dad11dd5ece8cfd9f97c9a526e4a1506e6355969ee87826fc38bcd24 +dIUT = 3d635691b62a9a927c633951c9369c8862bd2119d30970c2644727d6 +QIUTx = 438bbb980517afb20be1d674e3ac2b31cef07a9b23fb8f6e38e0d6c0 +QIUTy = 0be5f1c47d58d21b6ed28423b32f5a94750da47edcef33ea79942afd +ZIUT = 82fd2f9c60c4f999ac00bbe64bfc11da8ff8cda2e499fced65230bb1 + +COUNT = 21 +QCAVSx = ce9126dd53972dea1de1d11efef900de34b661859c4648c5c0e534f7 +QCAVSy = e113b6f2c1659d07f2716e64a83c18bbce344dd2121fe85168eae085 +dIUT = acf3c85bbdc379f02f5ea36e7f0f53095a9e7046a28685a8659bf798 +QIUTx = ff7511215c71d796bd646e8474be4416b91684ce0d269ef6f422013b +QIUTy = b7bf5e79b5a9393bb9ea42c0bdb2d3c2dc806e1a7306aa58e4fdbea5 +ZIUT = 530f7e7fc932613b29c981f261cb036cba3f1df3864e0e1cba2685a2 + +COUNT = 22 +QCAVSx = 84419967d6cfad41e75a02b6da605a97949a183a97c306c4b46e66a5 +QCAVSy = 5cc9b259718b1bc8b144fde633a894616ffd59a3a6d5d8e942c7cbb7 +dIUT = cffd62cb00a0e3163fbf2c397fadc9618210f86b4f54a675287305f0 +QIUTx = 04bf4d948f4430d18b4ed6c96dbaf981fa11a403ed16887f06754981 +QIUTy = 7c1326a9cef51f79d4e78303d6064b459f612584ac2fdf593d7d5d84 +ZIUT = 49f6fd0139248ef4df2db05d1319bd5b1489e249827a45a8a5f12427 + +COUNT = 23 +QCAVSx = 7c9cac35768063c2827f60a7f51388f2a8f4b7f8cd736bd6bc337477 +QCAVSy = 29ee6b849c6025d577dbcc55fbd17018f4edbc2ef105b004d6257bcd +dIUT = 85f903e43943d13c68932e710e80de52cbc0b8f1a1418ea4da079299 +QIUTx = 970a4a7e01d4188497ceb46955eb1b842d9085819a9b925c84529d3d +QIUTy = dfa2526480f833ea0edbd204e4e365fef3472888fe7d9691c3ebc09f +ZIUT = 8f7e34e597ae8093b98270a74a8dfcdbed457f42f43df487c5487161 + +COUNT = 24 +QCAVSx = 085a7642ad8e59b1a3e8726a7547afbecffdac1dab7e57230c6a9df4 +QCAVSy = f91c36d881fe9b8047a3530713554a1af4c25c5a8e654dcdcf689f2e +dIUT = cce64891a3d0129fee0d4a96cfbe7ac470b85e967529057cfa31a1d9 +QIUTx = a6b29632db94da2125dc1cf80e03702687b2acc1122022fa2174765a +QIUTy = 61723edd73e10daed73775278f1958ba56f1fc9d085ebc2b64c84fe5 +ZIUT = 71954e2261e8510be1a060733671d2e9d0a2d012eb4e09556d697d2a + + +[P-256] + +COUNT = 0 +QCAVSx = 700c48f77f56584c5cc632ca65640db91b6bacce3a4df6b42ce7cc838833d287 +QCAVSy = db71e509e3fd9b060ddb20ba5c51dcc5948d46fbf640dfe0441782cab85fa4ac +dIUT = 7d7dc5f71eb29ddaf80d6214632eeae03d9058af1fb6d22ed80badb62bc1a534 +QIUTx = ead218590119e8876b29146ff89ca61770c4edbbf97d38ce385ed281d8a6b230 +QIUTy = 28af61281fd35e2fa7002523acc85a429cb06ee6648325389f59edfce1405141 +ZIUT = 46fc62106420ff012e54a434fbdd2d25ccc5852060561e68040dd7778997bd7b + +COUNT = 1 +QCAVSx = 809f04289c64348c01515eb03d5ce7ac1a8cb9498f5caa50197e58d43a86a7ae +QCAVSy = b29d84e811197f25eba8f5194092cb6ff440e26d4421011372461f579271cda3 +dIUT = 38f65d6dce47676044d58ce5139582d568f64bb16098d179dbab07741dd5caf5 +QIUTx = 119f2f047902782ab0c9e27a54aff5eb9b964829ca99c06b02ddba95b0a3f6d0 +QIUTy = 8f52b726664cac366fc98ac7a012b2682cbd962e5acb544671d41b9445704d1d +ZIUT = 057d636096cb80b67a8c038c890e887d1adfa4195e9b3ce241c8a778c59cda67 + +COUNT = 2 +QCAVSx = a2339c12d4a03c33546de533268b4ad667debf458b464d77443636440ee7fec3 +QCAVSy = ef48a3ab26e20220bcda2c1851076839dae88eae962869a497bf73cb66faf536 +dIUT = 1accfaf1b97712b85a6f54b148985a1bdc4c9bec0bd258cad4b3d603f49f32c8 +QIUTx = d9f2b79c172845bfdb560bbb01447ca5ecc0470a09513b6126902c6b4f8d1051 +QIUTy = f815ef5ec32128d3487834764678702e64e164ff7315185e23aff5facd96d7bc +ZIUT = 2d457b78b4614132477618a5b077965ec90730a8c81a1c75d6d4ec68005d67ec + +COUNT = 3 +QCAVSx = df3989b9fa55495719b3cf46dccd28b5153f7808191dd518eff0c3cff2b705ed +QCAVSy = 422294ff46003429d739a33206c8752552c8ba54a270defc06e221e0feaf6ac4 +dIUT = 207c43a79bfee03db6f4b944f53d2fb76cc49ef1c9c4d34d51b6c65c4db6932d +QIUTx = 24277c33f450462dcb3d4801d57b9ced05188f16c28eda873258048cd1607e0d +QIUTy = c4789753e2b1f63b32ff014ec42cd6a69fac81dfe6d0d6fd4af372ae27c46f88 +ZIUT = 96441259534b80f6aee3d287a6bb17b5094dd4277d9e294f8fe73e48bf2a0024 + +COUNT = 4 +QCAVSx = 41192d2813e79561e6a1d6f53c8bc1a433a199c835e141b05a74a97b0faeb922 +QCAVSy = 1af98cc45e98a7e041b01cf35f462b7562281351c8ebf3ffa02e33a0722a1328 +dIUT = 59137e38152350b195c9718d39673d519838055ad908dd4757152fd8255c09bf +QIUTx = a8c5fdce8b62c5ada598f141adb3b26cf254c280b2857a63d2ad783a73115f6b +QIUTy = 806e1aafec4af80a0d786b3de45375b517a7e5b51ffb2c356537c9e6ef227d4a +ZIUT = 19d44c8d63e8e8dd12c22a87b8cd4ece27acdde04dbf47f7f27537a6999a8e62 + +COUNT = 5 +QCAVSx = 33e82092a0f1fb38f5649d5867fba28b503172b7035574bf8e5b7100a3052792 +QCAVSy = f2cf6b601e0a05945e335550bf648d782f46186c772c0f20d3cd0d6b8ca14b2f +dIUT = f5f8e0174610a661277979b58ce5c90fee6c9b3bb346a90a7196255e40b132ef +QIUTx = 7b861dcd2844a5a8363f6b8ef8d493640f55879217189d80326aad9480dfc149 +QIUTy = c4675b45eeb306405f6c33c38bc69eb2bdec9b75ad5af4706aab84543b9cc63a +ZIUT = 664e45d5bba4ac931cd65d52017e4be9b19a515f669bea4703542a2c525cd3d3 + +COUNT = 6 +QCAVSx = 6a9e0c3f916e4e315c91147be571686d90464e8bf981d34a90b6353bca6eeba7 +QCAVSy = 40f9bead39c2f2bcc2602f75b8a73ec7bdffcbcead159d0174c6c4d3c5357f05 +dIUT = 3b589af7db03459c23068b64f63f28d3c3c6bc25b5bf76ac05f35482888b5190 +QIUTx = 9fb38e2d58ea1baf7622e96720101cae3cde4ba6c1e9fa26d9b1de0899102863 +QIUTy = d5561b900406edf50802dd7d73e89395f8aed72fba0e1d1b61fe1d22302260f0 +ZIUT = ca342daa50dc09d61be7c196c85e60a80c5cb04931746820be548cdde055679d + +COUNT = 7 +QCAVSx = a9c0acade55c2a73ead1a86fb0a9713223c82475791cd0e210b046412ce224bb +QCAVSy = f6de0afa20e93e078467c053d241903edad734c6b403ba758c2b5ff04c9d4229 +dIUT = d8bf929a20ea7436b2461b541a11c80e61d826c0a4c9d322b31dd54e7f58b9c8 +QIUTx = 20f07631e4a6512a89ad487c4e9d63039e579cb0d7a556cb9e661cd59c1e7fa4 +QIUTy = 6de91846b3eee8a5ec09c2ab1f41e21bd83620ccdd1bdce3ab7ea6e02dd274f5 +ZIUT = 35aa9b52536a461bfde4e85fc756be928c7de97923f0416c7a3ac8f88b3d4489 + +COUNT = 8 +QCAVSx = 94e94f16a98255fff2b9ac0c9598aac35487b3232d3231bd93b7db7df36f9eb9 +QCAVSy = d8049a43579cfa90b8093a94416cbefbf93386f15b3f6e190b6e3455fedfe69a +dIUT = 0f9883ba0ef32ee75ded0d8bda39a5146a29f1f2507b3bd458dbea0b2bb05b4d +QIUTx = abb61b423be5d6c26e21c605832c9142dc1dfe5a5fff28726737936e6fbf516d +QIUTy = 733d2513ef58beab202090586fac91bf0fee31e80ab33473ab23a2d89e58fad6 +ZIUT = 605c16178a9bc875dcbff54d63fe00df699c03e8a888e9e94dfbab90b25f39b4 + +COUNT = 9 +QCAVSx = e099bf2a4d557460b5544430bbf6da11004d127cb5d67f64ab07c94fcdf5274f +QCAVSy = d9c50dbe70d714edb5e221f4e020610eeb6270517e688ca64fb0e98c7ef8c1c5 +dIUT = 2beedb04b05c6988f6a67500bb813faf2cae0d580c9253b6339e4a3337bb6c08 +QIUTx = 3d63e429cb5fa895a9247129bf4e48e89f35d7b11de8158efeb3e106a2a87395 +QIUTy = 0cae9e477ef41e7c8c1064379bb7b554ddcbcae79f9814281f1e50f0403c61f3 +ZIUT = f96e40a1b72840854bb62bc13c40cc2795e373d4e715980b261476835a092e0b + +COUNT = 10 +QCAVSx = f75a5fe56bda34f3c1396296626ef012dc07e4825838778a645c8248cff01658 +QCAVSy = 33bbdf1b1772d8059df568b061f3f1122f28a8d819167c97be448e3dc3fb0c3c +dIUT = 77c15dcf44610e41696bab758943eff1409333e4d5a11bbe72c8f6c395e9f848 +QIUTx = ad5d13c3db508ddcd38457e5991434a251bed49cf5ddcb59cdee73865f138c9f +QIUTy = 62cec1e70588aa4fdfc7b9a09daa678081c04e1208b9d662b8a2214bf8e81a21 +ZIUT = 8388fa79c4babdca02a8e8a34f9e43554976e420a4ad273c81b26e4228e9d3a3 + +COUNT = 11 +QCAVSx = 2db4540d50230756158abf61d9835712b6486c74312183ccefcaef2797b7674d +QCAVSy = 62f57f314e3f3495dc4e099012f5e0ba71770f9660a1eada54104cdfde77243e +dIUT = 42a83b985011d12303db1a800f2610f74aa71cdf19c67d54ce6c9ed951e9093e +QIUTx = ab48caa61ea35f13f8ed07ffa6a13e8db224dfecfae1a7df8b1bb6ebaf0cb97d +QIUTy = 1274530ca2c385a3218bddfbcbf0b4024c9badd5243bff834ebff24a8618dccb +ZIUT = 72877cea33ccc4715038d4bcbdfe0e43f42a9e2c0c3b017fc2370f4b9acbda4a + +COUNT = 12 +QCAVSx = cd94fc9497e8990750309e9a8534fd114b0a6e54da89c4796101897041d14ecb +QCAVSy = c3def4b5fe04faee0a11932229fff563637bfdee0e79c6deeaf449f85401c5c4 +dIUT = ceed35507b5c93ead5989119b9ba342cfe38e6e638ba6eea343a55475de2800b +QIUTx = 9a8cd9bd72e71752df91440f77c547509a84df98114e7de4f26cdb39234a625d +QIUTy = d07cfc84c8e144fab2839f5189bb1d7c88631d579bbc58012ed9a2327da52f62 +ZIUT = e4e7408d85ff0e0e9c838003f28cdbd5247cdce31f32f62494b70e5f1bc36307 + +COUNT = 13 +QCAVSx = 15b9e467af4d290c417402e040426fe4cf236bae72baa392ed89780dfccdb471 +QCAVSy = cdf4e9170fb904302b8fd93a820ba8cc7ed4efd3a6f2d6b05b80b2ff2aee4e77 +dIUT = 43e0e9d95af4dc36483cdd1968d2b7eeb8611fcce77f3a4e7d059ae43e509604 +QIUTx = f989cf8ee956a82e7ebd9881cdbfb2fd946189b08db53559bc8cfdd48071eb14 +QIUTy = 5eff28f1a18a616b04b7d337868679f6dd84f9a7b3d7b6f8af276c19611a541d +ZIUT = ed56bcf695b734142c24ecb1fc1bb64d08f175eb243a31f37b3d9bb4407f3b96 + +COUNT = 14 +QCAVSx = 49c503ba6c4fa605182e186b5e81113f075bc11dcfd51c932fb21e951eee2fa1 +QCAVSy = 8af706ff0922d87b3f0c5e4e31d8b259aeb260a9269643ed520a13bb25da5924 +dIUT = b2f3600df3368ef8a0bb85ab22f41fc0e5f4fdd54be8167a5c3cd4b08db04903 +QIUTx = 69c627625b36a429c398b45c38677cb35d8beb1cf78a571e40e99fe4eac1cd4e +QIUTy = 81690112b0a88f20f7136b28d7d47e5fbc2ada3c8edd87589bc19ec9590637bd +ZIUT = bc5c7055089fc9d6c89f83c1ea1ada879d9934b2ea28fcf4e4a7e984b28ad2cf + +COUNT = 15 +QCAVSx = 19b38de39fdd2f70f7091631a4f75d1993740ba9429162c2a45312401636b29c +QCAVSy = 09aed7232b28e060941741b6828bcdfa2bc49cc844f3773611504f82a390a5ae +dIUT = 4002534307f8b62a9bf67ff641ddc60fef593b17c3341239e95bdb3e579bfdc8 +QIUTx = 5fe964671315a18aa68a2a6e3dd1fde7e23b8ce7181471cfac43c99e1ae80262 +QIUTy = d5827be282e62c84de531b963884ba832db5d6b2c3a256f0e604fe7e6b8a7f72 +ZIUT = 9a4e8e657f6b0e097f47954a63c75d74fcba71a30d83651e3e5a91aa7ccd8343 + +COUNT = 16 +QCAVSx = 2c91c61f33adfe9311c942fdbff6ba47020feff416b7bb63cec13faf9b099954 +QCAVSy = 6cab31b06419e5221fca014fb84ec870622a1b12bab5ae43682aa7ea73ea08d0 +dIUT = 4dfa12defc60319021b681b3ff84a10a511958c850939ed45635934ba4979147 +QIUTx = c9b2b8496f1440bd4a2d1e52752fd372835b364885e154a7dac49295f281ec7c +QIUTy = fbe6b926a8a4de26ccc83b802b1212400754be25d9f3eeaf008b09870ae76321 +ZIUT = 3ca1fc7ad858fb1a6aba232542f3e2a749ffc7203a2374a3f3d3267f1fc97b78 + +COUNT = 17 +QCAVSx = a28a2edf58025668f724aaf83a50956b7ac1cfbbff79b08c3bf87dfd2828d767 +QCAVSy = dfa7bfffd4c766b86abeaf5c99b6e50cb9ccc9d9d00b7ffc7804b0491b67bc03 +dIUT = 1331f6d874a4ed3bc4a2c6e9c74331d3039796314beee3b7152fcdba5556304e +QIUTx = 59e1e101521046ad9cf1d082e9d2ec7dd22530cce064991f1e55c5bcf5fcb591 +QIUTy = 482f4f673176c8fdaa0bb6e59b15a3e47454e3a04297d3863c9338d98add1f37 +ZIUT = 1aaabe7ee6e4a6fa732291202433a237df1b49bc53866bfbe00db96a0f58224f + +COUNT = 18 +QCAVSx = a2ef857a081f9d6eb206a81c4cf78a802bdf598ae380c8886ecd85fdc1ed7644 +QCAVSy = 563c4c20419f07bc17d0539fade1855e34839515b892c0f5d26561f97fa04d1a +dIUT = dd5e9f70ae740073ca0204df60763fb6036c45709bf4a7bb4e671412fad65da3 +QIUTx = 30b9db2e2e977bcdc98cb87dd736cbd8e78552121925cf16e1933657c2fb2314 +QIUTy = 6a45028800b81291bce5c2e1fed7ded650620ebbe6050c6f3a7f0dfb4673ab5c +ZIUT = 430e6a4fba4449d700d2733e557f66a3bf3d50517c1271b1ddae1161b7ac798c + +COUNT = 19 +QCAVSx = ccd8a2d86bc92f2e01bce4d6922cf7fe1626aed044685e95e2eebd464505f01f +QCAVSy = e9ddd583a9635a667777d5b8a8f31b0f79eba12c75023410b54b8567dddc0f38 +dIUT = 5ae026cfc060d55600717e55b8a12e116d1d0df34af831979057607c2d9c2f76 +QIUTx = 46c9ebd1a4a3c8c0b6d572b5dcfba12467603208a9cb5d2acfbb733c40cf6391 +QIUTy = 46c913a27d044185d38b467ace011e04d4d9bbbb8cb9ae25fa92aaf15a595e86 +ZIUT = 1ce9e6740529499f98d1f1d71329147a33df1d05e4765b539b11cf615d6974d3 + +COUNT = 20 +QCAVSx = c188ffc8947f7301fb7b53e36746097c2134bf9cc981ba74b4e9c4361f595e4e +QCAVSy = bf7d2f2056e72421ef393f0c0f2b0e00130e3cac4abbcc00286168e85ec55051 +dIUT = b601ac425d5dbf9e1735c5e2d5bdb79ca98b3d5be4a2cfd6f2273f150e064d9d +QIUTx = 7c9e950841d26c8dde8994398b8f5d475a022bc63de7773fcf8d552e01f1ba0a +QIUTy = cc42b9885c9b3bee0f8d8c57d3a8f6355016c019c4062fa22cff2f209b5cc2e1 +ZIUT = 4690e3743c07d643f1bc183636ab2a9cb936a60a802113c49bb1b3f2d0661660 + +COUNT = 21 +QCAVSx = 317e1020ff53fccef18bf47bb7f2dd7707fb7b7a7578e04f35b3beed222a0eb6 +QCAVSy = 09420ce5a19d77c6fe1ee587e6a49fbaf8f280e8df033d75403302e5a27db2ae +dIUT = fefb1dda1845312b5fce6b81b2be205af2f3a274f5a212f66c0d9fc33d7ae535 +QIUTx = 38b54db85500cb20c61056edd3d88b6a9dc26780a047f213a6e1b900f76596eb +QIUTy = 6387e4e5781571e4eb8ae62991a33b5dc33301c5bc7e125d53794a39160d8fd0 +ZIUT = 30c2261bd0004e61feda2c16aa5e21ffa8d7e7f7dbf6ec379a43b48e4b36aeb0 + +COUNT = 22 +QCAVSx = 45fb02b2ceb9d7c79d9c2fa93e9c7967c2fa4df5789f9640b24264b1e524fcb1 +QCAVSy = 5c6e8ecf1f7d3023893b7b1ca1e4d178972ee2a230757ddc564ffe37f5c5a321 +dIUT = 334ae0c4693d23935a7e8e043ebbde21e168a7cba3fa507c9be41d7681e049ce +QIUTx = 3f2bf1589abf3047bf3e54ac9a95379bff95f8f55405f64eca36a7eebe8ffca7 +QIUTy = 5212a94e66c5ae9a8991872f66a72723d80ec5b2e925745c456f5371943b3a06 +ZIUT = 2adae4a138a239dcd93c243a3803c3e4cf96e37fe14e6a9b717be9599959b11c + +COUNT = 23 +QCAVSx = a19ef7bff98ada781842fbfc51a47aff39b5935a1c7d9625c8d323d511c92de6 +QCAVSy = e9c184df75c955e02e02e400ffe45f78f339e1afe6d056fb3245f4700ce606ef +dIUT = 2c4bde40214fcc3bfc47d4cf434b629acbe9157f8fd0282540331de7942cf09d +QIUTx = 29c0807f10cbc42fb45c9989da50681eead716daa7b9e91fd32e062f5eb92ca0 +QIUTy = ff1d6d1955d7376b2da24fe1163a271659136341bc2eb1195fc706dc62e7f34d +ZIUT = 2e277ec30f5ea07d6ce513149b9479b96e07f4b6913b1b5c11305c1444a1bc0b + +COUNT = 24 +QCAVSx = 356c5a444c049a52fee0adeb7e5d82ae5aa83030bfff31bbf8ce2096cf161c4b +QCAVSy = 57d128de8b2a57a094d1a001e572173f96e8866ae352bf29cddaf92fc85b2f92 +dIUT = 85a268f9d7772f990c36b42b0a331adc92b5941de0b862d5d89a347cbf8faab0 +QIUTx = 9cf4b98581ca1779453cc816ff28b4100af56cf1bf2e5bc312d83b6b1b21d333 +QIUTy = 7a5504fcac5231a0d12d658218284868229c844a04a3450d6c7381abe080bf3b +ZIUT = 1e51373bd2c6044c129c436e742a55be2a668a85ae08441b6756445df5493857 + + +[P-384] + +COUNT = 0 +QCAVSx = a7c76b970c3b5fe8b05d2838ae04ab47697b9eaf52e764592efda27fe7513272734466b400091adbf2d68c58e0c50066 +QCAVSy = ac68f19f2e1cb879aed43a9969b91a0839c4c38a49749b661efedf243451915ed0905a32b060992b468c64766fc8437a +dIUT = 3cc3122a68f0d95027ad38c067916ba0eb8c38894d22e1b15618b6818a661774ad463b205da88cf699ab4d43c9cf98a1 +QIUTx = 9803807f2f6d2fd966cdd0290bd410c0190352fbec7ff6247de1302df86f25d34fe4a97bef60cff548355c015dbb3e5f +QIUTy = ba26ca69ec2f5b5d9dad20cc9da711383a9dbe34ea3fa5a2af75b46502629ad54dd8b7d73a8abb06a3a3be47d650cc99 +ZIUT = 5f9d29dc5e31a163060356213669c8ce132e22f57c9a04f40ba7fcead493b457e5621e766c40a2e3d4d6a04b25e533f1 + +COUNT = 1 +QCAVSx = 30f43fcf2b6b00de53f624f1543090681839717d53c7c955d1d69efaf0349b7363acb447240101cbb3af6641ce4b88e0 +QCAVSy = 25e46c0c54f0162a77efcc27b6ea792002ae2ba82714299c860857a68153ab62e525ec0530d81b5aa15897981e858757 +dIUT = 92860c21bde06165f8e900c687f8ef0a05d14f290b3f07d8b3a8cc6404366e5d5119cd6d03fb12dc58e89f13df9cd783 +QIUTx = ea4018f5a307c379180bf6a62fd2ceceebeeb7d4df063a66fb838aa35243419791f7e2c9d4803c9319aa0eb03c416b66 +QIUTy = 68835a91484f05ef028284df6436fb88ffebabcdd69ab0133e6735a1bcfb37203d10d340a8328a7b68770ca75878a1a6 +ZIUT = a23742a2c267d7425fda94b93f93bbcc24791ac51cd8fd501a238d40812f4cbfc59aac9520d758cf789c76300c69d2ff + +COUNT = 2 +QCAVSx = 1aefbfa2c6c8c855a1a216774550b79a24cda37607bb1f7cc906650ee4b3816d68f6a9c75da6e4242cebfb6652f65180 +QCAVSy = 419d28b723ebadb7658fcebb9ad9b7adea674f1da3dc6b6397b55da0f61a3eddacb4acdb14441cb214b04a0844c02fa3 +dIUT = 12cf6a223a72352543830f3f18530d5cb37f26880a0b294482c8a8ef8afad09aa78b7dc2f2789a78c66af5d1cc553853 +QIUTx = fcfcea085e8cf74d0dced1620ba8423694f903a219bbf901b0b59d6ac81baad316a242ba32bde85cb248119b852fab66 +QIUTy = 972e3c68c7ab402c5836f2a16ed451a33120a7750a6039f3ff15388ee622b7065f7122bf6d51aefbc29b37b03404581b +ZIUT = 3d2e640f350805eed1ff43b40a72b2abed0a518bcebe8f2d15b111b6773223da3c3489121db173d414b5bd5ad7153435 + +COUNT = 3 +QCAVSx = 8bc089326ec55b9cf59b34f0eb754d93596ca290fcb3444c83d4de3a5607037ec397683f8cef07eab2fe357eae36c449 +QCAVSy = d9d16ce8ac85b3f1e94568521aae534e67139e310ec72693526aa2e927b5b322c95a1a033c229cb6770c957cd3148dd7 +dIUT = 8dd48063a3a058c334b5cc7a4ce07d02e5ee6d8f1f3c51a1600962cbab462690ae3cd974fb39e40b0e843daa0fd32de1 +QIUTx = e38c9846248123c3421861ea4d32669a7b5c3c08376ad28104399494c84ff5efa3894adb2c6cbe8c3c913ef2eec5bd3c +QIUTy = 9fa84024a1028796df84021f7b6c9d02f0f4bd1a612a03cbf75a0beea43fef8ae84b48c60172aadf09c1ad016d0bf3ce +ZIUT = 6a42cfc392aba0bfd3d17b7ccf062b91fc09bbf3417612d02a90bdde62ae40c54bb2e56e167d6b70db670097eb8db854 + +COUNT = 4 +QCAVSx = eb952e2d9ac0c20c6cc48fb225c2ad154f53c8750b003fd3b4ed8ed1dc0defac61bcdde02a2bcfee7067d75d342ed2b0 +QCAVSy = f1828205baece82d1b267d0d7ff2f9c9e15b69a72df47058a97f3891005d1fb38858f5603de840e591dfa4f6e7d489e1 +dIUT = 84ece6cc3429309bd5b23e959793ed2b111ec5cb43b6c18085fcaea9efa0685d98a6262ee0d330ee250bc8a67d0e733f +QIUTx = 3222063a2997b302ee60ee1961108ff4c7acf1c0ef1d5fb0d164b84bce71c431705cb9aea9a45f5d73806655a058bee3 +QIUTy = e61fa9e7fbe7cd43abf99596a3d3a039e99fa9dc93b0bdd9cad81966d17eeaf557068afa7c78466bb5b22032d1100fa6 +ZIUT = ce7ba454d4412729a32bb833a2d1fd2ae612d4667c3a900e069214818613447df8c611de66da200db7c375cf913e4405 + +COUNT = 5 +QCAVSx = 441d029e244eb7168d647d4df50db5f4e4974ab3fdaf022aff058b3695d0b8c814cc88da6285dc6df1ac55c553885003 +QCAVSy = e8025ac23a41d4b1ea2aa46c50c6e479946b59b6d76497cd9249977e0bfe4a6262622f13d42a3c43d66bdbb30403c345 +dIUT = 68fce2121dc3a1e37b10f1dde309f9e2e18fac47cd1770951451c3484cdb77cb136d00e731260597cc2859601c01a25b +QIUTx = 868be0e694841830e424d913d8e7d86b84ee1021d82b0ecf523f09fe89a76c0c95c49f2dfbcf829c1e39709d55efbb3b +QIUTy = 9195eb183675b40fd92f51f37713317e4a9b4f715c8ab22e0773b1bc71d3a219f05b8116074658ee86b52e36f3897116 +ZIUT = ba69f0acdf3e1ca95caaac4ecaf475bbe51b54777efce01ca381f45370e486fe87f9f419b150c61e329a286d1aa265ec + +COUNT = 6 +QCAVSx = 3d4e6bf08a73404accc1629873468e4269e82d90d832e58ad72142639b5a056ad8d35c66c60e8149fac0c797bceb7c2f +QCAVSy = 9b0308dc7f0e6d29f8c277acbc65a21e5adb83d11e6873bc0a07fda0997f482504602f59e10bc5cb476b83d0a4f75e71 +dIUT = b1764c54897e7aae6de9e7751f2f37de849291f88f0f91093155b858d1cc32a3a87980f706b86cc83f927bdfdbeae0bd +QIUTx = c371222feaa6770c6f3ea3e0dac9740def4fcf821378b7f91ff937c21e0470f70f3a31d5c6b2912195f10926942b48ae +QIUTy = 047d6b4d765123563f81116bc665b7b8cc6207830d805fd84da7cb805a65baa7c12fd592d1b5b5e3e65d9672a9ef7662 +ZIUT = 1a6688ee1d6e59865d8e3ada37781d36bb0c2717eef92e61964d3927cb765c2965ea80f7f63e58c322ba0397faeaf62b + +COUNT = 7 +QCAVSx = f5f6bef1d110da03be0017eac760cc34b24d092f736f237bc7054b3865312a813bcb62d297fb10a4f7abf54708fe2d3d +QCAVSy = 06fdf8d7dc032f4e10010bf19cbf6159321252ff415fb91920d438f24e67e60c2eb0463204679fa356af44cea9c9ebf5 +dIUT = f0f7a96e70d98fd5a30ad6406cf56eb5b72a510e9f192f50e1f84524dbf3d2439f7287bb36f5aa912a79deaab4adea82 +QIUTx = 99c8c41cb1ab5e0854a346e4b08a537c1706a61553387c8d94943ab15196d40dbaa55b8210a77a5d00915f2c4ea69eab +QIUTy = 5531065bdcf17bfb3cb55a02e41a57c7f694c383ad289f900fbd656c2233a93c92e933e7a26f54cbb56f0ad875c51bb0 +ZIUT = d06a568bf2336b90cbac325161be7695eacb2295f599500d787f072612aca313ee5d874f807ddef6c1f023fe2b6e7cd0 + +COUNT = 8 +QCAVSx = 7cdec77e0737ea37c67b89b7137fe38818010f4464438ee4d1d35a0c488cad3fde2f37d00885d36d3b795b9f93d23a67 +QCAVSy = 28c42ee8d6027c56cf979ba4c229fdb01d234944f8ac433650112c3cf0f02844e888a3569dfef7828a8a884589aa055e +dIUT = 9efb87ddc61d43c482ba66e1b143aef678fbd0d1bebc2000941fabe677fe5b706bf78fce36d100b17cc787ead74bbca2 +QIUTx = 4c34efee8f0c95565d2065d1bbac2a2dd25ae964320eb6bccedc5f3a9b42a881a1afca1bb6b880584fa27b01c193cd92 +QIUTy = d8fb01dbf7cd0a3868c26b951f393c3c56c2858cee901f7793ff5d271925d13a41f8e52409f4eba1990f33acb0bac669 +ZIUT = bb3b1eda9c6560d82ff5bee403339f1e80342338a991344853b56b24f109a4d94b92f654f0425edd4c205903d7586104 + +COUNT = 9 +QCAVSx = 8eeea3a319c8df99fbc29cb55f243a720d95509515ee5cc587a5c5ae22fbbd009e626db3e911def0b99a4f7ae304b1ba +QCAVSy = 73877dc94db9adddc0d9a4b24e8976c22d73c844370e1ee857f8d1b129a3bd5f63f40caf3bd0533e38a5f5777074ff9e +dIUT = d787a57fde22ec656a0a525cf3c738b30d73af61e743ea90893ecb2d7b622add2f94ee25c2171467afb093f3f84d0018 +QIUTx = 171546923b87b2cbbad664f01ce932bf09d6a6118168678446bfa9f0938608cb4667a98f4ec8ac1462285c2508f74862 +QIUTy = fa41cb4db68ae71f1f8a3e8939dc52c2dec61a83c983beb2a02baf29ec49278088882ed0cf56c74b5c173b552ccf63cf +ZIUT = 1e97b60add7cb35c7403dd884c0a75795b7683fff8b49f9d8672a8206bfdcf0a106b8768f983258c74167422e44e4d14 + +COUNT = 10 +QCAVSx = a721f6a2d4527411834b13d4d3a33c29beb83ab7682465c6cbaf6624aca6ea58c30eb0f29dd842886695400d7254f20f +QCAVSy = 14ba6e26355109ad35129366d5e3a640ae798505a7fa55a96a36b5dad33de00474f6670f522214dd7952140ab0a7eb68 +dIUT = 83d70f7b164d9f4c227c767046b20eb34dfc778f5387e32e834b1e6daec20edb8ca5bb4192093f543b68e6aeb7ce788b +QIUTx = 57cd770f3bbcbe0c78c770eab0b169bc45e139f86378ffae1c2b16966727c2f2eb724572b8f3eb228d130db4ff862c63 +QIUTy = 7ec5c8813b685558d83e924f14bc719f6eb7ae0cbb2c474227c5bda88637a4f26c64817929af999592da6f787490332f +ZIUT = 1023478840e54775bfc69293a3cf97f5bc914726455c66538eb5623e218feef7df4befa23e09d77145ad577db32b41f9 + +COUNT = 11 +QCAVSx = d882a8505c2d5cb9b8851fc676677bb0087681ad53faceba1738286b45827561e7da37b880276c656cfc38b32ade847e +QCAVSy = 34b314bdc134575654573cffaf40445da2e6aaf987f7e913cd4c3091523058984a25d8f21da8326192456c6a0fa5f60c +dIUT = 8f558e05818b88ed383d5fca962e53413db1a0e4637eda194f761944cbea114ab9d5da175a7d57882550b0e432f395a9 +QIUTx = 9a2f57f4867ce753d72b0d95195df6f96c1fae934f602efd7b6a54582f556cfa539d89005ca2edac08ad9b72dd1f60ba +QIUTy = d9b94ee82da9cc601f346044998ba387aee56404dc6ecc8ab2b590443319d0b2b6176f9d0eac2d44678ed561607d09a9 +ZIUT = 6ad6b9dc8a6cf0d3691c501cbb967867f6e4bbb764b60dbff8fcff3ed42dbba39d63cf325b4b4078858495ddee75f954 + +COUNT = 12 +QCAVSx = 815c9d773dbf5fb6a1b86799966247f4006a23c92e68c55e9eaa998b17d8832dd4d84d927d831d4f68dac67c6488219f +QCAVSy = e79269948b2611484560fd490feec887cb55ef99a4b524880fa7499d6a07283aae2afa33feab97deca40bc606c4d8764 +dIUT = 0f5dee0affa7bbf239d5dff32987ebb7cf84fcceed643e1d3c62d0b3352aec23b6e5ac7fa4105c8cb26126ad2d1892cb +QIUTx = 23346bdfbc9d7c7c736e02bdf607671ff6082fdd27334a8bc75f3b23681ebe614d0597dd614fae58677c835a9f0b273b +QIUTy = 82ba36290d2f94db41479eb45ab4eaf67928a2315138d59eecc9b5285dfddd6714f77557216ea44cc6fc119d8243efaf +ZIUT = cc9e063566d46b357b3fcae21827377331e5e290a36e60cd7c39102b828ae0b918dc5a02216b07fe6f1958d834e42437 + +COUNT = 13 +QCAVSx = 1c0eeda7a2be000c5bdcda0478aed4db733d2a9e341224379123ad847030f29e3b168fa18e89a3c0fba2a6ce1c28fc3b +QCAVSy = ec8c1c83c118c4dbea94271869f2d868eb65e8b44e21e6f14b0f4d9b38c068daefa27114255b9a41d084cc4a1ad85456 +dIUT = 037b633b5b8ba857c0fc85656868232e2febf59578718391b81da8541a00bfe53c30ae04151847f27499f8d7abad8cf4 +QIUTx = 8878ac8a947f7d5cb2b47aad24fbb8210d86126585399a2871f84aa9c5fde3074ae540c6bf82275ca822d0feb862bc74 +QIUTy = 632f5cd2f900c2711c32f8930728eb647d31edd8d650f9654e7d33e5ed1b475489d08daa30d8cbcba6bfc3b60d9b5a37 +ZIUT = deff7f03bd09865baf945e73edff6d5122c03fb561db87dec8662e09bed4340b28a9efe118337bb7d3d4f7f568635ff9 + +COUNT = 14 +QCAVSx = c95c185e256bf997f30b311548ae7f768a38dee43eeeef43083f3077be70e2bf39ac1d4daf360c514c8c6be623443d1a +QCAVSy = 3e63a663eaf75d8a765ab2b9a35513d7933fa5e26420a5244550ec6c3b6f033b96db2aca3d6ac6aab052ce929595aea5 +dIUT = e3d07106bedcc096e7d91630ffd3094df2c7859db8d7edbb2e37b4ac47f429a637d06a67d2fba33838764ef203464991 +QIUTx = e74a1a2b85f1cbf8dbbdf050cf1aff8acb02fda2fb6591f9d3cfe4e79d0ae938a9c1483e7b75f8db24505d65065cdb18 +QIUTy = 1773ee591822f7abaa856a1a60bc0a5203548dbd1cb5025466eff8481bd07614eaa04a16c3db76905913e972a5b6b59d +ZIUT = c8b1038f735ad3bb3e4637c3e47eab487637911a6b7950a4e461948329d3923b969e5db663675623611a457fcda35a71 + +COUNT = 15 +QCAVSx = 3497238a7e6ad166df2dac039aa4dac8d17aa925e7c7631eb3b56e3aaa1c545fcd54d2e5985807910fb202b1fc191d2a +QCAVSy = a49e5c487dcc7aa40a8f234c979446040d9174e3ad357d404d7765183195aed3f913641b90c81a306ebf0d8913861316 +dIUT = f3f9b0c65a49a506632c8a45b10f66b5316f9eeb06fae218f2da62333f99905117b141c760e8974efc4af10570635791 +QIUTx = a4ad77aa7d86e5361118a6b921710c820721210712f4c347985fdee58aa4effa1e28be80a17b120b139f96300f89b49b +QIUTy = 1ddf22e07e03f1560d8f45a480094560dba9fae7f9531130c1b57ebb95982496524f31d3797793396fa823f22bdb4328 +ZIUT = d337eaa32b9f716b8747b005b97a553c59dab0c51df41a2d49039cdae705aa75c7b9e7bc0b6a0e8c578c902bc4fff23e + +COUNT = 16 +QCAVSx = 90a34737d45b1aa65f74e0bd0659bc118f8e4b774b761944ffa6573c6df4f41dec0d11b697abd934d390871d4b453240 +QCAVSy = 9b590719bb3307c149a7817be355d684893a307764b512eeffe07cb699edb5a6ffbf8d6032e6c79d5e93e94212c2aa4e +dIUT = 59fce7fad7de28bac0230690c95710c720e528f9a4e54d3a6a8cd5fc5c5f21637031ce1c5b4e3d39647d8dcb9b794664 +QIUTx = 9c43bf971edf09402876ee742095381f78b1bd3aa39b5132af75dbfe7e98bd78bde10fe2e903c2b6379e1deee175a1b0 +QIUTy = a6c58ecea5a477bb01bd543b339f1cc49f1371a2cda4d46eb4e53e250597942351a99665a122ffea9bde0636c375daf2 +ZIUT = 32d292b695a4488e42a7b7922e1ae537d76a3d21a0b2e36875f60e9f6d3e8779c2afb3a413b9dd79ae18e70b47d337c1 + +COUNT = 17 +QCAVSx = dda546acfc8f903d11e2e3920669636d44b2068aeb66ff07aa266f0030e1535b0ed0203cb8a460ac990f1394faf22f1d +QCAVSy = 15bbb2597913035faadf413476f4c70f7279769a40c986f470c427b4ee4962abdf8173bbad81874772925fd32f0b159f +dIUT = 3e49fbf950a424c5d80228dc4bc35e9f6c6c0c1d04440998da0a609a877575dbe437d6a5cedaa2ddd2a1a17fd112aded +QIUTx = 5a949594228b1a3d6f599eb3db0d06070fbc551c657b58234ba164ce3fe415fa5f3eb823c08dc29b8c341219c77b6b3d +QIUTy = 2baad447c8c290cfed25edd9031c41d0b76921457327f42db31122b81f337bbf0b1039ec830ce9061a3761953c75e4a8 +ZIUT = 1220e7e6cad7b25df98e5bbdcc6c0b65ca6c2a50c5ff6c41dca71e475646fd489615979ca92fb4389aeadefde79a24f1 + +COUNT = 18 +QCAVSx = 788be2336c52f4454d63ee944b1e49bfb619a08371048e6da92e584eae70bde1f171c4df378bd1f3c0ab03048a237802 +QCAVSy = 4673ebd8db604eaf41711748bab2968a23ca4476ce144e728247f08af752929157b5830f1e26067466bdfa8b65145a33 +dIUT = 50ccc1f7076e92f4638e85f2db98e0b483e6e2204c92bdd440a6deea04e37a07c6e72791c190ad4e4e86e01efba84269 +QIUTx = 756c07df0ce32c839dac9fb4733c9c28b70113a676a7057c38d223f22a3a9095a8d564653af528e04c7e1824be4a6512 +QIUTy = 17c2ce6962cbd2a2e066297b39d57dd9bb4680f0191d390f70b4e461419b2972ce68ad46127fdda6c39195774ea86df3 +ZIUT = 793bb9cd22a93cf468faf804a38d12b78cb12189ec679ddd2e9aa21fa9a5a0b049ab16a23574fe04c1c3c02343b91beb + +COUNT = 19 +QCAVSx = d09bb822eb99e38060954747c82bb3278cf96bbf36fece3400f4c873838a40c135eb3babb9293bd1001bf3ecdee7bf26 +QCAVSy = d416db6e1b87bbb7427788a3b6c7a7ab2c165b1e366f9608df512037584f213a648d47f16ac326e19aae972f63fd76c9 +dIUT = 06f132b71f74d87bf99857e1e4350a594e5fe35533b888552ceccbc0d8923c902e36141d7691e28631b8bc9bafe5e064 +QIUTx = 2a3cc6b8ff5cde926e7e3a189a1bd029c9b586351af8838f4f201cb8f4b70ef3b0da06d352c80fc26baf8f42b784459e +QIUTy = bf9985960176da6d23c7452a2954ffcbbcb24249b43019a2a023e0b3dabd461f19ad3e775c364f3f11ad49f3099400d3 +ZIUT = 012d191cf7404a523678c6fc075de8285b243720a903047708bb33e501e0dbee5bcc40d7c3ef6c6da39ea24d830da1e8 + +COUNT = 20 +QCAVSx = 13741262ede5861dad71063dfd204b91ea1d3b7c631df68eb949969527d79a1dc59295ef7d2bca6743e8cd77b04d1b58 +QCAVSy = 0baaeadc7e19d74a8a04451a135f1be1b02fe299f9dc00bfdf201e83d995c6950bcc1cb89d6f7b30bf54656b9a4da586 +dIUT = 12048ebb4331ec19a1e23f1a2c773b664ccfe90a28bfb846fc12f81dff44b7443c77647164bf1e9e67fd2c07a6766241 +QIUTx = bc18836bc7a9fdf54b5352f37d7528ab8fa8ec544a8c6180511cbfdd49cce377c39e34c031b5240dc9980503ed2f262c +QIUTy = 8086cbe338191080f0b7a16c7afc4c7b0326f9ac66f58552ef4bb9d24de3429ed5d3277ed58fcf48f2b5f61326bec6c6 +ZIUT = ad0fd3ddffe8884b9263f3c15fe1f07f2a5a22ffdc7e967085eea45f0cd959f20f18f522763e28bcc925e496a52dda98 + +COUNT = 21 +QCAVSx = 9e22cbc18657f516a864b37b783348b66f1aa9626cd631f4fa1bd32ad88cf11db52057c660860d39d11fbf024fabd444 +QCAVSy = 6b0d53c79681c28116df71e9cee74fd56c8b7f04b39f1198cc72284e98be9562e35926fb4f48a9fbecafe729309e8b6f +dIUT = 34d61a699ca576169fcdc0cc7e44e4e1221db0fe63d16850c8104029f7d48449714b9884328cae189978754ab460b486 +QIUTx = 867f81104ccd6b163a7902b670ef406042cb0cce7dcdc63d1dfc91b2c40e3cdf7595834bf9eceb79849f1636fc8462fc +QIUTy = 9d4bde8e875ec49697d258d1d59465f8431c6f5531e1c59e9f9ebe3cf164a8d9ce10a12f1979283a959bad244dd83863 +ZIUT = dc4ca392dc15e20185f2c6a8ea5ec31dfc96f56153a47394b3072b13d0015f5d4ae13beb3bed54d65848f9b8383e6c95 + +COUNT = 22 +QCAVSx = 2db5da5f940eaa884f4db5ec2139b0469f38e4e6fbbcc52df15c0f7cf7fcb1808c749764b6be85d2fdc5b16f58ad5dc0 +QCAVSy = 22e8b02dcf33e1b5a083849545f84ad5e43f77cb71546dbbac0d11bdb2ee202e9d3872e8d028c08990746c5e1dde9989 +dIUT = dc60fa8736d702135ff16aab992bb88eac397f5972456c72ec447374d0d8ce61153831bfc86ad5a6eb5b60bfb96a862c +QIUTx = b69beede85d0f829fec1b893ccb9c3e052ff692e13b974537bc5b0f9feaf7b22e84f03231629b24866bdb4b8cf908914 +QIUTy = 66f85e2bfcaba2843285b0e14ebc07ef7dafff8b424416fee647b59897b619f20eed95a632e6a4206bf7da429c04c560 +ZIUT = d765b208112d2b9ed5ad10c4046e2e3b0dbf57c469329519e239ac28b25c7d852bf757d5de0ee271cadd021d86cfd347 + +COUNT = 23 +QCAVSx = 329647baa354224eb4414829c5368c82d7893b39804e08cbb2180f459befc4b347a389a70c91a23bd9d30c83be5295d3 +QCAVSy = cc8f61923fad2aa8e505d6cfa126b9fabd5af9dce290b75660ef06d1caa73681d06089c33bc4246b3aa30dbcd2435b12 +dIUT = 6fa6a1c704730987aa634b0516a826aba8c6d6411d3a4c89772d7a62610256a2e2f289f5c3440b0ec1e70fa339e251ce +QIUTx = 53de1fc1328e8de14aecab29ad8a40d6b13768f86f7d298433d20fec791f86f8bc73f358098b256a298bb488de257bf4 +QIUTy = ac28944fd27f17b82946c04c66c41f0053d3692f275da55cd8739a95bd8cd3af2f96e4de959ea8344d8945375905858b +ZIUT = d3778850aeb58804fbe9dfe6f38b9fa8e20c2ca4e0dec335aafceca0333e3f2490b53c0c1a14a831ba37c4b9d74be0f2 + +COUNT = 24 +QCAVSx = 29d8a36d22200a75b7aea1bb47cdfcb1b7fd66de967041434728ab5d533a060df732130600fe6f75852a871fb2938e39 +QCAVSy = e19b53db528395de897a45108967715eb8cb55c3fcbf23379372c0873a058d57544b102ecce722b2ccabb1a603774fd5 +dIUT = 74ad8386c1cb2ca0fcdeb31e0869bb3f48c036afe2ef110ca302bc8b910f621c9fcc54cec32bb89ec7caa84c7b8e54a8 +QIUTx = 27a3e83cfb9d5122e73129d801615857da7cc089cccc9c54ab3032a19e0a0a9f677346e37f08a0b3ed8da6e5dd691063 +QIUTy = 8d60e44aa5e0fd30c918456796af37f0e41957901645e5c596c6d989f5859b03a0bd7d1f4e77936fff3c74d204e5388e +ZIUT = 81e1e71575bb4505498de097350186430a6242fa6c57b85a5f984a23371123d2d1424eefbf804258392bc723e4ef1e35 + + +[P-521] + +COUNT = 0 +QCAVSx = 000000685a48e86c79f0f0875f7bc18d25eb5fc8c0b07e5da4f4370f3a9490340854334b1e1b87fa395464c60626124a4e70d0f785601d37c09870ebf176666877a2046d +QCAVSy = 000001ba52c56fc8776d9e8f5db4f0cc27636d0b741bbe05400697942e80b739884a83bde99e0f6716939e632bc8986fa18dccd443a348b6c3e522497955a4f3c302f676 +dIUT = 0000017eecc07ab4b329068fba65e56a1f8890aa935e57134ae0ffcce802735151f4eac6564f6ee9974c5e6887a1fefee5743ae2241bfeb95d5ce31ddcb6f9edb4d6fc47 +QIUTx = 000000602f9d0cf9e526b29e22381c203c48a886c2b0673033366314f1ffbcba240ba42f4ef38a76174635f91e6b4ed34275eb01c8467d05ca80315bf1a7bbd945f550a5 +QIUTy = 000001b7c85f26f5d4b2d7355cf6b02117659943762b6d1db5ab4f1dbc44ce7b2946eb6c7de342962893fd387d1b73d7a8672d1f236961170b7eb3579953ee5cdc88cd2d +ZIUT = 005fc70477c3e63bc3954bd0df3ea0d1f41ee21746ed95fc5e1fdf90930d5e136672d72cc770742d1711c3c3a4c334a0ad9759436a4d3c5bf6e74b9578fac148c831 + +COUNT = 1 +QCAVSx = 000001df277c152108349bc34d539ee0cf06b24f5d3500677b4445453ccc21409453aafb8a72a0be9ebe54d12270aa51b3ab7f316aa5e74a951c5e53f74cd95fc29aee7a +QCAVSy = 0000013d52f33a9f3c14384d1587fa8abe7aed74bc33749ad9c570b471776422c7d4505d9b0a96b3bfac041e4c6a6990ae7f700e5b4a6640229112deafa0cd8bb0d089b0 +dIUT = 000000816f19c1fb10ef94d4a1d81c156ec3d1de08b66761f03f06ee4bb9dcebbbfe1eaa1ed49a6a990838d8ed318c14d74cc872f95d05d07ad50f621ceb620cd905cfb8 +QIUTx = 000000d45615ed5d37fde699610a62cd43ba76bedd8f85ed31005fe00d6450fbbd101291abd96d4945a8b57bc73b3fe9f4671105309ec9b6879d0551d930dac8ba45d255 +QIUTy = 000001425332844e592b440c0027972ad1526431c06732df19cd46a242172d4dd67c2c8c99dfc22e49949a56cf90c6473635ce82f25b33682fb19bc33bd910ed8ce3a7fa +ZIUT = 000b3920ac830ade812c8f96805da2236e002acbbf13596a9ab254d44d0e91b6255ebf1229f366fb5a05c5884ef46032c26d42189273ca4efa4c3db6bd12a6853759 + +COUNT = 2 +QCAVSx = 00000092db3142564d27a5f0006f819908fba1b85038a5bc2509906a497daac67fd7aee0fc2daba4e4334eeaef0e0019204b471cd88024f82115d8149cc0cf4f7ce1a4d5 +QCAVSy = 0000016bad0623f517b158d9881841d2571efbad63f85cbe2e581960c5d670601a6760272675a548996217e4ab2b8ebce31d71fca63fcc3c08e91c1d8edd91cf6fe845f8 +dIUT = 0000012f2e0c6d9e9d117ceb9723bced02eb3d4eebf5feeaf8ee0113ccd8057b13ddd416e0b74280c2d0ba8ed291c443bc1b141caf8afb3a71f97f57c225c03e1e4d42b0 +QIUTx = 000000717fcb3d4a40d103871ede044dc803db508aaa4ae74b70b9fb8d8dfd84bfecfad17871879698c292d2fd5e17b4f9343636c531a4fac68a35a93665546b9a878679 +QIUTy = 000000f3d96a8637036993ab5d244500fff9d2772112826f6436603d3eb234a44d5c4e5c577234679c4f9df725ee5b9118f23d8a58d0cc01096daf70e8dfec0128bdc2e8 +ZIUT = 006b380a6e95679277cfee4e8353bf96ef2a1ebdd060749f2f046fe571053740bbcc9a0b55790bc9ab56c3208aa05ddf746a10a3ad694daae00d980d944aabc6a08f + +COUNT = 3 +QCAVSx = 000000fdd40d9e9d974027cb3bae682162eac1328ad61bc4353c45bf5afe76bf607d2894c8cce23695d920f2464fda4773d4693be4b3773584691bdb0329b7f4c86cc299 +QCAVSy = 00000034ceac6a3fef1c3e1c494bfe8d872b183832219a7e14da414d4e3474573671ec19b033be831b915435905925b44947c592959945b4eb7c951c3b9c8cf52530ba23 +dIUT = 000000e548a79d8b05f923b9825d11b656f222e8cb98b0f89de1d317184dc5a698f7c71161ee7dc11cd31f4f4f8ae3a981e1a3e78bdebb97d7c204b9261b4ef92e0918e0 +QIUTx = 0000000ce800217ed243dd10a79ad73df578aa8a3f9194af528cd1094bbfee27a3b5481ad5862c8876c0c3f91294c0ab3aa806d9020cbaa2ed72b7fecdc5a09a6dad6f32 +QIUTy = 000001543c9ab45b12469232918e21d5a351f9a4b9cbf9efb2afcc402fa9b31650bec2d641a05c440d35331c0893d11fb13151335988b303341301a73dc5f61d574e67d9 +ZIUT = 00fbbcd0b8d05331fef6086f22a6cce4d35724ab7a2f49dd8458d0bfd57a0b8b70f246c17c4468c076874b0dff7a0336823b19e98bf1cec05e4beffb0591f97713c6 + +COUNT = 4 +QCAVSx = 00000098d99dee0816550e84dbfced7e88137fddcf581a725a455021115fe49f8dc3cf233cd9ea0e6f039dc7919da973cdceaca205da39e0bd98c8062536c47f258f44b5 +QCAVSy = 000000cd225c8797371be0c4297d2b457740100c774141d8f214c23b61aa2b6cd4806b9b70722aa4965fb622f42b7391e27e5ec21c5679c5b06b59127372997d421adc1e +dIUT = 000001c8aae94bb10b8ca4f7be577b4fb32bb2381032c4942c24fc2d753e7cc5e47b483389d9f3b956d20ee9001b1eef9f23545f72c5602140046839e963313c3decc864 +QIUTx = 00000106a14e2ee8ff970aa8ab0c79b97a33bba2958e070b75b94736b77bbe3f777324fa52872771aa88a63a9e8490c3378df4dc760cd14d62be700779dd1a4377943656 +QIUTy = 0000002366ce3941e0b284b1aa81215d0d3b9778fce23c8cd1e4ed6fa0abf62156c91d4b3eb55999c3471bed275e9e60e5aa9d690d310bfb15c9c5bbd6f5e9eb39682b74 +ZIUT = 0145cfa38f25943516c96a5fd4bfebb2f645d10520117aa51971eff442808a23b4e23c187e639ff928c3725fbd1c0c2ad0d4aeb207bc1a6fb6cb6d467888dc044b3c + +COUNT = 5 +QCAVSx = 0000007ae115adaaf041691ab6b7fb8c921f99d8ed32d283d67084e80b9ad9c40c56cd98389fb0a849d9ecf7268c297b6f93406119f40e32b5773ed25a28a9a85c4a7588 +QCAVSy = 000001a28e004e37eeaefe1f4dbb71f1878696141af3a10a9691c4ed93487214643b761fa4b0fbeeb247cf6d3fba7a60697536ad03f49b80a9d1cb079673654977c5fa94 +dIUT = 0000009b0af137c9696c75b7e6df7b73156bb2d45f482e5a4217324f478b10ceb76af09724cf86afa316e7f89918d31d54824a5c33107a483c15c15b96edc661340b1c0e +QIUTx = 000000748cdbb875d35f4bccb62abe20e82d32e4c14dc2feb5b87da2d0ccb11c9b6d4b7737b6c46f0dfb4d896e2db92fcf53cdbbae2a404c0babd564ad7adeac6273efa3 +QIUTy = 000001984acab8d8f173323de0bb60274b228871609373bb22a17287e9dec7495873abc09a8915b54c8455c8e02f654f602e23a2bbd7a9ebb74f3009bd65ecc650814cc0 +ZIUT = 005c5721e96c273319fd60ecc46b5962f698e974b429f28fe6962f4ac656be2eb8674c4aafc037eab48ece612953b1e8d861016b6ad0c79805784c67f73ada96f351 + +COUNT = 6 +QCAVSx = 0000012588115e6f7f7bdcfdf57f03b169b479758baafdaf569d04135987b2ce6164c02a57685eb5276b5dae6295d3fe90620f38b5535c6d2260c173e61eb888ca920203 +QCAVSy = 000001542c169cf97c2596fe2ddd848a222e367c5f7e6267ebc1bcd9ab5dcf49158f1a48e4af29a897b7e6a82091c2db874d8e7abf0f58064691344154f396dbaed188b6 +dIUT = 000001e48faacee6dec83ffcde944cf6bdf4ce4bae72747888ebafee455b1e91584971efb49127976a52f4142952f7c207ec0265f2b718cf3ead96ea4f62c752e4f7acd3 +QIUTx = 0000010eb1b4d9172bcc23f4f20cc9560fc54928c3f34ea61c00391dc766c76ed9fa608449377d1e4fadd1236025417330b4b91086704ace3e4e6484c606e2a943478c86 +QIUTy = 00000149413864069825ee1d0828da9f4a97713005e9bd1adbc3b38c5b946900721a960fe96ad2c1b3a44fe3de9156136d44cb17cbc2415729bb782e16bfe2deb3069e43 +ZIUT = 01736d9717429b4f412e903febe2f9e0fffd81355d6ce2c06ff3f66a3be15ceec6e65e308347593f00d7f33591da4043c30763d72749f72cdceebe825e4b34ecd570 + +COUNT = 7 +QCAVSx = 00000169491d55bd09049fdf4c2a53a660480fee4c03a0538675d1cd09b5bba78dac48543ef118a1173b3fbf8b20e39ce0e6b890a163c50f9645b3d21d1cbb3b60a6fff4 +QCAVSy = 00000083494b2eba76910fed33c761804515011fab50e3b377abd8a8a045d886d2238d2c268ac1b6ec88bd71b7ba78e2c33c152e4bf7da5d565e4acbecf5e92c7ad662bb +dIUT = 000000c29aa223ea8d64b4a1eda27f39d3bc98ea0148dd98c1cbe595f8fd2bfbde119c9e017a50f5d1fc121c08c1cef31b758859556eb3e0e042d8dd6aaac57a05ca61e3 +QIUTx = 0000001511c848ef60d5419a98d10204db0fe58224124370061bcfa4e9249d50618c56bf3722471b259f38263bb7b280d23caf2a1ee8737f9371cdb2732cdc958369930c +QIUTy = 000001d461681ae6d8c49b4c5f4d6016143fb1bd7491573e3ed0e6c48b82e821644f87f82f0e5f08fd16f1f98fa17586200ab02ed8c627b35c3f27617ec5fd92f456203f +ZIUT = 018f2ae9476c771726a77780208dedfefa205488996b18fecc50bfd4c132753f5766b2cd744afa9918606de2e016effc63622e9029e76dc6e3f0c69f7aeced565c2c + +COUNT = 8 +QCAVSx = 0000008415f5bbd0eee387d6c09d0ef8acaf29c66db45d6ba101860ae45d3c60e1e0e3f7247a4626a60fdd404965c3566c79f6449e856ce0bf94619f97da8da24bd2cfb6 +QCAVSy = 000000fdd7c59c58c361bc50a7a5d0d36f723b17c4f2ad2b03c24d42dc50f74a8c465a0afc4683f10fab84652dfe9e928c2626b5456453e1573ff60be1507467d431fbb2 +dIUT = 00000028692be2bf5c4b48939846fb3d5bce74654bb2646e15f8389e23708a1afadf561511ea0d9957d0b53453819d60fba8f65a18f7b29df021b1bb01cd163293acc3cc +QIUTx = 000001cfdc10c799f5c79cb6930a65fba351748e07567993e5e410ef4cacc4cd8a25784991eb4674e41050f930c7190ac812b9245f48a7973b658daf408822fe5b85f668 +QIUTy = 00000180d9ddfc9af77b9c4a6f02a834db15e535e0b3845b2cce30388301b51cecbe3276307ef439b5c9e6a72dc2d94d879bc395052dbb4a5787d06efb280210fb8be037 +ZIUT = 0105a346988b92ed8c7a25ce4d79d21bc86cfcc7f99c6cd19dbb4a39f48ab943b79e4f0647348da0b80bd864b85c6b8d92536d6aa544dc7537a00c858f8b66319e25 + +COUNT = 9 +QCAVSx = 000001c721eea805a5cba29f34ba5758775be0cf6160e6c08723f5ab17bf96a1ff2bd9427961a4f34b07fc0b14ca4b2bf6845debd5a869f124ebfa7aa72fe565050b7f18 +QCAVSy = 000000b6e89eb0e1dcf181236f7c548fd1a8c16b258b52c1a9bfd3fe8f22841b26763265f074c4ccf2d634ae97b701956f67a11006c52d97197d92f585f5748bc2672eeb +dIUT = 000001194d1ee613f5366cbc44b504d21a0cf6715e209cd358f2dd5f3e71cc0d67d0e964168c42a084ebda746f9863a86bacffc819f1edf1b8c727ccfb3047240a57c435 +QIUTx = 0000016bd15c8a58d366f7f2b2f298cc87b7485e9ee70d11d12448b8377c0a82c7626f67aff7f97be7a3546bf417eeeddf75a93c130191c84108042ea2fca17fd3f80d14 +QIUTy = 000001560502d04b74fce1743aab477a9d1eac93e5226981fdb97a7478ce4ce566ff7243931284fad850b0c2bcae0ddd2d97790160c1a2e77c3ed6c95ecc44b89e2637fc +ZIUT = 004531b3d2c6cd12f21604c8610e6723dbf4daf80b5a459d6ba5814397d1c1f7a21d7c114be964e27376aaebe3a7bc3d6af7a7f8c7befb611afe487ff032921f750f + +COUNT = 10 +QCAVSx = 000001c35823e440a9363ab98d9fc7a7bc0c0532dc7977a79165599bf1a9cc64c00fb387b42cca365286e8430360bfad3643bc31354eda50dc936c329ecdb60905c40fcb +QCAVSy = 000000d9e7f433531e44df4f6d514201cbaabb06badd6783e01111726d815531d233c5cdb722893ffbb2027259d594de77438809738120c6f783934f926c3fb69b40c409 +dIUT = 000001fd90e3e416e98aa3f2b6afa7f3bf368e451ad9ca5bd54b5b14aee2ed6723dde5181f5085b68169b09fbec721372ccf6b284713f9a6356b8d560a8ff78ca3737c88 +QIUTx = 000001ebea1b10d3e3b971b7efb69fc878de11c7f472e4e4d384c31b8d6288d8071517acade9b39796c7af5163bcf71aeda777533f382c6cf0a4d9bbb938c85f44b78037 +QIUTy = 0000016b0e3e19c2996b2cbd1ff64730e7ca90edca1984f9b2951333535e5748baa34a99f61ff4d5f812079e0f01e87789f34efdad8098015ee74a4f846dd190d16dc6e1 +ZIUT = 0100c8935969077bae0ba89ef0df8161d975ec5870ac811ae7e65ca5394efba4f0633d41bf79ea5e5b9496bbd7aae000b0594baa82ef8f244e6984ae87ae1ed124b7 + +COUNT = 11 +QCAVSx = 000000093057fb862f2ad2e82e581baeb3324e7b32946f2ba845a9beeed87d6995f54918ec6619b9931955d5a89d4d74adf1046bb362192f2ef6bd3e3d2d04dd1f87054a +QCAVSy = 000000aa3fb2448335f694e3cda4ae0cc71b1b2f2a206fa802d7262f19983c44674fe15327acaac1fa40424c395a6556cb8167312527fae5865ecffc14bbdc17da78cdcf +dIUT = 0000009012ecfdadc85ced630afea534cdc8e9d1ab8be5f3753dcf5f2b09b40eda66fc6858549bc36e6f8df55998cfa9a0703aecf6c42799c245011064f530c09db98369 +QIUTx = 000000234e32be0a907131d2d128a6477e0caceb86f02479745e0fe245cb332de631c078871160482eeef584e274df7fa412cea3e1e91f71ecba8781d9205d48386341ad +QIUTy = 000001cf86455b09b1c005cffba8d76289a3759628c874beea462f51f30bd581e3803134307dedbb771b3334ee15be2e242cd79c3407d2f58935456c6941dd9b6d155a46 +ZIUT = 017f36af19303841d13a389d95ec0b801c7f9a679a823146c75c17bc44256e9ad422a4f8b31f14647b2c7d317b933f7c2946c4b8abd1d56d620fab1b5ff1a3adc71f + +COUNT = 12 +QCAVSx = 00000083192ed0b1cb31f75817794937f66ad91cf74552cd510cedb9fd641310422af5d09f221cad249ee814d16dd7ac84ded9eacdc28340fcfc9c0c06abe30a2fc28cd8 +QCAVSy = 0000002212ed868c9ba0fb2c91e2c39ba93996a3e4ebf45f2852d0928c48930e875cc7b428d0e7f3f4d503e5d60c68cb49b13c2480cd486bed9200caddaddfe4ff8e3562 +dIUT = 000001b5ff847f8eff20b88cfad42c06e58c3742f2f8f1fdfd64b539ba48c25926926bd5e332b45649c0b184f77255e9d58fe8afa1a6d968e2cb1d4637777120c765c128 +QIUTx = 000001de3dc9263bc8c4969dc684be0eec54befd9a9f3dba194d8658a789341bf0d78d84da6735227cafaf09351951691197573c8c360a11e5285712b8bbdf5ac91b977c +QIUTy = 000000812de58cd095ec2e5a9b247eb3ed41d8bef6aeace194a7a05b65aa5d289fbc9b1770ec84bb6be0c2c64cc37c1d54a7f5d71377a9adbe20f26f6f2b544a821ea831 +ZIUT = 00062f9fc29ae1a68b2ee0dcf956cbd38c88ae5f645eaa546b00ebe87a7260bf724be20d34b9d02076655c933d056b21e304c24ddb1dedf1dd76de611fc4a2340336 + +COUNT = 13 +QCAVSx = 000001a89b636a93e5d2ba6c2292bf23033a84f06a3ac1220ea71e806afbe097a804cc67e9baa514cfb6c12c9194be30212bf7aae7fdf6d376c212f0554e656463ffab7e +QCAVSy = 00000182efcaf70fc412d336602e014da47256a0b606f2addcce8053bf817ac8656bb4e42f14c8cbf2a68f488ab35dcdf64056271dee1f606a440ba4bd4e5a11b8b8e54f +dIUT = 0000011a6347d4e801c91923488354cc533e7e35fddf81ff0fb7f56bb0726e0c29ee5dcdc5f394ba54cf57269048aab6e055895c8da24b8b0639a742314390cc04190ed6 +QIUTx = 000000fe30267f33ba5cdefc25cbb3c9320dad9ccb1d7d376644620ca4fadee5626a3cede25ad254624def727a7048f7145f76162aa98042f9b123b2076f8e8cf59b3fdf +QIUTy = 0000001145dc6631953b6e2945e94301d6cbb098fe4b04f7ee9b09411df104dc82d7d79ec46a01ed0f2d3e7db6eb680694bdeb107c1078aec6cabd9ebee3d342fe7e54df +ZIUT = 0128ab09bfec5406799e610f772ba17e892249fa8e0e7b18a04b9197034b250b48294f1867fb9641518f92766066a07a8b917b0e76879e1011e51ccbd9f540c54d4f + +COUNT = 14 +QCAVSx = 0000017200b3f16a68cbaed2bf78ba8cddfb6cffac262bba00fbc25f9dc72a07ce59372904899f364c44cb264c097b647d4412bee3e519892d534d9129f8a28f7500fee7 +QCAVSy = 000000baba8d672a4f4a3b63de48b96f56e18df5d68f7d70d5109833f43770d6732e06b39ad60d93e5b43db8789f1ec0aba47286a39ea584235acea757dbf13d53b58364 +dIUT = 00000022b6d2a22d71dfaa811d2d9f9f31fbed27f2e1f3d239538ddf3e4cc8c39a330266db25b7bc0a9704f17bde7f3592bf5f1f2d4b56013aacc3d8d1bc02f00d3146cc +QIUTx = 000000ba38cfbf9fd2518a3f61d43549e7a6a6d28b2be57ffd3e0faceb636b34ed17e044a9f249dae8fc132e937e2d9349cd2ed77bb1049ceb692a2ec5b17ad61502a64c +QIUTy = 0000001ec91d3058573fa6c0564a02a1a010160c313bc7c73510dc983e5461682b5be00dbce7e2c682ad73f29ca822cdc111f68fabe33a7b384a648342c3cdb9f050bcdb +ZIUT = 0101e462e9d9159968f6440e956f11dcf2227ae4aea81667122b6af9239a291eb5d6cf5a4087f358525fcacfa46bb2db01a75af1ba519b2d31da33eda87a9d565748 + +COUNT = 15 +QCAVSx = 0000004efd5dbd2f979e3831ce98f82355d6ca14a5757842875882990ab85ab9b7352dd6b9b2f4ea9a1e95c3880d65d1f3602f9ca653dc346fac858658d75626f4d4fb08 +QCAVSy = 00000061cf15dbdaa7f31589c98400373da284506d70c89f074ed262a9e28140796b7236c2eef99016085e71552ff488c72b7339fefb7915c38459cb20ab85aec4e45052 +dIUT = 0000005bacfff268acf6553c3c583b464ea36a1d35e2b257a5d49eb3419d5a095087c2fb4d15cf5bf5af816d0f3ff7586490ccd3ddc1a98b39ce63749c6288ce0dbdac7d +QIUTx = 00000036e488da7581472a9d8e628c58d6ad727311b7e6a3f6ae33a8544f34b09280249020be7196916fafd90e2ec54b66b5468d2361b99b56fa00d7ac37abb8c6f16653 +QIUTy = 0000011edb9fb8adb6a43f4f5f5fdc1421c9fe04fc8ba46c9b66334e3af927c8befb4307104f299acec4e30f812d9345c9720d19869dbfffd4ca3e7d2713eb5fc3f42615 +ZIUT = 0141d6a4b719ab67eaf04a92c0a41e2dda78f4354fb90bdc35202cc7699b9b04d49616f82255debf7bbec045ae58f982a66905fcfae69d689785e38c868eb4a27e7b + +COUNT = 16 +QCAVSx = 00000129891de0cf3cf82e8c2cf1bf90bb296fe00ab08ca45bb7892e0e227a504fdd05d2381a4448b68adff9c4153c87eacb78330d8bd52515f9f9a0b58e85f446bb4e10 +QCAVSy = 0000009edd679696d3d1d0ef327f200383253f6413683d9e4fcc87bb35f112c2f110098d15e5701d7ceee416291ff5fed85e687f727388b9afe26a4f6feed560b218e6bb +dIUT = 0000008e2c93c5423876223a637cad367c8589da69a2d0fc68612f31923ae50219df2452e7cc92615b67f17b57ffd2f52b19154bb40d7715336420fde2e89fee244f59dc +QIUTx = 000000fa3b35118d6c422570f724a26f90b2833b19239174cea081c53133f64db60d6940ea1261299c04c1f4587cdb0c4c39616479c1bb0c146799a118032dcf98f899c0 +QIUTy = 00000069f040229006151fa32b51f679c8816f7c17506b403809dc77cd58a2aec430d94d13b6c916de99f355aa45fcfbc6853d686c71be496a067d24bfaea4818fc51f75 +ZIUT = 00345e26e0abb1aac12b75f3a9cf41efe1c336396dffa4a067a4c2cfeb878c68b2b045faa4e5b4e6fa4678f5b603c351903b14bf9a6a70c439257199a640890b61d1 + +COUNT = 17 +QCAVSx = 000001a3c20240e59f5b7a3e17c275d2314ba1741210ad58b71036f8c83cc1f6b0f409dfdd9113e94b67ec39c3291426c23ffcc447054670d2908ff8fe67dc2306034c5c +QCAVSy = 000001d2825bfd3af8b1e13205780c137fe938f84fde40188e61ea02cead81badfdb425c29f7d7fb0324debadc10bbb93de68f62c35069268283f5265865db57a79f7bf7 +dIUT = 00000004d49d39d40d8111bf16d28c5936554326b197353eebbcf47545393bc8d3aaf98f14f5be7074bfb38e6cc97b989754074daddb3045f4e4ce745669fdb3ec0d5fa8 +QIUTx = 0000012ec226d050ce07c79b3df4d0f0891f9f7adf462e8c98dbc1a2a14f5e53a3f5ad894433587cc429a8be9ea1d84fa33b1803690dae04da7218d30026157fc995cf52 +QIUTy = 0000004837dfbf3426f57b5c793269130abb9a38f618532211931154db4eeb9aede88e57290f842ea0f2ea9a5f74c6203a3920fe4e305f6118f676b154e1d75b9cb5eb88 +ZIUT = 006fe9de6fb8e672e7fd150fdc5e617fabb0d43906354ccfd224757c7276f7a1010091b17ed072074f8d10a5ec971eb35a5cb7076603b7bc38d432cbc059f80f9488 + +COUNT = 18 +QCAVSx = 0000007e2d138f2832e345ae8ff65957e40e5ec7163f016bdf6d24a2243daa631d878a4a16783990c722382130f9e51f0c1bd6ff5ac96780e48b68f5dec95f42e6144bb5 +QCAVSy = 000000b0de5c896791f52886b0f09913e26e78dd0b69798fc4df6d95e3ca708ecbcbcce1c1895f5561bbabaae372e9e67e6e1a3be60e19b470cdf673ec1fc393d3426e20 +dIUT = 0000011a5d1cc79cd2bf73ea106f0e60a5ace220813b53e27b739864334a07c03367efda7a4619fa6eef3a9746492283b3c445610a023a9cc49bf4591140384fca5c8bb5 +QIUTx = 000000eb07c7332eedb7d3036059d35f7d2288d4377d5f42337ad3964079fb120ccd4c8bd384b585621055217023acd9a94fcb3b965bfb394675e788ade41a1de73e620c +QIUTy = 000000491a835de2e6e7deb7e090f4a11f2c460c0b1f3d5e94ee8d751014dc720784fd3b54500c86ebaef18429f09e8e876d5d1538968a030d7715dde99f0d8f06e29d59 +ZIUT = 01e4e759ecedce1013baf73e6fcc0b92451d03bdd50489b78871c333114990c9ba6a9b2fc7b1a2d9a1794c1b60d9279af6f146f0bbfb0683140403bfa4ccdb524a29 + +COUNT = 19 +QCAVSx = 000000118c36022209b1af8ebad1a12b566fc48744576e1199fe80de1cdf851cdf03e5b9091a8f7e079e83b7f827259b691d0c22ee29d6bdf73ec7bbfd746f2cd97a357d +QCAVSy = 000000da5ff4904548a342e2e7ba6a1f4ee5f840411a96cf63e6fe622f22c13e614e0a847c11a1ab3f1d12cc850c32e095614ca8f7e2721477b486e9ff40372977c3f65c +dIUT = 0000010c908caf1be74c616b625fc8c1f514446a6aec83b5937141d6afbb0a8c7666a7746fa1f7a6664a2123e8cdf6cd8bf836c56d3c0ebdcc980e43a186f938f3a78ae7 +QIUTx = 00000031890f4c7abec3f723362285d77d2636f876817db3bbc88b01e773597b969ff6f013ea470c854ab4a7739004eb8cbea69b82ddf36acadd406871798ecb2ac3aa7f +QIUTy = 000000d8b429ae3250266b9643c0c765a60dc10155bc2531cf8627296f4978b6640a9e600e19d0037d58503fa80799546a814d7478a550aa90e5ebeb052527faaeae5d08 +ZIUT = 0163c9191d651039a5fe985a0eea1eba018a40ab1937fcd2b61220820ee8f2302e9799f6edfc3f5174f369d672d377ea8954a8d0c8b851e81a56fda95212a6578f0e + +COUNT = 20 +QCAVSx = 000001780edff1ca1c03cfbe593edc6c049bcb2860294a92c355489d9afb2e702075ade1c953895a456230a0cde905de4a3f38573dbfcccd67ad6e7e93f0b5581e926a5d +QCAVSy = 000000a5481962c9162962e7f0ebdec936935d0eaa813e8226d40d7f6119bfd940602380c86721e61db1830f51e139f210000bcec0d8edd39e54d73a9a129f95cd5fa979 +dIUT = 000001b37d6b7288de671360425d3e5ac1ccb21815079d8d73431e9b74a6f0e7ae004a357575b11ad66642ce8b775593eba9d98bf25c75ef0b4d3a2098bbc641f59a2b77 +QIUTx = 000000189a5ee34de7e35aefeaeef9220c18071b4c29a4c3bd9d954458bd3e82a7a34da34cff5579b8101c065b1f2f527cf4581501e28ef5671873e65267733d003520af +QIUTy = 000001eb4bc50a7b4d4599d7e3fa773ddb9eb252c9b3422872e544bdf75c7bf60f5166ddc11eb08fa7c30822dabaee373ab468eb2d922e484e2a527fff2ebb804b7d9a37 +ZIUT = 015d613e267a36342e0d125cdad643d80d97ed0600afb9e6b9545c9e64a98cc6da7c5aaa3a8da0bdd9dd3b97e9788218a80abafc106ef065c8f1c4e1119ef58d298b + +COUNT = 21 +QCAVSx = 0000016dacffa183e5303083a334f765de724ec5ec9402026d4797884a9828a0d321a8cfac74ab737fe20a7d6befcfc73b6a35c1c7b01d373e31abc192d48a4241a35803 +QCAVSy = 0000011e5327cac22d305e7156e559176e19bee7e4f2f59e86f1a9d0b6603b6a7df1069bde6387feb71587b8ffce5b266e1bae86de29378a34e5c74b6724c4d40a719923 +dIUT = 000000f2661ac762f60c5fff23be5d969ccd4ec6f98e4e72618d12bdcdb9b4102162333788c0bae59f91cdfc172c7a1681ee44d96ab2135a6e5f3415ebbcd55165b1afb0 +QIUTx = 000000a8e25a6902d687b4787cdc94c364ac7cecc5c495483ed363dc0aa95ee2bd739c4c4d46b17006c728b076350d7d7e54c6822f52f47162a25109aaaba690cab696ec +QIUTy = 00000168d2f08fe19e4dc9ee7a195b03c9f7fe6676f9f520b6270557504e72ca4394a2c6918625e15ac0c51b8f95cd560123653fb8e8ee6db961e2c4c62cc54e92e2a2a9 +ZIUT = 014d6082a3b5ced1ab8ca265a8106f302146c4acb8c30bb14a4c991e3c82a9731288bdb91e0e85bda313912d06384fc44f2153fb13506fa9cf43c9aab5750988c943 + +COUNT = 22 +QCAVSx = 000000a091421d3703e3b341e9f1e7d58f8cf7bdbd1798d001967b801d1cec27e605c580b2387c1cb464f55ce7ac80334102ab03cfb86d88af76c9f4129c01bedd3bbfc4 +QCAVSy = 0000008c9c577a8e6fc446815e9d40baa66025f15dae285f19eb668ee60ae9c98e7ecdbf2b2a68e22928059f67db188007161d3ecf397e0883f0c4eb7eaf7827a62205cc +dIUT = 000000f430ca1261f09681a9282e9e970a9234227b1d5e58d558c3cc6eff44d1bdf53de16ad5ee2b18b92d62fc79586116b0efc15f79340fb7eaf5ce6c44341dcf8dde27 +QIUTx = 0000006c1d9b5eca87de1fb871a0a32f807c725adccde9b3967453a71347d608f0c030cd09e338cdecbf4a02015bc8a6e8d3e2595fe773ffc2fc4e4a55d0b1a2cc00323b +QIUTy = 000001141b2109e7f4981c952aa818a2b9f6f5c41feccdb7a7a45b9b4b672937771b008cae5f934dfe3fed10d383ab1f38769c92ce88d9be5414817ecb073a31ab368ccb +ZIUT = 0020c00747cb8d492fd497e0fec54644bf027d418ab686381f109712a99cabe328b9743d2225836f9ad66e5d7fed1de247e0da92f60d5b31f9e47672e57f710598f4 + +COUNT = 23 +QCAVSx = 0000004f38816681771289ce0cb83a5e29a1ab06fc91f786994b23708ff08a08a0f675b809ae99e9f9967eb1a49f196057d69e50d6dedb4dd2d9a81c02bdcc8f7f518460 +QCAVSy = 0000009efb244c8b91087de1eed766500f0e81530752d469256ef79f6b965d8a2232a0c2dbc4e8e1d09214bab38485be6e357c4200d073b52f04e4a16fc6f5247187aecb +dIUT = 0000005dc33aeda03c2eb233014ee468dff753b72f73b00991043ea353828ae69d4cd0fadeda7bb278b535d7c57406ff2e6e473a5a4ff98e90f90d6dadd25100e8d85666 +QIUTx = 000000c825ba307373cec8dd2498eef82e21fd9862168dbfeb83593980ca9f82875333899fe94f137daf1c4189eb502937c3a367ea7951ed8b0f3377fcdf2922021d46a5 +QIUTy = 0000016b8a2540d5e65493888bc337249e67c0a68774f3e8d81e3b4574a0125165f0bd58b8af9de74b35832539f95c3cd9f1b759408560aa6851ae3ac7555347b0d3b13b +ZIUT = 00c2bfafcd7fbd3e2fd1c750fdea61e70bd4787a7e68468c574ee99ebc47eedef064e8944a73bcb7913dbab5d93dca660d216c553622362794f7a2acc71022bdb16f + +COUNT = 24 +QCAVSx = 000001a32099b02c0bd85371f60b0dd20890e6c7af048c8179890fda308b359dbbc2b7a832bb8c6526c4af99a7ea3f0b3cb96ae1eb7684132795c478ad6f962e4a6f446d +QCAVSy = 0000017627357b39e9d7632a1370b3e93c1afb5c851b910eb4ead0c9d387df67cde85003e0e427552f1cd09059aad0262e235cce5fba8cedc4fdc1463da76dcd4b6d1a46 +dIUT = 000000df14b1f1432a7b0fb053965fd8643afee26b2451ecb6a8a53a655d5fbe16e4c64ce8647225eb11e7fdcb23627471dffc5c2523bd2ae89957cba3a57a23933e5a78 +QIUTx = 0000004e8583bbbb2ecd93f0714c332dff5ab3bc6396e62f3c560229664329baa5138c3bb1c36428abd4e23d17fcb7a2cfcc224b2e734c8941f6f121722d7b6b94154576 +QIUTy = 000001cf0874f204b0363f020864672fadbf87c8811eb147758b254b74b14fae742159f0f671a018212bbf25b8519e126d4cad778cfff50d288fd39ceb0cac635b175ec0 +ZIUT = 01aaf24e5d47e4080c18c55ea35581cd8da30f1a079565045d2008d51b12d0abb4411cda7a0785b15d149ed301a3697062f42da237aa7f07e0af3fd00eb1800d9c41 + + +[K-163] + +COUNT = 0 +QCAVSx = 0000000574236f1428c432130946783a5b3aabb6c27ea5d6 +QCAVSy = 00000007908c251b8da021cbac281f123f7af4fac5b3dbb8 +dIUT = 6653b6077398fadc7bf5e60158170148c3dc4527 +QIUTx = 000000071f8b2877d6027d9c1ade4244f2dea12692ef23d5 +QIUTy = 00000005c15ee776221c72b84b347ce383f38067b89c3e9a +ZIUT = 04325bff38f1b0c83c27f554a6c972a80f14bc23bc + +COUNT = 1 +QCAVSx = 00000001699744092fe2b5fe7ecbf6987b7aea0a06fd2cb0 +QCAVSy = 000000035de441df9408d91f0e021df8f0526b8063031495 +dIUT = 00000003aef44754d0ca97d42b4e97aa92156263c0e078f6 +QIUTx = 00000001b0108c786bf4d340f0505bdfc7d45b514611ad94 +QIUTy = 000000022c9c39d5fb9456b8a2221cea4f058f6a8d2cd84a +ZIUT = 05f9ac3a3dd88429600958386c55bef4b1aa5f0c24 + +COUNT = 2 +QCAVSx = 00000002965db159171f5cb7e7a1bcc61611aeaca8c52c9b +QCAVSy = 00000006871d1e9c1fe845268076a995803a6d49cd075554 +dIUT = 000000031172342e6d37cc1e062a4494c39cba48f9ad9a8c +QIUTx = 00000003a27ecaec2b66feac2040f6890128bd0058d31924 +QIUTy = 000000014007e3209b6d7127b0f393e5e58b1590b9f40be2 +ZIUT = 022e0290eda5d348894129f7455d1c766d32d5c2c2 + +COUNT = 3 +QCAVSx = 000000055b68c0c2c246fe0f2cd5484b58814c65213ea541 +QCAVSy = 0000000539c11d2592a2f6393b6e86c54df909b95fe0d5a8 +dIUT = 000000032a511cdcd4bfc567ceac8c24ed04e8894df78ddf +QIUTx = 00000006978dacaa47d8f3bc90b41ec7f4f8ac79a86ddd07 +QIUTy = 00000007f8b0ef4270760376bc2d5faed83da7872631d09f +ZIUT = 037f659f430009fcdae4e9f6e6316b0f5dbb268212 + +COUNT = 4 +QCAVSx = 00000006b8ef5a62d3b636a5a76bfeb1ef8ff4d8b3d9e2fc +QCAVSy = 0000000675a757266718398d8af66d2971798478e2f37d28 +dIUT = 00000002c6f64fe609eb8eeb5b53fab6308898e63ff2e3f6 +QIUTx = 0000000549e1a82ec284bf77d528627e52d832e236c92ad3 +QIUTy = 000000019883aa9b458b35bd544d6882812150c1497d31d4 +ZIUT = 00503bbb9b62f50ae7a8dfd74a1741826f09290651 + +COUNT = 5 +QCAVSx = 000000056c4a3586acb03099d52b2cd4ac59269cf51b8730 +QCAVSy = 00000002426561cbd9da1b23a6003de0e5f7c4a065a5c2b8 +dIUT = 000000026a56867513ddd8ca94d7923baa1f7fb00daa38fa +QIUTx = 00000006c28a40dc4e5503d2c4b8ab0b6b7046e8e25ac09f +QIUTy = 0000000121911654a5836005d8036d976585ff1d831e587b +ZIUT = 012cf17799fdefa2940b18d56e80d44414c5b13884 + +COUNT = 6 +QCAVSx = 0000000741c69a4edb386c94f819d1b5ddd0281e4ff29765 +QCAVSy = 00000000d32f972abac91be85a709eba07f5d16215ae602d +dIUT = 0000000386811079c8021c2d79f4de952cb2e599c42e19ed +QIUTx = 000000060aa42a62e21eea37e362b4d3de837f0c49d3ac13 +QIUTy = 000000069b20d6fd16d13b1883df05629ac7d1b82386b344 +ZIUT = 062a2f926ab435ac14e05d44c27b46b6820b713aee + +COUNT = 7 +QCAVSx = 00000001ef47795fb0e380405ab5e88defc3ced9a92514a6 +QCAVSy = 00000000be6181d7fc03ca8bfdf11869cea28cfa0e5f5f64 +dIUT = e46e9c965268647f2048474c7b1a54dffe728f1f +QIUTx = 00000007a984ead440310cef2e1338972ff2dddb65cac3d2 +QIUTy = 0000000333c1a93427fe6ac502760b7778898a8bb6a40ad9 +ZIUT = 0399b9294e895486bdefbaad7a729353ce09586357 + +COUNT = 8 +QCAVSx = 0000000374d7f9ba8cda8a68de7279d3ff8674032fd47c02 +QCAVSy = 00000003ede995c3a4e8a6fe21cd1e4cd4ca3812c0d692a5 +dIUT = 000000027334971405b0461c3ede67f2ba336734451a8378 +QIUTx = 0000000767c31ee9303b1b2cd3059f81507ef304ebd3102c +QIUTy = 0000000251e0d430dc3f63f3a37bab1e7a957652cf67e22c +ZIUT = 022325a9a769a902c2e64c80a1d35429ced42ae0a4 + +COUNT = 9 +QCAVSx = 00000006577df54e11c7e76202f94f564e6137b23ce6e441 +QCAVSy = 000000068936600aadcb25fd4024ed3e845b2bbf807280e6 +dIUT = 000000019bb480739011235c6d5c6e74d6a7bb4f20f61b7a +QIUTx = 0000000093549075704d79dae772317dd65244fa772569eb +QIUTy = 00000002a8a2821dd39d7e7653ca71cfc1a9ed857801a39b +ZIUT = 051392d5377016358405030b48744003db66440a2d + +COUNT = 10 +QCAVSx = 0000000261d15345ceb492229a8d74597e7dfd19aeb6848a +QCAVSy = 0000000114a122ce28ca15620f7b40a1f26b4234c956bdc1 +dIUT = f4edb58bcc3d6e9d317229420a733281eccff1cf +QIUTx = 000000027183609b7593b1845365c081d45ff66c9ab5e370 +QIUTy = 000000069b981236fe930947b6b77f374282a18e4be993cb +ZIUT = 045dac076e79de2fc631315465d3ef6245f26647e5 + +COUNT = 11 +QCAVSx = 000000070e380f49370a0027954a4ea880bc1929b28c5329 +QCAVSy = 000000046fe3b454af9420a811f1e15f774da5ae1a40b459 +dIUT = 00000001b990491a12fdee231aa2a116e1e3c1c91d0fd478 +QIUTx = 00000003da869d09c4e4545ac1689fc72316012632d0abd9 +QIUTy = 00000002c820f40310e5ffd2f8bf439fba879bb2ef621b2a +ZIUT = 014f7a46847ed6a7ff605b0e52c616e4ad3f0d5029 + +COUNT = 12 +QCAVSx = 00000006e60af77419b9fe0fc5c79ca1a22a1011402405b6 +QCAVSy = 000000069bca34005b578cd7a7a6929bd3f6ce29943b5ed9 +dIUT = e829b9942fd96487f6012908fe04f6d8eaaf1966 +QIUTx = 00000005ab2074c04df57160167735f7fc2d8f629d34ff18 +QIUTy = 000000012e9da6d05bb3e2acbe5ba4afb4a0dd72db07d6ac +ZIUT = 00eacabc34555956995623e60482e5c118e34e2094 + +COUNT = 13 +QCAVSx = 00000004f750e27500e10f0a176b83f14bc26d6bd71ebd74 +QCAVSy = 000000039e5009067c0ee2c8f55b7e84da7a391f08af7504 +dIUT = 0000000157ce8f0b6ce92e426ec99f223ad82763e4bd3ff3 +QIUTx = 00000005d3989cca4ae732de93672b25c9260861b4c0dce3 +QIUTy = 0000000436a331ead24f2807b55260f9dc3de668cfbfebb7 +ZIUT = 0414a622645107f115576f51cdf39d1393a2d7851f + +COUNT = 14 +QCAVSx = 00000002ab9f5ba94102d21a706761eac0092190f1cdad04 +QCAVSy = 00000004addd77e199c132d18ac541b117748d2319db7fe5 +dIUT = 0000000379885f45f2d707be1c11d86c41bada493b2a5603 +QIUTx = 00000005ae31cb29b31d24f5f94c30e9c02f07f38bff0ac8 +QIUTy = 00000004d8d8e39bf87f058543dc8990a91214da416cc558 +ZIUT = 056be002daff11c4066e10acd046a85e170fa4c122 + +COUNT = 15 +QCAVSx = 000000043d25d2de9293b84d351a33cb1a52f5930a4c8b76 +QCAVSy = 00000003d259d8236e9c8d6437f41e6d54611c52238fe2d5 +dIUT = ba8c5864db3efd768b9376fc2b6c1f85f46f6af2 +QIUTx = 000000062f622149823f255b4f86906666f3a3556af080ea +QIUTy = 0000000274ca32c10f9add61a026d20ad3ad56b17fb06a46 +ZIUT = 021fef8e473daeda8ef6bf07814d7b9b613e3076a3 + +COUNT = 16 +QCAVSx = 00000000560e1a421865118bea16cdad6b67aba384ef387b +QCAVSy = 000000058b213ec2ab3942f8f6ad60a956955b589066b856 +dIUT = 00000003e5080484d3730b2248ccc48260d4bd1857605ad1 +QIUTx = 000000058aea6e40b8cb25e6622a7be4ff01b79c92de72a5 +QIUTy = 000000043f6776b6deff3d29b4c703899d705c7fecf525c4 +ZIUT = 03a287fd1cca68db47a3c74c12627fc3728568dd66 + +COUNT = 17 +QCAVSx = 000000038e485de92e41f1caca6c0eb9d811a5aca89bf345 +QCAVSy = 0000000331a1677c46a68e964811a9cc5e4e53ea71e23129 +dIUT = 5d052ba1abea724978caef1879245672d5aef891 +QIUTx = 000000036b84a77337a9de5c1dd7ae3c899381382f0fffa4 +QIUTy = 000000056d4ac39fe881fdb8e60d4559658aaade45663ee5 +ZIUT = 029558b41b8b92387bc22c868f51bb7acb6e4ee2e3 + +COUNT = 18 +QCAVSx = 000000064259e500476dda3e97e25e491d466c2b7958bd49 +QCAVSy = 00000003c2e53281393641a518d1dceffabee8b29bde1402 +dIUT = 000000039180187a9eddcf38dc264f055b07d20b9f9a8bc4 +QIUTx = 00000004b292d1fa09dfc5e6a3ad99fd02feb74d480e34f2 +QIUTy = 00000006e1888009a0a0491c0be6abfac943d377f0b4863b +ZIUT = 0530020c8f6362312bfbe5c1c605b40dc2e032e81c + +COUNT = 19 +QCAVSx = 00000003714276997b4478e2d8b59af5f2e63e22bc4c31e4 +QCAVSy = 0000000673f28d962abfedee62eab47c3b4579a1e5168336 +dIUT = 000000016d37862b195763c6a01d5e39b9459a32507c2b21 +QIUTx = 000000033440e460c475f2058a767ec466ca18bce41f830e +QIUTy = 0000000372aee323d063fa89acbffbf55024ae24e4929f19 +ZIUT = 0521673006a1d9608911d54536e122d809e919d804 + +COUNT = 20 +QCAVSx = 0000000275ec15f27dd2da6e44dfe6235472d5bd3a2502f8 +QCAVSy = 000000058fd02262b27c185dde26b2c77d5a4f4d50dc9928 +dIUT = 6c658794b039c820a8b033008fa8ac7556bcaec3 +QIUTx = 00000004cbfb286691e415081a1785ec6b0aacdb1d231d1d +QIUTy = 00000005dd6acfe91d68a8ec23686478c0ee8c89277aef14 +ZIUT = 0460579beca16cccce314ff3040de4785336fc358c + +COUNT = 21 +QCAVSx = 0000000233af36103039226f416dd22e1a26b73f9093d38a +QCAVSy = 0000000734258a175c97768a9f72b824b99a91f5cf8e3d96 +dIUT = 0000000169c8da22c35a855495047a104be00b1575b652ab +QIUTx = 000000045efed9c8bd2a4e429588f344f49d1e63e668bd01 +QIUTy = 000000025d1af85ac21d59822d7df8f0e4bebadf3b5d4401 +ZIUT = 05ba66964483fe473ccbd00c37ad3ba40cc5969f62 + +COUNT = 22 +QCAVSx = 00000006d032152240f28be7f74df8f6d2a450c1229a5a95 +QCAVSy = 00000007aadac77cc4448985d1794636bc1d582f3d101a33 +dIUT = 032fc790864632630c49a29e9ad0fb6d10f2b58c +QIUTx = 0000000779cfb3e17c902a2584ed3382a8bed8262db98424 +QIUTy = 000000004af273875f8a2ab9a94ac0d1e4a23390b2bb505c +ZIUT = 0277c4a76e1613b2ede699a675c1645a786075009e + +COUNT = 23 +QCAVSx = 00000001f8581ec61df1409227aab7a015f2c71d29e3716c +QCAVSy = 00000001c1f51cc4185b68a260e31b4b00c03a4403f65c25 +dIUT = 00000003c1de5bb40e70933ed7db84ce2cb468cbba299b3a +QIUTx = 00000005ffe0f16018bd4bdee5f73bfdad04d713f2216f50 +QIUTy = 000000042361c881f0081cb0544efab0c3b34f59eaadeec4 +ZIUT = 03c6481dac387af39e8c09a553068ac496eea03691 + +COUNT = 24 +QCAVSx = 00000002ba22fbdaaaa806c8570f14ad4c882a610ccb8d84 +QCAVSy = 00000006d4438e528ca887b05bd2564df93bef9bf660da78 +dIUT = 00000003881275ba48bea0becc0211903467f5d0aae321aa +QIUTx = 0000000776e40fe7149985337ef1b6c9b830cb3608752aa6 +QIUTy = 000000058e6ecbb27b0b2d3cd0e3a7ba538de3576fd5b9f6 +ZIUT = 07b5d096d06d41c3ad6458cc93417e6facc99bc7b8 + + +[K-233] + +COUNT = 0 +QCAVSx = 000001f40e34b3ed4a1b2d40c056fb75f2ad543c897cfd82f542cf746a0f202f +QCAVSy = 000000c130a1abe92bc4c977c800777996ccc50b90df991a2e81dd515c188599 +dIUT = 000000135a5b8c3ce047fbc5df26277d3bf83ac33ddadb5cf4a050ca82be48f0 +QIUTx = 000001a53e5c138b3d83905d563aa1db01274633c986b52f78225a92e33e7952 +QIUTy = 000000ecabd3e2e26729a965604e560ed4498a22b31c39642e1cf99b1dde3ec7 +ZIUT = 00a822b141ca1f5ad32899e68c54d1fec3df8100df485ebf1c5868a9ac89 + +COUNT = 1 +QCAVSx = 000000c864c2a462a9363a4ac3d818211bca0369472d186288a27567433bda45 +QCAVSy = 000000689d4d0006eba054dc69fcc0786780fb5f74d3989213504e2f6e666980 +dIUT = 00000051be6fbcd4878c55439b0bcbbe5ea8e84bc9db89e70a8e8ebf34782da8 +QIUTx = 000001c5a1e5d3ee516e3ede723fa2d5cd3456b116326303c5ee49273a5604c4 +QIUTy = 000000568d0fe7130295541bfa265074147546e9733736ba007559d716d8e094 +ZIUT = 01662682bec2dfae05e38587c8e6a4d18aef4cb3416989c47c11bbe2810f + +COUNT = 2 +QCAVSx = 000001782d82fcd211c0247c87e657efcc5d2ff6b05eb935330a53903fb3bfa3 +QCAVSy = 000000cce830a515d690ab98149579ad3481384859e565d07fa61f50ebd669a2 +dIUT = 0000002ecca595e55e6c85c5af78c59540fdb749003ff4ec361c38b48e7da6bc +QIUTx = 0000005a48fac476c31cad0c68e64e65e687ae4418fb5d3b4bb2abb990dd0de4 +QIUTy = 0000002d9add706626f2859ece110df2dde89faf3e8aac433e2595e23c274082 +ZIUT = 00215d511cb95e0e073ee999908a7a844afd75c9acb7a9d724f7fd322b01 + +COUNT = 3 +QCAVSx = 0000008d800d3767abf5731695754ee8829b858ff4eb604a448ad66490b49c19 +QCAVSy = 000001bc0f0339649ad4d7b7cff3fca9e965a38625e8f45bc9602a33c0798a33 +dIUT = 0000006a7c03892df184d56cdccb9d5e9a16483a6c9388ae212aa926c8fdfb5e +QIUTx = 0000014aaf880e81db69aba2b403bbda7f361e3339b483ce2699f30bf5281ead +QIUTy = 000001b71559bd7d9384e517b87f1138a696fbceb3510d8c41c2158d4aa3e5b2 +ZIUT = 01394e02c70104f2a5308b2d101b02c70ef2d13540602b8e8f82dc6d569f + +COUNT = 4 +QCAVSx = 0000014a3e121add7a5267f5cad204b3f49215084786b23f8d94d9fda02e0f19 +QCAVSy = 000000394fea175dad9b34d525434654d0c86637926cac3a3292a2e4a514b5f5 +dIUT = 0000002e2ff8791bc64c00f3b0f1d5d5cfb9ddb3b193814599f7dbddedefcfa3 +QIUTx = 0000018045cc9e65f6e275e322a62c18efe2d00cf93995feb53561273a3f1306 +QIUTy = 00000164e0073c0d4b3e12e22f837bd3fec421e3bb09e0c0dd997422830f6403 +ZIUT = 008556a4c3a8906ddbcb946099ca5dbe7bdb6cd8f37fbb50c96fcefed32d + +COUNT = 5 +QCAVSx = 00000089667888f8425c5a623134622f1ea9d9af36df9772c410d6e31f2b4db8 +QCAVSy = 00000084430fa47164d1c0eb97042a44cbef400bbb545faea4ef49ba5e3bef42 +dIUT = 00000066972e71566746f2f76c87793774054ea275e2a7e27ab7c2d05c5f2412 +QIUTx = 00000020226dd73e318e4fc8d49dd43e59e260193d1bb248cbe4c06b4d6b8389 +QIUTy = 000000ed12a4f389696ab31c93ea3ec4d8eaf18be097fc9152e2c42b73ff4528 +ZIUT = 004ea6e0e34ec7c9bbad47f0f6f8ec0608e736d91e0e56cf3e5cffe8c370 + +COUNT = 6 +QCAVSx = 00000164da099225eb3c641fc83c77204a396eab9495b12a22f68e7a4b8399d5 +QCAVSy = 000000cd98f2704c7494e6d20375e74528c8f56f867e9dd763298142ea01724b +dIUT = 0000001e53baa16bc0262b5329a711b0eb188a1bca7ef4b5c85061225d41d4a9 +QIUTx = 0000007d6d785fa323174eb9cde5b705428e4019244835bc94702f280c25ffe5 +QIUTy = 0000019aa0ef433074c484d14e611372f03ef8912f1a8246ceb1e90c817db3db +ZIUT = 0160d0b9b92a4acd089738fd489ae39734551e888fd05a020ce26498270a + +COUNT = 7 +QCAVSx = 00000033a8b08a3c33c343032ced1c0f5e826f932dee879ec1607a2af5d46298 +QCAVSy = 0000006c4f27a49b51a89f6d0960160ba5b8fec08dd2cd4bc909a490aebe4f7b +dIUT = 00000042a8032a11d1657755c49e477033b0d341da2fe993a4577b41a40cee1a +QIUTx = 000001f6629697da620d597fc1f51c83374213f37e952fc117ee65a9e766aefb +QIUTy = 0000002b36dedc787ac951d2879d72414da2e7575a6cd7c42e0fa20b32d461f7 +ZIUT = 0038381b342efaa70bb79adb76ceb775de5f45f863559ecaee1ddbbd0313 + +COUNT = 8 +QCAVSx = 000000cfe15f861aa0153485f38ac033df9c8d812afde167b8918bb94a08d963 +QCAVSy = 000001bebf067f85126d114932162164201b1374bf1840aa11d5e250639d0608 +dIUT = 00000043e5770978195f917152f057ba1fb0156d894d32e8bb54c7f62f7340a6 +QIUTx = 000001487d1fdabccd7d89da25685b042980ab170aee3c11f31180e3b7c50a4a +QIUTy = 0000017e383dd65a1ec8a409007f75035e5b161335d9c7756ed970490fbd171a +ZIUT = 0122169f1dff445ec663270375dfe914016c38ce6c2d40d0b8098abc60ac + +COUNT = 9 +QCAVSx = 000000763e286be50740b7f8bd78fa70bcac880df3d7371eb33fda2453b3ed23 +QCAVSy = 00000057be6c5f7d990b75439868339ae327af04a049b38b92332b9cb8cb27d9 +dIUT = 0000004c67c6103e62124600a0d9e923dc217a022f57c6feb219c703334ff339 +QIUTx = 0000002352fe9341e62c609fc1538e0270405e7001d747b87500e644a112c5d9 +QIUTy = 00000041f3b15b714a6f7ef647e23665ea530efcbe19b0740436cda812e83939 +ZIUT = 0054d47c9d0a9fee258122326be25daf35f0ba0b8449e16b4623a8c0fd7e + +COUNT = 10 +QCAVSx = 000000bc8a71ad4c1134def026e4723e310223fb2c5859bc7594054c894da552 +QCAVSy = 000000c3650563505535033c7a6c448d73bfa08fb8370234c7fdbac1b34daa22 +dIUT = 00000019e54da872995eb3dcdccc50418ec351400889fae75a0ba4dcff25f1f9 +QIUTx = 0000015e67eaebe52ba37f5b73a199d950812cec1012fd410581444bbf23e0c8 +QIUTy = 00000022055ef821df33042fb8316ddad76485dbd2590e2f5498a914e4f0ad39 +ZIUT = 0071aed39f5c44a7ff72db3e0f8284da39dfb2d894f278d2006f9d2686e3 + +COUNT = 11 +QCAVSx = 0000016cc1ae13fb348252493021cd6146d531f0b722842a44c7979689f1ff38 +QCAVSy = 0000018c0963ff0ea37048c9f6f47644f2a7c8c503863c27cf21ee6e0a3224ea +dIUT = 00000013a5ffc9a0f7069c1c66148699612e5cfab7e2bf7b3255f181a0227192 +QIUTx = 0000018de4dc4f6a4de5c3638ebba24dc7064983b159f55b139c7680a1cb90d1 +QIUTy = 00000135532d8148af3e227d4a8960e768c565f72c1ac0a1c9a7bd185cf994d0 +ZIUT = 01ca68ead4eddc8847a3a661cc6628e076bdd4b45047ece72245d094dd3b + +COUNT = 12 +QCAVSx = 000000e49e182ac5d932be8b05fe340e8cb72df35647decd679a8c59b5d8fbfa +QCAVSy = 00000181b95a965abd16ec2430c26dd071984e854a967ff114ee7831bd314b2a +dIUT = 0000002f5d2a7e0877a4c99073732386e8d59734a23dd7f0df7fcd54d941e760 +QIUTx = 0000014798094680cbd32fb1ee9dcaa6b8739a556305235933fb27157d319e57 +QIUTy = 000001c855f0d453c1ffb5f668b32a8b3e309e0e8101bc39b6dbe7de214015e3 +ZIUT = 017a893b2e090780ff8daaf3588f9dfc0ac4dfe1f1e263697a9d1f398ab3 + +COUNT = 13 +QCAVSx = 000001598b2fdb5bf1a3951fb9ec016ecb4d28f66c2e9d13596786593585d719 +QCAVSy = 000001ef65caf15795d14a0be89cac7c680323bc59803ba874cb2968672cb8a9 +dIUT = 000000652a11f6c3117f1326fa6877405cec7331c4f146a97f74ab0c44de01b7 +QIUTx = 0000002cd6d4c1d2cc5e34205eadb94f4cfd35bb569da722c4d9b19b8d5cc2de +QIUTy = 000000ea3004e5b0930df7f8bda314c8bc1145463eb60022cd2dcf6c0c824e50 +ZIUT = 0041fa5fdf495b885699249b7746334b76c59e1c917bfc1ae371b96941f4 + +COUNT = 14 +QCAVSx = 000001b6cff3b7fa215e378605c93f86f5cd3845f45fbde8be079dec29bc8862 +QCAVSy = 00000166222efa5dba9e858c245dbb5da668239ab5ba728618fb85a90ddc760a +dIUT = 0000002ad5f71c6384af62689b35c24c4ddfb35acf8106cb0c19502c2ca184af +QIUTx = 000000fe1b52408a712841bd62f0ee51307f26331d402bcc3a5ab0405d1c5e80 +QIUTy = 0000010a731a7d6a6a4f5b40b2eaa810c1902db27b28d297bc05f3714cacafc0 +ZIUT = 015f5adba59d1ee01696cecce4b63e78e68508303ee496ff5abcea25ad3b + +COUNT = 15 +QCAVSx = 000000cf402aebc3e4247a9ab43da9755176a810e011f9fd977de1be2fd534fb +QCAVSy = 000001bac45fa42d605ad3479c7c43e724910716737953cc8504af14f331d34f +dIUT = 0000006f01cb54781cbda6d88deb59843ae0836b1af683efc75650be84f208a7 +QIUTx = 0000004d00a8f0820da9097fe50e8e7defdac29607dd4cb1dd881d4e61f1e78b +QIUTy = 0000008a4a8e9c811b444367952752ab8c2a5198efb28fbedbf3fbd701a857a9 +ZIUT = 003d5c29b3753e89ce5064575393392b377ca657a0b73872c82165fc43ae + +COUNT = 16 +QCAVSx = 000000f38ccccf08e5bdff3bb35f7e75bdced68d3791dcf7843ca88ff092136d +QCAVSy = 0000015ed7697a4b8c99d0147828f6c861ffc9cfb0f33dce9d14b0731e1da262 +dIUT = 0000005dc1ba1839f5d1fea85ab3614c55a9c5fe600853c71a61983c7dc82de2 +QIUTx = 000000b6cb6ffa4e2eabcf7b987ebb520165a8ec9a22a6f9ffb100f38172a0fb +QIUTy = 000000d39814e1852476e56e89ce8cdd64372840c01570a86940ace24bb9cf6a +ZIUT = 007c01f906caa590898a09f46b6f5383658e7fee656aca0f111f22939960 + +COUNT = 17 +QCAVSx = 000001e328571df933acfd4c96f3c4bde71e9175cbcd62aeecd76384744a0f3f +QCAVSy = 0000019ff48aae0c252eda8d340b25c4dda01a2f21aaa35d39baf036696a1101 +dIUT = 000000241e1df5587031dddae196891c28821cc7879ad35832ae718f6e792e66 +QIUTx = 000001c172cee2b76503eb4d90b39ddace825b23c32375cb68eaecd7348490a3 +QIUTy = 000000c246ef9c6e2fadac77c73ee9dd5adee828b7918417395b5997be1a0278 +ZIUT = 019eece7d3fafc9274d361c6fafd9efd9ee485cbacb3baaf6834feb4df6a + +COUNT = 18 +QCAVSx = 000000f4aa7f9340a9da46c4f06728753a4adc5af53a4dcb467f70b4873da785 +QCAVSy = 0000007f321e2bc4e29a68ac23c77cedd3bbcde0bf7b92a27ffa76496988981d +dIUT = 000000044ac55a913a8c7f7ed7fc5679f52f47cbb9730325be21b7993779d187 +QIUTx = 0000009794861017b3debeff302e425327fe269d78753b73bc1bfb3a77f716dc +QIUTy = 00000002581a49c1269f5ec868dc6d7f5c2d8e749632d47ab6d9e68dbad985f0 +ZIUT = 01e4b7e89fb1b51179b8792f5cd581c3917e11246d3846f6344ee82eed66 + +COUNT = 19 +QCAVSx = 00000068d9e55e7a105b7bb44b21d669bb0ef657a91437ad84bf6d5853270c98 +QCAVSy = 000000143c8bedb54db07df8f67083c59a0aa7cd8a0efa42f42fd62e442e0b62 +dIUT = 0000002bc136778531089da5c2fab3caeec256c54b0b35fc2c65f7b8ee6161c3 +QIUTx = 000001fb258a31d166bef9cd664cd7b66cd8c186e7025c77f0bae731587e9ef6 +QIUTy = 00000060dfd4e475e92805d1935d0382dc1767067915cc00ed3b24f65382d21a +ZIUT = 0145710c3ab0780ec233424d4e28b38d29f886965bbcac49fa300e1ed886 + +COUNT = 20 +QCAVSx = 00000099eb91cda98620103c3205d6489e68ad7e57d0a51dc502d6e30588f418 +QCAVSy = 0000003fbf829929edd28e906f58f87abed6d6d177f436f0dd940dda25eaf188 +dIUT = 0000000d56595471435d95fec37df622f18ee7dabb24379c82bbf714c5abc5e3 +QIUTx = 000001a52940a452aaf420b37b5f32c2c337306894a882feea7addadc01927ee +QIUTy = 000000771b9f62a2a6fa892503225275490388b8bfc2df77df3e806bedba7d88 +ZIUT = 006941a2a531083563dd886b06c0860770a4724bb04a4ebb2afb1ba2636b + +COUNT = 21 +QCAVSx = 000000dccaa22b43391dc052597ae3bd07c6e5f021f39e987756f6548171ee94 +QCAVSy = 00000128efd49af3a6b32dc16797a978f0ad4ab0db66ababd6ad5672f4f812c9 +dIUT = 00000019c8ab2b32f2ee93bf2ff6bc44378b60872bdaeb6ba56b514c8f388ba7 +QIUTx = 00000083530fa3df315a8740ac52f4d394b80c4a5f210baba0b6dc2205e12493 +QIUTy = 00000037b9d02ed43e9d41d0dbb8403b9021b4d2c1bd360ee53c31c27b492005 +ZIUT = 001d754ee5351d4582974734072abac23376e24348370934e7b864db0f52 + +COUNT = 22 +QCAVSx = 00000170917b33b37b8eaff2461e5f9eb8f0797b13aabd915a60706cd4f32cb6 +QCAVSy = 0000007651e0742c0d83d4b68552e9b7abec3644ba9755cffe6d4e56943a6b9b +dIUT = 000000503160104d88a0c0f63956e7c3bba702963f9f1b53fc119a592eeea4f5 +QIUTx = 000001463c78e498abf34033ec3e1d973dc12509e2d234fb91403715e42f61f7 +QIUTy = 000000ade7abb98a0308886696353aad33c05bab5cf3c0d4e969cbf4c4ceec93 +ZIUT = 011346b83791e4bea7f6ba6b1265e5050895d84027c106f77353418f75d7 + +COUNT = 23 +QCAVSx = 000000d8ed318382b85c2525a02c22c67f5bf366335d94767eb5cb45739664c5 +QCAVSy = 0000017d8fde7bbc568fdc802a3e3455f3cf35602df70684c8acdda165a02656 +dIUT = 0000004547eaf9be1ce5af1386e311046ec83260b84a2ca91055f60668b946e0 +QIUTx = 000001504938c167680afb8b6d5858cfaa191c40196fc4e500c662c5346ecc90 +QIUTy = 00000137d1ba942228dae68c450b1a033a2c810a995971f01c24089e4a6fdcc5 +ZIUT = 00b4938ed1ed012a9a53892ed9949397cdc4e4a612d54dcf80cdb039f47b + +COUNT = 24 +QCAVSx = 0000017f87f13f6dfee6081bb5cca532fe268c271d2756b31bdf643297cf695b +QCAVSy = 000000f3a746955e12dd0b71919edbf23b2322cab328dd09bdf87bcafdcd2884 +dIUT = 00000042fbe554862f3595184a45510ca53df97c45175584b5d2de042723358e +QIUTx = 00000131b8d61b9cfb0536c588214e45888ebe48391eeecb4d7fb5be8eff4acf +QIUTy = 00000165da49557a0aa9d45dd378d5f899272cc697682276ae91d2c0b675c469 +ZIUT = 01b3d2578bde3066a253db5322c85cf9487ce77b67ece955e281b0d7d0e7 + + +[K-283] + +COUNT = 0 +QCAVSx = 03f075c24c35a9dc9952be6fd32b761dce63f4720a22408e3a14bbd097e012b5694c22a0 +QCAVSy = 0675825b40202e95be7dab5a826147e04b8c51a09b0034577c1f31f8c16a70c8e1c85b89 +dIUT = 015fde49b802542a52c70b23a0b1784e5f8780b56853f9a5f8c3a5266e8727dce97d4a17 +QIUTx = 0611edc045dbe43ecc4ef6b324cd51f70fe3d7ddf877ec68b798909c3c4561756aa30e5f +QIUTy = 00833b25511704af09b62d9f7cbac59814e75bbb9c735f55538491dbfa60c1e0115efe42 +ZIUT = 0745552817b5d729310b7dbebae687648714a9ae695dad20ca1ab6111c3d054670f21132 + +COUNT = 1 +QCAVSx = 0799b430e92320ffeabf2d6cc87399e30c0aa84420ff8eba2309b99487b742d722e8b7a5 +QCAVSy = 0217362801fd6d2d286e5cdf375cd0ae569b700005312e37e8e35b1592efb9b5eaf47b3a +dIUT = 013b911f62f3aa884354634547ee622807d5d106020330ae2b9798c0c4cd0eadb10ba948 +QIUTx = 078d2ecd4d902332b6b3c7bd4ba7d200fc34c45eda30998b6025ed47b1f4f8e68f328624 +QIUTy = 04d5e53647dddf2fccc8816dac8bc70c29807622cc95539a72aa3a9b230ca1d25ee7b516 +ZIUT = 02eb0c1ceb6179232e91cff91fc8a30553c6ed7e0a71deb1bda0a10735a84593dd903636 + +COUNT = 2 +QCAVSx = 00ce47a743d48b86fefd6b5c02f2a97b2762a2fe57e0bdf85c1d6a29de8862c4c99ed53a +QCAVSy = 0322e596069f916568ca248ced57efe90534af4a9f90a4f40f797e452967031726bf41d7 +dIUT = 0177632b69e7edda3cf007307504343cc2162326f62017cbddf360a876dc93b81f04c58e +QIUTx = 03815ab6480e4ad24a6628275ef2ee0ce7d58699239dbce23338842bc58c42cca94d2412 +QIUTy = 02de833cc664cac90d30fbeac603efbbce9276d4f16ab1c46e7e11c81a9aa9e25c82969a +ZIUT = 04a9dd2cf5076814e5329c518c4f27b429dbe01d46682d476e7e78880de368b064236ba9 + +COUNT = 3 +QCAVSx = 0728975839b42c62036a7afffaddefc3024b7258407bed565caea939be33d16ac94445c7 +QCAVSy = 07712630790b05ae04d8d7d9f2365dae9ad24c4c61b3eb20c0a7987e6a4c4b0f598c371f +dIUT = 003bfe9a1c985386e5ba2b31553a55151e78ddc38f07432b5c42a1cd2da278fd0b68e047 +QIUTx = 01d9c3337da95ec6e5a4bff1cc92783989b66c9230107870d4a578699338e38eb2d92eff +QIUTy = 00cdaad7d0eb0f445aa763a5dfb8f38f55355777ce24f753b5ad3d3cbab125f491698d56 +ZIUT = 044e2cd2bc164d21cf4b9833c0aa62ed059282e62b82f4500aeb422d17e1f6e7e8bbd500 + +COUNT = 4 +QCAVSx = 055672d73998451089e2b7c7104b42247dddd132d40ad087b588d6a385da64f5a2f46838 +QCAVSy = 02b4cb1581f9e2b378eb7a4f64f5a7d4320b2ca3d3474726f670c3883bb8da47f3d745be +dIUT = 00d95af52a708e692d02677b21032f7aead6003f124e72013f37c06e0bbc20e3532b3cea +QIUTx = 06e487f91e73bdd344fb8bc8f4c1f476e727fb2671e9d6c8fbd775f1aaa24caf2e9a36f5 +QIUTy = 0663e1cff8099757bb9ff1b87890283aa49cff0f7b12fe184ed2a428375d2796cd81de91 +ZIUT = 04d4f04d2fcf1bcd8150eaded90e467d3d38f753b6fb54eed8f9d29cd3dcc7be2c83de11 + +COUNT = 5 +QCAVSx = 02cc28a4cb76d147d98dfa677dca14e1771347b9681c65cdb540f22c907613fdccb0c8da +QCAVSy = 07d4065f990c8fc37d100ece38fbf574ce444dc37355e0702b80d1eb1bdd670997e8f271 +dIUT = 00c733d9094032cc7aed6c54a8ced753eaf2a48882285a3b4c7e6021f26bece0722840ad +QIUTx = 026896b039d7068d98a326710ebb7a978bd47661154645ae30cd83d60535067e05151ccb +QIUTy = 00d83a263bdbd8c8abf0310bfbfc83917a86b0d8c4be0b155ab7b9e2c705605628bbcdd9 +ZIUT = 01c343540541604f68ddbd63c483760d824ded5c18be7e56e6d36a9ac6d25772afb0a90a + +COUNT = 6 +QCAVSx = 063880eb538c7275ecba4db53d9b68c287fb3778bef514974d1e7e31a9ae365a2181415f +QCAVSy = 04af9f2cf92542e1ff8ff28f8e7c8e809584e243a4902949a765a284986c750b1b06c89a +dIUT = 00db39d7536072dc3448cd7d2160e50c811f648358eb0db1d5428e81aa7a686b7865adfd +QIUTx = 03a721906ad13dc15c311fd4e552f3bc87b7d92ceeedbb0c316a952785ba4689fc0ba270 +QIUTy = 029514f3873bbc3b9e217061f7a6261fdc6268685f9656f1d5eea472cc2db5a8c162e6e9 +ZIUT = 05e38079815477b8a79096ce339c4a255f8b213be74715ea61ef7dd0c0b5f161d9de7521 + +COUNT = 7 +QCAVSx = 05bfd2895a2e66366db7a83788c72bce48f79b5c9524a08ae273c78ceb39ae97559d5ac3 +QCAVSy = 04a2b0a55f80155a1a330fde6cb6d97eddb0a9dcb66c49b392904abe8b381f91090dbb21 +dIUT = 006649bfd641dabf1b9d499d4fb04beb099475d0aa15d5ef6848b734d2d413008b604308 +QIUTx = 008f6576d62affc71836d19adbbc3d504210f12efb61c42057824515290c502f2e09b6d8 +QIUTy = 0021643be87ae6e549b0d5fbb558c1303d14b1ccd77703ec74f9602f35ca8d7a5139bce7 +ZIUT = 0531ccf51d1096982f7c2ec513a92bf51c7ac5069cb15c5e2a053ceae7e5550908a19101 + +COUNT = 8 +QCAVSx = 063547f7570bd6959733c03d2e6c4c88971f314adcf28bc851dc52ed4e8c1a4ea06f8702 +QCAVSy = 0122d3773b0934e900fba7ebfe1ad5ed5bec0fb1a9ddcf4eeb61cbed040074313c0b3170 +dIUT = 0081860a653d6d94446d7766164ff92c6c5c1545c735304b3ad4d5178c8b14d0181e9471 +QIUTx = 06b68815bb83691d16749c4be16125e2a6d6dae94252739ba7bf0db0d50198ea2fe43ddf +QIUTy = 039e0d93018a46125620f6ffaca5a0668343c57025a60c31a9d6e51191cab338993b46b5 +ZIUT = 06ffe79d2b7664ee2d8303ffe0ceca8c49a581fcdb49c4af6a060ff204eea74f4cf39cef + +COUNT = 9 +QCAVSx = 009047f7d77397db70e39fe9e4ba9d97a995a7ee066ecf538179e937ac86cacdac510950 +QCAVSy = 007cd875167f06a2fb9a819e2cbdacefc16cae0eef2cbb0b2d49beae109db753c9506170 +dIUT = 002243e8919bd7a97cef0e9cde63c76d4e107150294fcf8dd7676451ca3bfa5c5edb964c +QIUTx = 03e439e3ebdfa7a23a9deb09de141905c653c4f202edf2cf5f09faef88ba3113701e49f0 +QIUTy = 071d071b86ed0f468fc6019de23fe4ba2cb3b50032be35e92d2e5af40de706ab524e82ab +ZIUT = 0311c430db78b6203e27b52988e1e9dae890c655dac4acefa7ee9612bec32e3e5f52be55 + +COUNT = 10 +QCAVSx = 04bdec19300c8afdeed86499d2703922df57b2ffec37e45c03a5e2909de3c333bd06a5e1 +QCAVSy = 01aa4f40844f2413f1fcbded003b1d15c9f1df7548de2a2bbf71b516657ad8d8c77cf72d +dIUT = 00512a42841e1227fc9fed51c2268731684136f225cfbf45648987e2453a7186f6a7edef +QIUTx = 022f76e5ab714fdf78571e84c2b6ea3a17f12999be483bc67e1b843d209bdfec0347a43e +QIUTy = 02eec1fc0e85f330c53dad7bff4862d8afff8aa14f94756e95b8f01fd7eeb8fc54527787 +ZIUT = 0701d92ed8687138014b4379f1c34677e1744f6ae8c89958a5962f14408d587b95472db3 + +COUNT = 11 +QCAVSx = 0611f53af4b488990e7a52e5c73856a1e74279bb0f36d3ab1989b2ccd99391b6c6b3a13d +QCAVSy = 054ea95a234f65897195bc97b03fa6d246ea5ab5f41da22c08ed817aa7c04adf372982b3 +dIUT = 002a8af497d1a3dac0732a393dedf75394a3f519ce07faed3f77dc0e669f3a1b1c6ddadb +QIUTx = 0571f0c87f88888ec0738961834021765cc4f5c8db2b1f9ea9b8fe9847f8964349fdc44f +QIUTy = 04ef7c8044a609694746ccaafe87fc7f9f1a78d00f8354f5da7ee2f5da7235ac1ad4b57c +ZIUT = 04f2301ed85a5c91c31a7fd125854904340a55e34976a20743bd33d95e476450f301ee62 + +COUNT = 12 +QCAVSx = 012706ec0a0e76425d8ab4e0d55930a4416e4dd0a1af6d97987252988da0ac9627577cbe +QCAVSy = 04215e8715129cc76301791701dc5fe1abcd672b6aa19ba4c7e532ee7a913eea60dbc9d0 +dIUT = 01de9fba4ab24d06e74ae5ad36ae195c2360c728eb38c50ef533329e70c5ae19f489b6d5 +QIUTx = 048d61e0b9b8064bcca8ce40d4f9e68b23684137726a44ea75c8f2f8850f0333fbe985e6 +QIUTy = 05fcaba38d51e2112b6b9f34e6779c10c0c559c3ecd156022966cf92a8c7f65020a79ebd +ZIUT = 0643900f337ed362815f181e0628ed5184dad3e66a1f030e947f116696312d835f7f6e7b + +COUNT = 13 +QCAVSx = 05bb20bea4fd85d0162689c550054001409b6c712d356a52f793d78aa2d8261a43c5b6de +QCAVSy = 031be5cafc8aaef19b861503413a7b73b60b37b0180493d82e9426f47b6587393d08de08 +dIUT = 015d3a222d5709cb339d93cd29650664f39bf3201c5d1e86d3aef8f795b9fddf47d8c4a8 +QIUTx = 01e2b88de3772b09c63d036e0dbba435246987497b6283dab8ccf1002486de0730277b43 +QIUTy = 03ce182b7f0cea21a06a1d4de8722cbfc59b9d9d79bc760b9d17d85671561aeaadd54941 +ZIUT = 063b1a3db331f91abd0af837db9d5f040620d1ddd7fccf8b58e0df43698351ea1942548e + +COUNT = 14 +QCAVSx = 010a3ca2435b135ffea08792b7f19b4ee181207c29be1ce1fdeacdb69a669f9cdde9181a +QCAVSy = 024908274b1e98c6d197ed2783c3c953c1b3b34fa43a8b2f5742584e37fea407269b43bf +dIUT = 0098c570666792efda65fc9e7909931158dfd4477be93332e493d69866b6602c4951de6f +QIUTx = 04dc6774fe46ab0ed2768d379e7564a37c6bb1dd1bfc555727ad94c20f4732cabf2a2c82 +QIUTy = 06c6cf0f421f91fca22b4871216a9f1fe3878f07914e96ae94ac770b6762f9dce08ffa2d +ZIUT = 0516da1d64bc4b25ce4763e6438257d62fb1ffdeae16d68701d63b603ad53e8587927669 + +COUNT = 15 +QCAVSx = 053a0dd6135e43a114e5000aec40ba2709b3a613730f1cc2006b446935e237bfccc394d8 +QCAVSy = 03b66ce6cf01507d462eeefff6211bd4c56070116c6907468f7c76fe01140bf0d5fb7b79 +dIUT = 00f4b6db4a87cdd30029cc3be89e40b9bcb014d010a91a252c56cb28671f354a804cb4d8 +QIUTx = 066ddf04831fd1c72bc48b709061c1aeaaad19c9da3d8c1506fa775d4f5a5412eee0286d +QIUTy = 03aa1d13146ff192792b74a5c64ad3150fae344fa830e0f44733d867f4e0ae053526c62b +ZIUT = 049c68c333b96705eee4a3def0d568b0d4faf24df2fc2f1bf40da0af0946240c38e97f74 + +COUNT = 16 +QCAVSx = 06d4a6f3e87b6d8c49cbe517a975d2ab8c6339135596d6b30cc65cc80c1284508f49789b +QCAVSy = 02963b356f2434ec249bcb6589ede4de36cecd3450e6f5e477bfcdc29ada4aef0f45ac53 +dIUT = 01ab82c5a62ae47ecbccf666cc3323b35128c52d17be11baf3bdb56006e5d568baad8bbc +QIUTx = 00a04ad7a583666a40437f968b02cac7946745b4ca949021c5443deb70183f88e1778fe0 +QIUTy = 02bb591c32f0db3430342f0e37c45449c293c54f6b7df6f797c0992c2829858b680f2bdc +ZIUT = 04dd44c1a30edac2e39a5bc9902625880a18516385c90a9cc6b94c4f111e0260863ccab2 + +COUNT = 17 +QCAVSx = 076452e19d7a10b885123d503f5d0433e163df134fffb8558f8ac26cfb30629f8cfb093e +QCAVSy = 06b3a24b2a4b077770d396bbf154af41eee3503573a6de9afe0f6d18b02fc9761ca1643d +dIUT = 001254af1791cc75694ce590bb518a770a750446171a30edd6c0382a17e6880a1aea5b81 +QIUTx = 02b766c993b398d2426a7a0a49e9d001079d0fc32197181c56eac1805e4f87c9df055dea +QIUTy = 036e7bbd3be9139d4d43a8655ef7d51a062d9947d1a48010ef1ea10eedeb27f0d1ffe765 +ZIUT = 0049c165339e9aeb2b516684b442921f1fef3091cf781e03fb3f56e93af1f3d6e500c81f + +COUNT = 18 +QCAVSx = 018e0bb7516d2c42e9dd96caaff5f20bfddf3e8623fc947d4d70491536790b8741cdd372 +QCAVSy = 032c0fffbda2fa863cb9d15c36545020d5bb24d930daf2fea4555f7c24d6aefbb2c01d92 +dIUT = 012017b9a0599fbf13cee10850a8f8bd06ccc00bd29ac6779f1bd93346b22c98327e0fa7 +QIUTx = 0421c62dcab54ba800eafac232fc730ce70f6d5cc53ff53d371269cf046daeaf451b33e7 +QIUTy = 03d635f55233da3c490a959c6e63a94fcdbe471fbfca19d2c5a3fd12b04db380c3c895cc +ZIUT = 0645d7f4c5479baff5bc0cba654a3dcfda56c0e9d19f50f9d8d8c6357c09a140effbf223 + +COUNT = 19 +QCAVSx = 024abb155e49124282ea32e5b544621ae9b513aa0476da3bddb75260d5f5fa2e7b898987 +QCAVSy = 01bdfb0a079a55bcfce1ca8bce3019cbcae6164003384166ebbb0bb733539565adc446f3 +dIUT = 004f197c85432cb42a1777249ae411ef4bb2657ba4bad35ae538635a151c8d6a564f9cca +QIUTx = 040c88924d5a24a853fae408aea5b3bc827d7315fbb58e6ea1f6a65677dd4c4d304bd75f +QIUTy = 054b82869ada4433f7208f8570f24f06cb64046e8ac086ac57d3707fc882c6352733dff6 +ZIUT = 028017c2a0240fd746ee72a0bcae1e53e05b7af254298094c381e735523854ea5fdd4f5c + +COUNT = 20 +QCAVSx = 07527512bc934938cc5240ce70ef65222db85c13c961c1f31f914205067d64b1a4c85314 +QCAVSy = 02aabdb81ffed2c001acbb4d0b7be539304e32e431e02df8b192ad74ed1b4b0606bfc90b +dIUT = 014e893483d1d8b7621cf48bd24bc8a1b95bb40a08c16c32874a652b59a2252139428dac +QIUTx = 01574e17ce26311c40abf3243f4889a2eae74a8341aa7838551056f4395b8f02bdc327be +QIUTy = 0086e59f985348f3f8d7953800b1d75e141521249c43fe0616913db5d1d4bd5400abce55 +ZIUT = 02603c00998deba52db12814b1f77b2120cbc1dca59009c0d6ea40dcbcabca32c50380d8 + +COUNT = 21 +QCAVSx = 07ec29da2f304ceba8d5e249eb6054a4e4f59534ee59d25c1dc0e12cc38f768b83daffee +QCAVSy = 0112c7d4a37fec842271a0a822d37637e6ed55190713001aefe11b06f7e1d34e00fcdecb +dIUT = 01eb6f6c91a880a5462185c6a700e8637b8f447d09d1b251460fe57f1bf462efddddaec0 +QIUTx = 031b3026104388374cfb7c7b4ef64211a47e20b9561a3bbca53516040b7bda2837309454 +QIUTy = 024f8aeb23a35e1c22225967c7911868c84efdd873dbbccbc763ead67e72a2324aa4c6f2 +ZIUT = 026a719bff31da4b4ebaed7bd043064f9c3930b5774c4a99809332c808aacba4b9e3733a + +COUNT = 22 +QCAVSx = 061ef59389edf8f8273a662a4195411e9448bb1b77fb0800be525eb5a6a03b19665719a9 +QCAVSy = 029686f8477fb5c769efb082cb3f1a0c79db55cb264e2112c0e779e7b558f70045816a10 +dIUT = 0147be4e38667e32a6a61ab980ced92e42695925b113c694a7960aedea2e1d571a42d3de +QIUTx = 06f599f0c149457a32f1a2ffabd4dff916259382912b6402b50cdf5c235fdd1b790e5eaf +QIUTy = 04ccf1d8a4bfeb77ff3290e65ac601ee5b97fc1b1869a2eb9f0b76277e8066c086776c40 +ZIUT = 048c48c993040619536f45482c494a39b32e75fe69e478ba06e376228b79eb83d3ff9168 + +COUNT = 23 +QCAVSx = 079d5760ee6ef978518bbce536b031c655a8acf5604497ba43de0beb6877a547c3edd458 +QCAVSy = 0421b3051dd36396d20ffcd7cf34fca022516dd4bffac73fc995ae9ea814ce0e4027f7c6 +dIUT = 01e1900be61adb7e55559d99a0b7d9354456f5151e2fd7b83c005b10b16004ebe876c068 +QIUTx = 042ecc99ff48b53f6619b484af8fa59b234a981c9c3e9107bbd1cdaacce81885d06e02a9 +QIUTy = 0183da0d7fee7f3e70e117f0e8a4a742cad10aefcdc4aab9bb31458237686afb4facf3a9 +ZIUT = 05d85b16bb2a0d32c73d1402838bdfa512d744fa88c74d3d90cf714c2480e03363d5c6ec + +COUNT = 24 +QCAVSx = 024784d3d3d5e8021ffed8a2709a9f54d5395d98fa442a655a05dd94262b603596f8bff1 +QCAVSy = 03e8e39e08cce55e1bed2dfe0d2f8c141b06401dba037ecb384744930c8178d146416324 +dIUT = 0077e41ab2d09c34c588abc76d4312602e71f60019027b986e0ded372535c2b6a933a533 +QIUTx = 02923323f170074222d3a6a287adafd3d1fe12715d57b91b1ff476a2b4fcc385de261ecc +QIUTy = 04cc498d67c6267cc7c4c2d40a56cdc2a6e715edd8b2a9614eeb33d0b6fd162cbb85a714 +ZIUT = 066abb838b5f12b6fc15ceb745600686bc2d5773e53469c2ee920cfba5459a1cab20d153 + + +[K-409] + +COUNT = 0 +QCAVSx = 0177f736f6116320cafbb5b4dec202d40508182fe011189b81e1f3998f5408607a46bb150ac47bcaaafde47b8a7b72f478bc22d2 +QCAVSy = 01df4ef4b37e0124e55b67f3586de24a88a6c5d98854007d4b0c4b4ccd68d51fafa7638bbe555d60b74def217c6a63c5b4068fb7 +dIUT = 00084b711e3c60822e70fa6828b5abfb0e448888b35b0c8bb09f806616dc1ecf22dd86237d937c1bfde62b75ae655953fc6b2f7e +QIUTx = 0068a3f8b12e02d10e2f52095526bc4048b8f6ac3a84531772870789938f1aeff813e05e509ea9587d2b7e4aa14344bac3ec46f0 +QIUTy = 00d1ceb40c7d5f3297e2955f0f3eb1422b3e6bbbfbf7eb518b9c17ae8d40feb84aaf36f5e5bd96075b2b4dbe538ac011962ac705 +ZIUT = 0176bc5c4036ce5125493a58dd265f04d190f028366f7799f70aedf29ac67b5b37c37238593377a47944f5b639f43856dbd560ec + +COUNT = 1 +QCAVSx = 010c4c68a9f1a62a326556b6d977a79cd9c4476c05b1add4a2cfd3068249a3c3923822428d352c5d74e5d64acceedbdaa6efbe4c +QCAVSy = 00866ae940dd31b5e6e3f20b3b4d87a6a02c78173c80aa510a6edff852c629e6064df5d7c600fd98e58e8e8c662bb4b96c8ba905 +dIUT = 0065188bb7796e451f44727a1a0674440dd33d258ad2fdc7b98faf64b11e7e8ce5e8c21e799f1ff2fd29d4c94aa158962068a59f +QIUTx = 0032c5768452f3c1f3bc54879379ad420891267742b37fb096ee7b8c21ceed0041e9470cec3bedcb799e90bdbb31192083ff0344 +QIUTy = 00f9c6122927fb824246d1dc1ce0fde71a6849a82d41065da1d85256a9b1979bf7f286366fc8b324893ebe34e59c046007399414 +ZIUT = 00575d9e7f70a4a1c5c807b6b5d6b7330bdd764db2aa60f3bfe497e6bfe90f038fb4f6acf7ac06efc3d157c3dc907b2ae093c6a2 + +COUNT = 2 +QCAVSx = 01e4d580d5e9ad81671c6cd662d5569bafe4d75aa4f449aed56bd800619520c9f32c4e230c4d91b1c411f9086d5291ba137014a2 +QCAVSy = 000c8ffb42392ff397bbd467972f3ed251d5a079965da0b1d2a3cc16c31d255dce9886937b2dc941eab0d8be8bbcd15aa6ed96d6 +dIUT = 006cb17c3fc21ab48e5c3717c791118d4761e2c51986bf147942554dc5a18bf9bb6c67bdbba908a1e8ba8e7790f59a397134f683 +QIUTx = 002b890418afc5797c9746a44ca059367ae0663bcf058156860c613ee05e11da3f2f799c70a68fe72fd5dac2469daa18107029de +QIUTy = 01356904b197bf9e0657f4349d252bbb375c66206fc0d8312599bdbefee8608ec948dce486807baa535ed06adac9c797634711ab +ZIUT = 00ce87aa5e7700384df59d3f1075d282c1aa511391c42ef609b8de1264eca8f7737df91565c73ee884ea882d47c56d979141f0f2 + +COUNT = 3 +QCAVSx = 00b7d19354cadcc94708267aed8b23e484e32a03814b026a800f5ba01e9204c43052e4d47c6fcd92329654e0e9015b012f79344a +QCAVSy = 017995c15796c5ae93e0a207a2707004fbb1a49a0d47fd404f12d57849d8397cd4d2c6d2b4b90f864403d4acd16a32b7ff4877b4 +dIUT = 0011d43bc08da9ce5defc94b4ef90d9324de080347ff4df86645d325603a2dffd28ecaf0775ec53caf5a554eaf8b68487df88654 +QIUTx = 01257b6abd470d294b59ddaedacd545dcf43808af890f576288803342fc61eb396f560af74342e10bb94d224c24d8e5900e5b972 +QIUTy = 01dccad97ecef4387a1cf512b16dd5bc7ab615fbc5087ac19d5fc2762f615b4904ea39343bbb185db64a19f7f70ecf0d557b15e8 +ZIUT = 00691dd6b5177702d6a0b1f8b07f3b018478680de7ee079272ff75659335c96afcea7650caa01f996aa37946b78e14a83e579fb4 + +COUNT = 4 +QCAVSx = 00f2a11ccd3a53c95ea98f3144fb77d4a684f9a1f423eb81e3a8bfbe22b680f21870f58caeb6946c6b3b873699cffd314063f408 +QCAVSy = 00fdf26eede6cba7248240720906ce076cc4322d18bc7683d2240ba68476ce79022780b2fa54e0f7c76528b77fa631fe5abb5b95 +dIUT = 000d6b259656d526777dedb5246a192f0c05c7270a3b4e64a9d6c877cd06d2962a1ac84ec2d89765f967f6044f2dfa56903107f3 +QIUTx = 0193afa13bd1e081cee5df1286fe44a293b7d1b10c290a5f2ae7be2d02736009a26d83aaaa9017a8c8bf60efa15fcead07767d48 +QIUTy = 01d02fd66a7806c4c8445fa615254ff32bb9c1d85a3904f939c1061e250d3eb6413130a2a5570994795310e96dc3aff3b8218ad3 +ZIUT = 0136f5c04cf9a56db24ad99bd286feb800aea38d44f819be1c2a9dba15c635c4e122893570233a4c5754a41499eafa39a35aa57e + +COUNT = 5 +QCAVSx = 0117449fbea6b2d5f4e8e4d39a7228424cf06f456bf3ae39bc1fb2a99e4183b716e194fc507465664d009d5bcee3a426ba932c10 +QCAVSy = 01146d32b70f09e65fcf69eb9ae66162d10bd04369de8e8187fa9c3d1b5dda26f10b469cd4925ca37e0994415757e6895e588145 +dIUT = 004bf7351b195875d01f6306ca127db8a1a5f597719c0d10e1d68f5d4855bf07605790691fcd0d8b5db137d3fc2679de75a06781 +QIUTx = 01d386645aaa48e2fd0950e6a9ace9dff62c8f5e94cdba45bd73c6be6bf7b763a2c9a807846312da3ab821c049ac0861f82337f0 +QIUTy = 002a6436ef8a1261aecc38c821da774a391fdcc7750c9437d9dfe64c823350813999f0fd4f07f1d6d98074098612bc52044249d4 +ZIUT = 004f684f9d559d16485f0023bf012006265ed81f06fbc1441334a559e5500a3f77603565013694023e0d8f44fd12dcf69eb8d654 + +COUNT = 6 +QCAVSx = 0119980f11149dee5e2c2d00561d3c26a42a5a44e874765ddda4d818ea704edbba23abed5e08be92d655d79e55c5bc54787b4dd4 +QCAVSy = 01366b3dda3e9879c4481ddc367e51c1c0541945964636d5021687c285c47d40e79ff7f0bb56a93ac560be8dcb970f58b23b10a7 +dIUT = 0069da659010345c6900fdecb31df9babedbe4253398290b34012fb134bc59147572e62a60f5cacced87b0f8d1ff7c049dfe9692 +QIUTx = 0038687019f7c219ddd9567b20f5ea1e8a50451dd40bf5b65f7b2e133de6f36e4a3f8fa2f977efe920f845d176c8a57023cc55c2 +QIUTy = 0149397fbc42bacf85c59e04535df1d52715761eea997d4ff87204866cdc3d4a54c2425ad214a7a0dd592f4a991ab768c8f404be +ZIUT = 00137894f637460a63576824536944cddb42dfe63169c84040a0345ad7516ec4f1ad00bb4de20ea6ea43824b9b0f74dfa6881cfc + +COUNT = 7 +QCAVSx = 01fa39b5d3375d43247ac9500061ebff7a0c15b8c5dfe9c751784386c981860de6e1b9584da0f42119417f32338290910a9a259e +QCAVSy = 002bdecd502ba64a6f21d08fa4250389d4270324456e9441657495c72ad760fb348325f89b7a5404a2c21c2aa07711bcf5f30412 +dIUT = 0006dfdab3ca1b2a2821cefdb5872bb95f023161ae4e2d549d0fb1f382563413584491657db101c323514832c363f636a9e69e83 +QIUTx = 003e9a9b5f282066e233870dcb00c4aed2d73a331f79d49c8d5c2d93908b0ef5e72b748814d1b8840642d75b7a9a55301b1e7c82 +QIUTy = 01085f57691e04afac6e884e2fdbd8df802f4d435bce611231ab3274761ead5e2e6a344a53f33c0fa156e3132062f72bcda3fc0c +ZIUT = 00f03b0b43a351311689eb1d3fc457013f294a7d02ad850c72e4ff9b64ce68a47beb49bc5bcbdc828534f8c8a5e13de5fe522eb0 + +COUNT = 8 +QCAVSx = 01b255d5bb75d25970301de9e0e3959a12205d511f8e64f042a01c950db471b1d6d5847f75669eeb0bf187f1559db3b22aeec096 +QCAVSy = 017e590cfa855349136198c2ddd8a5210882473c9dd591c02e202ca0404bbc9f6391d73ae011dac9965155d2650139fe2e54ec67 +dIUT = 0029b2fcb308596a975c5b4cd1e75267c5424e00774114ec2051a571b299766189fad24e92f96e3d527736ea480367bdbdd0530e +QIUTx = 014c757399be201e08afd8b4a671e7d3b6d7f8844498ab592e1bf69315347ce82dbd785d45922660d4d0d27fa2b0ac62e707fcec +QIUTy = 0098f0773d3efe9c290a992eca05875d3463f0736b2dfef4affd9ff00f96ade53399917dea074c798fc535738f0c5689a2447f86 +ZIUT = 018f55b81f15f862aed042f37433050ac61718c9939d432b2a20e12d647f99753b8dd5127cf8963247fe7e1d5ade1442229bc646 + +COUNT = 9 +QCAVSx = 00ecf7064f528fadae380cb382984811047a0d7dd9a8de8e76f8178aa60069e77a948acfa74d2c77a76851659a98197054da8d44 +QCAVSy = 00b98e13497f776072711c42c18dbfc8eb8c8523ff633af988a1f242ed3c3c565d18cf224f8751f2942e360ba16e0f5830952919 +dIUT = 001b98015c0202ea16417971a37304250839bd6a6e5d83497f7f93f0f7472a21fce4be5be776e90959dbc41a0e85ed225837e8d5 +QIUTx = 01fec09f94571614e7cd8e958ebcd7a2fcd8c248d408cdba359630545c31383922774d3b24e20591d8b41e954e16654fe85cbaca +QIUTy = 0031e0eb1dd1ce467a8b78d10d25b9de92cfdc2773831e6e28a152d02ae2a5a510994cc010462254441ea41121c0677fb4178bda +ZIUT = 002b560d1949297dc7e1bbe8ce49a595762924afcf0271e9c493c18ad5cbfcea5f3900c7b793ae5dd44f48884b0bc3b52c66e05a + +COUNT = 10 +QCAVSx = 004e05c34dac44e6e1b08cdfae6357c20db7a544dc253dff1c23d4dba871b96781b6a61638d73865dafe0a9443c3ec328857d23e +QCAVSy = 01226c427778bb224624cd215493d7a4f32a4f141979236409505d8cf58d81dfd3c793e59543a780314f3cd8ee17664dc2e4639e +dIUT = 00473bcecb137711e5e89763a40f77dbe2ea8c2509d209064e39cf905afaa901085f8e795c9b8017c9a5d0a1b96812c124a3ffbf +QIUTx = 01c8e9adc4816e6606ffff5e1a7d48a7854c35aaf055d31833f0cabde8bbc4d2458e3cd3c82a4af80745f595b3ba12f8b5c0ce90 +QIUTy = 00fc43f193b5589aee62985735e3628374dd45a86a61baaf78c21fa6e787856ea6b8b88316540571825865ce6b8578add5faa69f +ZIUT = 000b43cb539bb4bb42f195ffdbcdeb482b69301c0155a840cd381f55c465a8e57ec51d6555871537b56bf84a1544cae2b2b8eb38 + +COUNT = 11 +QCAVSx = 016f6960fd2357d2f70b5f778be5e0aa71556b9d2f4cceb14f7812da858ab872818b4610d41a8f66200b4343422227d9fddf712e +QCAVSy = 00aaf592a725e7738388896b9be9f78c1c3d6972b9f99034d02cc0f9776a9f6c2f9b7d501f75be18599b088c4c5881c66146e5b9 +dIUT = 0020dddd67134a418378baa0ddfc9111c0a2ed492b289569dd0061bf1226d235bdaa5203d3efa2bd0141d2ace27c3ae8e6daf11f +QIUTx = 0167d577b2a43cc1a7d88a6be883c28dbf48c3e1fbf21ad83e7a7e3d753fb0b6d3f80cd1376fd98be260f494757cdc063256d5b2 +QIUTy = 015ed7003b7d2bd5e0359303660add090049039cf7df396989ea18c702f704c45cf6fde7ad072d31253d1d5295e9c5d1d5c62c3b +ZIUT = 0113dd2cf8732ceb8a893e149f13d52026e5d829322d0f1233a624fd6b74d56e7e6374d70942a25152ce5073831660333fb3e070 + +COUNT = 12 +QCAVSx = 00f549c47dc8e92fecd38b5750895880e449f1e31abe0bb1eacc84298f836108e5a308ccb9578dcbd4be6177752eb231e78f011c +QCAVSy = 0093663ec3fcb54d676897bfc95db5e54ad6eea1ec7b46ca4bf3d2535839f101cb3e6d5f11b6a36bf40363c31c9f88137862674f +dIUT = 00607a5a6532177b52f23492717dd0a7b2af98e04884f77075e4604410c5044a08461ecf37c4efa3edc2cb667c84b86415936b70 +QIUTx = 000a5677ac6c00d2646054dbebfc536db0a9b351a2408a73e083ad62d182fb87cb80322c539553ecdbc213ce84c66ddf8dc1d234 +QIUTy = 01327a0a3769240fda45f94bb07361c74aa8c8d119414a7b5666e25a3ab6881975396325a77f541a1ba268012a82c5110d2a49e2 +ZIUT = 00c8e62ac25c11e86b98642e4ec7adde9d9436f9337369fb065abc9ea784f90b8b8bebae35da92185486191dd9f49370b1148ce6 + +COUNT = 13 +QCAVSx = 00411e5d4c96e35de9b541da5fac691336462c882d8e8ce4d6eb7121417e70950c4d9502f64565d5a6cfa735c90eef83c7b861e2 +QCAVSy = 0096b904e37ca1c2db59a54615627e1c3356160fe175284aadc3b2fa06ba0b30aaa07c84e64e48652e5feb303595066e0f8468f7 +dIUT = 0034da9a453711f04a0b1ea1b9af701e0dc3a55cdd585e43e3ecf41e934ecaf880ff1614dce5cc992a69addfc408dae1b09b8d05 +QIUTx = 01f7bff435547a89516d017d1bdac4cda36041a0d3dfd03258562b2e28f40cd64f6ae2b70457773f9675cffc40c021e4702b08d6 +QIUTy = 0013c59a72f0c83f5bb90a0bfee798952fb91ee329c98c4b5914f445ae7c8483767052b5f529974621545ddcd6377f5e387d573c +ZIUT = 012505746f1a40ef75f950595211ce04f87f1daffffdf8c12600a9e2994c8c1d8b19c0e0559adf9a94762cb983569de6d0d8baca + +COUNT = 14 +QCAVSx = 000fa8243f000a3398808a1f88ffc5a342968fee5c7b26a9e1ffa26efa885e74e1c562027d95db08cc15bd25a3fc11ab4dc13ca2 +QCAVSy = 00fed687c7197ff1aeb980e72a3a7c318142052c2389b0866db3b87e5c8025e79bb4f4f996fa6352ab9cb20172ef78d6ffca906f +dIUT = 003141afbba8b4d9f0cbe8297f365873196739465e3e20a89af9fdf8b01d195aa1052e6176b5fad856136b6b320eebfc08c1cd01 +QIUTx = 01805ffc576e8a45f06297b2335d03abc8adfd15ad37e76d80d3b4180d5f72efc90f3f2b036acd817f40fd49064aa25ea383c82e +QIUTy = 01f22da6b50ac5628943f05b141493cacc0f02bcdf3bffdb43582343b68615761a180bd7d1ab1ddc15f5374a8f665d13b4b91272 +ZIUT = 019a71ab576546e2351aa92b6075e8229813e6a2cb3647147b192b4597f1217223e7197d846c0d65ea0d4aa4c503bd000ba312ba + +COUNT = 15 +QCAVSx = 00be7d58043263ab2f42252d41b582d862c2b243ce18576081bd6edd2f63f0164f365cae67268d227f3944677e1c146af864b8ae +QCAVSy = 01a4bcbc6416d86597a148ca4d610ee656a00026ce6047bd9fbd40d89530196a4693ae595d69956503b9d2ab4aabe7c958a14c69 +dIUT = 004e517796cac9d7c75316eb5e68963fe6324781fab986e940200e711ddbf9882d99a620a976352e2496748cfb61dccbf6d659cc +QIUTx = 0056a452fb1d558079c3e91bf22f86884ca89788806fe7d6d6ca40b5485079d77dc43e466a71259792c65ff6ab7204066c0e67a8 +QIUTy = 01f29b723d9f7d4de6ccc2f9708079c5d30ae5d960e62a7c4f6dc98bfc95b4f531f197c39486705432594203c25147156dfd5b5c +ZIUT = 014f4b7ea93c9dd846d2228c2b6a8dfe616057232b7af845a570cb6cacf9feef2d8ef4fafb285b38e63cce0a09b4d82dbe43a390 + +COUNT = 16 +QCAVSx = 011fea58d9e36cf8ed4ef3b42f77ccea93bf542ac92141dc2c094061985f3df786d192a57bee072550b302583f0f9428301b1b76 +QCAVSy = 01b3dcc1b8a3545264427386329eb81fe992654040694781c0d8b27c1e49442b99bab93ef9666fea14d4843ee4bc5b045ac50c11 +dIUT = 001c80b64d51e8025699e7be2c4b983cfa4b7e91b112e2eca5f9d0cb7e3d4f85aff7b33a921eaa124cb7002eab62973d65e16bc9 +QIUTx = 01fd0e4eafb26c08c9f8e747d4991f468c76b4864166e37642b583db285a4bc4c33979917d9129a91cb0a75c1aee7cd4fbab73ce +QIUTy = 00468efabcf448fcce821f3de81e994d79a7d99ea989ac81fa135f7ac88b154c767909c681f7e48c00b2e66bbaeb8f8688f44672 +ZIUT = 001fe2ed30ad4143c5eeb0b7622e6aa49e4e4d51c1ddc467b3fc54215dae931be0b6b6443e716895acb6570cdc21fcbdae46e5d6 + +COUNT = 17 +QCAVSx = 00ca809340bd13354b6071d073e65b9b0d2bac82e22abfcac7e70afd9d224852f0e212976e5ec823eb8950e02bc759ecf56f79a8 +QCAVSy = 0031281e8976401aab58fa8eaf8636feb013170bcab5781be0a28d27339e9470e166c7f685f2ea9143310dca1b3ab8e1c8e60592 +dIUT = 0043c96c32cf648b036112421adbaa925cd54175abad39e5681bfc9eb4b1b649aec1c876ec1ec4610f1b3b06514a48e6ea7a4a25 +QIUTx = 00de181e81b9e7776d474694a2d124d0b876d9548f20ee3386304945d9131f90457d9b938df098b035bedaaf80ed6d979404fc70 +QIUTy = 0181a3516dbea9da97d6ececdb10f96d54469d273ab366e89a40fdcedcf1bda837d5c14bd10c0b6a2a9c8a47810125c764dd35ef +ZIUT = 01610efb48fd22261921f7484ed6382fceb6bdf28f3bc2340a175b7971b93ed5ff357ed55e5307bbf42e40a5b3fabdaed0ce19a2 + +COUNT = 18 +QCAVSx = 0074795b0a9ca070491fb54a3bc249981defbec037e4040f76656428b1538b978503f81f80ad9ef97c5e127ba51ec040584b9a20 +QCAVSy = 003ece27f3daefe7bdffdfa727b2af95af8591af946cddfe37e85643b8d179ca8b9529106f9c5f3a95a8819225f9d7d4a730fd22 +dIUT = 003636854b8ee0254bb2d0ebedc720b66b20129a21f1a4fe39118cfdd4d137dbe5e570ebe2c48a7f9ac21cff3e5adf47434697db +QIUTx = 01efc0cd1a86ce7544f25f44e63a0913c11fd6b08bc09ad8cd82f3af7e32a7a7ecacd56e25526589313879d4a7fd4382d4114e4a +QIUTy = 005a34ef7403599c2f83f3e83299524893f2418ff95d6c2fdc0a3db970e62fddcf4cda182aa78b54fd8c2e818fb1ee2dd2776763 +ZIUT = 008d990982aac8d5371b867de21e09064fef30e73321337dc24f19ad5ddb6c4ad217136b7c61e360a73fa7571d526c8f514a06d4 + +COUNT = 19 +QCAVSx = 011eb64ed4249e1195b2d1307a35a514d66d29ba6f9044f9c02b4b2d3cb3e3d4c0cdc5489cddfb96226c9ce3e36fb8ff2eef208c +QCAVSy = 0099880b0d0d43c5c579ad77ddae68f2c917f4b062ea8d777b9cdf465cbb59107e70992714e8cbfac76296d5ede99c48d38a8973 +dIUT = 004998a062a32170bb358954d2c2496da886200827fa13566836ae26e38d51926ca3d202589f7bfa27ea22d399973db6f9fde9f4 +QIUTx = 00f71590b04290b5f3cd9ba0e394a3be5a1514f45e53497f6cdedbf839728e0288135d769e4b28932c875823fe256e891997c476 +QIUTy = 009d16ba726a5a9e09103bc94a09d8079ac8edf23410c8469f79f55f3355cfb3ad703624ec6d75eceae3881da20903c71de1f5ac +ZIUT = 0155dc98729c8c1bc65eb8a3ec09135f46bfa313bf56aa3169e312db8991abda338f8ac7a75bce42884068efb7e6e625939d2b88 + +COUNT = 20 +QCAVSx = 00a15e96a776eadb8f8a0b61360335cb5017d7d97116489341e995157f1adf178e5628bad3e830bee54433119164886db5c34654 +QCAVSy = 00551ca5605e4ae0534534a0ab343d039a3ba7a1cce832c4d65e26bae7ab8e5f9c74b3d421a528e559778ab27b59aae1a916d4eb +dIUT = 005a3f805fe3c3266feb3e0bb7da6761bb117618bc57af357b53f199e6e4cbc1281975321403ea6de618ec32e86b8ca1e10d7c43 +QIUTx = 01ae460e1248504d33d67ed750f1d618e53728d55e390dfc18d94b56dbb3d3c0bdc96c92ca1eca9f44fb8a58cf36dcfcc0588cbe +QIUTy = 00f7011fc321ef6258dcfc1fdc2c0a4e54c86ec939bc9ceca6c291750c1ff540b34a418793842a2c5cab6061dbbe9b5be3fa6115 +ZIUT = 0109e85c684d027a625ec5e6df952e2f20a14ed5b092d1b1b38435251303844d230fffc53d84b923555e1e1cbebe20b5d68c3bc6 + +COUNT = 21 +QCAVSx = 016427e72bc57d26a910a6722eac2c78fba8abffccbc11a9f8377bfe213ed9ad64bde2ae8687f8ff1dfdb29b5dcecd02269828c2 +QCAVSy = 00ad4f9abc21da0d31f19659cd3b0c185581436ac08b15c0b48a7ac39eed03e0ee97e164cfaa5abc774412cbfff94a9ea2a9636a +dIUT = 0055901e9b6586b7f3372660ebcfe90249900c902d7c632a8d17fae21d3fde3037325b5775eac5a174a1ee2b3ff2bc5ce69d8cc1 +QIUTx = 00ba952233531b6a6c7ade6f338d24fc65777b5d305297e66d32cb1bc506c5bca2287d3acd33fe19653d6c88a06eca3712ce9caa +QIUTy = 00716beb14f02233630f34603e309bf6e2572f0b791dfa4c582af6a37abcdd64e8d785a95ddff59bbc6fbe1b7fc735725efcf0ba +ZIUT = 01ae814e02c4684c21dd7e58a65ec51ec68c37e59e299ce65608186c0acce08e41c8320b1941a611fe66b1921b558d7f402d0eb0 + +COUNT = 22 +QCAVSx = 012e89dccdf975851accf0294cf4bde1259c907a6d3acef69f1939b558c4d211522e4eaac613e3ac8491c93deb6d344a9f87acbe +QCAVSy = 01a52608ead09d2db123a0dc782ab20ddb793d5bb70ac95c58e62146beb62bb668fd57f92038e4585cde1f91ee8c52526afeb1b5 +dIUT = 00044ae43bd247e75afa7bd8dc28e75bdb9ddd99df56668c831454dc28f3e9a44ecfd47ba8420a286f1ef372fd29b365df9b82f1 +QIUTx = 00202694f378d70965d42828ad5f37137bf8b63cec2c0d158e5ba94cab1f8e61e5a300986ba349b3adf3efc05e65670af88cd3d6 +QIUTy = 00baf0da4aedb972f88a215dfbff64e4290fadc25da3f0d83f35e65bc4177d3025d71d8eeb9c41470f3c719e00ef1fb7552e6a89 +ZIUT = 0140e7db3f6415d884822ccc7316a329dfed177b76c0117abd722feca889bee4e14e65d26c6cc935c0e94205f05fc1a7abfb0348 + +COUNT = 23 +QCAVSx = 00aba93ae1d1552880b31f503fc4be9f91d10247f14c816015ffb2bad29ab8180e7b50a27144e01c21e63c3dafcd251308bac768 +QCAVSy = 00e4ab66e514bd02abeae1c7123788a692584ddb4a909a217fb35de66588233dadef7036ff9d9f24eba3772e2fa3037bbae63cfe +dIUT = 0056d73730753ada70fd801c749c2f1f1a61ef5bd6ecb796a9e15efe9bbe6158f669542787350f4d643bda6f3e8c6423b817b530 +QIUTx = 0025a06b71a0ae252f2f905221983ebfce21ad96121a5c0dcc5ef0d0fec301ec77ef4b915818fedcda7f3fd733c7f9e529079cb6 +QIUTy = 00026890d5303b619c7f81f60fb82b26b0b98d8f24c45cab41a44eeb3a3a312944e889b4035e04360b305043e30d0cb9041a89de +ZIUT = 002ec4deac3e83d60ad39969f2f93b49f31875831ecd51ea5c37ca48de081c0c8cc660edc53a222f3043447f9cb752763be7494a + +COUNT = 24 +QCAVSx = 00aa4eb898443cce3ed2c072d858775ac221c24e33eca6f31579663544bb33a4a068a86d13f167b65304c5f7f25f895f65b2f428 +QCAVSy = 0083cded30211b66f1adf17318b6de50d7724c0584995e068b724703ae08ed71a32b334987a7b31d6c2637152917327d37accd33 +dIUT = 0062b026d49720660cf6a4f569be98dfa108c8eba08234ae9a87f3c88b6c65934b996815322a16f9aabed13317bf7725bea5808e +QIUTx = 000f52925394cb52bc330e06390c0c0a2e10ed9797149fbcc88d80fbcaec173e24a05daef98401d5e47f3b765bedbb8246312856 +QIUTy = 013d99c1710805d5fc7db7259ac9e134b411d00d73fb0762e3d211cdc56bf7f714512d04a630c8732551ee734287476cf511e836 +ZIUT = 01c9cc05d19f96c4d233039cfbc43ab68d657bb507f46a353091fe98fc0f422a8e7593c195d326977a2be6bbd2cb44eb1fe81650 + + +[K-571] + +COUNT = 0 +QCAVSx = 03106a5c1d923a0990ea8c6008c36c366b53e5622b98464044741fbc7840284db8bbf602866c30ccbf5f9b7e59cc1d9bfcc5b970fa624da9b15f6cb336f5dda7e6b9924d5dce4543 +QCAVSy = 005c5c7bbd5a789ac4c6283deb0d0d37c4852baa57d6bc2b0ac6337feb09704c44d1b385b70cc394fa235d83e6e7111787e57d0902c0cb132a190a6e62f398511c0c2c4cd50d4570 +dIUT = 0173cd1631e18ece01b73b3572ffaa7495c4bc81f4078ae50d69cb1e338acf13469117112921166ddf2d29f3a9f8e10c67e88c9a99203a834565be76ac59126436739a6afa029cc5 +QIUTx = 03fbfbbcfba609157f68a23126d805f7c75efb19befb595e3a975e08ff46bd34c8b87b9645c0e86ea0ad915465d5c856c69bb9b722b0d17bf97ad95c4602dea17c6b512054cb22d8 +QIUTy = 071c16df71e1b71b4bd3d9938827d3959093b9db1ff86bed73944a42dcb67cc33102e28c1d0e9804a6450656f4bf33ad72ecf7bb83bd282cde4bc15d4e48064aa8ad2f02979f5f3f +ZIUT = 003198a6b5d6cce847e24348a6a6ceff7a89ed3794d7acedc4e858c80ad04a74dbc02c7038e05ab26b2a299ec92ee0d2c7e66a81872a5157fbc5d4d37ad598d6ddee995ed28a2d74 + +COUNT = 1 +QCAVSx = 0211223c4b729b206be01f8085a997e1dde5cdb27c048925a27369bcca6a3e2fbfc65637f1eceb133be749679a17b1ce58821f46bd1844a89cf0042c8043cb105e01a3fc948d2663 +QCAVSy = 02b1ec2e6e2c2375b464b0a502c5053b5b348bd08178c72c603105d0468196a4695dc267d6e109f1b1274453b6eff14ddf3783969e8825648debc216afff9258f644d77ecd9911cf +dIUT = 00937edb3aa29563d2248591c9fb448985095f913a7458315593cfce87e68fb0f1a525b7310a101176e34d45c1004538954e2044543817cab0d563df6cb0d5e8617bbba150e755e1 +QIUTx = 02363cc5624b06df1956befa597d4c757cc2b1001a3e1544d24408290f694877455ba92e56088462f0ffacbd393cf835b56b7046a15d4b724dc6c3573cb156c0df298aa8b1255cb8 +QIUTy = 0409f773b98d5edc2734d835953281b82ac0e15d902d887a7c6ba75629a37671b101d18ddfdc4193d98b18551414c49173004530f7976d27c273a73ddbb898fcb5fade9c0bb7883f +ZIUT = 00577147459262e5ad42f222827f20ed574b2118924205bcdbd339ce20cfb085d072fd70f4ca1f5768fafaeb5710f7ccbea4fc2ae5377b0cff20a889a2201739139bf788a9bf2d7d + +COUNT = 2 +QCAVSx = 004d48be599ebb1ed602472d7a87f4cd2080f44ec28855fecc3a9cdde25551787abd27cc1da7e77817e94c9c0289c005a0e36e3bcfb0d381e8cc9684b6f7dd05177f16f63f8721ca +QCAVSy = 062cf71af0a2f8e35c4d7f9312bd34a846a380f63f0dc7294c18877103357e20d1f0eeff312a993deb2a1ecfc80aea06a5b71e4f8b9cefaebcd32626919064f88af416d86e3e7af3 +dIUT = 0034099b0773f021ee0d3dd185c704b5158a94328daa09768fad5804df1da2fc067190cf1028c30237bf2a48da13abae35a25c3e6387d3993f9b568305b8bf0818ff527dd8205df4 +QIUTx = 0674dcc4f755c44fdabdc078488107bb64a460ba932c7e185484ccd27fa870031107e9955204b0630b9b4d3608d9aa931d7c766cc2e45878eb6d8cd96bdf711b2fe8b47b8d233ed5 +QIUTy = 05d96be6b7e2ba74c8032af19ca2f2b39d2fd4e8c89b156b6b25c2ea4f71f74a02ca7da2a463acd7605d5350fd16a9c9052534e7e81d648e4060a2b01c459c260cb6567da1fc5314 +ZIUT = 014662b261d0bc2168642bfa4f80c4b3fe8176f604ad3703f443ec7aaa3dcf3c5465b869a8fcea60b8f55ce7118806c5d28a04848bd961db0061209b59bc02979acce9324d7c0c31 + +COUNT = 3 +QCAVSx = 06bf252e62c9969171a9717671da0f7032e9520a497ec831f4dc776ac87e0194af99546c41d08048ea06da9235cf1369c3ea53e6b8cbb7a7fd4296354548d44edf463f77ad341b02 +QCAVSy = 0294d5f7e736dcd8990198e4e0f0b398b8ac6a87764af601596234a2e162c9c667e47eb3d987efbaeb03b5e3699a38ef953c74fb28fd7d8a4ec5a36319ccc44a19aa88201ddacbf8 +dIUT = 001547438df76fcb5e2ae6925845bbfb03b4fbe8255616ec7fbd97b48f112692219f4f1275e6d2453d5bcf3bac4106f0161b8119f487d88b5f8c8e08b3aa17b83fe01102d76392d3 +QIUTx = 0427e2dc11ee5223bd9c3d9418c79114682f91dda06e7d88c339a7e56e0dfb636b6e63fde8a381146ecb705ca202d2b73df408451763c5166066a97ff4e4f32f0b4cc942344b0b2d +QIUTy = 0760c8a388e2eea27ef6838c7d45052e38cbee2096cbe89f774774134076658df90c62c7dc0e3fde995d7a99090993009ab6c535677dbdb376f183eb5092d2cb6a8837b6bea35dcd +ZIUT = 051ec4db0622b7b1c798366453c70f959376ea3942aed2e931ff62a4019eb12ba5ff119214c8bfd8bdb66e62b562400f2d3d48a84b1b3baad3667f735ad4d0f183bdb91aaedcf1f1 + +COUNT = 4 +QCAVSx = 05701e63b01c16c4eb19938265ba134cac7316278e2f1eb40a04775448bded97e7a37d01fed8a4e0b43ff4dba21a47759ccd45bf9671dd22eec65b4aff8b8db89dfe3e490c0ac9d6 +QCAVSy = 02dd97b6415aee2b01cfeb3cd2a03578abfed9ca87be9a26d899595a87bcbd972748fa6a0be4eb557e69c6d28e2bba1580dc74e2751d7ccd918c46b4be6875a4e4c290d959c23c12 +dIUT = 00c7b4252ca9b192c5feaa9a210fd84e2e48320271f10f67ea9eb30b0de8086d59dae04259fd12b086d890e22d45d27d7c8455dcf7ada796e35e3a3138342cc736bc3ed3781c4119 +QIUTx = 0325623838e8b18d81b68060734254eb02b8ebb2264556fc9850c36d3035449aa764f351dbaf7bbca9b9adb11f27cc88a1ac6fb71aa10ef8d0d09392b0ca7eaa7a5cc14078cc18bb +QIUTy = 0098fc7656d9de3a51923dba290ecbe413ef8d951f24e9248cb552309f97127fb9429ecf6dd07b6de894e16ab60e33b4ee73024ccbe866de5e17f1b478dc7727a1bb42371820b12d +ZIUT = 05b355eb5c47d8027b6c5301d2463b99c636db207792e2975ab1a53c1cbb131280288432a79a3b47271d6a2bd777298baf8a675f66be9dc72c3588d299df8b52e7840322b43c2071 + +COUNT = 5 +QCAVSx = 032fa1816fd2317c16b5b19a25d46fa5e45ab15ee9f2b1d1274c2a06023994db309fad56f60b3ce57f32dfc7d045a84b7d805232be34c7e759514c30a25207ba800215b2060f04c2 +QCAVSy = 041469593d5748072b9ac8fde023095289bcdf65ab1bfc0856f83e9ae06c897303bd16f5e45823d65fec8310fd4332b65cff47a799af4f7c8638e2d7f85948c43f10534c980ccb62 +dIUT = 0066cc51980d3851b488c2c181496c83505fb957b1ec4a84df1e105e30d002bcb978b6d0bdc3b7644ed3dfbc33ca6bfe4362cd8cc541740b0de8cf2edcce4592e34fa11ac26ec922 +QIUTx = 0771fa29e5930d6dfd36d3a9e7159675fd23d0b5e1fd9ae6454aca9e8127f1e7e3f5322b5c16b095573b3266d08f0dc33043ffb3d7b08e4e052ed3f0349a329025ea6ff3e1668547 +QIUTy = 022f994f9974692dbb6e58cc7ae5f90652ee231e0a3961569dc646d114522a3777410c1b352d668079f80010bb540e4c28408665810fe61fd60e70d30c688eab8fde04364dee5c9b +ZIUT = 052bd78bf1326c6d91840a351d4874d36b147139882356c595b8607f9998773092a99adf70adeed19e122d4d2fec16285f000161145135d96355cba039a96335e7716724c249f88b + +COUNT = 6 +QCAVSx = 03e63dd4c98c151361c9902b763ae32f2d6de75953fa3d6838c1d613d448fca73bf302d30212a96d32b9549e17c5cf395c565191f6a22dac4da7c1e1a9d9bae86ebfb72c82ea199a +QCAVSy = 041609ab9c12c15e5127005ebeff6fd1f73b6912ed070af87f5ffc21df903dde1d715582dd2f699040200045cdba9ecd758ac4d084d4c8d78219f6fad94d341ad77daccdabb54a2b +dIUT = 01990d15fa2cc90e783d432201784bab56b6d29d1f2665a76cd013eb96f6300ed8f762b78a5596ac7e8c1e76167f107c20443b1ac732101e9f0aca12551a536d152df2b3db0f20de +QIUTx = 076c3d72f0e715f2491bc9d99278a8ef3c390b3a96e9997b37e5b7bd8a5f07af68f8e0ee3892b63ff112a73a849f0e84a782d4fb426eb5f2f15adacce9e5476a6daccf3a7fa9a291 +QIUTy = 0540a763823599e0c86027bacc8cbb30e3a2467276fc4f7e5fd4ed385dfc6f883fed7bca69df21a0668b55ebd292da8fd6356a3ec5cd1c762c01473aa067004cacedad564fe06910 +ZIUT = 0226c28e5a6bc735935f9df2c1b02d096d4dee41ffb95a67905aab8de1b2d8c66e2bb471293091438d3f05df7e48003e58a958b72f839f7f2e2c54287fa3cadcd41a2542ae4ec03a + +COUNT = 7 +QCAVSx = 06f91a7ce11ba9bf2de1fe070f9dc843bb717c306d9c63b5078d2a11323f20c9c0d7b7743d311ddacdcf5dd00f498b199672c78ae25e6864d62bdc16935d6fb8dad2082d3676ebf3 +QCAVSy = 04593c5bad12c3d655c6611c7ca9711f9e32a28fee54b3b8243962a3c55d41f2c185e4c58b7a2998e978021b95b724635daccbd7fc30d20720797bc291362c55b024acb2bdcf3d59 +dIUT = 002b0937e731f59ddddf0e94fba92bb1a6ceb819e7659bcf6edd4b4af49c2ef25c5b6039256f928363e18404b1653d3998054c2c25a3f83a0c5548a139e3e6a180756746cd34ee29 +QIUTx = 0270c4c00de2709010c7cf047a0ce69b87f41dca48d35b71fba4b258886d73ae42defb8653951c1bd3eb4ce0e6175a946c67afa67753475c51fd525b0fd9f5a26dafca319faa5e15 +QIUTy = 06680bbdc281505f5d3fbe29744a999e07ff612576993f6f8be3113db1ee6cf23799867bbc80a140376a9b6327451f98bf8fd1db46f9d9cc05e88704d5712d4567e1df40d39e99ef +ZIUT = 051a3deb052d3e99bb6ab6c6b284db2c998e9bee543e02e57f1b13fe9fafbfe53a89658c58eb947dbd178aea2f6cb28e305c9867bd65bb26f71793f90c984ca11113e1a8dbc8f7d1 + +COUNT = 8 +QCAVSx = 05ab2a7f10ac89f98c409580abc11ad90c93360e6ab282920b59d316ca9f2b23aeb50876cb1bcbe8ee9ae6b5533fdcd11ad4f86d8918d66389da87c98bf1d6323bd0947d8099083b +QCAVSy = 0689e1947276791dcb9527183e32a08072b7e03dcad175fe3cfd7beefc848dcef483380c6005411385c7027c9a52b60a6e537a875380d25bc47c7bf2364dd68a66f21d0f57866a42 +dIUT = 01cd41cff762402a834e7e0ab908fc54940f697b50022a4dfed8cf0b13d7e0ee523fbf33ee9693895f918d94e15b084655d61b2294ca51c4123fe5e0868e9d0d1cac2138f0577a17 +QIUTx = 0610797bbc6d9131180ae54ab66e6780849258369741470e076cf05e0785bb4e7900b908d38d8dab3b9427b952add20efb758cff80aeb641c4dde1eeda5509f386d5658559609cef +QIUTy = 068d2515f425a0e3037547342f1b6ff931763f5052e536ea4f78377b5c941459c8c2201482afcf3cda7390e9e5d319451864ca03683541ab2cd77a9d88fd7a610ca845ee5cd3d498 +ZIUT = 00697c751ddbca7034fb4d3fc1b2618daf78cdae464e8332d1215020c8f896f4864c7a6f2c61a363f730f58fd3bdb4f78a90b40aeb83b4fbc1d8d37cf6a27a6f722c68a82979fa16 + +COUNT = 9 +QCAVSx = 0034091c3ac6fc5299df18f162eaf7a207fc1543aa498e7272e15a92772f57772229069456e219c9c2872bd53783b0fb1345f5e84674c4344129a314146b7030fc75197a20c588aa +QCAVSy = 049e3a3f5ee65875e1401089970638b807df97568a5995c8fe2f502473b83f58c556c5f214ed6f03ef8ece01401a2134bc041f66922fcc4e3938e0c6d302eb42200678a97139f291 +dIUT = 019dff0d72a8b042c4e92f1dae7407bf4a106cda564db7508e5a76b03130c91d5e5cbcf2f578c2e9dee43849f911d7773d4c267e282c277b731f88a6ef0eeddd520f57e743ebf965 +QIUTx = 05bb60a5fe8e3b173cf8413eaf413a3286a5a7aa378f21446c61057696012746d02d10a831f785c9c96561ffc6ad4f9ecdf4937fffd8e698408e660fe896f7ed44af6b3b42ea849f +QIUTy = 037e3a35e48aa66bd851c59f851d4a1ff334e0e589dac30986acd06d6eb8ce236f2a9688f278a14dcfe0660b5fa0e97ecfcebbf5b40d3d3f5150a5545acba6239c00419ac72dc2cc +ZIUT = 0322517da30e010aeaa2ec9bad2745d8e67f906294ecd6b1d16808be3837f79070d0e1bbbd617f4b8b031d3b51ea2acc59de408a130138c78571f8800fa907caf550d23323d1c818 + +COUNT = 10 +QCAVSx = 057b7c65bc51e87bdad37c2b4dae67fb008ce71fd3072e41b77c562d7c41748872a20bef8517ba4be89637dde98e2ba1b3b01f63940713e2823d8dab68a5cc78561de14085e4cf87 +QCAVSy = 00ba77430a5560089dfac4f68b4f34937a384dd607bcbb5fab5677a7fae09ed07cfade399e87ce9fdd9397c681aa3378ce3bc82b007f6de4f7cb96dadf55a4c8734a37f39a5c2f25 +dIUT = 01e1416d429926cabea547bb2776710a52f7130393081020312b3962195eb6ed17c6d436bc46a5b47a7aaacf8f8117fea3cafa16665cc1845b0ec94faf687579b1c116ba183e825f +QIUTx = 065660a58688a16588a9c16b8272040a30afe3150630676023fe165686dfbda64fc85995ddc18c9c5b029bffbd4dffa8f62989c639a68623eca78009cb088ee1cb42c4855b79d302 +QIUTy = 0492c3867f137bf2787a7ab0568d3079b8d9a1e0b0ba5d29d0c7ba616d0bb27725da2ca6bc67bf084fab52599ed42b0ef48743423cbc6f4135692c309ae2630cc4a5390be93f274b +ZIUT = 000911ec1cf82a22c849b401dfe56453a06f4af32644ea8b63135b68a979236d05968eeadca7f0cd339d295cc58967a7f38cfad6e947a71295733e42ca3c1ba9b4ff6195607bb530 + +COUNT = 11 +QCAVSx = 06fa7477edec5f1e742881f8d7b2af56375113e992b797fd387eb5b53c33c6ba7236417b2c7e6e346267f1b8c6d7857d6e08f9a60e86de23da4b368424fb003f96b4c89f5d244a74 +QCAVSy = 073e1fedf62e8c81283622b53eb2cdb27b64c3c1dd78da0c90dd6c3c776ad146302e43aba541379bc8f3bddc2e19ff15d96664ce2d09eb6fb5b13848a82b31b452d8e84da3b85318 +dIUT = 0196363eef1a0e5be97d8f7601fe40ff4010f4949f016908a906ed5cdaf1221d3a593b3a4676beafd1fa14bc0f7c533b17086f207f9c484cfc2fbc3db2be4123a8e86f3b4911cce3 +QIUTx = 01b12e38914ee0075a888d6d61cdc7570c511d90a9e3a0e2738c3a9981ab9aba9a6c61460bad079a28429a5207d2c801af2fdceda366440a11686765e9ba77f7a6bc55012d4c9510 +QIUTy = 070ede5877665fd636adcfd07220d745ed7ac0a9b0202159f450c9f6c1b837192a69ee6ad955327eb9cd326a0588b59723db4e8fd258b11db888a53eb14f2be08512688329059892 +ZIUT = 0724c979affb3ab8d307529759bae5fa67319d441851e5817fef014350e3014e068428c9dac395c5e7b9e5b8877457b3e4625ef49ede4ae3626755eefc3fb3cf09c23e8a5a9f8c25 + +COUNT = 12 +QCAVSx = 018bb6cbfcbfbaed468564b368f0b0abc3fbca47dcc19f2c846bfa287370e1b912f6b70e08519f577f0cac325b79fd66b6b23aa1e2ae262bcd2e7a8b2c2d98d9ed77a54c7295f98d +QCAVSy = 05be9bbd91772bb42266aba9c893e56670cfb66cafbe4401ca2cb5765b469504848597c7f446e99814746787158a83ebf8e3796857363a8e04f8742a09d7eca16386d60fd7c858df +dIUT = 00a19a0edf508347f4402cecbce127dc6410b1967d3f89e6b3ba08b48aad08cd6ca5e5d1228cdcc41a1c380f2ae9052d73db7550e7a3c1d857056c98947f5b2c71c33c4eebc1210c +QIUTx = 0629f70558308708e6929b1ad0fe3128a8af7f96591b47cb8ea2c3454120a6d393ed989d13231c661966a378b967efa64d3c0938e9c0b8b16c99d7349bdd59e2d44804f8fee1fb47 +QIUTy = 06a5e50fd5024d8953e32242823250e998ca602b52599405129735a874e833b3bd73d7a9dc53adea092ba8d24207f5ea5657a29919b88a6d63fd0a943b56dde4c8478481b57723e4 +ZIUT = 005a526588a3a2ce08b20925e83987eb0a1e68f997102df7f9af83823ac8e06abbd29c04cb1f974ba9c9ac49b48b5af37679a39b532d359cdec3d41b3f80a1ee12c80276256b738d + +COUNT = 13 +QCAVSx = 032184b6863e2cb5bc71baff5b6b57a10594831cc11a9e5eedec4804e2016e3dd064cffd12a1eea0f6932911ded345ace5c1ff250b9648d93b953386dae9b5628c3c62527b890519 +QCAVSy = 07f783e0341a871e6256da349ebb539f88767d7dac1511e3c3e4d43b0fd31d5dd2c2f0f176eac544a871f42b983f8fba4df67ab6a239b7df997226304b73165d962f4e1d2d18de9f +dIUT = 004cac3fcc00734442cdd80eaf824412c20ea9eeb03d43b999d49de61873602020a2b3c47965f6f453b91b7a2c1d93e13a89544533e35a122cfc8612c8690b69bb7a557875f960b2 +QIUTx = 03e211c3b4986927c4388d1680cb4770dee6c78266724582c66ccc50c6cb28239474d521facc7206af6bb29cced733edbbc0d20b9264ce63d9437188e3d31c0e0bc3e9f9d88429e4 +QIUTy = 037a7c59012a82d59cc1e2f0fd4fd751e5737acb77f2a0799e0af38996ab5e11090a6396cc480e6f2aabd8fad44611691e5822115fd49d2a000c9b49d1f4964e24d43fbb81fa879f +ZIUT = 049db68dc9fb4cfbad8247ca4fe7c573c0640abead8f319194d665ecaf4f04b61f84f5df0d8a6386f6df04ca1a685a7394567eba5deb9f739b1e623ed6507021593f0e22e2dfc3f6 + +COUNT = 14 +QCAVSx = 071e167e59e2a709ebf4be3d83fb9dc69ed749e3ab8a54e202c35f8d45deaa2bda86c2afa1b0a04754d18898fcdd9b185f1d8ba2e180a47ac291bb4aad8f997f73b1423bcd7e9b92 +QCAVSy = 057119085bc7cb2023d23f88101420f9f508f0db94f8dfbedd5cbe88cec80a9dc708df6cccdf815d75b146280d7cd2eb97cf1a7dd550be523824f932a777679f2ee9f66d4258dda6 +dIUT = 00d514144d4548bcfcbcf57009f7e8ee104b15456f491826bdfd9ba67e871fdbd8fc8490ecbcb269091fc7529e5e55713a81de20c0ed01ecb3159ae61424bdbc5653732587d1e94f +QIUTx = 03ee5f877b737dae40baf91e0cc581dfe8d291f8c451d5bfc0b690df7025875d9569d52021b3b6890e01a2ba95899e2928a902cd5dc8143c07ea26749a9c94068b5c34c596b0943e +QIUTy = 058e1ba516a818cae9b37086287e088083e2b421fef0b59ba816ab031375d09d7af7d57866744687be3bb41ce2276d3a38f97bbb9fb59f24a92f0085b04ee5ed1ac0efa671394f73 +ZIUT = 0343c45daab4f91e02ef9bd6e1cd157b00ab0ab0a3e0d9734918a1d896cdf7cc1212bf74d7bb9bf96bd4abf42df325756c407217f44a5950c2b66af820692742ed7ebe14e48d2d88 + +COUNT = 15 +QCAVSx = 074f1a7b5cfb0eeef1e15e63512c73188dafbe88e8e9c42073b2b652b9f028214f0bec79142d8889416abf7a83e29f479e7bc3ca657ef0a10c2ea3ade3117c0d369dacc2339d1c12 +QCAVSy = 00e8992a54076753029f2c0e9d8c166e6ba84896a4785ffff598c4823e5461ff005490bb7fb6d878ac34f427fd9db48cbdf12eb9826d68fd2cf171d4d61c3f275d44947d4df4c752 +dIUT = 00ccc6dca5a985583ce00812c3d07822f6341c79d78c16b2e7ae4bbf5bffac1acd9deab678193f8f89b0e2aae52e30311444dd11253f96d62db3abfb17e423f0ddf0e991081154c3 +QIUTx = 03826215343cfd4ad968d572bab2dee2279f9e8effa0ff80b0df5dd2ea822b502274e507c87d2429dd8bbdba6eb8ab433b1ee1cad3a97c7d244194fd9a43f3e1ff33144e2db80864 +QIUTy = 070f4508ae391ce24154b38873af0082d95895ac92fd1aa321ba93beef404a63f7b1afa1feec997885523a6688ada94dd45eb32ca7f1bb87e63c4de97493196c3b53cf83d218dc37 +ZIUT = 04a565cb3e15236a7f6c413afeb419c082427b10a6d07ff87e81740716433c06b3254414381e4ff9860340dd6201ab6621d162cd12047a5515ab1d65f20c97eb3d7132642f8ad58a + +COUNT = 16 +QCAVSx = 004b54b3cefd415f5eaaca4ae4e5dacfbce20cba1932a2f50549bcd31630017ad21475df154ff37be13ca61a4c60336b33d0ffc762aa9e9e9fc6e6fd17250b5e4022b55141d23fbf +QCAVSy = 056f7c8d65c568de95bd1664fff71429ec738987697f217de5adf36d14a80b6fe585e4685e03c81838abedfdc05a1e01407af4ab989fc1d1273ba8a182c461856d5effe705d7dfe5 +dIUT = 01886213658bd17e7dc334dd8003926a447c34a197ee5d6d0bbc46e85ec1cfa6802858d1c367276ca572ba27aa7a5d1e216902416b48af6e4277945e465d7d840dff1438543caa46 +QIUTx = 047f6cc42107c40c168dc679a864f969b53f756257113b7502796efa54cdcce704b9344ee4bf964752d68910262bd26ab6b347084404b28306ca3425f29894ce6fd4293c5973522f +QIUTy = 060cfdb5467675a789923be973c6645dbe26d00a39d4e81255217291a3882cfa8f91f4aa8214d3524c95ef6a24e47b3b9d0ef55f670756ae4a4d9c65f075f4170b2d18aafbca0265 +ZIUT = 047265831f1f589b5f30806e2fb80aa7844cbf32b6993384beaac7d992b327b97dfd0bb89ca09e711507e846ed4ad003e7115fa8843b23d38f320e43b5eb506bde48fbd7af4983b9 + +COUNT = 17 +QCAVSx = 07ec71bea081190a9c4cdff809ed2b65a77800cd1b3beffd1e4004d126ac352d24235c797a5a567daef7393d276638132ea7f0f61e550dc251d341f66102f96c2abf7ee37c0fc9ed +QCAVSy = 00efc2ac8705b2f9c9c06a910a304c42b1ad53101aeb0d146319dc24815c7cc1983b1cad91d5f9c6d5eef1677a1f2d2bdd75a1fb4c5796a4c56964aa3e43f3da26c737edd9cb0910 +dIUT = 004c0dd3715e8888dc2222069e7f611801685140303e16b8b443433d5e18a4b1803d5680416aebda7ae7e9449154be346a7dcb36c1db22744673fb3b245e58440787ed3dec6d3db5 +QIUTx = 02fb241eb2c28a1b0675b5760fe5663efa603eb0590842f455973f0573e148a47e63f97e8df9a570b0655d5afc42019fe95fe44fdb02a68271d82df580010f91dff0cb3d9bda8992 +QIUTy = 033f93a9dc39d87403b6a94dc0632dec6757842d0aaf8ad8c41ebb637058bfc11c19a3a9abddf204201ef4f96fe9629233a5070a08794d14470091e30cdd876aaf65407627233234 +ZIUT = 059b62c25c96955b8fb4deddcf90ebe6845ee71ea357739273d6d67f21a0c47d154add9d5d4d2b657fe1988ad614b0b4902faa92fe999abd754ad33cd6b92fe2f6a68a6f2c1eeb27 + +COUNT = 18 +QCAVSx = 06708686b4f5ad2fec457aad5ac4a3dc4867a477eb54fc0d493511b5561ea151dd4caf5d4311983500b48c8043af09e3f4042d5a07ebf050a4e801daeef3317be093955020452b29 +QCAVSy = 0525c8682583b55f7ecec59b920846f75d11d021e9ffb20018639f6ab93022472c192d398e150cdc630a11fcf942e5d238cd6c14b30f44a24d2f843ec5d135ddc7abda56047abc21 +dIUT = 007d54194fc226cc39f640d3d17b9b95b70b51f98ad5ca1991566108d839e377e21ba48cbf441530b3341ddc61b0a58141aaa66530241fa529505d70804b2560c5be481310b9962d +QIUTx = 02ed5f3a2efa4ab0f9db5fced7b1300de4d457a9ad0827457e5e1c4bc15ebd183775de4b73c1f820dd4033366100e48b4164d04e9fb6cf1a4bdb55122a86005fbd0bd2cddbc95fa7 +QIUTy = 0327fe654ef68563cc8888acca85163c2b154fb70b0f4a2b58c36388a0c25f80a4c887977d46000dc4d86e95cfd8f9065c00eb28653c8fb477bbb5c63dd47b83ca5e0f871e9eed3d +ZIUT = 02777c72853b76b29f69d3aa27a1659789a025af0633d833b22b57bf328d231ebd128bf96a4c8a7ffd2ee7a51e5ebb7a8e5bca20e4ad49671a2123dfbc0d6c40594e04765186de06 + +COUNT = 19 +QCAVSx = 07ce7674403dfc62895d71e2ab587ce735f279f12f7df3161335be43fc2908ea736f6f58b932d793aff66f332735d4d38f05cb03cf275ca0e00da1f57381e08bfeb5017877342272 +QCAVSy = 07d6649f3d91e7bf5f8de611bd971818106df2e37935bb464cd9e7469629c6ae7e7f2b2240276cb0eedb7a26d0c7d377f4009a1dd48a793cc993fb0d4a04db1dbad4493304bc5c0e +dIUT = 010740b958285242045cd5358d7ff9232b7d7d413af7e205c285f88492ef27a2fb850e0567ec24c480c75ad32f70342025c86267dbe4ff80a2c509e5b9a45130e99e7c7cc8cc6ece +QIUTx = 03f3f585cafd46a663b6cf8b8323ef9159d5195d3118f3edf38732ca0ff73b2d065d9e69ae1e3978b2ce6dc61500f7b8bbf6f6a70b47bb64cc4fd195bba6ac932b70beafe174148a +QIUTy = 00b1566fe619f2cc00aba05e24a6cccbc91338b2eef553da0d477d6c8c0ac4c656e134dbcf31ffb15c67d589bd2918f1174909e5428c71c90e38c4e11b56236abfa1de6a8579eb4d +ZIUT = 02c2ec1632e83416182a9a438f7360b88061bab84f5bded3dd8a0c87baf44507df94fdcf99353b107e61cfcfc8af071b3aa8cec7b34a542bf2ab8ea0bd9db67d66b428c9a6c14458 + +COUNT = 20 +QCAVSx = 0483ad7382e348afc7f271d50d8d39b814b7d6dc0c562a6ba556568045bd2d620906ab1106f9137ff725892e8436a8cd7b88892a32f19ab269e2ad30d7f0ec00e3a052fbbc466307 +QCAVSy = 041cc4b0f195dc73c4a8e10605f2a382923abd2381f24e4abbd401e087c50d18f6dab01a25db7e89dfff68c663494fb4d087a816b85444d882bec2ac25e42fde78ebcca79a6fddf0 +dIUT = 00c85e5d2ded5bc3b6b553fe0a02311b72bc5cdc8e96df179ce57511c26ac9e873fc1f76cdde9a7d8e52a7e9be5c7753620331e8977a98902b48ae9899ce8a6a6636611276ae2383 +QIUTx = 0289aa5209fe7b1ad7b9c5e0e630ba5e02929ea1b1f114d30a0648012bf029e066453f2d28e1d503665dd0833f0ba37e4583b434dd9956100a1ae6e54f96d9347d806741d3a76e31 +QIUTy = 033afe87b29edef447ff5a02e63f64905b5f53ac856cfd7755ad542812ecdd568e8ae1f9d32fea0f02018dcfd0e16d6a6a2797b7e3dc855bfdb6b0d0b2525e143678d539bf8c0672 +ZIUT = 07e1d202a54d34020939f7aed56931f21b206761e4fc79b9a7b320f81077be322ae7809446b5b3ea701618ecdb0a1796ab80407a281bdbcb4d580131b61f8743bfef7a4d9c5941f1 + +COUNT = 21 +QCAVSx = 07a5e8eb4968497a11b90c60e13d5f3c61c6868573a6b6db7c208a856d54e74f4368e28100b9e0bf49fc3104e146fbda784623a36d9f01f23ebadfab04d7f48ff66506c698bedd11 +QCAVSy = 013db968fc7cd338cb8e3042a171fa306f9ab6f6c865ddc5ba5fe994a30d8fc1fa127191f08e4e14b9aa086a52fbcaa46d22107fd6df53108b53fe0bb96bc974c03a8c6528f9792d +dIUT = 0053a48cfda8ee232cea3549927b22f375d6096560025e213161d43eed02d07365d9ede7c93d457ea51ea2369e87463eddbf25a06bb1f080fb4763074a8283dd3d69f1de865295e3 +QIUTx = 04790f9db600b9a0a57e03d274a3d23a55aa0d86b2d6fa07fafe3c9d4c3393771dde89c70a6470a31bad105c21d4844cd7bfc3b59738f9d6c528c414d524f88e0c862e4e17aff454 +QIUTy = 05dc12db04e2489db8a46cdeff9f8d9d2e00d024f656c781eb4d2db167624b3a70addaaa158ca00601d4cad065917bebe766912faba9987fcc5fc8a78dd21643aa650e6a4a7e2061 +ZIUT = 07f49ee5d822b17e3f1ec9946fad8d0a0a6b327242afe675806b3e6b7541745e21cd1b70df926af057a9f8deae4cb9a1edc782014426152e8aa4cf6a4080dad4678dc8ff0d9e1af9 + +COUNT = 22 +QCAVSx = 013caaf8ce2e2321cf256f2b64aa89add6968c298624a22bd38ef94deb3a70ea44ce87a948ea56bf0ee9407134f8c97b17b1f54561ff7747e3f6b656f80d60778d05b8c4cbbbcf3c +QCAVSy = 0047a2dca3eb6754b0a9fd16b081fca497b29dd2ec9e6a7596d06b059c2ab18900fcc58715247276e390df1dbab26ba81235a4dc6738237fcefd3812b7ab436c926c50c600e6e907 +dIUT = 015a5e5946fe2c9cae6d412c618c1bd07724432b2f1dedb1327d8a99ce830e6b030f4025c14b4e3d1912ea9a78290a1cfc7d0189a30c614010c873146a182f639193a2912edcd04a +QIUTx = 03140887e87039797869f5d9db50d91ba69d0bfdc5a677c700610562f680d951a5e0517cb2f966367d48e423b046db4e68bc1c4b3183dc80bee126e89014994cdf83c4312a3e5ea7 +QIUTy = 07b8d706962cb192f0ed14c4da710d1b1b073fd8ca497a94379a7454c9c3d4ce6e5fd2e6386852a77c5435abb23536dcc83986cedd4512752f295ca500f055f462763c29fb678caa +ZIUT = 058cd5608dd9d64d4d822baeca123358a4d7e56d3777ecdf569a149c2f85ed35479eaeaababd0b026dc3b56aedafedfc8491040413f85b669d8512a3ef7bc8fe8706b5c7585370aa + +COUNT = 23 +QCAVSx = 0743b3c965a83ee9f6bdb9901a1dcc1f78196544a88b9cf8117f89ed1574e5c5d804fc451112c257877e12b0a66c693c6655c12bba4535d99d62405f4a9dcebc056d8b7cbbada120 +QCAVSy = 03efa58aa3a8c6a24f43c5581fec041442ae955275dbc1d46d10156059d2637b9a82994b024a247d2a66724ba90d02787b168b1fa1f4b6749645406c438f8d316d670f1e0d8b0301 +dIUT = 00bd58e19c05df7e99bd962070e0b4c7576042858447e023b41bb29745a89a4874dfe325a15d38d2fb9e870f419dd15f4aaac65dbbc5ac2c540f57cdb0e45bc86621726d922d14aa +QIUTx = 01e4b2a277ddd78f2f119c05b6ae1ea7a2a744961e08940f6569ee8808c53bc7a12138064ed5c8c222eef2774e70c28bce3a6c05f3a654e121006ab62bc94381d01ca0d1b08234d6 +QIUTy = 07eed8cd7a8a3549b0d9ef8786879efdc9c0f4ce90b3991a33cbbb1d3704db93513138b19a50ecac880e578de21046f03a200048180884bc42cf9aafe58cc1eaf536d6d25f1541d8 +ZIUT = 03bf7a59bbdd688682c45664d20c19cb2d24fcca6772120cbeed1cde762d449ebf22855627eb6b2be6e7f7c0f0034d02686f2a4488549f8cb198e02b46972bcb88914bea66dd6400 + +COUNT = 24 +QCAVSx = 0722f1e7a0607750dae2d62c5d3d470f006c3254558eaaa294eeedbca8d30bf4abb955deb62e4179925f6cbadf3bf8776f15dcae3556addf797105a77b7f6f71206ca0e6ea91e188 +QCAVSy = 035d108ca0d620cab96b7cbf617d1b5ac06e37792629886564fd147c58e55e423344ff4f1fba4af0fe34152b384b7685caad15d3bc270e43422ad874e71e408a71a6c8a90d2ad978 +dIUT = 011463070fcb4a28be4e2a67c29c7fa48a4c585a307405d06a1a0678e909dd6eafb898662cdd8bcc019deb14e5d92d172ba1c438ef0f64d80107c7e8e68029f4e0aa814a1099ca38 +QIUTx = 00939398e463886f0dbb48a74f573a1215000668e10b57989dc300b2f9a8c08cd43d6cbb7f46ec77c1c294b23f86299027d2b93fd6eb18210a8230bf46e3921f182c9260c30847ab +QIUTy = 03d48ec633b9da1650ea762656b3e31f26aec07e7ca6aafc1ed7cb466eaaf3993e0467048c967bb1e9b4ae073a230c1e2f74e2e618666cf56a06f2b65ec3955b6ffbb06a908cf616 +ZIUT = 06d410e9ba6b8b87b00d0f676de8ba27f6afe7e308c2e992f318fc14cba0a447316ad86e8e6c1d3345d8e4035735232c2c597e760b8800a89a521567b09408f9c7be279c137c963f + + +[B-163] + +COUNT = 0 +QCAVSx = 00000003a647ba32dac71ec6780b0638a70cd24fc3bd4c8e +QCAVSy = 00000002e69e961541844a4aa33769a7bce710f6640a560c +dIUT = 00000003edae173de8fa0cf0412d6a7bdc81fdbd0617adf8 +QIUTx = 000000035466701d0b0030d098b6ed2343d355c24c907271 +QIUTy = 00000000d8bc02f341d261860dfb65f0cb7f0b488d8296cc +ZIUT = 0100fb42d177ffe6c31378e2e04e0da7376ffe8765 + +COUNT = 1 +QCAVSx = 00000001282898936486dc2e3cd1585f32d5544264e191e4 +QCAVSy = 00000005e9e98bb7499bf895f77f8fc8301d6e1c7a9f6191 +dIUT = 0000000178dcc8216425d4bf71c8f2925dd1af86dc04a268 +QIUTx = 000000011e49430cdd06f2e765b8f2cc067cd424e2e75485 +QIUTy = 0000000083af15b22cd7dfd1dff7396bf3f3038f50524991 +ZIUT = 0681c9e59eb7eba769f5b6f2b06ddf1efd12997995 + +COUNT = 2 +QCAVSx = 00000005874fcc8c484c014173102dcb70c624ee6108d31d +QCAVSy = 0000000049693f4edc714b0d0baa5bfc5d8bc6ac04089de4 +dIUT = 00000003ea1e79e52a070898d6a3c4e748e95ac8710d77f6 +QIUTx = 0000000137860ba3458af13c22af8225f561e01331cd87a8 +QIUTy = 00000007720356e15dc73f9fee7a1c021feca97cd41204e3 +ZIUT = 01e0749a21fc508f76dade85435bbbe12c448bd8c4 + +COUNT = 3 +QCAVSx = 000000003748d798f140268f1e718b3b23aa2acc0333c074 +QCAVSy = 00000000c42a927ab579696123095575ac949b07a7d1d4bc +dIUT = 00000001ad5ca9abc8bcdcc482995ad1a977e4727150bb36 +QIUTx = 000000025ae78311b0fcf369566a319f89849546aeaec305 +QIUTy = 0000000640eb0fdf520480afbeb9f2674feb1d6df482d7f5 +ZIUT = 0320398f7acf791e0d602d7b94742cce58e9fddbac + +COUNT = 4 +QCAVSx = 0000000380db3df2b1c0154a8e8cb304aecd581d35f315cd +QCAVSy = 000000071534ec2e8b357d9e069d7f1fa98bd44ed8b06826 +dIUT = 00000002d28a8aa1d89fa3e5e596ffd1808254ee17a0d0fa +QIUTx = 00000006e6c52494ab63c89c9788556f716677f3b48042a0 +QIUTy = 00000004e98258b9c56f02d3edb4ca5b0aeeaa9daaa6fe0f +ZIUT = 03e4de43de85223d818e5be6549c29cdfa1afe1782 + +COUNT = 5 +QCAVSx = 0000000136e0d05b4f398b827e198046148b2f41573fc07c +QCAVSy = 0000000739934cec10572852e1f619222e2f5ec4e0fa5aa6 +dIUT = 00000002e170f7f4dc152fe4706f99d9be229e1317d82bbd +QIUTx = 00000007900dac251de8a944cf0a1bf2eb2efeee14676e9b +QIUTy = 0000000091e7df67f77622729d59b7e34b947127e7fa2e5d +ZIUT = 037b178aab014d5abab305e37deed7f4798cdb862c + +COUNT = 6 +QCAVSx = 000000076c3ae4a781673627d0e9bcb615f626a160a55dda +QCAVSy = 000000058c0ec8f2649c2ddcd9c24b643433b14d907c5903 +dIUT = 00000002923d2c802cec42def2633debdca759d59744d3e8 +QIUTx = 00000002cdcb4f91ed7d17768db80be2b3ac9e0956b1d971 +QIUTy = 000000032433f455a6cd253e91582d2f6f5a712655da1d69 +ZIUT = 00958b2aaa6061222dd248a6b9700fb6839dacdc99 + +COUNT = 7 +QCAVSx = 00000000d65f0516c1b3eed9220e59b3d049dd1153179ac5 +QCAVSy = 000000020bfe107a89a7360cd2e217534d6df298cc4bc458 +dIUT = 000000025b17bd6e4207d9fb1a3af02fd5db26af8348aeb0 +QIUTx = 00000006f6f5b1f3b18f45db4fb3777e6840fb5a5b61a914 +QIUTy = 0000000737ce14aeb24e0591585a7417b89256749f461de6 +ZIUT = 0393387e1dab35748f20d506a0e2b4dc0ee6c3ff39 + +COUNT = 8 +QCAVSx = 000000040d903ce2b30f70a6a03849b0e1758fef8887bd31 +QCAVSy = 00000004abd8bdb7c1327c99b33820dbe18ae114fb435949 +dIUT = 137e8132ad288923e64811e92298f5c0dcc95705 +QIUTx = 00000006f2cdd1d630dd731ed77f901c7b0e735515e26d4e +QIUTy = 00000001062f2f715c4d2af97bb1be8b6cfa2e3ee314253e +ZIUT = 0212358d3f8bce69b662447333b3edbbc9b2f7e805 + +COUNT = 9 +QCAVSx = 000000022ed24643f0cec68c8e4ad1aa2c4369d8aa03f594 +QCAVSy = 00000005ccca62b6dd1d316dedbd0f1d530bed6e556b3ad8 +dIUT = 00000001c48c50b7d3ecdf3b901bad0eefc3e3826e3cea9f +QIUTx = 000000019175573117dd851e6eebfd9fb1e5a884ebfefee5 +QIUTy = 00000003adf37e4ded52573fa57c8cb2bfca6c65c3674462 +ZIUT = 023472fa59846f7be07cf060cdd69a9fbb27d4fe44 + +COUNT = 10 +QCAVSx = 0000000793f4b31172eee66f2769eb305d03b5c3f7cfff8b +QCAVSy = 00000001f3ecec6bbda9bde8a4da14db3e5ff934b9835b17 +dIUT = 00000001162d9ed3a660455e8c015d1e45d1515749a3dcd2 +QIUTx = 00000004283eb0e5085d198b378fc95f6fb4c3198b4d3c78 +QIUTy = 0000000107a1168f2f47b963e4b3a9024e0c357a5ebdf92c +ZIUT = 0173a056c4c9ef6707cd23928999c4680f42b71f7c + +COUNT = 11 +QCAVSx = 00000002ea7a50834602f112f6dd0e6d25f064f9d05eff26 +QCAVSy = 00000001bf3f69d14acc8333533a88c2e8824863a47ae027 +dIUT = 000000019a1d16f4a572f3c1b51ea2ace69280e7137b8f8c +QIUTx = 00000005cede96a70f714cd68963f2d6ca236269a938f311 +QIUTy = 00000006cdadd54b6f733c80934787e28c2ccf58b1227bc0 +ZIUT = 03d34f411a297d7c990fa4a83b5f54759607f9d33f + +COUNT = 12 +QCAVSx = 00000006dd1305349e8aa08020073a0de5afc5dc1b6a62d3 +QCAVSy = 00000003497eb7bf4089ef02cd0a5dd0f86bd8798a44c56c +dIUT = 00000002efd4400dad3cfad8d1637fa9290c4b758a3015b6 +QIUTx = 0000000513131b4bcb72ef68ab043ee84fc8cb03b6d8f187 +QIUTy = 0000000120b7d5772bbb17ecb1c9e80c36f808fd54a93aae +ZIUT = 06120aed8d4c1e506710e2cfb98ca2022e642ca89f + +COUNT = 13 +QCAVSx = 00000005a0e341118e69827d6a7f8282fbf0b94400f08240 +QCAVSy = 0000000423b993d4367fbf4f6504d9e09a64123a3b53d128 +dIUT = 000000012b0d64977cfc13b48345ef7072d1a3890eafb95b +QIUTx = 00000001b9363cf48735676878d80ce1481b8588683f7444 +QIUTy = 0000000768fa7327cd7252c8f696ed4947868915ada1fb5d +ZIUT = 021a58087968c5df57afd7c343a4cfa2ee8e7073f1 + +COUNT = 14 +QCAVSx = 000000001a923d6191634306124c1e267309b07dba32decb +QCAVSy = 00000005a3517f5426a3411a727eddc29a3ec229558368d1 +dIUT = 000000033ac953803d0446b3cda4ebd071b4eb027c11bfd8 +QIUTx = 00000005c446e9896ca44cca733e9f4e5b64afddc0537211 +QIUTy = 00000006bad1b2522692f970b38be6935dc7d1c09dcd206f +ZIUT = 03da9c0879219e48c3df56174898fab9ee5b0a6bcd + +COUNT = 15 +QCAVSx = 00000002fa8baf0d6128add9b902aa181c81e24298451e2e +QCAVSy = 00000002b93d1f6913914ffe1559c7c114c631bb6b29617e +dIUT = 00000001bd79145ae7f42c6b25d1c38965ec08fd27533a7a +QIUTx = 00000000e9d8fc3a026925c8add508f920fa2e5ff5282688 +QIUTy = 00000005b7bf631259ac7d36936c130ff206d820b13bde81 +ZIUT = 05b33fe3874d32aed99919265cc0074902e538fe54 + +COUNT = 16 +QCAVSx = 0000000353e2da45ab7c4930280c3edb4ba90012d56df62f +QCAVSy = 000000026931e30b97ff5ef7bacc0de4d9490708522e3b2b +dIUT = 0000000330ca1f5ad77d7a66d87423328020c91ec79f3764 +QIUTx = 00000005ba37d36997c4f2abe603dfe042232738e82b0b3a +QIUTy = 000000073c8cd950044972a005c6f1af8e4306e0ccefb946 +ZIUT = 053dbce9826af4d290036feb46875e975b7848a9c4 + +COUNT = 17 +QCAVSx = 0000000721670884daa8cd627638ec90f3448efb0f2489ba +QCAVSy = 00000004f84a983bec6b2889c8211bf231149b5bebcc75e0 +dIUT = 00000002d23140074d6eddd5bc099b17de12afb9ddf2ecbe +QIUTx = 00000006e06cc7c30f5ed7e686c3a75a1d44257770601cb2 +QIUTy = 000000030dc414c4afb390ed467af471aa9bd2b75f32dfd8 +ZIUT = 00d49b971cab937f40908913fe259849679ca076d9 + +COUNT = 18 +QCAVSx = 00000001d6319ec2dc5c08f0261aed0231418d6dc3d0cda7 +QCAVSy = 000000038e64953f7cdac71d052e55855746b43d44181b91 +dIUT = 00000002449c1b9ff09e7a9a03b17f5ff461115f5f3f1a7f +QIUTx = 000000073f9ddddc4650933deccc9546d392a35dbbc66a76 +QIUTy = 00000004de7558dde649f72322b39e31c8e29ce6f599485e +ZIUT = 0483ad0b7f8a716273f624b8979c19126705266e4b + +COUNT = 19 +QCAVSx = 00000004f167907bf4b98e8696d81da7d2c1056efa0dc14c +QCAVSy = 00000006cb9ab65143832b9cefd5d9ce69ec4db2edd067aa +dIUT = d08b95d9a4ce724ec462cce12701fd8c3d53fdcd +QIUTx = 0000000026a770d86e1c89ba7a86aef649ba7ea86fc7d5b2 +QIUTy = 00000001db1020e0f764df54a53c23c938cec98d9a77ad1d +ZIUT = 00f69dcb547119fc9b8c454335aab184c3ada5f1c6 + +COUNT = 20 +QCAVSx = 000000079b6d14c743271402d1323603215feb3c68b14455 +QCAVSy = 00000004e3905686a538c25a02bea92f42184021b5ea2593 +dIUT = 00000003808efe6ad50d250d87192e16499ce3259428f3b8 +QIUTx = 0000000013a02e25fc927875afa557bd673f65870459e671 +QIUTy = 00000004038dbae5c5e54084708a24bc3fd072e769c12377 +ZIUT = 01bc5ee5261b2bba55b10cbaa6cc3c97b98d00ffea + +COUNT = 21 +QCAVSx = 0000000772f42d272a057de0ff926c9f94605c6675d21526 +QCAVSy = 0000000602e7e53255de9bf58c057eefb79bce431b5c3808 +dIUT = 00000002ad232a7a41e6cc2495538d87b023cdec7b6e1f23 +QIUTx = 0000000549e30780d93f796fdcf691905575d85c66453bdb +QIUTy = 00000002162a885bea31344543f5d06191369dec6e70e967 +ZIUT = 008574d838d3de87965fc1b4343fe4f078588c4ea1 + +COUNT = 22 +QCAVSx = 000000050b2429460971739a9d6d5670bc6d759e5656768b +QCAVSy = 0000000492bc2d3f638d4978e4ca58ca5a4ef19c5eccea8d +dIUT = dc99b19f3d8847875190e9588b2bbd830dbd3a95 +QIUTx = 00000000f65d984d71dcc18bf172abe4d3993ce0f7cf324c +QIUTy = 000000001b49e6a2cf1173aadac3af6c09e966f31141abd9 +ZIUT = 04579b477a92ed961cfdb2014407e88e7716452a4b + +COUNT = 23 +QCAVSx = 000000017d52116f0c95587f1b7b06c76e98d99c82dcf20c +QCAVSy = 000000024ea22bdd990bd79e63e735b21282ae1b5ea66648 +dIUT = 0000000356ab85b04d0851b8f66b4a796526d3f3e3882844 +QIUTx = 0000000776a2e1af932d74519070bfa941eaa93e9ff5e97a +QIUTy = 00000005abe9ed46245fd0146250d2a563c46ebf7acd2342 +ZIUT = 035a8c10e64403c52ef8d17c5f4dead0df81fb1f21 + +COUNT = 24 +QCAVSx = 00000003a7ea10ba1d6aa545700b40b737951a9e736dfa0c +QCAVSy = 00000004f9352fb2ac2444e928754e3655fd62e3a42564e8 +dIUT = 7a7b547550c758a9de7f06e2f38e55f5e9e44ce6 +QIUTx = 000000045952c0b517e685cab09470327f9d4b212751b049 +QIUTy = 000000044a429a6efb04bcea0240ab5805de740aa61f994e +ZIUT = 000142615e3607ac148c4de8f334be849235d01cdb + + +[B-233] + +COUNT = 0 +QCAVSx = 0000004756baddefc3dc337ab27b5452eb10affd9e31f5b55c330e90f0f686a2 +QCAVSy = 0000012a79f65232308a21c98c01555ccafc7dce15c8fed3025a760cbd6c2327 +dIUT = 0000003c3ee474ac0d0bc1df567e3c35f5f766c5332b2d6730ff0e4d8e75aedb +QIUTx = 00000061e8a9b517fd05a026ec376616229fd8639a1fa76defe5398022f9d9c8 +QIUTy = 000000706b5cb08738a94552fee584b1372fead4af79040909fcf6f50084bbfa +ZIUT = 00e9f3d8c4f1bec0f920e763ea1bb7415899f01734609e7547dc425ec946 + +COUNT = 1 +QCAVSx = 000001186a028f9a18db927f63253c203eb26aa3aba0d40b1a3abc64e47a22ad +QCAVSy = 000000cbd8b95f89e421128bc73a43c5cc254e3867096ab89d788b2ed3b90a96 +dIUT = 000000aa41a5a01a4e66a67997b0be16f56b160b0561ad07f3af2964386461d0 +QIUTx = 0000002d91402446557068c40fc075dee93916b0f1a9392e47e56b747125ae1f +QIUTy = 0000013ab0915e4acf779516826fa1dc1885a06abc5d0809c92240ccf9c3d8a4 +ZIUT = 00f1fbecfadb158d62eb1109c085124fad67a8795b58815eb396c95db4b9 + +COUNT = 2 +QCAVSx = 00000093bf85621602238e98d09c98828d51a49460362c23c5141d3d1b235296 +QCAVSy = 0000008497152187a8b3b2958a1d0a2eecff4492251807cbfd03d5f2685bca37 +dIUT = 000000c6677c28068b462e34862ce6c9d8ad8c1b3c7efe80cbab41da419278e4 +QIUTx = 00000042cb311dcff2482a2cece696c1eb64c69ac2aa599209a5c18763a3150a +QIUTy = 000001b0329f36c135d002f08be3e3ffa9da18c5d6a70c360f4f871f12bf3f95 +ZIUT = 019ea831c51d88a7cf754495a1c474082ed481c8eb83190a77defb09d479 + +COUNT = 3 +QCAVSx = 0000004549648692af95d88e4e1d4914d8c9769aadac5a0f75783265f3eb9657 +QCAVSy = 000001b094b4802f397663d0e682fabf1c94c4e214e48327b95eefcb92b771fd +dIUT = 0000009c61024b3dff219b37f1be6701804adf247414448dd0f0dc51293ac913 +QIUTx = 000000124120d8409850e71e33c9e2d9c40ea32bed11d77804786e9b076892ab +QIUTy = 0000006dae1ba4817296ff63073bac9ce065d4331ba1a5c899cc1c07405dae3e +ZIUT = 00088425fb04c2ce408f08d81385a322703a077bf00ba0791e4e79b80419 + +COUNT = 4 +QCAVSx = 00000073c5cf4a01d09e3b41b5e7778c6b9ba52daf88fc404f8e2fd09db4027e +QCAVSy = 00000070391edaa76f0e3970394cac0338061058858c3c73d5cb512e5326304f +dIUT = 0000006e69d064dbd9a794f68e699a0e941bdda6a53a1ceca3b3db82925b6f8b +QIUTx = 000000c57d61fcb1fee90d5d8c97cbf188c8ef8259b0ae2587ecf1ff8cd2e2fa +QIUTy = 000000b8ad86c6805a4ab44513dbba2f5098b9e9c1e05b679f52937aece2b182 +ZIUT = 019b5efb23bc18a4f18c22fe2fd5cdbd02372cabde5e5c9f4b4f9a49438f + +COUNT = 5 +QCAVSx = 00000123a6b081a761e86c042e1914af47f093b2655543e564584b60642539a9 +QCAVSy = 000000518ee3c1ae546404df1eccd69aa6856431d1c8881cf0578cff4eb8c11b +dIUT = 0000005ae5de30c7c3171813a2dd3e3ea2c5ceaa0473c39457e9929071e1a420 +QIUTx = 0000017cf9fca05d4a55e4b68fee7a3bd43f047303f2a266d81bb5e1ec7e2558 +QIUTy = 0000003b0af43de05003397de1d4b27827ad2fcd675cbf61a445a1ec40a569b6 +ZIUT = 01f36d9519c3d47f030eeac3338db583b96fefa551a4b56cc5567f2d9d7a + +COUNT = 6 +QCAVSx = 00000141fbbf2b361c2c8ce5edabfa22aa4755581e5b1a66600362a0ee7bc574 +QCAVSy = 000001aea3cac203f8c780475a2609b2970cc86f96ea4011c348da8262b334aa +dIUT = 000000c68796955b68b5f8827e38ac0782b1ac2c4552caef0c60958467cd85c1 +QIUTx = 00000034789fbc60f1086034c8f2ce86fd4aa335194c9146890357dc475699e4 +QIUTy = 000001d37f796327f71ec31510468463d0b2905488a4a60267870dfee567c250 +ZIUT = 00e54b1c916ff3ba1aa0b2b99f0ebde4f1a4cc6a10d959bb2f7f4c777b84 + +COUNT = 7 +QCAVSx = 00000096a0d3f36e8f753791074cea697b2471627e0c9e7a294a029a9d3b9429 +QCAVSy = 000000b767174a2920b62f1f02fa79097845d51d93e0c8104410831a2dd55c3c +dIUT = 00000074245cc97dd450935689ea3fca7b0b30c1d67ce6e8be17cb1192575caf +QIUTx = 000001e1c570acc653c706fd7740194a554de7f3799a12b820d6a941197f761d +QIUTy = 000001e2225e8d0d41c808f6ead7af320fb25fed29a99098a0f0e11cd869e53c +ZIUT = 00bc0dcf7585753cc79aa412d2740b4b2d1c644fc9755cb0550286bcf68e + +COUNT = 8 +QCAVSx = 00000166be2426b3bf8e6d05a24d7d1f2c0e329e4120cfc8e6ff52486f095586 +QCAVSy = 0000007371e288145fc25a5a9cb5f2a386034f2f328c6eaa24c8b096e8ab1f0c +dIUT = 00000097beed4b738a6205cc9ea046b448b523128b93101a02d964435eb17806 +QIUTx = 0000018358da94079a700a10b20a2325d33d80e95eb4fc4a98101c312635939c +QIUTy = 0000000c4f442d0071c7bd1d217cf235fd031dec309e85ea2014e68b50fc2ba0 +ZIUT = 01b7ef3148be331115321b1c2a68832fdfb991b26224a60dddce3e060d27 + +COUNT = 9 +QCAVSx = 00000181f3bb0b097713277c5f3b46cef02aa9cbe29ab95c76e9b60a1f7a51e5 +QCAVSy = 0000002e2fb672d72bf78f7cfedc40d3726c6b4fb585417c7476b655e32bbd3b +dIUT = 000000759c55da55e1fdb5ba7f8b893abaae5925b9b08184a3d554957acf3ec0 +QIUTx = 0000002af25f810e18a81b69da254a65b8a6c7ab80ddc27c85622e2348add132 +QIUTy = 00000128b753e4b21a8c3acf85aab92a9aa6a7b33f2cb69d7024baf8e8b07142 +ZIUT = 0041249865c913b287a253150b207e2682efd96057cb0709e9bbb48c0fc9 + +COUNT = 10 +QCAVSx = 00000065aa4115e59e6045aaf99ee1beca1fab923bbdc919206e0931620ba996 +QCAVSy = 00000128d00b775899a58a59bcb2ab79d609e2dcda98e6523bb67168554f84e6 +dIUT = 000000ee639d89f0e433c075e2ef57cc243581e95b261f8a93b8ef6f5ebf8015 +QIUTx = 00000006638f6bcd85043395d01d767ff77e9d677f37ef400f2e16fee86dbaf2 +QIUTy = 0000006c12496266debb1d8343b9684e27c5f7129c17024a8e6704672a5f3d63 +ZIUT = 01cf480fbc2be2c2c4448c88890972c7ff9cbe08a75e26c3809596b8b5c0 + +COUNT = 11 +QCAVSx = 0000013576e700f36367fb741842f231889f36822aab2933c245eed57b9dacad +QCAVSy = 0000017910e9071a3e42e7f21b363f0e687d289810a4ec29c36ece14854e1dd1 +dIUT = 000000929b09b67b29aa4ff15d6779a1733065049faeb2c227012c49f277ed51 +QIUTx = 000000ca0403d95d85f0cb0ae4d2aeae18e187b79c201ed68c14ad24ed003922 +QIUTy = 000000cf6b0a502b290d0aeee820661accf6ea597687c45c7f93a773d25f62a6 +ZIUT = 01ce8abf3c8ccfa30e5f35ddb75f5e106aab1e67086156a1ededa1717b77 + +COUNT = 12 +QCAVSx = 000000e9fba71a64abb177fa436cb9739c9f68c0155adc897139c1bf3df99a53 +QCAVSy = 0000019af1131be47de08870835da14946fed73034179f809298d0149b16dd36 +dIUT = 000000e27af04efe2d86ffed6ecdf718fc0b8e049ed222e7600c3ce31ce4e97a +QIUTx = 00000145ec0db5fe62b92547792012268af21ba928a8fd98d0a1dee3d8fb2559 +QIUTy = 0000010a031cea56b183e93093008ab705cc9099e5b65c5cb4407324b96fee90 +ZIUT = 0025df759a20312361b9f6767efe8e8d69979e34639469a91fed9fce04f8 + +COUNT = 13 +QCAVSx = 0000011f994a416cc1990b8c61767a3d68fbea73af7b48b655e47470fccc791f +QCAVSy = 0000015de988835d6812f0bdd7007a895971e1a06f4d22ce1303c9f55efe647c +dIUT = 0000001a726d7b9928691eb0149ca8f0edee47bd0c734113ab6003241ee193de +QIUTx = 0000007426bfa8878fe59b16a9b8c63910a1e2fbc6b07ba995ba04c31402112e +QIUTy = 000000944e9616676cb2fc7fa0f9e1b87a358748243e80fb62264284645a6a4d +ZIUT = 00437ab4a53756ff678a1f580c0fd1f33b23021d62060808453b4aabe627 + +COUNT = 14 +QCAVSx = 0000010513620aee0d0478872438e99b23ea4900153f9366eb17d61bdf35aa19 +QCAVSy = 000001136dfbc8401bbda0d675ca06a0cff6bdd467c0ac9a978293300728e7dc +dIUT = 000000f459c7672169c1259e4e199333964c1fffbce75ad30dde1264f5cb86d1 +QIUTx = 000001b44a81895d2105fa16a6e09526c09ae7f6cbdbce210870f4e33db8b6f4 +QIUTy = 000000b1e072c62a2642975f06c687c6467da295ef93f04d1c5494a624683c80 +ZIUT = 01ebd55823c57d1fc7b36cf1ed2051ead64db6d114014d3407186f50d957 + +COUNT = 15 +QCAVSx = 00000035dffec9117ed7167627a24a3ebddd49a3f45d91ad18401d3d449b2fef +QCAVSy = 000001931754ce5cf557a1c1acedfe5e9a7b0b91f81643da8586a6865885f042 +dIUT = 000000656a47b8772b08b1d907c823fb6c45c65f9f18f8b43f3a61e6c74611e1 +QIUTx = 00000153cdbad92eb8d20da0c1c7aad46d08336cbc976e8d6f83947e4f4d6616 +QIUTy = 000001c977b97a5e1205ca66545df3a526b6e325e087c0e070839fe7ec1ee788 +ZIUT = 006d07f6e08b11a060ccec43b07ca7d9eaf6c3ece06f4785519284bf6f0a + +COUNT = 16 +QCAVSx = 0000004845ce661b1eae34c1699f1bfe38dc87ef28b8b0a7771ff366dc21d863 +QCAVSy = 000001096b1954b06eaa7073ed939801aa2974da1d60d66e97c31df0f6876faf +dIUT = 000000f14f5ec4efaf86e43fece65f17ff91b1a8d61be3416eeeb884f4e2d14e +QIUTx = 000001d9f8c01e9c20f6150ec7620a75e39e96f9247bece137b0365bec54254c +QIUTy = 0000006008373b9e087805294dadae00894667fdb9f6b8a4d16295e5b9d21a6d +ZIUT = 00aea594f092b4052f7564b2e5651bcf43ef7e336a064d6bfb1a89cf5e51 + +COUNT = 17 +QCAVSx = 0000014734192165c96fbdb794cab1e2d1ef111e1a20a7205db01aa803a032a2 +QCAVSy = 000001ecdfc3940b7d0618cd6315441751f663df74d356492ef934b4ba2b2ad1 +dIUT = 0000001fa5cbd88a146f6ccf5f79dfbc70868fd9bb4c8115976c96270ff7bc5e +QIUTx = 0000014d276f4281cb50a26b29ec81fced96d0e909994b2285433855256d58db +QIUTy = 000000ac4792af62a0dc4fd4eec384fbf3fbb82c8347486bc1eb1338bc7f3ab0 +ZIUT = 0099d6d076e14ccfee15ed7e7ef384bfee12deba8c9ae8f6cca3486a1494 + +COUNT = 18 +QCAVSx = 0000007e1f3251e2a0aa6de1f8df86b85ed9d11da5eb7136add45ea7d25c867c +QCAVSy = 000000d96281e0756de9daa55d2ef6573bb2fe2dd09b71d91191a5a043bae0f3 +dIUT = 000000f58684ea14a68fefb8cc26b267a13419c62d7261bad14e5368a9819a18 +QIUTx = 0000009a65a85394070fe0e5a108164eb289cc3d77ed0848fd57f384e62caa20 +QIUTy = 000000e7f56f2c27be4faeb20e274c2604c6dc2d88597030ad2164fad03cb904 +ZIUT = 01b1e977c43afd203132c085b95db0e2046a4b6ac2c046ee9ad665050578 + +COUNT = 19 +QCAVSx = 000000be1ee750f2712b2acb20c45e97357c50db3be895b33f830c71bc9f4f3d +QCAVSy = 0000015fec810cdb179fcd1ce8e4dc1a2499e40de8a4a49a9420f00e56110cf4 +dIUT = 000000eefb24789b32b436ce39622c114c39a6cd1e58ec9443c8870e5ee2f801 +QIUTx = 0000013fb1ca9ed709bb386fba02cc7862fd6c64e1087be5f61ea733946c1634 +QIUTy = 000001cb4097e44a730700debfe8143fbf9bca3a3d6c46985a27cd5043b2ca5a +ZIUT = 000e4cb704355cba1b40cee3da102cb048519a91b4c789b3757cfdd933aa + +COUNT = 20 +QCAVSx = 0000015c2e2ce0bc722cea4cbc7c3352cbe0d28b5b002e44d93705895d791afc +QCAVSy = 0000014f616983ad08e745315c4767b0ae21a6fd8a629c258ce7aefa4c17a8e0 +dIUT = 00000017524d506616bd205cb3978bc75e3a3476233e49b6dc206f9711697557 +QIUTx = 00000150a17327845e7bc79d8ece12930dc2b77654caa1082b57b0cf8e05b1ac +QIUTy = 000000151c76822d8df5effd8c6943395b6a8d538431d42e846e9ff8de7eaee6 +ZIUT = 00d8c13bc5e819c6101daef3f6fb5be6bccecf233c4b7fc65054e8e8d3bc + +COUNT = 21 +QCAVSx = 000000bafa9bba92725eef0c4a0afcbd4263e55f5155645b5c58a96bc3e9e965 +QCAVSy = 000000d1b3d0e35d617e09e078c571a5f41ea22dfd112d67a94d8dfbba66e9a9 +dIUT = 000000a6b05d30a703f1179a80f8a864b34ca15c453e82808a1095e435e9bacb +QIUTx = 00000093b3252251fd9d6d9c81d78cf1f134cdd554d63c2a1e2f1afa14e2d4e4 +QIUTy = 0000008aeb0a8ab3ff5e4fb023f7e1917f0108890af11abca7da027fadacc3b4 +ZIUT = 0129af50fa085133771753f297a313bba0d2f5882e7634b7ef5adce760ff + +COUNT = 22 +QCAVSx = 000000798bf5ab761bb6acfed0cef1cd71b3ef46f2504323cafc4081592dd6f6 +QCAVSy = 0000016277aeb3e1cac0121b07d9378a3a0cbc6567b48423929e36dc855e9d1a +dIUT = 000000168d09809eb9f6acf31134eb5eb1af966e212b9b6be68cfd22401425e9 +QIUTx = 000001710a05f02b5505729516b1ac73d45f3cf08f1c5134d2f73d12570243c9 +QIUTy = 0000018611b10dab507583f2be10fd4296f537d4af09576f96979f1eadfe291c +ZIUT = 0077c4ea1095fadc4cb4190a3fd530c7d15325e5d79b8e8a2b708e2344cf + +COUNT = 23 +QCAVSx = 0000015f723da9a38c2da5062c17d0b837522f7c69c793f79c17fb6965d44a03 +QCAVSy = 00000132b17760ac2e2bb9f813ed7790c5cd3aa0d38ab64e2e272ddf4a4c2c1a +dIUT = 0000003824f71ec3255bbd03642d782cc6794e1e54aa8fa5f2a331ee13f78450 +QIUTx = 000001a4e35a8c32717f2aaa3eeef177848e580e0fed6c8096868f6acc4e1c09 +QIUTy = 0000013727604e81d3a9d93d243fe79e2db8a442334a8ea1852b9f83cae1bc3e +ZIUT = 00d9eb3c79cf442595dad03ed4a38daf358b97d5dfc01cb61ff200a47958 + +COUNT = 24 +QCAVSx = 00000051b70bb8b8e2341b86821d54b974b696bda443acb7ea65965d27d2ac70 +QCAVSy = 000000c7784eef889c471c9d26b3e0de24ad2b4bf8bbba6fe18f51a412188058 +dIUT = 00000090adc0b207dae381622cf92e04bce7479180ec6e1771662f5c3179bd99 +QIUTx = 00000106adbf9bbfdb3083598a7f6db2e91d2e7c174f705fc216631b7d05edf2 +QIUTy = 00000190d84ca6f4695fdbca40d26a74998a05c3d761dbf08981b645c0ea239e +ZIUT = 0124c19cffc0b9549bfa378a548e8ce11ee7fca28d2d898de49ae1f2ff61 + + +[B-283] + +COUNT = 0 +QCAVSx = 02504e1a17819d39f010a4a69a0568299402b58f944a384c7d1a62c9c93ea4d1ff300e13 +QCAVSy = 0265132f7b4c64b74b9179ed0f2e211f4328d625405022f554170da932b80fdf7c1aab12 +dIUT = 02f43455842246a2cc8ec068e9d6c6e4160f6ba4e3b5d831d93c1daa8fd3d5a9660c7bb1 +QIUTx = 0561e495563018169804d4c8e2435b4afd85da376d914b69d39246f8e06113aa32e642d2 +QIUTy = 0781a7f59de7f42f5f9d6c3481f33fc5deb357c6ecf4c758e370d2435de3d8ee737703f4 +ZIUT = 065194e26090e74047ee75f13f9769d20e1b52189650011e283daa090732cc53755dc366 + +COUNT = 1 +QCAVSx = 01623a9675e8c40366e26131e47b1af06c8b33acf5e92f54644816dcb844382c944cc21f +QCAVSy = 029d280f4d4c0c5fd70f7e24095950128bea3cae3ca46f6a5f70b739fe1a990268804e38 +dIUT = 02b941e692e0a984c5ffa883c9f9f8256a43ab1fd1ad9782a42e429a94e910e482b91c23 +QIUTx = 07b90af116b737d9008e4c18f6ad539d29ee1790008a1daf2e856fa672eca4aafc96ca63 +QIUTy = 06aaf78d0f20657b77b97cca30eab79b679a3aaa90b10907f979cde988ce718491010c2a +ZIUT = 075c535cc70de19c92d7314afa2f33200903431f6990ad40ac31dadaf4e492a799b75b05 + +COUNT = 2 +QCAVSx = 07b8369728432f7528d3eec8a6788e69cd2eb88162c47512742ee0f027ccb4157a28a223 +QCAVSy = 05986eb7f109aa1f8556eba2bdc88e4913b65effb944eae639636cba7e01dc3718bcb361 +dIUT = 0287de172ba50f327bfc7d5a8c0156d25a1f0b9f71d389852f2e3b587406cb74ef3bd041 +QIUTx = 00a03490765fc90c23553c0e2b79dfa232b51a73f21554e5eb18da4c994d925f8ed2bbef +QIUTy = 0304ffd41c5b0ab2a70b82188e8f1578d6ab7d3ce3ce34fa45dcc32207f163e91c5d6814 +ZIUT = 02956f63d48a49a330e2068955cc2886dbfd5bf72a81b10ed83f2d758dd315eca172927d + +COUNT = 3 +QCAVSx = 073b092a2a4d7c9a17bb88e75b40a9e4e43b99813cf61682d49b92905c2dd606790aed39 +QCAVSy = 0566ad452a2d8ef0a327ce8e2856146fecaf09e4431ccc04256a077f60701ce4476b6dac +dIUT = 0153bbb8a3ce4a1b99960f56186ab50207f588f30c94beef28408423ba44fc875faf38d8 +QIUTx = 04f2c2454899623af13b65820aba145738407f77186abafa52d24b35bfdf5808ffeae076 +QIUTy = 0111f448460ad2430aaec788de291548475a1e5836dac520d8e493c9f601275e70ea29d2 +ZIUT = 068a3f6938c44b797524377508585842c6a7f1af5ffe9131dd3ff786ae56e1739345d3d7 + +COUNT = 4 +QCAVSx = 0455e87bc230ce7fc586312dd207c529e47e3c74cc0ce5d073fbf4b1c957f8cbbd9113bc +QCAVSy = 021ffbf62fb2531db39ef2d0bdce0d9c141c92e9cdca627caa39b593fc4a0210e8ee481f +dIUT = 032ac0dcb9aa3972401f9f58845ed765da36b7d6f77355779bfb2439827ff3556a75781c +QIUTx = 07159c86b9c6adb2160c28d86118f84564a90c149ede28329463677a4c87729f897c2f98 +QIUTy = 008a78167e1690625992b0efc2e0ef6f6d61e81837c8ecdfdab51d15340e37e7d8d05120 +ZIUT = 019b48d5eeaeb05b58801ae8f345ad9bacb91daac885e506949b849ebc67bcbfa308aab7 + +COUNT = 5 +QCAVSx = 0652ccc8921f439af42a2301236b5843a42f1fd99ecfe1b4134c3de014cdc76035347cc0 +QCAVSy = 03341d80749f1a5ec9f7ac6252384fefd38b6f2bbcdc18febe86c160f5e78c003f066e06 +dIUT = 02689bf21475d32fe71a7355efd9a7787caa9545ebeb853e5184ce42152429051f40cbc4 +QIUTx = 00d7e5bcfac578fcd728180645176d7e088b68d330a209f18b968662fed16342b3921a20 +QIUTy = 06f750b3b5e98e0099b695965aa1d16475d1074f9231127ed703e2696d4b56afdebbceaa +ZIUT = 061b3bef1766460f6296ed47d39ebf5a710d202d2b7e7cac0f0d3b235405eece99aa30d7 + +COUNT = 6 +QCAVSx = 062331b933afb4384fa3a4d224551ae8120bc55fc7ea73f2be749e217afc4e1ba79e760f +QCAVSy = 02bf51c44f8361c3054cad640f92446fe3820b063cf4bb22ca17c0a274fd46f50504fbec +dIUT = 01052042988dddf470d0a2e36fff5b93ec69f4d240a8e37c064cc4d599467ba27af3c9f1 +QIUTx = 00c7c9ff77e018b8801bddf886702556b126a6d9a1831a1f60f35872e524c134d553e4a4 +QIUTy = 0035d767b58b499d9fb54562c3830411af59e7088a4a3333d5dc7fe5b0f7f1e1c5e3ac2b +ZIUT = 055d579458860a3dd92ac6570847632f04460755c22a4c432cf4dde9611d2ce1608ca185 + +COUNT = 7 +QCAVSx = 021e82d6af6d321198176ff8986c2bc786a0081326cc85f026b71b32ac06c0bae6b4cba2 +QCAVSy = 01e9733fa9d29961269420db24edc0d5ae285d78c9ae14b38b1019f13652f190277dc47f +dIUT = 03bb9ad5fa552d38d1a77cb553c631e2d0940db6b04f0bd7011ea735be50d045da9a9c1d +QIUTx = 0687071805c25a7d0b1739f7cf681b2f295c4f9d8937351d21d1d43f634e9a57105bf127 +QIUTy = 0633ba21872e379c50e448372b1c0e65e85d07edd712d7dc06fa69a299f6037dece660dc +ZIUT = 054fa7c6c84fb89e5892d9194540860ea31ae2b6e37a86971344230ea512a3f6c0569216 + +COUNT = 8 +QCAVSx = 045d62d01db5ef173d0cff315a92a9a105d1ad784ff9b08e721f3580e06265ff538a194b +QCAVSy = 06b764c1ff76985496b94451b756c4f30fdfc638d8990312bbeccbfbd73e8c5a855adb75 +dIUT = 0133aa445dc80d7d5a097d1da11d510e6571a783b4fb235402717d68ba8fd1454e6b319f +QIUTx = 02d26e46a6ed9fcf1d2f89c63d80e0172dedb4f5aeddff092836aac8599094885557ead9 +QIUTy = 07d6713974701c160aedec8f94e6446bf7d3c790cbff8702cc7840a7818e5b626271f723 +ZIUT = 0353ff03afda3772984aadc4000e1275656607154b06c3a59c664945fa6fde1c255ffa86 + +COUNT = 9 +QCAVSx = 04a561b5184aded9c7bd9868f3043b5e2de51908f9c03d5e6b08a3088bcc50ee3203e263 +QCAVSy = 05815b579ff5dec6fac977ba7088b333bf4c0231da021874ee00d71fe25d3f4d50a57ac3 +dIUT = 004661f107a9b570045ddbb0738ab69b1c17a9acc11da5dac7fd864b3dfc36a25282d6aa +QIUTx = 061babbefee5211c4917506ce5f9f9e3d1e52b2506f38ca096e1b653ca9fb69f46105702 +QIUTy = 0014bfd2ef228b5a03e26230c1e897ad081a704013cee55166ca46de395fc52f5d21203a +ZIUT = 050795ba093d2e02398c358951f20c9e3b4f60628a96a4d0c46cb8fc0005e5331b38a09a + +COUNT = 10 +QCAVSx = 01d7d7536cd8383e1c0b1b8aae02baa9fd2c4e68b21808c1754d0b151361157f81245930 +QCAVSy = 073034da416797da95a3836eef27b1fa271f59a434848e980bad2fdd53ffd1e366ff6917 +dIUT = 0036bd21f84ab9db6f4bddc94635f19f80acb2813da5399e0777832c2febdc71862abe33 +QIUTx = 068ee3245754d51df7780046af39acb407c4998c620bff94fb374faf4b498006eea0cf88 +QIUTy = 0366a449f09ecfbaecc49d880307f57246c11c5bea00af42718677a8def15e5926da1822 +ZIUT = 02ab08d63cdb4be2502558e67eab27570f2d029e7f981d153b973080585d01e42f7187d9 + +COUNT = 11 +QCAVSx = 02042f5a3fe5e3d3335bb7bcdb9dcbd8716ed18d7fc2ff4297bc1feb7cca310022e2213d +QCAVSy = 07bebb6c0e046d5afdbfa87ea98ca7f55e9cdbb055d0cc549b4458d6998bdbb345177388 +dIUT = 016597ae6e49e79d069034972a63525a3c3e2d2c253b9e1dd3f37816812cf54ad65c546a +QIUTx = 050ea073522dbe51408f85f0a6086bd4c8efe572f80aadadd7e70ebb4b728bfdbfd4f1bc +QIUTy = 07da520017c7ad2916a2719b8558958f77c712d352cff9c0ad99fbc98a0e065eb7ac7feb +ZIUT = 0599757e3ffeb484b32d3b47828b6823d46786d35477082ceacf3a5a11552394fe58f53b + +COUNT = 12 +QCAVSx = 067afdf788f8f4831c3c7d7604d07a5bdc59da42d932731faf5eaf0753280966ab693790 +QCAVSy = 001b39d1d872b65e31251c1f584e4fe3ed75d53ad90e836fe90c8db94fe77cef0bca7204 +dIUT = 015ea8567c7b82b483fa365e8e681c0a635f563a1c81470b4dfe44f194fa91eb7842181e +QIUTx = 07afe2b22b54fe895c242c20c054989fa804e591970dda8a7ce109d6bd31b6daa8f2fc74 +QIUTy = 060733bd5a4ea9b5ea7090acfee918106b7f25272f3f7cb36eda38bacd21375610cde928 +ZIUT = 005e331af55e96153d8a7b906a4a19016a26381977b49f80b9d70db099053c6a3b8e80d5 + +COUNT = 13 +QCAVSx = 018866a4fa2f7c2534e563a291de871a8b3052a674f5dbc23b9dea0e8cefda06abc32c8f +QCAVSy = 058dc4cf1bf985d1b566970847cba6b8a4f40c7e62a5808b0720bbb8cdf3b4531e380be7 +dIUT = 002911d938d9508aeccb9877e127d1b1461acdaed035f20e0f744c774f1c72703b5c4b49 +QIUTx = 0386bfdfe60373be114b417c4dceb443223fde67c0fef29ed0f867b5a15f5ea0ccb4dcca +QIUTy = 02fac38ec8494cf7576233ec8282de384b67f0ca8048084201039d194c8bda4f6e0aff3e +ZIUT = 07e132ea71a16c7cc261b9d6ff6fc52cc490da616b07d92f9e591fc1e630d3442572338f + +COUNT = 14 +QCAVSx = 000571d7bef056089172f13423a585ab979f4b8f77e752c042c0c65263b476981e5f3157 +QCAVSy = 044bca693e9d3b1a7fa6ad42db7f36b1a65712d09ef3bb715e2640a182f436620686c0a4 +dIUT = 01662f554856c0208a31b195148f828e0b5c92a4ea4c033248bebf957b586b409ed59850 +QIUTx = 07055264c3de3a622d26fe7ad700bdea045d4b3ce718f4e6ae44cf376c3a96a2650b3221 +QIUTy = 00f45cc1138668adc8150d37c072bb4245660c18785683c7b17aa1fb8591ba6cda23657a +ZIUT = 010f26817098ce1bbd6743784d6fb65e60699c14933a2c8d854027aa58b58db9e66a53a7 + +COUNT = 15 +QCAVSx = 016eb4bbb3c386e0f42fb037bee478c4c0dbfbe55cc68e33fdb029b9e5e724aff4fd8bf6 +QCAVSy = 0251432f84568a44971e86ab715d3879e614e10725735ef8fb6652d079c7908f11bd1f01 +dIUT = 012c0100a9963ee17d7acf4ddf8e02d8ae75f3b99114f5366afb4a00ade9a3c0ee39a887 +QIUTx = 07794fa19c6b10d399e0f52d36f483c7851848e62bacf95b5af51eca09ad445ee19ef34d +QIUTy = 06140d2ee16cd0a6cb1960509a7ccc664be97644a95ae16f4a173d9a867015f0837f0560 +ZIUT = 00bdd8ccd1b40c5bc2efc1c105999350fefaf784710914ff639582f1277678699491140c + +COUNT = 16 +QCAVSx = 02417c65694d850c7c866f7e11639a5f8718ca9aabb392fa8610e2d5d7dda3375a607f9b +QCAVSy = 05133938dc99144d16ea7525c3fe4e32e320ed075b96527e13b2a99c9f27ade9ef9edcb6 +dIUT = 0345c276b05ece9e7c86811f8c8af48b22db41d4066275009611b880d7d2cef329c50e82 +QIUTx = 007afffcfa31c110aab3bb394530a41c416af566bfba8f159f984437e799dddaaf8cdfd2 +QIUTy = 065fb3c68446a74068bab7e36ab80e984707e39a4a143f5a46d646342f9f12f26a32291b +ZIUT = 014a83e747c90aec6101c0a752d92eef7475b00051ecad3d7c2e50cf4eba1ef3c80b8c94 + +COUNT = 17 +QCAVSx = 00c5d6149f87174ba37f4c1c6f67f6905abb319f526b7aa1be1dd205df930ab1c91bb1f8 +QCAVSy = 00c2e21e1206cd4bb5b622abe97ca3f252cbc68d054a77f8ebabad593fb1863306928bf7 +dIUT = 03afd5affa346b5259697d9217952afcd03ddfec04631bd995c10ac2583b0ca8d2461f5d +QIUTx = 06b4c2c3615b266543de189c896cff77b5557c782c215961ac7324185fc9a81098f2ebea +QIUTy = 047fef1960739ae0aee39a3ffdb82e890d4236fc22dad395d490bc3a5eea58e8cd03edbb +ZIUT = 00afd29e352779a39021536ea50c24fa264c599f8f8fe8f2ccf0615a6547a064d7c1a150 + +COUNT = 18 +QCAVSx = 0173044e5be63997d7925e431bbf004cf0f0ba85aa295a341e8f5857a120be89d77653e9 +QCAVSy = 0737cc049690f970824a7b0c2022439682c9d82f4f23e48e5f07fea96267ca3bd4d730a5 +dIUT = 03d5771f8485c3b8be62a56f3936513e3b631a561a942613df95140f473214df617c4c4e +QIUTx = 05906cc4529b220228efbb0545bf55ec03c86f87e2f4e3a3cbf404e07b73a5b1a5f528cd +QIUTy = 016588e480c4856cd2ee9aaf1e302812fbc0b33f527c29b77ce0f4878ea089d025a440c0 +ZIUT = 0477990f17d65589289c28e54a56a83bc05ef4ea6863c5ebe840925c9fbef64ccd6e69a4 + +COUNT = 19 +QCAVSx = 068587e69deddf4b55ac51f2a17dd8bfd6f94e721003214215bfb24b248281e75a3c6594 +QCAVSy = 044eee9c702bc4c1e210c7cc214524592568ac0f9fd67d6ea02b4dc3efb42cfbb2263dac +dIUT = 00e2c0c602fb132399ee9f31008365ea22cc1260f79fe3ae61089b8a6fa4559cac91aec8 +QIUTx = 06e6e318c0c4c0b661dfd3e722090ecd32fdc9ca3d168d9c7174c1d40adbb2ce672d9252 +QIUTy = 040bdc1dbc7b163f7c9551f47daa8294ac2dc4fe0d472c4e2f2cfefc95d523ff59e0e880 +ZIUT = 067a661346fe052ca27f3f03e75bbdfc8fe6d0d85c62c8f79525252aa241ae9de97d56c3 + +COUNT = 20 +QCAVSx = 03f1226d802c575f871a213b8150f7818bbd625663b73e720a737f071896086da0b14cd9 +QCAVSy = 07d1cb0ce19c98a63aaf7b314f1f5720e32887053384ac0f5eb69b6c471a8e3d3d16e76f +dIUT = 032d573fdeb85a4da2297896631414518d4ba07dc4dd72f731728890d0b44d36f2309c0e +QIUTx = 06f6ffea0a87bd9eeb539c48a3fcbf388159862259c7f7840e64809fbedb01a83812c0c6 +QIUTy = 07c795b8f2847fc39fa56c2de1e6cbbf4945087cb2e3b919dc776b4cc1c83e4b1c79b8ba +ZIUT = 06476b0620eef165941a4507e6d798d6f150ab29333c0552281b629170d3291b2f9b3f41 + +COUNT = 21 +QCAVSx = 02a911e7e6d2fc770d1eabc7df701bb119084a685900d22d52d598fe1d28fc891b31b487 +QCAVSy = 01b8dc6713ca453e91b2ec4e4d1f834b08eebc7e8886c3a458e70925242c4b22bf0b2053 +dIUT = 00a6aacb5dd3e835814f452d8207d15a533638f70e94f87c06196eff8838d48eed2e2674 +QIUTx = 02dd0093a8d419831f34bac6c60a570c51d08e699b181c964b667d0d17ed72a49119acd9 +QIUTy = 01a91976be5d5e037f22350d67ab7bfab51bbc4fa6026d347d28fb4407bccc40dd10a00e +ZIUT = 0746719f2ad08f8a8d6d6fbf15723f336285ce75d3a2fcbd5a0c54c577517a22bc264161 + +COUNT = 22 +QCAVSx = 07541aa51d7302e2bb557c27ec15d7f9c3ae3b76ec2f86cb95e8dead7fa06b578397f1f1 +QCAVSy = 017ea22f6b5474f0f5f0f4ead54172064051538d3e232a530dfca5f2a0dc67746c8bb1da +dIUT = 00112fb2ab56443765676a1e41b3cb91eb1a6790e964ee900cfc9295636ba4c6fa87aad2 +QIUTx = 03f507d99cc2498e2c7f54fb3c9c032f382548e2e3168fa140125a526048568f3bb3e5a1 +QIUTy = 05270df77efc7d6c55f9259bc82273c9b6bdf3676e13c3601b1b3022b962de1129cb3b14 +ZIUT = 03cda4b5f44b5d3dc248310f994419fbcbd665115d1876046652251ad4aeeb1dcf184288 + +COUNT = 23 +QCAVSx = 021fb14e52cd4243a520f630229b1dd6961c49bd96f43fa9cae37add84da7ae72dc3078e +QCAVSy = 00dd638bf9053fad6aa4ff2d330b8a4a20bfe3020f40b9692302d0b0a3c2d877856ec46a +dIUT = 03e4f1c4f30e2a8d6fd559f7fe8820e886949de87c01d8eb64c7b40f1548cb617a926033 +QIUTx = 05e3fc56ec162885c1291e4ae9c19c8eb2bb559eb7ecd5817549b5a2ea3a66d951880aa6 +QIUTy = 04c004f2ae4db4f748b437bc115e06ea2017a87798298dd6004616fcffdcc7ec2dfd6db9 +ZIUT = 015c892f95768a96ab5a4f9523b7fd466e101f63b88ad8f1fecb3027cd70aa00735dcc90 + +COUNT = 24 +QCAVSx = 00d08ed3856abef7d4a62243c92d6e670ceb3af32357fdb9d39c19175a10d1cbab36ce78 +QCAVSy = 05db9fad7fc8afe79c8b9ce48e62ffa0d46b805a9e5821e2761c25c0edba92b120b063f2 +dIUT = 00ae7eb3d40354f9f8fed18f2162dee38156cae0535b55370da3638f01668aecf9708be6 +QIUTx = 061e8858e368d9c917f129d932ddc4cca521ff419f1d74230e8aa5b1b3e9ce67f41c4b4c +QIUTy = 02b0d7fbdc636a3bc34bbdd2a89291b567b0fb2af32383868bd40d4ba4cac9880c2540b8 +ZIUT = 01adf5a96358e18d69fd383b4dc7b20dd646b68a5c9f1417bcf426240ca22b8f32bdf1a4 + + +[B-409] + +COUNT = 0 +QCAVSx = 0146989a50297be373dd665c45455a2ae4c221da5cd424007bd97f9e8e846f96740f3fa58c3c94129671cdd4d7ea650a2aade9d7 +QCAVSy = 01b42bffda843946a14ad6080f95b8fc6b7e173528d08ed36fe640aaf85aa00fb5edd5905a38b3c7961b7722b77b8dcb44bb25f5 +dIUT = 00ace92103ffe262ac17ad42a46d4366f4cb4c580eff3ab1dde6bddfdbb7374811d52b1fa99320b4af5d4e9208c14eb8efa8916c +QIUTx = 004ebc4d4acf9b404dabc3af3e8cbea8b88b32999d3ecb7f367b12eb3a6280b840038e22681637a7d16436e014f69616abf72e45 +QIUTy = 009e24109541c8024217e9ab2c963fa9e373640095a6c25a26eefac58e4342c0c85448b2709592a12402fe2b68a793c558ce8cd6 +ZIUT = 01d48a586be9285fa38dd3e70b0330b0ffebd327ceefef88fdc1521ef2fd61cbc9124e03b0c926e70fa56acb3edb54c3c48fab2b + +COUNT = 1 +QCAVSx = 017e9f01b1d6e5702328330d232a1dd3f2c592cc409f6caef0708440837f3597510f111954aa51e5646ccf47eff1f07a4f8ae1cb +QCAVSy = 003714f6ea1fd143ce751e2d85baf54c5523976108ed482fd6ae103743131ca716026b16a1e496231f991cdc8f6db447f5f95f8e +dIUT = 003ff22f7d7c049989a43e0ea3f5d61798159c178aa792d79d1ffebff8db70ee1fde040a4b5f1ed33fb3ff23c44e7c6b21b0623b +QIUTx = 01d5c9260e73ea36e4deaaa4b8f4541f678066b690771a86f0dadc580fdb895981e6dd02dd264ed9f9c1763bd54a6052a2d3dba7 +QIUTy = 011a706826365ece28e38b33620bca016d2d9338518dfd6868370476dacb41e3b947465769ebe81b620731673576f77451d0fe14 +ZIUT = 01856c92b46d671d8a7f6cc468efb60a61093d006c95bb931c1fccc336d4a8490fe17fe163c972bac39fe728f24534a0c34d2d21 + +COUNT = 2 +QCAVSx = 0183ee355a93cd13aff1756a08e58e2195a826298d43f6d07bb1c382b4e568d0080939260009c6afcbed0f23252e01d6d14c6d8f +QCAVSy = 01b2309b3819c2454a48ad253ac97bce3c79b51f50ed6803cf05464b74a5a1de22113e23c018c5ced9186ddb981c629e2e9db3ee +dIUT = 0096de2c3929c4085f9cc1d3778c2dbf3db7f0f77e7ba7bbc4e408c7d65e2c8b88b0755f160badb524e7697c50e60c8d99e56da4 +QIUTx = 019c47d79914c8bdae754ec5ec1e81c8ff329a938e6971eee3c945c4ebf489e14b15e6135616c898c80b7b06b8af67061c769ab5 +QIUTy = 000088022b4fb0e754ec4fab8cf4fc636255426755fa99b56805c15eac04325155dccbfa4145e161c40f189bdbaa3dd3e0c3d6c9 +ZIUT = 01972e225e08b47512e92c0da9a1bdddb1802be402222cac5788b322e101feeb06b66b2fe726c1cd8aec92e02f37d15f4c97e64d + +COUNT = 3 +QCAVSx = 00e85de9d63e34e5c7bba6ff9b16f4c84d95f11dfe92107b1fbecae98ce6eff3db96d86900bfd22cd423dbce1e5726be8e597933 +QCAVSy = 00b7141771f7c816d55ec8c53822d2e7a192fa54a17e5b99b2d90961b54a99fed53aba4bda1a4074ad3d23f9c911205795b5450b +dIUT = 00abd5d61cde31180301c269d52af856baa39b89f5ef45367f5519210c71d77b318d053ec0c2f49bf46de05cabf23c7d2bd7d23f +QIUTx = 01a7ef3d17c301e8661ba66c1cdee82a9b44d716909e3663b423dc06ef6be4f616cd179321ce7a572da4bca2e89b768edc8459b3 +QIUTy = 00df743849a20bc3026062b420d3942f18e2d6c5307e6e1955e33b09d5951dc59b31a2b1d58c233e2c896e2d9ccaa8eeb8e8f113 +ZIUT = 00b6661a866abbf1843dea8f220e360fe7cd7d9e85c316138fd2532a57d7d2a6bfe6e5518019c603a2d0e338ac6a8690093c2883 + +COUNT = 4 +QCAVSx = 00ca870acbe4eb3ae65edd95d6944eb090e0e550712be3b1369e473203f52b1838654f7a4342bd8309704fed6933ae9d162ccd7d +QCAVSy = 01796cc286bf3d53ad636977374f8356e45730b7aa43805fb52801f73be3e9b32808984aaebbed7be5e39e51335b0dff34782948 +dIUT = 00f323c8ee433c9ba15d3708069834acc4d937be5017e1d182ec76466aba282c73b5e3e96fe106143641402c72c62484ba1f12f2 +QIUTx = 00b74f52520119fc08536cea584220de9b062401e64ff6359305c2e6b0c04a95f77baf53e23c326aee76211495c30b2c150b9275 +QIUTy = 01540588e2fd5688d1b35763908c1f823eeeca8942f6216ce04cef66ed6991df6a22fb74411b13d06513a65b64e62815ee020697 +ZIUT = 010889037c707d90b833d03256ff2e8a5ffce16fb3613486221494a4fee82e74625a93d966c2028d0930115494f9456cec4d2b6d + +COUNT = 5 +QCAVSx = 007eb61dfddfc3c0d083fe2213967986381d9e30e684afdf2bac8f1a362e8c6d6358df95930600427dfc1eb14118fd1239b67b69 +QCAVSy = 015ba87f98114cec8b2cb45bba3dcf006b287e07e3bef1da27ce08da9e4f48bd241f59a1f9c93c837884715750f4085f913f4f7a +dIUT = 00133da2ba54b36244c8042f0e2da3718e56dbd2848ef427bddb24177f624475b53400afdcb18879e8fe6b4609a4f7bbc2152b13 +QIUTx = 00e3a2f4e63cfbc1ee844745ab3e1e5be573204609aece5e28b8fb8ab8ae06898467a95a7b59c0898a414abff2703ccbcdc09209 +QIUTy = 010d73c43b630170395104acad6c1a563d3296632332a1481ddc2c31836bd1a3ee1a7364d7f5b8295db95a3745b4bbbeb8095bc2 +ZIUT = 010a8aafbb243fc9466bf381eae173c01be95d88a9c131b07ed54d2f117cd3af4019ffb196ebe8290b1269622f9df26763ffa211 + +COUNT = 6 +QCAVSx = 0082f148ec34d1d08b26e79e3772e12d659598b73b6fff0bab1845e9a5b5071449ef2759fed63aa80624b83a6b2e9d739b83f6db +QCAVSy = 0109cea048a720ba749fc522c85af5fe783751c39fe8d0515ba0f0d3dcd19f18c22da3909f02d78735aa11b2feba0f8d330c5703 +dIUT = 00df7554c0132fd4e4a2b9217875f9924a55cab319b76a7c179cf0222937579996cf94920bafd453e52f5d2fc48001329fbd78c4 +QIUTx = 0160851cff947ce72a118aab4dad4ce2c3ce9bc330ce1d06efad7f630e45bbcf37097d94051d9d310abffa8d96ed22a847cbe693 +QIUTy = 0079a3ddde636bc62af41e6ec0e073fe6462e38ad4b9e3a36ecc8113a2c6394ced21abdc8ec5969e58e009ea13dbe929a96709ca +ZIUT = 01e17b8844c4c757553a628d6f4c48f3a337ed2bbb6e4047dbfcfbfd02bb81c6e096f8ccbb7f2e5d10ee9cbcc960e3a99e79bd09 + +COUNT = 7 +QCAVSx = 0083ca04df8458e5e6ce6e13b937dab498521d826fb9541234567e995f0683c80f438516eeff0cf8918a5f8b5262ccdca3997417 +QCAVSy = 005f8b3c20e3fe2559efe0e85a12276df922ef0f4257fe703be2529f6effb6f299a1a251c01e38d43ca6ca576ef1e0beb6c9121e +dIUT = 0032735dd7f118d29f9f3cab3a072db8c886d42fa5de7bea65036ed3c8d44a11e8f96f4e1a6f254888cab214305191a26dd1dad1 +QIUTx = 002d39e0f89fb875151ee3b354f8ea159e7fba6f23f8a764d49e07ef43f18d3cf86e1baaae0ad79d4000709a50252f1ce3603135 +QIUTy = 00ce44a9b775b03cf42b310249660794c25e0422b03ad9babaa23610613251fe0e54046e04f9210436dd376003d18f98dfdae189 +ZIUT = 01167edf7a3c50e13be126eb2caf6b5f8f761cc8dba413246423b877df74a3aa3f48144b44cd133ad9f2d05ef97a08f7ca511d7f + +COUNT = 8 +QCAVSx = 01311536a9745b7475e6c2fd724c23d9ea66803a139b47e3ae263b0fb7e42e3316279bbf622ae262531b2e2283ecc1a6127c9b09 +QCAVSy = 01d48ccc781f0bdec3130910044b76909a9abd7fcb18407dc42f63912fa2667208003ab2d28102adcfb93ddc053760e53c2daa78 +dIUT = 00b04f33b68799630d62f44337c77c5a6b6e0f7606b5c87244aa4e7da698cc8ff1d3311b48ee7c9a6812baf9054379aeb61c0c13 +QIUTx = 01c5940c2de2b3735824ae2994c15086fa958750e4d83123af047e9b3c264746c9b5d919da215355d8c28b2808a37d0cc5f2f6a1 +QIUTy = 000abfe6f1510a182eff78dd802e9ba21e668aea5732c732ddfc5df9301f5899f02bae80f8282601ef3eefe414ef2c726fe00258 +ZIUT = 015c0d202bfdee2dfbd4be91625171992e6c6b1a1d06cc1b2b66ed64c9d928bd4f062912900d3f89045c7190f513d3b019a634f5 + +COUNT = 9 +QCAVSx = 010c273530f54fe174bbbd5c2771a55a42e64050c3bf2523e6082af476eb025787696edf6e438dd056b598f5000633c264fd7ba5 +QCAVSy = 00443e72da93b0c7825f4223c796826fd1322345ea25adf3df1a2c6958908c0fd9b13e93cc005f4ecb155a2fff7ac54fa8180785 +dIUT = 00d4ebc31c9a65ee3b1abd9d6e6495780c54e633f5a2a9f61c8408d767d0916d91cb54cfcd937538df92cfc45938e33b77d724f2 +QIUTx = 014dfaaa70518f367cdfca89795a0db374bb7b407a58caac24ba46824dce78501067d7e0467d30b9e1fdbb0a7eace15fb0c208cf +QIUTy = 019d62be2b12a17a78f6c9f7e703669765f763c6235fe7af78f25044e99c4b1b90653640b3f0ae481a55d47d1eb17b86c5bada1b +ZIUT = 007c32383aae80e1111207894c8cc5be66fe538af4a19195742a94a4c3f5c765d9776a56177c485ddb53c038b70478959d374627 + +COUNT = 10 +QCAVSx = 013beb8d36d1e7f53d80beea33efc3e0098deaeaa17977da8f9aae9c576e7920e8f6da55a20930ce60fd490b4fb0154d49277d99 +QCAVSy = 011dc1d87f352e12bdb41a1b7a1f1e516629ed323c5d5b263ff036f023f0ff5f722d056c24a411f53b347d0786d84f7be879105a +dIUT = 0026176aaf98a6433566f1dcc1919e94453e9cbf3c97e069b4a17426449167f6a1089ac16a102a4b3e432a978bfb46255dc43d1a +QIUTx = 01535fc949b49030308bc0da9793d57088766ac8cf22e8d6c276d8f3f7650f30135e1f6c00300c1344e2f0306ea0e270b09a80af +QIUTy = 00b8fc3fa61dc22c55501f2a6b2944946d99f7bbfefbec7acf4fb200c1002e322c39172ec0a2b6ce0807f1e3ebb1ea3400353143 +ZIUT = 01166107ab98db1dbe22c5888a70c992af4faf4623ef593802aedfe433809c53ef4ab0b2dc4dc2546488b356ef3265356055d8f5 + +COUNT = 11 +QCAVSx = 01690c74649e92e1c1004f43fd6e4690be595904c56d2acd85a49af0a17d34368c8768d039ede9c92ad26b26306b5ffdef7bfd19 +QCAVSy = 0081275f7e2ff068a6c1b92dd38c034256ed7322b027702994c74f5b818124d34a190987fd658892fc99e7acb9877bd6fe946919 +dIUT = 00bf3e7395c72aa84c0960e5c69022ce39067404534473c4c7829424f81f1d44b31f20e2b982e251cf9ffb327a7d834f59d1948a +QIUTx = 011cbc4ed9036a27effc89ffd55fa1e3ead0fb93bacfa0a78bcafe3914ab1a97860fec1334caaba07243591603e67791aea4bcb7 +QIUTy = 0101074c444627630ad0a5258e24438d71f26ab94d05bb47d1ab97858c4b92c6ff1cb9be66b984fe8e16e44f393e63f9d64281c8 +ZIUT = 007e7a249094eb52bee0115b8bd5545f81bf0b7d66998fe124c9a3dd3c5715d03b2f973d47c19af5108a2ae005fcca65e61f337d + +COUNT = 12 +QCAVSx = 005c24f4ad9bdcb1460685a22da54dbddd1507ef6de469da4170ce30147579a54945dbb1bce9f02e470033bb15fc1a70f831e79b +QCAVSy = 017ca932b90a08ca2e3f55c50cc0e13d279d7bc9119c573c3f741410bb7c1cad1076c3ba42aed1ce69d56228b082fb6de0eefb68 +dIUT = 0096d403b0fa601c9a75aa7de9fe9e11d42efa93d96dd35102da05d3ac807e44194e18e79c8b5be11c5fb39c8bd4e312325afaf2 +QIUTx = 0009833946294d4aeecdb6f7254ca489c0ff13af2dc6e2ca5626835d5dd22241440c37a63690cd11867581ff61b7252d07afb8ff +QIUTy = 006183fee6f4d6ef5b723c53c96c5c1ecdd84652e379c937878d766f83370500412359c22d4778bdf807b3c84e5b83350910a1a9 +ZIUT = 00b9d8b68642b2729340d8b7c5ed3b3a8913c4a3f6b947473017c0e105bc7edc60daa9b0732772220f93eca4878085f756e3adad + +COUNT = 13 +QCAVSx = 00aabf6aabb3e90f956d7004ffc893c70f8e90cdc31fc0c7a88f16320541d58443af39405d888d9676557cdd394b27dc5449f945 +QCAVSy = 0127f26dba06c33f8fb45d955cfdb5cedda93dd8a45db42ee0b9264a054c16a87bedad45c0d9a0f35bbc6aa7a1295622e83ebe8b +dIUT = 0067125ec309ab5dc7ea568f8815a2b30cfac3366bb4f0160d53738ab995ce75681fcd5e492f3a9725b4cf75ba4301a786049342 +QIUTx = 01f1d1aee5fc594ca4a22b81bad707d821bef3253966f5d77956157483961696f4c60476a42b452b89c1ecb3615475ec9c96dc87 +QIUTy = 00755c5ef55889b415cefa0e881a3efc9be86f36c67615423b452eab4cd5611aef4198ddb31aecb434eeeec12edd05913af19fc4 +ZIUT = 017d60394c7ee64ba73db91484713370daa821255807349c237e5849411bf0bab3a1b353be3cd07eeddc5c2ffc74336225dae6f7 + +COUNT = 14 +QCAVSx = 001f4ffbf22f67c1591b0a770e563c0aba66fe01561c5e227e522b5dde23c748cacf8f4a02290de26b47767d388a5c836d3eff4b +QCAVSy = 002d273f2e8516e508388f8ed2015ec9fe67c66f832cf2b261dfad5856128042fb4a61a91a37b341de4296d4bf63bf67a3458a74 +dIUT = 006b2cc2387f69afd43978b7f66bd17666257081ba4d66ee6a9a82b7c87c4ac5f0eba6bc2d981ca1da9ff202ba72cb7fe9c06cf0 +QIUTx = 0086a44d6ee4e8c50d1e10d7d1d113a9610750210679e0e4cab8c62267842938ad5d933c980eef9d4644791bbfd35bbac649d213 +QIUTy = 011da63212631605fea0e93f5826b1929b2bd1db950615fcb05eb47bd9cb69eae03b1c33d7a9e47b335a40498238fedb8999b04d +ZIUT = 00b19e052edd44421ee2f5ba845911fed9183d885da85d51dc819ca565ce574f7db257509876377b40c5a08349019563b60e13e9 + +COUNT = 15 +QCAVSx = 01b0833eb3440450e3fa5148c25c2df2e0020626f2407422217e4ecb8bd8a751a72bab2ec5642ae90fd29d8c4d79e9cc191b5ba5 +QCAVSy = 0023078905b6a33009ffea1a1977db943579afbeb871970059696b29ef90dd8461776b343a09c853a538e4f22fdf854fcbf3b734 +dIUT = 003e098f3f195e89da71d6367000f804079adca3275b2e793e8d312c8e402cf0d0ce5331742f87515f4dd9cc668246194b9572b6 +QIUTx = 010af4ae334ba40bd6538e0f095aa56f61a2bd2b5f38e954b7617d92ba10603cdcca836554d0242ddb37d5e1576b0be69f0eece7 +QIUTy = 01b335521aec305f314d7f23ed28cc0c4d23f33a6785fc6c6de93e5fabce271302f9557f6d2ae77c52720eda5a2e15436443dfd2 +ZIUT = 01697512676ae56ff5ab778c411042d217ad24a24ea05bbc253e4395fecc8a07fe77ae0ca4ed977459f1a14d9b83931bccf46107 + +COUNT = 16 +QCAVSx = 0174bd233f861c7b853cca8f5a383574849ef2cd76ef22bc0e159f713a1d07387c4203b11f4c339b669674fcf1dac199703beb07 +QCAVSy = 01e2c778cca64963d87329e57c8bc96d0f6737041fd087dafc07dd670e2ce725547e1a261c43fbc54e14c3473ebdbb31fda8473a +dIUT = 007d849313c6499dae472b0bddb76dec45806f82e098723301df33b6bbb97f794bf26879fc33c2973f86c1551549641a819b5711 +QIUTx = 004812af1937630b8ea7d0ff723cbb05b7a2740fc4c9be792db204f929674c32e47d85e4770b903d3290a6d62c274cb257b76837 +QIUTy = 008c6f61711786bf5c54eb0c1b3126d641b24a6662b67b257302a9a61aa8cd503846bcbb1b14fa5c97454368b6c27dd2de2ae80b +ZIUT = 015960ea8b92bd77d52874e3ea82ed1763440189d68728d3974d4c01d6aafdbb5274648f6f3eaa4faf3fc72d09892ab038cb2fb7 + +COUNT = 17 +QCAVSx = 00c1dcb737d253035bb91d2a4a85f37d00142be81fc9278cb23a4d1d79d27c8d3c4440b2c842bc1e21f6924e14dc831b0abfb845 +QCAVSy = 000c73d5687b0490ccc07f654101acddb36cd0c2eecce165df276f83be211d01d30ff5c243f0900572ee6df07f539df6a4689b0b +dIUT = 00bfa594856c67c2836b7fb171b67c7a41ae43ef3450898024a9313654fcf31e1e1fbac7ad52b2bc4358975a5c61ab9f4e3e4e9e +QIUTx = 00e1b5309a44800a916ad8a4d19b82a58b00ee048248050a6ed6c33ce1bc9701547e93d7c9042f8490654b73a2cd7d73f733c0bf +QIUTy = 0180b20338746351faccfb9a3711a4e138457550bbf58316034c6f216a53749263dffe2359bddcdc89ec6446a9a4a9f4ef90c86d +ZIUT = 01127491ff33a67ffc4757416cd02a081cafb723aff52af35b069b89963e8e3ef5bc19c5a093ccf511e3c3c19be789280e986809 + +COUNT = 18 +QCAVSx = 013d96a267d1a2a9ea83aeb1b01d8ace22e251c82f5f5fc3ef5997a3011a74a10115df60e98d139cdd360e74d76fa522eeb56f4b +QCAVSy = 016b655ab7cd0d39f588fbefec54e4f45047664c8b3be8e57ab113770f5fe0c62300f4a09fa2899e73bbc9823265f55d5cf4ae18 +dIUT = 004a020e06c400ef2498c111cde15087cda48a6fb2ecc01d985b57f0d3921920e92c43f3ab688129dc01ad29fc31d68e9622319b +QIUTx = 0167227f62849594ed63f247f780b2d11dd9a2c2c71bd6b71294cf8b59ce690bfe00da9bc1db8d1daac9bff8c00e7bdf071fe0d3 +QIUTy = 0136c3ea77d093d9739fbe6891318b14959778599bd1e7d5a97bfc82ffe85fd5a9a01b82f72e11fad96d2f5cb5798f59efea15ed +ZIUT = 01254508553eab09fbc2fafe13fa9b324d9217d7d0ba4cedbe5dc869ad68de4f87774dd17d6428ed242c71956f252969e6bd5837 + +COUNT = 19 +QCAVSx = 01787b30b3b204e298690b9d711ffeef167adc5792068b5c8d422ec90f94c2bdd284cdbf8bee642f70bd7be2da906b9edbbc2cd1 +QCAVSy = 0043078f912110290a13d90160f0e71582fa39c0e75d8190eb811d450220044cc6d680d956a98860e6fc85bb86d65990a160c5b8 +dIUT = 00c19b391665f50353547fc72c9ed019f5311690ee41e7c895aa7ef92c60fb9f3454dfac575245a6869f1fdec745d63ea56c8922 +QIUTx = 0053a7a62a8b4044b60af76efa5b44429bf65f65987d6a062163dd55f08dc9a91b8bb9b6270f8a026123f99eb9372ccbdd27ca3b +QIUTy = 00add46f7ea7092f48ddaa2feb96cb24bf92d2628fb6e4f7cddf523e5f84011cf8aababd6009a13f29a63b6b7ee664c66f3829f3 +ZIUT = 004b9accc21d7122835fc21410ed1d83767c47a54ffee5f0c180fc55f3d0e8484af3ad38020294be92f02f0ba7e2b4f4eb1db07f + +COUNT = 20 +QCAVSx = 01e9da0ad1a15ac3c431f220954ed2e502af7b746c3fd57b2eceb7748658020a095664878354df0aa181e57e5ead2c985ad3023d +QCAVSy = 009cce73a54708348b48f8f3f674bb7654f441f283d4e8a4ec8f8592ef52395f24c112d5942d3ae08ffe8d999efde399888a7cf3 +dIUT = 006c9098b53d10f2ac0284a99902658f667ea4cab28698af3fa07006a1bb46363b103c4aa4c92c1c3fe7539097fa70b8a4fa46c5 +QIUTx = 00d3edf652f43f9c9a92a2e4d34ba83f5d7e950c28346a2a6851bf75547050140a4e9c1c1b500e1d2ad364c306b9a44af503a621 +QIUTy = 0099b26c64367f1903da95df51562d25042c01a1adda75bba58bdb0d8aab350b52ecfbe98488c2619de01cd70f5e008953bca547 +ZIUT = 0093e2581c159d74d11f8667ee03399208b5c1a4ee5b20070ce8d97d251ef1236dc81dd688b2f07a730e6b8aeca0c193a28b178f + +COUNT = 21 +QCAVSx = 00c49294fb712942221a2500324af7bd8c7ec1cd1b8094ded1bac0010a8696083f7efaecaa5103d6762499e1be4857d320030281 +QCAVSy = 00564fa1110b393925dfbb24ba9a6b3373f4624ecbc3e12f9706f3ab0542992d8db6c8d8bb25fa0614d486f6d1ac9f3d98b9edfe +dIUT = 00a7fa38a8ab8030d6b497a23bde5e5007e39d14da9f82dc564ae3cdb4af5fcf41bcfef7adadb59171e6d7d3d3c3ac67f7be7073 +QIUTx = 0013bb3ba91d5d2488af572d995cef8fffb1fd85d113421e8d2c0c3aa97cdb8a933fc0d3f05f4646ce841ebdcf1a98604bffa3df +QIUTy = 01f2e04ea16a012d4864cf2ca7564846de73a33f24578dc4d221359c4f2f86ca823cb0596bfe4760e9eadcb4ad508ab1a171ecbd +ZIUT = 008e2f1c4bad19c46a5134afccf7f4ec14ab591c8b8ea48d9c3d1e7354ab43ba20aa39a65fd92cdc176cf3dedecbf9da49a8d855 + +COUNT = 22 +QCAVSx = 0134add2c499172df792d94a9b3895e245b84073c325263a858c1e9f7cf30a44f268d3f8358411dc0a9caab505c0abc016130bf5 +QCAVSy = 0031c236b143ca036c883641f7f9b957f4f798a31667c41560340279fce0962a21bd8bb52fa23db71a84f35a5794ef5e075972dd +dIUT = 00ce9f827bd24c014c3ee59edef747178d6c030c19669ad8e718ba1302bef4b5ad2c1233448f5275b29a896c0b2e7b0da92068be +QIUTx = 0176e31012d9c604b2d1a1922a28d8a574f060cc36388b2816d2f8117da20c0699ab0a08f76fbaa476f0a9c424bf4c952b4754fd +QIUTy = 011fedc3e8f8e828e0ffbf02fd85d29c0201fd0f53bf2614c10ae51ccb58cbc4900c38cc4c9a52d86d89f9b8c2de4e227f4e228e +ZIUT = 0190a1693eebe287ec980236d8762804d23fdb6f222763a0efc364f9280fdd53394c2badcc51ff09557f3b97cae7f70d790bf9df + +COUNT = 23 +QCAVSx = 00f0ec972dc9fdfd08cd8dfcba7298b4df2dbd80c20b2889e663ac58cc348cbf8f9ffd31ffb50618d6c38d72a99d5c5d2eacc001 +QCAVSy = 00bb0b48893cdb915e65cd5d797804802017a295343654246a37fe3a60d7de987e6a9a10aaf063d96b10184612ccd26407d7e03e +dIUT = 00e36f3b9a1341995b13fe70bc545d279e6db1482c92b13ce8cc0da1c100ea2faa803a64a58cc7eb1cfd167570835c522f659347 +QIUTx = 00d1ca82393b8d50bd1898a909bf39333eca3bde98b0b0dced66f828630e69e6eb128b7cec23f07260047073260a765331dd6f57 +QIUTy = 006c535ff943a0fe750fc6c39904a6912ba1ebc0f46c1b0823e4013c77475ea29b3f32481966f1b165bedba6c17a1494fb6d4f3d +ZIUT = 001469dabcf2210aa7de0040b201221eb4d1a4725431fb5a93212a66ddea4187e078f5e3d82606f6cdfc0ffe6b69574d1d0ba643 + +COUNT = 24 +QCAVSx = 01378444e0deecff3aec5ab6e74e8123ba98d8b91a507cfca0d85097aad944c15b4fd89c8cbe2c7451d8ec641045421b4bf6978b +QCAVSy = 016447c213c9035de7bcc29bdd61d6ee6ed5579c36bec56bc6b44f9286bf9e99fac97f356708cd0310dbf6338f9af8d7b1359102 +dIUT = 0008a06716ed6f4cf728f9019928f367c77a9052490b9a8ba87a59cdca84e77c6a299853f5496febe652f4ba333501c4fcf2ba2f +QIUTx = 00a045b5e6bbb7950495f6d5d645a2b7d72006725d0223c7ff75534022c9260ab0d2d8d333789a3dccfc3a89502ca500bd0c1f61 +QIUTy = 01ec556e1b1621ec1893654e198d5923e311478a8bd2ffff280c9092ffc0737289a997492b6e9ebf931947634ef7f43b429cf36a +ZIUT = 005c701a93d7790322aa7c67440fdd9ee8057a0dae86d1e856ae89e7893da178bd67777f86db2be5c8e31dc50ed8a440aabc342d + + +[B-571] + +COUNT = 0 +QCAVSx = 03b63f5fa112ae6b5f113c765144fe4cbd6020e26d400c11609a3a634b9a325f416b0e3d3215734c68a1c2c8fad1d0bb9eb3939a41af22421f68781e7eb0664b9df5cea448deaa3b +QCAVSy = 008e6cc77bcddc816e84cfc1f626824fa24d3d5fd33d8093cbfe1fc4d881b63b494123bc759670edcb1887bb3b9d5a8b516bc503828163709d4dacb594d277a15a92c064e5770d1b +dIUT = 0344f22be87999b95b2287f67430ea8fe646c62fe38b7ce61f1f956597c27bddd9902e20d4436abf3bebd8243ec29a00481a8a2c19f550e99641b5f14aafbb5bda953a7559f8653a +QIUTx = 06af71fcec1a2904116fe14878663764c1ec74870e5d2d53919f0b635912db80dd5460d9e699458ff8494c5bfc74fba8d3b12f65f015e8def10de33f1800191f4cb502d21938b951 +QIUTy = 019584177b189c6641ffb678b6d7833d8d4bb25dee5018dda4e4c0d219048c01cd0da9eaffe346d53cf1a07b33b3dbdd4bc3acabe4832f9981eff2660991aac852147985eea3a51e +ZIUT = 06775e1b99a236e02b020bc73666e5751c1210dcb6e9b02a69f4075376e49f7a1476d2209e861abb73f5e3ad189d268e035b1de93d47b3a64de5783c9a09bc223e1cc612f26dcdf1 + +COUNT = 1 +QCAVSx = 0575cbb059f423309f993b6c06ac71d7bcc5d1e6a19afe72811cb612a6238c9ccc331e67da0c10b88cc2a5f1ef2ff6d6b744065d242f598da2d6335d4c3becf5c3953940c60efcc7 +QCAVSy = 06b433652e3a36a07018aa8ad3d2ff31ed785ce5601716eff7710fc13c6ff9ff75c7f3701d459fd8fe70c0b4afceda08681717db9821d8c858fd39e274ff37772f8e84856e706745 +dIUT = 02f4d2b7e63660e6c20949e06dc670be8aaf82530e0b6eafe21011fe9d0f4407c8549515734528cda299e9fcf738a97fbf43c4bba26744b327531b40143e158bc8645909ea888456 +QIUTx = 06ea711827ad8ed589b709ef35f6a9cd4625798bd887e5fe59c51f0f41c328b7ecdf84736c43fb70e3986ee5e5f986e009f641158a75cce6b39f53a8bf0682830194e4007148deef +QIUTy = 04c6b9f2a6099fc0367fa9609394c3221ad8c6fb111d2bdc4305053804788d32eaf76431406e768a448cb5c8e34c81225eec9015abbd92725c002712ed3192d807b36afea853f722 +ZIUT = 03a80ea8cfecb858f9b77bdb46b6cda26320ee8c561a2fd6b7e0a2b62201fbfe60f577780c75a98a11a69de4c4ee911930d2200b6972bc3123d7f278615ecc65984a59fe352a1cec + +COUNT = 2 +QCAVSx = 064aa66830ff44324a67ae8a907896897b507566cf52dfe13e3adbb1e793665d2b718358754efe809e4496218502feb5604dbfbc04a1107ca9ec4eadc7d10a9d6d1474cedf578145 +QCAVSy = 06f63f69f8c18b67f11051b3d30236a1a249088b2bcab5cff830cdb9eb3e75c1e87252e5d8e61bb1a66348fb681e962d65abc54d5dea2dd72c554590740074f7c66c4b8dfd307561 +dIUT = 012b6313b56853cf8d0273049cf7ed2ab8e632e59256ed043366857648f3f2a9674caeb6fb0fcd5fbab0bbabbce17a0fc4a78148499c389af57486374641695b0e852f3152eec724 +QIUTx = 040a78763d170459dd34b5c04ec782e698cbe903a5a348551c5248d9dacf19bcb9a498ea05e80e2d6cc1f3ea5ba3a43855b801c8c0356fe3e29ee224bb91f4ed0c85678379b72542 +QIUTy = 01ff49ce0a62e9edae6aa63a9848e44f185412d0feb46b87f91424bdaffed5168321ed76f235f75d33667f6d7d6a9c857bb4f85442fc40f9a20c04ae06362a46eceea15c45d69beb +ZIUT = 03edea7e47ded7c2ab1115f4ebcbb42677c7fba6e0cfd811602896251ada1d5a0b461aaf4e000f4d4231b96d8dee7630d9f1b7860e6418dac8c3b07b66af6fd1acdb44b2683b29b4 + +COUNT = 3 +QCAVSx = 050671af65cbef92f305e5facb4288cc04a4c6978a3b78afe4049c6a995fe8c3c0bb609abe49d152b1eed6c714d254fe6eff159a9ebd24ad16919ef76f4470057eb7c265a4bd96e8 +QCAVSy = 051d08e21d264d8e4dbc73408842ab57cd78d323e7deb625b3741994b8affe01af4461622db419afeead045845f6c3db6d982f45b692bea11cf25d18aca3c83bec840c7582a7062d +dIUT = 021997b5481c0cf6cf436bfe360c3b119b9e4dd56f3c2847affb2021cbac4b57dc18f5075d678af2ba6e9eefbc4138d818053f2df32a10e8ae5d6409f5b2f1f3cabf36f808fdc07c +QIUTx = 0560cf91328c26bba13f71c9b5dddd05c185969d88bd0e9d34a3607a923b23a5b675452167003ae2f0add5141ea4be41ebae91d3a6aa15c393dbf585ad6c9214b269e86b4f054bf5 +QIUTy = 02e32ec240418a9a4f9017e632f8a77897a2233d6f1f45b8f7aa818f847ddb3ceab5a5a12c754fce8d57b0320a076b53441dcf9f65ef3204e089191ef156ff762294897a72fca932 +ZIUT = 005b640015330f8416f2bbbf8b5660e01a7abba8b0197a29e52bb535d62f89ad0443e08b6e0d1d15f4eb03c0fe35e3e43bd7739cb692092698a2cd13126cee4432831ec7423b3434 + +COUNT = 4 +QCAVSx = 039ac9e91af594074dcd338da4f5240574f01e413a49b92246ba3d6de855e3dedf6e7fdeda9ab7f7f8476e770ce9bbc3a9a5eb984543dcc37f5f11be6e28a1d1090931f5c5b5a351 +QCAVSy = 0780d32dbb134899bda2e98848941878387aba6665fd24252160ce3123f68f9b5bd8f254a38b84ec536525fe007a863b6fcc489f937a05a5fd946d62825328a09f83a7cba27fea5e +dIUT = 02b539acc770758799f439670eae85b9ba34a8b4f371cc935a20ce8c566521eecd8c4f5aff116ae0db2ad6eae1a3384434c599379821ad05d81ada0548299dfd98cfd6d3f1573524 +QIUTx = 06dae538c820443977415cef4e79974ba762b69b434810200cc6fff326a2344cd21be19c153642df82a3e57a5531a8bf19767e1995d2728fcb661d58ec561ef23a34d8607971490d +QIUTy = 0504243c792b903184ea725a947ca89218ca9c8fa1e09a7dd68de88eae90f9bd2a8df414dd69a8b2b1a2ded2c6d7f514c8907997624eb0bc9ea933a2d474ef8f83baea3243834de2 +ZIUT = 027af05ecd0332784d64b0b1bdb45c310fd445c5a6d6b34f35f4eaa3fa3e171ab98763d243a1dedf46aa29864620a47d05eeaefd748186bcbcf187c01e7ce36e2a53ded071036b59 + +COUNT = 5 +QCAVSx = 06f6588491060a1e88148e4bdee38bc674713fe384d7cfdbf5bd90c9dbb6e1587e459dce6e0d69b8b2cfeb5055bee56a73c13436060198ad4750dae8253ea839a2e246d541459775 +QCAVSy = 05b61b8f7d8d6c8162a2269e7287d459034b8faac0360fcf99fb21da34a314e6735319b9d03626b9268369345f3a624acadb219b207188d0e945cbc67c982068d32613fc21f8b0f4 +dIUT = 0318a96e382782d4476f1bebf697a1076f22e1d2ec84747f9fc42505d5547daaa08d814721759659958685cf4ea4bba12fffb66af09f6694521f11c09b6626c8ae52fbfb336a52a1 +QIUTx = 06770f2fcd2e9b7f8bc5c292d283abad85155071fe37ef7ce84f34c7616da3dbe1bdce9ab04cea7bc4bc258c5d2ab77239d3d084568b2dff779988288d9fc6bb364f519d0e855ad3 +QIUTy = 04f6a1f4e5fe00fe9a25d8459b88803988ef2bf2fef5a23f13e7a7e7f3459abfc3d5c00303abcc5080fab81b09d5be0320ef990519a06af13c29562ee955715a82cc0daef2c5e0eb +ZIUT = 0763c0d659a7c080912005a2afd60ce57e610619b388ef3d5dd3c9386ab12069c6ef3a8e72eb741cba2da5c6f9267f6c09fada6459690ed4e432445d6f0f72dbcb059c87df36f665 + +COUNT = 6 +QCAVSx = 05a52cebf68103cab0266cf2c689c48f080549fffc70db9809c2a46f908b7289be597329f39ee1e4cca398664ffa9bdcf01293f43593d188e12411d57e559b3f6a30e9554869f049 +QCAVSy = 014e137165fb0d530e8653d7cb2a84618dd3afcfa3f08560179142aae972790ce746a2fd4469d41558744378c640ae73a489bb7f81cdca6b1bb167c794c26d6238a0d256afc3ba21 +dIUT = 028b4319eb7054cff6382820c52f9c332eae670d1f07cfc8f1472e9260f5e47a385768016cd2006700ca7bdc5d1d567d92460af7c2a425dd0d78aeee3d15fb28d71167e6486b81c4 +QIUTx = 05b1b114cef13aa5df306ce74197d680f9b8c9d8f6753a09db88466a6bb04eaf1eb873836022d7504f45fae85a8e4a5417edd7ce3a0e5eb9e79264884ed783577b3fc52d825f0b57 +QIUTy = 018e3226e36b4b336799c4684bba505e984dc8819166f17ceb840e36125b283a8c8635ddf7e770406d9856d82b37cff1fbcc5d3f5cf4b55eca41ee131f21ea7bcb19ce05f6564245 +ZIUT = 0428413f2d2aad4d5288885c2edc8b976321ae1dd4fc6b41275fb88b8c5e7776165effce79025163538a0e83c919220a407ead6cefd616b4b05294488c2ef5d30ab8caa55ccbd1b1 + +COUNT = 7 +QCAVSx = 026e2f1ee64e7958e902547a7db0a1e14866f3d2c0127c2bb9b09ee232d3d9518ee44ae8f5bb433a088069fa386cd5c8902711b762ac0da3a7a3420472c47e850f988dd60a636d7d +QCAVSy = 0677ff510052d4f460849fb8ef0d4f3519cd238e4e1c688b736cf6e3759550d134a1e6ca3cb479d68b4dc5d0bba1aee178bd6fe15ec196fb1f627d87079394f6f7854e053228dee5 +dIUT = 020115d17e41e13178b42a004c01d5e4ef1c76241049c7d31bf0ea85d6e070a2e2b92080e61de546fccbd4d991236bb360ef3f206ee16d8843a0ddc803463664a8ccdc2d87a10277 +QIUTx = 06c8ac34364acae35e3c417160333e48641868fcca04c0d577be06f58ab0a55fd7db779fe737779da33d009f57b5bad49702eacf575acbaf27df833070cd893a7924770c92eff3a0 +QIUTy = 061b82e545d41c62fef068b34cdbf01396115d2a1417f9719483d26986b6d52f8f6de06837795f6d9dd7cd095741114318c6e8a6206b3deeef014f0e44b0dc6684e100e4ac361650 +ZIUT = 031bd2a84369e93dfa00581446d52762100d985cc7bb91c4fa8be7472e2e8e9781c52b19a54330442441bacae23f4bdc76486eb475d51f26aafbfb272a5ab5db184a4d3c3006e5d1 + +COUNT = 8 +QCAVSx = 023ee4f9ec24dee203acfb658631313c7ad4394c47f1794d08b599ffc15f0e5dab2911d97e030ddf7cb4bbadf8a5bce05c35358fbd0cf95d3d5c7ff3cd8ee6b54e379d8d0123939b +QCAVSy = 0606be23e7c5746dbd38404fd607fb7f278ee249dc8e2740cf1bb9b1c07b1cf7e0a50a432567d1869799a803122510db437981a2aa126eb9aaf3c7be05a80fac1495e1c40ca1c106 +dIUT = 00847b545ef49615671f08be73a49147063184493340111ea4dce13c2f921f07bfacffc8441f4c7c9d0479f57f3a13f4c33c63ed47c3a43fb2f06d06a9780e5c0b3ac30410adc491 +QIUTx = 06994ddc5ae2c5b6f45dc32b710f1a49391a47f3a0f8c2d7846552fe487ef01cca0431155bb54533b067a29e8367373af95d6a7f0bf98d869b708f48f95f1b88a1530fe22547e97e +QIUTy = 04f6288d4d704f33a898031e7d0046fbf1e34a72c8af190f4d33163343c897ba0c0d8af8a86236a1c3b655b979dc4522d33d66a665b3b6501570f076322af0ad2bbaaa04ea2e995d +ZIUT = 04df20154fa49a1d6e04dc2ba6e55a7f2ae575de5e2c6e4091a4d2c36aa93ca9699b890f0ee4df53aa75d0d9babad68605bc027ec67c187a6826aac0f4bc596baae788b376110216 + +COUNT = 9 +QCAVSx = 00d4a0b11c1739bed094e72d7a6923836836d9215746c72cc680045a36d81adf5e25394f269a2ada1d9439ebc33bb931d6fa595a25261c244a1e17b046fb10fb54bb312288cf2e8d +QCAVSy = 075204f50d32ab8a6abbff982d1fe372b8c5415bb5b726b346aa4f08be32f8ca282c1ef6e152423360d97b728a074e6b3cf3b912718b1692cd983019741a2541824234bdc8c323f9 +dIUT = 034c2458302b43857f12ad8bd9a875237641a21e21ca3cf9a0956d3cfeded96a5e1f533d827b528fbb586da93eefbb66d0778b19b1a7fb6f17bbf9e79b9acefcdd7b9605e7898f26 +QIUTx = 032d3a7a4099f089fea9189211f7366f2edc4abfb316c5c05948d8de57fca023bfb6a11b102ea4120ba62192c0df610bd8d2f63fc57727f4a6b640abf8d299fac56c4c7af88349ea +QIUTy = 04e6399f1ced2669d3a5506d35ea2bebfccf0cec84bc97383aadc3b48347f629626e6096f890435e5933675048fdcefcdede3ed616e6560d42e9e17c5492e30bc2de4689c0592ecb +ZIUT = 037a380f525590582658e2dd272a32de67fc0cf5390b37f4d33c1359f075d4461ea38a55027317892a3d1d22f5ea333ad437667d2f3eb8781c39504036ae33e4b0a26b6894722f0b + +COUNT = 10 +QCAVSx = 03bb84032b7fffce27accf354b89dddf646cdcb56634df0f8520a7730f8abeb05f9933d8a4352d1c7767cc3f9b80ceffcdd0cb3a97b59283fd0a674dc4fd240333f020c82b4804c5 +QCAVSy = 074499336ac3a805430789902768252026b526ece54ac28e8cc878f18baf9fab42ba4ce34e4968aac1ee6a0bb15c9a709882a5372af56ea0b36817385fbbfeac4b906069e53fbfba +dIUT = 012db785a03c26be3a6e9a582e5c32a89570ad4308b713ce5471ea193dec1f32d68b4fcdfb1600fdb1ecb6769e26a0e057812dbbf0ed495592665e6b8e9a97378a30b5c660fbadc1 +QIUTx = 07edf7ee0ec77f5a6c3c9ec4ed8fd3cb814a342e9cc6470b54781ed6c141e2115c86dbd7ba27993eb7ebed7a38be488f96fddfa982f3691aa1c2a697f7706bff3d1add7396066194 +QIUTy = 07b3824b7f7b266fa42fe536adc2ac79b9d1e5b408e7217b3a99ddeb992f3123ff2d168774d300a818a32692e265afc6f6f578d9bd3121132b5979841f7a2d060e8948901d657c1c +ZIUT = 0420de313bddce87d07321e3f0af404d9d13e5369b79506e807178711153c9b1837cd055562eff3aadfc5954a221eeebb1bec1696d3df1cccfb8b61172a50d83cee95f4140ba070b + +COUNT = 11 +QCAVSx = 06556a4cc98466794a93d03388536776f7a4b3344c3dc4eb960a4a6458fc7869cd4e45b2f140c468a7d4ebba84c9482337a2a8adaac88a9a629da03dd247526642b0ab71fb7a8c70 +QCAVSy = 054b97d952b19f742856dacf4e50df0c3103baf253f4de65a3d9cace63fe82906d2c8e8a3312fb535e00f9b5ca69f87dbc7fa3f7d87fe024536604aafe4640593cccfef6fac028a6 +dIUT = 0202606a76b6a13d6e29280bc1613e115025770b245f5561d5883e135e159cc437b1c9355b2eee2b3babef229fe545aab2bcca155e8972495f1974bdb1ec0e60c4e6c79c48f26a46 +QIUTx = 06e74dba4e0702f186d334d3c49e2578e1edfac564645dda8c4a588158f8d7a3ef63243653c0d507427734fb4cc87adf4a36bd5abca1f920b9bd6e3bfa51c916d5710884594e9485 +QIUTy = 05b92147a2db48a3830ccfa28951a2b7e8eb84313b99b0a99031c7834c633f865a2f9844952528ae5dee02428a824cdfb7e20928ffc53420df38ead0b4240d0659d5adb1ff2e2dcb +ZIUT = 0606228f5a05077aeefbefac23c0d5bac7a6062bfc2b02ce8bba6698ea96b456b1f0d32c6e05dbb9be61a83090428eedea18c74f41238edede9e3a12e28722d2f314613c2e84d6db + +COUNT = 12 +QCAVSx = 01005182b029a48528eef5ffd0221ad87085abac6a72705203a3c1689abbbc0e12927a5e83b352a1bad97706101f44a1022ccc0d5522dc5d1ca1433de03a2ba1df864875f522be61 +QCAVSy = 018b02a98f0b3e4ccf44a96939a2083ab1f2a04dafd5bdcee3cff438bb08bff12043aa192c5fcf34e13b5c29742c5d864b9cac46bea6e96df2b1be4493acf950224d71737f990658 +dIUT = 0048678348ac33b92f2c59677103ea409946b5593d105fc4983351c4ede929c4b93bfc695876555e3ace417b82ac05b832676ac23e2955a09ee64a20a5f98e62499f43ba7f7fc8e1 +QIUTx = 031dd4808d2b341b8881f5e50a2dcce38df839009f92185978dfd9a60cdaee005cdba82655647736d407afb90c67cddb13ba2b01618f45e8a274317e02f770f80ef87bbbc1b11056 +QIUTy = 050a0671c9c0ce57a494e6911f1376cf1fc3393885ba8c26f6ddcbb5361876860a35afc1f4560f2970c30db3f1c817dbc8af2b025daed3a9da12d2fae9d714cead80445e6a0a0813 +ZIUT = 052669336019db5eddef5eab2336abeb60bbc7295e4bb663ab43e373fb6d888d7433ec89a487a91d4a59c289a9509ddd1bab33cd02a7bf37aaad78dbedf0b4ae5f2f35d15cb4e628 + +COUNT = 13 +QCAVSx = 07fab4e59328c700f74649bd90a7d51ff28958fe720daaab328cfc9b002aa706ceb39934db9ccf81deec95689ce8c776b4fc6542a82358cc51ebbc6d8e5322cb3fa6e4695e170fc1 +QCAVSy = 05acd45cffa29ddb34ee42e7410026798e37a8d1a9ce9f9294da5198164b69010c68c53281ccbfc407d141097da137e7849f228fdc1a07aa298be26ca771f47ac4feb2723d5a6666 +dIUT = 0017bab72d788f8b78b9bfc4912863c5a48922fe69e8a4cf5e6e91763efd5477a1cd439dedd0afea504e3b3af6823ea3089c0374ed9aee24a88516c8cf3afabe995b9b9675f3b5ab +QIUTx = 0161c14bbc84e42ec7677a8c3770065ecd1f0f44eac8242a715a61971e7e4ffff78ff57a1bf1b95cbfc2ed957d1195f9ea50809715c2439c7543e573520135426d47535b8bfc8533 +QIUTy = 01253633d02251464edcc53ed9e8a9ed9329320ef5eeaf35d64c59b9735c96e07f1a62ec17bcee4f04cd9a85a3eb504aaf37bb388c6c7d08d90aa0b68556b5c068ecbf0a5984460d +ZIUT = 062de5aa98b440c6cb7a1428f6b5e47452b30454eec4d651982b531121febbd5a3833b180017f7ddb5ce38d7bb1c842de1a8a8fc7fc981e24733b7662813fd010a4e757ca4ea5c28 + +COUNT = 14 +QCAVSx = 072676302ad18731b76202bc51429ebf7eccf6325f4e084c2f92e3288ed290488b9e36720e29daa2db1993a7d17ce8ef9d8ccec61de8a407176e2674c25d57bff2c46596358b3605 +QCAVSy = 03c0022d53229091e14af0f7450deca1cb5db821e71590608fe0986d73e88c915e5ee8dfebc8955913d9164f992f56394a662ef11c8214e8ada85df1b17b0b97414cdd662d188b5d +dIUT = 02ab2d43027b08f8abfa3598ef0144399a60b6037b17a3ae413d422efa2167e9ea4f19d7eca98d85c67c1fe85fbcbc1f12bafa30a85dbdf542466889315f1532defc5d181509f008 +QIUTx = 0328c0d67fd552ea10e5bdf7b87d50bf4dcba34dca569aeb869c5c7dc7d832ce30feed32e25a723793f97c557e2f978c5e1349e69b73ef9916001ffb0d6cdb2c6343e34538386e6e +QIUTy = 01d151b46ed004263cd9a5c0d46a840d03222631f92ff9280e95a35746cdbcafd9fed6811c7614b9d50aa2828dc7a275b39d3d418a349dd1e2b73211f4de9a34b42fca11b9760eca +ZIUT = 07c7eb4892816cc3388ebcdfb412984e05910c112dd15b8e5481719401701aceba22fcf35aab0c3b040096161011f6177097c505395d9d6d8a713f6a5100fb476adbe7b9cdf4b68b + +COUNT = 15 +QCAVSx = 06cd7931fcf1935f81f301479ed9ad0c6f9a05becf4e573a2ff409bafc442ec195f7e3fdfd08e58161d4e0fd37f62a969421b19cd48fe848a5d7f74b8137a7c726a9cbd37a2cf3b4 +QCAVSy = 04b5b2cd83b27895751c34d3ac5b960a133ec18b039c2e128d3441db4f76e8b75064094619b122e5fb2f1c2796559ad953c711e330dc7bf55edf29f095cae45557b7c8d5843d89bd +dIUT = 0049c6e4c05a197b24afd2707243ffbfd55b0088fd33d87dae4d21048f75f2b862563075241d2f36fdd0e9405ab42aa55cbf2095dabc3daedfae9deb922220783e8591cfd67600b1 +QIUTx = 001fe29a4c2dd000bbed129121b88edbb5c39b34003f170ac19fa9a85c5fe587aab821361f4963440f25acb49758810552f06b719a9eb43b720e9b7ad6ef9d41248d5f335f99515a +QIUTy = 01499db95808c719d24eb05c633db8b05cf969ca0bf656435b1fdf1b0928290f6a6bf880adb9fd53c86ec76e0f62ce89cbeb4c266f64a876d778231a0030c38aa00d66c6bd680785 +ZIUT = 05c638349000ec30881cd190c067e7f12b6b42d5842a8285a8ff0dc7e9c9eaf483309e48314fdc2ce7f9da6a468e549c8e70a50b68d07aee29708a98172209e5cd2e8c09cb66d982 + +COUNT = 16 +QCAVSx = 02984b653074c36a259ad956d5556512c2c731fa50f2005d0049a9d977de5c00b7a054c960cdd707896321490be433bd5effd44c564eaa2d5021175050c5bfc163cdb1e81df1335a +QCAVSy = 01a786d29098b334f5c1c4ae86a41bf275cc6787da7206916557a4f433192141034567e041d55d794a7707c7aaf28842d5c8f590375a43656918aa80e55b0285347cce8ffe1f15e8 +dIUT = 0186b31ce490c7f28f2793075a4ae645acb39e71ffe944ee62bf82587f1c3cbe288ce6024d8d035f107d9a4faed57a7b21ee1d6e7129a098004f22ccd52740c034a6df37b53d0732 +QIUTx = 06b15f1a859e3d80924611b20c1b94dff6bd0574fef81937f1e54d148d2d31f8c21b0ea9ce031c9455706f085a69fd492418558c7de9aadc2c9a996e7ed1feda329c7d7609bb6b22 +QIUTy = 032910544cb136e2c29aa33572aa6c3471a52ebca6b228bee749fa9ffe29296a4a5b6aa0c6dc9f095216e7b1513d81cba00794a3f558f74a1b541c73b2308f4f8e74028b5c2bcdf3 +ZIUT = 007a40a59b6632156a43158565a4eeaf80618e501c5ac5afdab4ce3cb76ac99a0bcd17e9eec549373ace8c96aac78e2af6600483a2c49ec81298a083d5237118de96a953999beb26 + +COUNT = 17 +QCAVSx = 01a8682e09eccd1868da202916a561ee8513c0d73470cd341aee79ed93556a3a6e7c7b20302ec74a0c5170a8e37d78a9b5d0de3900eb2a663a7247cf7943fd381d95b3aafd156167 +QCAVSy = 052fecc68f7695d4e41a080c47650d202874da163a1748e550373958e31bd0aae520996d30f384730f4854f5e54e68cc24958adc52e2a4c407356514f3ea7166056dc67e4d118fa8 +dIUT = 0341f8e86182de4fc3f43857250a929a41994d331da154c0249fa0d1c26a6de0e835fa08a8cc524e3dac286383f90bd2f4d2c75142f1d38108d9c062143c8e6edbbda0af87a76ad5 +QIUTx = 02c5c5eb7327402672573c37b492890343ab422b51bc65b600766ec1d07908ff03bcfde7694d832bcde52946339df0aab4074ae07a89f821f5a1130d2b73db0c423ae7a023ae2c18 +QIUTy = 0476ed3dbd936d1c36987a43512c8f0562e316122d05a7edd4e4248984c11f6eb85215d5aaa0262a95f20666c9dbf45248ae177d2dfffa3a6a950533298b5c3f4a1b62da1eafcd51 +ZIUT = 021fd2726973405fc30d2a1f2115907cbd0de90bb6bcb0496452e389b1b10ccf38e2400617040cf0dbb188f345337678b0ad8603dcfe926582d4321f384daec0943e2cd267f48343 + +COUNT = 18 +QCAVSx = 02cdaf139a0cda2800d61128ffe4d7323b34a0fcf48c9400479ff4c8291cbf46f16c41e4409aaedf14bc60a642b2d7baacde8e0051dd8ae01bf5ad2e6e6490c77cd406a999c565e6 +QCAVSy = 078edd29db6a3b87a11505b57c543ffb746a5b40fb83d7206180f3ae9fcb222c5411a77476660c7b311b646310905889a95a0f2fdc35d30fc61cc5560a2914232d62ad36386b9179 +dIUT = 0207a7382d8a22571226e0c06c2681d09bca19b5db7e7bbfc13ac208389df8168d77615e30ca86103936e53dd9af01cdfe24f508ec609399775ce84c8689f8d5f96f652e014e0de8 +QIUTx = 04608dc0512bc55c734cd562ac5825f7ca38b793f8ece9b981cc1c4032ddd8039164d0c646b42b2fd453b5a1d3a74ae23c32c7d584007de3cd34e33121b90fab3ada6621b3ac9785 +QIUTy = 06aa9ffbfd65c509370846707674ac723dac24a6f33a1e0bbcdf8b24ba32cf7bdec8fdc9233b757bc073d64dedf484c6fa01ef28e874fb0d34f58b0e32b18645c30bdcb516ee3841 +ZIUT = 07a47bdc7d54ecd391672f131b3214d0efc4d40195db1ec993a62fe9da875efff5403bd708fa491a01a94f4bddc7d516baffff9fbdd213ca1a4905f9aa679d65da25c0f1fd2afb0a + +COUNT = 19 +QCAVSx = 00051512e4a0dbc535c97be10ffa7425758382883040466601d5391bcb3582c11525293249f24497cc807216b34c92c1e075781c8391c3f6d3d14f88a1d50ea9fc75ff8d51ccf933 +QCAVSy = 039da46cac866ab347617ac5a8b4f1657034e3b8ddb66bc4273e2e1ce01641ece636979de8b2492dc69e88537c36b1c3ad0d35227f867e43df9c8917dce9f8c1ef3ba3cb5ca8ba52 +dIUT = 006ba8f12cc6e0e78df8cc6298848a740025e72c62d099e92584ac76f595ac1fc724cb06a85a07f0d4440faf3ddea2f265f2015dd059a16a03a29915b8731d604512ceef22b841f3 +QIUTx = 0636f435e80600666108737300773a8ed6ffa8ebf8307c81ff5f44353e91bad086331b8feff3f1cdb86e061bde5f71c5fb938f117e2226a97d2b66b098e9ff525182c816e702c6a9 +QIUTy = 01c1bd8afae6a94108fc2c755d5de3fa2a4b3471fc2a5cdf4adda68529bf180ff28db154ab4311247b392e93a335bbe8796608bbd6013f43cdcc846ec22267423c3cfda2ce8a3d96 +ZIUT = 07326196a7decc92c81ae5a0779c9a42f53d94cfa4c3a13f19dbb554138e0e864eee6bc93e39214e2f74705a4b172aab510444c93b5b3e62517bbb7279337102db1c61de349d9747 + +COUNT = 20 +QCAVSx = 004c2de5642431bcc6eb82efd4355540a8b5d23b12b0df7d31ad69425b94549877443ee8dd7c09cfbbed86f13665931d4b2a21759c33e10b4acfc63ba1ef61acaaa18c94e3cfc933 +QCAVSy = 01765b7a37eb806d43196d2931da1a1953742d3e0da7ccb67e0dfdba5e034914cce3ee6393bfde40670f406196067da8b293c6843593dd221c89bf97963676bd044e8c8ab8e717ad +dIUT = 010716f2e774f27f42de3f6c9694d8eca2179823091d202f2ba1629193a1c98700693398ffc83157f7ce4858e7535e3990d219bc249de164558cac807ee159778a012da19e5012bf +QIUTx = 0150b3adde162a7f09350dacf460419fe86b99dcd94f44283fba3e43d281b93bb54282812ce52265a94838968d67a9d6ecdc1b6cb64cf1594521c4749ea43d8e4ec045e645ff238b +QIUTy = 07b43321b6118b87c46c7b52288df5dd1cf7da6183ece5633b4c17cae362d821191f7d57923928339aadf7d85f7f19de9486709e4d2ddef42c55bb4d76a3cb50cad2a098ead5952a +ZIUT = 059052d3e1c66efa4b7dd39e74299e886367d8fe49d7cab90e4f051bec10316438fb29b1290dfdaec169decd622a1010cf0a0275008814f4861b4d83ba78515a8768d978be430011 + +COUNT = 21 +QCAVSx = 025038a0e72ae8c16e36e3e3b504ed7341ef709b9fec8be90177346d76ca7bc7133d0ec280acf066005c5cc10b52aa654335fe820a6617e560e270903ff1c2cc8af1398f24dfe2b0 +QCAVSy = 031074ca3931801a6acb765b6e9144172ed81d999ed9e835bd35526b03ef2a13f78376032b0eb8146c23132365fce176a7cbdca44b35aa379859f688ac26dc64c8149a4322d083d1 +dIUT = 01d0103fc7948af107e51f4d2cc0392b66808059d1f26cba05be6a381f522d4cb854137934accd1cea3360948e406d3108c943769dc700b4c9cc0cc1d84bab58a35e27eb240475f0 +QIUTx = 012bda8ded3ed7e8b6d39b5855a58d725b65e3857c2a674996eb393a3e3f91595bbfa87253a56ebac2b10ed406af9dbff53b22265fbeb5a769cace2b60b45dbf97ceed2b0a04db50 +QIUTy = 026454827efe29b324ae3f2d4c0dca3a3a95491511c531645acf545b45ef6ac4a50c09d3d21f213ca76b96fb18242ecbe08af68755de4e1077173475826eaabed26a75c369cd7b0f +ZIUT = 03acfa4b3d1c2a6b62af23bdff6a215a416d4437ce6cc114d17dc4201195987a5d7301da11b913254702d7172e31d64e59b24deaa3270f20445e51dc484f7a2b8c3cbeb0bb9efb28 + +COUNT = 22 +QCAVSx = 01bdfffd69c2e08fb03c853ef2ebd088e68d233fdb95f0b246de7955d615077dfd0b0ff02c64d01de793359096b85e057b1b7f9f59262dc2757f18243e182e1a0bfe9dcbb027d68b +QCAVSy = 0218be7d956029f139c19d2da346773b16d7afc858ab8dcb60d7e484aecec309cb3fea96af3903637e5db4db678bb5db9b0b18d83cf9ebc1b1aaf24f4367ec533684ce9d56582d43 +dIUT = 032d2f557fe47b8d280f682e24fda627dd7a58e9b00822a3aaf6eb7a014f476c17941adc5e2238a3080d706f1e16a451b7e92942779930c5670a473281cac78b858d1f1cc99b0aff +QIUTx = 040f3130e74b1c8eb265e7c4e6921411eb971418267e8dea879c2e8b563864f23a61b23422c9a06fa178a8a155e3e78457597587f3e35b79f19d0c2e185aef46db95819cbe127b10 +QIUTy = 01c91d27c2ae7113eb03be98e94d3ad6dec791fac2fe0d2c8c98b71371b058a649fa9c3fa3ccdbba932395c27affa20d95ac041bc9978e3f530829a2c64c89b1bcceac06854fb903 +ZIUT = 067a58e5b3287bb9aa83ed9ca2d718cf7165fb574b6a446c3019849cd1584673d561b574bc8f68419437c5e8113e060847cad3b5ddc2f67ad75bc1e3f04554e63a5e4945cfcb65f5 + +COUNT = 23 +QCAVSx = 008fc3b414f3412b403f01c253bd2226150225ddaab34d201089f49d79e5dcc2e3b68216faa66dac44529c7fe3ba4d28d815b088235955713bb7721383533b5d94221b4ed1e162b8 +QCAVSy = 02b32201de272b1b32b6a6a58ea22411c48f5dc5cf0f95872e6751ed622ceecea22a556975de6003869ae20af39b42ba8871789c82e8f3ad3cf6006f43bc4c7d4102032c43f8f797 +dIUT = 03eee29196a8be70eb3a310464059cc0c4c42f13487ab1a0762c2cbe304ebe63503e6c7068a7f4bc197f81f65b4295c14b210f3cb2378b67401fcf52bec02c13b61b6de14e1b7e5b +QIUTx = 0177acc5fe9f42f4de2d27ab9bf6f7e0eace303c266ff8b3469082aba9367e66440bd6b1bd8b6e1aec92b65e35aea8f007f09d4cd67eea5d6000736cabbb9dccc943ebb5656a0586 +QIUTy = 0716f1898e2a8c27319de7a2698f21d5de58a4b8b8dd02b5e433110d3977fee8ec5c089d170af02a4ad3c1fab44b0d1e2a3beba9e0719cd8bf8364478d686c4e35f7457d24d021d6 +ZIUT = 06b272ca3330c0cdfbe60a1746bc0ddea6257536cdd8e976f2517eb541460a3f0e6ea7fec2b495e0f57712c8cac35e8a7d64d876c29851bbfeb6fe726d57e0be43dc76a584ef9c93 + +COUNT = 24 +QCAVSx = 0565a82994d7e6f53eeb6bf67523ee680ffb770118673c3e15c3200e6c8d1f26cabaf00c1da48e6374316497cba5f19f17420f267633f40e5b06362789bff11adf596d5b1cf768ef +QCAVSy = 016b2d4daaca9c6bed976b2064ef54352a58ae34367835a6210e1578291c1de8d67c20bc3d6ffa620c87b3098a2b9f3abb8d2cacd5b2ee2b68399eac4e8f65cebdd66300fd049b5b +dIUT = 0169a2d87586944c3173bf9a2275e3080003db648c2d1e1c56e2c37ce0d7cd9f818ea6b7bba343f774ef0f334ea5c12ef0be7593d04ed945458d71e17112eb01d9041d2133b13473 +QIUTx = 051e521764265af7f01bcd9c3fd022dfdb2d4a2c58b3b23d2e550302c42aadd57d1df6fc18e465bd98442495eed22f3fd6700284c9fa7833b5165149b8e1a91e0e099a0a5732d5c2 +QIUTy = 0198e7e7d094e207528c583865d262a918fc2a39261e95c07dcbd044efd3981899078af3eb97398201a4650f0dccbf19f922c8dbc3839bf6be0053f84531c71843a9e6a102ab58d6 +ZIUT = 02da266a269bdc8d8b2a0c6bb5762f102fc801c8d5394a9271539136bd81d4b69cfbb7525cd0a983fb7f7e9deec583b8f8e574c6184b2d79831ec770649e484dc006fa35b0bffd0b + diff --git a/test/jdk/sun/security/ec/SigGen-1.txt b/test/jdk/sun/security/ec/SigGen-1.txt new file mode 100644 index 00000000000..83463a21f5b --- /dev/null +++ b/test/jdk/sun/security/ec/SigGen-1.txt @@ -0,0 +1,5879 @@ +# CAVS 11.2 +# "SigVer" information for "ecdsa_values" +# Curves/SHAs selected: P-224,SHA-224 P-224,SHA-256 P-224,SHA-384 P-224,SHA-512 P-256,SHA-224 P-256,SHA-256 P-256,SHA-384 P-256,SHA-512 P-384,SHA-224 P-384,SHA-256 P-384,SHA-384 P-384,SHA-512 P-521,SHA-224 P-521,SHA-256 P-521,SHA-384 P-521,SHA-512 K-233,SHA-224 K-233,SHA-256 K-233,SHA-384 K-233,SHA-512 K-283,SHA-224 K-283,SHA-256 K-283,SHA-384 K-283,SHA-512 K-409,SHA-224 K-409,SHA-256 K-409,SHA-384 K-409,SHA-512 K-571,SHA-224 K-571,SHA-256 K-571,SHA-384 K-571,SHA-512 B-233,SHA-224 B-233,SHA-256 B-233,SHA-384 B-233,SHA-512 B-283,SHA-224 B-283,SHA-256 B-283,SHA-384 B-283,SHA-512 B-409,SHA-224 B-409,SHA-256 B-409,SHA-384 B-409,SHA-512 BB-571,SHA-224 B-571,SHA-256 B-571,SHA-384 B-571,SHA-512 +# Generated on Tue Aug 16 15:27:42 2011 + + + + +[P-224,SHA-224] + +Msg = 699325d6fc8fbbb4981a6ded3c3a54ad2e4e3db8a5669201912064c64e700c139248cdc19495df081c3fc60245b9f25fc9e301b845b3d703a694986e4641ae3c7e5a19e6d6edbf1d61e535f49a8fad5f4ac26397cfec682f161a5fcd32c5e780668b0181a91955157635536a22367308036e2070f544ad4fff3d5122c76fad5d +d = 16797b5c0c7ed5461e2ff1b88e6eafa03c0f46bf072000dfc830d615 +Qx = 605495756e6e88f1d07ae5f98787af9b4da8a641d1a9492a12174eab +Qy = f5cc733b17decc806ef1df861a42505d0af9ef7c3df3959b8dfc6669 +k = d9a5a7328117f48b4b8dd8c17dae722e756b3ff64bd29a527137eec0 +R = 2fc2cff8cdd4866b1d74e45b07d333af46b7af0888049d0fdbc7b0d6 +S = 8d9cc4c8ea93e0fd9d6431b9a1fd99b88f281793396321b11dac41eb + +Msg = 7de42b44db0aa8bfdcdac9add227e8f0cc7ad1d94693beb5e1d325e5f3f85b3bd033fc25e9469a89733a65d1fa641f7e67d668e7c71d736233c4cba20eb83c368c506affe77946b5e2ec693798aecd7ff943cd8fab90affddf5ad5b8d1af332e6c5fe4a2df16837700b2781e08821d4fbdd8373517f5b19f9e63b89cfeeeef6f +d = cf020a1ff36c28511191482ed1e5259c60d383606c581948c3fbe2c5 +Qx = fa21f85b99d3dc18c6d53351fbcb1e2d029c00fa7d1663a3dd94695e +Qy = e9e79578f8988b168edff1a8b34a5ed9598cc20acd1f0aed36715d88 +k = c780d047454824af98677cf310117e5f9e99627d02414f136aed8e83 +R = 45145f06b566ec9fd0fee1b6c6551a4535c7a3bbfc0fede45f4f5038 +S = 7302dff12545b069cf27df49b26e4781270585463656f2834917c3ca + +Msg = af0da3adab82784909e2b3dadcecba21eced3c60d7572023dea171044d9a10e8ba67d31b04904541b87fff32a10ccc6580869055fec6216a00320a28899859a6b61faba58a0bc10c2ba07ea16f214c3ddcc9fc5622ad1253b63fe7e95227ae3c9caa9962cffc8b1c4e8260036469d25ab0c8e3643a820b8b3a4d8d43e4b728f9 +d = dde6f173fa9f307d206ce46b4f02851ebce9638a989330249fd30b73 +Qx = fc21a99b060afb0d9dbf3250ea3c4da10be94ce627a65874d8e4a630 +Qy = e8373ab7190890326aac4aacca3eba89e15d1086a05434dd033fd3f3 +k = 6629366a156840477df4875cfba4f8faa809e394893e1f5525326d07 +R = 41f8e2b1ae5add7c24da8725a067585a3ad6d5a9ed9580beb226f23a +S = a5d71bff02dce997305dd337128046f36714398f4ef6647599712fae + +Msg = cfa56ae89727df6b7266f69d6636bf738f9e4f15f49c42a0123edac4b3743f32ea52389f919ceb90575c4184897773b2f2fc5b3fcb354880f15c93383215d3c2551fcc1b4180a1ac0f69c969bbc306acd115ce3976eff518540f43ad4076dbb5fbad9ce9b3234f1148b8f5e059192ff480fc4bcbd00d25f4d9f5ed4ba5693b6c +d = aeee9071248f077590ac647794b678ad371f8e0f1e14e9fbff49671e +Qx = fad0a34991bbf89982ad9cf89337b4bd2565f84d5bdd004289fc1cc3 +Qy = 5d8b6764f28c8163a12855a5c266efeb9388df4994b85a8b4f1bd3bc +k = 1d35d027cd5a569e25c5768c48ed0c2b127c0f99cb4e52ea094fe689 +R = 2258184ef9f0fa698735379972ce9adf034af76017668bfcdab978de +S = 866fb8e505dea6c909c2c9143ec869d1bac2282cf12366130ff2146c + +Msg = c223c8009018321b987a615c3414d2bb15954933569ca989de32d6bf11107bc47a330ab6d88d9b50d106cf5777d1b736b14bc48deda1bc573a9a7dd42cd061860645306dce7a5ba8c60f135a6a21999421ce8c4670fe7287a7e9ea3aa1e0fa82721f33e6e823957fe86e2283c89ef92b13cd0333c4bb70865ae1919bf538ea34 +d = 29c204b2954e1406a015020f9d6b3d7c00658298feb2d17440b2c1a4 +Qx = 0e0fc15e775a75d45f872e5021b554cc0579da19125e1a49299c7630 +Qy = cb64fe462d025ae2a1394746bdbf8251f7ca5a1d6bb13e0edf6b7b09 +k = 39547c10bb947d69f6c3af701f2528e011a1e80a6d04cc5a37466c02 +R = 86622c376d326cdf679bcabf8eb034bf49f0c188f3fc3afd0006325d +S = 26613d3b33c70e635d7a998f254a5b15d2a3642bf321e8cff08f1e84 + +Msg = 1c27273d95182c74c100d85b5c08f4b26874c2abc87f127f304aedbf52ef6540eba16dd664ae1e9e30ea1e66ff9cc9ab5a80b5bcbd19dde88a29ff10b50a6abd73388e8071306c68d0c9f6caa26b7e68de29312be959b9f4a5481f5a2ad2070a396ed3de21096541cf58c4a13308e08867565bf2df9d649357a83cdcf18d2cd9 +d = 8986a97b24be042a1547642f19678de4e281a68f1e794e343dabb131 +Qx = 2c070e68e8478341938f3d5026a1fe01e778cdffbebbdd7a4cd29209 +Qy = cde21c9c7c6590ba300715a7adac278385a5175b6b4ea749c4b6a681 +k = 509712f9c0f3370f6a09154159975945f0107dd1cee7327c68eaa90b +R = 57afda5139b180de96373c3d649700682e37efd56ae182335f081013 +S = eb6cd58650cfb26dfdf21de32fa17464a6efc46830eedc16977342e6 + +Msg = 069ae374971627f6b8503f3aa63ab52bcf4f3fcae65b98cdbbf917a5b08a10dc760056714db279806a8d43485320e6fee0f1e0562e077ee270ace8d3c478d79bcdff9cf8b92fdea68421d4a276f8e62ae379387ae06b60af9eb3c40bd7a768aeffccdc8a08bc78ca2eca18061058043a0e441209c5c594842838a4d9d778a053 +d = d9aa95e14cb34980cfddadddfa92bde1310acaff249f73ff5b09a974 +Qx = 3a0d4b8e5fad1ea1abb8d3fb742cd45cd0b76d136e5bbb33206ad120 +Qy = c90ac83276b2fa3757b0f226cd7360a313bc96fd8329c76a7306cc7d +k = 1f1739af68a3cee7c5f09e9e09d6485d9cd64cc4085bc2bc89795aaf +R = 09bbdd003532d025d7c3204c00747cd52ecdfbc7ce3dde8ffbea23e1 +S = 1e745e80948779a5cc8dc5cb193beebb550ec9c2647f4948bf58ba7d + +Msg = d0d5ae3e33600aa21c1606caec449eee678c87cb593594be1fbb048cc7cfd076e5cc7132ebe290c4c014e7a517a0d5972759acfa1438d9d2e5d236d19ac92136f6252b7e5bea7588dcba6522b6b18128f003ecab5cb4908832fb5a375cf820f8f0e9ee870653a73dc2282f2d45622a2f0e85cba05c567baf1b9862b79a4b244e +d = 380fb6154ad3d2e755a17df1f047f84712d4ec9e47d34d4054ea29a8 +Qx = 4772c27cca3348b1801ae87b01cb564c8cf9b81c23cc74468a907927 +Qy = de9d253935b09617a1655c42d385bf48504e06fa386f5fa533a21dcb +k = 14dbdffa326ba2f3d64f79ff966d9ee6c1aba0d51e9a8e59f5686dc1 +R = ff6d52a09ca4c3b82da0440864d6717e1be0b50b6dcf5e1d74c0ff56 +S = 09490be77bc834c1efaa23410dcbf800e6fae40d62a737214c5a4418 + +Msg = 79b7375ae7a4f2e4adad8765d14c1540cd9979db38076c157c1837c760ca6febbb18fd42152335929b735e1a08041bd38d315cd4c6b7dd2729de8752f531f07fe4ddc4f1899debc0311eef0019170b58e08895b439ddf09fbf0aeb1e2fd35c2ef7ae402308c3637733802601dd218fb14c22f57870835b10818369d57d318405 +d = 6b98ec50d6b7f7ebc3a2183ff9388f75e924243827ddded8721186e2 +Qx = 1f249911b125348e6e0a473479105cc4b8cfb4fa32d897810fc69ffe +Qy = a17db03b9877d1b6328329061ea67aec5a38a884362e9e5b7d7642dc +k = ab3a41fedc77d1f96f3103cc7dce215bf45054a755cf101735fef503 +R = 70ccc0824542e296d17a79320d422f1edcf9253840dafe4427033f40 +S = e3823699c355b61ab1894be3371765fae2b720405a7ce5e790ca8c00 + +Msg = 8c7de96e6880d5b6efc19646b9d3d56490775cb3faab342e64db2e388c4bd9e94c4e69a63ccdb7e007a19711e69c06f106b71c983a6d97c4589045666c6ab5ea7b5b6d096ddf6fd35b819f1506a3c37ddd40929504f9f079c8d83820fc8493f97b2298aebe48fdb4ff472b29018fc2b1163a22bfbb1de413e8645e871291a9f6 +d = 8dda0ef4170bf73077d685e7709f6f747ced08eb4cde98ef06ab7bd7 +Qx = 7df67b960ee7a2cb62b22932457360ab1e046c1ec84b91ae65642003 +Qy = c764ca9fc1b0cc2233fa57bdcfedaab0131fb7b5f557d6ca57f4afe0 +k = 9ef6ebd178a76402968bc8ec8b257174a04fb5e2d65c1ab34ab039b9 +R = eef9e8428105704133e0f19636c89e570485e577786df2b09f99602a +S = 8c01f0162891e4b9536243cb86a6e5c177323cca09777366caf2693c + +Msg = c89766374c5a5ccef5823e7a9b54af835ac56afbbb517bd77bfecf3fea876bd0cc9ea486e3d685cfe3fb05f25d9c67992cd7863c80a55c7a263249eb3996c4698ad7381131bf3700b7b24d7ca281a100cf2b750e7f0f933e662a08d9f9e47d779fb03754bd20931262ff381a2fe7d1dc94f4a0520de73fa72020494d3133ecf7 +d = 3dbe18cd88fa49febfcb60f0369a67b2379a466d906ac46a8b8d522b +Qx = b10150fd797eb870d377f1dbfa197f7d0f0ad29965af573ec13cc42a +Qy = 17b63ccefbe27fb2a1139e5757b1082aeaa564f478c23a8f631eed5c +k = 385803b262ee2ee875838b3a645a745d2e199ae112ef73a25d68d15f +R = 1d293b697f297af77872582eb7f543dc250ec79ad453300d264a3b70 +S = 517a91b89c4859fcc10834242e710c5f0fed90ac938aa5ccdb7c66de + +Msg = 30f0e3b502eec5646929d48fd46aa73991d82079c7bd50a38b38ec0bd84167c8cf5ba39bec26999e70208af9b445046cd9d20c82b7629ca1e51bdd00daddbc35f9eb036a15ac57898642d9db09479a38cc80a2e41e380c8a766b2d623de2de798e1eabc02234b89b85d60154460c3bf12764f3fbf17fcccc82df516a2fbe4ecf +d = c906b667f38c5135ea96c95722c713dbd125d61156a546f49ddaadc6 +Qx = 3c9b4ef1748a1925578658d3af51995b989ad760790157b25fe09826 +Qy = 55648f4ff4edfb899e9a13bd8d20f5c24b35dc6a6a4e42ed5983b4a0 +k = b04d78d8ac40fefadb99f389a06d93f6b5b72198c1be02dbff6195f0 +R = 4bdd3c84647bad93dcaffd1b54eb87fc61a5704b19d7e6d756d11ad0 +S = fdd81e5dca54158514f44ba2330271eff4c618330328451e2d93b9fb + +Msg = 6bbb4bf987c8e5069e47c1a541b48b8a3e6d14bfd9ac6dfaa7503b64ab5e1a55f63e91cf5c3e703ac27ad88756dd7fb2d73b909fc15302d0592b974d47e72e60ed339a40b34d39a49b69ea4a5d26ce86f3ca00a70f1cd416a6a5722e8f39d1f0e966981803d6f46dac34e4c7640204cd0d9f1e53fc3acf30096cd00fa80b3ae9 +d = 3456745fbd51eac9b8095cd687b112f93d1b58352dbe02c66bb9b0cc +Qx = f0acdfbc75a748a4a0ac55281754b5c4a364b7d61c5390b334daae10 +Qy = 86587a6768f235bf523fbfc6e062c7401ac2b0242cfe4e5fb34f4057 +k = 854b20c61bcdf7a89959dbf0985880bb14b628f01c65ef4f6446f1c1 +R = a2601fbb9fe89f39814735febb349143baa934170ffb91c6448a7823 +S = bf90f9305616020a0e34ef30803fc15fa97dffc0948452bbf6cb5f66 + +Msg = 05b8f8e56214d4217323f2066f974f638f0b83689fc4ed1201848230efdc1fbca8f70359cecc921050141d3b02c2f17aa306fc2ce5fc06e7d0f4be162fcd985a0b687b4ba09b681cb52ffe890bf5bb4a104cb2e770c04df433013605eb8c72a09902f4246d6c22b8c191ef1b0bece10d5ce2744fc7345307dd1b41b6eff0ca89 +d = 2c522af64baaca7b7a08044312f5e265ec6e09b2272f462cc705e4c3 +Qx = 5fad3c047074b5de1960247d0cc216b4e3fb7f3b9cd960575c8479fc +Qy = e4fc9c7f05ff0b040eb171fdd2a1dfe2572c564c2003a08c3179a422 +k = 9267763383f8db55eed5b1ca8f4937dc2e0ca6175066dc3d4a4586af +R = 422e2e9fe535eb62f11f5f8ce87cf2e9ec65e61c06737cf6a0019ae6 +S = 116cfcf0965b7bc63aecade71d189d7e98a0434b124f2afbe3ccf0a9 + +Msg = e5c979f0832242b143077bce6ef146a53bb4c53abfc033473c59f3c4095a68b7a504b609f2ab163b5f88f374f0f3bff8762278b1f1c37323b9ed448e3de33e6443796a9ecaa466aa75175375418186c352018a57ce874e44ae72401d5c0f401b5a51804724c10653fded9066e8994d36a137fdeb9364601daeef09fd174dde4a +d = 3eff7d07edda14e8beba397accfee060dbe2a41587a703bbe0a0b912 +Qx = 6dd84f4d66f362844e41a7913c40b4aad5fa9ba56bb44c2d2ed9efac +Qy = 15f65ebcdf2fd9f8035385a330bdabec0f1cd9cc7bc31d2fadbe7cda +k = 7bb48839d7717bab1fdde89bf4f7b4509d1c2c12510925e13655dead +R = 127051d85326049115f307af2bc426f6c2d08f4774a0b496fb6982b1 +S = 6857e84418c1d1179333b4e5307e92abade0b74f7521ad78044bf597 + +[P-224,SHA-256] + +Msg = 2b49de971bb0f705a3fb5914eb7638d72884a6c3550667dbfdf301adf26bde02f387fd426a31be6c9ff8bfe8690c8113c88576427f1466508458349fc86036afcfb66448b947707e791e71f558b2bf4e7e7507773aaf4e9af51eda95cbce0a0f752b216f8a54a045d47801ff410ee411a1b66a516f278327df2462fb5619470e +d = 888fc992893bdd8aa02c80768832605d020b81ae0b25474154ec89aa +Qx = 4c741e4d20103670b7161ae72271082155838418084335338ac38fa4 +Qy = db7919151ac28587b72bad7ab180ec8e95ab9e2c8d81d9b9d7e2e383 +k = 06f7a56007825433c4c61153df1a135eee2f38ec687b492ed40d9c90 +R = 0909c9b9cae8d2790e29db6afdb45c04f5b072c4c20410c7dc9b6772 +S = 298f4fcae1fe271da1e0345d11d07a1fca43f58af4c113b909eedea0 + +Msg = 1fa7201d96ad4d190415f2656d1387fa886afc38e5cd18b8c60da367acf32c627d2c9ea19ef3f030e559fc2a21695cdbb65ddf6ba36a70af0d3fa292a32de31da6acc6108ab2be8bd37843338f0c37c2d62648d3d49013edeb9e179dadf78bf885f95e712fcdfcc8a172e47c09ab159f3a00ed7b930f628c3c48257e92fc7407 +d = 5b5a3e186e7d5b9b0fbdfc74a05e0a3d85dc4be4c87269190c839972 +Qx = 897089f4ef05b943eeac06589f0e09ccc571a6add3eb1610a2fc830f +Qy = 62ba3f6b3e6f0f062058b93e6f25b6041246c5be13584a41cae7e244 +k = 5b6f7eca2bcc5899fce41b8169d48cd57cf0c4a1b66a30a150072676 +R = f12c9985d454ffbc899ebbbb6cf43e3debcac7f19029f8f2f35cce31 +S = 12fcb848adbd8b1b4c72b2b54a04d936e4a5f480ae2a3ea2e3c1baae + +Msg = 74715fe10748a5b98b138f390f7ca9629c584c5d6ad268fc455c8de2e800b73fa1ea9aaee85de58baa2ce9ce68d822fc31842c6b153baef3a12bf6b4541f74af65430ae931a64c8b4950ad1c76b31aea8c229b3623390e233c112586aa5907bbe419841f54f0a7d6d19c003b91dc84bbb59b14ec477a1e9d194c137e21c75bbb +d = f60b3a4d4e31c7005a3d2d0f91cb096d016a8ddb5ab10ecb2a549170 +Qx = 40a4ab1e6a9f84b4dedb81795e6a7124d1cfdfd7ec64c5d4b9e32666 +Qy = 83aa32a3c2fc068e62626f2dafce5d7f050e826e5c145cd2d13d1b27 +k = c31150420dfb38ba8347e29add189ec3e38c14b0c541497fb90bf395 +R = bf6c6daa89b21211ea2c9f45192d91603378d46b1a5057962dafaf12 +S = cb6b237950e0f0369323055cd1f643528c7a64616f75b11c4ddd63c7 + +Msg = d10131982dd1a1d839aba383cd72855bf41061c0cb04dfa1acad3181f240341d744ca6002b52f25fb3c63f16d050c4a4ef2c0ebf5f16ce987558f4b9d4a5ad3c6b81b617de00e04ba32282d8bf223bfedbb325b741dfdc8f56fa85c65d42f05f6a1330d8cc6664ad32050dd7b9e3993f4d6c91e5e12cbd9e82196e009ad22560 +d = c8fc474d3b1cba5981348de5aef0839e376f9f18e7588f1eed7c8c85 +Qx = 66f49457ed15f67ed4042195856f052fe774077f61cebcb9efddc365 +Qy = 3a6e3f3423eec7308a69eb1b0416d67cc3b84d24f251d7cbdb45c079 +k = 5e5405ae9ab6164bb476c1bb021ec78480e0488736e4f8222920fbd9 +R = 7b7beaf9f696ca1a8051527478c4c075ab45aa4768937886dbf38618 +S = 93d4cf110a37c5a6f15c4e6024822118539e860dee2f60b8c3f462f6 + +Msg = ef9dbd90ded96ad627a0a987ab90537a3e7acc1fdfa991088e9d999fd726e3ce1e1bd89a7df08d8c2bf51085254c89dc67bc21e8a1a93f33a38c18c0ce3880e958ac3e3dbe8aec49f981821c4ac6812dd29fab3a9ebe7fbd799fb50f12021b48d1d9abca8842547b3b99befa612cc8b4ca5f9412e0352e72ab1344a0ac2913db +d = 04ef5d2a45341e2ace9af8a6ebd25f6cde45453f55b7a724eb6c21f6 +Qx = 8d642868e4d0f55ee62a2052e6b806b566d2ac79dbde7939fe725773 +Qy = 79505a57cd56904d2523b3e1281e9021167657d38aeb7d42fc8ec849 +k = ec60ea6f3d6b74d102e5574182566b7e79a69699a307fee70a2d0d22 +R = 2fd7fcbb7832c97ce325301dd338b279a9e28b8933284d49c6eabcf6 +S = 550b2f1efc312805a6ed8f252e692d8ee19eaa5bcd5d0cda63a1a3f0 + +Msg = 4cc91f744ac858d3577e48813219aa3538dd813b186b42d1e6218376f07cc1cc448ddd6b37240e98bf953f49cf54d65c12878b33c0bf6eb1c60254f0b6fa974f847e53abc56773eef6f29885dfc619e6a48fc15a667ca94001a0c945b6357a53221b0f4b266181456b0d2d25e90708777f1a6f85971c00140c631c1991e0fd06 +d = 35d4bbe77d149812339e85c79483cb270bdac56bbf30b5ef3d1f4d39 +Qx = 7924b1d7f5920cce98e25094e40f2eb3eb80d70b17e14b3d36c3671c +Qy = 26c5af35f71e61858582b7cc2b41790597c53ee514ffdf7a289d108c +k = 751869c1d0e79eb30aae8fbfb6d97bfa332123fd6b6c72c9cd3c1796 +R = 26bb1b92b0f01e94eba5fa429271371db527ce857abba13bd1103f64 +S = 836aba9c63e1252c2b2d72a21e6a41b82241ebe32647e7f814652bcb + +Msg = 58f43cc1924de4bc5867664adbc9d26b4f096a43aca47c27c52851b006dc2a658919ef9ce5b5ac48372703be15ac51631c2bd84b88f479f113b0569a9a09e230ec1e8e573474c6075284d3e57d973829af35325d9e7dab4a5f9b065155bbcaff3642a82ef4c9b9e127d3575c050721653da3b087d3fa394192897a5519527d19 +d = 2c291a393281b75264c9b8817af684fa86a1cdc900822f74039dc5d6 +Qx = 18cb5826ad60e6696bf07655032a3749f6577ca36da3ccd6e66a137c +Qy = 194e14820fe02d784fd1363ff7a30399518309765bd3f4412d646da2 +k = e2a860416229dfd3f5a5cc92344ca015093a543943a0d8f73bf2b2fd +R = 00e300c1ef4a8c4ca5da6413856f8981db49de29bdf03f32ffc3ceab +S = f250f18a51ba5f63e1584097841099fa6ae4e98ee458c061d1d5aed7 + +Msg = 113a2806b052fde683ee09453098e402204155afb3776fd1cad3a9103421d327eab8f9ec0dd050ffcc83f93b34ea707705fabeccfe43ab1a71c95298fd3ec769d99ead1066950eee677d225816e0faad19cf69e1b35d16771689e2092cafe16d7c0dd7b0db73fffb8d0f3eaed83004dd21e753530ec939c89ba25578fa5f785b +d = 831ea25dbeda33d272a1382c5def0e83929170ab06a629eed6ee244b +Qx = 076518e393940d42dfd09819409d66966d8c9189c83d554a9cc8a082 +Qy = 44d0ceaf4c0f50e46bea4a52e30423ce3ada19edd363ac5694c65cb8 +k = 6be6dd9f6a083915ccba54626caf12d246d3aece0a7eda7d8d85599c +R = ff1460946e06fb6f5d35e8d2625ca70ffb9b45308e3fabf6ad8351b1 +S = 6029aa3990918e8cb8a388d53b0772e5cdfff49c3405fe0d3a95933a + +Msg = 64cbfc8f2e2149a31b3e8a80c4a552f6c62aaeb7990b6e0ee55500a9d17be04213406578caf315951086dff5c2af3b5ce17d425d185101ef26f86396ba3a129a4f3f8e2dd595f59efb6c0f5c2dcc394569d7268695e9ac7daa84203f1f1895f1f9e4b514a5c9cd23baa63454710144fe735ad9b8f42d8c43267aa434a26d7e5f +d = 70f74c7324ef137318b610ead8ddc5b964e0eed3750b20612fc2e67b +Qx = 279649e2a2918e683520cde3fc98b0ae58a7100e8de35e7c9cc797b6 +Qy = aa4de6be34be61f02880139787b9038f4554a8ef1c994b887c2974b5 +k = 8e984864f86f7a2a73f3edda17dbccd13fac8fa4b872814abf223b1b +R = 3b18736fa11d04e27e2614cda03a63ec11a180f357b0b3192920d09c +S = 2f0f3dbd570727b14fbb29155538e62c930dd51c4035275c1365dc60 + +Msg = a10a11c8e30fff118d371daf824f16c08200b83ea059436466a4611ccac93b2dea2de8c1006f946196aef7fe9b0c251a391b0340f21797798278b412ff2b53842eec6450728e2bca062f8337a2c204b9ea04ff660cd4d4db559f2f11c4d8ef199021339fcc82396f7a93926cf5f247e37d8067fe50692de54f102bd5ab51925c +d = 026be5789886d25039c11d7d58a11a6e1d52cb1d5657561f2165b8a8 +Qx = 3fa617c50b177da1a2bdb98b780ad21ad1195c4bd24465f6187de3c9 +Qy = e3fd8d8876dfd03a4a4e31a1acad3a08d983826d286c250c4e5620c1 +k = 0128b8e3f50731eb5fcc223517fc0cf6b96cd1d2807eb4524bc46f77 +R = 3a6b633f96f3d0b6d54f7fb29ac33709e4f0dd8fa0e51606ed9765ca +S = 63e8c119dfa51784decd864f6911f2210a80f8f02d472d88df10d119 + +Msg = b3f720bf566ffa369259f4361959ae0641d2755ec264a4c4349981df2b02563275b2b9adb5aee47f7a456760a971991ffed6b17809bb9694138d1677fa916123795239353158fc6b22d10f20d26f5d2dcd8c56c44373eea5b93067dba2d7c5318dac2e9e8714873cb1b37f58c011fd14fa1e535554efe05f468bfc8e11cd8b99 +d = e79c18d935c2839644762867aa793201f96a3cde080c5968412ce784 +Qx = b7ae1e992b1c7fde1141f40bd913358538ca0f07f62b729f13cea327 +Qy = 811252d12120e04805fc171a439d382c43b68a21e1a0bdf5e4ec1da4 +k = 7abedab1d36f4f0959a03d968b27dd5708223b66e0fc48594d827361 +R = d35047d74e1e7305bb8c1a94e8ae47cb1591c3437a3e185e00afe710 +S = d9c425c9d5feb776ac8952e6c4eee0ecd68aef2f0e7bff2e49c9185e + +Msg = 0a398a46df7ccc48d1e7833f8bbc67100f1ef77a62dc78bbc115b2a662f9591fbaaa91ad3d788e2fdd1b3164e45293d4f5686c151296901768028ac80ded4bf89c647ad35f0c7c4cb318c0c757c1d83c44d850e5fd4677281b3f13b1ee54de79c8c042813f9d3312dcc6111a68299cb7e829557d7f3d96e702f65aefc6499415 +d = 0d087f9d1f8ae29c9cf791490efc4a5789a9d52038c4b1d22494ad8c +Qx = cd95cf8fb1cd21690f40d647f2353672a1076cc6c46bddaad2d0fc56 +Qy = 934262f74d9ee0f8a2754f64cb7415923d64bf00c94a39b52803f577 +k = 557d0e3995dc6377b3911546dd7aeaeec62a6d8f2af6a274382fc37f +R = 56df0ea6afdcc232ceb41729eec00cf906b69b6e28423a36d3c92cc5 +S = f4f70fd948c9a147f55317fdea7b8a84c33e721014552d5800d63edc + +Msg = 8c33616821a6038b448d8918668977fcf1ef5aa0cf7c341837b39bbcc9bca875a3757f4b392630e9995b9bbe4eb66978b877586adaa02f99d2344dae082a7603351d8ffcfca081ab403cd0acb90d078dd1d0789c2eb3185c62bff2d9f04cd38e509e3b83c12ed0a5c6808fc42f7ba5b06acdc496c8ad9be648ee6a4505f8560f +d = 0830aebb6577d3a3be3ba54a4501c987b0e0bb593267b9bbadb66583 +Qx = b88652020e083ccc1c43dc83d1881884dd4c7e3b4e3460b344b1ea64 +Qy = 22b69b517f86d7c26dc37c0f8feb4bb07fe876149fbcc3334fd2805b +k = e4f4a3280574c704c2fde47ca81ec883d27f2c5a961a294db7cda9d2 +R = b30b8a0079d9a134b5e1618c2ac63e3fbe0e95866b9dbc5f423f2707 +S = 3dc36746610271ef66e0aa52cc2ccadc5c9b08dc769e4dc4f6538c11 + +Msg = 94d56535fd4edfe67a0daa6579f9d53bf6b7b8830ae2aeb62892ff59f18756ddf2811b449c7d20d65d54f8507de4e7c50eaa084830637812aa4b250a4d61ab67845be36e4a41cdc0a70f8d6e3a63d4514f0dc197e6486015046a316153d5f3a3a4a0ae1ed7ea5fa55e12e73d333333685c02e0eb636234ea7e6d4b76b4b76b5a +d = 2acc9b97e625263e8e4cd164302c7d1e078bfcdd706111a13ccda5b2 +Qx = ce1a06f82df874dded37cca03b56c0648e4e8917ecd40ee73ee61588 +Qy = ceb6177b8f1ac7c5c6e6e1f7737cc3026952ee392badd2cd7af32f9d +k = e401fa80f96480d437ed4f61a783888062ec33d530b188fd48016a6d +R = 28674f447c4742e4087bbccfb522fbad4e18b56031d2ce8f532b078a +S = a5a7a13d15b423dd17771f73cea98d89dbffa846cc209b45c0e29b76 + +Msg = 5d8ebdf9eb28b47bdafaa36bf0b66a9eaf99b6c83959da4f2b1151b4f4ecd28fb115a64c0cb9491093a7e9b9c53ec423e4c72e7765bb9c818da0e8c428667e44474a71db4867130c77c40bfd8544b2d7b9d6464d2b8e6a48482153256a32437c3a747231f51134dd14c703407e31146a6fcde23bededcf16950486e90ca69ac0 +d = f4e873d4fb944fb52323406f933815092b7672221de4d1c45917f3fc +Qx = 0dc2cdddb990341adb1de73f02d87fc3822485a659a15145f4251d5f +Qy = cf78b2a83c7352eda1af2c74e1804ea04b35f76c04e89d90281dc2bb +k = 5d1476c682a64162fd2fdc82696fc8cab1469a86f707ea2757416e40 +R = 82982b38ed465138df4018d7cfb835edcb591cb57446ca49d163782b +S = 8ef1d7b326cabee7f7ab95b7b98d3c27a069c0fd95a1599c0ccb422b + +[P-224,SHA-384] + +Msg = 25e4416695f77551fdce276355528ccf1ddc2483821c5d22d751d50111ca2fadc6593b52c74f4b5957494f1df25b0b2f86950d0d19229ec6506fee8581d2dd09d48418b146ff16bd84a17ca0dc83b1888eb407376da6c8a88fa1e60b8c2a2471dfde4b3996ef673d5bde3d70c434dc9f2488e9de16ae657d29e5e59ec922a1ec +d = 62c572ee0d6f81b27e591d788bfc2f42b5105d2663078dfb58069ebd +Qx = bd6ba605639b98fa8113a16a3bb004ddfaec901c98a931206165f4a5 +Qy = a3190b10ef39e88abd60b2293b4707512b45c6c5ed5794cc11454427 +k = 0f0bb1e428bcdebf4dc62a5278068efc0f8ce75f89e89b3630f102b2 +R = aac0ea27e129f544abcc77f110e70bbdd5aa3e425dc39d5e8887025d +S = 10e5dd06aee6b8419a04aa33d9d5678b0039c3acc3c4b61fe106bfdc + +Msg = 9164d633a553deccf3cbd2effccf1387fa3177cd28c95d94a7d1a3e159c5e5c027758cc26493301b2f4d141d8d07a5fe5fead987ce5f30abeafcb48c302afc6c2309f0e93d9b6818cbb6972d222cb7b01302dfe202ae83b89f53150ae4a0e2b8fc0fd1091f19b4ab2e6ab213ab322d04f2c5f57113bfad3c5675227237abf773 +d = e2f86bf73ba9336fa023343060f038e9ad41e5fe868e9f80574619a3 +Qx = f5d5346f17898ea6bbdfff19c216a8757a5dc37b95315f5481628381 +Qy = ae61fd172ac8b7a4f13870a932dece465834cbd4f50bbcfb802c824e +k = 35724ac043e3b44b73b5a7919cf675190306d26aa67c27c28c873534 +R = 535147c265af138eec50c7fb570bcc8d2e6f675597b0fcc034e536bc +S = 743812c188a1dddf9fb34b90738f8b2e58760d6cd20ccceb1bb9c516 + +Msg = 019df05929321ecea7ee1de4f412aba1c8d3c24437db04b194a68a0a59dd871be10bd3a4be6edf551350ea49fc7155a4d887e1221486291abe77a30633a4c4f7868fe2df24311cba0c73804883954460e122387ed414111ff96ff1aebac8b6a6491d8a0d16e48a63bf3d027c0f68ee4a4b234d73b412196706af8ea022b4dcef +d = b0a203438e2586d7575bc417a4a798e47abc22aa3955b58fc2789f17 +Qx = dc5d217862a1e5b00c95affa9d8b925a72b9beaeb7a86dc397e788d8 +Qy = 5f05f8e976ae1eb1036eca6d683a82850795bf9127dee5f8b2859445 +k = 408e9c8b1f33136d6ddb93ff3a498bc09d4eee99bf69cdd5af0aa5a2 +R = 1b5a964c8b1fc634c6e2b82322499df1d7f0c12a4d2a77723c816ab8 +S = cf54599a36ca064fae0aa936de5266f87704409d22a15d28c01b7f2a + +Msg = 5d09d2b1d3fa6e12c10d8b26dc9aabc8dc02bd06e63ff33f8bb91ede4b8694592a69e4ed4cdf6820069e2b9c7803658949e877ffe23bf90bcf5ce1409c06c71d86885a94048b05ac0ec9db193e489a5a2bfa367caf6aa8ecdb032be366174343f6875d2fe1785e8d77334f5f469cec64998e08d3303e5c9a1923b34fdc105d65 +d = efcfa50fad6fb2065f9a55f28c0c42fa24c809ccb19b6fc6d8ffb085 +Qx = 61521a0cfb72be77ba33cb3b8e022743cd9130ff49e97093b71aa178 +Qy = ce0819aedaf6fce639d0e593f8ab0147eeb6058f5f2b448231584ea9 +k = d1eea821f286eae6ebc1f61b08f9ad4323a3787e94af4c32cd31351b +R = b37caaa71103752ac559f9eb4943324409ebfa8b585f684dcaa5c411 +S = 7c28e7619e2944ab4b7be022878c8052ebdf2cae5dff4f976c49686a + +Msg = 50f6dfc81c6cf189e0a310f992907fe93356cee9dea9a41c7671a8daf3f4cfe0c459ce6122c1e731dbf7593419d7114cb73b46956158a982c5d52c72f43f0f822046093c69aeff1f7e4cd8af00ba655c5baa2e7b6a400b4be1f6fd51b3e4cfb35a69c80a28c5cafb771b6c2e52e0aeef0e3fd045e8d40745f3f8b74fd969f816 +d = 61a17816937987764cdc064dc7b5b4f5b16db1023acdfe25902957dd +Qx = a7e975c0a8f87c683bb8e31bc160843a7b69c945f4850bd60e1c08c0 +Qy = 8930a454dcc2aa13bed7ea89368b2c9d689d816b2acf4e52585ee9c4 +k = 44b1fdec2629f9075f89c134ac28ff19bfddaa9db02a5d7f853582b4 +R = b0f5635d8bc9c53a1d54a3ec63de59ed66e6b2358d4ab79755414326 +S = 67c68fe265c7e5aba4232deeafb88545a2aa266fb9f2c2bb3f3ae8d2 + +Msg = e90129ac6672c85bb7b6b18e9dc199c96c81fd65034b53c77818364d512366fb9cd1bc7c82404c451e561fc1ed916c0948f6ac561b33a1ccca093f07684b8c2bafa9e966377bd208556018a5bafb9edcecf70498c7140fe9c8cf3ad8b8c3b0aa489df797944465047465415bb0e24333235fcdd59a98829a3941eaaf62033e82 +d = 79d5367314ec664aa0f6ca36f95549502a05bf8400bf532d669fab8d +Qx = 3191f0237102dac159032ab2dde53cf56c9ec827b5caddfe9e83c02a +Qy = b496b1bdcca4434ac0d0d91ea38ff3bc33f9f54095bfe17796d5a9e2 +k = da529c52f5cc1f435d873109cd991d6cd7e1631d9ff1dd9521dd5db6 +R = 8e0ac63903f4921755430572c3f08bc272790639bdf1009fe2a9a714 +S = 6278c841a2d0a270791fe54b36c49d426d67907aa4e4f59c8638ad97 + +Msg = 3c9a483c9bee33b601549c592a82e95b4319b1e74b777877f0971bcb4273716b268e8f99f876e42f942f4cf08284896bbc1ffbf094ac0956c3cedfc3580cffa8c74fc6db29a371f2da2d05edb9185ece741fe0d3fabfe9d5b4d373755ebed13dc6840cfa3283b9ea46ec8b95c434f253ae86998182e9cc0e95ee64f323fc74b0 +d = 1320eedad4745121793a7eaf732b0b4498f7cb456cac8cf45a1f66f0 +Qx = 9fdd99906ab77fd29e9021bde947d05a7a9eb153612269bfb0899bc9 +Qy = 681b65b9ac8e4c2899bb622dafb253b7bf5a6e38e5f6595f997c291a +k = 66ed8d8934633f4125f593cf1b1d3745c4db1f15dde60cf46ca1c7f2 +R = 80199485a3a96447b39f7679cd47412a78675ba17dcbd10465dc5b48 +S = a251fd9f136a3cb0dd0bc80659ae032e4a761ba7045da0034553fb8c + +Msg = bfc073fdda63c5fccaa0ca8770c293e8154e7aec56128bbac4fdbd541d602216ebf7ca1e02b514d6e396f20683802ba3f334310a9226576926e3bb19ceee27738d13377cbafeb09d091043501702a07aa31d1f29d50ddc55adcf16ffd40578e734a4e6cb6535f26ad48e0c62ad90e79720000e87d419e92dca3e11f943655b03 +d = e18821329447d3f65ba7279e96bd4624ffa1b32b90f6e8331b1e876d +Qx = 46c9ed837232c47022df2f1a1578fbe65ac9f2e81c98a74cc22ea31a +Qy = 6fc5e9568ae62b31412a0b0b367242e9fd7e518c83aa06a069e1d90d +k = a4c1eb402a2fb3af26e0e14a3d2fc8ed3bc1a8b2475270356a79fdd3 +R = d478b68733d8ad44be46766e7b66af782fbdc7ff7ed0b191176da98a +S = 5eae9160ccf71fd1d359d89cecce72ef8afaeee2365f6ba828aa450a + +Msg = 08079955d1a1f33728128c73673ec9f21a6ce138dcab5adc4dc068e6ab57314b9fbd8b013123b2fdafa9524fbdd0288777a233de8055cccfad83046ada6a19f01c47817496667bba8fc8b9456fc0e044a562d931dab1adcb66af8b66325bdf28d83ded3e2937958ccd19da540d70ef2c189f55a506c9c0d63406394c5bd3823b +d = f73e030d5a696b358986d3efaca121cf71f775f8835a21e6135145d7 +Qx = 9ca2c6ea87ac8dd3a23a5b4010841a7c8af309038882ae44634bcf55 +Qy = b0a347dbd5ded3b8702ac5a457e8b32bd4de06fd315095fa1b7d5fe1 +k = e3cc786c1288ea567836c51d6d69dd0cab5c015987d936ccc3a4beb3 +R = f1234da71761b7a0f49e661a419d2a739bdc4544bf87690e3d2f96db +S = 096d16bf8020c3d3c233894ad8eb81206010e62c6e692a215e088fd4 + +Msg = 23900b768f6cd42b8a8df0dcbc9cb5daec8de36b9d5c619adcc1ba2b649103d5af123746cdf19c3fd0665a6fb9338156182aa06181e3c6e37ce56979612af2927440424f89cef43fc754854b8a5c43370808cf5f9929cf47712512ce2f8a2a20d2e9f568c2848b27dfbe09142843c83905ffa5da3b15501761b03dbc2c5398b6 +d = 7a0789323f8741c157a1753ae165ecaf8e8b03a60561f8b80cee467c +Qx = 101271a9addd4bd1f19d00bf116c8524f52cefd598e85dc381597acb +Qy = 2f17d14f4d8ccb28b216553718152ba7c104646d8eca986dd9ddea39 +k = d169f04f05b60c625cda864d187938863964dab7bb3b9dfc04b05519 +R = e4a51be686a764b709da23ab48b1985e153c6ee238d945e743907afc +S = 118a8f1ffe3cd556ce6345bd1a398dd9cc3729b7fd6d8af9bfd82f40 + +Msg = 1eb28c0bcdd18f73e347f957ece15b4cc83a771b0877e1feaac38e24028fb38ccea8b54ee017dc7c3d5a1327bc6f40b294aa65d7dc487f278846cd101ee84202f14b38aa2c275046aa2577f65ebaea41cd383e8def2fd0b4444dcf426fa75c4082cd7fa035cdb1e0d34a3c79d42130f5b0273eae75bc701dda3aebe7358f41b5 +d = 78e795d0edb11fd9e28dc26b21e751aa89bea0d87932ef11c95c0e18 +Qx = 9edd544107977134bf6360d43ccabb3c94d627c03963c0a04b439627 +Qy = ece4c61d319a0e41f3de7863e7c355bac94395aaa74cdb5f74a87a5b +k = 36f7c0f76808b826a0a974a1fd6e155e00a73f1d34674a8f88be405a +R = 3e319444438bc2cc92f323ea842cb402b3c3c2448c89869ef7998edb +S = 3420cc38f058f41c31e71f4b1ad488f801111c73541de69fcee60695 + +Msg = efab51855407438fd5c250670366bca3c026ecec4a59394f00d8a4b51746d0c4564366656d507e3e13e62fe7abeb976b8859895848dbaecf6582f1898ea06f00d4247702ed9721bd375aa83ae4c67c2eaa6e080777ea5ecf2cf787d785389560ac91cf63a52f0373c3185e18a3b8a466e21b61a239f1b77624eb1acacc76c4e1 +d = bee02d8bc5bffb3fd3b4c9d6f686409f02662d10150d1e58d689966a +Qx = 8848f964c847fe9dddc774618d4588c9cd56bbe588d7b1fb369c8bfa +Qy = ebbb699fbd0dc08859fe9132285fe20dff3b9d561c0640b6e0717607 +k = 59f1450d857b40e5552a4b8cd4ab0df2f01716635d172c1106840f21 +R = a206d8398a16a991bc217f77f23c6f648384f254f255a8a876404444 +S = eb1169cb5b1423dc0bfaffe565ae57f986e00de06405e3e7b605862e + +Msg = 31c29ca10279a417f0cc9b1382cf54dbfdfc89f2e6ef08c403c11f580cbf8674b141ed1a417563282d99a55fc616d836421cde9424815c95e7fb7668bf3f137b29937f14882d74e034b732d78d91af7721aac4950734f5fa5d4b4d35534974f8cab6d2e6dca75ddb57e99148c8a59df9fc5bcd723e546e8356f671cf2f65640a +d = dc0ddf6e501418bb8eafc5d7ccc143369e2aa441df8fc57d5f94a738 +Qx = 063a5d632f4144376e14cfb03ad8ccf1489b613acd184d20dff66545 +Qy = e77727f057b043d8a0f7458196b72e92d11f85b0891c6aaa9d915f58 +k = ff0e5cae2671db7a1b90e22c63e7570bdd27352d45bac31e338debe0 +R = 5bc0b4998481ecbd3b6609184a84ca41d69b08c37138097f559259f8 +S = 0df8828eb1ca85e46405b94e1a2972c34c5e620a54e2f640f04aecc5 + +Msg = 8db476f92e332519c1a0ece5d8deded6efbd2d8e8784eea0a6b4c3b4296c35f5f8de4317e5c1627b91fb1973fee86c06e4992aa5a20cb7475c8808ff1da354d07a488dffa7838c6ec1e3f99e3acba831f27bee8434eeda3eb36d0c6df3658883cd40068b1bed841310f6eb38d4a3d07d85848770ff7933c054cd8b34662660b1 +d = 229d89b2fcf8441ffc95ebb2ac2ef156e25825782044b2b8bd6a3e01 +Qx = de616848d8044a44789ef1ba3a6dd66fe9257ddc57f7534e59a701be +Qy = 26cbf74a6d25e5b34b96d30f327abd574cff7f7dbe6686573a7d6c5c +k = 3b18ca6ec8e8e255ac88f64302745ca0b73ff94b2b2d48be95b4aaee +R = fa94fd8b827c06115c1eefd50afc02ce5926ee0e789667783c01c34b +S = edf766a66973cfc33e4159966c07321a7f6549c3c60e8586ef41402b + +Msg = fcb272c828fe8fd3c6f8de9410c7b6e2b36717c1b0e5e359e9109bd7fc378978aa98182a9d99961898ed88999b050d3b64d1457d7a899d6d273b9f4dde2aafa36d76329d62509043c338f265fc4c7d938459b7fa3b230a9f6cb632b61489546bb4181a5ad7f0d7369b8caced48eb374b075b2b325bc86add0f3b680cd9e80acd +d = 97d747068147c0393a0bb5c159e2c9f1bd538f6204823294883abe28 +Qx = 3858a576eef2ce24d01766997fb81b3f3f78b6104cd188610be221d7 +Qy = 95ffc677ac7bfe3e0bb4cffb17355a964c8356a807151b3cba5d1f4e +k = c1a2ec1ef16cfd5107c892790daefbed061be78bd8576696b60f64d5 +R = 18c908541843fcdac99b9ff6bb397f3f8094d16b42670216e4eaa2d7 +S = c107a8a508ff57c5d4f78f86cc37e129c864d1c44ed5e73909613b74 + +[P-224,SHA-512] + +Msg = 7522492bdb916a597b8121f3e5c273b1d2800ef8c1db4f7dcbae633b60d7da5193ba53a63d7a377b351897c3b24903ae1cd1994211b259be3e6ae2cbc8970e4957fdf782c7d1bc7a91c80c8ef65468d4ef35428f26e2940ae8b0bd9b8074236bf6c00d0ebe83f9ddb2ade0f835138d39f33b59f244e0037c171f1ba7045a96f5 +d = ba5374541c13597bded6880849184a593d69d3d4f0b1cb4d0919cbd6 +Qx = ac635fe00e8b7a3c8ef5655bdfb7f83e8532e59c0cc0b6534d810ffa +Qy = 1d067aebeba66e79b28ecfe59ac6fdf5e1970dc3a84499c9d90cd8e2 +k = 187ed1f45c466cbafcd4b9577fb222408c011225dcccfd20f08b8d89 +R = f83d54945997584c923c09662c34cf9ad1e987da8bfd9be600e7a098 +S = 4ff2dba9dba992c98a095b1144a539310e1a570e20c88b7d0aa1955c + +Msg = 61097114ff855c3e34a62d9b853f8982d35f29cfa4a89893badbca7849e5fb437a1a38d6451bf0ca5a0d528e352b8e4b57f2ea359a7fc8841d49dd3e570f9b016f14156b0bbc4be822e260bd147ec081454969e11cb0034b7450ef4deb7ed6edb977e2f4ed60121aa095fb0ab40240dc329ecc917f5c64b4410612af065ee9dd +d = 1e27187134d0a63542adf4665fba22f00cfc7b0a1e02effe913ceedc +Qx = ecaea8ceea55c3bd418fd34a4ff2499e25e66a104eed846bc00c31d2 +Qy = 3933a356ab1f2dabc303ff0a5d076131e77032e6f502336883bf78a7 +k = 34cb597deae9a3b1cada937abcd247161b19b2b336b20e2e42ae01f1 +R = 58177ba46fb291490b39368774accf72736412c1fb5ee0f27b9b1e02 +S = 58337d78b95a080bfcabb5809bee012501b4da84b8ef310a4628f11c + +Msg = dd09ae6c982bb1440ca175a87766fefeacc49393ff797c446200662744f37a6e30c5d33ba70cbd8f12277fd6cc0704c17478bbab2a3047469e9618e3c340a9c8caaff5ce7c8a4d90ecae6a9b84b813419dec14460298e7521c9b7fdb7a2089328005bd51d57f92a1bcbeecd34aa40482b549e006bbf6c4ce66d34a22dda4e0e0 +d = 0905b40e6c29bfcbf55e04266f68f10ca8d3905001d68bb61a27749b +Qx = d656b73b131aa4c6336a57849ce0d3682b6ab2113d013711e8c29762 +Qy = 6328335ffc2029afbfe2a15cc5636978778c3f9dab84840b05f2e705 +k = dc82840d147f893497a82f023d7d2cbf0a3a5b2ac6cc1b9b23e504be +R = 583af080e0ec7c1ba5a491a84889b7b7b11ccfe18927c7c219b11757 +S = b23700035349df25d839f0973bef78a7515287de6c83707907074fa6 + +Msg = 37a73e2774d3b274db426c89b945696daa96035031f72cea01894b24508c7f81961ec254d36ed6a0f448e11cf7950af769dc6cd2c47e52c6caf0ea92c270974f0214b4db436c36a60fb722060a6bb544462a82e1714f5906ec32886f7d59ebf289541c3a00ec1e004892ef2b1286a0194f55d083c6ec92c64b8fd1452e1c68ba +d = afbaede5d75e4f241dd5b53220f3f5b9c1aa1d5d298e2d43236452dc +Qx = fe83e59fc8ea8b939355d3258fe53a64d45f63031a0716b7cc416173 +Qy = f151d23060f1c856eb7f1f58be72a7228c3af89e43b56e9695b558c7 +k = 0fbbe7b40136c81a8fb894498d5502157a1cf5a89d0643de92cd38f6 +R = 24f3f457c7b72b7e759d5a8afbf330e31c5d8d2e36f92c0e79c5d87d +S = 36fd1193def34f12a960740fd79fb38bf2b480726ccad540eb42cdf8 + +Msg = 9dc2046ffdc6804544db964481abe5d2d276a2a9eeec4c7ad40215b1de23561d402db69bd0f6eec2254711eea4487c64d9a6b62c3ebaf5ffa8db6e7e3a6e17154d126967a47a853a6f8339bdca9be306a13c7f992ded7619b0da59909a49b1e0930360e05b47f18628a36d69b2f87f2bfddd6a5d4a72f84dc76dbdd43f3a6a35 +d = 950b07b0c2b7539a21b5135bfede214733f2e009647d38d8b21d760c +Qx = f43d13bbfcee3b724063b3910fea49fd591b81e86fdb813b1a492d0c +Qy = 6b4c8d6fa5dc661889e3cf5ec64997a78222837885f85d2fe9b684fb +k = 83e110d0d1e700d2f36543028737d2a2f1474aa3b4b28998a39e4793 +R = 2685265bc878e85d10ab13293dec190881a57c4a467f8fc2170432ea +S = 80a347bb49036522369339bd6485a967cdda818915d8eb947302fcf9 + +Msg = d9c6847fce688c5e7525a1098b545cb6c15dcd21a02761fc82fc664372a667390680135f91c01a2fa5430c634b1a6d1cd6002d8aa021e7bf5956a7901c2f81bc25d502ba5f55a55f30c0323dc68205cbefec0538e68654e7b327ac1743641896c3e740d8f66f400902b304eafaa4e0d8cffae140536f0922444cc3216a675697 +d = 015bd9f5dfef393b431c3c7fced24385d861ccb563542574a5d2a9bc +Qx = e868690641e2cda13b289a6c5d2fb175940396044d9cf27b4f2240af +Qy = 4c78c9abdf2b7fc67ed4497001d7bcf1daca1739dc14a661f91d7c40 +k = e2374350f47c08f3c1359d4edf87e61d1ba4e7dd1540d8d9062efa79 +R = e12dc088d2bc032bb214c77d0e0fb749fc8e61ebe1ed72996f1084b6 +S = 0ab58aa31e0bba5fbc76855e6549f1036fba0a589aeab978ab01b8fb + +Msg = 69df8a01b66f04930efd2012ff2243874f256ca8758145d2a9e4ecc84d0dbdbd0dc494ae06db0ccbe819918137c90957114558580d6623efbafdd342b38dad9f08708084d32f874fba04782ce26aaab78de2102ad171f8a8f2b30b5bd3d55fdac5fa3acd6f7def7e61c2533938572b331ba6d1c02bd74bfdbf7337ade8f4a190 +d = 0a3c259df933247445acffb6d8265b601d597fb9997dc2a1eb4deef4 +Qx = e67f4385a9da54253cc371ee9bc6739ae6385a4b87669c7baf0c460d +Qy = 2bb00b6ddd7b67d9ac5653ec04ca8529fbf16f815c04da3c2e58e82d +k = 8bf5859665b6a23e6b05a311580f60187ba1c4ae89e44877fb48af66 +R = 653675fb993c3fa9e57b32e33029ec230b966e8077c72c1ec90ddefc +S = 792723bf87e315147cd4303de7f1dfe95cd7658ebb95c38c1a196140 + +Msg = 927524982b8d60777c1105c86fac05f634abf58c73f84fb95d81ba0b86e1e43592c4fcad2e395a40fbe7005697d86088e2fb3bb7287eb3f917d4f2dc281f5cbe65d05b4f9623bca849b10a03beca6aa2056a12ebb91cf257ac448c5e9a78f8349a6a29b17c8978bef43a443cbb8a149eb23f794844fc41693f2dbb97181444be +d = a1c8ef463f9e7e3dd63e677412f87cf9ea4ac9a6a2dae629da5b9916 +Qx = 400e5cd4b315ceb309545cd3277acb70bdae2073fda6ad896ea14b27 +Qy = fbe1d2466cd2e116f38248bd5cabaa6cbe6c4a2694d998abd7b0c991 +k = 82f55a25d3ed6e47c22a6eed0fa52ed0818b87d6ea7950281dfefc09 +R = 16305a46a3f6f9e216ef8f6a6f5f0760d064a885657c864e1c1ea035 +S = 58fd97050bfbca6f87e64e1458c4ad80bae26e280356da344ad3b25d + +Msg = 5f9042283561e7f19a436d01c7ef5a950a6d77ede5629cd7e43c0a5d58e8c5673c37945a453291d12938253c71dbe12c8b022ba7276eda6be034ef5ec1ec77dbd1e08f0d7b8e7725b7ec671c075e008a20f77f4ab266f97079b0aa6337df59a33b881954084057b21f294dd14bcb0869a4a6f1f597955ec7bf9d19bb3537a66a +d = fa511dbf6fef7e5e9c73e4555eb75d435f7884322d9faf5d78cacc0b +Qx = e8dccd706c31f895f2f261ab979cbab51b8ae28196bcc12a42046380 +Qy = ec246be8e71ea3859cb717a59990fe22e4b76858ff49becd70739a01 +k = a37d665fe4314aa4cd03eb8e6a1f366b43e11fdb419c96b48f787b62 +R = 05e4909bcc172ab4140be291aad4660e375032bce2d762b6269ba764 +S = e347a1c9d3670690e1d8d1d4cd9579848f442199c10526488da5cebf + +Msg = c2ae5573d3bf396523bfb703db8502fd0760cd1be528f6ddbfb95aad399e0b19f3bd9e0fabdb05d49e3f893dffec5b627c9c2f7ad5f32e92e4e27a38cb5c28657657377fdfa1b66cd7ac3d15c6d49df92d284db99f69744f37dc7cb4e7d52920fdb200a7942623a7057ba82e467dcccaa5da416b48510d8364446a6a5e2a5aa8 +d = a58bd53646400a646f0e4208320dc679a9664d1c6bfb27fdc8eac7ea +Qx = e22e0dc4ecd96eb0071b72ba4b4988bf784f3fe73cb81bfb93d9ac4f +Qy = b3e213e518bee1367a4fb3703b9008bac9d95a1fc4aa61225fff9f3c +k = 42c5b6f87d3bb1ed74f5ee8398d8f8c61e9e50ffa7a1da12d39893f9 +R = 5c0e5c6f057de1e99ef5d237a60d7a07fa9a42b120a82f573d9fb7b2 +S = 2fffc0bf550bd2f650fed085a84501cacfa6a1bb984df1f9237eaa59 + +Msg = 03c1a1cd30a039d0dcb22fee2450a7fa79495a0d0f4f43d2de4d75bce003c0334a8860f5c164dbd94888a9f751235a3e570d31070e3e1293a7be616af7176600585d36ac013600157d2569d491da4b8a3bf3630c26e0b9925412189f50b0ae6f04c86477932e2ecd8c3546106ae1ebc684cc3adb27ed665eddece886adea4ce3 +d = 64bd4452b572cc95510ac2e572f41136299ff17f6e8448f4ffb571d0 +Qx = 92521fa25c2e034d127e0921efdb167f0b2ff8b20504487ed87fa264 +Qy = e72c770e37375ad7dc2c4e63e5701826f6606f6ffb9461ee61b4e872 +k = eaf76ee4d7e00d13d8a6d03dffd07ad9a8bb6dc8176c9f93059b1b7f +R = cf5058e2a6cf5e61a138b013eb292f38a1b9f07239ae5941dbce8919 +S = d14198621650d985d270bc997da6e78588fd0ef843b874c66a3de3c3 + +Msg = 888f6d9bc7c86c0079fbfd42d8c08d6958f40f6e570fb0b1f03d2f8f8a63df4fcc87b379a222cf835820a999d34996e08961f13b86b075e7fd1c303cd3baa44de42168561589012f7e5300da4f8bdf470c07119a5d9f7ba7293568cd7c6a1b7fc1e41cda40bed7d46e5a28af67ae2aabfefe67a86a1c601e6f5ee543e09bd7b6 +d = 7f3edb710df9d982f486233d0c176aa88f5a0ee81efa9b8145020294 +Qx = e7611e013e7b43ff5b8b57ad83333bffcc9e469ad23070b5791dc594 +Qy = 7784da0a11dbe16208c6e0b6d5029e71fbec4dffc9fa046d3eeb71c9 +k = 94db7ef9a232593091eb9a74f289529c7e0d7fef21f80b3c8556b75e +R = a971f45bab10b1d16d7234ca8e4ec987da20d9e867f28aa063296e23 +S = e38c538d65a7e1a28fd3ec53f015a7e5beb60e9d309f1e3ba4b2c3d2 + +Msg = 48453340f1317769e6ee6e103153714365731163dc18f84e9f2fa4b120f9c5a9645ee2f9b66c84c26d95912b422b009b64af96aa418b2427a4209f2e7513ba8e43ec8cf20b34e7529b22eb1199545afe9a9f7d9bcb320aec9ee0162f91c0d1dd9674c9c284f25199c5e109f6f84d7ed0d269cc6413edb81bc2c83e37d644d8b9 +d = b569f8296ff1d9cc01fffd9919016e5730c1858bdb7b99527153751a +Qx = 242f34959516a4706172f7dede23110efa314bff22eb320ab88feeff +Qy = 45e3227710900a8acfc9bcce728119d042f64ca40876c2b380ee46e0 +k = ae61523866a8f43e6cdd42ba27a34ed06527e8a5842901a64c393f76 +R = c2732a4e0815f9f785500e80147e9486994446beccf8a6a352b97585 +S = 6ecaece6487d7920e398f7f951ab7c7aba5832dabf03704106ad1244 + +Msg = 4bdfd3b91d83108409ad765b256e0c9b9937ecf647f8e6f9fc807e2e72af8246178b3fe046b4ea10170450d71a4eec790ecb05f03d7077341de26c4db7eeae24d55c9a9093e837dfdb38168fe8230cb9605825a1282fecd741989bfcdb34678fe077477927f66bd26d003e5dda22043341a14dd31841ba483ad5ce2701e0f68e +d = 41a4dd8eee39232b728516e2f21e66011e7426a6b25986c3ffa237e4 +Qx = c32988171caab178bf50dc7310bc7f604df5a9d19a8e602519c72d8a +Qy = f8985d112ad9de05969e5364d943c1cc5cd198359f4c62b19da0e117 +k = 827d4999da81fa920c8492ccc1e2d5cdafed9754cf7382a859952071 +R = 89c61da7422ccd676baec07e2185c12e947a2374eede87847304be6c +S = 2685379624717ea28422e8d001c090405a130b4ef9f1ac726c3ca502 + +Msg = e6cdee8558bc1eacc24e82f0624ce8d02cc8d925b4dd3dec3a72f4a4e0fb76076bfa3ef2e2c33bdd7c27b322bdc09bbfee8fe46f75dbd7bbd2af09690b7137943efe21706e0a1b6d3089540fc58d85ddb55ea836616db573e36c521be008893f40a0a7c349602cc178ea43be59d31ec6449e7ff2c5379379f7d7645134df1bc3 +d = 67fa50569257c8cc89ac0325db4902003a62f30b917f53e4035a7e04 +Qx = 6773a0436a9c42635730413b19aa4166f08c69c0e5002953da42253b +Qy = 555138290b093bf2fe79acda9131d920cd1e7ac43fb8775776cd713c +k = 557cb45fd3a30b3bdbf08c56eabbd4478736024aaa52bf8448096453 +R = 8e92cf7a674aa5f7542dd95c695589a05747431692edd04804299b8f +S = af4908b41f8180b71a6ff10fd51f3d143147af6ddddf7534d3284ed9 + + +[P-256,SHA-224] + +Msg = ff624d0ba02c7b6370c1622eec3fa2186ea681d1659e0a845448e777b75a8e77a77bb26e5733179d58ef9bc8a4e8b6971aef2539f77ab0963a3415bbd6258339bd1bf55de65db520c63f5b8eab3d55debd05e9494212170f5d65b3286b8b668705b1e2b2b5568610617abb51d2dd0cb450ef59df4b907da90cfa7b268de8c4c2 +d = 708309a7449e156b0db70e5b52e606c7e094ed676ce8953bf6c14757c826f590 +Qx = 29578c7ab6ce0d11493c95d5ea05d299d536801ca9cbd50e9924e43b733b83ab +Qy = 08c8049879c6278b2273348474158515accaa38344106ef96803c5a05adc4800 +k = 58f741771620bdc428e91a32d86d230873e9140336fcfb1e122892ee1d501bdc +R = 4a19274429e40522234b8785dc25fc524f179dcc95ff09b3c9770fc71f54ca0d +S = 58982b79a65b7320f5b92d13bdaecdd1259e760f0f718ba933fd098f6f75d4b7 + +Msg = 9155e91fd9155eeed15afd83487ea1a3af04c5998b77c0fe8c43dcc479440a8a9a89efe883d9385cb9edfde10b43bce61fb63669935ad39419cf29ef3a936931733bfc2378e253e73b7ae9a3ec7a6a7932ab10f1e5b94d05160c053988f3bdc9167155d069337d42c9a7056619efc031fa5ec7310d29bd28980b1e3559757578 +d = 90c5386100b137a75b0bb495002b28697a451add2f1f22cb65f735e8aaeace98 +Qx = 4a92396ff7930b1da9a873a479a28a9896af6cc3d39345b949b726dc3cd978b5 +Qy = 475abb18eaed948879b9c1453e3ef2755dd90f77519ec7b6a30297aad08e4931 +k = 36f853b5c54b1ec61588c9c6137eb56e7a708f09c57513093e4ecf6d739900e5 +R = 38b29558511061cfabdc8e5bb65ac2976d1aa2ba9a5deab8074097b2172bb9ad +S = 0de2cde610502b6e03c0b23602eafbcd3faf886c81d111d156b7aa550f5bcd51 + +Msg = b242a7586a1383368a33c88264889adfa3be45422fbef4a2df4e3c5325a9c7757017e0d5cf4bbf4de7f99d189f81f1fd2f0dd645574d1eb0d547eead9375677819297c1abe62526ae29fc54cdd11bfe17714f2fbd2d0d0e8d297ff98535980482dd5c1ebdc5a7274aabf1382c9f2315ca61391e3943856e4c5e616c2f1f7be0d +d = a3a43cece9c1abeff81099fb344d01f7d8df66447b95a667ee368f924bccf870 +Qx = 5775174deb0248112e069cb86f1546ac7a78bc2127d0cb953bad46384dd6be5b +Qy = a27020952971cc0b0c3abd06e9ca3e141a4943f560564eba31e5288928bc7ce7 +k = a0d9a7a245bd9b9aa86cecb89341c9de2e4f9b5d095a8150826c7ba7fb3e7df7 +R = b02a440add66a9ff9c3c0e9acf1be678f6bd48a10cbdec2ad6d186ffe05f3f2a +S = a98bea42aec56a1fcecec00a1cc69b01fcbcf5de7ac1b2f2dcc09b6db064f92b + +Msg = b64005da76b24715880af94dba379acc25a047b06066c9bedc8f17b8c74e74f4fc720d9f4ef0e2a659e0756931c080587ebdcd0f85e819aea6dacb327a9d96496da53ea21aef3b2e793a9c0def5196acec99891f46ead78a85bc7ab644765781d3543da9fbf9fec916dca975ef3b4271e50ecc68bf79b2d8935e2b25fc063358 +d = 7bbc8ff13f6f921f21e949b224c16b7176c5984d312b671cf6c2e4841135fc7f +Qx = f888e913ec6f3cd8b31eb89e4f8aaa8887d30ae5348ed7118696949d5b8cc7c1 +Qy = 08895d09620500d244e5035e262dea3f2867cd8967b226324d5c05220d8b410c +k = 21c942f3b487accbf7fadc1c4b7a6c7567ce876c195022459fa1ebf6d04ffbaa +R = 2e6cc883b8acc904ee9691ef4a9f1f5a9e5fbfde847cda3be833f949fb9c7182 +S = 2ac48f7a930912131a8b4e3ab495307817c465d638c2a9ea5ae9e2808806e20a + +Msg = fe6e1ea477640655eaa1f6e3352d4bce53eb3d95424df7f238e93d8531da8f36bc35fa6be4bf5a6a382e06e855139eb617a9cc9376b4dafacbd80876343b12628619d7cbe1bff6757e3706111ed53898c0219823adbc044eaf8c6ad449df8f6aab9d444dadb5c3380eec0d91694df5fc4b30280d4b87d27e67ae58a1df828963 +d = daf5ec7a4eebc20d9485796c355b4a65ad254fe19b998d0507e91ea24135f45d +Qx = 137c465085c1b1b8cccbe9fccbe9d0295a331aaf332f3ed2e285d16e574b943b +Qy = d3e8d5a24cd218c19760b0e85b35a8569945aa857cbf0fd6a3ce127581b217b6 +k = 343251dffa56e6a612fec7b078f9c3819eab402a72686b894a47a08fd97e6c23 +R = 775e25a296bd259510ae9375f548997bec8a744900022945281dc8c4d94f2b5b +S = d87592ceab773ae103daebbb56a04144aaccb1e14efc1024dc36c0e382df1f70 + +Msg = 907c0c00dc080a688548957b5b8b1f33ba378de1368023dcad43242411f554eb7d392d3e5c1668fad3944ff9634105343d83b8c85d2a988da5f5dc60ee0518327caed6dd5cf4e9bc6222deb46d00abde745f9b71d6e7aee6c7fdfc9ed053f2c0b611d4c6863088bd012ea9810ee94f8e58905970ebd07353f1f409a371ed03e3 +d = 8729a8396f262dabd991aa404cc1753581cea405f0d19222a0b3f210de8ee3c5 +Qx = 82b1f1a7af9b48ca8452613d7032beb0e4f28fe710306aeccc959e4d03662a35 +Qy = 5e39f33574097b8d32b471a591972496f5d44db344c037d13f06fafc75f016fd +k = 6de9e21f0b2cacc1762b3558fd44d3cf156b85dbef430dd28d59713bfb9cfa0b +R = a754b42720e71925d51fcef76151405a3696cc8f9fc9ca7b46d0b16edd7fb699 +S = 603924780439cc16ac4cf97c2c3065bc95353aa9179d0ab5f0322ca82f851cf2 + +Msg = 771c4d7bce05610a3e71b272096b57f0d1efcce33a1cb4f714d6ebc0865b2773ec5eedc25fae81dee1d256474dbd9676623614c150916e6ed92ce4430b26037d28fa5252ef6b10c09dc2f7ee5a36a1ea7897b69f389d9f5075e271d92f4eb97b148f3abcb1e5be0b4feb8278613d18abf6da60bfe448238aa04d7f11b71f44c5 +d = f1b62413935fc589ad2280f6892599ad994dae8ca3655ed4f7318cc89b61aa96 +Qx = e0bbfe4016eea93e6f509518cbffc25d492de6ebbf80465a461caa5bdc018159 +Qy = 3231ee7a119d84fa56e3034d50fea85929aec2eb437abc7646821e1bf805fb50 +k = 7a33eeb9f469afd55de2fb786847a1d3e7797929305c0f90d953b6f143bb8fc6 +R = 96d1c9399948254ea381631fc0f43ea808110506db8aacf081df5535ac5eb8ad +S = 73bf3691260dddd9997c97313f2a70783eacf8d15bdfb34bb13025cdfae72f70 + +Msg = a3b2825235718fc679b942e8ac38fb4f54415a213c65875b5453d18ca012320ddfbbc58b991eaebadfc2d1a28d4f0cd82652b12e4d5bfda89eda3be12ac52188e38e8cce32a264a300c0e463631f525ae501348594f980392c76b4a12ddc88e5ca086cb8685d03895919a8627725a3e00c4728e2b7c6f6a14fc342b2937fc3dd +d = 4caaa26f93f009682bbba6db6b265aec17b7ec1542bda458e8550b9e68eed18d +Qx = e3c58c1c254d11c7e781ad133e4c36dd1b5de362120d336a58e7b68813f3fbee +Qy = 59760db66120afe0d962c81a8e5586588fd19de2f40556371611c73af22c8a68 +k = c0d37142dc8b0d614fad20c4d35af6eb819e259e513ddeac1e1c273e7e1dc1bb +R = 25dd8e4086c62a40d2a310e2f90f6af5cb7e677b4dfdb4dc4e99e23ea2f0e6dc +S = 90ad62c179b0c9d61f521dde1cd762bfd224b5525c39c3706f2549313ddb4f39 + +Msg = 3e6e2a9bffd729ee5d4807849cd4250021d8184cda723df6ab0e5c939d39237c8e58af9d869fe62d3c97b3298a99e891e5e11aa68b11a087573a40a3e83c7965e7910d72f81cad0f42accc5c25a4fd3cdd8cee63757bbbfbdae98be2bc867d3bcb1333c4632cb0a55dffeb77d8b119c466cd889ec468454fabe6fbee7102deaf +d = 7af4b150bb7167cb68037f280d0823ce5320c01a92b1b56ee1b88547481b1de9 +Qx = cb3634ec4f0cbb99986be788f889e586026d5a851e80d15382f1bdb1bda2bc75 +Qy = 51e4e43bc16fb114896b18198a1aebe6054ba20ed0c0317c1b8776158c0e6bfb +k = 98edd59fafbcaee5f64e84eb5ed59fff45d14aabada47cee2fa674377173627a +R = 261a1cdb0fd93c0fb06ea6068b6b03c330a12f621a7eba76682a1d152c0e8d08 +S = 7ca049bad54feee101d6db807635ffb8bdb05a38e445c8c3d65d60df143514c5 + +Msg = 52e5c308e70329a17c71eaedb66bbee303c8ec48a6f1a2efb235d308563cd58553d434e12f353227a9ea28608ec9c820ed83c95124e7a886f7e832a2de1032e78dc059208f9ec354170b2b1cab992b52ac01e6c0e4e1b0112686962edc53ab226dafcc9fc7baed2cd9307160e8572edb125935db49289b178f35a8ad23f4f801 +d = 52ad53e849e30bec0e6345c3e9d98ebc808b19496c1ef16d72ab4a00bbb8c634 +Qx = 7cca1334bfc2a78728c50b370399be3f9690d445aa03c701da643eeb0b0f7fa8 +Qy = 3f7522238668e615405e49b2f63faee58286000a30cdb4b564ac0df99bc8950f +k = 8650c30712fc253610884fbba4a332a4574d4b7822f7776cab1df8f5fa05442a +R = a18194c7ac5829afc408d78dde19542837e7be82706c3941b2d9c5e036bb51e0 +S = 188ead1cdf7c1d21114ff56d0421ffd501ab978ef58337462c0fa736d86299af + +Msg = d3e9e82051d4c84d699453c9ff44c7c09f6523bb92232bcf30bf3c380224249de2964e871d56a364d6955c81ef91d06482a6c7c61bc70f66ef22fad128d15416e7174312619134f968f1009f92cbf99248932efb533ff113fb6d949e21d6b80dfbbe69010c8d1ccb0f3808ea309bb0bac1a222168c95b088847e613749b19d04 +d = 80754962a864be1803bc441fa331e126005bfc6d8b09ed38b7e69d9a030a5d27 +Qx = 0aaeed6dd1ae020d6eefc98ec4241ac93cbd3c8afed05bb28007e7da5727571b +Qy = 2dda1d5b7872eb94dfffb456115037ff8d3e72f8ebdd8fcfc42391f96809be69 +k = 738e050aeefe54ecba5be5f93a97bbcb7557d701f9da2d7e88483454b97b55a8 +R = 8cb9f41dfdcb9604e0725ac9b78fc0db916dc071186ee982f6dba3da36f02efa +S = 5c87fe868fd4282fb114f5d70e9590a10a5d35cedf3ff6402ba5c4344738a32e + +Msg = 968951c2c1918436fe19fa2fe2152656a08f9a6b8aa6201920f1b424da98cee71928897ff087620cc5c551320b1e75a1e98d7d98a5bd5361c9393759614a6087cc0f7fb01fcb173783eb4c4c23961a8231ac4a07d72e683b0c1bd4c51ef1b031df875e7b8d5a6e0628949f5b8f157f43dccaea3b2a4fc11181e6b451e06ceb37 +d = cfa8c8bd810eb0d73585f36280ecdd296ee098511be8ad5eac68984eca8eb19d +Qx = c227a2af15dfa8734e11c0c50f77e24e77ed58dd8cccf1b0e9fa06bee1c64766 +Qy = b686592ce3745eb300d2704083db55e1fa8274e4cb7e256889ccc0bb34a60570 +k = 2d6b449bb38b543d6b6d34ff8cb053f5e5b337f949b069b21f421995ebb28823 +R = 5e89d3c9b103c2fa3cb8cebeec23640acda0257d63ffbe2d509bfc49fab1dca6 +S = d70c5b1eeb29e016af9925798d24e166c23d58fedd2f1a3bbdb1ef78cdbfb63a + +Msg = 78048628932e1c1cdd1e70932bd7b76f704ba08d7e7d825d3de763bf1a062315f4af16eccefe0b6ebadccaf403d013f50833ce2c54e24eea8345e25f93b69bb048988d102240225ceacf5003e2abdcc90299f4bf2c101585d36ecdd7a155953c674789d070480d1ef47cc7858e97a6d87c41c6922a00ea12539f251826e141b4 +d = b2021e2665ce543b7feadd0cd5a4bd57ffcc5b32deb860b4d736d9880855da3c +Qx = 722e0abad4504b7832a148746153777694714eca220eced2b2156ca64cfed3dd +Qy = f0351b357b3081e859c46cad5328c5afa10546e92bc6c3fd541796ac30397a75 +k = b15bbce4b382145de7ecd670d947e77555ef7cd1693bd53c694e2b52b04d10e1 +R = 9d086dcd22da165a43091991bede9c1c14515e656633cb759ec2c17f51c35253 +S = 23595ad1cb714559faaecaf946beb9a71e584616030ceaed8a8470f4bf62768f + +Msg = 9b0800c443e693067591737fdbcf0966fdfa50872d41d0c189d87cbc34c2771ee5e1255fd604f09fcf167fda16437c245d299147299c69046895d22482db29aba37ff57f756716cd3d6223077f747c4caffbecc0a7c9dfaaafd9a9817470ded8777e6355838ac54d11b2f0fc3f43668ff949cc31de0c2d15af5ef17884e4d66a +d = 0c9bce6a568ca239395fc3552755575cbcdddb1d89f6f5ab354517a057b17b48 +Qx = 4814d454495df7103e2da383aba55f7842fd84f1750ee5801ad32c10d0be6c7d +Qy = a0bd039d5097c8f0770477f6b18d247876e88e528bf0453eab515ffab8a9eda3 +k = d414f1525cdcc41eba1652de017c034ebcc7946cb2efe4713d09f67c85b83153 +R = 84db02c678f9a21208cec8564d145a35ba8c6f26b4eb7e19522e439720dae44c +S = 537c564da0d2dc5ac4376c5f0ca3b628d01d48df47a83d842c927e4d6db1e16d + +Msg = fc3b8291c172dae635a6859f525beaf01cf683765d7c86f1a4d768df7cae055f639eccc08d7a0272394d949f82d5e12d69c08e2483e11a1d28a4c61f18193106e12e5de4a9d0b4bf341e2acd6b715dc83ae5ff63328f8346f35521ca378b311299947f63ec593a5e32e6bd11ec4edb0e75302a9f54d21226d23314729e061016 +d = 1daa385ec7c7f8a09adfcaea42801a4de4c889fb5c6eb4e92bc611d596d68e3f +Qx = f04e9f2831d9697ae146c7d4552e5f91085cc46778400b75b76f00205252941d +Qy = bd267148174cd0c2b019cd0a5256e2f3f889d1e597160372b5a1339c8d787f10 +k = 7707db348ee6f60365b43a2a994e9b40ed56fe03c2c31c7e781bc4ffadcba760 +R = 5d95c385eeba0f15db0b80ae151912409128c9c80e554246067b8f6a36d85ea5 +S = db5d8a1e345f883e4fcb3871276f170b783c1a1e9da6b6615913368a8526f1c3 + +[P-256,SHA-256] + +Msg = 5905238877c77421f73e43ee3da6f2d9e2ccad5fc942dcec0cbd25482935faaf416983fe165b1a045ee2bcd2e6dca3bdf46c4310a7461f9a37960ca672d3feb5473e253605fb1ddfd28065b53cb5858a8ad28175bf9bd386a5e471ea7a65c17cc934a9d791e91491eb3754d03799790fe2d308d16146d5c9b0d0debd97d79ce8 +d = 519b423d715f8b581f4fa8ee59f4771a5b44c8130b4e3eacca54a56dda72b464 +Qx = 1ccbe91c075fc7f4f033bfa248db8fccd3565de94bbfb12f3c59ff46c271bf83 +Qy = ce4014c68811f9a21a1fdb2c0e6113e06db7ca93b7404e78dc7ccd5ca89a4ca9 +k = 94a1bbb14b906a61a280f245f9e93c7f3b4a6247824f5d33b9670787642a68de +R = f3ac8061b514795b8843e3d6629527ed2afd6b1f6a555a7acabb5e6f79c8c2ac +S = 8bf77819ca05a6b2786c76262bf7371cef97b218e96f175a3ccdda2acc058903 + +Msg = c35e2f092553c55772926bdbe87c9796827d17024dbb9233a545366e2e5987dd344deb72df987144b8c6c43bc41b654b94cc856e16b96d7a821c8ec039b503e3d86728c494a967d83011a0e090b5d54cd47f4e366c0912bc808fbb2ea96efac88fb3ebec9342738e225f7c7c2b011ce375b56621a20642b4d36e060db4524af1 +d = 0f56db78ca460b055c500064824bed999a25aaf48ebb519ac201537b85479813 +Qx = e266ddfdc12668db30d4ca3e8f7749432c416044f2d2b8c10bf3d4012aeffa8a +Qy = bfa86404a2e9ffe67d47c587ef7a97a7f456b863b4d02cfc6928973ab5b1cb39 +k = 6d3e71882c3b83b156bb14e0ab184aa9fb728068d3ae9fac421187ae0b2f34c6 +R = 976d3a4e9d23326dc0baa9fa560b7c4e53f42864f508483a6473b6a11079b2db +S = 1b766e9ceb71ba6c01dcd46e0af462cd4cfa652ae5017d4555b8eeefe36e1932 + +Msg = 3c054e333a94259c36af09ab5b4ff9beb3492f8d5b4282d16801daccb29f70fe61a0b37ffef5c04cd1b70e85b1f549a1c4dc672985e50f43ea037efa9964f096b5f62f7ffdf8d6bfb2cc859558f5a393cb949dbd48f269343b5263dcdb9c556eca074f2e98e6d94c2c29a677afaf806edf79b15a3fcd46e7067b7669f83188ee +d = e283871239837e13b95f789e6e1af63bf61c918c992e62bca040d64cad1fc2ef +Qx = 74ccd8a62fba0e667c50929a53f78c21b8ff0c3c737b0b40b1750b2302b0bde8 +Qy = 29074e21f3a0ef88b9efdf10d06aa4c295cc1671f758ca0e4cd108803d0f2614 +k = ad5e887eb2b380b8d8280ad6e5ff8a60f4d26243e0124c2f31a297b5d0835de2 +R = 35fb60f5ca0f3ca08542fb3cc641c8263a2cab7a90ee6a5e1583fac2bb6f6bd1 +S = ee59d81bc9db1055cc0ed97b159d8784af04e98511d0a9a407b99bb292572e96 + +Msg = 0989122410d522af64ceb07da2c865219046b4c3d9d99b01278c07ff63eaf1039cb787ae9e2dd46436cc0415f280c562bebb83a23e639e476a02ec8cff7ea06cd12c86dcc3adefbf1a9e9a9b6646c7599ec631b0da9a60debeb9b3e19324977f3b4f36892c8a38671c8e1cc8e50fcd50f9e51deaf98272f9266fc702e4e57c30 +d = a3d2d3b7596f6592ce98b4bfe10d41837f10027a90d7bb75349490018cf72d07 +Qx = 322f80371bf6e044bc49391d97c1714ab87f990b949bc178cb7c43b7c22d89e1 +Qy = 3c15d54a5cc6b9f09de8457e873eb3deb1fceb54b0b295da6050294fae7fd999 +k = 24fc90e1da13f17ef9fe84cc96b9471ed1aaac17e3a4bae33a115df4e5834f18 +R = d7c562370af617b581c84a2468cc8bd50bb1cbf322de41b7887ce07c0e5884ca +S = b46d9f2d8c4bf83546ff178f1d78937c008d64e8ecc5cbb825cb21d94d670d89 + +Msg = dc66e39f9bbfd9865318531ffe9207f934fa615a5b285708a5e9c46b7775150e818d7f24d2a123df3672fff2094e3fd3df6fbe259e3989dd5edfcccbe7d45e26a775a5c4329a084f057c42c13f3248e3fd6f0c76678f890f513c32292dd306eaa84a59abe34b16cb5e38d0e885525d10336ca443e1682aa04a7af832b0eee4e7 +d = 53a0e8a8fe93db01e7ae94e1a9882a102ebd079b3a535827d583626c272d280d +Qx = 1bcec4570e1ec2436596b8ded58f60c3b1ebc6a403bc5543040ba82963057244 +Qy = 8af62a4c683f096b28558320737bf83b9959a46ad2521004ef74cf85e67494e1 +k = 5d833e8d24cc7a402d7ee7ec852a3587cddeb48358cea71b0bedb8fabe84e0c4 +R = 18caaf7b663507a8bcd992b836dec9dc5703c080af5e51dfa3a9a7c387182604 +S = 77c68928ac3b88d985fb43fb615fb7ff45c18ba5c81af796c613dfa98352d29c + +Msg = 600974e7d8c5508e2c1aab0783ad0d7c4494ab2b4da265c2fe496421c4df238b0be25f25659157c8a225fb03953607f7df996acfd402f147e37aee2f1693e3bf1c35eab3ae360a2bd91d04622ea47f83d863d2dfecb618e8b8bdc39e17d15d672eee03bb4ce2cc5cf6b217e5faf3f336fdd87d972d3a8b8a593ba85955cc9d71 +d = 4af107e8e2194c830ffb712a65511bc9186a133007855b49ab4b3833aefc4a1d +Qx = a32e50be3dae2c8ba3f5e4bdae14cf7645420d425ead94036c22dd6c4fc59e00 +Qy = d623bf641160c289d6742c6257ae6ba574446dd1d0e74db3aaa80900b78d4ae9 +k = e18f96f84dfa2fd3cdfaec9159d4c338cd54ad314134f0b31e20591fc238d0ab +R = 8524c5024e2d9a73bde8c72d9129f57873bbad0ed05215a372a84fdbc78f2e68 +S = d18c2caf3b1072f87064ec5e8953f51301cada03469c640244760328eb5a05cb + +Msg = dfa6cb9b39adda6c74cc8b2a8b53a12c499ab9dee01b4123642b4f11af336a91a5c9ce0520eb2395a6190ecbf6169c4cba81941de8e76c9c908eb843b98ce95e0da29c5d4388040264e05e07030a577cc5d176387154eabae2af52a83e85c61c7c61da930c9b19e45d7e34c8516dc3c238fddd6e450a77455d534c48a152010b +d = 78dfaa09f1076850b3e206e477494cddcfb822aaa0128475053592c48ebaf4ab +Qx = 8bcfe2a721ca6d753968f564ec4315be4857e28bef1908f61a366b1f03c97479 +Qy = 0f67576a30b8e20d4232d8530b52fb4c89cbc589ede291e499ddd15fe870ab96 +k = 295544dbb2da3da170741c9b2c6551d40af7ed4e891445f11a02b66a5c258a77 +R = c5a186d72df452015480f7f338970bfe825087f05c0088d95305f87aacc9b254 +S = 84a58f9e9d9e735344b316b1aa1ab5185665b85147dc82d92e969d7bee31ca30 + +Msg = 51d2547cbff92431174aa7fc7302139519d98071c755ff1c92e4694b58587ea560f72f32fc6dd4dee7d22bb7387381d0256e2862d0644cdf2c277c5d740fa089830eb52bf79d1e75b8596ecf0ea58a0b9df61e0c9754bfcd62efab6ea1bd216bf181c5593da79f10135a9bc6e164f1854bc8859734341aad237ba29a81a3fc8b +d = 80e692e3eb9fcd8c7d44e7de9f7a5952686407f90025a1d87e52c7096a62618a +Qx = a88bc8430279c8c0400a77d751f26c0abc93e5de4ad9a4166357952fe041e767 +Qy = 2d365a1eef25ead579cc9a069b6abc1b16b81c35f18785ce26a10ba6d1381185 +k = 7c80fd66d62cc076cef2d030c17c0a69c99611549cb32c4ff662475adbe84b22 +R = 9d0c6afb6df3bced455b459cc21387e14929392664bb8741a3693a1795ca6902 +S = d7f9ddd191f1f412869429209ee3814c75c72fa46a9cccf804a2f5cc0b7e739f + +Msg = 558c2ac13026402bad4a0a83ebc9468e50f7ffab06d6f981e5db1d082098065bcff6f21a7a74558b1e8612914b8b5a0aa28ed5b574c36ac4ea5868432a62bb8ef0695d27c1e3ceaf75c7b251c65ddb268696f07c16d2767973d85beb443f211e6445e7fe5d46f0dce70d58a4cd9fe70688c035688ea8c6baec65a5fc7e2c93e8 +d = 5e666c0db0214c3b627a8e48541cc84a8b6fd15f300da4dff5d18aec6c55b881 +Qx = 1bc487570f040dc94196c9befe8ab2b6de77208b1f38bdaae28f9645c4d2bc3a +Qy = ec81602abd8345e71867c8210313737865b8aa186851e1b48eaca140320f5d8f +k = 2e7625a48874d86c9e467f890aaa7cd6ebdf71c0102bfdcfa24565d6af3fdce9 +R = 2f9e2b4e9f747c657f705bffd124ee178bbc5391c86d056717b140c153570fd9 +S = f5413bfd85949da8d83de83ab0d19b2986613e224d1901d76919de23ccd03199 + +Msg = 4d55c99ef6bd54621662c3d110c3cb627c03d6311393b264ab97b90a4b15214a5593ba2510a53d63fb34be251facb697c973e11b665cb7920f1684b0031b4dd370cb927ca7168b0bf8ad285e05e9e31e34bc24024739fdc10b78586f29eff94412034e3b606ed850ec2c1900e8e68151fc4aee5adebb066eb6da4eaa5681378e +d = f73f455271c877c4d5334627e37c278f68d143014b0a05aa62f308b2101c5308 +Qx = b8188bd68701fc396dab53125d4d28ea33a91daf6d21485f4770f6ea8c565dde +Qy = 423f058810f277f8fe076f6db56e9285a1bf2c2a1dae145095edd9c04970bc4a +k = 62f8665fd6e26b3fa069e85281777a9b1f0dfd2c0b9f54a086d0c109ff9fd615 +R = 1cc628533d0004b2b20e7f4baad0b8bb5e0673db159bbccf92491aef61fc9620 +S = 880e0bbf82a8cf818ed46ba03cf0fc6c898e36fca36cc7fdb1d2db7503634430 + +Msg = f8248ad47d97c18c984f1f5c10950dc1404713c56b6ea397e01e6dd925e903b4fadfe2c9e877169e71ce3c7fe5ce70ee4255d9cdc26f6943bf48687874de64f6cf30a012512e787b88059bbf561162bdcc23a3742c835ac144cc14167b1bd6727e940540a9c99f3cbb41fb1dcb00d76dda04995847c657f4c19d303eb09eb48a +d = b20d705d9bd7c2b8dc60393a5357f632990e599a0975573ac67fd89b49187906 +Qx = 51f99d2d52d4a6e734484a018b7ca2f895c2929b6754a3a03224d07ae61166ce +Qy = 4737da963c6ef7247fb88d19f9b0c667cac7fe12837fdab88c66f10d3c14cad1 +k = 72b656f6b35b9ccbc712c9f1f3b1a14cbbebaec41c4bca8da18f492a062d6f6f +R = 9886ae46c1415c3bc959e82b760ad760aab66885a84e620aa339fdf102465c42 +S = 2bf3a80bc04faa35ebecc0f4864ac02d349f6f126e0f988501b8d3075409a26c + +Msg = 3b6ee2425940b3d240d35b97b6dcd61ed3423d8e71a0ada35d47b322d17b35ea0472f35edd1d252f87b8b65ef4b716669fc9ac28b00d34a9d66ad118c9d94e7f46d0b4f6c2b2d339fd6bcd351241a387cc82609057048c12c4ec3d85c661975c45b300cb96930d89370a327c98b67defaa89497aa8ef994c77f1130f752f94a4 +d = d4234bebfbc821050341a37e1240efe5e33763cbbb2ef76a1c79e24724e5a5e7 +Qx = 8fb287f0202ad57ae841aea35f29b2e1d53e196d0ddd9aec24813d64c0922fb7 +Qy = 1f6daff1aa2dd2d6d3741623eecb5e7b612997a1039aab2e5cf2de969cfea573 +k = d926fe10f1bfd9855610f4f5a3d666b1a149344057e35537373372ead8b1a778 +R = 490efd106be11fc365c7467eb89b8d39e15d65175356775deab211163c2504cb +S = 644300fc0da4d40fb8c6ead510d14f0bd4e1321a469e9c0a581464c7186b7aa7 + +Msg = c5204b81ec0a4df5b7e9fda3dc245f98082ae7f4efe81998dcaa286bd4507ca840a53d21b01e904f55e38f78c3757d5a5a4a44b1d5d4e480be3afb5b394a5d2840af42b1b4083d40afbfe22d702f370d32dbfd392e128ea4724d66a3701da41ae2f03bb4d91bb946c7969404cb544f71eb7a49eb4c4ec55799bda1eb545143a7 +d = b58f5211dff440626bb56d0ad483193d606cf21f36d9830543327292f4d25d8c +Qx = 68229b48c2fe19d3db034e4c15077eb7471a66031f28a980821873915298ba76 +Qy = 303e8ee3742a893f78b810991da697083dd8f11128c47651c27a56740a80c24c +k = e158bf4a2d19a99149d9cdb879294ccb7aaeae03d75ddd616ef8ae51a6dc1071 +R = e67a9717ccf96841489d6541f4f6adb12d17b59a6bef847b6183b8fcf16a32eb +S = 9ae6ba6d637706849a6a9fc388cf0232d85c26ea0d1fe7437adb48de58364333 + +Msg = 72e81fe221fb402148d8b7ab03549f1180bcc03d41ca59d7653801f0ba853add1f6d29edd7f9abc621b2d548f8dbf8979bd16608d2d8fc3260b4ebc0dd42482481d548c7075711b5759649c41f439fad69954956c9326841ea6492956829f9e0dc789f73633b40f6ac77bcae6dfc7930cfe89e526d1684365c5b0be2437fdb01 +d = 54c066711cdb061eda07e5275f7e95a9962c6764b84f6f1f3ab5a588e0a2afb1 +Qx = 0a7dbb8bf50cb605eb2268b081f26d6b08e012f952c4b70a5a1e6e7d46af98bb +Qy = f26dd7d799930062480849962ccf5004edcfd307c044f4e8f667c9baa834eeae +k = 646fe933e96c3b8f9f507498e907fdd201f08478d0202c752a7c2cfebf4d061a +R = b53ce4da1aa7c0dc77a1896ab716b921499aed78df725b1504aba1597ba0c64b +S = d7c246dc7ad0e67700c373edcfdd1c0a0495fc954549ad579df6ed1438840851 + +Msg = 21188c3edd5de088dacc1076b9e1bcecd79de1003c2414c3866173054dc82dde85169baa77993adb20c269f60a5226111828578bcc7c29e6e8d2dae81806152c8ba0c6ada1986a1983ebeec1473a73a04795b6319d48662d40881c1723a706f516fe75300f92408aa1dc6ae4288d2046f23c1aa2e54b7fb6448a0da922bd7f34 +d = 34fa4682bf6cb5b16783adcd18f0e6879b92185f76d7c920409f904f522db4b1 +Qx = 105d22d9c626520faca13e7ced382dcbe93498315f00cc0ac39c4821d0d73737 +Qy = 6c47f3cbbfa97dfcebe16270b8c7d5d3a5900b888c42520d751e8faf3b401ef4 +k = a6f463ee72c9492bc792fe98163112837aebd07bab7a84aaed05be64db3086f4 +R = 542c40a18140a6266d6f0286e24e9a7bad7650e72ef0e2131e629c076d962663 +S = 4f7f65305e24a6bbb5cff714ba8f5a2cee5bdc89ba8d75dcbf21966ce38eb66f + +[P-256,SHA-384] + +Msg = e0b8596b375f3306bbc6e77a0b42f7469d7e83635990e74aa6d713594a3a24498feff5006790742d9c2e9b47d714bee932435db747c6e733e3d8de41f2f91311f2e9fd8e025651631ffd84f66732d3473fbd1627e63dc7194048ebec93c95c159b5039ab5e79e42c80b484a943f125de3da1e04e5bf9c16671ad55a1117d3306 +d = b6faf2c8922235c589c27368a3b3e6e2f42eb6073bf9507f19eed0746c79dced +Qx = e0e7b99bc62d8dd67883e39ed9fa0657789c5ff556cc1fd8dd1e2a55e9e3f243 +Qy = 63fbfd0232b95578075c903a4dbf85ad58f8350516e1ec89b0ee1f5e1362da69 +k = 9980b9cdfcef3ab8e219b9827ed6afdd4dbf20bd927e9cd01f15762703487007 +R = f5087878e212b703578f5c66f434883f3ef414dc23e2e8d8ab6a8d159ed5ad83 +S = 306b4c6c20213707982dffbb30fba99b96e792163dd59dbe606e734328dd7c8a + +Msg = 099a0131179fff4c6928e49886d2fdb3a9f239b7dd5fa828a52cbbe3fcfabecfbba3e192159b887b5d13aa1e14e6a07ccbb21f6ad8b7e88fee6bea9b86dea40ffb962f38554056fb7c5bb486418915f7e7e9b9033fe3baaf9a069db98bc02fa8af3d3d1859a11375d6f98aa2ce632606d0800dff7f55b40f971a8586ed6b39e9 +d = 118958fd0ff0f0b0ed11d3cf8fa664bc17cdb5fed1f4a8fc52d0b1ae30412181 +Qx = afda82260c9f42122a3f11c6058839488f6d7977f6f2a263c67d06e27ea2c355 +Qy = 0ae2bbdd2207c590332c5bfeb4c8b5b16622134bd4dc55382ae806435468058b +k = 23129a99eeda3d99a44a5778a46e8e7568b91c31fb7a8628c5d9820d4bed4a6b +R = e446600cab1286ebc3bb332012a2f5cc33b0a5ef7291d5a62a84de5969d77946 +S = cf89b12793ee1792eb26283b48fa0bdcb45ae6f6ad4b02564bf786bb97057d5a + +Msg = 0fbc07ea947c946bea26afa10c51511039b94ddbc4e2e4184ca3559260da24a14522d1497ca5e77a5d1a8e86583aeea1f5d4ff9b04a6aa0de79cd88fdb85e01f171143535f2f7c23b050289d7e05cebccdd131888572534bae0061bdcc3015206b9270b0d5af9f1da2f9de91772d178a632c3261a1e7b3fb255608b3801962f9 +d = 3e647357cd5b754fad0fdb876eaf9b1abd7b60536f383c81ce5745ec80826431 +Qx = 702b2c94d039e590dd5c8f9736e753cf5824aacf33ee3de74fe1f5f7c858d5ed +Qy = 0c28894e907af99fb0d18c9e98f19ac80dd77abfa4bebe45055c0857b82a0f4d +k = 9beab7722f0bcb468e5f234e074170a60225255de494108459abdf603c6e8b35 +R = c4021fb7185a07096547af1fb06932e37cf8bd90cf593dea48d48614fa237e5e +S = 7fb45d09e2172bec8d3e330aa06c43fbb5f625525485234e7714b7f6e92ba8f1 + +Msg = 1e38d750d936d8522e9db1873fb4996bef97f8da3c6674a1223d29263f1234a90b751785316444e9ba698bc8ab6cd010638d182c9adad4e334b2bd7529f0ae8e9a52ad60f59804b2d780ed52bdd33b0bf5400147c28b4304e5e3434505ae7ce30d4b239e7e6f0ecf058badd5b388eddbad64d24d2430dd04b4ddee98f972988f +d = 76c17c2efc99891f3697ba4d71850e5816a1b65562cc39a13da4b6da9051b0fd +Qx = d12512e934c367e4c4384dbd010e93416840288a0ba00b299b4e7c0d91578b57 +Qy = ebf8835661d9b578f18d14ae4acf9c357c0dc8b7112fc32824a685ed72754e23 +k = 77cffa6f9a73904306f9fcd3f6bbb37f52d71e39931bb4aec28f9b076e436ccf +R = 4d5a9d95b0f09ce8704b0f457b39059ee606092310df65d3f8ae7a2a424cf232 +S = 7d3c014ca470a73cef1d1da86f2a541148ad542fbccaf9149d1b0b030441a7eb + +Msg = abcf0e0f046b2e0672d1cc6c0a114905627cbbdefdf9752f0c31660aa95f2d0ede72d17919a9e9b1add3213164e0c9b5ae3c76f1a2f79d3eeb444e6741521019d8bd5ca391b28c1063347f07afcfbb705be4b52261c19ebaf1d6f054a74d86fb5d091fa7f229450996b76f0ada5f977b09b58488eebfb5f5e9539a8fd89662ab +d = 67b9dea6a575b5103999efffce29cca688c781782a41129fdecbce76608174de +Qx = b4238b029fc0b7d9a5286d8c29b6f3d5a569e9108d44d889cd795c4a385905be +Qy = 8cb3fff8f6cca7187c6a9ad0a2b1d9f40ae01b32a7e8f8c4ca75d71a1fffb309 +k = d02617f26ede3584f0afcfc89554cdfb2ae188c192092fdde3436335fafe43f1 +R = 26fd9147d0c86440689ff2d75569795650140506970791c90ace0924b44f1586 +S = 00a34b00c20a8099df4b0a757cbef8fea1cb3ea7ced5fbf7e987f70b25ee6d4f + +Msg = dc3d4884c741a4a687593c79fb4e35c5c13c781dca16db561d7e393577f7b62ca41a6e259fc1fb8d0c4e1e062517a0fdf95558b7799f20c211796167953e6372c11829beec64869d67bf3ee1f1455dd87acfbdbcc597056e7fb347a17688ad32fda7ccc3572da7677d7255c261738f07763cd45973c728c6e9adbeecadc3d961 +d = ecf644ea9b6c3a04fdfe2de4fdcb55fdcdfcf738c0b3176575fa91515194b566 +Qx = c3bdc7c795ec94620a2cfff614c13a3390a5e86c892e53a24d3ed22228bc85bf +Qy = 70480fc5cf4aacd73e24618b61b5c56c1ced8c4f1b869580ea538e68c7a61ca3 +k = 53291d51f68d9a12d1dcdc58892b2f786cc15f631f16997d2a49bace513557d4 +R = a860c8b286edf973ce4ce4cf6e70dc9bbf3818c36c023a845677a9963705df8b +S = 5630f986b1c45e36e127dd7932221c4272a8cc6e255e89f0f0ca4ec3a9f76494 + +Msg = 719bf1911ae5b5e08f1d97b92a5089c0ab9d6f1c175ac7199086aeeaa416a17e6d6f8486c711d386f284f096296689a54d330c8efb0f5fa1c5ba128d3234a3da856c2a94667ef7103616a64c913135f4e1dc50e38daa60610f732ad1bedfcc396f87169392520314a6b6b9af6793dbabad4599525228cc7c9c32c4d8e097ddf6 +d = 4961485cbc978f8456ec5ac7cfc9f7d9298f99415ecae69c8491b258c029bfee +Qx = 8d40bf2299e05d758d421972e81cfb0cce68b949240dc30f315836acc70bef03 +Qy = 5674e6f77f8b46f46cca937d83b128dffbe9bd7e0d3d08aa2cbbfdfb16f72c9a +k = 373a825b5a74b7b9e02f8d4d876b577b4c3984168d704ba9f95b19c05ed590af +R = ef6fb386ad044b63feb7445fa16b10319018e9cea9ef42bca83bdad01992234a +S = ac1f42f652eb1786e57be01d847c81f7efa072ba566d4583af4f1551a3f76c65 + +Msg = 7cf19f4c851e97c5bca11a39f0074c3b7bd3274e7dd75d0447b7b84995dfc9f716bf08c25347f56fcc5e5149cb3f9cfb39d408ace5a5c47e75f7a827fa0bb9921bb5b23a6053dbe1fa2bba341ac874d9b1333fc4dc224854949f5c8d8a5fedd02fb26fdfcd3be351aec0fcbef18972956c6ec0effaf057eb4420b6d28e0c008c +d = 587907e7f215cf0d2cb2c9e6963d45b6e535ed426c828a6ea2fb637cca4c5cbd +Qx = 660da45c413cc9c9526202c16b402af602d30daaa7c342f1e722f15199407f31 +Qy = e6f8cbb06913cc718f2d69ba2fb3137f04a41c27c676d1a80fbf30ea3ca46439 +k = 6b8eb7c0d8af9456b95dd70561a0e902863e6dfa1c28d0fd4a0509f1c2a647b2 +R = 08fabf9b57de81875bfa7a4118e3e44cfb38ec6a9b2014940207ba3b1c583038 +S = a58d199b1deba7350616230d867b2747a3459421811c291836abee715b8f67b4 + +Msg = b892ffabb809e98a99b0a79895445fc734fa1b6159f9cddb6d21e510708bdab6076633ac30aaef43db566c0d21f4381db46711fe3812c5ce0fb4a40e3d5d8ab24e4e82d3560c6dc7c37794ee17d4a144065ef99c8d1c88bc22ad8c4c27d85ad518fa5747ae35276fc104829d3f5c72fc2a9ea55a1c3a87007cd133263f79e405 +d = 24b1e5676d1a9d6b645a984141a157c124531feeb92d915110aef474b1e27666 +Qx = b4909a5bdf25f7659f4ef35e4b811429fb2c59126e3dad09100b46aea6ebe7a6 +Qy = 760ae015fa6af5c9749c4030fdb5de6e58c6b5b1944829105cf7edf7d3a22cfb +k = 88794923d8943b5dbcc7a7a76503880ff7da632b0883aaa60a9fcc71bf880fd6 +R = 6ec9a340b77fae3c7827fa96d997e92722ff2a928217b6dd3c628f3d49ae4ce6 +S = 637b54bbcfb7e7d8a41ea317fcfca8ad74eb3bb6b778bc7ef9dec009281976f7 + +Msg = 8144e37014c95e13231cbd6fa64772771f93b44e37f7b02f592099cc146343edd4f4ec9fa1bc68d7f2e9ee78fc370443aa2803ff4ca52ee49a2f4daf2c8181ea7b8475b3a0f608fc3279d09e2d057fbe3f2ffbe5133796124781299c6da60cfe7ecea3abc30706ded2cdf18f9d788e59f2c31662df3abe01a9b12304fb8d5c8c +d = bce49c7b03dcdc72393b0a67cf5aa5df870f5aaa6137ada1edc7862e0981ec67 +Qx = c786d9421d67b72b922cf3def2a25eeb5e73f34543eb50b152e738a98afb0ca5 +Qy = 6796271e79e2496f9e74b126b1123a3d067de56b5605d6f51c8f6e1d5bb93aba +k = 89e690d78a5e0d2b8ce9f7fcbf34e2605fd9584760fa7729043397612dd21f94 +R = 07e5054c384839584624e8d730454dc27e673c4a90cbf129d88b91250341854d +S = f7e665b88614d0c5cbb3007cafe713763d81831525971f1747d92e4d1ca263a7 + +Msg = a3683d120807f0a030feed679785326698c3702f1983eaba1b70ddfa7f0b3188060b845e2b67ed57ee68087746710450f7427cb34655d719c0acbc09ac696adb4b22aba1b9322b7111076e67053a55f62b501a4bca0ad9d50a868f51aeeb4ef27823236f5267e8da83e143047422ce140d66e05e44dc84fb3a4506b2a5d7caa8 +d = 73188a923bc0b289e81c3db48d826917910f1b957700f8925425c1fb27cabab9 +Qx = 86662c014ab666ee770723be8da38c5cd299efc6480fc6f8c3603438fa8397b9 +Qy = f26b3307a650c3863faaa5f642f3ba1384c3d3a02edd3d48c657c269609cc3fc +k = ec90584ab3b383b590626f36ed4f5110e49888aec7ae7a9c5ea62dd2dc378666 +R = 13e9ad59112fde3af4163eb5c2400b5e9a602576d5869ac1c569075f08c90ff6 +S = 708ac65ff2b0baaccc6dd954e2a93df46016bd04457636de06798fcc17f02be5 + +Msg = b1df8051b213fc5f636537e37e212eb20b2423e6467a9c7081336a870e6373fc835899d59e546c0ac668cc81ce4921e88f42e6da2a109a03b4f4e819a17c955b8d099ec6b282fb495258dca13ec779c459da909475519a3477223c06b99afbd77f9922e7cbef844b93f3ce5f50db816b2e0d8b1575d2e17a6b8db9111d6da578 +d = f637d55763fe819541588e0c603f288a693cc66823c6bb7b8e003bd38580ebce +Qx = 74a4620c578601475fc169a9b84be613b4a16cb6acab8fd98848a6ec9fbd133d +Qy = 42b9e35d347c107e63bd55f525f915bcf1e3d2b81d002d3c39acf10fc30645a1 +k = 4d578f5099636234d9c1d566f1215d5d887ae5d47022be17dbf32a11a03f053b +R = 113a933ebc4d94ce1cef781e4829df0c493b0685d39fb2048ce01b21c398dbba +S = 3005bd4ec63dbd04ce9ff0c6246ad65d27fcf62edb2b7e461589f9f0e7446ffd + +Msg = 0b918ede985b5c491797d0a81446b2933be312f419b212e3aae9ba5914c00af431747a9d287a7c7761e9bcbc8a12aaf9d4a76d13dad59fc742f8f218ef66eb67035220a07acc1a357c5b562ecb6b895cf725c4230412fefac72097f2c2b829ed58742d7c327cad0f1058df1bddd4ae9c6d2aba25480424308684cecd6517cdd8 +d = 2e357d51517ff93b821f895932fddded8347f32596b812308e6f1baf7dd8a47f +Qx = 7e4078a1d50c669fb2996dd9bacb0c3ac7ede4f58fa0fa1222e78dbf5d1f4186 +Qy = 0014e46e90cc171fbb83ea34c6b78202ea8137a7d926f0169147ed5ae3d6596f +k = be522b0940b9a40d84bf790fe6abdc252877e671f2efa63a33a65a512fc2aa5c +R = a26b9ad775ac37ff4c7f042cdc4872c5e4e5e800485f488ddfaaed379f468090 +S = f88eae2019bebbba62b453b8ee3472ca5c67c267964cffe0cf2d2933c1723dff + +Msg = 0fab26fde1a4467ca930dbe513ccc3452b70313cccde2994eead2fde85c8da1db84d7d06a024c9e88629d5344224a4eae01b21a2665d5f7f36d5524bf5367d7f8b6a71ea05d413d4afde33777f0a3be49c9e6aa29ea447746a9e77ce27232a550b31dd4e7c9bc8913485f2dc83a56298051c92461fd46b14cc895c300a4fb874 +d = 77d60cacbbac86ab89009403c97289b5900466856887d3e6112af427f7f0f50b +Qx = a62032dfdb87e25ed0c70cad20d927c7effeb2638e6c88ddd670f74df16090e5 +Qy = 44c5ee2cf740ded468f5d2efe13daa7c5234645a37c073af35330d03a4fed976 +k = 06c1e692b045f425a21347ecf72833d0242906c7c1094f805566cdcb1256e394 +R = eb173b51fb0aec318950d097e7fda5c34e529519631c3e2c9b4550b903da417d +S = ca2c13574bf1b7d56e9dc18315036a31b8bceddf3e2c2902dcb40f0cc9e31b45 + +Msg = 7843f157ef8566722a7d69da67de7599ee65cb3975508f70c612b3289190e364141781e0b832f2d9627122742f4b5871ceeafcd09ba5ec90cae6bcc01ae32b50f13f63918dfb5177df9797c6273b92d103c3f7a3fc2050d2b196cc872c57b77f9bdb1782d4195445fcc6236dd8bd14c8bcbc8223a6739f6a17c9a861e8c821a6 +d = 486854e77962117f49e09378de6c9e3b3522fa752b10b2c810bf48db584d7388 +Qx = 760b5624bd64d19c866e54ccd74ad7f98851afdbc3ddeae3ec2c52a135be9cfa +Qy = feca15ce9350877102eee0f5af18b2fed89dc86b7df0bf7bc2963c1638e36fe8 +k = e4f77c6442eca239b01b0254e11a4182782d96f48ab521cc3d1d68df12b5a41a +R = bdff14e4600309c2c77f79a25963a955b5b500a7b2d34cb172cd6acd52905c7b +S = b0479cdb3df79923ec36a104a129534c5d59f622be7d613aa04530ad2507d3a2 + +[P-256,SHA-512] + +Msg = 6c8572b6a3a4a9e8e03dbeed99334d41661b8a8417074f335ab1845f6cc852adb8c01d9820fcf8e10699cc827a8fbdca2cbd46cc66e4e6b7ba41ec3efa733587e4a30ec552cd8ddab8163e148e50f4d090782897f3ddac84a41e1fcfe8c56b6152c0097b0d634b41011471ffd004f43eb4aafc038197ec6bae2b4470e869bded +d = 9dd0d3a3d514c2a8adb162b81e3adfba3299309f7d2018f607bdb15b1a25f499 +Qx = 6b738de3398b6ac57b9591f9d7985dd4f32137ad3460dcf8970c1390cb9eaf8d +Qy = 83bc61e26d2bbbd3cf2d2ab445a2bc4ab5dde41f4a13078fd1d3cc36ab596d57 +k = 9106192170ccb3c64684d48287bb81bbed51b40d503462c900e5c7aae43e380a +R = 275fa760878b4dc05e9d157fedfd8e9b1c9c861222a712748cb4b7754c043fb1 +S = 699d906bb8435a05345af3b37e3b357786939e94caae257852f0503adb1e0f7e + +Msg = 7e3c8fe162d48cc8c5b11b5e5ebc05ebc45c439bdbc0b0902145921b8383037cb0812222031598cd1a56fa71694fbd304cc62938233465ec39c6e49f57dfe823983b6923c4e865633949183e6b90e9e06d8275f3907d97967d47b6239fe2847b7d49cf16ba69d2862083cf1bccf7afe34fdc90e21998964107b64abe6b89d126 +d = f9bf909b7973bf0e3dad0e43dcb2d7fa8bda49dbe6e5357f8f0e2bd119be30e6 +Qx = f2a6674d4e86152a527199bed293fa63acde1b4d8a92b62e552210ba45c38792 +Qy = c72565c24f0eee6a094af341ddd8579747b865f91c8ed5b44cda8a19cc93776f +k = e547791f7185850f03d0c58419648f65b9d29cdc22ed1de2a64280220cfcafba +R = 4782903d2aaf8b190dab5cae2223388d2d8bd845b3875d37485c54e1ded1d3d8 +S = dfb40e406bfa074f0bf832771b2b9f186e2211f0bca279644a0ca8559acf39da + +Msg = d5aa8ac9218ca661cd177756af6fbb5a40a3fecfd4eea6d5872fbb9a2884784aa9b5f0c023a6e0da5cf6364754ee6465b4ee2d0ddc745b02994c98427a213c849537da5a4477b3abfe02648be67f26e80b56a33150490d062aaac137aa47f11cfeddba855bab9e4e028532a563326d927f9e6e3292b1fb248ee90b6f429798db +d = 724567d21ef682dfc6dc4d46853880cfa86fe6fea0efd51fac456f03c3d36ead +Qx = 70b877b5e365fcf08140b1eca119baba662879f38e059d074a2cb60b03ea5d39 +Qy = 5f56f94d591df40b9f3b8763ac4b3dbe622c956d5bd0c55658b6f46fa3deb201 +k = 79d6c967ed23c763ece9ca4b026218004c84dc2d4ccc86cf05c5d0f791f6279b +R = 2ba2ea2d316f8937f184ad3028e364574d20a202e4e7513d7af57ac2456804d1 +S = 64fe94968d18c5967c799e0349041b9e40e6c6c92ebb475e80dd82f51cf07320 + +Msg = 790b06054afc9c3fc4dfe72df19dd5d68d108cfcfca6212804f6d534fd2fbe489bd8f64bf205ce04bcb50124a12ce5238fc3fe7dd76e6fa640206af52549f133d593a1bfd423ab737f3326fa79433cde293236f90d4238f0dd38ed69492ddbd9c3eae583b6325a95dec3166fe52b21658293d8c137830ef45297d67813b7a508 +d = 29c5d54d7d1f099d50f949bfce8d6073dae059c5a19cc70834722f18a7199edd +Qx = 3088d4f45d274cc5f418c8ecc4cbcf96be87491f420250f8cbc01cdf2503ec47 +Qy = 634db48198129237ed068c88ff5809f6211921a6258f548f4b64dd125921b78b +k = 0508ad7774908b5705895fda5c3b7a3032bf85dab7232bf981177019f3d76460 +R = acd9f3b63626c5f32103e90e1dd1695907b1904aa9b14f2132caef331321971b +S = 15c04a8bd6c13ed5e9961814b2f406f064670153e4d5465dcef63c1d9dd52a87 + +Msg = 6d549aa87afdb8bfa60d22a68e2783b27e8db46041e4df04be0c261c4734b608a96f198d1cdb8d082ae48579ec9defcf21fbc72803764a58c31e5323d5452b9fb57c8991d31749140da7ef067b18bf0d7dfbae6eefd0d8064f334bf7e9ec1e028daed4e86e17635ec2e409a3ed1238048a45882c5c57501b314e636b9bc81cbe +d = 0d8095da1abba06b0d349c226511f642dabbf1043ad41baa4e14297afe8a3117 +Qx = 75a45758ced45ecf55f755cb56ca2601d794ebeaeb2e6107fe2fc443f580e23c +Qy = 5303d47d5a75ec821d51a2ee7548448208c699eca0cd89810ffc1aa4faf81ead +k = 5165c54def4026ab648f7768c4f1488bcb183f6db7ffe02c7022a529a116482a +R = ebc85fc4176b446b3384ccc62fc2526b45665561a0e7e9404ac376c90e450b59 +S = 8b2c09428e62c5109d17ed0cf8f9fd7c370d018a2a73f701effc9b17d04852c6 + +Msg = 1906e48b7f889ee3ff7ab0807a7aa88f53f4018808870bfed6372a77330c737647961324c2b4d46f6ee8b01190474951a701b048ae86579ff8e3fc889fecf926b17f98958ac7534e6e781ca2db2baa380dec766cfb2a3eca2a9d5818967d64dfab84f768d24ec122eebacaab0a4dc3a75f37331bb1c43dd8966cc09ec4945bbd +d = 52fe57da3427b1a75cb816f61c4e8e0e0551b94c01382b1a80837940ed579e61 +Qx = 2177e20a2092a46667debdcc21e7e45d6da72f124adecbc5ada6a7bcc7b401d5 +Qy = 550e468f2626070a080afeeb98edd75a721eb773c8e62149f3e903cf9c4d7b61 +k = 0464fe9674b01ff5bd8be21af3399fad66f90ad30f4e8ee6e2eb9bcccfd5185c +R = f8250f073f34034c1cde58f69a85e2f5a030703ebdd4dbfb98d3b3690db7d114 +S = a9e83e05f1d6e0fef782f186bedf43684c825ac480174d48b0e4d31505e27498 + +Msg = 7b59fef13daf01afec35dea3276541be681c4916767f34d4e874464d20979863ee77ad0fd1635bcdf93e9f62ed69ae52ec90aab5bbf87f8951213747ccec9f38c775c1df1e9d7f735c2ce39b42edb3b0c5086247556cfea539995c5d9689765288ec600848ecf085c01ca738bbef11f5d12d4457db988b4add90be00781024ad +d = 003d91611445919f59bfe3ca71fe0bfdeb0e39a7195e83ac03a37c7eceef0df2 +Qx = 7b9c592f61aae0555855d0b9ebb6fd00fb6746e8842e2523565c858630b9ba00 +Qy = d35b2e168b1875bbc563bea5e8d63c4e38957c774a65e762959a349eaf263ba0 +k = ef9df291ea27a4b45708f7608723c27d7d56b7df0599a54bc2c2fabbff373b40 +R = 66d057fd39958b0e4932bacd70a1769bbadcb62e4470937b45497a3d4500fabb +S = 6c853b889e18b5a49ee54b54dd1aaedfdd642e30eba171c5cab677f0df9e7318 + +Msg = 041a6767a935dc3d8985eb4e608b0cbfebe7f93789d4200bcfe595277ac2b0f402889b580b72def5da778a680fd380c955421f626d52dd9a83ea180187b850e1b72a4ec6dd63235e598fd15a9b19f8ce9aec1d23f0bd6ea4d92360d50f951152bc9a01354732ba0cf90aaed33c307c1de8fa3d14f9489151b8377b57c7215f0b +d = 48f13d393899cd835c4193670ec62f28e4c4903e0bbe5817bf0996831a720bb7 +Qx = 82a1a96f4648393c5e42633ecdeb1d8245c78c5ea236b5bab460dedcc8924bc0 +Qy = e8cbf03c34b5154f876de19f3bb6fd43cd2eabf6e7c95467bcfa8c8fc42d76fd +k = efed736e627899fea944007eea39a4a63c0c2e26491cd12adb546be3e5c68f7d +R = cf7fc24bdaa09ac0cca8497e13298b961380668613c7493954048c06385a7044 +S = f38b1c8306cf82ab76ee3a772b14416b49993fe11f986e9b0f0593c52ec91525 + +Msg = 7905a9036e022c78b2c9efd40b77b0a194fbc1d45462779b0b76ad30dc52c564e48a493d8249a061e62f26f453ba566538a4d43c64fb9fdbd1f36409316433c6f074e1b47b544a847de25fc67d81ac801ed9f7371a43da39001c90766f943e629d74d0436ba1240c3d7fab990d586a6d6ef1771786722df56448815f2feda48f +d = 95c99cf9ec26480275f23de419e41bb779590f0eab5cf9095d37dd70cb75e870 +Qx = 42c292b0fbcc9f457ae361d940a9d45ad9427431a105a6e5cd90a345fe3507f7 +Qy = 313b08fd2fa351908b3178051ee782cc62b9954ad95d4119aa564900f8ade70c +k = 4c08dd0f8b72ae9c674e1e448d4e2afe3a1ee69927fa23bbff3716f0b99553b7 +R = f2bc35eb1b8488b9e8d4a1dbb200e1abcb855458e1557dc1bf988278a174eb3b +S = ed9a2ec043a1d578e8eba6f57217976310e8674385ad2da08d6146c629de1cd9 + +Msg = cf25e4642d4f39d15afb7aec79469d82fc9aedb8f89964e79b749a852d931d37436502804e39555f5a3c75dd958fd5291ada647c1a5e38fe7b1048f16f2b711fdd5d39acc0812ca65bd50d7f8119f2fd195ab16633503a78ee9102c1f9c4c22568e0b54bd4fa3f5ff7b49160bf23e7e2231b1ebebbdaf0e4a7d4484158a87e07 +d = e15e835d0e2217bc7c6f05a498f20af1cd56f2f165c23d225eb3360aa2c5cbcf +Qx = 89dd22052ec3ab4840206a62f2270c21e7836d1a9109a3407dd0974c7802b9ae +Qy = e91609ba35c7008b080c77a9068d97a14ca77b97299e74945217672b2fd5faf0 +k = c9f621441c235fc47ec34eef4c08625df1ec74918e1f86075b753f2589f4c60b +R = a70d1a2d555d599bfb8c9b1f0d43725341151d17a8d0845fa56f3563703528a7 +S = 4e05c45adf41783e394a5312f86e66871c4be4896948c85966879d5c66d54b37 + +Msg = 7562c445b35883cc937be6349b4cefc3556a80255d70f09e28c3f393daac19442a7eecedcdfbe8f7628e30cd8939537ec56d5c9645d43340eb4e78fc5dd4322de8a07966b262770d7ff13a071ff3dce560718e60ed3086b7e0003a6abafe91af90af86733ce8689440bf73d2aa0acfe9776036e877599acbabfcb03bb3b50faa +d = 808c08c0d77423a6feaaffc8f98a2948f17726e67c15eeae4e672edbe388f98c +Qx = b0c0ad5e1f6001d8e9018ec611b2e3b91923e69fa6c98690ab644d650f640c42 +Qy = 610539c0b9ed21ac0a2f27527c1a61d9b47cbf033187b1a6ada006eb5b2662ed +k = 1f6d4a905c761a53d54c362976717d0d7fc94d222bb5489e4830080a1a67535d +R = 83404dcf8320baf206381800071e6a75160342d19743b4f176960d669dd03d07 +S = 3f75dcf102008b2989f81683ae45e9f1d4b67a6ef6fd5c8af44828af80e1cfb5 + +Msg = 051c2db8e71e44653ea1cb0afc9e0abdf12658e9e761bfb767c20c7ab4adfcb18ed9b5c372a3ac11d8a43c55f7f99b33355437891686d42362abd71db8b6d84dd694d6982f0612178a937aa934b9ac3c0794c39027bdd767841c4370666c80dbc0f8132ca27474f553d266deefd7c9dbad6d734f9006bb557567701bb7e6a7c9 +d = f7c6315f0081acd8f09c7a2c3ec1b7ece20180b0a6365a27dcd8f71b729558f9 +Qx = 250f7112d381c1751860045d9bcaf20dbeb25a001431f96ac6f19109362ffebb +Qy = 49fba9efe73546135a5a31ab3753e247034741ce839d3d94bd73936c4a17e4aa +k = 68c299be2c0c6d52d208d5d1a9e0ffa2af19b4833271404e5876e0aa93987866 +R = 7b195e92d2ba95911cda7570607e112d02a1c847ddaa33924734b51f5d81adab +S = 10d9f206755cef70ab5143ac43f3f8d38aea2644f31d52eaf3b472ee816e11e5 + +Msg = 4dcb7b62ba31b866fce7c1feedf0be1f67bf611dbc2e2e86f004422f67b3bc1839c6958eb1dc3ead137c3d7f88aa97244577a775c8021b1642a8647bba82871e3c15d0749ed343ea6cad38f123835d8ef66b0719273105e924e8685b65fd5dc430efbc35b05a6097f17ebc5943cdcd9abcba752b7f8f37027409bd6e11cd158f +d = f547735a9409386dbff719ce2dae03c50cb437d6b30cc7fa3ea20d9aec17e5a5 +Qx = 4ca87c5845fb04c2f76ae3273073b0523e356a445e4e95737260eba9e2d021db +Qy = 0f86475d07f82655320fdf2cd8db23b21905b1b1f2f9c48e2df87e24119c4880 +k = 91bd7d97f7ed3253cedefc144771bb8acbbda6eb24f9d752bbe1dd018e1384c7 +R = 008c1755d3df81e64e25270dbaa9396641556df7ffc7ac9add6739c382705397 +S = 77df443c729b039aded5b516b1077fecdd9986402d2c4b01734ba91e055e87fc + +Msg = efe55737771070d5ac79236b04e3fbaf4f2e9bed187d1930680fcf1aba769674bf426310f21245006f528779347d28b8aeacd2b1d5e3456dcbf188b2be8c07f19219e4067c1e7c9714784285d8bac79a76b56f2e2676ea93994f11eb573af1d03fc8ed1118eafc7f07a82f3263c33eb85e497e18f435d4076a774f42d276c323 +d = 26a1aa4b927a516b661986895aff58f40b78cc5d0c767eda7eaa3dbb835b5628 +Qx = 28afa3b0f81a0e95ad302f487a9b679fcdef8d3f40236ec4d4dbf4bb0cbba8b2 +Qy = bb4ac1be8405cbae8a553fbc28e29e2e689fabe7def26d653a1dafc023f3cecf +k = f98e1933c7fad4acbe94d95c1b013e1d6931fa8f67e6dbb677b564ef7c3e56ce +R = 15a9a5412d6a03edd71b84c121ce9a94cdd166e40da9ce4d79f1afff6a395a53 +S = 86bbc2b6c63bad706ec0b093578e3f064736ec69c0dba59b9e3e7f73762a4dc3 + +Msg = ea95859cc13cccb37198d919803be89c2ee10befdcaf5d5afa09dcc529d333ae1e4ffd3bd8ba8642203badd7a80a3f77eeee9402eed365d53f05c1a995c536f8236ba6b6ff8897393506660cc8ea82b2163aa6a1855251c87d935e23857fe35b889427b449de7274d7754bdeace960b4303c5dd5f745a5cfd580293d6548c832 +d = 6a5ca39aae2d45aa331f18a8598a3f2db32781f7c92efd4f64ee3bbe0c4c4e49 +Qx = c62cc4a39ace01006ad48cf49a3e71466955bbeeca5d318d672695df926b3aa4 +Qy = c85ccf517bf2ebd9ad6a9e99254def0d74d1d2fd611e328b4a3988d4f045fe6f +k = dac00c462bc85bf39c31b5e01df33e2ec1569e6efcb334bf18f0951992ac6160 +R = 6e7ff8ec7a5c48e0877224a9fa8481283de45fcbee23b4c252b0c622442c26ad +S = 3dfac320b9c873318117da6bd856000a392b815659e5aa2a6a1852ccb2501df3 + + + +[P-384,SHA-224] + +Msg = 39f0b25d4c15b09a0692b22fbacbb5f8aee184cb75887e2ebe0cd3be5d3815d29f9b587e10b3168c939054a89df11068e5c3fac21af742bf4c3e9512f5569674e7ad8b39042bcd73e4b7ce3e64fbea1c434ed01ad4ad8b5b569f6a0b9a1144f94097925672e59ba97bc4d33be2fa21b46c3dadbfb3a1f89afa199d4b44189938 +d = 0af857beff08046f23b03c4299eda86490393bde88e4f74348886b200555276b93b37d4f6fdec17c0ea581a30c59c727 +Qx = 00ea9d109dbaa3900461a9236453952b1f1c2a5aa12f6d500ac774acdff84ab7cb71a0f91bcd55aaa57cb8b4fbb3087d +Qy = 0fc0e3116c9e94be583b02b21b1eb168d8facf3955279360cbcd86e04ee50751054cfaebcf542538ac113d56ccc38b3e +k = e2f0ce83c5bbef3a6eccd1744f893bb52952475d2531a2854a88ff0aa9b12c65961e2e517fb334ef40e0c0d7a31ed5f5 +R = c36e5f0d3de71411e6e519f63e0f56cff432330a04fefef2993fdb56343e49f2f7db5fcab7728acc1e33d4692553c02e +S = 0d4064399d58cd771ab9420d438757f5936c3808e97081e457bc862a0c905295dca60ee94f4537591c6c7d217453909b + +Msg = 5a3c80e608ed3ac75a6e45f6e94d374271a6d42b67a481860d5d309cc8b37c79cb61f1716dc8aa84cb309ef9d68eb7fc6cf4b42333f316a5c30e74198c8b340926e340c5de47674a707293c4aa2a1a2274a602f01c26b156e895499c60b38ef53fc2032e7485c168d73700d6fa14232596a0e4997854a0b05d02e351b9d3de96 +d = 047dd5baab23f439ec23b58b7e6ff4cc37813cccb4ea73bb2308e6b82b3170edfe0e131eca50841bf1b686e651c57246 +Qx = de92ff09af2950854a70f2178d2ed50cc7042a7188301a1ea81d9629ad3c29795cb7f0d56630a401e4d6e5bed0068d1e +Qy = 6135adbd8624130735e64e65ecbd43770dcc12b28e737b5ed033666f34c918eb5589508e4a13b9243374a118a628dd0b +k = f3922351d14f1e5af84faab12fe57ded30f185afe5547aeb3061104740ecc42a8df0c27f3877b4d855642b78938c4e05 +R = 38e181870cb797c1f4e6598cfd032add1cb60447d33473038d06df73919f844eddd16f40f911075f8a4bacc0d924e684 +S = a58dd1ca18aa31277de66c30c3bb7a14b53705ce6c547ed2cb0e336f63c42809422efffcc722d1155f2254330a02b278 + +Msg = e7d974c5dbd3bfb8a2fb92fdd782f997d04be79e9713944ce13c5eb6f75dfdec811b7ee4b3859114b07f263846ae13f795eec8f3cb5b7565baff68e0fdd5e09ba8b176d5a71cb03fbc5546e6937fba560acb4db24bd42de1851432b96e8ca4078313cb849bce29c9d805258601d67cd0259e255f3048682e8fdbdda3398c3e31 +d = 54ba9c740535574cebc41ca5dc950629674ee94730353ac521aafd1c342d3f8ac52046ed804264e1440d7fe409c45c83 +Qx = 3db95ded500b2506b627270bac75688dd7d44f47029adeff99397ab4b6329a38dbb278a0fc58fe4914e6ae31721a6875 +Qy = 049288341553a9ac3dc2d9e18e7a92c43dd3c25ca866f0cb4c68127bef6b0e4ba85713d27d45c7d0dc57e5782a6bf733 +k = 04324bd078807f6b18507a93ee60da02031717217ee5ce569750737be912be72da087ac00f50e13fdf7249a6ae33f73e +R = b2752aa7abc1e5a29421c9c76620bcc3049ecc97e6bc39fcca126f505a9a1bfae3bde89fb751a1aa7b66fa8db3891ef0 +S = f1c69e6d818ca7ae3a477049b46420cebd910c0a9a477fd1a67a38d628d6edaac123aebfca67c53a5c80fe454dba7a9d + +Msg = a670fda4d1d56c70de1d8680328043b2b7029633caf0ee59ffe1421c914bb937133d5a0f9214846b2e0b350455a74c4ab434c56de65a17139bb8212bf1c76071a37536fa29348f871dbb26baa92eb93d97e923a6d2ffd9be25cbc33075e494e6db657bd8dc053fe4e17148d8cf6e2058164f2b5766750eb01bbe7b361cdb848c +d = dabe87bbe95499bac23bc83c8b7307fe04be198f00059e2bf67c9611feaffb2c8f274f6aa50eb99c3074186d8067d659 +Qx = c2aa0a695125279705917e02a4f258cade4c3ff9140a071414babf87764f426f7f36ffda9d5f3394375d24864235476f +Qy = 8f9808da0ce0227cf453f9e456f557db9752e23b45cce4baad5fee3844ddd7e1112bcec01ea9d67c7a76f3535bd0cb58 +k = 65a0305854033cbc6fe3ca139c40ca354d45801ecb59f4a923c251dc6b25d12d452d99b5d6711fdb5efac812aa464cc4 +R = c7fc32997d17ac79baf5789e4503f5f1a8863872bc350a91f12dd3ef8cf78c254e829217809e8e00b6b8d4d85be3f1fd +S = 1422e1838a22496df93486bce1142961dbd8478ae844b8dda54e210afdae0d9e930d587c91bb600b0bde7237186d94e6 + +Msg = 7843f918fe2588bcfe756e1f05b491d913523255aa006818be20b676c957f4edb8df863c6f5f8c15b3b80c7a2aa277b70d53f210bdfb856337980c406ea140e439dd321471407f374f69877b2d82367eed51e3c82c13948616dcb301d0c31f8f0352f2846abd9e72071f446a2f1bd3339a09ae41b84e150fd18f4ba5d3c6bfa0 +d = df43107a1deb24d02e31d479087bd669e2bc3e50f1f44b7db9484a7143cdca6a3391bddfea72dc940dbce8ec5efbd718 +Qx = 76bd4be5d520471162cb5c36f80038301b325f845d9642204a84d78b3e721098932827bf872bde0a9f86383953667d29 +Qy = 415116b8b878f896a5aa4dbbdc21076f27135d8bbcaaca02489ef639d742bd63f377da0c8e8ab36ff19b4a7cc5d4ceb4 +k = 798abad5a30d1805794540057388ee05e2422901c6335f985b9d4447b3ef75524751abfeab6409ad6bf77d4ae3014558 +R = 98744e5c6742fa5118a74a70db4957647a3cc12add4e876b45974a6a8707809f871daadbfc0b865e01624f706b65f10c +S = 9e256e8da8eff5a0c83baaa1ef4f7be798eba9543bf97adb0fff8719f5406ea1207a0cf703d99aa8f02169724b492273 + +Msg = caa83d5ab07febbd2e0fe2d63738b9b7b8752594bea7aaf50345b3d2f316653a8c9222f2b7877b64679e9573e81461a426029e45b8873a575094a1d572e0d32a9f0a9c6bcb9a2868543b7d8bbe4a69a09e7321f05f8366cced1b72df526f895b60aed2c39c249653c7839538770d4e5f47d3926ec0d168ab6a1af15bf1dca1f7 +d = ea7a563ba2a7f5ab69973dca1f1a0d1572f0c59817cd3b62ad356c2099e2cdca1c553323563f9dfbb333b126d84abc7f +Qx = cf4717c5f5de668b785f06bdc9845df5a09e4edd83f4669756407cbb60807305c632bc49f818f4a84b194369aa07736f +Qy = 7391e4982af8a2218f704f627d01f0508bfc8304992a2d598a420bf2eb519f33bd7caf79380793733b3dba0cc5e2b9d8 +k = 7b9606b3df7b2a340dbc68d9754de0734e1faeb5a0135578a97628d948702235c60b20c8002c8fcf906783e1b389e754 +R = 0d680010bed373287f9767955b5d2850e150b6713b49e453eb280148e45230c853d99ea2d2f8fcbd3ddcba19aeec0af1 +S = 64329763a930ab5452afdb0557fef16ff71810d6343dfc9c6ae18905c3d274db6554cdc69d6078a1ca03284474a94f30 + +Msg = 594603458d6534974aeeafba919c4d0f4cb6843a3af41204bbb88aeb2fca2772d305163dba863da050aabedbaf89db521955d1715de95bbcef979ecdc0c976181ece00355385f8a8f8cce127c9eac15ce3e958a3ed686184674ec9a50eb63271606ee7fdcb1323da3c3db8e89cad1fb42139a32d08abcfbf0d4ccfca18c89a86 +d = 4cc70cb35b3ddeb0df53a6bd7bd05f8ff4392a2db7344f2d443761484b3a468a4ee3d1a8b27113d57283fd18b05f7829 +Qx = 40e1fe21df34bb85a642a0abe819ebd128f7e39b84d8dcc4a9a599b372fb9588da1484600ec28b1297bb685f9ae77831 +Qy = f3aa69ada57879fdcbe8df19cefabc308add7d03b17b1fac2f7783fece6a8dfe20bc36f518692677d96e3f730a67a671 +k = 8eda401d98f5688c34d8dbebcd3991c87c0442b0379154eaa2e5287dabe9a9e34cfc1305d11ff68781df25d5611b331d +R = ff2d772786e159448bba26afd8c3281941a4cb0c56fec6f5cccb4c292c4ee0f7af9bd39bbe2d88148732585e104fdb30 +S = 07a1d890770daa949a17797dca7af3e8163da981ec330c03d63d1a8312c152be6a718163205ffa08da7dcc163ba261f4 + +Msg = 733252d2bd35547838be22656cc7aa67eff0af0b13b428f77267a513c6824c3dbae533068b6817e82665f009560affcfe4b2ddb5b667a644fc1a42d24f24e0947e0dc50fb62c919bc1fe4e7ded5e28f2e6d80fcf66a081fb2763526f8def5a81a4ddd38be0b59ee839da1643eeeaee7b1927cec12cf3da67c02bc5465151e346 +d = 366d15e4cd7605c71560a418bd0f382fd7cd7ad3090ff1b2dfbed74336166a905e1b760cf0bccee7a0e66c5ebfb831f1 +Qx = a143f277ab36a10b645ff6c58241ea67ffdc8acf12d60973068390f06b4d8f4d773b10c1ebf6889b1cfa73ebb90f6ca1 +Qy = 7a17cad29bb507b309021f6f92cb5c10ba535f4a3e317fcc68cfd02d3ccd269f465169c73d30ff308f5350d881b08aec +k = dbe545f920bc3d704c43d834bab21e40df12ec9e16a619a3e6b3f08760c26aae6e4fd91fad00f745194794b74bb1baee +R = cdc39b12bba30da66fe9554713c05880ddc27afa4d2d151440f124c351fb9496dc95046516b0921083347d64369846ac +S = 797d0344e49f9ba87a187c50f664e5015d449e346b1a7bd9427c5be559fc58173651880d5aadf053f81899d3368d6181 + +Msg = 5a182bd174feb038dfae3346267156bf663167f713dea1ce936b0edb815cd9b8c8e4d411c786ba2494a81442617255db7158b142e720d86c9b56680fb9efd4298cdd69079a28153494c42a24251c7ad42ecf7e97eabc1b3997529b2a297cbad2474269b87a0b1e385f2d7f8b6eb8d1cd75eaf7e91d1acbecd45d7b2bfbbe3216 +d = e357d869857a52a06e1ece5593d16407022354780eb9a7cb8575cef327f877d22322c006b3c8c11e3d7d296a708bdb6d +Qx = ce9a2185a68d6094aa5849a6efe78b349946f7380f0c79aa9664246cfcc71a879e90ad78a0474f58644c6a208168150e +Qy = 8354fa47673cb3e07d446521345706c5515584b2602f921c3b9c44dded9e2c3f90ce47adb36d7e5f9f95a8c5ad8af397 +k = 1e77367ac4e10924854d135ad2f2507f39e2bafdbce33ff256bcbe9a7329b8d27185218bcc3550aafbe3390e84c77292 +R = df3182d49ad70959fb0c95bc7312750ce70fc87f1a328d39d9b29ac05d31305ce7209d6c24d13225d9567b489f7a187b +S = d812b05abab0e96de13291e1f0da6479444ed5cd9d959b76f6cb43d394769035364f7c831a104dc7b5bd9b4a8e64df64 + +Msg = aaa99fb1c71340d785a18f6f668e898c25cf7a0ac31d13c5b388b7233408493a5a109af6d07065376b96f4903df7aba2b2af671a18772bb0472490d1240cde28967680727dd4acd47e0308920a75da857a6eeedee5b6586d45dff3d8a680599665aa895c89dd7770b824b7dee477ac5e7602d409d3cc553090c970b50811dbab +d = 745a18db47324a3710b993d115b2834339315e84e7006eafd889fb49bd3cc5a8b50c90526e65e6c53bddd2916d14bead +Qx = f692578c6f77531210aef55c9e004ce3b66cf268c6900dde31a8bbb76e7562e3fb76242de34ca330d2501030aa119466 +Qy = 40965833b28de926c46de060aa25beaeda98f8415a6b1e3564aa77870cf4c89bd4fde92c8f5d9bf0eb41721586859d8e +k = 11b9b36720abcac084efdb44c9f5b7d039e3250cb1e9c47850189ba3cfc1489d858b2a44df357772b61d919c7e729c0f +R = 02b252c99820cf50e6ce060ab55bd4f682276e29b4ae4197417432e6a7bfb8cf0bac89dfe105456af805d822cee77696 +S = 8e248bbf7d7028d63177e565c9d1666ee5be4d1ffbfffc9c7814b0cd38f74b98f3f2cd59be42b9f132bfe5ee789cd96c + +Msg = 1fadfa8254d3a0b82d137cfdd82043d5dc1fef195d5297b09cc5cfb061f59c933451c0dc2a11b4037f34f88dacb803251f8880c4b72585c3c196e6fb23484ca43a191f8e41b9b9a37e2e6fcaab6738c3c62d1c98e1c620bb788b7b51a04f998a510efdba0d3418622fe8ce203b3fcd553b9b4206365a39031797ad11e49745ec +d = 93f20963ea5011ff4f26481e359309e634195f6289134087bd2e83eee008c962780a679784ee7ac6acda03d663ed27e0 +Qx = 0edcde3533ea019e18f1a3cd97b7962e8823dda36c389f8f9287549f796d11376392b8a01c7a80f127a8f75795e04f54 +Qy = 63d7c458dccfc02f5148d755d59f9bbc8e3c3ea34908777928440747795955741296abcdd5386676419ed8049fedb489 +k = 3ad308faf04c42ee5ac69d36bc0aa9a96aacf55ea0f27dac4f52e088f023d206340a6324874ffad169ff80624de24c96 +R = 209b72f9aae72c4339813573c3a8408a9e0be641ca863d81d9d14c48d0bf4cd44a1a7985cff07b5d68f3f9478475645b +S = f6292e599b22a76eda95393cf59f4745fa6c472effd1f781879ad9a4437a98080b0b07dadad0c249631c682d2836a977 + +Msg = 9ecb6f5ed3ba666a8536a81ef65012c2cb8b433508798d84708abb06dfb75503886f78384fb8c7a4d2d49ef539d9b8a0b60938c7f07471dda91f258b0d99691b38a8403a2bb3f956bdfd09baba16d9b6877097a9b6213481b47a06e139d23ec7abad5668d21f912fdb70d31bb9adf9b3ce80e308252fa81a51674f88d02db72b +d = f175e6ac42fd48ec9d652c10707c039c67c4cc61d8c45a373dcda6e4ca6c53e947e49c24e01b48e7cdf92edfe6d316a1 +Qx = a40c64f595491ce15790a5a87fbe64c1800247b42acd08fe5257700719f46afc8acce0e4ede0517a312092d5e3d089cd +Qy = d565df9dc2f381cc0c5d84f382a43a98018524c0b4708a44b3e2817f9719f29fbf9c15803591ed9b4790c5adaba9f433 +k = 812dcaa6d4f9a43ccc553288065d13761581485aa903a500a690ccafbd330ba4818c977b98c4bb57f8a182a1afacfae9 +R = d000f18d3e4c162ff0d16f662e6703e7a6f5bff7a333ed266fa4f44c752415946c34945c342c20f739677186b1d80ab3 +S = ae7f1271c89e0aaa238710d039ea73a69110cc28fcf426f2fe6754b63a59e417fa84f903cf7dccb5468b43ff083bbfd5 + +Msg = e55bfca78d98e68d1b63688db12485578f36c489766f4d0bfaa0088433ff12133aaca455805095f2e655940860958b3ead111d9070778ee3bbf3e47e43d9eba8b8d9b1fdf72f793fcde2bcaa334f3e35fa2cca531ea7cf27fe9ccba741e38ac26129b2d612bf54a34e0ae6c166c0fef07fcd2b9ac253d7e041a500f7be7b8369 +d = 46c4f0b228b28aaa0ec8cfdf1d0ed3408b7ae049312fb9eaf5f3892720e68684cc8ad29844a3dc9d110edf6916dfb8bb +Qx = 13ddec844731b7e30c467451df08ca11d6c581cb64abd8a257671cffd26f5ccad4df7b9ee8924047a88a5d2d7567609c +Qy = d74ca94f590fd1d13e190cc1e03c3da6c3faab15c7dda034af3deefee8aeec3628fa8b1978c54cfcd071baa319a46ec0 +k = 2a9dd520207c40a379cd4036adef9ee60fa8bc8c0d39b3ad91850ac93fd543f218b1688581f23481a090b0e4c73792ac +R = 94e08cca20fe3866f643f53ec65faf3f2b4d80cd9bcc8ff8f88bb28da9eada324fc2d048908dd3d08a9e0ebb547731bc +S = 8e6f82c4d3069b14f4c844b4ca133a9503493265c9f77a7d4775eda67de76798a23dd7ea48e0ac3c337dd62bf058319d + +Msg = 02c6b3c83bd34b288d96409162aa4ff114e9d134bf948046eb5ebcc0c7fe9dfceadda83ed69da2fac00c8840f6c702a3fc5e6959d70f7e8af923e99e4937232ae3b841ffefd2e62fab3671a7c94a0281b8ea5bc176add57c5c9b6893fe7f5d48ce7256b96510810c4e046168a3c5be9843b84d5268a50349b3444341aa5490dd +d = 1d7b71ef01d0d33a8513a3aed3cabb83829589c8021087a740ca65b570777089be721a61172b874a22a1f81aef3f8bb6 +Qx = 8d2721370df8f097d5a69396249a315f6037dc7045b3da11eacae6d43036f779d5de7053d101768b42cc2b1283a3aaea +Qy = a046039ae662141f9954d278183eaa2e03917fe58583e32d344074d59d60caa5b0949c53066525d5cca923e2f201502e +k = d1b25ad25581cad17e96f1d302251681fee5b2efbb71c3c15ff035b2145d015d18e0e52dc3187ab5a560277b3a3929b0 +R = d836f52b14c7391744868daa2d5cf27eb9380b9b6176195573d5b04842e9f2fc3794d6cf877feafee63d11b05f6a6bee +S = 8b89042fef2c04d4bd6c9d66a06a010514321d623a5f8d57ba5ac3686872eaabca9e0ba2d058ae7028e870acf03ca32d + +Msg = 94f8bfbb9dd6c9b6193e84c2023a27dea00fd48356909faec2161972439686c146184f80686bc09e1a698af7df9dea3d24d9e9fd6d7348a146339c839282cf8984345dc6a51096d74ad238c35233012ad729f262481ec7cd6488f13a6ebac3f3d23438c7ccb5a66e2bf820e92b71c730bb12fd64ea1770d1f892e5b1e14a9e5c +d = cf53bdd4c91fe5aa4d82f116bd68153c907963fa3c9d478c9462bb03c79039493a8eaeb855773f2df37e4e551d509dcd +Qx = 3a65b26c08102b44838f8c2327ea080daf1e4fc45bb279ce03af13a2f9575f0fff9e2e4423a58594ce95d1e710b590ce +Qy = fe9dcbcb2ec6e8bd8ed3af3ff0aa619e900cc8bab3f50f6e5f79fac09164fb6a2077cc4f1fed3e9ec6899e91db329bf3 +k = df31908c9289d1fe25e055df199591b23e266433ab8657cc82cb3bca96b88720e229f8dfd42d8b78af7db69342430bca +R = 6770eea9369d6718e60dd0b91aee845ff7ed7e0fcc91675f56d32e5227fd3a4612bbcb1556fe94a989b9e3bcc25bb20e +S = c43072f706c98126d06a82b04251e3ecb0ba66c4bb6cd7c025919b9cc6019cdc635256d2a7fa017b806b1e88649d2c0d + +[P-384,SHA-256] + +Msg = 663b12ebf44b7ed3872b385477381f4b11adeb0aec9e0e2478776313d536376dc8fd5f3c715bb6ddf32c01ee1d6f8b731785732c0d8441df636d8145577e7b3138e43c32a61bc1242e0e73d62d624cdc924856076bdbbf1ec04ad4420732ef0c53d42479a08235fcfc4db4d869c4eb2828c73928cdc3e3758362d1b770809997 +d = c602bc74a34592c311a6569661e0832c84f7207274676cc42a89f058162630184b52f0d99b855a7783c987476d7f9e6b +Qx = 0400193b21f07cd059826e9453d3e96dd145041c97d49ff6b7047f86bb0b0439e909274cb9c282bfab88674c0765bc75 +Qy = f70d89c52acbc70468d2c5ae75c76d7f69b76af62dcf95e99eba5dd11adf8f42ec9a425b0c5ec98e2f234a926b82a147 +k = c10b5c25c4683d0b7827d0d88697cdc0932496b5299b798c0dd1e7af6cc757ccb30fcd3d36ead4a804877e24f3a32443 +R = b11db00cdaf53286d4483f38cd02785948477ed7ebc2ad609054551da0ab0359978c61851788aa2ec3267946d440e878 +S = 16007873c5b0604ce68112a8fee973e8e2b6e3319c683a762ff5065a076512d7c98b27e74b7887671048ac027df8cbf2 + +Msg = 784d7f4686c01bea32cb6cab8c089fb25c341080d9832e04feac6ea63a341079cbd562a75365c63cf7e63e7e1dddc9e99db75ccee59c5295340c2bba36f457690a8f05c62ab001e3d6b333780117d1456a9c8b27d6c2504db9c1428dad8ba797a4419914fcc636f0f14ede3fba49b023b12a77a2176b0b8ff55a895dcaf8dbce +d = 0287f62a5aa8432ff5e95618ec8f9ccaa870dde99c30b51b7673378efe4ccac598f4bbebbfd8993f9abb747b6ad638b9 +Qx = b36418a3014074ec9bbcc6a4b2367a4fb464cca7ec0a324cb68670d5c5e03e7a7eb07da117c5ea50b665ab62bd02a491 +Qy = 4ea299c30e7d76e2c5905babada2d3bb4ee5eb35a5a23605cdb0d5133471a53eb9e6758e49105a4eaf29d2267ba84ef2 +k = 935eeab3edeb281fbd4eead0d9c0babd4b10ff18a31663ee9de3bfa9ae8f9d266441158ea31c889ded9b3c592da77fd7 +R = 738f9cb28f3b991335ef17b62559255faf75cad370a222464a492e27bb173c7f16b22100ada6b695875c7e4b1a28f158 +S = bc998c30e1491cd5d60dc7d1c38333165efe036b2a78db9b8f0e85ee68619cfba654e11ae5ca5ee5a87099c27cf22442 + +Msg = 45e47fccc5bd6801f237cdbeac8f66ebc75f8b71a6da556d2e002352bd85bf269b6bc7c928d7bb1b0422601e4dd80b29d5906f8fcac212fe0eaaf52eda552303259cbcbe532e60abd3d38d786a45e39a2875bce675800a3eaeb9e42983d9fd9031180abd9adccc9ba30c6c198b4202c4dd70f241e969a3c412724b9b595bc28a +d = d44d3108873977036c9b97e03f914cba2f5775b68c425d550995574081191da764acc50196f6d2508082a150af5cd41f +Qx = c703835d723c85c643260379d8445b0c816fe9534351921e14a8e147fe140ec7b0c4d704f8dc66a232b2333b28f03dee +Qy = c5d0bb054053fd86c26f147c4966757aa04b00513a02d427b8d06c16055c607955efdc518d338abfe7927c195dc28588 +k = c80f63e080650c8a21e4f63a62ec909adfb7d877f365d11ee1cb260baf112eb4730c161c1d99dba98fc0d5bbd00dc97d +R = 81de2810cde421997013513951a3d537c51a013110d6dbb29251410bcb5ba001a9686b8490f1e581e282fd2ed0974b22 +S = 9cab0bbaffe91c7677ec3dd1f17060211a3cc0be574cbca064aa8c4b66ba6e64f3d80e83da895042ca32d311c388d950 + +Msg = c33ff63b4e6891e00b2349b3f2907c417ca355560544a91e24a7a0ee260d6850aeded29fc0176b6039ca6187e8333391047cceaf14b1077df8f147dad84d36b2dac5666dc2f69dc9b58b88cc73956efdb3b47f91831d5875051c76b0c4e9fc087012a1f03eeee85d6745b46aa50bd9cb0110c2c94508765cec162ee1aa841d73 +d = d5b72cbb6ec68aca46b9c27ad992afd8ffa02cb3067b234fcfa6e272e3b31be760695ff7df988b57663057ab19dd65e3 +Qx = 135a6542612f1468d8a4d01ff1914e532b1dd64d3627db9d403dc325651d3f82b0f6f0fd1dbdeca2be967c4fb3793b5f +Qy = cbbd40f6d3a38d0dfb64582ff4789d7b268241bc0c36de2884bccfaeeff3b7b2b46a30bb35719804e0d11124b4e7f480 +k = 9da6de7c87c101b68db64fea40d97f8ad974ceb88224c6796c690cbf61b8bd8eede8470b3caf6e6106b66cf3f0eebd55 +R = 17840911ecdf6ae0428b2634f442163c2c11b8dbf0cc7a5596fbe4d33e3e52f9d99e99ad169867b1f39e89c9180cedc2 +S = dd7ed67e480866d0474379ea4afff72870746f4feef2153be42f13bf472b1613d7faa5c0abb7f7464070f94d7cf3f234 + +Msg = f562f2b9d84b0e96a52532c3b43c39c8018c738bd8dc3797a7de7353971b2729d522d6961b1f2e4df3f6a4bd3653e6d72b74fc0dba92ab939c4b542e994e5db6dd8ed4f56f651e699052e791237ae1f552f990ad156226ae8f7bf17fcbfa564f749604f97e9df0879d50985747d981422a23040fe52f5ec74caf1d4aaad8a710 +d = 218ee54a71ef2ccf012aca231fee28a2c665fc395ff5cd20bde9b8df598c282664abf9159c5b3923132983f945056d93 +Qx = 01989ff07a7a452d8084937448be946bfedac4049cea34b3db6f7c91d07d69e926cce0af3d6e88855a28120cf3dba8df +Qy = eb064e029d7539d4b301aabafe8de8870162deffe6383bc63cc005add6ee1d5ced4a5761219c60cd58ad5b2a7c74aaa9 +k = c5d39b436d851d94691f5f4aa9ef447f7989d984f279ae8b091aef5449ac062bcc0567740f914624ad5b99fc32f9af0b +R = 07d5b1b12877e8cb5e0aa5e71eeeb17bf0aa203064c7e98b3a1798a74dc9717252dc47c7f06aaf1d5fe15b868323bbb9 +S = 69428cf101a7af5d08161a9fd7af212e02e33b6062aebdce4c96bf3a0684b5394cb902ca7c2dec6e2f01f40c4576009d + +Msg = ace953ae851f571d71779aa120915f27450b236da23e9106f8d0756abdd25861937941228d225d5fb1aa1b1ebf759b1e326aeb3b6cd0cd87edd2ab9f6a7ad67b63d2c501d6a550edb2e7c9d216cc8af78dd33546af64d00abed4d0d2cfc5c9a7b5a055dbe8f7547902d185cf46937314832bc5c602419a82ab83dbd9d3bd5aff +d = e6ab171f6937c000e144950801ad91023ae8e8476856c2592d9f7d5bb7180fd729211803d39a412ead6c0be761cfa5d1 +Qx = 38bc42b8c9d8866d09b214398d584b1b24a488dfacc3420d1e9506aa825b19fdf1ba74e7b8f547f47b571467fe8c4d1f +Qy = 5179d62668d3f6a7ab5c8e3761a685e12008fb87d0529a97645f65cfb5364376c1b6682e0ffcddd0bcd995c41d013ad3 +k = 05e9718aea9669c9e434f73866da5f252dec6d24c47a1c4ee3233450b6ec626de9746ebe095b285558dfc89fc1b622fe +R = df9bab9dd1f22ec6f27116f38831cb2089aa78aa8c073024a0faddd9a48e810a5e8e2cadd80fbf8dbd6088c71fe30b5b +S = 1e0e8718567d12d18558c57f9e87a755c309e4ffb497335a3adfc8d7475ce8fd882d5dc33a8f5a16274b7ad74bb7862a + +Msg = 9635ab832240be95301bedb94c5aec169eedc198cbbdfedcf41e9b586143d829b4597a6b2a81902828332825fd84a785f187a3894e21bd99d22c4f94dcf34453fc052f15ec64d1447c932cb38fcdd30b7be851963409c11881438cbaad7e96f9efbde317f2235d66af804477a5dfe9f0c51448383830050ecf228889f83631e1 +d = 14acd516c7198798fd42ab0684d18df1cd1c99e304312752b3035bed6535a8975dff8acfc2ba1675787c817b5bff6960 +Qx = 29909d143cf7ee9c74b11d52f1a8f3ebd4a720c135612ca5618d3f432f03a95602ee75a2057e1d7aab51d0648ac0b334 +Qy = 404b6c5adffbadfa1b0380ae89fed96ec1ca16cc28661e623d0f1c8b130fbaa96dd7257eae2bf03c2d3dcbc3dbc82c58 +k = 7f623c103eaa9099a0462e55f80519c565adaeffcb57a29993f3a8a92e63a560be8f0fb9d23dc80bff1064bb41abad79 +R = 932ab291950c16b2b19a8036cd2e905714c6229cb190a73b3ea49c48dd8e76063a453c7c3267a57597d2973678216296 +S = d17d4c5ddbb9c27beebf526f113b416c8abfad53d11c4224813c7f351ba41a77dd4e77d6e4a65bef2c9f62cc37a469a5 + +Msg = d98b9a7d4fe9d0fd95de5056af164a8b7882cd34ab5bde83a2abb32dc361eb56a479a3a6119db3b91dcad26a42d2206749567f0d97c34a981a91fc734921821a429f6a53401743a5c406ba9d560f956203abc9d1f32f1a13e7d7b290f75c95fdbf857ea597021461c06a3aacfa554ede3d69e4ff03bbbee5b7463ec77de2b3b2 +d = 2e780550984f3a00cb1e412429b33493c6eb6cd86d12f9d80588c247dcf567bd04296d2d4b24b889d9c54954b7f38f57 +Qx = 37dac42ef04663238443ef33e8addee2e78c40d50a1751913a7f5c37d1f23a26c7f86e16055c788b8ca9554f06b2f2ef +Qy = bbed1549652904e3d00c39b01cc0460dbaf3185e6190c2705677a9701de1fe56dff4f4d8418ee15059ff8fc36800982d +k = b788ca82811b0d4e4841765c71eafaa1e575378beedcd3860d8b92db3d070ac5aef7c425067860fbee6c50cf0c642bbb +R = 7292b3851870daeb2555a8a2fb198ead78739fcfb75327e5c32a82c6b77d58983e5ad548ccb75dcf9411039c9576d9b9 +S = a378c61802d9f1dd062b6e18f16416a954018f77df4df95ad1b983570377d5cfce4cc7861759e802c52f81abc4f49aac + +Msg = 1b4c754ac1c28dc415a71eac816bde68de7e8db66409af835838c5bb2c605111108a3bf13606ed5d8ade5ed72e50503e0de664416393d178ea4eec834d8d6f15039847b410080fd5529b426e5aadd8451c20ebd92d787921f33e147bcbeb327b104d4aab1157fc1df33e4d768404b5ccb7110055c2508c600f429fd0c21b5784 +d = a24d0fe90808aecc5d90626d7e6da7c9be5dfd4e1233c7f0f71f1b7c1c6fd318fafe18559c94718f044cf02ed5107cb1 +Qx = ec8ae1fb9bb88589d27d6f27d790392853396f37bc0c381631d85800fc668eea0886bf1c6cff801147df19778d5b1604 +Qy = 1e1a8336c1e2506f8ee388b55cc648ae73b9295ea78467979d2affb364536fad28120f51ec62a67cbb6ce7784780389f +k = 755d025509b73cf1ea8817beb772ad150b4c17a52378be187daffe3db0158921e5e552d1ca3c85df28519939f3cb794d +R = 23ff2ffa62bbd427d49995d9c9950116e0d5a06ef076a4553448bc109e6482c5e87d4c833bc88de0bc722bc98cae2e61 +S = 9aea13d487c3ea6917e16374caafcf0321c12a80d28902dd8cd81909bb04b8c439e2491e504756742d0d0bfb15a9c34c + +Msg = 3cd8c053741dd9f974c6c5dbf8a1e5728e9b5eafb1cbcfc3452f5fbbda32a8c7564dee157e8d902c52514361da6d972934a56b3276e2a9379e328e24282e0db697c5bc29090fc489ec46b7b188325dd4e96494c250de0f4a89fe2ccf919eaefcfb50c288113e6df92714feb7f46e0822478c796d0f4ff3447a32997e892693ce +d = 1c172e25732555afee7ded67a496f3f11babc0875898619f4519c29321e201e8ba1149f2c20b48e5efba235d58fea7c3 +Qx = 13e9e2c8bbcfe26e8f5f43c86268c5980ee693236a6b8777f3a7323718baa21005b482d08aafc6fa6e3667d91353544c +Qy = 9ba181b3ee505be030f87ecd249b00670a791489b42af04976013483ff95b630c91c01e95757e906129f2f9b4ce719a8 +k = 08aec9a9e58bdc028805eb5dc86073d05fff1f5fb3fd17f510fc08f9272d84ba7aa66b6f77d84fe6360bd538192bf01a +R = 2b4337c3dfbc886ffad7858ae2480cb62227e12205a70361c42f1a5ca9e658ee30fc3cf4030d85bd065edad83b99821f +S = 2550cef8574bf17fb3d6b0c9d04ab266962bac3621bac233ff2e4989712d2a4a07171c0aebd3040cd6a32c3bd3efb8b5 + +Msg = ed955dda6d9650124804d3deb6aeef900e520faf98b1ef6f14efcada7ca2433f09329b70897305e59c89024d76e466b28fe02cb2a9b12e2478c66470259d7c282137a19e5a04ffadea55245c0f34a681593fedc42931d8b3321b3d82e9cc102cd00540ad311ec7bd8c9d06db21bea4ca3dc74d98931ae0d40494aefc2345132c +d = 5b96555dbd602e71d4d5d3aee19fd1ea084ee23d4f55c10937056762bc2015cbded2e898a487f5482ab7e1e971245907 +Qx = 6e14c17bb831b0112d7f3543c5fd17c78379a516c9e0539b03b8b4bfdead2820343fc84b0382807573ded6c4d97b7003 +Qy = 7f60021d2de77546db666721c9aec84c3e2ba8de0ba77443600dc77e6839bbf9316271adb22d4cb47d08f745ecb1dafd +k = 7ad6f4ffd2b429ba10c6f112f800cacf1ad508cf8eba880893bb9659c1ddaaec57dcdc093a114500460d457bdde324f2 +R = faea950ca513806bc59028c638d6302ffc86978c3ff1f06db015dd7c4777050186cb8dd871f5e926e1416539c1939c2f +S = 2c592240eabb8a1f9878e1b5c9d5d3ced7b3a7ae571f5a86494ed2ca567a36eb72e7bea8934bded29594bccf67ca84bd + +Msg = ce395b001da2a58e49691605d44af4206306f62f561bf2394060d2a5591a350277166bed043819035f1e60b5b3fb5ae113ddd0473f8ef6b2b050c472c2a264e1d8b3ca82a4f158c40f2d78d9ce5e5ea6de243f2e1f13f47f6c6f403b270912c81c636be35b396ca58468b3fb60aa83911d61441a0528d973bc31f965d4059080 +d = 8df9c3c710a25192f3dea970910bb3784e3509874cccf4334823eb9f7a8d05b067f2d812d61e878e24b093089a0b8245 +Qx = 92c9e32b20cbe6d4ed0727c6c942cf804a72031d6dfd69078b5e78ebce2d192268f1f5e2abce5aaf1f8d6a35f136837f +Qy = d5167905fa7689e03b9fb1487c566f62b36f2bc1c4a2bfb6a836113b5c8d46f7c1ca51b628b14397fbc06ec9a07f4849 +k = 258dd05919735cd48627c9fe9fac5c252604aa7c2ae0460d7c1149cd96b7bd2ba195ad393bf392a2499f06aead5ba050 +R = 413793bcce52eda0f5b675a8d687cce86d5c9e1659b38a89e96246b5e05f8b0934d17dbba3b2ea44c838aa5fd87125d1 +S = ce7309fc2d6e3438818a1a29a997410b025b0403de20795b97c86c46034a6b02afeed279aeb06522d4de941bfdf50469 + +Msg = ffefe316455ae4ffdb890bb804bf7d31424ea060ecacff419d0f7134ff76ad434063c0ec0f8bb7059584d3a03f3625bb9e9f66ace1a47ac4b8f3e76fc7c420c55edb1427d1fa15b387ad73d02b0595c4e74321be8822752230a0dcfb85d60bfa186da7623a8ec3eb1633f0a294b23ae87216b14ccee9ef56418dcfab9427371e +d = 6002cb01ad2ce6e7101665d47729c863b6435c3875de57a93f99da834f73e3e6e2b3880e06de3e6bd1d51ea1807ab0d7 +Qx = e4216e1a20af8e8e3e74653ac016545001066e53e64af679ad1c85841bb475aed3e00ead052ae9955f48d675ff4ace56 +Qy = 8804c17641be21d4c6386902c9c5c888af25d97ca383703ea4a85cf93bbab360c0bbd2993374da499a303778650270b9 +k = 6b9507fd2844df0949f8b67b6fde986e50173713ac03df2edf65cb339859321cd3a2b9aab8356f95dec62460ab19c822 +R = 018891f6381ed358b422f79a299cf0789cee783ba388af4d82cbbe17f3709751b7fd9400e9702820c28b9afc62fdf489 +S = aef73bd590802b2fd2a65c4f7fec89f9b24ecc199a69254785925f334cd1977c5e1f858bd9830d7d7d243ea707b1af0b + +Msg = 304bccb718b3a9e12669913490cc5bcc1979287b56c628fad706c354241e88d10e81445a2853e3fc32ece094ba1abc3fdcab61da27f9a0fca739371049fed462ee6b08fa31cde12720f8144a6f00ce9b1a7a6eadd231f126717074b4efb5c72ce673ca5859000a436f67a338d698759f12c461247c45a361fb6cb661fdbe6714 +d = d8559c3543afc6f7b3dc037a687bad2630283757ba7862fd23ed14e2151a4cf5fed3d249268f780e0b96b6b46274a2d5 +Qx = 5f94223918f2ec9f0a08342cb99e724881c92453957c59672860f69daac01b660331a0f5845e50f1f27766b219c89e7e +Qy = d76d83396130d10d1168d76c7fc83742ffffbe66d9f4da4ca3f95f5ad6dac8cc7bb65d16d317d37aa99fdbf30ec7439c +k = 4ad5a92b5b8e170b71c8a7ed419dc624c7680004562b8d16a37b6e639f581ce81d5f0d98cce44d54c4e7136229148340 +R = f7baa6a5488ab462ea59aa31a36402b15880c68110b6069f51ede0c3b52a7b1e5bf926fdbe95768931b7d5f87058835c +S = 28b1c4ef448a432f7c91b98b0c6471691e888211b6af907369a8930859b8cdb2e94f466a44f4e52f46df9b0d65e35de6 + +Msg = 64f9f05c2805acf59c047b5f5d2e20c39277b6d6380f70f87b72327a76170b872bfe4b25c451602acfb6a631bb885e2655aee8abe44f69c90fb21ffde03cef2a452c468c6369867dfd8aa26ac24e16aa53b292375a8d8fbf988e302bf00088e4c061aa12c421d8fe3cbd7273b0e8993701df1c59431f436a08b8e15bd123d133 +d = b9208cbfd186ddfa3efd5b71342ae1efb01a13ebc4c2a992a2cbee7254b7846a4252ece1104b89d13d835911f8511224 +Qx = 166e6d96cb60d916fd19888a2dd945a3306ff0d7b0a5e30729f47d3dac3de2be3fd5cd7437e9a80d6c48cf960d2d36f8 +Qy = e6b2b70f131092ae210f29cc6bad701318bddb31bddf921695855c6208941100d0cee5d10799f8b835afe3ea510e8229 +k = da706ab5f61531f2378b3c0a2b342108cd119eadaa88b859df64923bccfb0ec2393fd312826f65c15a6587d1d460015b +R = d9124c42858080c62400e4d4d8136304e03d910cbe9b9b3487f4d27c7e0540a314d34bef8c850045c8746ca631c11c42 +S = bbf6424a3b70166fa799f49e918439d515327039258ef9bd88435a59c9c19659f8ec3c8660720b0c08354ff60e0f5a76 + +[P-384,SHA-384] + +Msg = 6b45d88037392e1371d9fd1cd174e9c1838d11c3d6133dc17e65fa0c485dcca9f52d41b60161246039e42ec784d49400bffdb51459f5de654091301a09378f93464d52118b48d44b30d781eb1dbed09da11fb4c818dbd442d161aba4b9edc79f05e4b7e401651395b53bd8b5bd3f2aaa6a00877fa9b45cadb8e648550b4c6cbe +d = 201b432d8df14324182d6261db3e4b3f46a8284482d52e370da41e6cbdf45ec2952f5db7ccbce3bc29449f4fb080ac97 +Qx = c2b47944fb5de342d03285880177ca5f7d0f2fcad7678cce4229d6e1932fcac11bfc3c3e97d942a3c56bf34123013dbf +Qy = 37257906a8223866eda0743c519616a76a758ae58aee81c5fd35fbf3a855b7754a36d4a0672df95d6c44a81cf7620c2d +k = dcedabf85978e090f733c6e16646fa34df9ded6e5ce28c6676a00f58a25283db8885e16ce5bf97f917c81e1f25c9c771 +R = 50835a9251bad008106177ef004b091a1e4235cd0da84fff54542b0ed755c1d6f251609d14ecf18f9e1ddfe69b946e32 +S = 0475f3d30c6463b646e8d3bf2455830314611cbde404be518b14464fdb195fdcc92eb222e61f426a4a592c00a6a89721 + +Msg = d768f41e6e8ec2125d6cf5786d1ba96668ac6566c5cdbbe407f7f2051f3ad6b1acdbfe13edf0d0a86fa110f405406b69085219b5a234ebdb93153241f785d45811b3540d1c37424cc7194424787a51b79679266484c787fb1ded6d1a26b9567d5ea68f04be416caf3be9bd2cafa208fe2a9e234d3ae557c65d3fe6da4cb48da4 +d = 23d9f4ea6d87b7d6163d64256e3449255db14786401a51daa7847161bf56d494325ad2ac8ba928394e01061d882c3528 +Qx = 5d42d6301c54a438f65970bae2a098cbc567e98840006e356221966c86d82e8eca515bca850eaa3cd41f175f03a0cbfd +Qy = 4aef5a0ceece95d382bd70ab5ce1cb77408bae42b51a08816d5e5e1d3da8c18fcc95564a752730b0aabea983ccea4e2e +k = 67ba379366049008593eac124f59ab017358892ee0c063d38f3758bb849fd25d867c3561563cac1532a323b228dc0890 +R = fb318f4cb1276282bb43f733a7fb7c567ce94f4d02924fc758635ab2d1107108bf159b85db080cdc3b30fbb5400016f3 +S = 588e3d7af5da03eae255ecb1813100d95edc243476b724b22db8e85377660d7645ddc1c2c2ee4eaea8b683dbe22f86ca + +Msg = 6af6652e92a17b7898e40b6776fabaf0d74cf88d8f0ebfa6088309cbe09fac472eeac2aa8ea96b8c12e993d14c93f8ef4e8b547afe7ae5e4f3973170b35deb3239898918c70c1056332c3f894cd643d2d9b93c2561aac069577bbab45803250a31cd62226cab94d8cba7261dce9fe88c210c212b54329d76a273522c8ba91ddf +d = b5f670e98d8befc46f6f51fb2997069550c2a52ebfb4e5e25dd905352d9ef89eed5c2ecd16521853aadb1b52b8c42ae6 +Qx = 44ffb2a3a95e12d87c72b5ea0a8a7cb89f56b3bd46342b2303608d7216301c21b5d2921d80b6628dc512ccb84e2fc278 +Qy = e4c1002f1828abaec768cadcb7cf42fbf93b1709ccae6df5b134c41fae2b9a188bfbe1eccff0bd348517d7227f2071a6 +k = 229e67638f712f57bea4c2b02279d5ccad1e7c9e201c77f6f01aeb81ea90e62b44b2d2107fd66d35e56608fff65e28e4 +R = b11db592e4ebc75b6472b879b1d8ce57452c615aef20f67a280f8bca9b11a30ad4ac9d69541258c7dd5d0b4ab8dd7d49 +S = 4eb51db8004e46d438359abf060a9444616cb46b4f99c9a05b53ba6df02e914c9c0b6cc3a9791d804d2e4c0984dab1cc + +Msg = b96d74b2265dd895d94e25092fb9262dc4f2f7a328a3c0c3da134b2d0a4e2058ca994e3445c5ff4f812738e1b0c0f7a126486942a12e674a21f22d0886d68df2375f41685d694d487a718024933a7c4306f33f1a4267d469c530b0fed4e7dea520a19dd68bf0203cc87cad652260ed43b7b23f6ed140d3085875190191a0381a +d = de5975d8932533f092e76295ed6b23f10fc5fba48bfb82c6cc714826baf0126813247f8bd51d5738503654ab22459976 +Qx = f1fabafc01fec7e96d982528d9ef3a2a18b7fe8ae0fa0673977341c7ae4ae8d8d3d67420343d013a984f5f61da29ae38 +Qy = 1a31cf902c46343d01b2ebb614bc789c313b5f91f9302ad9418e9c797563e2fa3d44500f47b4e26ad8fdec1a816d1dcf +k = fc5940e661542436f9265c34bce407eff6364bd471aa79b90c906d923e15c9ed96eea4e86f3238ea86161d13b7d9359d +R = c2fbdd6a56789024082173725d797ef9fd6accb6ae664b7260f9e83cb8ab2490428c8b9c52e153612295432fec4d59cd +S = 8056c5bb57f41f73082888b234fcda320a33250b5da012ba1fdb4924355ae679012d81d2c08fc0f8634c708a4833232f + +Msg = 7cec7480a037ff40c232c1d2d6e8cd4c080bbeecdaf3886fccc9f129bb6d202c316eca76c8ad4e76079afe622f833a16f4907e817260c1fa68b10c7a151a37eb8c036b057ed4652c353db4b4a34b37c9a2b300fb5f5fcfb8aa8adae13db359160f70a9241546140e550af0073468683377e6771b6508327408c245d78911c2cc +d = 11e0d470dc31fab0f5722f87b74a6c8d7414115e58ceb38bfcdced367beac3adbf1fe9ba5a04f72e978b1eb54597eabc +Qx = 1950166989164cbfd97968c7e8adb6fbca1873ebef811ea259eb48b7d584627f0e6d6c64defe23cbc95236505a252aa1 +Qy = 41ef424b5cb076d4e32accd9250ea75fcf4ffd81814040c050d58c0a29b06be11edf67c911b403e418b7277417e52906 +k = e56904028226eb04f8d071e3f9cefec91075a81ca0fa87b44cae148fe1ce9827b5d1910db2336d0eb9813ddba3e4d7b5 +R = c38ef30f55624e8935680c29f8c24824877cf48ffc0ef015e62de1068893353030d1193bf9d34237d7ce6ba92c98b0fe +S = 651b8c3d5c9d5b936d300802a06d82ad54f7b1ba4327b2f031c0c5b0cb215ad4354edc7f932d934e877dfa1cf51b13fe + +Msg = 00ce978603229710345c9ad7c1c2dba3596b196528eea25bd822d43ca8f76a024e29217703dd0652c8a615284fc3edcc1c5ad1c8d5a8521c8e104c016a24e50c2e25066dcb56596f913b872767e3627aa3e55ec812e9fdac7c2f1beade83aef093e24c9c953982adf431a776880ae4583be158e11cdab1cbca3ad3a66900213d +d = 5c6bbf9fbcbb7b97c9535f57b431ed1ccae1945b7e8a4f1b032016b07810bd24a9e20055c0e9306650df59ef7e2cd8c2 +Qx = 2e01c5b59e619e00b79060a1e8ef695472e23bf9a511fc3d5ed77a334a242557098e40972713732c5291c97adf9cf2cf +Qy = 563e3fe4ad807e803b9e961b08da4dde4cea8925649da0d93221ce4cdceabc6a1db7612180a8c6bef3579c65539b97e9 +k = 03d23f1277b949cb6380211ad9d338e6f76c3eedac95989b91d0243cfb734a54b19bca45a5d13d6a4b9f815d919eea77 +R = abab65308f0b79c4f3a9ff28dd490acb0c320434094cef93e75adfe17e5820dc1f77544cfaaacdc8cf9ac8b38e174bef +S = 11b783d879a6de054b316af7d56e526c3dce96c85289122e3ad927cfa77bfc50b4a96c97f85b1b8221be2df083ff58fb + +Msg = 54a255c18692c6162a46add176a0ae8361dcb8948f092d8d7bac83e160431794d3b9812849bf1994bcdcfba56e8540c8a9ee5b93414548f2a653191b6bb28bda8dc70d45cc1b92a489f58a2d54f85766cb3c90de7dd88e690d8ebc9a79987eee1989df35af5e35522f83d85c48dda89863171c8b0bf4853ae28c2ac45c764416 +d = ffc7dedeff8343721f72046bc3c126626c177b0e48e247f44fd61f8469d4d5f0a74147fabaa334495cc1f986ebc5f0b1 +Qx = 51c78c979452edd53b563f63eb3e854a5b23e87f1b2103942b65f77d024471f75c8ce1cc0dfef83292b368112aa5126e +Qy = 313e6aaf09caa3ba30f13072b2134878f14a4a01ee86326cccbff3d079b4df097dc57985e8c8c834a10cb9d766169366 +k = c3de91dbe4f777698773da70dd610ef1a7efe4dc00d734399c7dd100728006a502822a5a7ff9129ffd8adf6c1fc1211a +R = f4f477855819ad8b1763f53691b76afbc4a31a638b1e08c293f9bcd55decf797f9913ca128d4b45b2e2ea3e82c6cf565 +S = 7c26be29569ef95480a6d0c1af49dc10a51a0a8931345e48c0c39498bfb94d62962980b56143a7b41a2fddc8794c1b7f + +Msg = 692a78f90d4f9d5aee5da536314a78d68c1feabbfe5d1ccea7f6059a66c4b310f8051c411c409ccf6e19a0cbd8b8e100c48317fe8c6d4f8a638b9551ce7ee178020f04f7da3001a0e6855225fb3c9b375e4ed964588a1a41a095f3f476c42d52ffd23ce1702c93b56d4425d3befcf75d0951b6fd5c05b05455bdaf205fe70ca2 +d = adca364ef144a21df64b163615e8349cf74ee9dbf728104215c532073a7f74e2f67385779f7f74ab344cc3c7da061cf6 +Qx = ef948daae68242330a7358ef73f23b56c07e37126266db3fa6eea233a04a9b3e4915233dd6754427cd4b71b75854077d +Qy = 009453ef1828eaff9e17c856d4fc1895ab60051312c3e1db1e3766566438b2990cbf9945c2545619e3e0145bc6a79004 +k = a2da3fae2e6da3cf11b49861afb34fba357fea89f54b35ce5ed7434ae09103fe53e2be75b93fc579fedf919f6d5e407e +R = dda994b9c428b57e9f8bbaebba0d682e3aac6ed828e3a1e99a7fc4c804bff8df151137f539c7389d80e23d9f3ee497bf +S = a0d6b10ceffd0e1b29cf784476f9173ba6ecd2cfc7929725f2d6e24e0db5a4721683640eaa2bbe151fb57560f9ce594b + +Msg = 3b309bb912ab2a51681451ed18ad79e95d968abc35423a67036a02af92f575a0c89f1b668afe22c7037ad1199e757a8f06b281c33e9a40bab69c9874e0bb680b905d909b9dc24a9fe89bb3d7f7d47082b25093c59754f8c19d1f81f30334a8cdd50a3cb72f96d4b3c305e60a439a7e93aeb640dd3c8de37d63c60fb469c2d3ed +d = 39bea008ec8a217866dcbdb1b93da34d1d3e851d011df9ef44b7828b3453a54aa70f1df9932170804eacd207e4f7e91d +Qx = 5709ec4305a9c3271c304face6c148142490b827a73a4c17affcfd01fffd7eaa65d2fdedfa2419fc64ed910823513faf +Qy = b083cda1cf3be6371b6c06e729ea6299213428db57119347247ec1fcd44204386cc0bca3f452d9d864b39efbfc89d6b2 +k = 3c90cc7b6984056f570542a51cbe497ce4c11aeae8fc35e8fd6a0d9adeb650e8644f9d1d5e4341b5adc81e27f284c08f +R = d13646895afb1bfd1953551bb922809c95ad65d6abe94eb3719c899aa1f6dba6b01222c7f283900fe98628b7597b6ea6 +S = 4a9a38afda04c0a6b0058943b679bd02205b14d0f3d49b8f31aac289129780cdb1c555def8c3f9106b478729e0c7efaa + +Msg = f072b72b8783289463da118613c43824d11441dba364c289de03ff5fab3a6f60e85957d8ff211f1cb62fa90216fb727106f692e5ae0844b11b710e5a12c69df3ed895b94e8769ecd15ff433762d6e8e94d8e6a72645b213b0231344e2c968056766c5dd6b5a5df41971858b85e99afbf859400f839b42cd129068efabeea4a26 +d = e849cf948b241362e3e20c458b52df044f2a72deb0f41c1bb0673e7c04cdd70811215059032b5ca3cc69c345dcce4cf7 +Qx = 06c037a0cbf43fdf335dff33de06d34348405353f9fdf2ce1361efba30fb204aea9dbd2e30da0a10fd2d876188371be6 +Qy = 360d38f3940e34679204b98fbf70b8a4d97f25443e46d0807ab634ed5891ad864dd7703557aa933cd380e26eea662a43 +k = 32386b2593c85e877b70e5e5495936f65dc49553caef1aa6cc14d9cd370c442a0ccfab4c0da9ec311b67913b1b575a9d +R = 5886078d3495767e330c7507b7ca0fa07a50e59912a416d89f0ab1aa4e88153d6eaf00882d1b4aa64153153352d853b5 +S = 2cc10023bf1bf8ccfd14b06b82cc2114449a352389c8ff9f6f78cdc4e32bde69f3869da0e17f691b329682ae7a36e1aa + +Msg = cf4945350be8133b575c4ad6c9585e0b83ff1ed17989b6cd6c71b41b5264e828b4e115995b1ae77528e7e9002ac1b5669064442645929f9d7dd70927cb93f95edeb73e8624f4bc897ec4c2c7581cb626916f29b2d6e6c2fba8c59a71e30754b459d81b912a12798182bcff4019c7bdfe929cc769bcc2414befe7d2906add4271 +d = d89607475d509ef23dc9f476eae4280c986de741b63560670fa2bd605f5049f1972792c0413a5b3b4b34e7a38b70b7ca +Qx = 49a1c631f31cf5c45b2676b1f130cbf9be683d0a50dffae0d147c1e9913ab1090c6529a84f47ddc7cf025921b771355a +Qy = 1e207eece62f2bcc6bdabc1113158145170be97469a2904eaaa93aad85b86a19719207f3e423051f5b9cbbe2754eefcb +k = 78613c570c8d33b7dd1bd1561d87e36282e8cf4843e7c344a2b2bb6a0da94756d670eeaffe434f7ae7c780f7cf05ca08 +R = 66f92b39aa3f4aeb9e2dc03ac3855406fa3ebbab0a6c88a78d7a03482f0c9868d7b78bc081ede0947c7f37bf193074ba +S = e5c64ed98d7f3701193f25dd237d59c91c0da6e26215e0889d82e6d3e416693f8d58843cf30ab10ab8d0edd9170b53ad + +Msg = d9b5cf0b50416573ff3c63133275a18394dd4326be2041e8d97e6e4e3855a4a177e9d26dfd223fe8aa74564edb49bd72de19916fb6f001f44530d5c18e2c332bce1b7415df5927ece5f3824f34d174b963136b53aef1fb78fb0c06a201a40b2db38e4d8216fc1e392a798c8ab4b3a314496b7f1087804ebfa89bf96e9cdb80c0 +d = 083e7152734adf342520ae377087a223688de2899b10cfcb34a0b36bca500a4dfa530e2343e6a39da7ae1eb0862b4a0d +Qx = 70a0f16b6c61172659b027ed19b18fd8f57bd28dc0501f207bd6b0bb065b5671cf3dd1ed13d388dcf6ccc766597aa604 +Qy = 4f845bf01c3c3f6126a7368c3454f51425801ee0b72e63fb6799b4420bfdebe3e37c7246db627cc82c09654979c700bb +k = 28096ababe29a075fbdf894709a20d0fdedb01ed3eeacb642a33a0da6aed726e13caf6cf206792ec359f0c9f9b567552 +R = ee2923f9b9999ea05b5e57f505bed5c6ba0420def42c6fa90eef7a6ef770786525546de27cdeb2f8586f8f29fb4ee67c +S = 50ef923fb217c4cf65a48b94412fda430fac685f0da7bd574557c6c50f5b22e0c8354d99f2c2f2c2691f252f93c7d84a + +Msg = 9e4042d8438a405475b7dab1cd783eb6ce1d1bffa46ac9dfda622b23ac31057b922eced8e2ed7b3241efeafd7c9ab372bf16230f7134647f2956fb793989d3c885a5ae064e85ed971b64f5f561e7ddb79d49aa6ebe727c671c67879b794554c04de0e05d68264855745ef3c9567bd646d5c5f8728b797c181b6b6a876e167663 +d = 63578d416215aff2cc78f9b926d4c7740a77c142944e104aa7422b19a616898262d46a8a942d5e8d5db135ee8b09a368 +Qx = cadbacef4406099316db2ce3206adc636c2bb0a835847ed7941efb02862472f3150338f13f4860d47f39b7e098f0a390 +Qy = 752ad0f22c9c264336cde11bbc95d1816ed4d1b1500db6b8dce259a42832e613c31178c2c7995206a62e201ba108f570 +k = 7b69c5d5b4d05c9950dc94c27d58403b4c52c004b80a80418ad3a89aabc5d34f21926729e76afd280cc8ee88c9805a2a +R = db054addb6161ee49c6ce2e4d646d7670754747b6737ca8516e9d1e87859937c3ef9b1d2663e10d7e4bd00ec85b7a97a +S = fcc504e0f00ef29587e4bc22faada4db30e2cb1ac552680a65785ae87beb666c792513f2be7a3180fc544296841a0e27 + +Msg = 0b14a7484a40b68a3ce1273b8a48b8fdb65ba900d98541c4bbd07b97e31bcc4c85545a03e9deab3c563f47a036ff60d0361684ba241b5aa68bb46f440da22181ee328a011de98eff34ba235ec10612b07bdfa6b3dc4ccc5e82d3a8d057e1862fef3def5a1804696f84699fda2ec4175a54a4d08bcb4f0406fdac4eddadf5e29b +d = ed4df19971658b74868800b3b81bc877807743b25c65740f1d6377542afe2c6427612c840ada31a8eb794718f37c7283 +Qx = 33093a0568757e8b58df5b72ea5fe5bf26e6f7aeb541b4c6a8c189c93721749bcaceccf2982a2f0702586a9f812fc66f +Qy = ebe320d09e1f0662189d50b85a20403b821ac0d000afdbf66a0a33f304726c69e354d81c50b94ba3a5250efc31319cd1 +k = d9b4cd1bdfa83e608289634dbfcee643f07315baf743fc91922880b55a2feda3b38ddf6040d3ba10985cd1285fc690d5 +R = 009c74063e206a4259b53decff5445683a03f44fa67252b76bd3581081c714f882f882df915e97dbeab061fa8b3cc4e7 +S = d40e09d3468b46699948007e8f59845766dbf694b9c62066890dd055c0cb9a0caf0aa611fb9f466ad0bbb00dbe29d7eb + +Msg = 0e646c6c3cc0f9fdedef934b7195fe3837836a9f6f263968af95ef84cd035750f3cdb649de745c874a6ef66b3dd83b66068b4335bc0a97184182e3965c722b3b1aee488c3620adb835a8140e199f4fc83a88b02881816b366a09316e25685217f9221157fc05b2d8d2bc855372183da7af3f0a14148a09def37a332f8eb40dc9 +d = e9c7e9a79618d6ff3274da1abd0ff3ed0ec1ae3b54c3a4fd8d68d98fb04326b7633fc637e0b195228d0edba6bb1468fb +Qx = a39ac353ca787982c577aff1e8601ce192aa90fd0de4c0ed627f66a8b6f02ae51315543f72ffc1c48a7269b25e7c289a +Qy = 9064a507b66b340b6e0e0d5ffaa67dd20e6dafc0ea6a6faee1635177af256f9108a22e9edf736ab4ae8e96dc207b1fa9 +k = b094cb3a5c1440cfab9dc56d0ec2eff00f2110dea203654c70757254aa5912a7e73972e607459b1f4861e0b08a5cc763 +R = ee82c0f90501136eb0dc0e459ad17bf3be1b1c8b8d05c60068a9306a346326ff7344776a95f1f7e2e2cf9477130e735c +S = af10b90f203af23b7500e070536e64629ba19245d6ef39aab57fcdb1b73c4c6bf7070c6263544633d3d358c12a178138 + +[P-384,SHA-512] + +Msg = 67d9eb88f289454d61def4764d1573db49b875cfb11e139d7eacc4b7a79d3db3bf7208191b2b2078cbbcc974ec0da1ed5e0c10ec37f6181bf81c0f32972a125df64e3b3e1d838ec7da8dfe0b7fcc911e43159a79c73df5fa252b98790be511d8a732fcbf011aacc7d45d8027d50a347703d613ceda09f650c6104c9459537c8f +d = 217afba406d8ab32ee07b0f27eef789fc201d121ffab76c8fbe3c2d352c594909abe591c6f86233992362c9d631baf7c +Qx = fb937e4a303617b71b6c1a25f2ac786087328a3e26bdef55e52d46ab5e69e5411bf9fc55f5df9994d2bf82e8f39a153e +Qy = a97d9075e92fa5bfe67e6ec18e21cc4d11fde59a68aef72c0e46a28f31a9d60385f41f39da468f4e6c3d3fbac9046765 +k = 90338a7f6ffce541366ca2987c3b3ca527992d1efcf1dd2723fbd241a24cff19990f2af5fd6419ed2104b4a59b5ae631 +R = c269d9c4619aafdf5f4b3100211dddb14693abe25551e04f9499c91152a296d7449c08b36f87d1e16e8e15fee4a7f5c8 +S = 77ffed5c61665152d52161dc13ac3fbae5786928a3d736f42d34a9e4d6d4a70a02d5af90fa37a23a318902ae2656c071 + +Msg = 45db86829c363c80160659e3c5c7d7971abb1f6f0d495709bba908d7aa99c9df64b3408a51bd69aba8870e2aaff488ef138f3123cf94391d081f357e21906a4e2f311defe527c55e0231579957c51def507f835cceb466eb2593a509dcbee2f09e0dde6693b2bfe17697c9e86dd672f5797339cbe9ea8a7c6309b061eca7aef5 +d = 0a3f45a28a355381a919372f60320d6610cfb69c3e318eb1607db3cadfc42b728b77a6a9e9e333de9183c58933daf60f +Qx = 832cbb7061a719a316e73dbad348fa67cd17c33f40b9000a3d3b691a2a2cd821052566717c3ead01089b56086af1366f +Qy = 1e15a048d1dce642d9ebcbfac7f92b1bcee90fd0240cc79abd29e32e0e655c4ee1fd34fb88178bba92aca100e7794ed0 +k = 2a78e651623ba604c42cf094fc7d046629306f508853427ba091448800d1092c041bb2323035fc9d19a8d44950f7dcc3 +R = 0db0cc9a2bda8dd7e565ad36f91b1c5756d78164dc8a72a5bee4b6bc45ea38c7a16b01d05b1893d4e06b62db24c30385 +S = abd383edaeda7d0b8de1b54fcd3c28874fed62ab266f1f84c8ba796a7b54e5e0695fdb43ce7fe90ed00fa468d87bca64 + +Msg = 4672fce0721d37c5be166bffa4b30d753bcf104b9b414db994b3ed33f36af4935ea59a0bb92db66448b3f57dad4fc67cef10ce141bf82c536be604b89a0bc0e8bca605b867880049d97142d30538fc543bd9d4fab7fdbe2f703815cdb6361beb66acff764bc275f910d1662445b07b92830db69a5994857f53657ed5ca282648 +d = 2e408c57921939f0e0fe2e80ce74a4fa4a1b4fa7ab070206298fe894d655be50e2583af9e45544b5d69c73dce8a2c8e7 +Qx = a2b24a5ad4a2e91f12199ed7699e3f297e27bf8b8ea8fbe7ed28366f3544cd8e680c238450f8a6422b40829d6647b25c +Qy = 2732be0075536e6519f6a099b975a40f8e0de337fa4d48bd0762b43f41cab8deafdef9cfbb9973e457801e3bf9c93304 +k = b10b6258afdde81f9c971cc1526d942e20cafac02f59fee10f98e99b8674636bff1d84a6eaa49c0de8d8cfdc90d8ce84 +R = be428a8de89a364a134719141ee8d776a3a8338f1132b07e01b28573d8eaf3b9008b63304c48821e53638b6141f9660b +S = 866181dbef5c147d391bed6adcee408c339982c307adc718c2b9ab9e5642d8dedc36dd6402559a3ab614c99c1e56b529 + +Msg = 9ae48fdd9bfc5cb0f4d4761e28b2073bda05a3e3fe82c212e66701dc4573cc67a829b0f82d7520b1bf11db0c6d1743822bbe41bb0adbd7222aa5fae70fbd1a31f2d4453a01c81e064d775388468be96f6063f8673b7b8d4455fe1bd4c801ad5e625a015eaa4a1a18da490d2af8642201eaba3c611cbd65f861d8e19ca82a1ee6 +d = 1c285da72a8eb1c3c38faab8d3bb4e68dc95c797082b9a3991a21c1de54759071ecf2265fb1eff504ab24174bc6710cf +Qx = 11acb1b5cc59a4f1df1913a8d6e91cbdafb8206dc44aff7d9da45906b664fc33194d9935a82aa4d62f39618897c86025 +Qy = 832ed0b9575fff52a3603bfe89f312751b4c396da98324117a61b3f525d27b2266f6cfb22be07e50b6874435e380ed62 +k = 2513075e02cc7fb3cff7b7adde46da31c5493749b5cf02758bd5b098a838bfd4d5e4c7fb8268bdc37e219c30efebe878 +R = b3d638b3be45f14f170da5bdc22d2114deac93ab340a25b3af2b5c18584bb9147e00dc6c67a2274f79aa4838793eb63f +S = 876112bdca2c725eb2f6dbd76d07710a31f0c16d38430cb0817f320a25a9ecfec8a66137d0304612ae29a6a484fd3319 + +Msg = 817d6a110a8fd0ca7b4d565558f68b59a156744d4c5aac5c6610c95451793de2a756f774558c61d21818d3ebeeeb71d132da1c23a02f4b305eccc5cd46bd21dfc173a8a91098354f10ffbb21bf63d9f4c3feb231c736504549a78fd76d39f3ad35c36178f5c233742d2917d5611d2073124845f1e3615b2ef25199a7a547e882 +d = 9da37e104938019fbdcf247e3df879a282c45f8fb57e6655e36b47723af42bec3b820f660436deb3de123a21de0ca37b +Qx = 722d0ea6891d509b18b85ca56f74deb5c3030d2a30433824123d430d03c99279572c3b28ecf01e747b9db8acc55d0ba3 +Qy = 7e2605ea7092214f366f3639037bffd89fe103c646e990839d3a1ced8d78edb5b9bc60d834fd8e2a3c17e920bdae023a +k = c8c18e53a9aa5915288c33132bd09323638f7995cd89162073984ed84e72e07a37e18c4c023933eace92c35d10e6b1b6 +R = 6512a8a2be731e301dcf4803764297862bbfa0ac8daed64d8e98b34618ecb20520fc5d3cf890b7783edf86e7ea407541 +S = 4ff10301f7b4168fae066361376007c1d7aa89a75c87719d0b54711ffef5ef3726f3eef84f7ebc025c110bde511b17f6 + +Msg = 464f10ec6fb229a51db5fd0e122f2cb8a9a022117e2987f4007bf5565b2c16aba0714e2e3cdd0c100d55ac3017e36fc7501ad8309ab9572aa65424c9eb2e580a119c55777676ec498df53ef6ae78fd8a988130ee0e6082bf1ef71cd4c946021018a8ca7154d13b174c638912613b0bdb9001c302bf7e443ad2124ab2c1cce212 +d = 0661ab3bf9f7bef51bec7dff758de289154557beb9ce18cc4b8cc09a871e8322af259cf188b593dc62f03a19e75f7f69 +Qx = b4f100558043858efa728082d9b99ad5192b59b0947434f5ba7ff2514508a6d71ba54e7221c31cb0712103272b3f6fa4 +Qy = 34f6df4eeb2da11498044635067c2715ed15ae251c78ffb9030d87909ea8539b66394e93109ca54c0406cf99960c3e93 +k = 84a87137edb6894f96c5a8e94a3765162034feb84dfea94e1c71411170c285a80321ec7999e25861844143209804882c +R = 4dc9d1b949b36e3c3847ac1c7ed114e1bc9cbe76119cf6fcd3f1b69ee6ee54e3255f1bb288fe2f8bd6d4049a21793c27 +S = 56a561d647b62ccae1e6df818b1a6fbde66c82ef0ff69ee415f183e7daf76be22630c7e02cd3fd729dfa490f26824584 + +Msg = 4e3e0fb96320ddccde8b463c273654c4f7164920b1d63430921d2e808dee403e6420eedda0a557b911d00736a4f8798dd4ef26673efd6d190988ad4929ec64f8685cfb76070a36cd6a3a4bf2f54fb08a349d44642b6f614043fef9b2813b63457c76537d23da7b37310334f7ba76edf1999dad86f72aa3446445a65952ac4e50 +d = 66e7cfdeb7f264cf786e35210f458c32223c3a12a3bc4b63d53a5776bc9b069928452484f6241caa3781fd1a4109d4db +Qx = 3c7682de540ab231daf21bf9fc80bda6abf7e17dcc79d476c7b7c3bd4d42d386877fd8ba495c1b0333e04fb5fd2a1505 +Qy = 0a1582e4f4d72abea9d3476aff8369c41261f0c5dddf2ca82e10f7a163f73df09473d9e5e2552187104e4cc7c6d83611 +k = 2fa266f5cce190eb77614933ca6a55121ad8bae168ff7a9043d96d13b5ca2fe70101ff9fe1e2b2cd7413e6aa8f49abde +R = e7ecda9da0c52d0474a9f70094dc8f061d7d6a22210d3b69a7be8f389aa666f256322099b87d16ad35357ea856574dba +S = ba348eb40a2830ec5a1130264ac0a8675420b1ae243e808a778135809ece21f42c0c881166321102b4f02df4c5c7ed9d + +Msg = c466b6b6baf7e6ffa876ec06105e2d43534e0517c07b1c4c9fb67ba81ce09525a7721ec3c290f2b1f65b6463d41598e7a25b2238501629953a5ca955b644354fb6856733a2e5bb8f5bc21a0c803493f5539f9fb83aab3dba2c982989c2270c61ab244b68bfe1b948d00c2ed975e09c29b5f8a7effcad8652a148cc880d503217 +d = 92c2f7ee64af86d003ab484e12b82fcf245fc330761057fec5b7af8f7e0a2d85b468c21d171460fcb829cae7b986316d +Qx = ca43a306479bf8fb537d4b9ff9d635bbb2a0d60d9e854d5b7e269d09d91f78c6b90b616e4c931629453645a2bb371e14 +Qy = 356c4d7f10e690614eaf7f82ba0f9dc1aad98130c0ad9fe353deec565cc04bef789a0a4242322e0058b46cd02f2de77d +k = 6ec81fb74f8725ba225f317264460ee300cfd2f02092000989acbdad4799cf55c244a65c557113328fe20282e6badb55 +R = cd7a4309bcebc25a8e10899fe2eda5f8b2dbcf329cd2f3d65befd67393e83fba2f8a67a15c01a6ac8314f9f5e87a9dca +S = 6dcfc0426bc148e67e91d4784e3d7e9bc3b7ce3676be62daa7f3f55dfdff6d9dc735b5e3e0bbd0785db1f76f7ac065f3 + +Msg = feac892b7720af80b3c9eede51e923f18d3d0c5de4c31f4aa75e36df7c7c2fd8f41778851a24b69e67dccb65e159dd5c383243bad7cfedcc5e85c8a01c34b0b94ba8e07e4c024c09d279b3731e8b62f9562d3c4f5042567efe42a9d0eaaabab28bc6f11232fc8ceaaf4518d9f3b2bebf020294496b7f6b879e69503f75fecd3d +d = 15347caaad1067f1848a676bd0a8c52021ae604b79d02775a0459226e0391a3acd26653c916fcfe86149fb0ee0904476 +Qx = e5a0463163964d984f5bad0072d45bc2059939e60a826ccca36c151460ae360f5d6679f60fe43e999b6da5841c96e48a +Qy = 30f2dd425a3fa2c95d34124217250b39e3b4a14f3e6e415ae8e5b0409eb72f43f78b64d0ce6f2d49980d6f04cd1391db +k = 1a2d224db4bb9c241ca5cab18920fad615fa25c1db0de0f024cb3ace0d11ef72b056885446659f67650fdff692517b1c +R = 87b4de0fb21df38dfc9a4b1e350da67547e307f55b5b9dd6615e408afe7c3553a6e02722847367439e636074faa2182b +S = 375d965753b9ed6c6c08576726f8308c2f8dbd2737824464e71265d47907e26f615bbeb8203ec617520d4ecd1851dc44 + +Msg = cf2982e3bf174ce547741b969403cd11e9553067e6af8177d89511a0eb040db924530bdba65d8b1ff714228db0737c1756f509e1506014a10736e65be2f91980a73891496e90ff2714a3601c7565cdcef5a395e2e0e1652f138d90d61eaa9cba993b823245647f6e07cec9b8b4449cd68a29741cd1579c66e548ca0d0acf33aa +d = ac1cb5e59bda2eff3413a3bab80308f9fb32c595283c795de4c17fdae8d4647b5f108fd0801aee22adb7db129283b5aa +Qx = bc6b1a718284803553c173089c397870aaaecca579bb8e81a8cfa12473cd2057567fa8726a19ed427cc035baeec2c551 +Qy = 14f82997d1129b669f0015350e47ad561b1b13441af4fb44656f15ed0c5706984d66655accc52f2e943eef39cb1cdc21 +k = 8053a46e875f446056b06d4318fa3e8977622de7207cbf0996bf35b0e9b19aaa507f642bcf0be9f048f1af09806f6946 +R = a994eb15b64114ce8a9342d18b5edda96a6d76314a5ac03da723699177d352a4a9f3b7121b11a91e43a6af4025da51d6 +S = 8183ae33a888e99aa76882da0a6705ad102f2bbd9572fad0d2e4d6d70151970469e00c5220e59c14724d771c1384b302 + +Msg = bf9fdd4107ef5a6070108771ac9eee4f0c8043bf0d04db772a47294f4137e2439d94b337114b074e57e0cb78d0ccf352a2833e9788ee2a1a9ffeacd34f38fcefb86653d70c7dadd4cf6548d608e70acdef6c7530974b92c813798add659752a8c72b05e1ad9c65c21834ce6fbe49d8a1426b5a54270794436d284364fac6ec1a +d = 205f1eb3dfacff2bdd8590e43e613b92512d6a415c5951bda7a6c37db3aae39b9b7ec6edd256609e75373419087fa71f +Qx = c9f1f63a18c761b077a1ec35fbb2de635db9b8592c36194a01769b57728c7755d4c79b3d5b97a1a4631e30c86d03f13c +Qy = f8c4a38770054d5cc9bb9182e6d4638242c4fd16e869ac22e44c4b9402d594e0c6f5df6a9a7de32a4893d9f6588f1950 +k = ecd395c5d8b7d6e6b2b19644e0d2e6086c912c6a0f5b8ed4b94b7290b65852c9741ce8eeb08d8751ead8a183e17d76c6 +R = e81331d78b438b0b8d98c1be03385ba5d614af182f1677f259126cc3de7eaac6c19b02be955d936b6bf9c27c6796e6f0 +S = 17c2b7a8e0fc93909762aa9f86f9561e759ecb88f02337b2018363be6095d9e4324a6d3296046686624b5efad6b52878 + +Msg = 5d634fb39a2239256107dc68db19751540b4badac9ecf2fce644724401d6d632b3ae3b2e6d05746b77ddc0c899878032248c263eda08d3d004d35952ad7a9cfe19343d14b37f9f632245e7b7b5fae3cb31c5231f82b9f1884f2de7578fbf156c430257031ba97bc6579843bc7f59fcb9a6449a4cd942dffa6adb929cf219f0ad +d = e21e3a739e7ded418df5d3e7bc2c4ae8da76266a1fc4c89e5b09923db80a72217f1e96158031be42914cf3ee725748c1 +Qx = 0f753171922b5334f3dd2778a64ce2da8295121939beae71ad85e5344e893be0fd03cf14e1f031adec098e0c4409449c +Qy = 45c10a0ffc0eb2f1cec5c89b698061108313ee7d449ad580efad344f0e7cf35be8a18fca620f112e57bdc746abdace55 +k = d06bea06b25e6c30e866b1eb0657b45673e37b709013fb28fd7373afc8277cbc861354f821d0bd1927e52ec083a0f41f +R = e8d4a31dd0e7d2522be62a32608e744c3775ceb606dc897899f0c73f1a40ce9a8be854cd506e65cd81fd7fa2c616cb7b +S = 8151b681b6b6046d3c36f332d06d9ba7751e740631cdb759f88c50a25a8e950d5023df8a15c77243743733c4feaf21d5 + +Msg = c9b4ff721b3e886f0dc05856ffff0aabb64a8504b1746a47fdd73e6b7ebc068f06ac7ffa44c757e4de207fc3cbfaf0469d3ac6795d40630bcafe8c658627e4bc6b86fd6a2135afbc18ccc8e6d0e1e86016930ca92edc5aa3fbe2c57de136d0ea5f41642b6a5d0ddeb380f2454d76a16639d663687f2a2e29fb9304243900d26d +d = 93434d3c03ec1da8510b74902c3b3e0cb9e8d7dccad37594d28b93e065b468d9af4892a03763a63eae060c769119c23c +Qx = a52c25f2af70e5bc6a992ecef4ea54e831ed5b9453747d28aec5cffb2fcfee05be80c5cbab21606b5507aa23878adee1 +Qy = 2cf2a9afeff83f3041dc8a05f016ccae58aa1a0e0dc6be9d928e97f2598c9ba5e9718d5eb74c9cfb516fd8c09f55f5b9 +k = 13d047708ae5228d6e3bbada0e385afdb3b735b31123454fdf40afe3c36efed563fd2cce84dcc45c553b0993d9ca9ec3 +R = a0203f6f2c456baac03538ed506a182e57a25151802cf4b2557613b2fb615ebd4c50ddc505f87c048a45bad3b2fc371c +S = 0eab56457c4080400fa3af124761d5a01fef35f9649edba8b97d22116386f3b8b363e97ef3f82616d5d825df1cf865ef + +Msg = db2ad659cf21bc9c1f7e6469c5f262b73261d49f7b1755fc137636e8ce0202f929dca4466c422284c10be8f351f36333ebc04b1888cba217c0fec872b2dfc3aa0d544e5e06a9518a8cfe3df5b20fbcb14a9bf218e3bf6a8e024530a17bab50906be34d9f9bba69af0b11d8ed426b9ec75c3bd1f2e5b8756e4a72ff846bc9e498 +d = e36339ddbe8787062a9bc4e1540690915dd2a2f11b3fe9ee946e281a0a2cbed426df405ed9cb0eca42f85443efd09e0c +Qx = a1ffb4b790d1593e907369b69de10b93cddbb02c6131f787422364d9d692768ef8097970306cce16c97f2b10c538efa7 +Qy = d0692028601ea794d2563ffe9facc7273938fab47dd00b8960be15549a9c2b3f8552583eb4c6cd212fe486c159c79153 +k = 2226f7329378cecd697f36ae151546643d67760856854661e31d424fae662da910e2157da9bb6dfbe3622296e0b5710c +R = 20dcc25b67dd997621f437f65d78347fb57f8295b1b14453b1128203cda892bcfe726a2f107d30975d63172e56f11d76 +S = 51cff592cbef75ef8321c8fa1e4229c4298b8180e427bee4e91d1e24fc28a729cf296beb728960d2a58cf26773d8e2e2 + +Msg = dbd8ddc02771a5ff7359d5216536b2e524a2d0b6ff180fa29a41a8847b6f45f1b1d52344d32aea62a23ea3d8584deaaea38ee92d1314fdb4fbbecdad27ac810f02de0452332939f644aa9fe526d313cea81b9c3f6a8dbbeafc899d0cdaeb1dca05160a8a039662c4c845a3dbb07be2bc8c9150e344103e404411668c48aa7792 +d = 5da87be7af63fdaf40662bd2ba87597f54d7d52fae4b298308956cddbe5664f1e3c48cc6fd3c99291b0ce7a62a99a855 +Qx = 54c79da7f8faeeee6f3a1fdc664e405d5c0fb3b904715f3a9d89d6fda7eabe6cee86ef82c19fca0d1a29e09c1acfcf18 +Qy = 926c17d68778eb066c2078cdb688b17399e54bde5a79ef1852352a58967dff02c17a792d39f95c76d146fdc086fe26b0 +k = 1b686b45a31b31f6de9ed5362e18a3f8c8feded3d3b251b134835843b7ae8ede57c61dc61a30993123ac7699de4b6eac +R = 9dbfa147375767dde81b014f1e3bf579c44dd22486998a9b6f9e0920e53faa11eed29a4e2356e393afd1f5c1b060a958 +S = e4d318391f7cbfe70da78908d42db85225c85f4f2ff413ecad50aad5833abe91bdd5f6d64b0cd281398eab19452087dd + + +[P-521,SHA-224] + +Msg = 58ec2b2ceb80207ff51b17688bd5850f9388ce0b4a4f7316f5af6f52cfc4dde4192b6dbd97b56f93d1e4073517ac6c6140429b5484e266d07127e28b8e613ddf65888cbd5242b2f0eee4d5754eb11f25dfa5c3f87c790de371856c882731a157083a00d8eae29a57884dbbfcd98922c12cf5d73066daabe3bf3f42cfbdb9d853 +d = 1d7bb864c5b5ecae019296cf9b5c63a166f5f1113942819b1933d889a96d12245777a99428f93de4fc9a18d709bf91889d7f8dddd522b4c364aeae13c983e9fae46 +Qx = 1a7596d38aac7868327ddc1ef5e8178cf052b7ebc512828e8a45955d85bef49494d15278198bbcc5454358c12a2af9a3874e7002e1a2f02fcb36ff3e3b4bc0c69e7 +Qy = 184902e515982bb225b8c84f245e61b327c08e94d41c07d0b4101a963e02fe52f6a9f33e8b1de2394e0cb74c40790b4e489b5500e6804cabed0fe8c192443d4027b +k = 141f679033b27ec29219afd8aa123d5e535c227badbe2c86ff6eafa5116e9778000f538579a80ca4739b1675b8ff8b6245347852aa524fe9aad781f9b672e0bb3ff +R = 06b973a638bde22d8c1c0d804d94e40538526093705f92c0c4dac2c72e7db013a9c89ffc5b12a396886305ddf0cbaa7f10cdd4cd8866334c8abfc800e5cca365391 +S = 0b0a01eca07a3964dd27d9ba6f3750615ea36434979dc73e153cd8ed1dbcde2885ead5757ebcabba117a64fcff9b5085d848f107f0c9ecc83dfa2fa09ada3503028 + +Msg = 2449a53e0581f1b56d1e463b1c1686d33b3491efe1f3cc0443ba05d65694597cc7a2595bda9cae939166eb03cec624a788c9bbab69a39fb6554649131a56b26295683d8ac1aea969040413df405325425146c1e3a138d2f4f772ae2ed917cc36465acd66150058622440d7e77b3ad621e1c43a3f277da88d850d608079d9b911 +d = 17e49b8ea8f9d1b7c0378e378a7a42e68e12cf78779ed41dcd29a090ae7e0f883b0d0f2cbc8f0473c0ad6732bea40d371a7f363bc6537d075bd1a4c23e558b0bc73 +Qx = 0156cd2c485012ea5d5aadad724fb87558637de37b34485c4cf7c8cbc3e4f106cb1efd3e64f0adf99ddb51e3ac991bdd90785172386cdaf2c582cc46d6c99b0fed1 +Qy = 1edeeda717554252b9f1e13553d4af028ec9e158dbe12332684fc1676dc731f39138a5d301376505a9ab04d562cc1659b0be9cb2b5e03bad8b412f2699c245b0ba2 +k = 1dc3e60a788caa5f62cb079f332d7e5c918974643dca3ab3566a599642cd84964fbef43ce94290041fe3d2c8c26104d9c73a57a7d4724613242531083b49e255f33 +R = 12592c0be6cce18efb2b972cd193d036dcb850f2390fa8b9b86b2f876548bc424fb3bc13c1e5c415fa09d0ecfcae5bf76fb23e8322d7eecb264a2ae6d20ef50d405 +S = 11bc9713be88e3b9912a3e5f5d7b56f20573e979b1a75d04ce339f724bddffa4665d25995fe24d32507d8a07c5e10169f5338ef2827737f7b0291752b21237217e3 + +Msg = 7ba05797b5b67e1adfafb7fae20c0c0abe1543c94cee92d5021e1abc57720a6107999c70eacf3d4a79702cd4e6885fa1b7155398ac729d1ed6b45e51fe114c46caf444b20b406ad9cde6b9b2687aa645b46b51ab790b67047219e7290df1a797f35949aaf912a0a8556bb21018e7f70427c0fc018e461755378b981d0d9df3a9 +d = 135ea346852f837d10c1b2dfb8012ae8215801a7e85d4446dadd993c68d1e9206e1d8651b7ed763b95f707a52410eeef4f21ae9429828289eaea1fd9caadf826ace +Qx = 18d40cc4573892b3e467d314c39c95615ee0510e3e4dbc9fa28f6cd1f73e7acde15ad7c8c5339df9a7774f8155130e7d1f8de9139ddd6dfe1841c1e64c38ea98243 +Qy = 17021782d33dc513716c83afe7ba5e7abef9cb25b31f483661115b8d6b5ae469aaf6f3d54baa3b658a9af9b6249fd4d5ea7a07cb8b600f1df72b81dac614cfc384a +k = 0c24acc1edb3777212e5b0bac744eadf4eda11fa150753b355bf96b189e6f57fc02284bb22d8b3cd8bba7a09aae9f4ea955b382063425a6f8da2f99b9647b147172 +R = 183da7b8a9f9d5f08903359c1a2435b085fcf26a2ed09ab71357bb7634054acc569535e6fe81d28233e4703005fc4bf83ce794d9463d575795aa0f03398e854cefd +S = 0b3621145b9866ab7809139795cc30cd0404127a7f0fafa793660491009f6c53724fdb0b1ffbf0fd51c131180b8a957fe66e76d2970247c024261c768dee9abbfb9 + +Msg = 716dabdb22a1c854ec60420249905a1d7ca68dd573efaff7542e76f0eae54a1828db69a39a1206cd05e10e681f24881b131e042ed9e19f5995c253840e937b809dfb8027fed71d541860f318691c13a2eb514daa5889410f256305f3b5b47cc16f7a7dad6359589b5f4568de4c4aae2357a8ea5e0ebaa5b89063eb3aa44eb952 +d = 1393cb1ee9bfd7f7b9c057ecc66b43e807e12515f66ed7e9c9210ba1514693965988e567fbad7c3f17231aacee0e9b9a4b1940504b1cd4fd5edfaa62ba4e3e476fc +Qx = 1e855c935139c8092092cfa733db1292530506eeb2bbb1687f9602c36d97a6714e998892d5d3b842d1896a6ece9d549e9792881a256256137b3dff180c96cc5d07b +Qy = 18d83b6e93cd287311f7bf7c1d7f9eeabcf0b69c12f2d8f40e333e81e956d968532a37a4c04d761874df293b484cd7053b03fdbc2fdcd3b4c412d6f272fb7c93fe6 +k = 1d98619bdc04735d30c222fc67da82c069aea5f449af5e8c4db10c1786c0cb9e6f2cc0bb66fa6be18c485570d648dafcd0a973c43d5c94e9a9dacbd3170e53fa2a0 +R = 0bf47fabe107ce0ec03e2ad60a79b058e1bebb18568b6a8cdbe86032e71aa30c15766105b2ea952cfa79bcab046df601159f96e179bbcf252dc68ac73d31481fdae +S = 1f918fec69cd07d90f9d892b7117e7519c3224947f4262f1fd97077dd5386a6c78aeddff3ee97e59ea353f06029f1336f0d6ef5c0f4b17ca59343a55319b7bfc3db + +Msg = 9cc9c2f131fe3ac7ea91ae6d832c7788cbbf34f68e839269c336ceef7bef6f20c0a62ea8cc340a333a3002145d07eba4cf4026a0c4b26b0217a0046701de92d573d7c87a386a1ea68dc80525b7dcc9be41b451ad9f3d16819e2a0a0b5a0c56736da3709e64761f97cae2399de2a4022dc4c3d73c7a1735c36dbde86c4bc5b6f7 +d = 179fa164e051c5851e8a37d82c181e809a05fea9a3f083299b22684f59aa27e40dc5a33b3f7949338764d46bfe1f355134750518b856d98d9167ef07aac3092c549 +Qx = 1857cc7bbed20e87b3fd9a104956aa20c6502192910e0e7598410526ebfe1c99397b85189612a60c51fb8f4dd5cb08a8cd2e702563062dcb043410715c5323a0046 +Qy = 1fce8d135284310d2f38c216030634b32cd223222f0d9d8d2b7c55477c4b8b74fc6c96a6092f34b05ca44d3633a5037c2166c479a032bb4f949f89fc1ba5236d07d +k = 16d9704c0cee791f2938bb2a8a595752a3635c2f557efeecefd719414b5f2aaf846080f582c76eae7a8fddf81859b49d0131c212524d55defa67dca1a9a28ca400f +R = 1c9a4e51774384e8362876a87c572e6463a54413c7c6252c552ebb182f83e45ace436ade4ca373d8a7216e83efb62c8b41c4d5132a0afa65078f16d189baca39187 +S = 1e92a7dd5fea29a666398e1df5775cbb5664fe6943fe4c1d2bba516b7543c84df584458e53919c4ffab579a26fb3c892a5d1a77b0a07428c89350f8b559e627b014 + +Msg = 14c69f8d660f7a6b37b13a6d9788eff16311b67598ab8368039ea1d9146e54f55a83b3d13d7ac9652135933c68fafd993a582253be0deea282d86046c2fb6fd3a7b2c80874ced28d8bed791bd4134c796bb7baf195bdd0dc6fa03fdb7f98755ca063fb1349e56fd0375cf94774df4203b34495404ebb86f1c7875b85174c574c +d = 13dabca37130ba278eae2b3d106b5407711b0d3b437fbf1c952f0773571570764d2c7cb8896a8815f3f1975b21adc6697898e5c0a4242092fc1b80db819a4702df4 +Qx = 0bc2aebf40cd435bc37d73c09d05f2fd71321111a767c2b0d446f90dd4a186839c694ceb734e027e7ee948f0f63e4d3f1656d3d543df23c342a599306909b347109 +Qy = 1f4c98ac03f0718e58d5d1762c920445b11dbdd60ec7f60095809204e14965a4ecb0be6fea06adbac8ba431d6f144c75c199225df2a619a34be99897125b3a10af8 +k = 0401187c8b89945a1e48cda9ee52167789f4121e67482a7ac797899f5d3d2e623aed31e4adae08a8d43e69028fa074d2650317cbc765f6ed191cf0317b4bae57881 +R = 1e572afed754016fba43fc33e352932c4db65efcb84e2bd159b40fc5925893b161effc40240be28d8c07154d2615f605c6f0451b976522d95afd37f46602df7a12a +S = 030370c1c5352c2b663ac1858b42f69545b2f58ed5b2c007f303726977d3c756b5d644ec6788f94c886f78269aa190a3d8d1ae10e4fd24d937c4556fb9e1953fd6d + +Msg = 8d8e75df200c177dbfe61be61567b82177ea5ec58e2781168d2277d2fd42668f01248ca3eb29ffa2689b12ae40f9c429532b6d2e1f15891322b825a0a072a1c68fa09e78cfdef3e95ed6fdf7233a43cb68236560d49a3278f0b3f47cb08f475bd9ab2f60755ea4a1767de9313b71a1b9ea87ef33f34682efbda263b0f8cc2f52 +d = 198681adbde7840d7ccd9cf1fb82056433fb4dd26bddf909af7b3b99da1ca2c05c8d4560ecd80ba68f376f8b487897e374e99a9288ed7e3645cc0d00a478aae8d16 +Qx = 057ce3777af7032f1f82308682e71fe09f88bf29dacd5018a725e1caa4b1e2bfdd894fe618f9266f31ba089856dc9c1b70e4a2faa08b4b744d1aafcd5ae99e2c736 +Qy = 199bcfef2021bc5890d7d39ec5dc0c26956801e84cae742cf6c50386eb289b6e97754dd25a94abf81f1cb1b36935b5eb29f4b32a6516d2ff6a7d23064a0daec94b3 +k = 19d2d74ad8ee2d85048f386998a71899ef6c960b4ab324e5fd1c0a076c5a632fd0009500076522e052c5c9806eef7056da48df6b16eb71cdf0f1838b0e21715fce0 +R = 18ecacbcffd5414bbb96728e5f2d4c90178e27733d13617e134ec788022db124374bbaa11e2c77fe3f38d1af6e998e1b0266b77380984c423e80ffa6ff2bcafd57a +S = 1c727f34b6a378f3087721a54e9796499b597ecf6666b8f18312d67e1190a8a66e878efc2367b551267494e0245979ef4deed6d2cbf2c3711af6d82ccfeb101a377 + +Msg = 10631c3d438870f311c905e569a58e56d20a2a560e857f0f9bac2bb7233ec40c79de145294da0937e6b5e5c34fff4e6270823e5c8553c07d4adf25f614845b2eac731c5773ebbd716ab45698d156d043859945de57473389954d223522fbafecf560b07ef9ba861bcc1df9a7a89cdd6debf4cd9bf2cf28c193393569ccbd0398 +d = 08c4c0fd9696d86e99a6c1c32349a89a0b0c8384f2829d1281730d4e9af1df1ad5a0bcfccc6a03a703b210defd5d49a6fb82536f88b885776f0f7861c6fc010ef37 +Qx = 164ac88ed9afe137f648dd89cdd9956682830cac5f7c1a06d19a1b19f82bb1d22dfeefea30d35c11202fed93fd5ce64835d27c6564d6e181287fa04a2d20994986b +Qy = 05cb83669265f5380ccefe6b4f85fdf0049e6703f6f378a0b2e52ed0fbbcf300afebb722f4ed48e3819cb976c1d60e2ba05646b478f6dfecfbae730e9644c297f00 +k = 189801432cba9bf8c0763d43b6ec3b8636e62324587a4e27905b09a58e4aa66d07d096dbce87824e837be1c243dd741f983c535a5dd2f077aac8beee9918258d3cb +R = 0917723f7241e8dc7cd746b699ab621d068dd3a90e906aaf0a4862744b96fd4e5ccdb9c7796c27f7196e693d06ec209464c3ea60ad6313e9b77cceaa14767e6651c +S = 0957b0ecdc3668f6efa5d0957615bcfffd6419c5e57579b74f960f65ae3fb9e8284322ff710b066f7e0959ac926d3cf9a594bdb70bbec756c96910b26a2486dee9e + +Msg = 80aad6d696cbe654faa0d0a24d2f50d46e4f00a1b488ea1a98ed06c44d1d0c568beb4ab3674fc2b1d2d3da1053f28940e89ba1244899e8515cabdd66e99a77df31e90d93e37a8a240e803a998209988fc829e239150da058a300489e33bf3dcdaf7d06069e74569fee77f4e3875d0a713ccd2b7e9d7be62b34b6e375e84209ef +d = 1466d14f8fbe25544b209c5e6a000b771ef107867e28ed489a42015119d1aa64bff51d6b7a0ac88673bbc3618c917561cff4a41cdb7c2833dab5ebb9d0ddf2ca256 +Qx = 1dc8b71d55700573a26af6698b92b66180cf43e153edadb720780321dbb4e71d28e0a488e4201d207fc4848fe9dd10dcabec44492656a3ff7a665fe932445c82d0b +Qy = 1920b16331b7abeb3db883a31288ef66f80b7728b008b3cc33e03a68f68d9e653a86e3177bbc00014fa5ea4c1608c0d455c2e2ac7bd8ab8519ebf19955edf1baf8d +k = 160d04420e0d31b0df476f83393b1f9aff68389cc3299e42ef348d97646f7531a722b66ddfb9501bbb5c4a41d84c78be7233b11489bceb817d23060e6017433fab8 +R = 08077aabd0a342f03f912007c586cfedfc63f93d1118f720d5b62b3ce141a60f86f111dfd8fc2e31a6778981f1a5e28f29a7369bd7897bb41240c8d3a9c170e0ee0 +S = 00abc75fc154b93840579457820957e89d1260fee0a4b9bb1946f61ca1e71afd76bb5e1077b3e38ceb39d1fac5ef8b217c4110617b3ad118e02b3fcc2a39ef38613 + +Msg = 8a7792a2870d2dd341cd9c4a2a9ec2da753dcb0f692b70b64cef2e22071389c70b3b188dea5f409fb435cbd09082f59de6bc2ff9e65f91b7acc51e6e7f8e513148cb3c7c4664f227d5c704626b0fda447aa87b9d47cd99789b88628eb642ed250312de5ba6b25f3d5342a3cbb7ebd69b0044ee2b4c9ba5e3f5195afb6bea823d +d = 01a99fcf54c9b85010f20dc4e48199266c70767e18b2c618044542cd0e23733817776a1a45dbd74a8e8244a313d96c779f723013cd88886cb7a08ef7ee8fdd862e7 +Qx = 1912d33b01d51e2f777bdbd1ada23f2b1a9faf2be2f2a3b152547db9b149b697dd71824ca96547462e347bc4ef9530e7466318c25338c7e04323b1ba5fd25ea7162 +Qy = 0bbe9b1e3a84accd69b76b253f556c63e3f374e3de0d1f5e3600fc19215533b2e40d6b32c3af33314d223ea2366a51d1a337af858f69326389276f91be5c466e649 +k = 14fafd60cb026f50c23481867772411bb426ec6b97054e025b35db74fe8ea8f74faa2d36e7d40b4652d1f61794878510b49b7b4fe4349afccd24fc45fec2fd9e9e7 +R = 18b1df1b6d7030a23a154cacce4a2e3761cc6251ff8bf6c9f6c89d0a15123baef9b338ada59728349ce685c03109fcde512ed01a40afd2ca34e1bc02ecf2871d45c +S = 0a399f9b9e21aeddf450429fec2dc5749e4a4c7e4f94cee736004dcc089c47635da22845992cd076a4f0a01d2cc1b0af6e17b81a802361699b862157ad6cad8bd1d + +Msg = f971bcd396efb8392207b5ca72ac62649b47732fba8feaa8e84f7fb36b3edb5d7b5333fbfa39a4f882cb42fe57cd1ace43d06aaad33d0603741a18bc261caa14f29ead389f7c20536d406e9d39c34079812ba26b39baedf5feb1ef1f79990496dd019c87e38c38c486ec1c251da2a8a9a57854b80fcd513285e8dee8c43a9890 +d = 1b6015d898611fbaf0b66a344fa18d1d488564352bf1c2da40f52cd997952f8ccb436b693851f9ccb69c519d8a033cf27035c27233324f10e9969a3b384e1c1dc73 +Qx = 110c6177ceb44b0aec814063f297c0c890671220413dbd900e4f037a67d87583eaf4b6a9a1d2092472c17641362313c6a96f19829bb982e76e3a993932b848c7a97 +Qy = 0f6e566c4e49b2ee70a900dc53295640f3a4a66732df80b29f497f4ae2fa61d0949f7f4b12556967bb92201a4f5d1384d741120c95b617b99c47a61e11c93a482d6 +k = 1a88667b9bdfe72fb87a6999a59b8b139e18ef9273261549bc394d884db5aa64a0bc7c7d38a8ef17333478d2119d826e2540560d65f52b9a6dc91be1340cfd8f8f8 +R = 015f73def52ea47ddb03e0a5d154999642202e06e6734ac930c1dc84756c67bbb1cca9f21f92d61bfdb2052c5dd2833349610f68139393d77250a7662ef7bd17cbe +S = 155c744a729f83b27d1f325a91e63a0d564fe96ff91eaa1bad3bff17d2abffa065d14a1d20a04dd993f6ed3260b60bcc6401e31f6bc75aaafe03e8c1a9cd14d2708 + +Msg = ec0d468447222506b4ead04ea1a17e2aa96eeb3e5f066367975dbaea426104f2111c45e206752896e5fa7594d74ed184493598783cb8079e0e915b638d5c317fa978d9011b44a76b28d752462adf305bde321431f7f34b017c9a35bae8786755a62e746480fa3524d398a6ff5fdc6cec54c07221cce61e46fd0a1af932fa8a33 +d = 05e0d47bf37f83bcc9cd834245c42420b68751ac552f8a4aae8c24b6064ae3d33508ecd2c17ec391558ec79c8440117ad80e5e22770dac7f2017b755255000c853c +Qx = 1a6effc96a7f23a44bf9988f64e5cfafdae23fa14e4bee530af35d7a4ddf6b80dcd0d937be9dd2db3adcda2f5216fecbce867ee67e7e3773082f255156e31358c2f +Qy = 1e7760190dfbe07ec2df87067597087de262c1e0a12355456faba91b2e7277050d73b924e14c0e93b8457a8b3e1f4207ce6e754274f88ad75c000d1b2977edc9c1a +k = 18afea9a6a408db1e7a7bb1437a3d276f231eacfc57678bfa229d78681cbe4e800e6065332a3128db65d3aa446bb35b517dca26b02e106e1311881a95b0302d15e8 +R = 01c49b3c1d21f1678bdbe1ac12167e95e06617190bdee1a729c1c649210da19e2e210f6689e1310513bfe2ac6c0f4ee5f324f344b31b18df341eaadb826d07adc9b +S = 129d4931ba457443012f6ffecd002f2abc3a4b65a58fee8457917ebcf24b29a1d3055b7fc62939a74ebb0c3582172ee7c3c75e0b2fa2367c6e04df63a7a91d593ad + +Msg = d891da97d2b612fa6483ee7870e0f10fc12a89f9e33d636f587f72e0049f5888782ccde3ea737e2abca41492bac291e20de5b84157a43c5ea900aef761006a4471072ab6ae6d515ffe227695d3ff2341355b8398f72a723ae947f9618237c4b6642a36974860b452c0c6202688bc0814710cbbff4b8e0d1395e8671ae67ada01 +d = 1804ab8f90ff518b58019a0b30c9ed8e00326d42671b71b067e6f815ac6752fa35016bd33455ab51ad4550424034419db8314a91362c28e29a80fbd193670f56ace +Qx = 0a79529d23a832412825c3c2ad5f121c436af0f29990347ecfa586ce2e57fd3c7e0624d8db1f099c53473dbc2578f85416ad2ac958a162051014fb96bf07f9e1d17 +Qy = 17c0750f26df0c621d2d243c6c99f195f0086947b1bf0f43731555f5d677e2d4a082fb5fe8da87e1592a5fa31777da3299cede5a6f756edf81c85b77853388bb3ab +k = 042d7c36fec0415bc875deb0fab0c64548554062e618aee3aa6670ffd68ab579fe620d3a9316357267fd3111c0ed567dca663acd94b646d2ba0771953cd9690ef42 +R = 0d01dfbef126febbdfa03ef43603fd73bc7d2296dce052216e965fed7bb8cbbc24142bfcddb60c2e0bef185833a225daa0c91a2d9665176d4ad9986da785f4bfcf0 +S = 16627e2614dbcd371693c10bbf579c90c31a46c8d88adf59912c0c529047b053a7c7715142f64dcf5945dbc69ff5b706c4b0f5448d04dd1f0b5a4c3765148bf253d + +Msg = 924e4afc979d1fd1ec8ab17e02b69964a1f025882611d9ba57c772175926944e42c68422d15f9326285538a348f9301e593e02c35a9817b160c05e21003d202473db69df695191be22db05615561951867f8425f88c29ba8997a41a2f96b5cee791307369671543373ea91d5ed9d6a34794d33305db8975b061864e6b0fe775f +d = 0159bff3a4e42b133e20148950452d99681de6649a56b904ee3358d6dd01fb6c76ea05345cb9ea216e5f5db9ecec201880bdff0ed02ac28a6891c164036c538b8a8 +Qx = 12d7f260e570cf548743d0557077139d65245c7b854ca58c85920ac2b290f2abfeccd3bb4217ee4a29b92513ddce3b5cbf7488fb65180bb74aeb7575f8682337ef5 +Qy = 17560186230c7e8bff0bffce1272afcd37534f317b453b40716436a44e4731a3ec90a8f17c53357bc54e6ff22fc5b4ca892321aa7891252d140ece88e25258b63d5 +k = 14b8a30f988cefdc0edec59537264edb0b697d8c4f9e8507cf72bc01c761304bd2019da1d67e577b84c1c43dd034b7569f16635a771542b0399737025b8d817e1c3 +R = 0fc50939ebca4f4daa83e7eaf6907cb08f330c01d6ea497b86becda43dfcad47cb5c48f5eb2cc924228628070bcd144088c449a7873242ba86badf796097dbecd6d +S = 0ccb6463c4301ba5c043e47ed508d57dd908fd0d533af89fd3b11e76343a1cf2954ce90b0eb18cbc36acd6d76b3906612d8a0feec6ebed13d88650ed9c708b28a11 + +Msg = c64319c8aa1c1ae676630045ae488aedebca19d753704182c4bf3b306b75db98e9be438234233c2f14e3b97c2f55236950629885ac1e0bd015db0f912913ffb6f1361c4cc25c3cd434583b0f7a5a9e1a549aa523614268037973b65eb59c0c16a19a49bfaa13d507b29d5c7a146cd8da2917665100ac9de2d75fa48cb708ac79 +d = 17418dfc0fc3d38f02aa06b7df6afa9e0d08540fc40da2b459c727cff052eb0827bdb3d53f61eb3033eb083c224086e48e3eea7e85e31428ffe517328e253f166ad +Qx = 00188366b9419a900ab0ed9633426d51e25e8dc03f4f0e7549904243981ec469c8d6d938f6714ee620e63bb0ec536376a73d24d40e58ad9eb44d1e6063f2eb4c51d +Qy = 09889b9203d52b9243fd515294a674afd6b81df4637ffdddc43a7414741eda78d8aa862c9cbbb618acec55bb9a29aac59616fc804a52a97a9fc4d03254f4469effe +k = 1211c8824dcbfa0e1e15a04779c9068aed2431daeac298260795e6a80401f11f6d52d36bcee3cfa36627989c49d11475163aa201d2cd4c5394144a6bb500bbaf02b +R = 1d59401b8ac438855d545a699991142685077a409de2418c7ccfe01a4771b3870e76287a9654c209b58a12b0f51e8dc568e33140a6b630324f7ef17caa64bf4c139 +S = 143af360b7971095b3b50679a13cd49217189eaee4713f4201720175216573c68f7ac6f688bfe6eb940a2d971809bf36c0a77decc553b025ed41935a3898685183b + +[P-521,SHA-256] + +Msg = 8ab8176b16278db54f84328ae0b75ef8f0cd18afdf40c04ad0927ed0f6d9e47470396c8e87cde7a9be2ffbfe6c9658c88b7de4d582111119c433b2e4a504493f0a1166e3a3ea0d7b93358f4a297d63f65a5e752f94e2ee7f49ebcc742fa3eb03a617d00c574245b77a20033854d82964b2949e2247637239ab00baf4d170d97c +d = 1e8c05996b85e6f3f875712a09c1b40672b5e7a78d5852de01585c5fb990bf3812c3245534a714389ae9014d677a449efd658254e610da8e6cad33414b9d33e0d7a +Qx = 07d042ca19408524e68b981f1419351e3b84736c77fe58fee7d11317df2e850d960c7dd10d10ba714c8a609d163502b79d682e8bbecd4f52591d2748533e45a867a +Qy = 197ac6416111ccf987d290459ebc8ad9ec56e49059c992155539a36a626631f4a2d89164b985154f2dddc0281ee5b5178271f3a76a0914c3fcd1f97be8e8376efb3 +k = 0dc8daaacddb8fd2ff5c34a5ce183a42261ad3c64dbfc095e58924364dc47ea1c05e2599aae917c2c95f47d6bb37da008af9f55730ddbe4d8ded24f9e8daa46db6a +R = 09dd1f2a716843eedec7a6645ac834d4336e7b18e35701f06cae9d6b290d41491424735f3b57e829ad5de055eaeef1778f051c1ee152bf2131a081e53df2a567a8a +S = 02148e8428d70a72bc9fa986c38c2c97deda0420f222f9dc99d32c0acba699dc7ba0a2b79ce5999ff61bd0b233c744a893bc105bca5c235423e531612da65d72e62 + +Msg = c4bc2cec829036469e55acdd277745034e4e3cc4fcd2f50ec8bd89055c19795a1e051ccf9aa178e12f9beab6a016a7257e391faa536eaa5c969396d4e1ade36795a82ebc709d9422de8497e5b68e7292538d4ccdc6dd66d27a3ece6a2844962b77db073df9489c9710585ba03d53fa430dbc6626dc03b61d53fc180b9af5dea6 +d = 0b65bf33b2f27d52cbfabcadce741e691bf4762089afd37964de1a0deda98331bf8c74020a14b52d44d26e2f6fa7bcddbe83be7db17a0c8a1b376469cf92c6da27c +Qx = 10038bb9a7aea626de68c14c64243150e72c69e2f8a1ab922bfbdaa6f33d24fb4542c0324357b0dd640bbcd07632ecd253f64ca2bfbfbf3de9b24fffd0568ab82da +Qy = 0faf867d95308cc36d6f46844a0f535dc70f9768eed011a2464d2f308fa1d8e72c3616aec7e70516908183ffce7fdd36984a15f73efaa3858c2edf16a784d40e6c2 +k = 14aeb96c57d99677a1f5e4588064215e7e9af4027bfb8f31ff6126dbf341b8e6f719465e4273e91ba32670feca802549808322b7ee108bb20653cf20f93284d365f +R = 075ead62edf7d86c5d1bc2443d1aeb5dc034fd999e6ea012cef7499d9d050cd97d262095884e9fc89a42e15bd3dee80fe3c1ba10f4caabc4aabb86347023028b663 +S = 129a992a6ff66d41948d11fa680f732b1a74315b804c982805190ed9d2fae223f2b149980b9241998cdea0c5672595a8a49d5186a0ef7a46c0a376f925bdda81726 + +Msg = 1c1b641d0511a0625a4b33e7639d7a057e27f3a7f818e67f593286c8a4c827bb1f3e4f399027e57f18a45403a310c785b50e5a03517c72b45ef8c242a57b162debf2e80c1cf6c7b90237aede5f4ab1fcaf8187be3beb524c223cc0ceff24429eb181a5eea364a748c713214880d976c2cd497fd65ab3854ad0d6c2c1913d3a06 +d = 02c4e660609e99becd61c14d043e8b419a663010cc1d8f9469897d7d0a4f076a619a7214a2a9d07957b028f7d8539ba7430d0b9a7de08beeeae8452d7bb0eac669d +Qx = 0fb3868238ca840dbb36ecc6cf04f5f773ea0ab8e8b0fdcf779dc4039a8d7146a417504e953c0cb5e7f4e599cc2c168deda8b7f16084b5582f89f2ece4cae5167f7 +Qy = 1f90b5c15eeda48e747cf3ee8183166a49dbfac6161cbd09d29d40a6854f4c495e88a435892a920cdaad20d41985890b648badd4f0a858ffcbd9afdfc23134ede18 +k = 1f875bbf882cd6dd034a87916c7b3ba54b41b2ea2ce84ebaf4e393fcf7291fee09dec2b5bb8b6490997c9e62f077c34f0947fe14cec99b906dd6bf0b5d301e75ca1 +R = 07aa70425697736b298233249f5d0cf25c99e640c9ff88035ef1804820e1bfe7d043755f02d7a079494f7fa6dc26740c4e6b7b430c63f29c67bbd3a5c88d2f0e8d1 +S = 0e0d42e4ff11cf5be37a9fda348514d5097a662f214687cbfb28ff42d635b13029871ca4f464bb1fbce02d5da4d5fb61b2a071844259fc863d136197bec3a61e7c7 + +Msg = adb5f069b2b501a3ebb83d4f1808eb07710ac4a7b12532996855a20bcc54b2f76812915f632163c3654ff13d187d007152617cf859200194b59c5e81fc6cc9eb1ceb75d654050f260caa79c265254089270ccd02607fdcf3246119738c496dc3a4bd5d3be15789fc3d29a08d6d921febe2f40aef286d5d4330b07198c7f4588e +d = 17c3522007a90357ff0bda7d3a36e66df88ca9721fb80e8f63f50255d47ee819068d018f14c6dd7c6ad176f69a4500e6f63caf5cf780531004f85009c69b9c1230c +Qx = 13a4bea0eed80c66ea973a9d3d4a90b6abbb5dee57d8affaf93390a8783a20982eba644d2e2809f66530adeeee7f9a1da7515447e9ba118999f76f170c375f621f7 +Qy = 12f9dfaee40a75d8442b39b37a5c19ea124b464236e9b9a31bae6780cfd50f7ea4a700154b5ea0feeb64e9b35a1b0e33e46900cca1f34d13bb17e5017769841af27 +k = 18388a49caeda35859ef02702c1fd45ff26991998bd9d5e189c12c36cdae3f642ddd4a79561bd1d3e1cd9359de8f5c9e1604a312d207a27b08a6033f2741794ced5 +R = 15c6264795837dfea19f91876455f564f073c5c84a3c9d76e67872ae0447ba0d4850d8721302b25bec7ebfedd2721de140b2f3dead547042b24b0876117e7093cc1 +S = 060eb74236c189a28ed20bd0822eb22d75f7d97c9043a3c8e3f6d4c90bc8ca02ac4d37c1171c799a1c7dfd2fcbf83406b5e48c051e0fbf0fd937bfe6c3db4e18154 + +Msg = f253484d121d1ce8a88def6a3e9e78c47f4025ead6f73285bf90647102645b0c32d4d86742a50b8b7a42d5f6156a6faf588212b7dc72c3ffd13973bdba732b554d8bffc57d04f8167aef21ee941ee6ffb6cce0f49445bd707da8deb35dca650aaf761c3aa66a5ebccddd15aee21293f63061a7f4bfc3787c2cd62c806a1a9985 +d = 0c4dad55871d3bd65b016d143ddd7a195cc868b3048c8bbcb1435622036bdb5e0dec7178ca0138c610238e0365968f6ddd191bbfacc91948088044d9966f652ff25 +Qx = 014858a3b9bd426b678fdcf93fc53d17e7a9e8fe022442aaaba65399d12fd3a6a381958fb0f07ac6088f4e490506ec0f1ab4d0dbd461126f7eb46ff69cfa8bd88af +Qy = 18c18ce29ecc6d79d26a2de0cd31c4b32e84b5e90f6ba748f86c5afbd89618aceb9079460cbd1a8261ed5476973e61bf1d17ea78b022387443800c9247d21dde550 +k = 05577108f4187a173e5c29e927a8fc8f5ffd37e184254a6e381ff1018955aec91a35f30085e8cee6a7555c10f9efdce26d62f2b4b52dfdbaeafc3a30983e2d50d5b +R = 0344375ae7c804cbe32ced7a20976efae5d9c19eb88b6e24514d1d0cfb728b0f4601098b18b2e98f42b5222dd5237d4d87767007bf5acb185c5526d72047e2cb1a1 +S = 02de4cfa908c73c1102d6fb7062baf54a056a9517701e036c9c51e09899d60051612d59348945f845dffebec5aa395b2fac7229929033615788777306ccad96d0a3 + +Msg = 33bab1c369c495db1610965bc0b0546a216e8dd00cd0e602a605d40bc8812bbf1ffa67143f896c436b8f7cf0bed308054f1e1ff77f4d0a13c1e831efbd0e2fcfb3eadab9f755f070ba9aeaceb0a5110f2f8b0c1f7b1aa96a7f2d038a1b72e26400819b1f73d925ea4e34d6acaf59d0a461a34ce5d65c9c937a80e844e323a16d +d = 03d4749fadcc2008f098de70545a669133c548ce0e32eec1276ff531bcff53533144555728ad8906d17f091cc0514571691107350b6561858e90dbe19633aaf31bf +Qx = 10fe5986b65f6e65d13c88c4d2aed781a91026904f82129d46779bdadaf6b733c845a934e941ab4a285efdea9c96ecc9dc784d87e4d937b42c337b3a9cb111a9600 +Qy = 077853768a2a4d6f596f57414e57ec60b76d3cd5ece8351cd1f335ebcb8801a3d91fb82c65caaeb5c31eea9918367bb5906863ff3ccaf7a6cee415e0d75c15ac2e0 +k = 1fbb4de337b09e935a6dc6215ffcfcb85d236cc490585e73251a8b8bac37cfa36c5d1df5f4536d33659be1e7a442529a783452f7efda74a4f661b6a127f9248aaf7 +R = 09d8f10eeff6178594c89d6e8184f9502117384813243ddf9ccf3c8eac5dc6502c472dfc1487a5caffc569f7dedd14a8ebcb310e9bacdb79fb6655aba026cdf87f2 +S = 0f74236c7915d638708d17c9f10e39dda358faf9bbb821d8dcda0d151aac143bfb165ad0a23a65cd3de532e32cad928728f5ae1c16f58fc16577f3ca8e36f9e708b + +Msg = 08c8b7faaac8e1154042d162dca1df0f66e0001b3c5ecf49b6a4334ce4e8a754a1a8e4daf8ec09cf1e521c96547aed5172ef852e82c03cddd851a9f992183ac5199594f288dbcc53a9bb6128561ff3236a7b4b0dce8eaf7d45e64e782955ee1b690ce6a73ece47dc4409b690de6b7928cbe60c42fc6a5ddf1d729faf1cc3885e +d = 096a77b591bba65023ba92f8a51029725b555caf6eff129879d28f6400e760439d6e69ce662f6f1aecf3869f7b6057b530a3c6ff8ed9e86d5944f583ee0b3fbb570 +Qx = 0fdf6aed933dba73913142ef8bdcd4b760db8500831cd11d7707ab852a6372c05d112a1e7fbc7b514c42142c7370d9f4129493cd75cc6f2daf83747078f15229db6 +Qy = 0ef91dffb3c43080a59534b95ca585ee87f6145f6a0199b2b82c89f456d8bd8e6ac71c78039c08177184484eb2ebd372f189db3a58fab961a75a18afec1ee32764a +k = 13aa7b0471317a2a139c2f90df1c40d75e5a8a830fbaf87030fffdb2ef6f2c93d1310c9ed7fe9d7bcd4fe46537ff2495bc9c4f0aaff11461f5e4bebbfbce9a8740a +R = 1c7a21800962c91d4651553633b18612d931bb88bff8b743ed595b4e869437e50f8e84fbf334c99061db123a1c40b73b07e203790561a37df65a660355ba2017d78 +S = 1301e1782559a38f1ca0eebe9bed0f5c7c33103d506a24f8a688f500ee1fe37f97b6685319279e82e6fe43cfd823ccbc123309974cffa76c4f8d41ec02a3cbc45f1 + +Msg = ba74eed74282811631bd2069e862381e4e2a1e4e9a357b1c159a9ce69786f864b60fe90eeb32d8b72b099986fc594965a33285f7185b415df58fead7b8b50fc60d073680881d7435609ad1d22fd21e789b6730e232b0d2e888889fb82d6ad0337ab909308676164d4f47df44b21190eca8ba0f94995e60ad9bb02938461eee61 +d = 015152382bfd4f7932a8668026e705e9e73daa8bade21e80ea62cf91bd2448ebc4487b508ca2bdaaf072e3706ba87252d64761c6885a65dcafa64c5573c224ae9e6 +Qx = 00b8c7c0186a77dc6e9addd2018188a6a40c3e2ba396f30bbd9293dba2841d57d60866b37f587432719b544d8bf7eb06d90a8c0dc9c93b0c53d53b2f667077228ca +Qy = 1dd2e5c73ab908ae34f701689f1cd3cf5186d3a2bc941e208bf3ef970e5e429ee9b154d73286b2e5da423e75b7c7b78c7bdf915da92279db43265a0cdefca51f86a +k = 0d03506999f5cc9ec3304072984a20a9c64a22ad9b418495ca904f4bbddc96e76d34672cb52763339d3f3bc5b1701c00a675b972797e3a086314da1a8d338436566 +R = 085406c0ff5ec91f598bb579ad8714ad718c3e133d5dcc2e67c5d2339c146b69919cac07f3bc2bda218f4c7c8be04855e2ca6fff7fbdc4fc0fda87c8c3081cad4f5 +S = 1b45f2066e583636215ae135afc202b8bf3f301eccff2e1c0198b9aeddf695fa8179488e7b622fc307f601e2f6551815117cc836bb09ef888f8e64a45d9c84ad30c + +Msg = dc71f171a28bdc30968c39f08f999b88dc04c550e261ecf1124d67f05edeae7e87fe9b8135a96fe2bc3996a4f47213d9d191184a76bd6310e1ee5cb67ea7fc3ef6f641a0ba165198040fa668192b75a4754fc02c224bd4a74aade5a8c814adf151c2bfeda65165a04ef359e39847c84e312afb66d4cd1db50d41ef3fe5f31296 +d = 1750ff0ca0c166560b2034bc5760fe0b3915340bc43216e9de0c1d4a76550e8b2036e8b874230f8d29354aed43e183610f24fd4abd4b0be2f111dae942bd7a121f7 +Qx = 1b4b8947192a7c0166c0e0b2791e217370836283e805f3ee11cfb78445aba3c5bc39fe594e01916617ad59e7c8e740d8f2d07d88905d3f33bd5e51aafd4943c5dc6 +Qy = 1175d117232836c28e717ce2a55e59f4ec550effde30d18e3d99e42c6aa2283c7b3e7f2f6ff1fca605dde78c3a5bffa689347b4c93f51ba59a1787bb7d5e43861dc +k = 023645023d6bdf20652cdce1185c4ef225c66d54f18632d99ccf743bf554d04c214c88ce52a4f71ec75c899ad1b3c07c34112ca20b55c217ff1d72c9528e2774ce8 +R = 1e933f68ce0f8403cb16822b8e0564b1d39a35f27b53e4ae0bcdff3e051759464afbc34998ba7c8a7ee34ef6c1aaa722cffe48356fd0b738058358d4c768b3186c1 +S = 0a67368a305508ce6d25d29c84f552a4a513998990fef4936244f891a2909c30d5fdc9e8a267ecbf3c597138f4a08f7e92bee57d5420eadd700fee864bf78b2614b + +Msg = b895788d7828aaeace4f6b61a072ffa344d8ea324962ba6dab5efda93f65bf64a0f2ac6d5721d03ee70e2aef21cdba69fd29040199160e3a293b772ffb961ed694a8dc82800dab79367a4809a864e4aff6bc837aaa868e952b771b76591c0bb82249034e3208e593d85973d3fea753a95b16e221b2561644535c0131fe834ae7 +d = 023048bc16e00e58c4a4c7cc62ee80ea57f745bda35715510ed0fc29f62359ff60b0cf85b673383b87a6e1a792d93ab8549281515850fa24d6a2d93a20a2fff3d6e +Qx = 0ba3dc98326a15999351a2ec6c59e221d7d9e7ee7152a6f71686c9797f3f330d3150123620d547813ba9d7cc6c6d35cc9a087d07dff780e4821e74ad05f3762efd6 +Qy = 18b051af9824b5f614d23ecadd591e38edbfe910ad6cbebc3e8a6bec11ea90691c17deb3bc5f34a4a3acd90b7b10f521f6ee7b3cfbfdc03b72d5a8783a4a77c3e4c +k = 06099d2667f06c58798757632d07d8b3efbe9c1323efb0c244be6b12b3b163ba1b7cf5246c98dcc0771665a66696d687af5f28ed664fd87d5093df6427523d4db84 +R = 10dc80ea853064a2ba5a781f108aca3785c5ec0aa45aa05ba31d4de671170797589e863d54a3a986aadf6f670277f50355713dfb27d4ec7e348f787910b3cd668cd +S = 018572bfad4f62e3694d1f2e6ffd432faed2e2b9d7e3611a07138212f1e79e6c394839f7cfae96bc368422630016fb9346681eadc5f9699e7331c3b5fde6d65e4c6 + +Msg = 2c5bd848c476e34b427cfe5676692e588e1957957db7b5704492bd02104a38216535607f5d092dc40020130c04a3aaf0f1c52409834926d69a05d3f3188187a71d402a10ba34eac8629b4c6359b1095f30f710219298bf06b9f19bfc299981d7e251ca232a0a85338a7e02464731d1b25d4a1f68baf97064516590644820c998 +d = 02b8b866ce4503bb40ffc2c3c990465c72473f901d6ebe6a119ca49fcec8221b3b4fa7ec4e8e9a10dbd90c739065ad6a3a0dd98d1d6f6dcb0720f25a99357a40938 +Qx = 1b8c7a169d5455f16bfe5df1ba5d6ec9c76e4bad9968d4f5f96be5878a7b6f71d74bfac0076dd278bc4630629f3294646f17d6b6c712b0087e2c4d576039cfdc8b9 +Qy = 18faffd5422dfd1b61432fa77b9a288b2b7d546656c0dcca3032179e6f45ee3cf61d6a447fc51731cb54457343a41569fcf78cef42895f4da5efcb14ea1fc065f8d +k = 0ac89e813f94042292aa1e77c73773c85cf881a9343b3f50711f13fa17b50f4e5cb04ac5f6fc3106a6ef4c9732016c4e08e301eefac19199459129a41a7589e0628 +R = 05bc7a253a028ee8b7253979b8d689d41d8df6fae7736341f22e28b6faf0cbbdebbd2ef4d73e56d2021af2c646dc15539a7c1e1c4dc9c7674808bd7968d8a66f947 +S = 0fd71575837a43a4cf1c47d0485cfd503c2cf36ebcea0fdef946ad29acb7fb2e7c6daf6b4eb741eb211081aed6207d02569f1518988f275ad94c7fd4735cb18a92e + +Msg = 65a0b97048067a0c9040acbb5d7f6e2e6ac462e1e0064a8ce5b5bbf8e57059e25a3ef8c80fc9037ae08f63e63f5bdb9378c322ad9b2daf839fad7a75b1027abb6f70f110247da7e971c7c52914e5a4f7761854432fa16b2a521e7bcaee2c735a87cad20c535bf6d04a87340c229bf9af8647eedca9e2dc0b5aa90f7fea3cdc0a +d = 0a43b32ad7327ec92c0a67279f417c8ada6f40d6282fe79d6dc23b8702147a31162e646291e8df460d39d7cdbdd7b2e7c6c89509b7ed3071b68d4a518ba48e63662 +Qx = 172fb25a3e22c2a88975d7a814f3e02d5bb74cfb0aaa082c5af580019b429fddd8c7f9e09b6938f62e8c31019b25571aaceef3c0d479079db9a9b533ee8e1670abd +Qy = 0ff5516223b6cc7c711705f15b91db559014e96d3839249c5c849f2aced228a8998177a1e91177abbb24b57a8ea84d944e0c95da860ae0925f1b40c0e1b7c9e0a46 +k = 0383eda042e06c0297fbd279a2ad40559c5c12ad458f73458eebcc92b308d3c4fcec20a5b59f698e16fa6ea02dba8661b6955f67c052f67b0a56460869f24cfdf7d +R = 1b9c35356b9d068f33aa22a61370dae44a6cb030497a34fb52af23c6b684677370268f06bb4433be6795a71de570088aec17ce0c9933d2f76c7edce7f406f62fedd +S = 06f07ea453cfa20ad604ba855332f62834657b0b795684d50c1562a675456e37f4dae45f0df47d8e27e47bc9ce9c9cbba1554c5b94b0b17401b73c8d0c0902c6cc4 + +Msg = d6e366a87808eea5d39fe77cac4b8c754e865a796062e2ec89f72165cd41fe04c48148068c570e0d29afe9011e7e7a2461f4d9897d8c1fa14b4ff88cab40059d17ab724f4039244e97fcecb07f9ffeec2fb9d6b1896700fe374104a8c44af01a10e93b268d25367bf2bef488b8abcc1ef0e14c3e6e1621b2d58753f21e28b86f +d = 03c08fdccb089faee91dac3f56f556654a153cebb32f238488d925afd4c7027707118a372f2a2db132516e12ec25f1664953f123ac2ac8f12e0dcbbb61ff40fb721 +Qx = 193301fc0791996ca29e2350723bd9aa0991ddbb4a78348ee72bdcd9ed63ce110ba3496f2ce0331b5c00d4d674c1b70114e17ce44a73c3e16bab14ed1ee924202e4 +Qy = 0aea9b288cfb2933ec0a40efa8e2108774e09b3863b3193d0dac6cc16ccaa5bd5f9ce133aec5cd3b62cbaeec04703e4b61b19572705db38cfaa1907c3d7c785b0cd +k = 0d0e90d5ee7b5036655ad5c8f6a112c4b21c9449ca91c5c78421e364a2160bbac4428303657bc11ea69f59fb0fe85a41b8f155a362343094456fd2a39f2a79e4804 +R = 1a8c23a2965d365a4c2ffd0802ae8b3a69c6b84a1ba77fd8a5f2f61e8ec3a1dcb336f136e2a997252eaa94caf9b5ad6c9ecff5bf33abf547ca84985bb89908a11d7 +S = 1cc42a2dd97aa42b9df5ea430e0d4cb13106dd6da6e8c9315c96ed7b052db365bbde6960c9a965954a4398c18ea7db9593bbfc3c3b6b3466ff806fccac3de6424ab + +Msg = f99e1d272d0f5fb9c4f986e873d070ec638422bc04b47c715595e2cf1a701cdf88bc6c4b20085b357bad12ccba67cac8a5ca07f31ba432f9154ff1fadefd487a83a9c37e49fb70a2f170e58889cab0552e0a3806ccfa2a60d96e346851d84b7de6d1a4b8cf37567dc161a84f13421e3412457d4bc27f6213453c8519a2d7daa2 +d = 0969b515f356f8bb605ee131e80e8831e340902f3c6257270f7dedb2ba9d876a2ae55b4a17f5d9acd46c1b26366c7e4e4e90a0ee5cff69ed9b278e5b1156a435f7e +Qx = 0fc7ae62b05ed6c34077cbcbb869629528a1656e2e6d403884e79a21f5f612e91fc83c3a8ac1478d58852f0e8ba120d5855983afd1a719949afa8a21aec407516c3 +Qy = 0aa705da6459a90eaa2c057f2e6614fb72fc730d6fdebe70e968c93dbc9858534768ea2666553cd01db132331441823950a17e8d2345a3cab039c22b21bfe7bd3b9 +k = 19029260f88e19360b70c11107a92f06faa64524cfbd9f70fecf02bd5a94f390582a7f4c92c5313bb91dc881596768d86f75a0d6f452094adbe11d6643d1a0b2135 +R = 07f2158e9b9fa995199608263969498923cf918fdc736427c72ce27ce4a3540dce2e8e5e63a8fc7ba46f7fa42480efbf79c6ed39521f6e6ec056079e453e80a89d9 +S = 08e349eed6f1e28b0dbf0a8aeb1d67e59a95b54a699f083db885f50d702f3c6a4069591afaa5b80b3c75efb1674ebd32c7ead0040d115945f9a52ee3a51806cad45 + +Msg = 91f1ca8ce6681f4e1f117b918ae787a888798a9df3afc9d0e922f51cdd6e7f7e55da996f7e3615f1d41e4292479859a44fa18a5a006662610f1aaa2884f843c2e73d441753e0ead51dffc366250616c706f07128940dd6312ff3eda6f0e2b4e441b3d74c592b97d9cd910f979d7f39767b379e7f36a7519f2a4a251ef5e8aae1 +d = 013be0bf0cb060dbba02e90e43c6ba6022f201de35160192d33574a67f3f79df969d3ae87850071aac346b5f386fc645ed1977bea2e8446e0c5890784e369124418 +Qx = 167d8b8308259c730931db828a5f69697ec0773a79bdedbaaf15114a4937011c5ae36ab0503957373fee6b1c4650f91a3b0c92c2d604a3559dd2e856a9a84f551d9 +Qy = 19d2c1346aadaa3090b5981f5353243300a4ff0ab961c4ee530f4133fe85e6aab5bad42e747eee0298c2b8051c8be7049109ad3e1b572dda1cac4a03010f99f206e +k = 1a363a344996aac9a3ac040066a65856edfb36f10bb687d4821a2e0299b329c6b60e3547dde03bdbd1afa98b0b75d79cf5aac0ef7a3116266cadf3dfbd46f8a4bfc +R = 1ff097485faf32ce9e0c557ee064587c12c4834e7f0988cf181d07ba9ee15ae85a8208b61850080fc4bbedbd82536181d43973459f0d696ac5e6b8f2330b179d180 +S = 0306dc3c382af13c99d44db7a84ed813c8719c6ed3bbe751ead0d487b5a4aa018129862b7d282cce0bc2059a56d7722f4b226f9deb85da12d5b40648bf6ec568128 + +[P-521,SHA-384] + +Msg = dbc094402c5b559d53168c6f0c550d827499c6fb2186ae2db15b89b4e6f46220386d6f01bebde91b6ceb3ec7b4696e2cbfd14894dd0b7d656d23396ce920044f9ca514bf115cf98ecaa55b950a9e49365c2f3a05be5020e93db92c37437513044973e792af814d0ffad2c8ecc89ae4b35ccb19318f0b988a7d33ec5a4fe85dfe +d = 095976d387d814e68aeb09abecdbf4228db7232cd3229569ade537f33e07ed0da0abdee84ab057c9a00049f45250e2719d1ecaccf91c0e6fcdd4016b75bdd98a950 +Qx = 13b4ab7bc1ddf7fd74ca6f75ac560c94169f435361e74eba1f8e759ac70ab3af138d8807aca3d8e73b5c2eb787f6dcca2718122bd94f08943a686b115d869d3f406 +Qy = 0f293c1d627b44e7954d0546270665888144a94d437679d074787959d0d944d8223b9d4b5d068b4fbbd1176a004b476810475cd2a200b83eccd226d08b444a71e71 +k = 0a8d90686bd1104627836afe698effe22c51aa3b651737a940f2b0f9cd72c594575e550adb142e467a3f631f4429514df8296d8f5144df86faa9e3a8f13939ad5b3 +R = 02128f77df66d16a604ffcd1a515e039d49bf6b91a215b814b2a1c88d32039521fbd142f717817b838450229025670d99c1fd5ab18bd965f093cae7accff0675aae +S = 008dc65a243700a84619dce14e44ea8557e36631db1a55de15865497dbfd66e76a7471f78e510c04e613ced332aa563432a1017da8b81c146059ccc7930153103a6 + +Msg = 114187efd1f6d6c46473fed0c1922987c79be2144439c6f61183caf2045bfb419f8cddc82267d14540624975f27232117729ccfeacccc7ecd5b71473c69d128152931865a60e6a104b67afe5ed443bdbcdc45372f1a85012bbc4614d4c0c534aacd9ab78664dda9b1f1e255878e8ac59e23c56a686f567e4b15c66f0e7c0931e +d = 04ceb9896da32f2df630580de979515d698fbf1dd96bea889b98fc0efd0751ed35e6bcf75bc5d99172b0960ffd3d8b683fbffd4174b379fbdecd7b138bb9025574b +Qx = 0e7a3d30d5bd443549d50e9b297aaa87bc80b5c9e94169602d9d43d6d0c490c0bed8cc2170288b106bdbf4c9f1ce53fd699af0b4c64b494b08520e57dc01ab9a8b0 +Qy = 1d81056d37aec8a75d588f6d05977416e6f24ad0117a7f4450036d695612e7bc2771caed80e580314eebc88c8fc51c453f066e752481f212b57165d67f8a44f375a +k = 046639c5a3ec15afae5e4a7a418ac760846512d880c359bc2c751b199ce43b10887e861b14127809754dbea47f6cc0140d2817e3f5b9a80ce01abd81f81b748433a +R = 0f913de91e19bd8f943d542ae357bacc942a0967abc9be6c06239a379db8cc733fa50013e0b0f088bce9d630262feaa33b30d84f91bcf5ce9976e4e740fcb112f84 +S = 08a73a5c9c24235e0d9cecaac653f68ce5a6fb186ce67fa058d6ddbbd4d0a8c4d194e571148e8ad6c8882b4e33d2f60fb23dd7d07a1ae60864e8277918f592b3dc6 + +Msg = 6744b69fc2420fe00f2352399bd58719e4ecdd6d602e2c80f194d607e58b27a0854745bfd6d504de2eb30b04cee0f44af710dd77e2f816ac3ac5692fad2d1d417893bb0edba2707a4c146a486f8728ca696d35cc52e9c7187c82d4bdb92eb954794e5ad15133f6bfea1f025da32ada710a3014cf11095b3ff69a94d087f17753 +d = 00a8db566bd771a9689ea5188c63d586b9c8b576dbe74c06d618576f61365e90b843d00347fdd084fec4ba229fe671ccdd5d9a3afee821a84af9560cd455ed72e8f +Qx = 04f5b790cbe2984b71d41af5efed6c6893d15e13f31816d55a9c2926a104eee66f1ada83115d1388551218773b8b9d1138e3e3f027bb4392c90c14fd232580b4a11 +Qy = 0660eb160e9bfc8c5619e70e948e238c6fd37739bc1bb657b8e8436e63628f91992be7e63d9a7359623a1340642777b22026feb51116a6c50c54c3589b9bd39b6cb +k = 1e7b5e53571a24bd102dd7ad44a4b8d8a4e60e5957bc3c4e5d3c73109f55233f072e572c7892f425ba5e64d3cb7966096bb34a47e26cd5b3e3b44108b310d9f681b +R = 1a88bcd7e2bdff6e497d943dde432fb3f855a7177c466319cb53b701230c299db030276269685857d1e3f28110e690f2f529c8d18115eb381f313bc891d92ad278e +S = 146f1984ea879274dfd5e86ad92e564a4de081523ddbb1c397b8f9595911ef2e6501bc081584d5340f7aa47e1af036234ac6f27a5ac31f78dd3b0ff1a62693c630d + +Msg = 16001f4dcf9e76aa134b12b867f252735144e523e40fba9b4811b07448a24ef4ccf3e81fe9d7f8097ae1d216a51b6eefc83880885e5b14a5eeee025c4232319c4b8bce26807d1b386ad6a964deb3bdca30ee196cfdd717facfad5c77d9b1d05fdd96875e9675e85029ecbf4f94c524624746b7c42870c14a9a1454acf3354474 +d = 1a300b8bf028449344d0e736145d9dd7c4075a783cb749e1ec7988d60440a07021a25a3de74ea5e3d7bd4ab774d8ad6163adae31877ef0b2bd50e26e9e4be8a7b66 +Qx = 05055b9ad726ba8a48219b0ecbfffb89f8428de895b231f676705b7de9f2022d9ff4e0114ebb52dea342f9bf76b2fb060c020e29d92074ebb1fbfe5290a58c8bc10 +Qy = 0415af7f20a6e945315adbf757316bb486c80780a0a3a15b4b9609f126d7341053a2b726ab63cb46feee527b0bf532b32b477e5671aea23d9b3c3e604b9029954b5 +k = 05a2e92717bb4dab3ee76724d4d9c2d58a32b873e491e36127985f0c9960c610962ca1c4510dba75c98d83beebdc58b1d8678e054640951d11db1bd2d8a4ab8476b +R = 104a78ce94f878822daaf00ee527fbdbf6cceb3cbb23a2caa485e4109466de8910252f92379ab292cac8d1eda164f880c0067696e733fc8588a27703a3e1f5b8f1f +S = 1ffe23e8ab5a31668a81161a234ea14879771fe9866f8872eb6edb672e0fe91d2bb75c9767a2dfbac7c15c802211236b22ea41ecd055a0b8b311ffc4255f86d5c67 + +Msg = a9824a7b810aa16690083a00d422842971baf400c3563baa789c5653fc13416111c0236c67c68e95a13cec0df50324dcc9ae780ce4232607cb57dd9b2c61b382f0fa51fd4e283e2c55ffe272597651659fbd88cd03bfa9652cd54b01a7034c83a602709879e1325c77969bebfd93932ce09a23eae607374602201614ff84b141 +d = 06a253acd79912a74270fc0703ed6507ab20a970f2bc2277f782062092cf0e60ae1ca1bb44dec003169bc25ef6e7123dd04692f77b181a6d7e692e66b09d35a540c +Qx = 1f15c6b1df156fdd8381cd7446e039435e445f8f36f0247475058da0e371bf72753f6e39f98066bc79370b038c39687ba18e16cb118fe6538b7568c5403c251f6b7 +Qy = 12d2b4f46b854eeae75f1c63f55b76bf0c604d47f870c28a50ecdeb52bba1dd9a0ff12e680804ff864111207652da7dd10b49edf66bb86be00bc06672de91982457 +k = 165faf3727e42fd61345cfa7b93e55fb4bf583b24bdc14ce635b6c99dbd788012f14da9a210b677c44acdd851e672f1a48188d6b8946c0efeebfe8a597ba0090a2c +R = 1ad9463d2759abd568626548578deefdcd8b2d050ce6d9c7ed05feca20167484b86e89bdcc936fd647e0f8aedd7b6add2b8cf13ff6ff013c2b5540c6c56fda97a0c +S = 1645a7d0e11015256cfb034adca198695eea6aedd44d9fbf496850ccfed950f43fffd8dbf41e113f2d3837d8a5dd62b2ed580112ff05800b1f73196e5576810e15b + +Msg = 90d8bbf714fd2120d2144022bf29520842d9fbd2dc8bb734b3e892ba0285c6a342d6e1e37cc11a62083566e45b039cc65506d20a7d8b51d763d25f0d9eaf3d38601af612c5798a8a2c712d968592b6ed689b88bbab95259ad34da26af9dda80f2f8a02960370bdb7e7595c0a4fffb465d7ad0c4665b5ec0e7d50c6a8238c7f53 +d = 0d5a5d3ddfd2170f9d2653b91967efc8a5157f8720d740dd974e272aab000cc1a4e6c630348754ab923cafb5056fc584b3706628051c557fce67744ee58ba7a56d0 +Qx = 128a4da5fc995678e457ceb3929adee93c280f851abe900fa21f4f809dafad4e33b381e0cd49ce8dd50e2e281cea162bfd60a1d6a1c0ee2228e6a011e171b559ab8 +Qy = 06eb0917cd72256992c49ea527f6bb0315f13d8047794a0f1da1e93737703b1c2a74a00441ef3b47b6a2ff789c49ae32d91cabe7b29247aeec44f6c40a76597a2ca +k = 03269983a5c2bcc98e9476f5abf82424566b1f08b17204d29e310ece88f99eb677a537f86fe2529e409cfef2c12929644100099e0de2f27c0f0ac11105a4dca935b +R = 1a5257ae1e8187ba954f535b86ff9b8d6a181a3b95c250d090cb4e9c3bfbd03aa64696a76c569728ef67780d6338d70ce46da40b87a3e49bfe154b93930890dfa93 +S = 05b6ccdfd5c63c7db76d3a0478064a2a376e0e050cb093be795a72a549247c2e4adba9183145c63d46479dbbdcf09986a6f64c09c7e16abc4853f6376c9558b014a + +Msg = 09952b1e09995e95bf0022e911c6ab1a463b0a1fdd0eec69117b34af1103c720b57600217de7cd178fef92de5391e550af72a8dcf7badf25b06dd039417f9a7d0f5be88fcd4e9655931d5b605452a667c9d1bae91d3476e7d51cff4108f116a49966fb3a7cff8df1c09734ce5620faf2dccb3dc5d94e7e9ac812da31f6d07a38 +d = 1bcedf920fa148361671b43c64e3186e1937eb1bd4b28cbd84c421472394552889bc05509aa732ef69d732b21b750523fdfd811f36467690fe94e01e64c9d5cbbe9 +Qx = 0d33c151d202a5d4d831348e940b027ee32e4b0b9b48d823a05c67ff3bdaee0189fc6680565f352c062e99968afc643208b4f9c7af185b861658a88c4ad0fcc8ba2 +Qy = 0e4441ddb546468ad8ffa6074f137edfbb81e82e0e7d8f05c4c54598aa996a9cde54cb371f642bfdd4ae7eca5b769696030027129a4183da93567ad142a2dff5183 +k = 046e619b83aac868b26d0b3cbfab55e630e0b55c461985b5d00f94ff3a5ce90ff412cebf46bbd84550d2031d573ca27d924624428360708c8d8491c29eb01d30f2e +R = 08427c0f0ac0263472cd423c0fb554bf3c851b9c775c566ab0f6878717bd57665830767b05b7789c5c0b078195bd943dc737325552d32877ecb04a7c41bd07cd80c +S = 10bb6652d6a624c40a7dd06828f15774130d02369ceb1a7d03b553e16e17b7fa5b5401f15885d5e4fc2e55c0c7a1b97871ab02f76386b93a16aa6e7eb65debac6dd + +Msg = 0bb0f80cff309c65ff7729c59c517d50fc0ed5be405ef70cb910c3f62c328c90853d4473530b654dda6156e149bc2222a8a7f9be665240e2fbe9d03f78a2356af0bacd1edb84c4801adc8293a8a0bd6123d1cf6ba216aca807a7eb4dca76b493eb6e3dbb69d36f0f00f856222f24d9b93ec34c3b261be2fca0451c00571928e5 +d = 03789e04b3a2a0254ade3380172c150d2fad033885e02ea8bea5b92db3f4adbab190ae423080a1154dfedec694c25eab46ce638be3db4e4cba67bc39f62d6e7db2d +Qx = 1dbc2cf19627bdccf02432b1761f296275230c150cdde823ce3141ec315d7d05e16b2c29e2a67491078d5316883e933d85b4b10d4f64c477d3c4e0442dc928983a2 +Qy = 07562e720807dd118d3d8b265b3abc61a71fce43e3dce0e7b5ae18b7a4cb01ecc00d39c1f22e150a9a8728997e502144f5b3f6fa9b4cb8a4136212b082ca394e3f6 +k = 0fbccd8d7804bdd1d1d721b5ec74d4ba37603bc306f9fce2ec241853d8e07334e6b4b12c4ecca0c54bd71193dd7146507933a20737c5f3e15085830fab9b30ca57b +R = 181915a3998d8fa214f9715f4ca928d09c36de168dc15c6970a8a062b5cea2dc969b2437ca17b684f78a1fd583aad8e6c762c8f4ab0c91b86a497145e3ca440d307 +S = 15a6c18c5c77f5470b27d061eafdc26b78561941a3b2ab0f5c81d40899fc053c3d9ed12d7d61e298abbae470009c7b2157731c58d7b16a66fa5abaf5e8a1b8ed394 + +Msg = 7efacf213382ce30804e78b7256854d759147dba9729c51b2759465715bf2c421034c23dc651c13d6cce95f71fe6a84dfbee5768163ac5789ac0474c5ddf4115684683c5f7c204b33b8bcc0c03ac58f66cef2f53b721fe2fac91ad841126101a88f512a7c2ded38549d9f050d4b7961dda48a1489f026c5d111701762418cfe3 +d = 124700aa9186353e298edefc57bec0c7d0201cca10c1d80dd408d5d71040592b0ac59facdadfa8712445f5977ef8d4854022720c3f02d60e0732dbb2f171fcf1490 +Qx = 0c80fc4cecae5d53348524ddba6a160b735c75b22fdb39af17e2a613d09246e3bb0fd3f2978577f6db5d2118e05c7898024808f8eb8e021d7969cdcf7fc981200bb +Qy = 1a880c93943fd446d4b3923b574d2221c1bb7b645fb5534dda60e827b497666ff586b77921f7e7f605147947194cffd2fef0678880b89cc0bc7fb74fa96d4b112d7 +k = 01a05238d595ded5c61d3bf6fde257dbf13095af8a5cb3a2e579e8e4c550fe31d12b71cc2dbcb295e6c4fd0fb8c22d1b741c097cc59d826ced1a8771f09983143c4 +R = 132762bc81e9922a8d642e3a9d0218affa21fa2331cfcb9e452545c5981c64a8f7e4cc8e68056023b2aa78bead59061d19c7f646c931163a91e544b106b3be8de9e +S = 0c3a1b0b000c3169984132add51d611e2cb7069a262a6983d2ae72b459c36e6469509bdb0f473600b8686700b08910779dee9ba83f82e755d4a4ef5f124eb09397f + +Msg = 28edff8b9d85f5f58499cc11f492abdfab25e8945975bbaeee910afa2b8fc1295ec61406309ce4e09f4ab4f462959fc2a2786802466eb26d3b01be6919893ae75d0fdc2dc8a82e662550f9fce9627dd364188aaba5c6faa1b2d8a2235adfa5ad0dc140f88a2b2f103f5690e877d07fe8fd30d02d2b2729bd3d8eb5b23a21f54c +d = 1f532d01af885cb4ad5c329ca5d421c5c021883bd5404c798d617679bb8b094cbb7e15c832fb436325c5302313ce5e496f9513455e7021ffad75777a19b226acfa1 +Qx = 0c0bd76b0027b85bdd879052220da1494d503f6a4bb972105a48ae98e7dda8c2d9fd9336f5646385b961ef68e8464e3a95b00f96614b1a408ceaa2c87b077b6a8fb +Qy = 17eb7eb5c78db7819af92e8537d110d9f05a5e24f954f4dde21c224d4040f059ec99e051702f390413d2708d18f84d82998c61847475250fb844b20082cbe651a6b +k = 14e66853e0f7cd3300ebcae06048532e19cbb95bee140edc1c867ce7310637651445b6dfeb1d99d2e32f2ffb787ebe3fe35032277f185d3dad84f95806924550abe +R = 0c5b3a57161098e2e8e16e0a5ae8ecf4a14df14927eea18ed4925d11dc429dda145159323ba970174b194b9b4608a8fa2373b7a825c5e8bd80574e49698285c2c82 +S = 1a0c038a51796158b42eb5b0dac37aff9ab93b903a47e06ebbdd15946e4bcc9a3b3875b18cf6294c33fc6c3693cef04ed1a43d08951e664c760e2cf3fb4e47490d2 + +Msg = bae2a8897c742fd99fbf813351cd009d3f2e18d825ca22e115276484bce8f82f8c7c0c21dd2af208404d8ef45bb5a6c41693912b630897d5246801bf0775aa9bbac8be98cb861d172c3563dc59e78a58ed13c66dea496471b3ad0eeae8995293e4ab97373edc1837ffc95ff1cc0c1e90e64ea8680b2ca5f1e09bf86b99b343b6 +d = 11abf508bca68a85a54bc0659e77efad3c86112c9db04db2883e76144aa446918bb4bb0784b0b6a0e9aa47399fe3de5aaecfd8894a0d130bb0c366c40d9d5050745 +Qx = 05c0ea363a3a12633ea39d564587ebdd3a22a175ef32b9ebfc7311304b19cb3a62b5adc36f6afb6a6f7fabbf810ee89fdb72854fefd613e7798e9b9ff5938ea54c6 +Qy = 0bd06a85e47b885c08124b55a3fcc07ca61647cda6efbfdbd21b24d1ea7a4c7300d46cd798e76063aa979adef6f0698b15e5b7ae8a2ab39ab4f50b2d20614db6317 +k = 19cadb8c7eb10565aa4567e0709873918720f0e4b42b4817afb0b0547c70cd1100229deae97a276b9c98ea58b01d4839fee86336d749d123b03e8b1a31166acc110 +R = 0667448a8bbef1c810d40646977dc22f3dfb52a4d80928ded5e976e199cbed02fbd5a08546756ece14548d721a6eb380d0e1a71ad0660dbcac6163c776eedd3e249 +S = 0ae7f0a238daaddb7fb4a1707fe5132daf653f8e19f732347134c96f1dd798f867c479a4a4609a568a15b61afed70790adbde13ac5f68c468d0230852c1a2c22581 + +Msg = d57a26a9593e72bfc87322524639bcaae5f2252d18b99cdaa03b14445b0b8a4dd53928f66a2e4f202fb25b19cad0eb2f1bfda2ab9b0eb668cdcd0fe72f5d9ef2e45e0218590f7ab9d2c9342202610c698bc786cce108a7d4a6730a13e9ea1b470e781f1237d3f84f44abde808516975546bd89075ef9a9732bfd7ee33b6f4399 +d = 18dbf520d58177e4b7a0627674d220137983f486dd2fd3639f19751804e80df0655db6afd829cdf75238de525e1a7a9f048049b593dd64b4b96cc013f970c05ea1f +Qx = 18b872690c37995be324ddb5c2bd5462841bb062f8e63da248a853de79c3d6bb9a2eb1e6933afda0998ca43491cc807b08ace2d5336a43d0ab50563a2d3d98755f0 +Qy = 002ff31221aa32aa6546f35e8fe5b9361f938362a5e89e77ae130ba8bce3729e912dfac35a2fd21efe84b45b8be2a340850e4b574e1885b35c2afbe196b57c6cf4c +k = 098faeb73054639cb2e4442cd68e7b3a13f4b3f397a7b26f303afa40789f8ddd3d918f1ce4f0be53c8cb69c380744e2297d7fc01e2b3daef4ce64dd3a2644234753 +R = 09c0e7649f814f70a8416cb78bc4601472a363fe97f5c587305778169677860dd97f87b5ab07c3a953bc4615fc34634509d6a25621bdded33ed42446d059509c190 +S = 120b90e1cfb8a1b5e530df7b17d1128bc051ca4f1a65dd9c9d9d3c59d2f00c7c1e994c52b8671d40294b4d574d2c04475d5bebeacd3a0d3870a54dc7a4805614f40 + +Msg = 8fdcf5084b12cfc043dd3416b46274e021bbed95d341d3c500c102a5609d3a34de29f8fa9f0adb611a1f47a97ad981f8129d718fc0d6c709eab1a3490db8d550f34eb905b9e00663543afc5bc155e368e0bc919a8b8c9fa42093603537a5614927efa6be819ed42ececbf1a80a61e6e0a7f9b5bc43b9238e62d5df0571fea152 +d = 002764f5696aa813cd55d30948585f86288ae05aeb264ca157cd09e1d09a10515a849b0791b755ccc656a34707be9e52f5762d290a7d2bcd6de52c600ff862eaf4e +Qx = 127279c88719dc614db387f102e55104ea1c704ac7f57f3bca936f728439b76556730dd7cde2ac1ad0a4c2c2f036ab6f00cf34cb87ea36113571f300713044106d2 +Qy = 134a0786c31f5f2291b83c50fb579ae4c620b95e5a8bdc0c7e1ee6b996c89d764f1b20403e7faa203f397425ada297045dd8ba0e4b155d4900da249e934faab7991 +k = 08bffb0778cbb06466cecc114b9e89ca243a2b2b5e2597db920bc73a8bbcbe3f57144ad33409ef7faaab430e13f4c42d304d11347360c84972ca20b1539cce3a288 +R = 1f8f504e64a502e51e7c129517931c3b71f0d8a63b19cfe01ff7c951c6525249608b3ef5d00061d77eb6b3d69581adeaa3732c773bbb9b919c3e7c71fdc09f44d06 +S = 058044fc64b340604ffd02a5b2918d76fd6fb59ea895feab7aa218e6f1e8c8f226eb9ee345ef8140183a69272582005077b008006aab11597e808d7ff1e8382c924 + +Msg = 00669f433934992257bed55861df679804107d7fa491672574a7624949c60049b0533383c88d6896c8de860704c3e6a6aefce83efa57c4d57e9ab253da5d15e1f53ab6dce218b592772ab0bc01fee8e63368e85c0639301456fe2d44cd5396a7f2b22761cd03b80eba7883eede8249a2f5db2183bf00550c5c002f45a5e4fb31 +d = 1b0c9acd3eeb618b4b0de4db402206f0f29adc69d7ad324b6db6601b351f723ac8fe949eeacd34228649bf0126276e5aceb0137d00c30dd858aef2d6b6449de2e89 +Qx = 1811c8884486aaa083ddee1c51cb6e861cb830bd5eaa929f72efadbbd1286566ae7e7ba7fde7e02529900d35ee64591652d28798bfc1bed0d192602a9cf5a7d22e3 +Qy = 06d7fc9dd494816cfd29613d4689af67f7d0a2e6fbad5d4d6e0130189172a1ab601c5ca71deaa8bfcb5a190d49da191672ff6fc048e146cb902acec5eae6d87e60a +k = 1fdc4f108070af3c66c9ba7b6c1f2603a19ceb4760399df81228cfc7eafde1082b5a0716a3ff82fbe84726f14dd0db3376ca184a78c3c60679bab6cd45f77f9b9ce +R = 1ec310339ff056faeb341c4499c43782078b04be1725ae9a6cdcb6011c46d1a4eb3d75c358225e4ec142fd1cd344186f5eb597f7ba559ddfa954824365d5b6edaec +S = 005b679a33fdb7e04834f071cd0ac514c04add9f2614ab9bbd9b407b1420fed3f3e02a108e7e279899e43dcf64ae4083c289a87cd7d2103bdc036a95d36800ac7c6 + +Msg = 4be81dcfab39a64d6f00c0d7fff94dabdf3473dc49f0e12900df328d6584b854fbaebaf3194c433e9e21743342e2dd056b445c8aa7d30a38504b366a8fa889dc8ecec35b3130070787e7bf0f22fab5bea54a07d3a75368605397ba74dbf2923ef20c37a0d9c64caebcc93157456b57b98d4becb13fecb7cc7f3740a6057af287 +d = 181e1037bbec7ca2f271343e5f6e9125162c8a8a46ae8baa7ca7296602ae9d56c994b3b94d359f2b3b3a01deb7a123f07d9e0c2e729d37cc5abdec0f5281931308a +Qx = 0cfa5a8a3f15eb8c419095673f1d0bd63b396ff9813c18dfe5aa31f40b50b82481f9ed2edd47ae5ea6a48ea01f7e0ad0000edf7b66f8909ee94f141d5a07efe315c +Qy = 18af728f7318b96d57f19c1104415c8d5989565465e429bc30cf65ced12a1c5856ac86fca02388bc151cf89959a4f048597a9e728f3034aa39259b59870946187bf +k = 09078beaba465ba7a8b3624e644ac1e97c654533a58ac755e90bd606e2214f11a48cb51f9007865a0f569d967ea0370801421846a89f3d09eb0a481289270919f14 +R = 19cf91a38cc20b9269e7467857b1fc7eabb8cea915a3135f727d471e5bfcfb66d321fabe283a2cf38d4c5a6ecb6e8cbee1030474373bb87fcdfcc95cf857a8d25d0 +S = 1cf9acd9449c57589c950f287842f9e2487c5610955b2b5035f6aacfd2402f511998a1a942b39c307fc2bcab2c8d0dae94b5547ddccfb1012ca985b3edf42bbba8b + +[P-521,SHA-512] + +Msg = 9ecd500c60e701404922e58ab20cc002651fdee7cbc9336adda33e4c1088fab1964ecb7904dc6856865d6c8e15041ccf2d5ac302e99d346ff2f686531d25521678d4fd3f76bbf2c893d246cb4d7693792fe18172108146853103a51f824acc621cb7311d2463c3361ea707254f2b052bc22cb8012873dcbb95bf1a5cc53ab89f +d = 0f749d32704bc533ca82cef0acf103d8f4fba67f08d2678e515ed7db886267ffaf02fab0080dca2359b72f574ccc29a0f218c8655c0cccf9fee6c5e567aa14cb926 +Qx = 061387fd6b95914e885f912edfbb5fb274655027f216c4091ca83e19336740fd81aedfe047f51b42bdf68161121013e0d55b117a14e4303f926c8debb77a7fdaad1 +Qy = 0e7d0c75c38626e895ca21526b9f9fdf84dcecb93f2b233390550d2b1463b7ee3f58df7346435ff0434199583c97c665a97f12f706f2357da4b40288def888e59e6 +k = 03af5ab6caa29a6de86a5bab9aa83c3b16a17ffcd52b5c60c769be3053cdddeac60812d12fecf46cfe1f3db9ac9dcf881fcec3f0aa733d4ecbb83c7593e864c6df1 +R = 04de826ea704ad10bc0f7538af8a3843f284f55c8b946af9235af5af74f2b76e099e4bc72fd79d28a380f8d4b4c919ac290d248c37983ba05aea42e2dd79fdd33e8 +S = 087488c859a96fea266ea13bf6d114c429b163be97a57559086edb64aed4a18594b46fb9efc7fd25d8b2de8f09ca0587f54bd287299f47b2ff124aac566e8ee3b43 + +Msg = b3c63e5f5a21c4bfe3dbc644354d9a949186d6a9e1dd873828782aa6a0f1df2f64114a430b1c13fe8a2e09099e1ed05ef70de698161039ded73bcb50b312673bb073f8a792ac140a78a8b7f3586dffb1fc8be4f54516d57418ccc9945025ce3acf1eb84f69ceee5e9bd10c18c251dbc481562cd3aae54b54ab618cb1eeda33cf +d = 1a4d2623a7d59c55f408331ba8d1523b94d6bf8ac83375ceb57a2b395a5bcf977cfc16234d4a97d6f6ee25a99aa5bff15ff535891bcb7ae849a583e01ac49e0e9b6 +Qx = 04d5c8afee038984d2ea96681ec0dccb6b52dfa4ee2e2a77a23c8cf43ef19905a34d6f5d8c5cf0981ed804d89d175b17d1a63522ceb1e785c0f5a1d2f3d15e51352 +Qy = 014368b8e746807b2b68f3615cd78d761a464ddd7918fc8df51d225962fdf1e3dc243e265100ff0ec133359e332e44dd49afd8e5f38fe86133573432d33c02fa0a3 +k = 0bc2c0f37155859303de6fa539a39714e195c37c6ea826e224c8218584ae09cd0d1cc14d94d93f2d83c96e4ef68517fdb3f383da5404e5a426bfc5d424e253c181b +R = 1a3c4a6386c4fb614fba2cb9e74201e1aaa0001aa931a2a939c92e04b8344535a20f53c6e3c69c75c2e5d2fe3549ed27e6713cb0f4a9a94f6189eb33bff7d453fce +S = 16a997f81aa0bea2e1469c8c1dab7df02a8b2086ba482c43af04f2174831f2b1761658795adfbdd44190a9b06fe10e578987369f3a2eced147cff89d8c2818f7471 + +Msg = 6e0f96d56505ffd2d005d5677dbf926345f0ff0a5da456bbcbcfdc2d33c8d878b0bc8511401c73168d161c23a88b04d7a9629a7a6fbcff241071b0d212248fcc2c94fa5c086909adb8f4b9772b4293b4acf5215ea2fc72f8cec57b5a13792d7859b6d40348fc3ba3f5e7062a19075a9edb713ddcd391aefc90f46bbd81e2557b +d = 14787f95fb1057a2f3867b8407e54abb91740c097dac5024be92d5d65666bb16e4879f3d3904d6eab269cf5e7b632ab3c5f342108d1d4230c30165fba3a1bf1c66f +Qx = 0c2d540a7557f4530de35bbd94da8a6defbff783f54a65292f8f76341c996cea38795805a1b97174a9147a8644282e0d7040a6f83423ef2a0453248156393a1782e +Qy = 119f746c5df8cec24e4849ac1870d0d8594c799d2ceb6c3bdf891dfbd2242e7ea24d6aec3166214734acc4cbf4da8f71e2429c5c187b2b3a048527c861f58a9b97f +k = 186cd803e6e0c9925022e41cb68671adba3ead5548c2b1cd09348ab19612b7af3820fd14da5fe1d7b550ed1a3c8d2f30592cd7745a3c09ee7b5dcfa9ed31bdd0f1f +R = 10ed3ab6d07a15dc3376494501c27ce5f78c8a2b30cc809d3f9c3bf1aef437e590ef66abae4e49065ead1af5f752ec145acfa98329f17bca9991a199579c41f9229 +S = 08c3457fe1f93d635bb52df9218bf3b49a7a345b8a8a988ac0a254340546752cddf02e6ce47eee58ea398fdc9130e55a4c09f5ae548c715f5bcd539f07a34034d78 + +Msg = 3f12ab17af3c3680aad22196337cedb0a9dba22387a7c555b46e84176a6f8418004552386ada4deec59fdabb0d25e1c6668a96f100b352f8dabd24b2262bd2a3d0f825602d54150bdc4bcbd5b8e0ca52bc8d2c70ff2af9b03e20730d6bd9ec1d091a3e5c877259bcff4fd2c17a12bfc4b08117ec39fe4762be128d0883a37e9d +d = 15807c101099c8d1d3f24b212af2c0ce525432d7779262eed0709275de9a1d8a8eeeadf2f909cf08b4720815bc1205a23ad1f825618cb78bde747acad8049ca9742 +Qx = 160d7ea2e128ab3fabd1a3ad5455cb45e2f977c2354a1345d4ae0c7ce4e492fb9ff958eddc2aa61735e5c1971fa6c99beda0f424a20c3ce969380aaa52ef5f5daa8 +Qy = 14e4c83f90d196945fb4fe1e41913488aa53e24c1d2142d35a1eed69fed784c0ef44d71bc21afe0a0065b3b87069217a5abab4355cf8f4ceae5657cd4b9c8008f1f +k = 096731f8c52e72ffcc095dd2ee4eec3da13c628f570dba169b4a7460ab471149abdede0b63e4f96faf57eab809c7d2f203fd5ab406c7bd79869b7fae9c62f97c794 +R = 1e2bf98d1186d7bd3509f517c220de51c9200981e9b344b9fb0d36f34d969026c80311e7e73bb13789a99e0d59e82ebe0e9595d9747204c5f5550c30d934aa30c05 +S = 12fed45cc874dc3ed3a11dd70f7d5c61451fbea497dd63e226e10364e0718d3722c27c7b4e5027051d54b8f2a57fc58bc070a55b1a5877b0f388d768837ef2e9cec + +Msg = a1eed24b3b7c33296c2491d6ee092ec6124f85cf566bb5bc35bffb5c734e34547242e57593e962fb76aee9e800eed2d702cc301499060b76406b347f3d1c86456978950737703c8159001e6778f69c734a56e5ce5938bd0e0de0877d55adeee48b0d8dfa4ac65fd2d3ce3e12878bac5c7014f9284d161b2a3e7d5c88569a45f6 +d = 18692def0b516edcdd362f42669999cf27a65482f9358fcab312c6869e22ac469b82ca9036fe123935b8b9ed064acb347227a6e377fb156ec833dab9f170c2ac697 +Qx = 1ceee0be3293d8c0fc3e38a78df55e85e6b4bbce0b9995251f0ac55234140f82ae0a434b2bb41dc0aa5ecf950d4628f82c7f4f67651b804d55d844a02c1da6606f7 +Qy = 1f775eb6b3c5e43fc754052d1f7fc5b99137afc15d231a0199a702fc065c917e628a54e038cbfebe05c90988b65183b368a2061e5b5c1b025bbf2b748fae00ba297 +k = 161cf5d37953e09e12dc0091dc35d5fb3754c5c874e474d2b4a4f1a90b870dff6d99fb156498516e25b9a6a0763170702bb8507fdba4a6131c7258f6ffc3add81fd +R = 14dfa43046302b81fd9a34a454dea25ccb594ace8df4f9d98556ca5076bcd44b2a9775dfaca50282b2c8988868e5a31d9eb08e794016996942088d43ad3379eb9a1 +S = 120be63bd97691f6258b5e78817f2dd6bf5a7bf79d01b8b1c3382860c4b00f89894c72f93a69f3119cb74c90b03e9ede27bd298b357b9616a7282d176f3899aaa24 + +Msg = 9aace26837695e6596007a54e4bccdd5ffb16dc6844140e2eeeb584b15acb2bbffd203c74440b6ee8db676fd200b4186a8c3e957c19e74d4d865ada83f80655323dfa3570907ed3ce853b6e8cc375ed2d758a2f5ad265dd3b47650517a49b3d02df9e0c60c21576378c2b3a08481eec129b2a75608e13e6420127a3a63c8a3f1 +d = 0a63f9cdefbccdd0d5c9630b309027fa139c31e39ca26686d76c22d4093a2a5e5ec4e2308ce43eb8e563187b5bd811cc6b626eace4063047ac0420c3fdcff5bdc04 +Qx = 14cab9759d4487987b8a00afd16d7199585b730fb0bfe63796272dde9135e7cb9e27cec51207c876d9214214b8c76f82e7363f5086902a577e1c50b4fbf35ce9966 +Qy = 1a83f0caa01ca2166e1206292342f47f358009e8b891d3cb817aec290e0cf2f47e7fc637e39dca03949391839684f76b94d34e5abc7bb750cb44486cce525eb0093 +k = 01e51fd877dbbcd2ab138fd215d508879298d10c7fcbdcc918802407088eb6ca0f18976a13f2c0a57867b0298512fc85515b209c4435e9ef30ab01ba649838bc7a0 +R = 11a1323f6132d85482d9b0f73be838d8f9e78647934f2570fededca7c234cc46aa1b97da5ac1b27b714f7a171dc4209cbb0d90e4f793c4c192dc039c31310d6d99b +S = 0386a5a0fc55d36ca7231a9537fee6b9e51c2255363d9c9e7cb7185669b302660e23133eb21eb56d305d36e69a79f5b6fa25b46ec61b7f699e1e9e927fb0bceca06 + +Msg = ac2175940545d4fbab6e2e651c6830aba562e0c11c919e797c43eff9f187a68a9e5a128e3e2a330b955a3f4577d3f826529ad1b03d7b60f7ad678f005053b41dc0f8d267f3685c6abe1a0e9a733c44b2f3ca48b90806f935141c842e3a6c06a58f5343d75e3585971a734f4ae1074ce5b54f74bd9342f4bbca738d260393f43e +d = 024f7d67dfc0d43a26cc7c19cb511d30a097a1e27e5efe29e9e76e43849af170fd9ad57d5b22b1c8840b59ebf562371871e12d2c1baefc1abaedc872ed5d2666ad6 +Qx = 09da1536154b46e3169265ccba2b4da9b4b06a7462a067c6909f6c0dd8e19a7bc2ac1a47763ec4be06c1bec57d28c55ee936cb19588cc1398fe4ea3bd07e6676b7f +Qy = 14150cdf25da0925926422e1fd4dcfcffb05bdf8682c54d67a9bd438d21de5af43a15d979b320a847683b6d12ac1383a7183095e9da491c3b4a7c28874625e70f87 +k = 1c1308f31716d85294b3b5f1dc87d616093b7654907f55289499b419f38ceeb906d2c9fe4cc3d80c5a38c53f9739311b0b198111fede72ebde3b0d2bc4c2ef090d2 +R = 00dbf787ce07c453c6c6a67b0bf6850c8d6ca693a3e9818d7453487844c9048a7a2e48ff982b64eb9712461b26b5127c4dc57f9a6ad1e15d8cd56d4fd6da7186429 +S = 0c6f1c7774caf198fc189beb7e21ca92ceccc3f9875f0e2d07dc1d15bcc8f210b6dd376bf65bb6a454bf563d7f563c1041d62d6078828a57538b25ba54723170665 + +Msg = 6266f09710e2434cb3da3b15396556765db2ddcd221dce257eab7399c7c490135925112932716af1434053b8b9fe340563e57a0b9776f9ac92cbb5fba18b05c0a2fafbed7240b3f93cd1780c980ff5fe92610e36c0177cabe82367c84cee9020cf26c1d74ae3eb9b9b512cb8b3cb3d81b17cf20dc76591b2b394ef1c62ac12ee +d = 0349471460c205d836aa37dcd6c7322809e4e8ef81501e5da87284b267d843897746b33016f50a7b702964910361ed51d0afd9d8559a47f0b7c25b2bc952ce8ed9e +Qx = 00bbd4e8a016b0c254e754f68f0f4ed081320d529ecdc7899cfb5a67dd04bc85b3aa6891a3ed2c9861ae76c3847d81780c23ad84153ea2042d7fd5d517a26ff3ce4 +Qy = 0645953afc3c1b3b74fdf503e7d3f982d7ee17611d60f8eb42a4bddbec2b67db1f09b54440c30b44e8071d404658285cb571462001218fc8c5e5b98b9fae28272e6 +k = 00eb2bd8bb56b9d2e97c51247baf734cc655c39e0bfda35375f0ac2fe82fad699bf1989577e24afb33c3868f91111e24fefe7dec802f3323ac013bec6c048fe5568 +R = 14bf63bdbc014aa352544bd1e83ede484807ed760619fa6bc38c4f8640840195e1f2f149b29903ca4b6934404fb1f7de5e39b1ea04dba42819c75dbef6a93ebe269 +S = 05d1bcf2295240ce4415042306abd494b4bda7cf36f2ee2931518d2454faa01c606be120b057062f2f3a174cb09c14f57ab6ef41cb3802140da22074d0e46f908d4 + +Msg = 3de9e617a6868dca1a1432d503f923535da3f9b34426b2a4822174399c73b1c1ee67311410a58c17202ac767844b2024d8aa21a205707d93865693ac25a24fc87034fa3a7a7e27c3344cb03b87602c15180a5fe6a9dd90cd11af4a0f150207bf2d83f55b12c088adae99aa8cfa659311b3a25beb99056643760d6a282126b9b2 +d = 07788d34758b20efc330c67483be3999d1d1a16fd0da81ed28895ebb35ee21093d37ea1ac808946c275c44454a216195eb3eb3aea1b53a329eca4eb82dd48c784f5 +Qx = 0157d80bd426f6c3cee903c24b73faa02e758607c3e102d6e643b7269c299684fdaba1acddb83ee686a60acca53cddb2fe976149205c8b8ab6ad1458bc00993cc43 +Qy = 16e33cbed05721b284dacc8c8fbe2d118c347fc2e2670e691d5d53daf6ef2dfec464a5fbf46f8efce81ac226915e11d43c11c8229fca2327815e1f8da5fe95021fc +k = 0a73477264a9cc69d359464abb1ac098a18c0fb3ea35e4f2e6e1b060dab05bef1255d9f9c9b9fbb89712e5afe13745ae6fd5917a9aedb0f2860d03a0d8f113ea10c +R = 07e315d8d958b8ce27eaf4f3782294341d2a46fb1457a60eb9fe93a9ae86f3764716c4f5f124bd6b114781ed59c3f24e18aa35c903211b2f2039d85862932987d68 +S = 1bcc1d211ebc120a97d465b603a1bb1e470109e0a55d2f1b5c597803931bd6d7718f010d7d289b31533e9fcef3d141974e5955bc7f0ee342b9cad05e29a3dded30e + +Msg = aa48851af7ef17abe233163b7185130f4646203c205e22bcc2a5a3697bcab998c73a9ffe1d3ea0b7978ce7df937a72586eb5ca60b0d939a7d1c115c820171c89c8116b7e2c7b98cf0f14e4c4df3cb2f319ad3ab0ea25ff14526ddc037469f000bf82100acd4cdf94feb4eba4ea1726f0569336604a473aee67d71afebb569209 +d = 1f98696772221e6cccd5569ed8aed3c435ee86a04689c7a64d20c30f6fe1c59cc10c6d2910261d30c3b96117a669e19cfe5b696b68feeacf61f6a3dea55e6e5837a +Qx = 07002872c200e16d57e8e53f7bce6e9a7832c387f6f9c29c6b75526262c57bc2b56d63e9558c5761c1d62708357f586d3aab41c6a7ca3bf6c32d9c3ca40f9a2796a +Qy = 1fe3e52472ef224fb38d5a0a14875b52c2f50b82b99eea98d826c77e6a9ccf798de5ffa92a0d65965f740c702a3027be66b9c844f1b2e96c134eb3fdf3edddcf11c +k = 1a277cf0414c6adb621d1cc0311ec908401ce040c6687ed45a0cdf2910c42c9f1954a4572d8e659733d5e26cbd35e3260be40017b2f5d38ec42315f5c0b056c596d +R = 0d732ba8b3e9c9e0a495249e152e5bee69d94e9ff012d001b140d4b5d082aa9df77e10b65f115a594a50114722db42fa5fbe457c5bd05e7ac7ee510aa68fe7b1e7f +S = 134ac5e1ee339727df80c35ff5b2891596dd14d6cfd137bafd50ab98e2c1ab4008a0bd03552618d217912a9ec502a902f2353e757c3b5776309f7f2cfebf913e9cd + +Msg = b0d5d52259af364eb2d1a5027e5f7d0afe4b999cc5dd2268cfe76f51d2f17b541bdd7867e23a1bb897705153d9432a24012108979c6a2c9e2567c9531d012f9e4be764419491a52eae2e127430b0ab58cb8e216515a821b3db206447c235bf44ee304201b483b2a88844abaa18bca0147dfff7e502397dd62e15524f67eb2df2 +d = 13c3852a6bc8825b45fd7da1754078913d77f4e586216a6eb08b6f03adce7464f5dbc2bea0eb7b12d103870ef045f53d67e3600d7eba07aac5db03f71b64db1cceb +Qx = 0c97a4ebcbbe701c9f7be127e87079edf479b76d3c14bfbee693e1638e5bff8d4705ac0c14597529dbe13356ca85eb03a418edfe144ce6cbf3533016d4efc29dbd4 +Qy = 11c75b7a8894ef64109ac2dea972e7fd5f79b75dab1bf9441a5b8b86f1dc1324426fa6cf4e7b973b44e3d0576c52e5c9edf8ce2fc18cb3c28742d44419f044667f8 +k = 1e25b86db041f21c2503d547e2b1b655f0b99d5b6c0e1cf2bdbd8a8c6a053f5d79d78c55b4ef75bff764a74edc920b35536e3c470b6f6b8fd53898f3bbc467539ef +R = 1dce45ea592b34d016497882c48dc0c7afb1c8e0f81a051800d7ab8da9d237efd892207bc9401f1d30650f66af8d5349fc5b19727756270722d5a8adb0a49b72d0a +S = 0b79ffcdc33e028b1ab894cb751ec792a69e3011b201a76f3b878655bc31efd1c0bf3b98aea2b14f262c19d142e008b98e890ebbf464d3b025764dd2f73c4251b1a + +Msg = 9599788344976779383a7a0812a096943a1f771ee484d586af1a06207478e4c0be9c200d42460fe837e24b266c8852d80d3c53cc52ffb1913fc3261145fc6da575611efd16c026059a2e64f802517ffd1b6b34de10ad2909c65c2155e8d939b8115400c1d793d23955b15f5d1c13c962ff92b4a815cee0e10f8e14e1f6e6cd38 +d = 1654eaa1f6eec7159ee2d36fb24d15d6d33a128f36c52e2437f7d1b5a44ea4fa965c0a26d0066f92c8b82bd136491e929686c8bde61b7c704daab54ed1e1bdf6b77 +Qx = 1f269692c47a55242bb08731ff920f4915bfcecf4d4431a8b487c90d08565272c52ca90c47397f7604bc643982e34d05178e979c2cff7ea1b9eaec18d69ca7382de +Qy = 0750bdd866fba3e92c29599c002ac6f9e2bf39af8521b7b133f70510e9918a94d3c279edec97ab75ecda95e3dd7861af84c543371c055dc74eeeff7061726818327 +k = 1b7519becd00d750459d63a72f13318b6ac61b8c8e7077cf9415c9b4b924f35514c9c28a0fae43d06e31c670a873716156aa7bc744577d62476e038b116576a9e53 +R = 183bddb46c249e868ef231a1ebd85d0773bf8105a092ab7d884d677a1e9b7d6014d6358c09538a99d9dca8f36f163ac1827df420c3f9360cc66900a9737a7f756f3 +S = 0d05ee3e64bac4e56d9d8bd511c8a43941e953cba4e5d83c0553acb87091ff54f3aad4d69d9f15e520a2551cc14f2c86bb45513fef0295e381a7635486bd3917b50 + +Msg = fdde51acfd04eb0ad892ce9d6c0f90eb91ce765cbe3ce9d3f2defe8f691324d26b968b8b90e77706b068585f2a3ee7bf3e910528f7403c5af745a6f9d7ba6c53abd885c3b1be583415b128f4d3f224daf8563476bd9aa61e9c8518c144335f8f879c03696bddbe3ac37a8fbede29861611feaa87e325e2f60278b4893ed57fb0 +d = 1cba5d561bf18656991eba9a1dde8bde547885ea1f0abe7f2837e569ca52f53df5e64e4a547c4f26458b5d9626ed6d702e5ab1dd585cf36a0c84f768fac946cfd4c +Qx = 12857c2244fa04db3b73db4847927db63cce2fa6cb22724466d3e20bc950a9250a15eafd99f236a801e5271e8f90d9e8a97f37c12f7da65bce8a2c93bcd25526205 +Qy = 0f394e37c17d5b8e35b488fa05a607dbc74264965043a1fb60e92edc212296ae72d7d6fe2e3457e67be853664e1da64f57e44bd259076b3bb2b06a2c604fea1be9d +k = 0e790238796fee7b5885dc0784c7041a4cc7ca4ba757d9f7906ad1fcbab5667e3734bc2309a48047442535ff89144b518f730ff55c0c67eeb4c880c2dfd2fb60d69 +R = 1d7ce382295a2a109064ea03f0ad8761dd60eefb9c207a20e3c5551e82ac6d2ee5922b3e9655a65ba6c359dcbf8fa843fbe87239a5c3e3eaecec0407d2fcdb687c2 +S = 161963a6237b8955a8a756d8df5dbd303140bb90143b1da5f07b32f9cb64733dc6316080924733f1e2c81ade9d0be71b5b95b55666026a035a93ab3004d0bc0b19f + +Msg = beb34c997f905c77451ac392f7957a0ab8b23325bd5c63ca31c109ac8f655a1e3094240cb8a99284f8091de2ab9a7db2504d16251980b86be89ec3a3f41162698bab51848880633e0b71a38f8896335853d8e836a2454ecab2acdcc052c8f659be1d703b13ae1b090334ac50ab0137ddb5e8b924c0e3d2e5789daaef2fdd4a1e +d = 0972e7ff25adf8a032535e5b19463cfe306b90803bf27fabc6046ae0807d2312fbab85d1da61b80b2d5d48f4e5886f27fca050b84563aee1926ae6b2564cd756d63 +Qx = 1d7f1e9e610619daa9d2efa563610a371677fe8b58048fdc55a98a49970f6afa6649c516f9c72085ca3722aa595f45f2803402b01c832d28aac63d9941f1a25dfea +Qy = 1571facce3fcfe733a8eef4e8305dfe99103a370f82b3f8d75085414f2592ad44969a2ef8196c8b9809f0eca2f7ddc71c47879e3f37a40b9fecf97992b97af29721 +k = 0517f6e4002479dc89e8cbb55b7c426d128776ca82cf81be8c1da9557178783f40e3d047db7e77867f1af030a51de470ee3128c22e9c2d642d71e4904ab5a76edfa +R = 1c3262a3a3fb74fa5124b71a6c7f7b7e6d56738eabaf7666b372b299b0c99ee8a16be3df88dd955de093fc8c049f76ee83a4138cee41e5fe94755d27a52ee44032f +S = 072fd88bb1684c4ca9531748dfce4c161037fcd6ae5c2803b7117fb60d3db5df7df380591aaf3073a3031306b76f062dcc547ded23f6690293c34a710e7e9a226c3 + +Msg = 543c374af90c34f50ee195006d5f9d8dd986d09ad182fcbefa085567275eee1e742bfe0af3d058675adeb5b9f87f248b00a9fbd2aa779129123a5b983f2f26fc3caf2ea34277550c22fe8c814c739b46972d50232993cddd63a3c99e20f5c5067d9b57e2d5db94317a5a16b5c12b5c4cafbc79cbc2f9940f074bbc7d0dc71e90 +d = 1f0ec8da29295394f2f072672db014861be33bfd9f91349dad5566ff396bea055e53b1d61c8c4e5c9f6e129ed75a49f91cce1d5530ad4e78c2b793a63195eb9f0da +Qx = 09ec1a3761fe3958073b9647f34202c5e8ca2428d056facc4f3fedc7077fa87f1d1eb30cc74f6e3ff3d3f82df2641cea1eb3ff1529e8a3866ae2055aacec0bf68c4 +Qy = 0bed0261b91f664c3ff53e337d8321cb988c3edc03b46754680097e5a8585245d80d0b7045c75a9c5be7f599d3b5eea08d828acb6294ae515a3df57a37f903ef62e +k = 0ac3b6d61ebda99e23301fa198d686a13c0832af594b289c9a55669ce6d62011384769013748b68465527a597ed6858a06a99d50493562b3a7dbcee975ad34657d8 +R = 0cef3f4babe6f9875e5db28c27d6a197d607c3641a90f10c2cc2cb302ba658aa151dc76c507488b99f4b3c8bb404fb5c852f959273f412cbdd5e713c5e3f0e67f94 +S = 0097ed9e005416fc944e26bcc3661a09b35c128fcccdc2742739c8a301a338dd77d9d13571612a3b9524a6164b09fe73643bbc31447ee31ef44a490843e4e7db23f + + +[K-233,SHA-224] + +Msg = f23f784fe136c9fc0d169503d361e9c6148b0f1fbdcae0a97fae1af7033ddef25cb7489c9963cfcb009a8cbfe44a8510a64a073eb1deae4c324ceb9302008c92c69b2dafcc9077fd3cc3c7c119edc3ced36d176ceaa55ac036bf7f07f6fa215e8bb8196e59a5e1c9af4f98b90ab4970885bd7015fa26a09e03c7cf6b4b23d929 +d = 04c1d414696cc3657dd9df73ace56eda2636769ce7082e064c260be45a5 +Qx = 1f228c0a75b057eb07fe7ce8223ed4163148c1fdab61e0f787271f836a9 +Qy = 0cdfa5655d96ffd5ffb6027bfaa04da7b5d8fbdbb6202c8bb79f056ce43 +k = 058f8511089fcd59324469f6736b92693afe26bd4719e198f1f2287dc5f +R = 016bafefb4933ffd00bd1db6d6c4fac8a06375603adc0aa2a5664083ff4 +S = 03bcb84b8f1990cfc7b88f2b8cc817105cd8e150808e7c87b310cdc47e3 + +Msg = 400bcb297552bb37f2f8135a9314a35f5126788bb6fa4dc74152731ff64c5dab4b902103d85443dec20e16b1d6629930cdc2bd183d4099f0e96295a63c2fe266f5e9d050c401a8681b4a438efe53cbd8f2f43e2a31e9f88926a9c82917d873f6e8cd5ff5eb8c1ca36126b0bfc8c2b0e85a7c9e7a45f1875ca9c82019ebedb729 +d = 027cb1d84865a16992476c9e353283d5d6a40c349a8e9179d1b1f403531 +Qx = 1191227d064176f4ab020faea61330df5eb59163ecb4ea59c23e6f1f6c8 +Qy = 12dbfbf85b3624b9f56446f840602f9b839bab1368295b3ae919cb07c07 +k = 01a41af270269be052a62a9879638e3432a1479b05776ce61f45c0c361b +R = 041a5f1d28b70bfa2925b9428ab8bac9fa174d88ae27d754824c7d16ead +S = 044d359065672b3d3dfe8389fbc6fc751ca6a46820626c466174fb9b922 + +Msg = 5f74d4b35c49fa454c97c05fdb6b9f6822cf1a2295f15bd766dbcb413d77c910bd8f4147e8f317fac2300fa21cb80134d1b6f8ae8e50518c1f648a28506e419f5a6e8f05abffdb3dd2587606c7e9c223ecff4f46b121216730ea13202b59128a7616bb2fd23a7e4a5aa08641cc07b669641313febfc88d64d99447353dae3f06 +d = 031b443f46c4b5224237fac1022ee1570173f664aba0c84dbaa4246bdc1 +Qx = 05f57b0e5f2e175006f4058cbb4ca9a0cac912c551ef1b94e97498fcc5a +Qy = 0f3a554d077b751478f8a2b7c2a9cf15effed958e0ac1a9e3db1e023c5f +k = 07ff6ef3026c5a960e632beeb7313b3bca0baec76cea1fd9b82cedc3245 +R = 0099741698549c32a4e86aab6194527cea703ff869849c538a938585a83 +S = 02ad706c6f5dcff512498d84f1877eb997dfbe9b3d13b339917632d3cb1 + +Msg = 8f92096876d9f81bcd992369d42d0b5877ac969004d17c8627c58d8b8b7bbf7a37e8cb6afa962b9b043bbbaa5bef4a5ee38d8bd31cb5866b828265a2f4102a616f87009cd346fcb8af5519fb577c60d8792472232f33dc615655e53d2b715b15a2697b492f108b7906e1e3597c6911f8cc30c7121ae338a6b747ec368f8e4a36 +d = 048f6ca29f35f253a4962734357c995920967b9eeff1ba5fd2080bfede5 +Qx = 12b7ca7c21292f8795b2fbfd63a28c5a4ec8c850d6240f973c903bc8170 +Qy = 1be9855e5c5a5064c27d1862010b2fd0d7be5a0180c861a288ceac89d6d +k = 07dcb9725323fd7668991ce9a907b7129d53fae9016e253c53d057d195d +R = 0498c4fca6ed7c2998347b464d3e562a74b0e4f3a6c1dc453aaa61bb710 +S = 03a77a13f011404d5c5341dcd2ca44dc2b08f21f09f524045c281fb221e + +Msg = 3d275dbde44494c45fc15fe89e2ae32aa26426a17e923e895c7941a5582fb95df4d49873ab1bde358017f336b911b886b626b744806ab8113418473c441f1964159ded1b12122d53ac56573167588e4b55f36b8bca8c67823883a51fb6e7f204d1c6b07ea49b577bfab9ca6b8d51f72268b022e3a4db6f9d265ee8382f9b7b66 +d = 019b940eabbe682f961d9f3d90432e347fef3910e641656825d775705b1 +Qx = 1efcc9f4576047c43eab1c13e0547b1c5ec1cd2afd2345fda72b5e1b50f +Qy = 0c7b5968af47e58f4ec15c0cd82ccd0b9f5bfde06c7f86fe5cd0105d693 +k = 03f783a94d1de73e4593f5d6d02238cfa0486e3ddf2bc0b95a528038e3c +R = 013c467531f3f6508534ad072edb210e4182ce5a798d8a46674e92a0b4d +S = 0685982aa8e2f3e46ecc03e00e7323f3b891da437235cfe9800139ee8d7 + +Msg = d2fa68e1f7dad02916b12fa38f1849d6d409dbad0344438520b4dd9b77d62d39ac9ae3cdeab03ccbcfd4de703c6e798873671731c108f322b9f2a68145e3e210c9b15b879798e5c53c5022742e9819b99edabb2f44d89ae221f7a99dc84421a6905695ff91928db608f861745f17584d56e34b75c47281435b1b0b34e490692d +d = 07a884b22e29fa9fe945e9ba13c0df8d786dc87cef0f77f069e182dd56c +Qx = 11e831647d0ffd53d75e44abceda753ab470b3cc93b457590617d925a19 +Qy = 03db5bd0aecd6504d904bcf9dcce131abd239aeadb9a64a9811eac823cc +k = 00241b763c6245b83afe61762b161c41467ef35b7f27a9c1066f02babd3 +R = 0514adca3481ac5f99287e6e966a5c223296b07a9456eb582ec5568688c +S = 07ff6a2f7cb1d2594a11d8d0adb6fe50b4e740f025e7b4333ee26163d92 + +Msg = 3830f75cf9df4eb2998c7c1b5fe11c1476bcf849c3a8fa7d3d0b5bc2292e5d07465ab8cc9381c575d909e509c5dac49c78817c04e4bef18bd51bb09aa5897f21634633a5ce6d20bb4638cb6c3927351eaec7b62cf4a33956916045c392f325adafb10a88a5f86d7e41dd77908fa7284210071c22aa40ef40da6339c02da05392 +d = 05da61f881d5a0dc085bb93764f584352882923cd237d878220ec624c1a +Qx = 18d740441eff1f785a14d04da4ba69540cbb469780ffd36e1dfae4f1de2 +Qy = 18072ab30e999ae26b872ef46a9a0604296d02c08fba9477d9e03f0f75d +k = 000f95c5678fd08dda790cc60bfa578118f8687228a2ef5f31e71a6884b +R = 074a6599b8cab75e0cf752e3f41288fbc673d52074950edb14f76524949 +S = 03523804351e3224e816cd4fb7191f332585f68053ddb32a85cc0fadc03 + +Msg = 65b9fe15e6c35d453caa6bad39ee78a720a04b60d8a0a0f049186d2f777e48ae2d657e174df53edb7beb9f7d8f21904ed674add0cda5b62a7308de76c324a144021e8c6d387daaba4ce48bf7dfe9c8aeee2c64e434ece1fa5ddcafcf3e5d0013a1eeec1742a00d384cc2ec0d7eda83bb4dccfb0e57045ebfc27a4f404d03da37 +d = 03fe9f04647f6d82b13ec1ae5a8c2e49bc66b05649ad778eb16149ad83a +Qx = 158eecc6b8918e7813ef990217c603b28ed1774c740382a8af5c9af6133 +Qy = 1bbffeccd41107c7e6f83e24c822d634a7ec064fae125dc8a3ecc4fc9b3 +k = 07731edfb3ef523a165a1b5817ab2805a5cf88043c98ea2393898e19551 +R = 01fa44fa18ebafee6f419fdb9de0e8365520617558b57e9ee89f2c8fc88 +S = 053f1b2da4cabad04fea1111d525f341417587823fce71e5bfd2353c2f1 + +Msg = d26521fd41eb5d46ece6836e188bf9cb1b461d011c41e002a935d256654d01725378e845920ec4a7fd3f379df54772493df50d312c7c6aa4e909e7b83f2442c3a5e85c37d68aa015098ecfb0a5e077370f4576f4bc63bf37e1dee06d780a3b6949af5e21c2a0960fcd20821ef5f17bebf5fd5b3bdda260842cbbfad45667287a +d = 05ebce648ace4cd555413de6a456fc487d14bf4b0b9a72311ef480d2f26 +Qx = 020b46ecbdc36b4dc01111932090ba185eab2cdc4fa89775f2a6177c592 +Qy = 104cac1c800103c79642321a216bcfae497b037b29888cf9f70c507114e +k = 027733120626e564b06ba71c4946c9c8bfae43f88511ec6352d2a52f407 +R = 0592de5184510e6ecb7be8a011f862470b918354a1ad82458cf716137fe +S = 010a9c5fb6e4b70571a35c56744b57baf0108728bea2bf639af1960d1dc + +Msg = b778c021b1a92c41dbd09963da07018075d73e54d62df5c2b7bf8abe137151650d1c1c6abce7eebd8f32e8c3e6d1433773f257bb3ba4a4fb6a02c0db1e47d03c27d3a90898ebd1927c21df24c4c5443ca5b81f8ef2cc0f5e8b3d08f472bf07085df737adaedec63d99acd77b87ba98225f198b791124ac2d9b191cb9251b4b00 +d = 056653c2f85593f789a926ba49fa3da9d7f946d8f1020508c5a527ce813 +Qx = 10d65f6f5415dd86a83bb10118abfc1b1670a1664eb6dae99fb68b85019 +Qy = 12c1e673e575086ec1e76b90d59c2cbd2727f726f88298552b678ba7e60 +k = 021e26c098c9f9da9c782857fe640ff6abb21caf20a093f2277845bd10d +R = 01d67cbc8209494dca1a74cee5d9894f98f03728214f7bbdac29b0c0e78 +S = 02215f758fcf0d8dd603e79658a8061ab45bfe6d854e52ea7074fd5654e + +Msg = ec14e07f615960015a489ef999e308b42a4c571473b9bd64b433dabd9a1b1ad02e33eee9100064405175928a94543a80f440040afa2965b4e5f95f768e7fab6d3c0a5f5e1bf1df7822f78384e80f2955ea85f044ac60537d895747979f935bb0cd3673193c4a32dd7803e48d7daf70a71bc2aa97236615b6411e28fc9a652145 +d = 049a91d320783cc70a5952c32036cfc75d41f1aa84127db2dc759fb291c +Qx = 190528df8fc3ae4db6e12930f176ec9c833d1668ac5808f1046366445a4 +Qy = 1f647d55ce80b18a9add47fd1a8e4aa725297d9da03246f5c1ce503dd56 +k = 01eb80e2596d6c01431e7a4fd9e22903ea85547a31d675ff157a789a137 +R = 04523776d88199ebac2f96f9faa434bd81bde770ad4458ef126fde9198a +S = 054665f31f92f8897482d34fcb63141a7539577037c84496167e9d3389f + +Msg = 89c645339ad0eb850e4e2fe583cee175b35feb02ed7541d7e9aace24cdd3939584f73ad39526de6399c86b36de77a018e2c70b532bd0f032f9137d10480acc30c49f9baaa86f9df0033b77e98b485bf7a69cb5c281e527d3ccd1fce2415f0dda4a268ce68a0a34b16afda54ed922cd6810ac8dc766df2a3a6c5e55972e9786fc +d = 016a20016602fc7088a60469843e1d29ad67e3c3cb9500b1e2a00d4050a +Qx = 04f157541dc3a8bc8a2ad4dfb3933039b67e331b7353a2fa9ede322f4ad +Qy = 1348a7b8c9495bcbecd556870715faf3d543cb8f2368805473bca17b82e +k = 01df1ee39217d7f0d838e8b2d30a1159d8003b06e50a00d637edf08d6d1 +R = 045d16826bbc425637e7a05b826bc907f7453c70141d1bbd2cda63dd490 +S = 01ae1703cf179dfd1d5407ba2b7324cc7cac15235ee9c3756177444e122 + +Msg = ace14c4b101d2d8453c2bc22b756af016b5de537df9c3e639d208ad04ae0bf6232dc90b90c33228dc85de956db771ffde05fb4d0b15e4f218ed2771d703ae5bf981252a5bcd60c16f14483131a481cbe04dc0adb1fb8aa32cb48bb5008e8a8e5c7b7465be2fd7afbc811cf5ea6293b1a464669b49f55f57b93a8707e6042fda6 +d = 00ba922149bada2551b7be1c3df076f3f97ce93c13c50c285fef3f42363 +Qx = 12daff2cfab994b9d1d1ba73bd2f8e7883b2d92f760b0d16351ec125fd4 +Qy = 115666f7c65b95ec2d713c5ab1a3eeaaf0f931b1859733416c3c778aa2a +k = 07fc7c9503fabba0972e0e8892ec6331e0812c6452d211c5561fde79048 +R = 06477ec9d8d8d45418b9efe7ae47c0863ff94c43d8f392c079b870a7cf4 +S = 06b5a5d020b3d980b9d7880130802435ddb4e7362e36a70d193f18a7fe6 + +Msg = cec2ba0d1772c87e87d5bbbd67220692bea4301aa1a66e8dbdd7e651d45c26dc2a0d45cfc32c34d76ae3e1c61db7b0fe1863457b93937d929e6ece7462ebd16adfd708353d6f7c27aafe06593c76da7149b0cc574a4290b0d8fe219f3eada7082aca38dba3f78ed0d5942d095fa5556fc8bcef331ff0a6d5d1f4e6c51d4ff5af +d = 02d635e12a58cc6dea44e71e87c37f91e8d08659f0b7955d24f65ab55ba +Qx = 1dd33d8224ffe63a32f2de5d4fcb0e5f1fca7ca2ade5b35ffbe75cdc658 +Qy = 0bfbe9dfe13f99258c787af82631ce2133dc73207c579b29869c7463943 +k = 04ef333049c575d6688aa04f87a6162185e4a57bb752a7f903e3aff86ff +R = 01ade04af08ea1c1877779fbf6335156b1a1437f3e449f07458d700c67e +S = 010fa82467d39e5ad51cda8fcedc72ee6a78dccd0c90544814e53ba9cb4 + +Msg = ffa13cd0f51ae2643d5d4edecb493ddd653e9faddcffc370e7e958abf726a5d67a2ab36cef42ea8ebe22a6f01b9c31f6ffad01e6894487d979acb5e618f765ac0ec3550ac5dbbcede8f9fdbe52fbaba5c087ff382b6d7a09b2b5084227d324d98ff98793040884799b96d2ca593201f4414f18c43b51c53c5e5059e0641aca02 +d = 0073883e5064e06814fc4de32e15f7a6cf825d2daf6eb1df8c83e25d80a +Qx = 00d3c79d627ee0d2d88f2de2dd082112c20dbc5ed66089454f7b8fd9f81 +Qy = 1a2580e779753bcb023acba1b0852492b989c767f664c7047de8e6689fb +k = 020231e05166271f47a91dd883c580ee313e9a07195ae511f0ee62173ec +R = 0303eb4a0df97577c4cff531b3f54aa282e76669c0c5ebf4c9779c9bb82 +S = 0692432a7dfde09db7743f08130b3d3327dd98cbdc323627603518f70d7 + +[K-233,SHA-256] + +Msg = c73e3dbac9513d0361dabe94071faf03a11cba18c06d131a172d5f0125b01a5eeb6055bf72c7106fe3f4be3bd2b1771cbe7f85366dccfbc3bac20538510c3f51179cc540ddafb2f3b05a0d276899674ab1d7d8fb4f6838f04e4f9e26b8c6af31540f63f4953c85840af4c57dfa78c704f637dfc8dd750fe45e2c1e149986d127 +d = 01532271bfae8d4dfe60f69b88d3006d58e28aacfa701861cde8d624db6 +Qx = 041c1ca965338976b4c45c28b1cb64836b3b4d3e7ba2b1323ea26fbcca2 +Qy = 1a177d042fba7903007db122eabc459e37c2c7fe82e42752b267fafe4b0 +k = 06a54894825644901baf2ec3681ce5aaf93a18757d93ec9cbce7ccd9d65 +R = 03edb77fc7686b520493604db18fc69edb4cad8195a958e27ef289c4bac +S = 004337ecfac57abb9271909aa43ff4e32851df7818dcd87216d051189c0 + +Msg = d00dcd0f3212a3167403abed91c20e76f5e7a7678a4fd970f944d11e6a8cd149d0aa6fd3164c5a74c0f55193a4fa3d8ba6f99cabed10544625a7bd92b3e0b46edbd4a269bbc10518c5268c3910a2aea567ccd32d4c7a0cbef09ea42c20b636d1f711d220e23dacdb9d1146e0494401349749e5ed88e38295232a7effbae3aed6 +d = 0550406c0db882c6aee6cf3b6baf377375208c3e90cc44a067cee43efcf +Qx = 073348eaa8f2885fca3baf31830a2b28bfe983e3046418561f62ac5d247 +Qy = 0033de5aee6d0bd4de286f1de1e80bf72e5e17083032bd4dc24577b6d2d +k = 05c0e7ad0f9bbd522c862326a5734a766423fff7efbe57c51c315fa574c +R = 02103f1a0200883850b6476c7d7e7d2b3e2f60923d028ee6f8227b1ec48 +S = 007cbbc3c6295ceafb3d9cf8411f85a045b11ef8472c5ed45346d26192a + +Msg = 3d36221f87157ca4db84884b8666660c4e2b6af330480c516cded9f3bfe132543626a39bb6aed1964eb5c33ea0b95b9841665417679fceb95d199d55accfce35dd3f2283c1a7ced57d0c4b9ebe3da6e1ff2f979b6440db27caf9f6a4bbfa47e20d29ae304f4d0551fce9cc4097eb2fbedb9b24680bb17d207bdccdbe799d5b0d +d = 0257dc63752920b6854d6c2d1cca68589a38418c3d036e73760a12214ab +Qx = 11a42e9f66ecf030d0446cfb751136347d4df0ee4e031058ebdcc04df80 +Qy = 0fb7161fac8cc5ad7bc4477a39350e419776f76f184e28abce886ae9cc5 +k = 00391d36c4044896ddcd68604d5f677d1df298f46abc00eb12f1165e8a1 +R = 04e19bdc6755a603085b66355256bce98d5fdd49b4f06b628e3e185574a +S = 07697b29ce5546de969c9c4bbb5ea65f712d6cda3410f3dbfa0cd5b1a8c + +Msg = 033d82a42d0eddf58fbe3e91ddff7190e3f9fc2b1e2eede977d2c0473b358b5fce1f981ca6f88fd61ce2f79e453e3a2b77d1baab2b970ed28d5dcff58873a620e195085e61c4b8480d829525a1a944e8a4b63352f0291f0311f1f98ceb262804beec1c74947618f8e3b067866255878c2502966cefcdda4f5fa2b13d92ce7840 +d = 029025352297a7be850f8852411c09259b83219135e0e8949c1bd5b94c1 +Qx = 184345e37f07077cc8df5947c1b1fcd8404b3c31586d6ebd91b240cf42b +Qy = 19dbc9091a5d282fd6e62c34676a06a425e098567b990c47e61ef14d77e +k = 02b2663a449ead3f8cce2459e04cf84333376624d994fd9312401ae57f1 +R = 03af223fd3a6b6b240e59dca83ce2477a577494438ddee3fd09632ea67f +S = 0606576d89f2094572f0bbcb58a15d9a4bf10ae3667d4e35cdd8da32102 + +Msg = 671a7c81b64b2919722d7b258bdbd90165bb757b53106e0af03d0eef27452942f40cf52bc95cc7f6567df2613cce795f8bcfc723b2735efc35375c001d37c58480d89343697146b524835df3dbd333f7c06c98e36d3c4592ecd1f34ab57c341bb0f4c785f5b8372775f74b4bce60763fad1788e77ea158d735a64861320b36c6 +d = 02dc82d0e69e498528925c0e62a13fda9af8cefd047c10c3ffc2e41da3e +Qx = 0e5463926235ce53a85b489c3c278320ed986003962a5fc7ad4cbab0d9f +Qy = 1453e6edde95670a4653186ebd8246c28a94dd84f5a669bd3293176f1f0 +k = 034a8dfbbdc98bb1d9b175600bffd866306dffadcc4bbb6f24e7f918da5 +R = 03cf1407445cf1a619a280e139242056c23c58979f0b3f0aa7e1fc074e2 +S = 02e55f27593f2c76fafccb71493f14daf50073b35cc85f002528cc6d691 + +Msg = 0ef677f4799298f4aab73b7393598041f56e902ced1726af49657b6601a06186212e3ee8cd4bd33b760dfa2ea3c38884f94358d51dd479f2ccc8b0b352fa4e44fcfdcfbb24919d04e6ee1108527b8e8d60e8d1b467c30c18c5455e5835d483161d3fc26b4a67d6df9e3ddd9331247cb18450188752a1ca219f3396a872cb13d8 +d = 041535fff5d279bcd744b04e643458ce20b81df8a9e01b1181d52bb14e4 +Qx = 021e1227457be78e49db22335139a136ba290d34871f90ab5e6a8db6ac1 +Qy = 0df43b381a4d757864c39ce8d0b64d6a32e9e8be30f92a10a252d46a2e2 +k = 03019bd459b34133dc7331caa8976bee67f76db3a45b1793cb545e26c68 +R = 0025611bd4e3473aaea85228b2bf37eb1b4458d8166012aa098d9c1cab8 +S = 07acd38506e984fb7f1607b50837018f9b4246623dcfc9d7aceb486e76d + +Msg = 9290df0cc50c3cab6655f3a6de1f4cf613d9bc06ea7c99f38038369ff2fadefa57a3c7ae7940c1b98bb1d03503cc271f7a891bf38eec93c31dcec7892dfd2e1ab337bedde3e5325ed8d9cb7fa3096f6fafc3beb3a66cba66ba826d1032debfb4908cc9dded8c0099c85072daac4373fbc428fcaa9a6da02181ebc33f0cf926fb +d = 000ecfe580a624df66c25e87e7689fc3b471d205970ff9ab51a64aa12ed +Qx = 02ca7b9c98bb8106ae14a87d5f9f7ae1f99a5524992116e68af89da6daa +Qy = 0a2fbee769eec313cf3c8519d3f96167477f0f06dcc470408e3f637b6c2 +k = 044f065c49bb7ff0772d628104bc2e222f1fde42aaa8b9345d324d7f936 +R = 046301f3f07922d338d5b7d82104597fc50941e4bc0a15ab5e0408f9fa1 +S = 03495e335905b4842b97f00b344313ca7d6a4ff60cfeaa5d589e0a31782 + +Msg = 855c7be75fda372f062709827f333630acf28954a62a5193ff675f0dfeb63f32bca418f7cbdb346bf388d62315b19a592267ca407120db93d4e3d7125b867c4c4670b7a57a76f61734cead2caf2425eb9ff0a63293e8cd6defc9648257b401463f4533a2425e0024f1ea93365eeee3c6da20d25928602ec8b426f9b39f97f3fe +d = 013c72c73358ffa168423149ecdd897f0a5f75a641de008649f00134944 +Qx = 1c70e1b6c01477f95e718f193e13c093b101e9f16024082ac699ed6ebb6 +Qy = 1f8013a88264266cb5cc5bd38e477fe0a1aa49ae4a5ff94cb58439a7c1b +k = 07ad8a117f34bf2fcf7d689b8124e08118e28ebd172f8c220d57d3f0b88 +R = 012bc7d380192f2efe55625e39927ef799993af9451c662b562a239dfe7 +S = 035961b27e88d6731220f70e96d555f63853d14149df7bf6d24fc29441d + +Msg = 9c896f800281812ed57d31623d563377a5c725cec84313472b90e73f77d400f5d4fb236255741b73d46f7e5254d04099bec274db8a9af5fc7cc220d42cc172cbd3c3595c49ff74bfaab7b5e46c90855b611f74753ccdbbabf92e011d52e9ba753b83ed2a251a632e1bd5c6d346e38e743950c8ce0f394a837028575fa44bcc26 +d = 00ac60e2e70b7c4cda64071c7738f68773c94df9456a8ec3bbb468fa7f8 +Qx = 00109614a2ca27b7a749e53777e0f3ee2f57013ee83ea539ada6d98d8a9 +Qy = 05668f4b27213a8a024455b398de2cd7635cb620d7401f5deb4fa9ab2f4 +k = 00098489f0966e27555268a94378b7b8685ac610fb0964694aae9aa716d +R = 06d151437a0aac232a472af038b0fac095d224ce0e5487510e30c31d605 +S = 0563dbfd021c1b77f980530d0120e93c9ee4f1f092a268bd8aba7d3110e + +Msg = 139a14ead998d1a962fa47c47ef2953aa136bd912fe940709b8c560bc2a0c4bf8f3aab30a8e21b7d5f487d30b0097e3da723f11b5cb4e8c5724f5a2fe0d68ee4bacbb85e5eacf18094d2a8ec4506cf8497836a4a905059a998ea750adc54c27c69cbd0b0c1f9743a62f3d988f3fa0a9865a73fc071f526623085a2ef12838888 +d = 060bf720052e8b9508a801340c213cf53bbecf4975faee63d4b44fc647a +Qx = 196e37671def44b35c9e8c719130389b40c7ebc0ed5ae354dc73e0c40c7 +Qy = 0d3fa0a45a3cc5dfb61085290f6d18d710ad5d0d3ab31ce65b0e6915a72 +k = 0729c7e1de10e92634857a65a2ed75103df6bd4bf63b1ad6383c37a0435 +R = 06808491ffebf088476de7daf541bca3fd943d4c2089b848a130abdc0d3 +S = 02c0dcfff06a07e928c15a1fc2aceaa4b4dd6fe8eb67ccd4d01240f249f + +Msg = cf4a8e754b23d0fffc1c5c80b0cb11deeaba3064b315bc2cee96db5b9881baf90d30af4b69066f757b3020706def77a5fc1632d96bafba22a9c8cd3b52d535d941b3c7cc02b7fe6b51639d5e2084478ab3a29d2f5e0e16639fc2833a47b58e2c3fb5b2ea1830fe2ff68e571a8f281617a23d9a28db1c64ddfb1083d055030e5a +d = 07cf3c216592febd8630a478b5b3e3a605084020322adb13ac0a626bc7b +Qx = 08eee2ea13a08d4e4d71ecd2547f6d80b8f88879c9edfab5a675831fef2 +Qy = 05117c0d8a0442ad7b95cac1a984dfb9efbb7eb3c3866955da60e6cea8a +k = 038de0be25c23cbde9ed9fb259cd9a06b69bf15dafed723970dfcb91307 +R = 051c9c5fe50eb81a11c8e7b2db145c6b5dbff2c51def56f4981774c357c +S = 053887c6cc2f21bff461c9182c17f634ee2b301c3cc4af0bb1d3075f74e + +Msg = ae64030d4af9b36c8d3a6af0aff34e5ab201df04274691fb420b7d5c40c401ed7f3ade96065d34f2490d17943e27156e7bed83cd7222d0d5a73d167855fbe7ff6c3ed87f20986ad8bbbd80fed5f9705c6c783b423f641d40ff1f367f9648af5a79ea3cea0236997558bd9dcb011ea4dc64d61ea1e1f85b4f696ed586bc7705be +d = 061eda5999e5a9ed4485d2a0ac5510549b76ca37df858ea5d95aeed571b +Qx = 1642d56359cc0a5f261fdc405030d45b0d6f9c08a182d354bf2687dd9d5 +Qy = 11bf0dcbf62749a99e4b02b284aa7a6479b59b363d25319a5315423a589 +k = 03094fac5381a1b31e53f43a537d9e22ebe6bd2c149f2f69d792bd56f53 +R = 053c8c4f9a30e0500e01100bb97c00ce98f5cc6578686daa1bdbd679373 +S = 047086a88ea014f06d6345608bd0a6010e650b9f6f984b6efea9a4fb277 + +Msg = 94a9d9cd9efa3e4ccf2a37f904dd9cab5624ec9393cf8816ea591c5e70cccd2f105388ae133708fb974998ae61d218c71785f9eb808d1c28d953cc7eed00dd9854b6b4568c5ed5ee3df3b58a1e04c64f1c87fee4365ec9aa41b08a6bae234dc43a0bf2f61420acdb891a40f17f246972afee75a4c0b249dee0fc8f9b9c8a243d +d = 07e7e73171e4d2f2989dc024757c186485435b82544a448f5cfca05f281 +Qx = 181c8cf579d9259020461184979757b097d5a94245a2b9a1f8a6931ee0a +Qy = 14baf1b761a0af3dd9c0521c6489f9a778da824283c94087698daa7cf78 +k = 02b57fabe6b866fd25ad8802c6b02b680c137ea9b623457b35a24d5a5f3 +R = 07421dbfa83859354345b9c3f1ce6242605094d924a4d38c7bd952e3910 +S = 05ee48a3a5119bb3433b53a625101492216421ce67fc04dacf947ec600e + +Msg = 4db998df7b90678b8aa4ec6233c9b4629800ad1f3e2cf8f7afcac62fc6982dcb290e44587015eca8dfe77dbb4a80f9bffe75b11e961e70deed14555db6dae47d49e73004f000eb8677c18f7e8234bf0a5a104266167a05ef07152e7acc2f0368b37efe69c0c2feb51eedf7338cf9ed398f066cf1f66bacd89ab9376d41da35a2 +d = 05f7270764a0444c7159d2db867930fdb0fb9fa6b8fc80ca02e11753095 +Qx = 06806c7164a09e11629e16608b7312d9d988acefa626fe8e34e03203d11 +Qy = 19c4200c9522618dab8a16e217beb3011599ed6cc09291fe9d451f0cf02 +k = 04a8958c80481a18c6e0893da9ab2d48fa6ae30a0f1d0512196e658eba0 +R = 01d301da51eccd15e09ce0bc2d0bdcb215a43ed13792084e2969260d46f +S = 031f96a2f322d27d0bef23ba7c457fdc45a6e612f7d13e9277d36c8def3 + +Msg = dbf9b8a4ae316bd2df0c80db1cb5d7038364a2634925ff957d7c03511b57d486274b2ecf191746827c325a14dc94daacd66ad86d369e3f598f176c4f0eadec7e9edd13e34043efbe0a801b75b8186b4a6d89ceae4fb250ab570d65b6dd7c04382738fe3f6f6c867a7d84b35b20720cb0036a5d81a87126f236833831d9ff00b1 +d = 0179b924afa4acf30ecbe2b3c12de533a1f9675687876a7e5e5ddc8e03b +Qx = 175bf95ac8e768727d3b4a74c2b8a04b221247a3b8386ddf35fc39976ad +Qy = 122f32f941066150c151b9db92b86f86a10cab0828a77e4f0d5c4026540 +k = 0210c75a63699b424585f65497c6e46988c28eff3e0977e3ade599581dc +R = 06087e46c0677e3ca64a0cf030236583935d0dc03c896685dc6e446d9e2 +S = 0252e42b8f03b085f38c6849bd420837d985c9fe14750a654b584c4cc5d + +[K-233,SHA-384] + +Msg = 986d9e5d636526f4deb7545c037fe81b09c74496ddb8e42e61650c74b6fe348593f0cf8f8eca5e839baf62f17bf6ad96ec0c71dc44fdf11259dbfe7499157e402f6bd5076972354150723afb632799a990c44cd0a4fa9609ec4db133e3b4700be3ea4a338e8ba1873d345e80163ed60d0de274d7617a8382980bc2138b0a2a01 +d = 02c9eb4d392d7f2eef606e1861183acb1fc753d666225f0f154d9eda147 +Qx = 0d58fd7b5aa570b1c4b2190ec413fbcc9ef44d33ef191b6e23abcb38690 +Qy = 173e85377bdd8dac58222cd1d0f7ed98d73d6fb6c2eaf34819b08ececa9 +k = 064f9fb13784c99185f334700ccfcc4ff60b7f4d613c3de6dc5d1b8dd5a +R = 03bff54e3610ade656bbe002867168db1b521c49225eb9662950b01955c +S = 01da3fd8c08d8e17692059c669da3c7c4c146df6d3cbeaf34598d28eaae + +Msg = 68d0be2883598bfb1433886aff118349157708690380c42b8919859d96db069c7fde6e117a3669f2cff94a0f1b66b27b09e3f1b24d26299e11552a084be428446f3174da2e0414655bdceb38e58fcb065b6661190862db39c6545dead34a03584632e988d0459659dc7c7c78d4d00fc2aa10465cf24b2410f14e2a62173c9962 +d = 024661c89b77b2c743cc175a6130904461138ddc4ef771ffb9fc2c8679a +Qx = 090383de7ca48f1e71a43845565a9f0c53d2c9f8c2e0f6c4ec7eb6437fc +Qy = 1676582272e7ebc9fd56e1010a570d744ae4fa70eed3e6eeaeb0e0eda7c +k = 05cc5b36c7300a1cc3f624e9e663861b4e296f7e7a27e8f8f0a2d54eecd +R = 039c6f5b484411c434ee161ebeda7aa21b7bb26bde0301d9ff92921337e +S = 02aaae737aedecfd5d53af56ef154ac6430a45ff03a3495a34a5fe0e97e + +Msg = f0ba0407485fecd7337f4b22236533a926cc744a5f06dd08276750196f1bf7ea7984278f789f92dd07e36895a8bfe297ea43d4a1177c0368900e3b969d3083cbe626f0e27e7ab38e185c923dff46d9ba187b2acb9cf4b23ec8eedbb8044b96b5263d956e50cd6240c66d5d96517130c743752404ed09473f05d0004dc5971ff5 +d = 0065e20e5ce534576d7c17616cd4ede3bf4f500894850723bcc9f895f4b +Qx = 01413f6dd5349e94311f1d25e400b69c0f0ea446294eba4bbeb10278b85 +Qy = 066a05055d856621161d4f0e33dac82e5c0cd91ed8aa56e9abba9ec80cb +k = 07377147b59dba008ed0e6b366e511f94c7f7c9088615c6d46f46736b97 +R = 05515a6bdfde3b4b78489194d39f4bb439f58a6b3c3f9e16c8a71590b14 +S = 00778f79083d11efc8ff959f607c4cee7cc8f38b855028ea248fe291adc + +Msg = 3827276694e413c886129c452c9a66e7d09dee84f5f09bf34e4baa308b4627e096c7d45cf6ef45ba1d9a4019a60399feec10fa80e333e2aff1251c85ca48574d9b9e1affb9666828dff5afcef3edaf5e8cae823505a0c73afe76c1bf130399fb06b092ba34ab0ae15ac6c682f9ee8479b065ce75b57213b8aae0f55e4e386de5 +d = 014c85f66fbbd653f1e4e590cffe62c343ba6062df4b271fbd02e5d42f7 +Qx = 18930b4a59a1c0e92febe650347c49e29a4e83cb8c507e30ad835dbc94b +Qy = 0a237bcd130235e34b4439293f15e7a3913d659089e38e5619fa52e3c0c +k = 03c1f8d076fb4fbea91a97800607b2db3fb5a45149c0d30dce79f07e963 +R = 04b9d2c66d8cc55b64f3f62dc629ce8e50ae0bad8a4d14e8b6567fc87e4 +S = 00b9dfdbeecb061a455dd052258f3828d4b7174af972c65bd0043a9776f + +Msg = d1afb8965b48d66b9acb1ece674d9548f83395275f2d8135554cfcc7ceb96450d850dd874529433883709483d0743798db5e0dee955a4f30ba328c7934b8dd9207f3c336cf89141a175ebe23d2faed629eb4236a8aea8300604c3eb7704512f240fda66acedf1494a85058dc6a31bf9531958c332b93cfe5545046876c6b99e0 +d = 030ac7a78593b570b29f6d3d267abb6ba7e5870ee1c8ee4f1ab2f141051 +Qx = 0a409e90eb4314f95967607ea3de9817a0fdb439cf406135262624e7fac +Qy = 04b1dd719434e8dfa5861887736f32ecd635878ed4b9e290c423da09059 +k = 027c4987ff872fe499039b4432dc889960ea8e3f07be42e36a5827b3964 +R = 06829b5e02b5849689d152ceacdddbfa8f68d782b3ae8da23ea48b1acbd +S = 03dba0d2b4400495ee098325ae4450b32b83689349e82a69b799dac2cbc + +Msg = 4f95b71669fdfe5dc46d4b951b085e099de349fc740535175337127910acf24e9a0e4b2f23196ad23880da47b740d77d74fe9bcfdcc44dd7d8d1a181ac290de5cf4da22d5034cda3d8020bcc776dde8cef1786c9ce4d2c2cfb035da61406af745efb7ef1a55f2eccc5000319cf1d6380963025dcea641cfd15a3106751fec286 +d = 06d7516aa040f7d559cae248e485834e8d9bb608279ed4d4f7e1dbcd2b3 +Qx = 127a92888fdac8d4ba9c0243c9aca516bcb431911254bc2cf51883623a1 +Qy = 0606c30fbb9958fb1140643f32c5dd582c2319f71bff197d58ba3e598bb +k = 01104b6ad82327b0445e75cff0efa1281d266a9dfe4019ba2ed22dd6976 +R = 01f247b2850463e362ff8879054d3459b2cbae84b9d4bc005a2ccf4736b +S = 05b3dbdf04758d546e54c43ca5973bd8ceba646a4dd5d17ae5d2f8ec516 + +Msg = 2ad9e17780c824c4f2d1e1cbf19ab85638f2f71cb4fa3518f08085b8b358f54d4f08394a5ac29cbb3cab828c5f07f41eec51e6cd61a5f2cf44dbfa46834370cebdeb328fd3bf681e61011b5c2ebc8945ac7a2a8467606051008b15c89390e111999255bfe28634ce9bc2850a2b55a4af1c4c2f94403c78aba1ebc87386ab7b32 +d = 0137050d7b455f43a8dc2516cfff5a91062c1a2727b27df41488f3dcf18 +Qx = 15ccc90a5f3906469e3ecf7a70c429f5b50fd0ce74065d41f1bd6dccc1f +Qy = 0fe5611b8b1b35a907bc188ad2b1fb7507d1043d148283911af3ad782e9 +k = 04881e879d7c76eb2ee61fe1844567316d7efaef047b96979e6dceb7858 +R = 03799e90bc64cfd7d0246a7fc89a4d8ed0399277cab2af40fa2ec8196d8 +S = 067e8728f4d8398e4e1c25775620865bcc2d4cfe635a1f4c6b7306f6d9f + +Msg = 958773c37d3eba003aa5c489f72118b3022c52b93399e9d8001695664918b86893f4922c7b6e55b1855ed0fd1d8de5dc61af403ad660fec60d7c44bd0102c069957ed804d0d416facdc1a95355ef58554606579ef89b1842f1055cfa2ae118abbc485356824cc09dddb77d0671cb3011b33bc86cac526e3f6bb3293c7bdca1ff +d = 001fd447b33a2ee3595b9f885c290d241422afdd74c3dc4981955a7e9ad +Qx = 0e706408803188263cb149428c60de57ac757f0776e5b27a2d5a859f58c +Qy = 153b5e13f17f0178cd90427f7d608a5659b9e03effebc89da65d59698d5 +k = 0339300c00cf7e8c6195ffb71e509613018e6a417782e4f52704026a510 +R = 0227c80e36e3571e1c783358c9ffed237b251332e8ed05a8d3b454c53b5 +S = 0679a32cee8ae001a18d9a9d0ed7e99e5ae67ffcd54de7b48c62e76ac8c + +Msg = 9cb2c496b1bc7f040228571e005e7e936e48e8f469e295edf914f5648701249a20bff6b98b5e862603dd9f12bb71c160aafe9df02e2e383e9b8a9a9d700f4425ce408feabbf754be543f52204c849fed6c9d3e36e03dfbd9e35c18d7bb2295f1c484a66e73440a0a5aece5fe80b9ade9321ef18cde3eb2db15e4b18e788b0441 +d = 06a061e10b4a6e7001d95411cb31bdea9c84670a59ed61b14fbbb05c8e7 +Qx = 00ad2b726b805919cabc90d058c78896d2dd8a78484c1fec5bd5fb0e07b +Qy = 07e048ddb487f667633d6d030338ded21a2ac5f65373ddcfe1e4a3424ae +k = 013b4a86b70f0e4de6efdafd7ecc993f0d6f231b3d743ee5adf82db1515 +R = 0541c2d3b2c6f0655dd415e327f0ef07b03356f8047117c41e704169698 +S = 00300f45026200b8cc84fd564778281bd1d7e03727c242a249d9ad33338 + +Msg = 9a4bc0a029e97742ed3bca207d5912cb568e4403cda106b00247520ea02008b14c041b8c9b976294252da835f4ff27456039d79d90315abcb0b9b6958a22352672e229665457ec79571ca80447c8ff2a86e6af3dabe7427c8bdcae65e3c6746a56079ce2cf8d22235180f46646a21cd9e86032cfad874cb9c67f882fb037a13f +d = 027ec31ca31acb4d2fbacb49fc085f1261b0042cc755cc97f9b199e7a37 +Qx = 1d521f7abc2fd3b0a10732ed641cc1b7fdd7b49cf61909b215220c5253e +Qy = 019e9095c67af1b89ae6c486c4f9889c3f2994743eafe55bd9eafe438d9 +k = 0151aa44fd97be14578d68f87dbb884c960ab59d950c392e607ecae6bac +R = 07be427f46958538004186d52aa50a0f83d184a9d2f4da2974163854eec +S = 029d4ea73ab5b336ed44556f6944e734e531a5c71dc6c929e7253323906 + +Msg = 8d89e22cf802dc68ff22d43c436c79311e705ff6fd845e77c880f399f403e6d5e9e2b35511553c978171189e288cb2200fd95f84ec5ee9865c0eb9190aff6dacf783ef200e82027fa992741876456472bdf27f2bd8ee55db15408c957a120eb64cd24d299818726a73fbb0697eba726a326719765735b37a2dcff0c853c906bd +d = 04c6f4d88e5a4f4f83196f2dda9dcf2a66eaf94d50c851f59bfcea1d876 +Qx = 1e2677c1305f545472e373615d195d1f7a315f592e26fbbf44c42558050 +Qy = 1638140f48bad525625a87d0e537db5500f034e71e60e8a8c48eea04108 +k = 02185d8ec6f35d5c3f965cd00597d93caf45bbe186d4128bf877ec304eb +R = 075199f4d8af090e4666754a7dac0c1599c207735c0f54c9f11e305727c +S = 008cadf59a224f812d64c2f492e7ad4a923f3463b878dffc75eca5f8fb2 + +Msg = aa1bf5a79e5339fb9ef6c2817bd95725551d064bc5064d6586c5a879901adf808dc2ef7c78ec3b434b84569988db58b5e8e9782b1cbc2cc7c9b68e66f32d4ac4ebe7e75b345f654c7b8a5e650acc9f170f75b7aaa3957cce248cc69cf93faf8d72abc6fc1cfa9ae2d18a7b31ce720147e88e84f6563b2197882fe302449ac5ce +d = 01aa169ea84365c22981bb766bfdad27e373440850569957544b0f9332a +Qx = 1f97d91302c70798e2278348e36bbe01587e0031ac3c422141e3d4c1504 +Qy = 0a95108f6b7ff41546c98f4ea4d1b587a3280e49c6cd0d33abdebf9a1e7 +k = 03c9efc0f72d88168c2b1f7fa1c6e275839303c2bddca136dd19ef446c9 +R = 0639d1a1066465b4b2f443cd9677cfe3bf5bb33e3e9b14cab2d37f4a859 +S = 04582792ba78f782f112711ceaf36f5f0774b92a6fcaee327d687658835 + +Msg = 475664d5e22cbe0da0d0289ca9a666a37270dc71c81cffac91f6229fa39315c1d55f7e0a89b6a7a07df7d391dbdf8fb7af63d2da46ecc3b60110dbcd842da97f98d2b67f562b0364ef8e1c589519024177c8ea079794f271f6d35554c0e9d0a39062383c95721b72f4e74eaafb6fbfbda02cb670a7c4c94f67b8ebc6442e84e3 +d = 04a665b92c0c33a3f8b9eb4b0ec061d40b603de36c87096455102ffe57b +Qx = 0f0ac5238553f0cd74e6f34f7f82563cb01138e5c9bac6d5e7b8b7ad4fe +Qy = 1903e9fd8a5a2aa32913b18bddef20667061f919f8d61a5b3c814ba4aab +k = 070ef25950a795b5e22fe4cf5402f49029c5d97cf9f57f0806c0bbb5855 +R = 01248dcf1993ac2eeacd062f853ebb4b2072357e728f0589258399ea95a +S = 069800eb2e2b3a9162196dbaaf67cab4ae123ea817f223acb6e889f6d7b + +Msg = 9e5397d94465390a82a3c07e3ebf21b515776d18b4463aa5810e6b2f96ca61e92d13e034fa853c3fa45411f51f79df6f799a2c6906e6a5b7896a4576a4464f9e0be2b529a43e1f503fb640d79db6b68f3a3a7deac1b5832fbe86673784ff6db1f8438f7dd332cdd1e7ad9df8b6731aad1b6a72bde52e6bc62d80b8da57822c48 +d = 00531540d94823e19ab2b95cbc6e7492e1effcbabce875de6ba96f53aa9 +Qx = 031ba225249916a5380235220b9657162eef43d59ccab507639e19bcd6c +Qy = 062e85d61366a73b62255c741a065708701c8fa024a15401a4cd58640b0 +k = 05375df0a23646e8033ec9e3ad269e7167a663b97b4f52cf18fbb5f50f4 +R = 05bdf7d643ffde5ea191553a9c99eb42fba9a8b6e2013dcc520298d224d +S = 06cdd9e0d58bd4c5cfe66589ed7c7d15331f3e164dff562b6971af1a41d + +Msg = 3cc4c4192f317e52df6f8cefba6d4cd823c942aaee11b9a0ef5de5c2d181073b7085a55805e9554def8dc13eb978e7396044d4f4a14be2c7605998c062095c929b9c23b2b1b2fa73dd19a0c0af44ca4789f9841fa62dee8a5f91b3cc4b3264f5f67334c3f0772b30bd7431c3fbbf1f34318ce1889b6e8a76ce6d42079a451e56 +d = 022a89addd8b85809e87e0aa2c038593ec277054842854de1197833a51c +Qx = 08e760b282d0ae4eeb2fcbbfdec851468fd8e04c4dec71fc2d5d3a98a13 +Qy = 0849a56b9b0b0a1ede6b9f9522685e7ace3baa57f72709aba705814d138 +k = 05515b025d6196ffdc8bf275479d72b29a752eb3e70ebf07d4c4e7bf74d +R = 041902f9b7bc81d3a88066b03e4111ad8ff4d99dd868d5608d1f43eead4 +S = 059adb96af9f404d2f04d89fb39cf38ba5689f47bda749ae9aa1ecb097a + +[K-233,SHA-512] + +Msg = 72cdef5bdf710978e0aa334b86b8ff4a58630da314eabe98b4d611aab56f55c526983d54d19bbbf9ddba30a84b18aa0bae9f9503e9b222f842f084db83aa39625403213ca321cc0d9c8a136c826e6ea4ec108b913dd0a9ce9d5b8c7e3af53c3876e56a2037ebd6d99f037a097111c837647bedfe4c494e4288ed6427c15969e3 +d = 01df252a11ff97b4421b3a2361db94e908e8243cd50d9179f9e03e331f1 +Qx = 129f011fd5fedf3526f0437ae800a110435db907af60e16912d58523202 +Qy = 08026ed86afa7ec80277f322dfc8cf693089968ed9ceb8c95c930415a23 +k = 04fce14bc83be6f862f06680a32e9a51d1a569fdf1d9b10a89eb9fef4bf +R = 04d7b8d19dd9cabc3c2245a9d2c8431c3151eeb6f49676a865e78c26c2f +S = 0373e69da1fe35ce41ff344447fa7ffe6fc71e28dc68244372745739fc2 + +Msg = 8e4eb88c0b2d525b2c58b8e00f32def90e6dd382301de49e0ac053dbc6b61afe926d85193e2c4948f7402a3d7c614cb2c58e060362b0516a1ba4a7425f1b3d09aa20d4c3c8993a387a3248aeec51e6efa8f558dbdcfcaa13ee08413227c8351e3107e9a3e3ac124224aaea91bfe50c11c1c8ae582e718f50bc5d5c06076517d6 +d = 01d7125c299ebd0dbcc050f07de931c7ad0450af590d0a2d0228a66ac5d +Qx = 13ebde8790a113bdde87c11ccdcbc39e354b193d772921b86657f53f74a +Qy = 0aae910b0e22f1a2505f55fef2eae47ab6d47db6e49190a5469b4b6dce5 +k = 0113d1737bee59f9f477f71f77a0ac1aea86aa67002c34a1b31c421cd7c +R = 066f9871da9a22f07c9b2a44fb6c01ac74ba17649cecc33b729afcb488b +S = 037fad90c288510d0cd8e99e5d930f4fe197df779dfd6088da48986c601 + +Msg = 370fdd80f330311dbb3959666001bba61cdacf20f72f78953d946fa6cba02d24b5003f5452d535609e489b9434f192011f99f918defe877d51349870e7e75502f61145f7c261dbd2a0840926d824ebe9be3c5a77a3a84340aea930378367ed3615a47e3f792c7773f83f91ebea718a05fc62e9ed1d78629b2c27ae44fe8f8d4e +d = 021238e66119844b146d40e48341f522f6ac2f9c8a0b33aaf95a3099a41 +Qx = 1dc3ac1ecb670f867337b752cdbf48bed9f32589366f7c6ba7424af1d66 +Qy = 1e3a38ded8148bf45484ab6b77e0beff759812493347e32d2d54a322a2a +k = 03626adf8e70506e74ea27ce740f7eed1c8b37d50415be6a2681c67ad2b +R = 07a9c9056b51f1fe3e7733c6f54ed96662aa7f5a08a961f91fd6d0276df +S = 05e7600e9fda45bb966fbbb5a9404af961058a128824b6d84d9d47ebdbf + +Msg = f86c4433787c3ec3cb1663389ccf53d62f9425274ccef05fd14b1b8fef676208867764eb98d16d006ee6ebdc27b8d9a8ddd303d941fdd82b630694cdc698bbe6bd524411907834286c94b24ee199fe6d646064277f244b7df3ea2d9d52a9dc6a33d7c8d6dbc919da0fa987a67621ef0829e48310e0ea2bb86fedcf4effc0b94b +d = 015e1bdfdacd87c42ed439f3e243abf27fd42e54f3ebdfb47f60dbae5fe +Qx = 0fb7fa51c1a96baab65fc85c3b769ac84ca7b63a1fe9f507a2ee0c49395 +Qy = 05d450aed449f8f1aeaa9df0131f696c2bcd4528808d2f52b6a73f72811 +k = 070ca3f5dc30c70e576e2d2b30935b05b6e68598eeaafa1bfcb9e156e05 +R = 07e3cdc4207456773aa52b44156801b316a7ac850b3a9e717a9ae7fcdb0 +S = 07ad6de3ba8730ac887f045cae80fe2fb5237a8594e7125c4792d478594 + +Msg = 4117d593aa92e3eae1124ec7482737cd3573fe5f0f2a5051a7ce86946a2abb9e47a0c6ea75b262689b0b486476d2ab09a20efc2fb921419b1811b51a2e15891ae9e45a17ab4b96c665c6c423fc00e2d66df5804a164f0f3c958df6f25d7da6829b1fe162a0a8cf130858c83f3555d6ad627db70cb41303cc6380f7b3fed2563e +d = 00e09410548c17bbbf28a68c3963a52d39743a4f1ac28e6dfe7a6ede281 +Qx = 1f5f36a21a3b7fc5ea37528566da695922d7d9b7e6800af9c1a00f68242 +Qy = 03df4e2ba0c8648cb1fa19663f31786b850e6b80068b8c007f41de08608 +k = 03c0a2a4bea270eaf66adfb297c0e3213254cd87b11edcd90cfcd6f3104 +R = 07b684e337d6778f84bdb7a6835e91877b41d6af4b76311258fbb8339d8 +S = 064a0c22057a858b153ecdf4d275cf5523dacafdfcb46423b5613c85691 + +Msg = 882ecaff3ec8f4023df5397167f238869f78a5c499be19aea85c7486e73f66f0e08e71cf85f3f1b6f6a70796bf46a18e6b555a0a87c2088640ca73051b3dd59ebfef922be0372208fce602d8001681297b285701dbbe24ccb42541b5db4aac1a1c7f407e11c83db15b38cdbc25e930fdc6558f64d9503e214571a435d890169b +d = 049f5bea6e72d98579b78cb07d89f64503f8759dd7a73cd73713c120428 +Qx = 0974dcd68cd85117f363812a0473e972c89551e31c74c8d99f1073eaafc +Qy = 0f306c9051cf3b84803307beb3dc0d34a9758a4f535100e846462a49053 +k = 022a5564b468e706762e3ff934aa22d9aea0bf2b116b61182c9f7be19fe +R = 02e050afb84e1b0591fb64d46dd7d4a939552d68bdb4213f16c5d7ec5ec +S = 063225df0057d5368b2e103eb2181ff5760e6b2a9c13c83da042722c3e4 + +Msg = 99b3b8f876f8359bd6369ce84f9261581c52d744b90261a1427ab9e447e6d833b6b3e89af8dc770f1dd55692d01c8bbc4277a729fddfa7cbdb2ec99133201dde44ac691a77904ca816feb0a1aaacbb9fba85048bc63d73506eb908ecd697caf582747051a3a38ac8930c9a4365f407ed94ca7f2d26913c53f4c010c7ed9d7ca4 +d = 005eaa818690d1ca4838f0bc667be5721d178c3869884260fb230277c3b +Qx = 1f7b3b50167cb2ff7482240bade95f2850a02805742e6e29eabf7f9ad34 +Qy = 0f8038a8cffa0f798a01e333251996662bc3c0ee56d94c392269b63edb7 +k = 064d518f7b8c87325d8edfd42a52793d87ef8db283606dd676be8584562 +R = 07128123004a515e277dd5b571e31bbc877cc966e27ed5b2ab2c16e881b +S = 051d70485148996ec30f92097e4a12b5edf804e03e312072336bd912268 + +Msg = 8c1a83023930a85c5b2f9930521b8b8963d5523a3323d87f862a17d3505ccee01246ee1029b8b8c2b608772c4096d1e914cb398f027d91184a8e94e4feeae121eabb504a2a35c8bc9294edd15ddd979946c14c792ad787dc2d4deffa284830fc90b3f8c0ced6a99fc6de7c41b9ed261402a6b3d702ff86a9392731ecc37430c0 +d = 0603d89cd2f741d734587e77554fe6bbb1e5739d5ff73084d4de8ed69c4 +Qx = 122f2b7802917e4164ac2f54033621c78cbc7040217e5ded6b9217f95bb +Qy = 1f867df743e73806957066c2ab45c04bf1af158e146a9d1eda9e974e0d4 +k = 076850b8ca9e454bdb320da624c0dc63e14ad279185e4f8c9e49905666c +R = 04bc63bafd5bad022fe5db246680a0a0ccd0b50ff50482d3849c92eec7e +S = 07b6d8a8446ddfc64392af0aa1763d45877023c0be9ec78db47efd3c366 + +Msg = f3c9dedd7115339dd3ede7d8d06a44de66bf80b4888ab7bc386cd40a92789042440a13d2cc90dbcacca5feeec1e0e3c51724146e2c4904ed6b05c7b4e9b49d7f458ada695c5d2fc36f1193329b87c1268aa38eda9151430aa0bc004e5d2a61b9390accfc699f2efabfec785eb34f52b1beff1e4c5492e922acc348667d2a3986 +d = 07977b3aba53616dac27b4d74930da23966a88ad98f1769674789c0be3d +Qx = 0aa61b4bd2fa9c61914ae306d69d3ade7d6cf621399e5791dda8a054dcd +Qy = 12e8d9274d5593f5074c49ca34a7e2d64f9d9ccdf42df6087134b811762 +k = 03b8ee56bebb59207e107bb0c16938cab707e425f38b70f0bc918fc1b8a +R = 068502a3e5e51f5481aad31eb6614152f4957eef1becfe3a297b023a94c +S = 07b6b43be63aa79c10876179703b69caf9b03c5401b999a3c5be4737999 + +Msg = d878c4ee0bd6c84652d7f9e68df7b90cc78776d8d1b60f3e4d7465032bf401f1527ca7bfd4a3dd916e13e93fadaa5e5f20c9f47d12f8fc922a9a3aaeeeef294c221ca1adf7df85b888faec8002f17ff202da1be837827619904121167bee2d2cd694a263d9a99062cada3399dcbfcb283597a96ebec129c65e0850ec4cb4e2d7 +d = 050cd20e7eabd29008cc977d0a17e1195d79587b8f15ac2447e15daafc0 +Qx = 01ff23ff4ea1f30663b17d8f1c67ea37b8c5df7009d0c0301db483803a4 +Qy = 0ec6bde92921b83d4d84be8a67a23e1718e575101b93d9a800550a20e7d +k = 041ba36d2e810e47c3de583772e9b5908c257b2aec232d855669d4dae2e +R = 079e96ed1dfc4e31774159ef311805b5f8001203cf37a72921efaf5cbe5 +S = 00b8abcd623b17357f65ac365301a8823365ab948ae3f7fc6a4a0b8ab5d + +Msg = ac3c118cc9cbc8eb3b74d8ccc9ecbd81d1996fb25ca43c8a43bffeb244f722b93c9e969241d45d5b81fda0b399f1e3623687190e428dae077e54cad1eff75ec2f7fbb9434bf716833421bc2634885677579c237340f76787b2eb19b446d56c0f2206099b81493349f4db0ecad0e2dbe85dbff7d7070abb3d3b12ef0cec828af4 +d = 02dbb24fcaf9f3cd5d50d209937f0e2d134fa20ee3c9c2f1fff3dfbf302 +Qx = 0a07240c52e385ecf75525201f9810859123bfd8ce04a5e8f4dc4ec88b2 +Qy = 09bd811196ca9ac45b28031b9f65f9a5c4ec497d995f7dec6eb06dd2874 +k = 05785beb1ff70c7bea89b1fa14be09332ef94b09eebcc9fb1150bfe0d55 +R = 05279bb1b1ad8174e88bec4c723d65eda768c1d08d1c64c332a240a284f +S = 015a90383c2c40ddcf721067b3435915a843f9c4708cc133fd1ee53f442 + +Msg = 700313698cdfdcf0044ca07bf9e5f0702ece7cc66e35decb28d5f8cb7e7e5367a95cc1728a90cc9a53a2b5fcd4702028b742538e9b386f5d8b4a2411579ed9553021a95bd00a73f03c4184a6145aaa367e3af76659d677fe7a2e98f9ddf4aa20eb8d1a1db72c3f5590598801be7ebf44255fd7376d89d998b7068bd1296fdc38 +d = 0047142197d3d43fa46545b547968680ec81688589d1ec8d7c7e90eb969 +Qx = 179450d83cd6dd1609830ec78011143eb64d2d1509ed1adfa085a58d786 +Qy = 03ee40673ac564c6b5732868d0f8a57727150a23c484228890d768dae54 +k = 064f8892245a198c9c819152edc168e69dc7b562ef1f54dcc1960cc7db1 +R = 0293f2f989fb6b6e7cf304faf3f63eef61ab89a626cf8152e15f38bf93b +S = 04948643075cea6413b1c88a9bf11aa176611f56d027f2b165d00d46e87 + +Msg = 0374673e1a685bdee55504ce3cd333f70084dd4ae685464a16924eccea34531663fda60229166478b30193459a3113253cd6494dc26154156252dc6e822552c7c04d790eb9f8fcef2ea8dd79e72f881f7f20fff93cd73ad303c0918ec27c6486c4da61f82bcd55422d16650cc68bfd4b0132c1e7075bbf17dad919095860d445 +d = 031352b49ecde5434aac05f898e6ce4337304845d748f114c14319fe97f +Qx = 187ae6bc9167d9c69ce5544ad650055cb9a4e69c1772322d5722e68e7e0 +Qy = 0042187e9d11a921adafc694b5cc8da9226ddad1b65f764274954b17333 +k = 0761189e63fc0c3b5db92b281e5a4bc0d6fdb30bd14f8e69ca85a211bc7 +R = 0453560e6e725a2bfe0383884ba3b3dd0816d8522d9e0762f781f6b6340 +S = 01aaec4bd98c765e4830de6593280779d1222918d4acf08c8fc3d0aa351 + +Msg = 8b237085f135d6e94592f8d855ca397c8c1028236a3b412adefdac888245874f586d06950ee18118f751bfe26f4c31465ec34b578caa44cf1b7109ac4f6eab7f97ff9699b34271df035d3bf58a2ed4bcbf7577cf8e5792b1945ebb9389b680baeb8518c8fdc5540e192aa4fde0eed0d7c82be2e362b286f582d65752c8db7038 +d = 0176f124c24e4420f6e726a6ca25f09dfa0c5a37e5bf879e7bdd36c3b65 +Qx = 098c37cbd44aac5d5c749524b840fd849652349fb3e02cc8f8fd0a23790 +Qy = 151a9a88da407ae41e52b3dad1ea6031c7a36bd834007c0cb1e2c2f2f0f +k = 022e299985cf289f2fbe2b1b270fbf12ba818cd2b506f642e659cd541bf +R = 0686ac0c09f90a077cb446c910e07fdf23e845487d0333efc65b9b84147 +S = 01688b18cb42082bea69f18511b0fd9fa35da83d738763cf13ef92a119b + +Msg = e3a086ec15574f7017b3cd5f5a47ab7a73980f11074333490dfe9f8ad8926f9ea7c82271aaa74e77133b1025b0b22a6900fbb71251bb6549341a23d194e79d03462cdad52ee0d1b6f5d0d14e1136026961fa3467ccf0864bf7ae3fcc3b68cb35df7324bd9bbe58fc8aa9f63c19feedf19d935b71bf5981c74fb2a487f84e453c +d = 0755c48c3dbaf71042c58cb137f3632e3cf9d90b7b9a58fd378feef3d19 +Qx = 0bd9a720553afbfc5349e4a65a21fed0444c30304f7018ec1ff6fc8d1f9 +Qy = 109a1d6b9cc4fbd0e888d0a2b6883fd06a5da347c0d4f7882fd29eabcf0 +k = 04fedf8785c6648798748504b1c9b6a066ab6606bc9a69534f93e908f4f +R = 001e71744a1b683858444da0d270f43b0d5644424f2b38ef48a639685b3 +S = 07ff8199ffe723abacf1947a828e8596dc49ce655319087e4aca6ca34ee + + +[K-283,SHA-224] + +Msg = ef90f85fbda05e693006e4c64e1dac56223becaf0890f73b5274e6e289a5a1de2c141b825c24d595b3fd18ca855b5c1aa60dac6b5356275b11be670692cdbe5f282f93ac7b2e410a96cb9e9f80defcde98f3449f99e192bfd62040421a0ab8f99acb85369f25e5efbf81439efa8a5e1d9cf781355a0f47b037b09fe4086389a0 +d = 1e846c830a8ec04e8572d1a9d2df044ab47352fb346f67403a3bf87243871b164511c53 +Qx = 12e43e20941f2641154bb66a56f2e0428a7ad22d607fb8af658df0b382bedc7d5ae22cc +Qy = 22f226cd65052071066963b112aa302973fe2b5fdd7bb827d13da7634dd2fb9e3852ddb +k = 03a76f87ede2b5d40a0f10e15e90e29198fc3a03943efea39ddf7afc37ed4e18832af8b +R = 1be2c776c707098438fbd0561de578e4b9449f955a25626f2fbea257fc578ffa1bbbb70 +S = 1aeef69983da1a535b10a47e66d890c4413c7a8cd6a2511a1a670a4c573d4808f46e23a + +Msg = a3ebc17c867cc9c7c28797f6364f6574b80c7ec5b2d8e1542a6f5db8568c15032f92cfbceefa3fe4ee654f690b0455ee5d38dd84bb8665ffc1ff8c849bdbc4aa0ddfdbbca4eb37972fcbcee8cecc1aae21ec736ef61781716b60247b7551ec4e552d0b59a53cec5964c67cf7988787cedf769eabcc9cd5243f58034d96f0e43d +d = 101c5ed48231a56ca0ea85eb45de0e395e6df2efd4987a226ae36489dd8b2dfbf7c465c +Qx = 7011260f504d809baefb54af48c890f94fa5984c8bf228baa4b6ea14d46372390d1a8ac +Qy = 2bbfabb680659aa2611435c4058ed773467a41cdda8250f3490e4f491f1bbae452c5c36 +k = 12a3c7f0b3d64614ff97133873d75c7c1406e316e8cf60d22139dba462055baffe6c8f5 +R = 0a9933496d60716a39e1c3f3bf22a7da546eafebef80dc6f25d0c109ecbc430fdb3e80a +S = 0be56197a0098b022a7914c10f40207da58403d6c7d04edaf7efc96de740cd71f67e0de + +Msg = 60269efa4d0ffafbbc655f6f00578eadce7fc0a7eb7db923dca49b6f2bf3e13f7f829cc6133e022c3c92143c075ab9ced0531a91e6e79848194ab98bb852f40c84e7aebe71fb8bc0fd1f97ed5bb6bad6783d8dc048df42738e841d978456e055e1b8a781dfecfce2218701c7af77e7894ccac5bfff360aab0b6136b978bc39c4 +d = 019679dc589440b11f82b3716e5b2a2bd42c3b1c83e88a28e304cf5148877faf760b4de +Qx = 743ae04e4b07d154ca0749a011c97a31ac68d8e1da3491f331136873598896e5320ddcf +Qy = 776c05891c27fd912267ac166bc9acbaecbf80ccdd887aded2d7b8c2a4a5d139833aad3 +k = 099ad7fba5284e406f6cf200a39e398aa0426448c09b95e691f653d6096a63adbd39965 +R = 0285a82340d9a6d96ed9ad0fd0916216fd20edf979df41a55835ef8fafa00d242ef6f11 +S = 0a8548b405c171d2a428507f7adda4944bade7cda6dc580b1d3f94e15d7e10f0a08e008 + +Msg = 59d704d5b1f3a0605f1497f22f71b8f45b26138bc86371f00a4517554e7f6e7fa5d35189fc656ce68bd2cb8510fa3e3c3df815dfdd749b2b6ac997d443f3954c7a927e138b579801ffd035cea90840733e7884ccfe43d8d3a4a26b430673274aae312abe4ac1e1d7c67b73580fedf2d8de46572493c9205ebf0e8b4d75ccc88c +d = 1703c21fb1e09f8947e12fddf166fda6f685221fbd803d75a0ae377a54a1e494e6c5e7b +Qx = 767564e13ae544dab22c3763c5d330a5571e07ff8f2f5ba3fd729379709b1fb184f990c +Qy = 27f9e5efbd1ff6ac53a6174670eb463b12f70a603354e25c577ea292b13b8e5f022ac9c +k = 10d875acb4d0dc211a82e78c0249e74de16768003b53830bf5648cf911fef6a57f8f048 +R = 02af92243b9dadcf21561ce32ca0744810478f8d5be8e0f83d9632ecd8e86ff467268b6 +S = 1f6c50fb3bdea228a6b623be9e2ea2c371dcfeb0e604ef1029b6766c43b193d86c02f27 + +Msg = 12c8fdba3bc5f68e13f7ff8e7bee876fa68a970afc6924314dae0c2482763ced8d4752cec29ea288d350acd8a06c69289ae41ad345a1b88bcccaac903f2bff39015c289a8ad608606bfd65270a7bcdb5fb10c89bbc2d16dcb91fc9735d66103f6b1f3575622cf4d8209290315b033ee1f79968939410f465a2d37add46af2d59 +d = 071de8eb14cbfb88e61b908990ce08b81e624ef4f2cd9cdf3dd7ca9097d5ffed9ae9a71 +Qx = 136d50e1aa8203a0cd2c2d545b81d00b95c6b43b74b1fba3a6402abf756d38087affd49 +Qy = 46bec77240de7bde85ca4345f27c6df341c72a4eccd2cd495e86376c183ccb34f271cd6 +k = 1d80734927505d8d4818b3bdf1aa2e5c557e5f717a5b3fb856ca9a2161bfd74a130ee38 +R = 07894bf10885a698899b118f57e7da22222e3d187a0aabfb99fac0ce0e134b6b44a5f90 +S = 07b4a87592004d6ef8345415064b4b4672db2943c7e6098a9e6d59ee3324847e753703e + +Msg = 26013a3ddf687bb2f37d9700923906f118d5cba5d8ed5113a0e3e84cff00918125108f74f4b243e351aa5d07fa7c6ece29f5700f23e50286447883d2a058c3258a12e4ed8770cabe627ebea7ef6e8c77811ed7d9a19c53287093e39226236587ddbc63b7ad5e7ad9895c64d1d03ee432d45a067afe27d4cca920ae88a7a68db1 +d = 1d156eb15762ed00c4021884adbfc2426e910b18a5bc474268196f4b74e593a8f38702b +Qx = 0a99b45860615d7caab2f4e9bc01196a61f52f95c6c7fef615a4746d48553692d5fcf13 +Qy = 56f81a0088dec1382f8a3a863901d3443c8792cd13ce13a8f63b02d107b66d9d23bc492 +k = 1999524ce9525d85b562fd13634fd9ac50fb76d83b9d72d6976d6fbc47af7e1f354eee7 +R = 067748d49389c9b87a85b518f84f41b18f52569ba531985b8fe5e1f0cf9cffa958da3f0 +S = 00c44a583c704f69160c6258332f3121b022759b163c74c7c96058fa8e3a9928afee948 + +Msg = c4dbf70b9a2165e7279122460d05ceb8e43e03fbe2ae7c314007fe2b1d8567cac727a10fba5cbead0ddb167d387da8e8f3d6bc0ad851cc32885809d07a776fd4a95a979fe3833610af89df0f454d9edfabe12495a118fe83add5eabb2acf54ba7ba7c4be20fc77478c0a0f0726c4e60317422a612a234a7567648603b63f1c12 +d = 17d6eb1219cab8577168be86b61f372b27ca70fb1f1a767947895c185344e966db17aea +Qx = 65d8e43a290a6957230501509b95a208a6c37ddcacd1e882d97c73c38b2a256caef5e8b +Qy = 02169cefa6ce170ce20a0b5463f5bd146224e0813acff304307da88830b0777b86cd3d2 +k = 1519e37a66b4e665b2e3e59b8e836869a886c879aa1ed47901a6c8a8f365efbc67fb410 +R = 1734a8bc9a13f51d921a297bc6b2d38610c20b32b0adfd5efdd01a4db5084f3b0697904 +S = 0f9f00b25a33b166f09e2a819dfda80d87f6a2419a7b4162e435ee02c0fc10a669df6d4 + +Msg = b1d53b6af1face9b59af11c726b0099111d1adb3666209ba46b1744a528ed0f72be5a1b82423153b896384faebef0362343e2a4599803c08b8513708938aa8a498145fca1c63ba41aff06d1a18aa2a045fce7fcd7e5552a2b98d0df97b6876f06a9cf52a7a40fb737996adda97c3cedf7fe421235ac6951060eba9c0377e72a2 +d = 10ede9be6615b3b2a294d67da78127ffbf3a15bdba6f4fd78be7a60415b5d1a097c0cff +Qx = 6418eac385ce94c1982c216ffeb0b26f9c061ccdfd785ded75efc6a329385898331fda3 +Qy = 7d41f9cf1248a37fb8baea7f3545bbca707a903966019ad56e4dc810b6863e243968b48 +k = 134ac4de6ed71106d11fa736960eef2873223aa87b1c5bf5c823de6c78092cba4726ec8 +R = 12a37587ddf224faaf8dab61210310792d4ccef650c98155a227bf468b7f323575115cd +S = 10982c965331cf8529ef6adfe17dc3fde63dc2a557cab451d7c9408a089229e22b73d43 + +Msg = e78f538b1ac21602b00a09e3db243ef4803b447329c94a1476cd91a88ff790da71421b60092c8a6e55327c7982e7655eb1fd6e40fa9b9fd2f10107dfc585994dfc5bc2143d18794a39f7f69ae679b27dd11ed22040d5e93aa83f71783525a4db0c3fd7b43e57dafd0033d5317680df19c2ecaadcb37ef896c61a758a5e455206 +d = 14f237cface123b64e8578ff33f86bfd2a8181b9c81f36b9ca31e2a446f0d91dbbe2249 +Qx = 7aa347c03d8845f1566bbc3fa1d66ecb41ed1dab0a402405d8300591a1f3078f9fa532c +Qy = 63bd10274437c2690ed6df60ea632f3d4faefcc07a72ae8d85c2f999bafd373053265dd +k = 0570bf3b42aa44c11603d94e14b524b8cb1363306196924082ae71021707c3138503031 +R = 10f7f4af1c1e3f9e8e0c95f991c348bce6725f60aa12ee7b398be64728242088a469a58 +S = 17145a39fa4dd237e31a98daf3974138638b9462a31b87ada3eade6bf7f597195eb28b6 + +Msg = 8a6ca8ec436d2c706fcbec6486b5665b21c174edee7ebe108211c388b1219a8224179f7438e0bb7d6e41ac4a67337b52d4cd9a069fe6c88960ae20be29c8060efd7c62cb7a9a37136a250e68f253e7f27755df53ce7c570135641ad49b43507e5483e17b919cedffdc0d4913b1d5e0ca0629876c0a551841a0fc2090d2857cce +d = 08dbecb26587cb2ed7df2404e680fcfa5bf8cf6a58e87a350a1600211b3c844ca86daa5 +Qx = 66610ce348821a77e8a6eb74a675ad9312b2622ad2e1e6d8dcd0be8b27d8384844a7234 +Qy = 014c15776bbd144c0c24bf419237db9401fb7f97a7c4c0ef50a9afd27c3964088f79643 +k = 0204586a9314bc14bef8ccce8b9ca3874572b375d01c6b4a41c743c16502a27e91a9fb4 +R = 0fabfeb17bb8c1a57af7af81d99cfb7b0ecbf4e5e4a6ed483aee4be8ee4c70c2ef23941 +S = 08071e162dfeb068e3cad256c3603e07ae48b35f1bafdb726cf4ce32844e1a2181f23f9 + +Msg = 95bee02b423d2c6e60252da4632f693a2d8f6597b4f9c6e356f670c3a9e4e80063e92facb6421d0325b99dc150464ed2ec1d0bac72a042b35d56d33d2fda686a75d582d4756522218b4ddd25ed45503d90d3d185cba6cf0ac211b22aa4e1318a8316c369186f7130446dafad64f7966f5414f43af37a87127534060a23c6165f +d = 191badec2d28cbbe62c072c6b57eb5d4644d0c0b3283951bb66096cd15edd43a1bbde53 +Qx = 020224b00428031056ed370147c51e68ffc02e7fe269ca15b22310a2974d383c6c83fcc +Qy = 1686568fc4768158e75b4ef0427d8e262cd0638801ab158311749e0f432d5b69a667f0d +k = 03b1b6ca5e627f00176b599b68fe54e1b5a272c323a06b55e4871875c0e729c4c79326a +R = 1ade251b9360a6ca1b48c2fce0768a01193a415bd23956fee1e5c4c5076b3571abae082 +S = 0adff25020af4e2b4908a33ce1d75c793934921267b6c4a0542924300fce40fc0031021 + +Msg = ccd7f7c0e04d1ef9a3c5617d77480bc624beed6582bc28e9e3a369b12144fcd96b735ee41713f4173b64b28c6102d82dcfc7876e06e76fc497d1d238bf6d85bb5feca630bbd0c0f0fa7c0c72e28e9259087698973ac66244bc6e69c04deb22eaeaee7b20da239ab6333576f01349c76f594498620933b8969450ac2bae66db8b +d = 0ff5e3d66eb57fd35ba4472effd6e7a016ca461e39000a7125e99080f6ab6ef4380dd7a +Qx = 19d8c1d9aca39de0e627981d21e35a628c35fd4096aaa86f61625fcd078f0400f615cd5 +Qy = 52ba2854ccd64407f6779c5e259917b251c9e34ec0d95c05488f30802b82cf4b25b5389 +k = 16c9cabed653c57676ee46c8912cbc507b246078834f1667d0708e4c666346299c1fc03 +R = 12ac0ec9501ac91a2b57220e9c00ec6e815399ede94a658c36f9e89bbf1674316d65dc4 +S = 0c9480160c4e9db4e82b4ad26cb79e083e9e2056e68a2ea554aca45802bbb188389bc4f + +Msg = 65e9124a2606c8784c9489add2999f4cbe6186395df20838d653b263a207ec46995d2685b55d1874e7ef05a6a3bb5b60a7be6751ad568cef1bcea2debfc494d1e2ece0dc8028c88f1b2c6e4ee26b639c5e81f6448bd25b73ec4608a8e8cf4e0155c29b6f0a62781493b03bb7384c9808529d5f87da6564ae196a365bd282f46f +d = 1f3591eec4a8a3fe6ae6debe230d238a6b73cf3791cb735add1abee64239bb100f15166 +Qx = 483e7e2b8f7ff95b86008c3042ab83a4b6a48f15ce1cedbaf3b586b56ab606e6f23a4ef +Qy = 287cbc8c609426f1665976e8120afb8de96b43978762ed44bea5aa1418b9af6922c6066 +k = 08165da5f5427b38c447382c8dd0940c3bddf8f048185e6cad260031f7c0a2ffb83027e +R = 09034633dbd735cec6208bb6f4455b295b7d730c9301bbd1c0e9f101399f2b3425a13fd +S = 0204ec149b416ca3467e92194449cf2ca0f41ca1fde79145f3af856085b298149a3253b + +Msg = e793c60fc725fd537d5fd38e9b4fb52e268722ae6bde5a058de8d20db301f5e8d8e1ad85532198835a04b76f27ca3c972be5617a55677cffa8219eb64fe53ced242efe1b889990979227dbaaa15ed39d3b6be8c5a3237ebe12bd96f333d947f80048463d3859e34f865d83faf03894c2243a06cc96788ed952e606c2d8948271 +d = 05af03cdb45961e7ff35fb0146904ddd6c2bfd3cce814073d3aa56eaa9f13b4f7423926 +Qx = 70bf676b9b0db558eeb8bb94a1248bcb599d1e8975ee13cd37dcb78af19307d1b7e57d5 +Qy = 6ed9bf30c627062b99ff9d05ca03441b6194c34364cbe7b73b46ec9716ad8a9970cbc99 +k = 192c7b1fa8f221edecbeaa51447818474dd9fc89e962e8e87400938ef0dff432a6c4b86 +R = 1df1a4f9578e9cae8102aab5eac70eddbabe4ced99b5bab1b1dee59c41b81e392968c14 +S = 0f2b1319335ee497fe3ebf1891a71cded59704365774e1ed9950f79100e70950783bc7c + +Msg = a57682d21cebb48190199e9f57493696eae3a59acd22f64d5ef4729decf6c2615b326817a6bc118bb7234bebfc7276dd998838c009a7348e46431574638dadc48538d6048d572e50d9c5974d2049ebe1837dd857bcd1447b1514b62808a4e7a88162ae1bb08a0f6d3db6f25874c6cd0cd4ca6333f1bd57bd192ef67e4616d182 +d = 1ec9710ada06e6270720692a06d488ae2ba863b905dd2fc323e7ce68dedacb35fc8c7d8 +Qx = 5cda72b5b068f70b3c431def41b8ca1d4381e8c2fdf0821cfc17eceadf5e3eabf7987b7 +Qy = 79ae508354fe31899cda71e01cbc80e5192d24f1f13c954208d2ab8412802407ae3763f +k = 04f7b9372a8fed536396f0b87d4b20494786bdb8db77200c1aac1896486a05d3c940cb5 +R = 072ecde2a8f506f0fef273c8915a9edc29e440d48fc6cefb50e7117492fb4a13e123bed +S = 0010dbd6229d770c468f5d8bd20edd6928bd8824b7fc2b10dc45fbd3242191e7557b984 + +[K-283,SHA-256] + +Msg = f646e7334e191c2bf0056d3bfd23f03ef7f0777b923f962519a8399d311b8f68414c689ca34b96871fae99eb7ea534fcd83e788e56eeef817cbfe33677283c736b99bf6a626f9515291e842bf99f694e4e8aa7c9911c591a87d5f112b3d96b064594e2b368e6d1bf1a1cd343d54916a66da22c26355266aa2884120fffb8b94d +d = 0668de088c6913640fbefbe6d2c44ab26e481802dbf957044a4957c3c5d0a0fde331501 +Qx = 0d3a50cb9d347cfe45d2a313813fec8b928a9b1defca6ff4b89c4787717f275c6b7337f +Qy = 762e47b0669f625c39c74d50e2b46875ef366b7c3b005c16ede69a2fba161faf6b3d0db +k = 0b24bf54795fa02eb9527f21ead5497a6db2bcc7849a16d206239f830df313dfb7a2716 +R = 0852d8b6fe93b0b36af5d99530eed08669eb9a25972fbea59f32dafe88b722bada98ab5 +S = 0e5b08d410f2252f724dfcecaedb37b92a6c09cde646ff6237007f4199068f945ebebe2 + +Msg = a2d7e69ea381d3edfde4664c56c4cb140d01cc4425df757975cedc995b89640dc016ab419b137ff25a6a6d64a309b23890439d2ba157262393cf93d15ca1b1ffd19373ef12367f8898aaf56d5544c2f019a4854f69b3d8d320e03135bb7b675e588a5c3fe4b703938fa0f964916501297cee2fd04af767155c7739419f9dbb7b +d = 0e6af57cf47de1e6f07041eb5e1a413fb7ddd82f8c7f7ce957eb28a118004930bec4dbd +Qx = 21e31c4e4d412a261e40483b9106bbc1b0d7e7414e53d7b9fd84175229c8cefbbf6defc +Qy = 46ff2dc601dd407883af7dc71a6ef4286cd3b1b6ccee4fd861865bff8fb38ad51b63d49 +k = 08f9e2113d0b223c04e678e8ebdd3aab4816681a9ef08b18a38afecc57d79c971421469 +R = 0d2c9113a18bd51008fd327a55c214c9584b6f1b816cf3b95e7346080da2cb07dcef8aa +S = 19167051872759c36ba9eeb5d620cafd3289e8b7660fc847ff385b5143b3aca38780639 + +Msg = 7088f60e9375ec6a42f705f851fc76cc833c4dcbb3352adcce9f59197c1b7121e7aa661c4f8ad9f4ef280af3a2981e90c01291f7d1cf7d3ae2d96b37fe6975e11b7c6c02b8ef044d1470b1a26b9c72e8c4e7b1dd83c8acc9542e2fc7d211b87841dcceea2ab8128d0ff7bb622b60faa4a89ea7008f7d55f8f9de675bc4596fd8 +d = 19f9b63fde8c6aa6177f2a38981505d04f8ac62bcc21007b05615d028cfe851ab9cbbc6 +Qx = 5a3e567b227869f948180547c2713703c90698dc04864140d22b24bdf81b3996829aca5 +Qy = 5b2ba535040afed0bf6f9d850713e54013729bc6dcbaa336ebbfb9c461f7ac61af48001 +k = 051e20545a0a98dc3fec59e4ebdf101c6aa2768f344c1e19424c1eaae4aaf7ffeb5205f +R = 05fb3329f63587e8febcdec49f92de88366a9f75d0b9a0f374dadc6e7a62b833753e990 +S = 12edfabf1ce434c850b58804f1f31f8afb20fbb36ee69b68668e231e4c04fa75e658478 + +Msg = ffd6044ab991849939e8a29184b4d0ac3e07acb63c7e6b886df9e8254073fa800d5910b9fe34fceb547565a2344eed4de394ce2251ed51ec882ee9207eb7340464c742d9d140fa0964f6bcb1efcc2d13919af4f727953de41b20728ab975c1ae0ce784865f23ed1325c68daa95ed5c932893610179be94f13b9a4149f09833b3 +d = 17704c1f436beb52f7ec97192e23e206ec09f9e8986e06bef71467c192bad6f0066b3c2 +Qx = 329294a36ceae2b2c56bb6e21e52ec32af11aca9ab7785be9c2d79652e7960c0cf7a8ae +Qy = 658a89a48fb95cb7028252fa9792d91b989d7cef3fda8ba9c8e4ffaf19269f2a69f0a24 +k = 0aa8d2e210ae40ba1f9f051ad85d37f7cdea43aad890ef802519cc5773e9a0984fe5d6b +R = 1908e3a2740fa04ec0b23c964c4c3cca51c4603e7553461dd02f8319a7ca2ca09d0aef5 +S = 12d7860d7b438df4653fe40fb9e986cb035b1384464e061bc4ee3bb29aec74d16b0a694 + +Msg = c9f81c9ff7d80011fd41f2de97a6c1e6a22cc2da7b2b9e4c50e1354c3e139b44529ac786ce795fc501dcbf11a935d4728a7bba44b4e86b5e5990fed4d3e24fa5ab6f303e1842918f156e00dccebed6897c852207ae5941c630014a41696882066c2b296d39cd8658cb5830eee78e29a00335a99a0ba90722ceca5a2e9a99a2c6 +d = 0c7d1ac8faa689698f5c6325a3b3f35e7730bdbddabd0693f2bfdc5c838bd62f84508d4 +Qx = 095a930071ce56f28a79a66b751283c756c4f2566ebc2a10770ca60cced6914bc9a0d77 +Qy = 46f70021e7a949c7f55b059d4c8e81ee23b13809a35932d83b8398fc8684c5a90f3ec71 +k = 038ae832c25dcd30c1ee3f5fbe84bd8779c876c0641907695aa598132b0e581ea528332 +R = 0eb27c86d3ca86ef53aef0465d257e6b681f891a6357cfbf51260dc6e35a82799de0e97 +S = 0e8207959e8be94e7407543df80d38d9e662106ed68e1456dd1826602c5b73f27ddc901 + +Msg = a60de761eb32490184dc1d29e21fa33889295ca587b994746874c7289eb9c83e9c7bacbb4066c761a06b65ecd78d701bd41f305cd7eb258c630f3febfbb0a367ad16737b146fd793dab23562e8001cd113135b1c981d1ca23eb3be0fe3e24fe3fe1089caf9fd8f4f0d1f90dcc7dbea4a9e2357793b65daf342b8e6d109c6dd10 +d = 1a173d158866db0ec665ee632b5fc397893f6a44ee17c348e7452800aadd8ce676e7fdc +Qx = 6a9369a93e0b5165ac6e692db035495c5cdd6df243d9756098385ad616374ac1e1efee2 +Qy = 32f72a02c36954cd8221126e4eaec02668f454214e4508cf72b6d945e14d9b7c5d404c8 +k = 0200713a78f58c755db4897f9b7e52057a087816a07fc388d66d34ea9e0bcf2f47e182a +R = 11a26ee24610e705a42329f86aaa80d78934b4bbf19314f06eec46067d85c8377e04d91 +S = 077e35add124574e98e0056bbb106cd28ba8c3bc0c47063ceebbbf2684983a2a0061950 + +Msg = 2cd0320cc73120ef13e83c8144b270c9a1f2049a9250ef7ee83ccc7584025140a51e2227a5ebb824deff55b3affcda63ecb1fd3f337c67c08054dc82fdace0c4bb9cef1bea9dd792635f655363d05903cd6b5ed50ee669bcd8157509366cd85aa40d19593265da26e5641590ccf04672a6df52badd4b99964a8643d9687b499d +d = 05523cfacf4ed3b74ebc30f608292e45173001d80cc801f729c5f71fc213b243f041ad5 +Qx = 410751ae7d8bb2295f584ba3d55eda41a80b8520b02bb4e5ca669a1003d6f2829e0a01e +Qy = 5fe16244f76f0c8b24bd3ca3b53c697097e3ab0e2b44962ea534a655d6c7d80b857c21e +k = 0a634f4cef0ba37c9ab211c57fe6574c67933280c91c8b175fa4164755bcde867fe1772 +R = 0b9f6946a578ee38433e98478a4c31b67e838939cbf128f023090c4848471482fd1dec7 +S = 157159e15a2d16da2e913c5ef00833a8e5513ee4e7d6cdc849fd822c59886d0ca3695ec + +Msg = a743d8337bdefc4753f937e869a36439da1f8c75e1278c3f6a4a969d93787dac93293818b1cbef5b8636e1a6cb3acaac1e15dbe0841c8001512b689292f3f4805997ae26ff52f7fe1842512a020c448ed01af2a061f3638689446ed5f6bed9fc70726ce4104bc11142de63873fa7039830223e8f152996388417c48e0c1fa81b +d = 09f6bd008c04b8823ccc3ee7d5aca535c211f35e9d9e7cfaec518b98647fbe6d28283de +Qx = 70019957dac0e9be0fce6abdfc00ca737096ba2d2bea9ba570acab6d73eae2132d7eb06 +Qy = 559545f82741ddd1cbb9dab0cd06454fda8abbd9d1eca752e57ec05498b14e4189f1b9e +k = 0fe407c226fb15bc63d37cc9840a1a1fb0ac4fc2939fbbcb6e1236831379d367669ffd9 +R = 0e96e301bf1193dfdd2815597e016e0a282d6e8f9d1d67a7f7e7d05288594f1ea92584e +S = 07488687f13c3a2b9ae90536db7868f2bde1529ccdc0c84eb85c53ea979228d1fda7c94 + +Msg = 6a7a3ad614a3a09d2dc5a80204815d0c6471057acc0fa73f3cbbf1801902c3e1cba3c1134a79a8ce61994a94a5afa85ae1a44b2cdcf5153f8625713c872da36aba0afcc5c2f26636dc3f60e04c256a5b023e20e2e7a3f7305bd5b3033fcf05368589f19021f8c9096a88679904b657bbe5b9bee67d6e53d176fce1de9e54c64b +d = 150d2812505c82584201e93f6e0cb875d29dc7bd99d9c0f98e0ed20128886e67e1f1071 +Qx = 12c7750172bea15487a05580891aed51bf81548f4b65c51c6c54b990bae8857a20115b0 +Qy = 3db9e7a17dc8b24ff080d80842f0488f17f7d43a40ce6ffad52c65f5a875b4b33efe3fd +k = 0c5c52dfb50b210ae13c2f664d958b2491bfa91ced638f925941234bcc4d66de1eeeb73 +R = 03887a270eeb515a59a7387d8acbb4e72dcdf13f317a6a93ace5cc98d69a79c64a9e7ea +S = 0e922b2d021cd71e213bdb36ce3ebf56a34617d4dcca30fc05f238a1c097e38d7cbcf91 + +Msg = 65bcd77a3ab345cc99b9c1300755288102a6ccf140bc7d1ad25df246ef01fd57a8614b352033b88cc6ffffe5b38b99ecf03baa365ab5529d6751a3c020d0198561969aade09091434d84ffe13b46df043d0a61e20a08e9c32b646771fea1b29e202d40aae1c7079873c3af494ecf6ef5eda855736c9338b4a5c29a086a8266fa +d = 1b3fb9e1ff70f94bc9d7742ea535ca982215af3df381b5ebdf1db40c7c849a7978ceb98 +Qx = 769a897a443c41ae7a8c1e45290ef39c40887ab8f4aa3f9ee8f3096921222ed7de45739 +Qy = 72621bfa30973da61fb6d363d66db25daf818ce79dd3268ac0520fc99ca7917fa3a2360 +k = 03fa84ee38587f9c848b65b07c47551e27f15e7a87ed0ab705c99c8b7a4ee9e86a8e4ea +R = 11b214ebe67eda2bd6e84c33be05c4373d2536e2cccf152e56b1569cc96d261e50910cd +S = 0e100646cbffa016664bb57c1a67108645238573867c0b595c46e6053f844e5482a993a + +Msg = ed1acc360d02ee6c36bbc223d91bc1d2009a3e8f8dfc4c3796cd8555b0d2b46716f4c8058bf34c2d4954e098274ab9c2cbacff46a0578a14e77fe104196cbc6d2753e3bb5422b8b79fd004ac0aa920eea94925c016ece16ed4dea916fd92563ec65692a61b28ee84bef0007120bb1e31bb75b8ecf68406a71af9a18b4edf5320 +d = 147fa46fccf0805d14c1b84ea59bb8b8283d54ca0ceefb29b5585e7141340c55b7232f7 +Qx = 4ace4c65ce07fe5ec22c560bc553bd791434a691c2d865c52b5e38d541ef191ef419067 +Qy = 76250c829de137b6549d22a12f196629d9d34cdd83758e5daf45fae41872c9b15190ce5 +k = 18c4f89cc022236a0da6105f19c6661a8325d36fa285e3ca71c1a4af3dccb016cac186a +R = 0271b421fd572de8a71d1b18ad2325bc0fb58cabaabacc1f015ee6b14bec49762f1f8ce +S = 12e679010ccb143b7de0c3f6c82cf99a961a4f154be6c87abb111cde2d721d864d7a1bf + +Msg = 2debdb95a21d72b69c545988727366a42b819ca6398a82129c5e3772aea93fac0aae9a27b11969ff0ffb9dc0301132ca2452cd863316cf24ae7696422d4dc68e37316161abc146e86f04b72d9a27a350d8545cca245b2be43c33bb822dd813d13e08a718f784845df8a4ef49b02529871ec76bb3fc1ba31089359f2ede73e767 +d = 0fae097ea56b35a517be5480802f450eb832b244558d0cc922cd4a5b40b84d02ef11216 +Qx = 4f6bda2dcb9560174ffa54f13fa5edf17bebd41399a1dce1fe13e82a2b487eddfe25a19 +Qy = 76dd375f2c5f24c342a8e2491271cebf5b97ac666aacecc8d693a85ebd2a93eaccd4059 +k = 05e3a67091b9e10c7fd20fd70d51162e5d78555059802d0c3b133f49b89f37be6a119ad +R = 0ddf93ef8797571af3cc9a66660c569445a2b5384f95a12d680c570694bce49bf2264cf +S = 02f50d68bda006b88798d87c232f5ed1796c841074f063da03a471e0c00f08b10f410b3 + +Msg = e4e0c6c8fc01244abf81e139c961b6a6e2d95de5dff1083e8a48b40e3e5b9ed909152c92b1cf2263179629cdf76ae553b58bb2e9223ce4f9ffb5f170f5f0c5ec97294c34a7529a897e9397f71198cbcd68bb4055cb8cd6b690290761b3b73303f82788379df145358afe28f2997d191d968929b7a4b9a0f6228797dfaa17c613 +d = 026cd72e6ae19b3f4c53493fba1e8082a8df1fb7da6dc111b47a41f713f49b33f618d0c +Qx = 1c411f5e298c9b61023fb26765cf4132cc78ed77c07c3e815fd43032cdf0ae8b8920f96 +Qy = 35647b4c0807b287014043560d70c9b14651cddff4bdf6d44ead5e87720294ff8954406 +k = 10e9bc449e8480474afffd20b8acd6dd08344981c4a6cc789c5338ad7e486c526d6c4fa +R = 0e81594f1064e018aa3504bac75946d77f9e745673043417a47c0c82488e224cc4104d7 +S = 111bf8635b1bc3f6cb7f9b685077b38d67160d143ede2bd8b6ae93327d7f55c5317f00f + +Msg = 04710947b7c90855ba4e59107b919d4a1df22b503c5c4c33b286b6b08e451e6fbef8ba40852f9f0ee62c9217abe6156bed46ad6f0e25f70f528f3a73d099338c578bebd6879d810e6e173c2b0af1f7caacb3531ff0e6a7856e4c84db355d110febdb21c683223eb5990ef2038d462ddb7962bc0feea5f850954943d53041f66a +d = 198e13c7d95bbbb6e226688719639bda988867764ffa9b029018b5547850daecf58fe1f +Qx = 30b511d719217c485866273ffe2996a19e0a670b7a3fb077944a21f63ca2f22fe5a524a +Qy = 3a4d9a808e8d77c9dfcec6d033139fc33e67d7c8dfd7329c895bfb77f565391c37c8d8f +k = 1721f1ad4adf3c32614feb7f8df3374e24f76a32e27854a57dcafcbaaa3082b13e461ce +R = 14b2622432adcfed7c2ecd2b52e43be7f611680ceb4bedbfa9dd9af54532911a07440de +S = 0ece991128b10399188b18933c0d185e85d111ad401baee5ac376b84c523f130f70fee2 + +Msg = c62d07bb1ef756b6b2fad355c66b5be086b6dc387b37cbc4a63c841dba3fce65b09d3de8f239e3649382d172f065b78f8a53e0283cf345de06b4ee0b4b7d8611bfce92a7d993b1938419afe817611bc6df3ef74191e7e39ca2339fcb5b5cfee3166d09cd52a1a7d3779722aec328d326a11bbafb6aa417920225ac453146b9b7 +d = 19098a39956747de24ded56435fa1e6c30cc2b8088fe9a75f5d07b2f5939c7a60db64ad +Qx = 68cf5a2023753717d89d12d6861c8411e6081c3158339573dc5598b1700148d00b39dc5 +Qy = 76a22dcd4ff4f062eeff83a58d2ce6a1808af8733ae254f5157efa8ea35a85cc744692b +k = 142e4907ce239cdaba562d1fa7305bacff05a75e2927800c7b7ea322b47c9ea47846e12 +R = 104620d752b73379e1e5d35e5b24a793d7a309685c00f8bdb97bba9876999ed9c763d0b +S = 059cab3abb0738d8af4ea6dcbfca6d0ef11b6e591ca109b040347d7d4736724953cd9fa + +[K-283,SHA-384] + +Msg = e4d8d49c9bc566261d9134d5e237d9cbd6b67d2619a9bd06b7c9c139e091aa10682cbede114e1d4777d9cd67a16b7d64278e99eed62bbf25ec5a5a8fabcb0a3468b0e73fd02ac6533e04b1110d29da3e34f33eaa228b78341b357a5d892a61beb2168c3bd5e66bffe3f2080a1e246f55a41ebf9d579e188d16991aa060460d6a +d = 1636bd2be121e07ee83ac5e880cfdfca6a56f2b9d0badff003e872348368c7c2cd96b6c +Qx = 007acf46ab68744a9baaa33ebf6be20c1c093242b0056bb9885d93a4a9bb4640f17b2ef +Qy = 15415c1b671e98f00c1fa364bd69cf998c0ae140485159b0a341994a4e27000e108f4fb +k = 0d0d4886c3500bff68455c41f5840d0313f33ac0155a693d27c66fbdb12791c2b5f8552 +R = 0256b8ff7d37fff7dcc8cc4461984a9bd9661643fd3a68d07fd30d426d10b8c7f4dfa34 +S = 1f516f8ed4372780380a798d2da04d691aec379483bc0d10560ca79edaab453d3e77585 + +Msg = 2d1358fdffc14630fbc421b443d3c22ba10ef34f15c6c5bb3c73a9b8714e4c411de69b9cd6628fe2eba5efc4862af66ff916505023e0514f564164b389ea422d0f1beb92adcd65baf43556614eba25e43852ba65af78f62d64b36696519ef8284ef7316ea52c365b99f63a39e6701f81ad520d7445cfc0113c38ecdad4bf5b7a +d = 15e5f555119c19b055b15b0c0d2813068bfc184f864e250b202384f5728bbbda1cb0f5a +Qx = 13cae2f0c3ba04d039c42cae27de4cf5842a3e24be35d7a3cc7f05083f02951cbeaa63b +Qy = 5d69ad5b7d64d6b19772a1794562b1fa5c2fea03909bc509e7d47b0e8144acb3c26fddd +k = 1b881d95b7de9aed9fb5ff0085ca4da2fbd413b9b947066c98aa0257142c9000bbb30e2 +R = 176f9e3c9e9f98b2f5f352ca74310badf9f598f4d42cd2b26e5ea0999ae31e3c678fad2 +S = 1f2dba4e17470cdf7e1815d30771f352807b38080d44465f86044f5969b017c9059daf3 + +Msg = d6336faa5c3e838f4fa58626eb353d4cff9ba8f0aa0e6c3d0d850e8b22f5b0f047afc97767f1afe2040b85d4e401ba688a4da7a0caca7fac450899092c4fea789231ba9b07782010720f45d16d353798867dd7fef4a324520014ad5cb32684ec50cab742b750e05db040ff51140e8d740f6774a059feeb493b10d8ac722f23fa +d = 190c8f17bdd38669e345440d2c7631d67cee9c6548c4e7b9452377adb9303430efeda0e +Qx = 3235a8b7981b3ff376b6b0959a42cb56631fbb9f82f1694b9e273e6b7131e758fa0d370 +Qy = 444e5747420d7f5ffd6119ef43b998d4ea4a58da13ff6fe7f241ccdfd4b6fd33aa93e3d +k = 0b2a690793107257d7bdc37c492eca48c4c9650ba0d657e6eb62042b16169fbe27f8984 +R = 168a83fcc67e0c155f1fa2329363729872e254f2e0c3ef85f3b3c84fa3406de4191b6e8 +S = 18c0f8e6b486e6d7d16b4103506d74bb2021232c0b1638858295a63ca35e0d6d26a6266 + +Msg = 07384a3f650bd270b14ca388a441af201b7767a2d47e9033f50cefd3af8257ecb38f5267e141cbbb2ab7327d8fc78cf27198ca3543d39553e178390bf1b921618432ad895e4f8153783a7ac22f4ca3cad4560e64f1ee4a7bcad05df98ea49a3847dc2143b27c243e48be59c869a547988e2205358e8db98b635ca21b745df4d2 +d = 0dbbc2a0409ca58a9e39e33b95fdd15080443c1dbdb5874bee991bd1b127047f08ec9f3 +Qx = 5a687605e54e49e3c40fc5ee8fc014a62d72e8595280a66ce7d367aac2df4d16b98deb3 +Qy = 30abd03dfc224f459dccd1606287cc30016be317c6207532a0725c957ca5fde692a9c43 +k = 16bc5aa29cea64ce3297172f36fe4ce820c943908c21c9967697db0cd93bb8a12e42348 +R = 1b1fdf26a6eb2d736b8c1ab165af2ac31a4c206c5410f61ac7805a68992dbd62b457708 +S = 14e9a22ce703d942a4fe2e84a4c1c1b44538a33fbfe904bfbb17af6490d372acae4668e + +Msg = 824f26dcb4ce0ca020982814d5c727e629cbeeaa818c49668f8f6d743f0d0ad362b24cbac48027898f386889ca5411d7d1f9afc69493b1d9ae4d7b695c9fa0a30bb59e6be2cbff79231767e96cd8bba349fa2f97955d56f05430ab4ebd007064e3d5add94dfe255b6deff19650883ce9966e1a2affaf84d9540f65c87ab1f936 +d = 05495e6c59ca1873f36b756579632fd47f9fb95b64f52589d70f2739aa6a3bf8cf8c198 +Qx = 6df40d8259be64c8ac64a28359290bd52e843f330a68c2b605ba4f777d7bd7a798e9344 +Qy = 458667cd7021b291c3415d64f9b054db71d3fe20f232f2a2286aede89ddaf1ee8c68aa0 +k = 138f05303ea63bad47c4c9a9d43c52c264725a668db5b631d9892daa1b71f62656cbf73 +R = 05e35c1f3b30b43cc9d60bf8779f3b31e053de0a390da50ea676dc9722a17ef00d68aec +S = 1691ecfb826fef1ea0895242129cc3e9a14e1f84fac49d62ffc0a3455ad9c97becd5980 + +Msg = 07de1e4bb9be15a710a74806d4447b093bc08ed04392d1bd5abb414f5f4b4d9d43520d0e46fc81c2a97e71086b28e53242449ed37fd7ed1c5772dbabc430fcf82ad20437b38eac15820421e51912325c872894452c3f8a10ddb040b35308e583c155c3707b52df467c4945f4e1071126ed46611a3253c297f5cbca9e27f58448 +d = 1724987c9b698519b6c225cf1261b77d0300045e5fd774dcbf13f285e6bd74512cb7edf +Qx = 46adc9bd5f0cc0d8bc64f4ba491eae3b7f6fb4229bf94b804807c6137787adc0fed4b2f +Qy = 41375e2c89da41af84529811ce7aef26b983ea8add6e37c32f2b00bd47f23f25e5fe194 +k = 02ea4ed0e87687a50dc3acc7f4c089040ddd367d1a3f470a711501ccaad63c201b87ea6 +R = 1be198a1b6e91453018513902f0a8a085c76a2798a2a0538ede30dab65afb6b9b0496d7 +S = 16342f87a813780aec006ee218a615c4e1c78c0c759d48d4094639b5b4c32a9658c4d9a + +Msg = 1edbbbe71057bf7d0bfda922be21a3a4dff57b017ebf6fa99651246cd173bdc9b11eefd048ea599c1f98e907932aa04f64ed0a007831f30daf186c88807400970904d6090b2cf181e0f65f03b4234aceeb420867812562e47f452152bb1ddaaa48487170d06e47c5e9a7c0faa4fe494663d2fec22f7665ceffffc214b21c6b8f +d = 1a5489091cfd51a0970508ee3e8449081ed175928ff8386592c83043a7911bbc2f8778b +Qx = 0aa1562c94bd16a3f8a1d6c465908ce3b83ba6711e7d8b0b9353d3c55d13dee213aba70 +Qy = 103a789854f63a139e31348f1b2608f1e71c88b5d42809f2460642ff46a470ad8573543 +k = 18435a6d3bc02b3019e1b156ddd6f3e1bb9c5af70d1a2cd2089e677cbacc21624ec8947 +R = 031f561b668aeeb4df43a3a34716c4e67232f56959104b7237b26e3c95dd40e15eb076b +S = 0f2ddb6e6d18a7393425c16b3e5a5aa232cc48198d63e46a601cd3ed221a8427178a0bb + +Msg = db5cf1de38a5187af11c1f0f19a36db52f8417de997229e83072fb51a3b7152a3b383e9919c1b8427582e53d4e7e25433d46cdf01492021c237ea0a87d38c71634743115a6b2aba66d3faa8003158340a5078171e0bd55a6e5d8c7fb2631a31c1204e1479bbfe79ac70d5e5823af502922a900576f0088a33e42ec3e26c0089e +d = 1a45ecda0788fbd7cb7a716dcf4c6e83d4148bf63ed58078690ebd238c00329c462590a +Qx = 7a1e2fb4e8e79e3946086fa65042362418db0dce51541121c73972a435aecb99f634023 +Qy = 06bb02df9899ac3f207732fa7cdbc36a60c17592af7ce06b8df4255110e26a02b231800 +k = 1c986f88ba3d5109c0afa2c213dda8df462282f024cc8efc758a5342a0de91c40452443 +R = 1efbd9e0d912e170c9c55bfbdfa6106fea4a4e013e7dc26628a1aea4f6b806a51866003 +S = 0b1347f4f85adef612f5c3a436cfa59eaced5c7cfdbb69444936d71812a2ab2461bbb5b + +Msg = 4adaa850eec8272d25d76600aacf2cf66e754f6c5efa65c55a2a31b7bc69437d9a7e47c6f51c5da93895a45221f5f92c2e20ee6a95eed3cc7249688261a35d82872284900eb54dd1df6024ec48963ce43e8ed8b8cca8ed22beee8f0aadeae53726cca05443316537840ab824cd1b595f36064e9a19333748d4f4972178e7f5ae +d = 11461776c33f20b176dc8f2b0cb2446a9b69e55b6c7bc7457a7fb4639116b452b79661a +Qx = 043ba7157559659954ac58b44f19262bef9e3a00829c70af66d07cef08ad899d7f8ec23 +Qy = 1e8dd9c947b5a6decd1a26fc5d0eecc9605d22abda747fca038571bb37036d9034e8061 +k = 18b231de7fc499b461afed9b80f4405bc005011865cdfeb25570b7c0ff79b6ae94b6ce9 +R = 0fb203f47a4e2e9365ce070ee7fd4540f3f7e9ecf69b4400eeded0f5a7bf6e5a5c6d004 +S = 0e635dc65233f27b8350db22b90a3b8611e6fd1b3e0f515e42fe8788b1376079816308e + +Msg = 11d212a99c39fb5e4ca0096bbe6c81ae1490e1b8e07374b4e773bee4fdd24a3c13d653919db663d2c32aa4db140c4ae2d472d4f878946e527ad33b3dc93012d97458f96cb622ddb56f1ce7c2474ad0d5291dc35545de47b7053d137a8e79dabe06757ab53e26eaf751111bd27690e57ffdab5337eb6f81889e9d1b1ac729012f +d = 025a65f627db2b4d6cf83c5b0c00265b9b63f7656c5e3382139e4992bcdf3cab502844a +Qx = 5a35e7e0b914a3e01ce3a885192d2ecd27418e09898631de122db0c48e8b58658720fcc +Qy = 009eab47197d5f56927848855b6ff96db7c36f810ee7c89b305ef780ba8c993d65537ab +k = 18516ceafb61cf2c7e7c511a8918bfe394c7fb2fbc40fb3052e156cd4020fc674684f84 +R = 1892ac13b86ad00e38ce2427c8c78c93b08605a75ca22b3658132dcf9d9df7c4b5540a0 +S = 0437b33615c16a85ccb8c4769ee7c5f94122d31e2b5fe66291b401fd90257ebefe33818 + +Msg = 9e4ec74c09528fdf3153a0f6955f20c70915ff524b2e19c991ec4c5b41ea9185e3e876a02ed6f27c9b3479dba951bee8680c4c99be1a626808114408856994be7444ccbd5ef9859fa479b1050bb836034e20c531b4d618f5843fe1d4b613a731895b489a2363f3f5397d5ff964cf037e9b11e3ff5e1c3d403e5a46b8387c1241 +d = 173b28fc29f10245221a907778708b3ee62e0480aa9051d4c3eb4e8d552e6aad5509943 +Qx = 24bb9bdef975af892ddc1bbd31314926a9c81f8f1864829edafdfe2744e793c100c0483 +Qy = 28ddde61b4361ced9c391c86c28ece9b902c48d14c61684962007dfd69d0468dfd65e7f +k = 199af64f79ebbc5b789d4676a07c224e4f6fd33285e5a555ac90cf65d0b669bc58ced4f +R = 137d746d515b90890a413685bd9b26a1c05efee4c11a4b40bb621c9fa2580c46c20a687 +S = 1647f70ab7c68a0f522420893a466940ccf79067b323d940369f8b8694ccc3fc0daccad + +Msg = 5fe8253d2134c434cb0866796013722e82184638b024a5a30938039929ccd8415c71f71f239c5c5a81f7a9cb493dde209f189bcf766c17c6d9589cd0c7de7f07ff9f24d2320669b589d084f8a8ea71127b9760b7355b162616afb34bcdcd416f1a062035102e29b70069b2b4dbf70179b8d60bc2ee5a455efd40194533bf560a +d = 0624616adcd45e1fdc6cfeab2b17230d73d91fe0b39f4664f3c6891554f9b8e238257f7 +Qx = 10917ef84bd5c0b36c97cb5586d3057a34f2827f239cab2af2e6081c5bdffd48dccb0b2 +Qy = 78ab47fe1bd3e28055c688c78e617ddcf6c5060123e9d65c562df2e94cac973ab3b1807 +k = 0795e229185bc1b3d6d69b08189fdd7a822cd18ac55971e4b35e51838bf12eacbc50e2e +R = 185483378a162b8edd6a12f44e3aa4ff829630fe3a1c9ccc66e34775f69bb6a94282489 +S = 01662cde6cd497be7966a0a77b0626ba3c4b82e20bb3f2e839178a31aaf440aa0e059cd + +Msg = db49891838fe23f0530abd4a4fbba5ea970afa5747f6a0a10d2cf4d841581ea2178705c1203f00cafec91d0a72d25448072c9cf7d7ca5580b39f8589ec63128faa95cb0689574a6bebd515049a1eb9699922cde0366b5cd58aa8f3d3e847706896f7e1cac667fbfe94b2eca9e7be79a810806ca4bf53f219bb30532ca2254c11 +d = 199757ffaa2c59e198d66824eaad37cc42d49b2e241b6a60382d05e425e800eaaf32470 +Qx = 6ad18bdb3e51cc053f56b9f9c35e2d6eaecbc9749f41a9ffbf54634838d7745ca064890 +Qy = 5dd77c42b31aebbbb46277176df08d81919ee0d9ddf14c3e4c0cccb207bf649c48fc8b9 +k = 109d6332ceec5ea211f642a746a6ce055986b4a2feeed7e847904f7f411bf8361318d92 +R = 1a49fe690a34151056d290790a6bfa7b70958e69e9baeb30c55efc61dc5dc4934f2fc95 +S = 1710a4ba5b404d65f66a8fca2751a920224db0cc0266f7b0bc054069ea4cc51b1f017bb + +Msg = 29d385d09c1142a7c181fe4b6e6132e414c15aa8605b44208c0399464613b966edcc2d46cf203a3f85d943d8eae658695dac74366224a0d0348083bec0106f5eb8809ae8d07f792fdd7c48fb1a25d5ef3bb9acd40b20c61c821024a9acb2ede321bd2d0dda849c22d76f421cbd8d51565d3c4266f666455ca1c0c3777aa44107 +d = 06e51381dcf21050aef2e9b97e35303cf3bd91956854ecf9b6b9827871d2efbe8201c5e +Qx = 52fee805d7938b8b97459b9fcb4b80cbe29f20a9aaebc07ac019539a4a966c5ee41751d +Qy = 78aaae02974de6530f285b4bbe87fd5d0c9a2ecfde5fdc9a3303e4b988f673c778004bc +k = 0b426ebda6628125d73efd84e6bbab6c4c8fcf7fa29ffb3c8d6b0a861dbf81cd18d088f +R = 1270045e963b59e4a4f1237c2240a5b26a7ba8e28ea01326fbec00e5d95d40e859d88b3 +S = 1d721477ee1df1388e1b7f92c048e5759c060ce1291098a2fa647974a62a258a189b4cd + +Msg = 774c1cb8fb4f69ecfb5c7857d46415568d88f1f9f05a4bf64a1e1ff6d64aec16e1d09292010d1f067c68dddbcde06ea49be2ad3838053f0b9c0c2383edc451ef0188565118e7b3c66a4fa372b96633dc8a753106283b02d0322df273d58cc9bd061ec219f1e1a9c8ca1400e5e39c1b2c254273377dc98a1a2c44e5c2a5b89167 +d = 018adcc22cb9a2db64bad3d60f1608c353e091637b948914115ebd43679904f955c8732 +Qx = 0630bdd8937e961d5396f9ea5310123a340ba316fbb7d79bf8573f27a0065c6fd6f8890 +Qy = 737a0ac1116e0e2979f973cd705588a71cec5e2a9f22e7e81fc61a4375624f55a6182bc +k = 10a0c04762d02f9d3014bbff287864743426cee14daa43b22149ce73d1ba609c0ba6be6 +R = 0ac29b041a6b95f9ab685470f50445d416df5f7ee06313185794f2b542fcc00606bed69 +S = 00a4241b97b6ccf0dcd533a15867f5889349ec353395d47e31c9eb6b8785736b3e285cf + +[K-283,SHA-512] + +Msg = c406aa4295f85c854b4db2de5a7a2defae53a319866921a3673af5b48c85ef22f6eb4cef892c790d8e64530fc20c729b2821b5f5e515560b1ac764106560c3a6a05657e34cd6deadfe2884bd288cef4ca92e1f25adde7d68a30fb0a1b3678156ced62e466718e68e9d67099ad82613b8d06bdda1a7b867c2455422818ae9eeac +d = 1898276f159c10d92d8d4b6ae214d68c72792a4b5f1f79936ca3c063dc8d9a88be439e2 +Qx = 394cf9bb273923c88be7a1c49412ab8599e0cc5509926102c122326bc0b34243f7d1cf3 +Qy = 72330906f47e8fe95f63d0f0aca1115e77fc702a923c32a16505bcd9021da05fd9cf63b +k = 058772fbb30227a136de616ace4a0334be0996d60e9772ae9bf672b7c38fe3ee1b24f98 +R = 10e0cd3fccd1728e99e2294efd6dd4797b6492ad95a789aab7fbd177475a047f1e5d38f +S = 0c5e0b2d1991718355be14bc57e2d6ff9fa63e0812b9adae69f64da610cc6cbe36fe4c5 + +Msg = cb2809152f8258660933472c06ddcdb65f6d5221fa29d5b0efec9c2a7914dbbf9ce0a468ce146fb333d26f510a87a6bb01bf8816756a1b5df81c5f65360957cae84ba038e37e88777580e91c34e2f5aef4fb55af7b81ad28aeba05e0b1c64a15381a6719fd2c16e38a441516e1b394952d984baf9e051b1dc1bda2e12f8ba5b8 +d = 12ff37c808c3cc029a9cfbb67a5ed21f3bf362b49270d4ed0f1e38fad25ebd79f112a50 +Qx = 0cc00fb36bf62e777a9f6048761e53633b92866158200c43900db95aa1342b576029090 +Qy = 55d7e57221ad939f5639282cbfc203114ee69baab4fdf194f4d2a937d8a57b70b54a907 +k = 163d8eec726d01a1bbb19995777919f68689f7c2920f3549fef966593c4fb012a5c3a1e +R = 0cbf5c3bf1ee58869e1d3c15a05c23217f1c252da97f79334bc79efe3f5c62164669ac9 +S = 1fd51644f471ea497b0560b65fdfa2fd0a6cef469021303f97753d22ce1993d1ae5b96f + +Msg = e060af96d4a7fe512bbf26be9a27bb6a8ff37547d4a7bbbfa710db24cffcfc760dac120f89f642880db2df6307f9ea5441d5932d49762d182b29d8e7fb067a61ab0df622f75cecc917e27d0326085d34581e052c85f50a37713e27518aed7c4434f86970e00a0a4b8503989e72614131b7164c1bdc82d2b6aeac0787f9838476 +d = 02b8c1fef9c6def32b5f4127273ce384b6add4aecec957c1662f52334f5ee97f49852d4 +Qx = 36a4fe1d77bc431012d25ff49fb5468f975353be70e7507d71966a0ef433df51dc32324 +Qy = 58d705cc883a690641f0ab85af4959ef4258a7ba9cde36dab77c125a1de1d395366584b +k = 0865f59502382b324e1dbd75db150f342336fb19145fb43a733971da555ac5828a3457f +R = 1ccb2e56c02cbe8038bf78dea256704ee6e51054668ba8c2ba11aef4ac6f9320d46ee8d +S = 030e662c0e7d47cb3b835c63599d0c9c2e77ca47dbecd7ac834c2babeb039eb630cd0ef + +Msg = d235c31f0a82957a087c7597673970aa39321d4c2640685a03df8388b5eae4825d1fee29926f416d5e62a2e9ca1ea7cefffd31607e750fa9675983608e0f8dc895371b190574d065c5c0c23ffdaf49e65362914363a3fffbc2c1bb487cbd4f69ec22dda5c7dc3bbab805c81faa85787cc176bc0e5703924f395d8c9e7e7701e2 +d = 0afb1c45e9a9f02942b8e04da4b815498454dde6643de186625a98b3c1c6993abc8bba4 +Qx = 02fed49c59e9d5c09202a5dc29d8dd527a870a180feded66ea6fc94ee094122ae97656b +Qy = 3620820bdd5910037f5877649be38db3571a9c6ac632602d2013d0d5abe1f00133f6cde +k = 1fe749d9916f11100af525ee343b3b74a493f92339e432a482dc8e86ffb5affc4630037 +R = 120f6f13331cd4d1a5b9707483c74dc0722452062cd4534e94cf40840d22ae263244a51 +S = 0bc2e37a481478f879de612cf4a833f7e12b8df33f5b0d6ac5f5aa431678ff053e2bc1a + +Msg = 1a2559777a5fd8f269048feda82c4d9fceca95803f84a813789d6ed070422240e443789c5231d63d5268ddebc060dfb99c4eff2ff115d2984d8bbc5c05314562ea6864fd543e7e0a3b8572c017d8ae3563027d79bbe164d40a5bab354720e45094b9b26391ceb55339592fc2f10b97dc9c2649f7227648f5cd2fc46d78d31c0e +d = 0ff537d73a4da0ae3a4894016b71dccef3bc886f3d24a5abb7dd96cf8fdcbdf0fdc5e51 +Qx = 01bd0537dfb29f727f91fb469c31164e1bb0ee192a5b89b880f3fa40e3e5437f0d2f9e1 +Qy = 6df9bab2f9198494094a63f2ea091f60108449f0741806400694a93702f61fb0351a81e +k = 0bbc511c6e1772ca6cd1cd308126c18c5db498055a4b3f1cb0dba3285f6d38b083e647f +R = 1ba756f3c89b732398b90bfa2f92b2a77159c530a8020b75cdb9697c6d75c18d36040b4 +S = 18207cf326bfe97d657ac4197ee5c20c75431ee552681a92a5815db0d984fe597700bbf + +Msg = 658c0d3f764bbc952fa55a258bac16a5bb5184bfa76cee06baf9ee6b9ac3f116e08bb2406b1dd4be487b057f3b29c2043ebc33019b2017c4deccb86f50ff15fc9248ea5fb64261120b1960525aec3cc18827c23291722c5add8a3761ff8516c61956c62b8cbb13f3d92bf3eb45a70704c01bb3625d21c38ffa83a6db086ee968 +d = 16000d2e879906d1040b32eb6ba3caff700e5565871ac75f10c5c15b509964bbe5e14c7 +Qx = 2ba89255d1c89e42518662611e2efe3b5e3b8043926ae9c43974ee2986185269246a433 +Qy = 2b87762b9ada81bde958d1f9b81246f49098695391ba3b4b3b9ac5727f19fe42fd07946 +k = 14e837476e628007b2df21b5035a39c24cd4869bb52dbbe13c9666ddd8a7e3eeae29f65 +R = 1b5091fc755c0f908ee13ef9bee40dd16a5710befd1e265a312e595842d52cc135fd722 +S = 0fa25f43c3c074d702e45d216e3704d942e9d67b3c0728645ac6c53b9be7300061e5fe5 + +Msg = 4f10001e3517c2c1f973b555f4827681e096d860c4db08f1f4aef8000c9c24bebe59f8bf3d7d3cac959a1a5477bb0ea43f2e746b5d14ed48a58ef35484b0ac786d2fec669f945e846ad73e6b77a9e47012a951b398941566330d89125eb3c1fbb2f06adb951ff5f047d102fdf28b5cadb4a3e1a10412eb3474d2ed5c3fce78f5 +d = 019528d505bf0584628d0214bc857150a929d3f59619bf8f3acab545fff0977c9bcdc97 +Qx = 0cc8863e1443e61fedc61abaff87d80450345489728d78c333b36fa28d8754a29cf3ba1 +Qy = 0205ae70c35396c07f9f96aa7c59cf8a28aa2a365b4a1b68e7414d8c4ae5220c8bae9ae +k = 13d555426101fa3c239b7830fe0b6cf08a1c01f9a991f806c84baae20daddf5dec8f868 +R = 0af8bd9856dfd783217cf81b09b464614aa824b0298f35308e6427c679607853eb66c7d +S = 0e6c1933d6ce25d0a00effbaf1db2cb2542cbe7521330c34286cf3bdffc20c001cd7722 + +Msg = c43ec3c3232cae59bdea7cfaf18a4672035dbd2b8b6b1b44ede376b36cc2d8baeb921e416aa177f5977da8bf1d713509e5251278b6622790056271715cd5feac58bee5baf50b216e8eb886279c5a384cdb696470275b7487fe9ac4c506706f6b0f9809d1ccb102546a4297d2017c2a8df9f02f30d3d1bd9aebf6a92a02e0d202 +d = 067795ce117bc0a389397fc22a01cfd9422cfbfb5aa44131938a8c45e48e1d5a718539c +Qx = 07924de08acfae6260009cc2f02daa2fc2a809e6ab4cd8858a9e9c2c15b17e29f1bc5ee +Qy = 04f36cc2d36df63474a579b96f6e59b890782ad8fa865efd80abd798ca2938bacbf8212 +k = 1bf3242e75f8331fe70113ec8e14ad0814850bb8cb262c7d0a44ca69de52d32dfcabd0c +R = 145148d59c5be2b6d39dfa33e904c161456822ec0ad64b9dc52befbd6496c9303fc062f +S = 0b75c3c404d694e086c0f5aafd534e7d8596601f675b2fac9384fca6084711e35149f9c + +Msg = 9b7d675a3d2cdeb280ea28289b5fc2a3ef6b535ebee8ad242fb031e2e1f364e8ee806568b2f8627c5a5b4f51f4f65c71acdc1152c08b9211b81907b551e0ff47f5a6aca45dcfa06f09bf195d19d7b165b52111b601fbd97b192f62465f8ba20773b1599c8041e91448eac7a5763ca0628f40768324c5304e1119ca6a1fdb0778 +d = 19269dbfe4184249952a651a507584746c5b62c64cb3b17e0158aaf4d086a4afb0330c1 +Qx = 6c60a475f2a3635fa523e1b138edc36f51e94a34e75989c2cacdf8949115d96f11ae752 +Qy = 494d5e23ba9071b3e52c58b1d0740cf90cee7b084b9ef7a4a7be8aa47ce7b3d97c8c51d +k = 111f4dc771b6ce5cc2f42172d3d70fe77c73683bdd2ea331ff711b7e9d8c3e4f2d7d6cb +R = 027f224c01847c52ebc180ae81009923ae3453be1e0d94b5c2934603577f36653ecfccb +S = 1e7b771631e5e72b7ddfb9c73f684b93270269ba4216cf3926e43b2ceb49756e7e7e0e6 + +Msg = f4a08daf8f66ce57a986f14b918099bcadcc4308bcde7c169ce8536a40d94a928cfc0968180a2c2a242c59df73ff79a03687998c421cf9a0e661630378779a4744ae2a6cd24ff61d7fcd6c11a4c8bcaf358075e96f864df0998ee98ee393b37bb38747b70bb7a208740959b45174a60153ee566e0f62528e9a5e4466186fa650 +d = 03835814de0d6441cd80a44e40350cc8bd62ffcc81e939a4410bb9c9259e30463c453b5 +Qx = 5ce9f6c979bc1d6bc41f41095b7677cc184da8918265a7f0e5b9dbece2ca9e0667cfbad +Qy = 39a395aeaa04f5168de809164285974d306e474a610d89fd401c375c9b73f0d23dbbcf0 +k = 0b714d734d063aa81a389be69c56dcc23bcced3517e330572f79c769645e7dd2fd55c20 +R = 0e4d4494f91e79f2b1d1c0e22ebf744ef448f57c951f1b5f4da3592fe60008ab00f5f7e +S = 02edaa4d8731b598c24b993dc5bb4888ea3c2dfe2807daf88170982667e69b76a8ecfe0 + +Msg = 864647405c70939fdb4c026bcad53218ba1d438d82c9138f0f0ecac815dbfb242307cca52c84826cf6556c51082a23f14252dfaea43ba229f7493db2bf8ae9cdb0228dab9e25cf385b504b92cca94f813acceaa1f18de851b8936c4dfe9e4e17002f02dded6b4c231ea5e614ab46fcdd637b8c6193e8d0c2df1b3d883b97e1e8 +d = 0aee83dbed3b703cb6e60d51e373eb20e298ac005fa6a572d02fa1e6da0345558ad2a46 +Qx = 0dc25760af992a8ecc108373281bd0d246f95933ec943f6346c1b2b941a03b33951f622 +Qy = 6e35f02d225ba11d2ed7ea392898f78ca0deb2a47871eba6cd2be7440a410d910097de2 +k = 1df142187f8b27f4888075a3784aebe0fb7d80b0b6d3497a7adbb88cb6bd26cb82109c4 +R = 05a530bf1135ea6d599928cb0383f5d391d19be333b1577ee4eb6f2a78b54e4aac0e09b +S = 06f3033cf392f698d1a1141cabf138c411f4e20687920f2915e17e805e8657a887c7953 + +Msg = c87c8f3ad5c28a027b28ae5021dbe8d425f74181d519451f1fead7a1f9dd102fa6785b147b610610cb59bfa91fa363bb79ea602a7d7e1439f874c5dce748e5c320560c2d9676f3a948754c72b6db249478b7e19c9829ab4de2e344535d3e0b7c20c272f82556a280ef491524b255c4fafb9c8ecb87b0149ddd9d7bf6159e3337 +d = 17b65c66514019ff935e9d571a4e68e9ee4463b7b9a754b93f4f7741693f4399879fa8a +Qx = 5bfb704629596ed05096783e49864a11874f319b4020917f1ba700ddb0606e6e72c1793 +Qy = 69194592be64c33c2f63771af0e4100d060e9750031048002680541815b311ba8f7ffa9 +k = 171b5c698175300b95dfd5ed8d3fd7cf4e19105ed7193b6013103555808743501ee8c46 +R = 13f001f287dd5c7ad9af8d0105b47caed66ede41dc1e121a602610ce20e41af91cbe586 +S = 1433d5263d5233c40c0ca526b3657fcce8cb88ee65105b5f5ec82b26e12bfff11c8812a + +Msg = ac7da7611e2ade20aad64b418a16e02e79ab4894d758550210eb10013a9b5533132be701f8843c840807c4167c38d21dff168d3baa65d5bcf285b73dcbb75819f8d7a20a849de335e19bae2aab2ca560b93d340731f291599a5b28afd7737460d291105cbba6d0290e836f6f6c1113d1b2faf90ac5de7c64e25206d79380a4ed +d = 17d2071f39ba35515a8ec977ddd36ca15983e15bcda626f15af61d87d58114f4c80a8be +Qx = 6f09c255fdaf78d7d341fde4586526fcdec34a28448c7fe65685a67b6c33564ce9249a3 +Qy = 24ae4483fcbe3f823a7ce53db96ef2f6c68670e107e68cee4f358dfa844112d6b2144e1 +k = 1403078da10f55724fe7b56dfc55990507307386ba82ca8f6340d33769ab1f6ca894bdd +R = 0a54a35767a1cc77b2332b04694404fe5a31ed8851ccc2abfa5542b0f5acd9be9b1f02e +S = 0577e0a1937172a6d45177c2b328d72f75a08a8a774a31151b89fd451d531348695d870 + +Msg = 5757c472fa2f81430dd920f39b61066a28c870b80e6c96f822f8f19b398c3574d159cc22120454dcd7e97be8211916e4bc8db365b2dbb99a6e597d06e6645046a0abdccbd06741e9c0eedf33cb78d78a540c2a390719acc498331e694e6b0118cf4f787b51c7b7237458a6149d6dbd0a08bae8097e919f970fde920485e9a0ac +d = 11504659e12235855fe55220287a101e511d39a627f8a0d414446385d4a88f31507fe74 +Qx = 192fb9bcd157c7ef385d48470c3173ccf1ef9650da7d680d8473d45ab2064a073232ac3 +Qy = 14ddf872b711157d121b0a61b88a7eeb7cd260f1f82ec5f62fa2681e28c7f2640e305e7 +k = 17e10962721f041946bb5ffcce724c9f284b1c8970f974a069c36dd4391adb8cecb8bde +R = 1546450d25e2536aa14b8751e3b3e7eeec8a6c1cd967ba0f03e6bfe64c0a59072280636 +S = 0159c8d6499fcfe8ac7b2e84990a714d7888d883c16c016c4b165f36d62c3493afa67f1 + +Msg = e350383d04af0f4081bf09b95d1d53040e7acc64e56b13b653df31dd119617b800e0cdfeb935dfa5d94f1d7814688d8ce41021810958759cec76560e1e5c0581456acd1a020165849b2203f1c11d318d816697f36a86b59f160faeac7dba71682d3c031d0d547725ef69cbaa28345512e38b75ab011911d8924b2d17a857a96b +d = 16e4cbabb03215767249ba2a608708b78d7387be9e77f5efd2462467fa05e8dcde2c036 +Qx = 112b7ea5d21df8ce52772a1b76a52ef6f0da62cb7718a467a034618b7ce701a05cd2467 +Qy = 649e0ad181437b4eeec87e202d8fab1c240f9dd9b31311284c24d89160b1895be541319 +k = 120e4bce412311d3e7adb36dc11d4cc1da8a4b9d6cd5219e772b3dc2b2b8ce08833748f +R = 1ff2d53a8e6c1c23807eee681156a146e8f2cc1a8c262850dc69dece31860bf094e7f73 +S = 1e8906c0bf2a5f922ca271def90d704a1425e5cacc64bc5761b000c7df0f8f9fab51f2c + + +[K-409,SHA-224] + +Msg = f153cc61981a46d8a47d17d29ec157fa93fcf644beb84558db7c99c57fb131dcbc5b65581ced5ff0b29bfdc66ff703ecdd4290f7c353c02a3e6d6867f33f3dccd1a0b6752b8a35fa143f8921a5078af9c85b212564c5b795da9858c7955095938fcd10c21e35e1abe905e84c8b4bc05f2a06091ce876d9519b96951d08c7ac9e +d = 011c6528939672bed3e8c905b7ba594c3ce95f37fb28044f210cccd01dfdb42c10e8e1a0b5d6fc757834ca7f08e98cbc52b0edd +Qx = 00b570ec1fd09d7b4d102f83cf37129d94c9cf2f982b702c5d1172bae2df558008518493c08dac6f76a6646156f123c4f33e798 +Qy = 0e3cfe1aafbf25a5a4536d6c0cfe13a540b4a3c97d4e7bc6c0346addb4b0c32dce089a7a5385e8a3e67606b45e2062c642bbbad +k = 027cecbe83853037cf46aa98e1e1e552a96af0bb24e57756d8239fea5d769b51b83f195b7801b562259ee644ab4047764d130a0 +R = 06a1601e07dfdff9d3b4ffdbff124b717403490853099fb4a00ea98f84ddd64e908f99b40a2ba6ab88b2491a8d948fcc2f207db +S = 0741d27c0dddca3641b56ba1e9bacb0da1fcee46b9e33ecc6990b98cf0db74668ef1009a50e5d55f80e6642ea48689a529c8a08 + +Msg = 258c91524423b5c876432b1930c7b07b56eb5e3945f1e2296a4e5bfb9b9123f800ad195d6104641b1f1970bca553c2032f83d17252e52403a9381c1fc18eaffdf026f7537aa27d84c5e3d6e39e651a92a41139cec5181fe794457f556b390943093be719acd23fa1ddf7ff0aaf0479484a381a309b4f681af74bf97caef08c22 +d = 07e3b714496dd118d8f3f597961eec5c43d0265bf85723b0b9b0616977e0acc2cf686cb6afa6cdc19114e27ab000e762dfe467b +Qx = 07dea0ceb73b9bfaff7147a36436cfa7955eab02ce7fe9b60dcff3e088c5c9281be5907de3e06ebb2e21dce8bf3ff85feeed500 +Qy = 1cfa9b30af20612666e5df798f91eb4647d8f5e1747c1b18adc6b73a848d987434c56d13ad78b775c4096e9f20d4878bbd9572c +k = 028a8353c05129dcaa7caf0343130bf2e2186b9cb5ed0a27a565e1c24eb882617cc299d486be76fe0f8f3c52678b6992288d7c8 +R = 034299ca2aaaad51f12c90e8205da305523713516ba6e7d245eed8ef94a1b2409b98ae93476aed6c9b9aef50406860b4e490db6 +S = 01a1adc76c65d77ea686d769dcd007c0101b4cdd0934402fa47dac22f8ecac28fc05c2f6763a6781655ed5e7d84c41157255a4c + +Msg = a16a0d6fd57240fe88c7c36b9f7f9040cfcaa9afc4beeb8300818c5f90cce73b819a12c31d42af33146399cdfa4ed4954d068dbb0f1f342269dd29f1fe357e7224304b67b0f924b794780fe7e6aa9dfa3380252fe7177b43e7b1789718949b9ec1b943c83ed4399491482f0f59d2cb8050ab6f8b5854d76c50651428cd29c40a +d = 0182d1e937b037bf7f84144f7d4c94c935269c9aae7d500aa459a7a0ec113b232dcf282908eee4c84b8106cd38cdc41db3f89e1 +Qx = 0bd4f1ee6a967123d70d488dbf0fb43aa5e93dee5794b4492277fe559776f740754850477e275cee9f1c375403a4933dc986920 +Qy = 191a544b98ba954cc6e060ba26a52fecbd1f0dc7c15381004cccb799a9f7960a3cedd02d36fcaeb0ceb844bb4683998d776dc5b +k = 07904af733742716366f8ba07086f924697ac8a01bb4895bdb5715081ee89eaeafbff4cec44eb0ce14e774dba71bb9b091d2594 +R = 0723b2068957c4f2ac1df69378fc013797a3b071de30b514c3e610002dc8bfced32bd2f9e8f692b653e736696cf818b0ecc1e10 +S = 058455b8f9abd5fcc28a4ef839ac0245c3feda1fdcbc3c171b6928c6abc931e8b0ec34382d63e414657e9319d2965fdc9eb74cc + +Msg = d02ff569828fd1add21f6bd1c50cbdcd09222e458ee79fd5dfdba3cbb84e9d926fcf196cccedece77d5aa17f8c8cbf3a9facf0f02c71d5c1c8aeda9d75f6fd7b6f2c5c70dff992ef6e02c438fb3c66da5a503b3c39acbe2a069da457595b542190d818015d462670b0807c401e36b1bfe05baff3a8ccf8d1f5f8de7840e87993 +d = 07ed09428f460724c8a5225a31151e031d9949493fff5703369c401762345d002c4ce424294baab22d9e71edc4f854510cf0e6a +Qx = 07fcd003a8cde5503f5582a42738738ac7efc6cdb3813a00c072fc114006be9881c0a881ca35988dcfb8088f3d07a03943cf230 +Qy = 0e7041e666c1bed3b80a691ecff60ad4afe3a544ce58030bbbcc130045e2c611d65f322ec78aff6757cb5df8ad54ee8a09616ea +k = 02828c8c4bb1722b0f03262de32ca8a605c4046badb20d8eb9f19aecc5c69f199aa48d09b61f285254425cb4bb5e0763dd471bb +R = 06c99d796c5d4fa21c5cb7cee0b7570edc9d7e9d7c3604f5ca3766b17e44bc71d8a74ac268b8713cc2ea0adc3dc1971c062b4a1 +S = 075962e0ccbda2280e502559f48c8d37704964f67f8cd3b443b89be740976f1bd929c175560fc8cfb282661c0fa792a5b200401 + +Msg = 57befce973b225cfce7f996fa5a1a43acd160681b88a87b7de04544eb7b6a719718f1ca7f559b6531bfc18fca3836d2be7f7a6e48387b7579a6845796d30e46f0dda9d82680f8c96c5f0989741adef9762c3db763cae2699cb6c112543635e20ed5cfb4b55ca2ccb32d2d13936085a8ff95ed658a54be73f80c912ccfe5f0ca0 +d = 0390f05b9619c27b800e99aeaf61ef7f6249367d5cfaeae3c7b523a8b29153eb8a77132f6c4412545a842d6deb7b7aea7e2bda5 +Qx = 1cbcfc492a2a6bb8a7341df67ef2bcdcd706afabad5e7ed1d63387ad9b0dbc47ed17b82de6de936752632e43c393a93fc5cec0e +Qy = 111768994b2dfe9677d9dbc45d4b55fbbafdaaa2b2638ba1605c35301fa557d628a87d0a7febcad9f8eb4b51fc9c807652579f6 +k = 00b8d236a9f8edba7b5207b4c7848807b933b214fa25cfc5a0e73f750d30051264bb9f6702837b0f65a451d4ef24f047ec4e9dd +R = 076bd4755427fda22a0f177624477c59de12a12621aac274b980b5e1ce5dc700591eec13dc5bb48c5c8643de287a07a48a6a7fd +S = 065a5b0a00548bcd7f59518f122d79c7552ca6097f3867604b462201add5f326807f0e8779f2177f277e5ed25253885ca81220b + +Msg = 4277ba40cb462860ca722cb4ee71c61836d2ceba18bc91f3fad7dea478972c6da0ebc02815eaaada1d1a5e93d7ab353855ccfdfc94a5742fe18daee2328871e06c1ab0a9a989d1239df2d2d27f96c415e7ef9a941f06c6790675361173cc229aac7045f49eaca207f59c497619ba32e932b5c1c6576812ee5b146e2cc7de5e62 +d = 007d18652732596add3db31f7a0ce6020d03f3df58131b0c7c633faf619b8210cd309d6c0c4083aef1a1b6d2a756adad0bfe344 +Qx = 15ad0682962b4dfc8901a0dc77d548ed616286733cd9b3ede937cdf4401ab8b3e3516d466ba43b6ab5356c4e72845767d55d27c +Qy = 17e4de3288ed44b48e7c47b16e2afb513c9763d5bf4cbf9a357c128c94a758e3ff946957df461531def2b8d8411b81f45f0c2dd +k = 01a896c30fcfdbe583d6b0119f467f47758ee01d4d601eb698f444ed0f76515c2b8053b11ae7abd0eef7aa61145a53d12d560d7 +R = 053b1cd57dfdd8d1802f3e295e450a155c366bdc2bd222d18a4d08369c25e53f1f633958b22d80755ecaf8362d548b28dff1ba8 +S = 069339fc6058762a99576a96e76f75275f848102bcbc281e59fda26c98fc48a3f1061755e80740a233e03287f510f4549bb1874 + +Msg = 57ff6792ed4b12220d179bc0ea57ff217f322c85bd3676a681d32d7e4a3e0c8e891fd267df17caba5992f68c35ff670b60b4bbdfff82404f6ed996c30539bc395120f97d4d7a652eaee82bd8f9360bf8bb73748b8bbda9f9480eb54f7eaf2609d4259329e8a5ea020521e7dbd3ec56f23c849932cbdf2875f5d5c774a9d6b0c9 +d = 02a91244ea4623b63403dba807d60b914ca3b901a2523244c322f2f11251446d3f15e869d086ebecfa1a39ce304e8b5c8de23e2 +Qx = 0b7ad8f0a52ec21e54e28ef603d76652dbfecc7dd2427cfaaff3d280f0d1f62187d77effcb433b5bd44c3d0c0d26c38d3f5930e +Qy = 080641bb0163130be4444f79c500ceb8d6a9b2cac42d21d31b2fb29da075bd41c6613f278944adfe92d3c99d494be9d4714e9b6 +k = 070125c89a1262a88f22e874c55ed149de6d961d6abaab2d13db9174e3cecb8f497529957058a0afe5361ddf9d3a5a3b923c7ef +R = 01a28cfad13969c6449e5a0f879e01ef7dc1cdcd0bc77d20f3989c588a9cad12a4b52743c12f4f6e2154ad963bf234ec96263f5 +S = 066d7f0b364a640c6c620e3d030448d155cffc9ffd46a6adfa1c13e1b01892463a4724465aba3eb07009fa604f3af18109cb72b + +Msg = f85113eda64478f460b60f8084220134933de049200a5f37884da7901471542e26690a5fabc3cbf9e679ade71b6e54d869bc136c3d34cc4a9efcafb777abf046b5ae5429136112a9a36a475121eb1f33f1f43481286fc1ada98a41064a1fa38c89e99a93065bb2a119348a9e452497fd5a0d2b83a66b09da9f47a0583732adf4 +d = 0068c56c6b5d50d1d4e13d3837d8c5e8ba2f825e121b63e97603fdfe78bb6899600ff0dc87b6b3b6868ad0d2f62b7b7a31603ff +Qx = 0d9a4f5992308013573f97864c23b98d276975d80cd6455e9f0d8a62d6674f3aee3d27dec15903da4e9d5908cebeb765ee02c80 +Qy = 01f61189caacb05dfb982bcccd603a769d0e1be8f9223288b5426e7f88854356fe825f11a88918085692f33b0f4c61ab09a861f +k = 02ea7f0d81fbe3d4c865ff5315d1cc38f9e9a8653fc91dbdf445b62fe09b30ccddf508783ad87c8a48a6ccd5c9e817fe2977f90 +R = 02d7847479c16c4cba834ce5962724f185be06cc04a9a8d710cc72e6063a7b64fbf2694f5b62de65d3d347d34c0dbfd5a4d93b7 +S = 069e32bb19d20e873d0e62b306db4d5663576e4b2fe75e8ec79b7a63f38c8f1007a817ce30612e8578d48c63b04b1d34904010f + +Msg = 42811e9ee6dc509572e1cddbe5baf00afeb0c5c13e3755b922eee9e210001676082bc9edc3d78db2b5bebea7a2c0cd2b369226c2b8f83b28f33fb513407ab9d287d14b112d6c3be2493805ace5cf6fd366d03cfb28f4ce3f0f060880db64d6962e997463ba7c05b6fcd1e66babe4b94afc5c2d38c7050c69571d27b66ef0090b +d = 03c88084f8b78446db431bd6e240a0c050813d2a763675b0ea869cbe183df697146cf29c03479af3d34587a95cd257027fbeed8 +Qx = 15a09436de00d8d129e297ea60e04b704c0a8183d64a77d1c527189e25e21d6bb62be8ef5eb2dbd833e5f9c7d5c3e69c9c01882 +Qy = 001c32ba376d2e9de28fca644b0d567ce1f4ef0aaddb2adec6213d03bc8cc99f9140005bed3cb6c3c0f5533275734aaec47404c +k = 0132f4763959863a32919eb591799ffb8613797bd0b617c73654ec9eb32e2fb86631b66e28e1b4cc4aeba65ba8c75aa1cfacd73 +R = 05fe0ccbd430d9459e0093cfe2c1d1d3edff8c1ae7111299d2e04f414c46ed2cc88ce9cc9e23e187e87ef551de993f52214d609 +S = 0557acfe6347baafe031dc16032c45559693e2793d9b6d372670b09757c6f4a3e5ae5e55264137d1859c8d9f8f03c25de409bf9 + +Msg = b38f76ede7441ae0887e689d556f43155b38dab7cde487ce9ef9a46f2957c830d4d28006873fe2368197a6931f6fcaad755102686a457a7edccc8d344e2d2a9162e3d71d41c09a022539ae6d404955a6ad748231aee1f974d4f159940532fb3b1fa0254bfc5805d2fc68696856fadea386c542d3cefd1be3af04ca595e54be25 +d = 051af7b63bf3297ae20517faaa1552f4fde65819dbbff6a52721611e5b7dc1242ed6e69768cdc37ea8cdfd1a5971f06b84b5803 +Qx = 09cd1280a2a79b182ddbd1712dbfd12cee3345a89636d7673a5fc3e1e51400603176e27d538e90005625aacf5cadcc8a8c25532 +Qy = 08b5aabedce498476b4c65ab3cdc81f819c2db670a7236c0357a86f9087b83e7568cc6e5139fb92f81975756d7dc4f48be87df2 +k = 00bba308a3eee9e3ab6d2482bb728bf44cde9eedde15af7300c57c2c1e6fed2ee4e404aeee3923e7871a2ff4ba6df64f9d01a87 +R = 07a9e69664b7b81edc5d47c014696d194b2ca4705b2e79af692b285ec476169d041dd9eef20f7d496fc49b8597574d2602757ca +S = 01521d7cf6aeaf1c8dd54a7776cfac02967983083770346d9768a2629d606be90d58ea82377413a0fcc3e4e66f05a0d05d933ef + +Msg = 356dc86cef7979148e995fc5abe2b14a7d5e4e42c9b3509b4363bb80c581a66f4e7e4aa53a4bfd37f9a7eccf75fdd726f348f6a3f779e6599f61bd1d668517f40453b39bcf35db0852a6a6218198f52b7ceda2ec55fca5abe8e5d93af9a42b9ae4de9530c5870211bacc27c39aa094013db703de2fd3121f08d7e97dbd4e8946 +d = 03d65bdec48972d03811b78150a06956eb22d337dbec5416bbd8185a6322cd8c0ff8000210dbd1326422289071cab65175f5d10 +Qx = 00c9c1bb0a80c4b4863d78003e21ee60fc553ff72968c165f6eb6940250a6cb7d545c6aed3760e42370df79b0d37c2d1433c486 +Qy = 01a9d994828ac09a86c18b9758b3f6b91a5775931a7a6e4d8b052204c972b993a3b420eb8ff7e91df77253a9f5847c5968b5636 +k = 0156d12708324cd30037753c78225d183723d3f15930f23bae854f121094bfffb5d7dece1fca93bbe7457a2237760aef3db8e3f +R = 071466e80e2a7cd8e6cb6dfde259a08619f880a71899c58bd4cd33c29f7b321d269533720101f2ef70f5b8e8f05c9cbe1ebc303 +S = 077330e08712ad709f855d92355cfb7d565efd806c6a853712916f7c943bfc79e496366deba79ef7491abad23086db341f339e5 + +Msg = 06fd39a50bf25e89f1071ff81fec5d1e35b6dd68990414ee403dfdebb792627b6a4ae3d2236c159e4441ff90b61ec87b1592c538515f0486b19e58583394a05e6411e69b4285d6d6589982ac0eeb2c912c4948789cad741183663fc070943389d4e9a1150b8f6088fc50605915e9e24b2d98a1f539024770e4820e14ae42ea8e +d = 01f1a8b5f35dbbf82c102df550c72216a243f986f0325920f6186a16d1da74228cc02be6024c7411160c183c923c743354f9438 +Qx = 157ae8d90fe2416f70a7ce0669acdc0b5064ba650cb5416e59e6672e45b591774ebb2f793c3a58e953da1ac08272d0b949e7b50 +Qy = 06d49b9784f8423812967b857e25dc3af1312a6ff29579f6acb6e155b6848ffac6fbce51bd2d41a22ef955f690e2487a4bbff00 +k = 04cc45e00847818397c6abb3d176cb8bd77814abfc253e3b0d799dff2c3e09a5195ed5e6232873f2783c8e670b52a839e06bc30 +R = 067b418a5395216b83ab00d5568eeb62ae0693af2b0e4d052c6feb70562dcc06ef852002687099dda114477871b924775e8460a +S = 061d1e4d713689b2036272ad41571759b52a78e0f8a84d1f3a277aaa33ad558f0b71f3c5a99d403e49df1afab66059db20f9f32 + +Msg = 6daaa41150ea252a3e966a338377307d909b95080e006f13027f2be5059d9208930c5a329994c0b794ef50eb059bc6c215f68cf42260bd410f9bd86d2ad5ab7179c7c92de4a93a5f6aa17de5aefea815e7c0b78a8cc53c21dc4dee037b29c9df4e12343109283ffd5d8a3b81fba1b5e95506c7e01ac056c86dd0ee23bc21af0a +d = 031dc621200cd174193d95e9092ffb86189c52cdbb9ed937593f2cde7c4a0264b9100e1b8407336c8dfb5520d28a18dc4e39a89 +Qx = 0904bb904d50bff09bae5dd21f425c808b41001ac917b022f7e1cda6e46504781a69baab4a6f0f100c4fff9ced26f871159cd30 +Qy = 15cc300b0efbac707635c72bf855de4290f1b8b70c16f9bd0cb771ed5c760ada04d0ff648f118d64e0aff6a6de16def15cf7437 +k = 07e32b1fc1cebeec3d84f56a67c8ea2b78723e7010a725ca4745e849e573e8e4a4ce11d1af4ee508b80fb5336de3cb53161bf44 +R = 071cd81dfbacbb67be5903cbcbe402c0420adfa9d14148bea600b178fd06278572d34eb46d857085a2a4f48cd4ee9109d607dae +S = 0347b1029e67a6ea2a45af1f7410dc951db813eabfd3c7f3e2c294b81e1c54fa8c98569efc580b68007bfa316424ac6eb353ac2 + +Msg = 6378dd1c12c5197b57d47dc46a67949bdd1e0809004e94d49b0234126a08ad5bf8723ebfd132145813136d8b7dd096f56c34248f09a65c34f60c2f80f9a51b3795f3d2518b11aaeaf6dd45a323794080b78f85d629e5fa719b6ab0b14c78cd908befeaef0dbfaa08cec9318bbcb376d48b11b68735c9554a45293db5e9239ae1 +d = 016e6750245a88340b0f0665b890459f8038e9b1366f2fc1326245a88d4c523ec94429f21869ce3dbf75126e58f77241c99efaa +Qx = 10184fd47e8e1e4d534ca1cf67f15bc8a80921b07e251c22eb88f25395e08d7a9283774aed204fb5c14aa13c63a94ee691b4ff4 +Qy = 1252ad972bb8c0b286c222f42f7d42ca6561bac5e517921bda53e51043f13e711da8a813bb6880678e4d6a16820bab819d62e59 +k = 07f18539d00152f5b9a75d4f114812b87024e8a8f9c9a8d12139d0a74d87986f4305bde60375918ff2dfdb88b6deda640e17364 +R = 0735a15e7bd1f69f4e90739d42ae239a8e9238ad28b63ce291b57cb5b99922fbd5dbb7f74fcc23117243efbd036eded6ee0f28b +S = 07bb3dc77cdd4138a02e2d5fd4f6ff8516b4c95b8255c629132ea8705c399fc60f8fb660ed3aae52db283aabc3626a5559dfe85 + +Msg = b898d0f9bd80e083fa541f457d14d853bba55b120424a95e1d9511c8833f48444329e0349d68204c4b4581ef1c4dee23ed0a4445727a72e1e6cde422f7c10ae132a3fe681f9d741fda263e73f7cdf10759467c9d76164086abf6780ad474772771eee22d195339bb8f6235e0d992bbe282b13ce4fe01417f507a2c4fa155e108 +d = 0788fabdafeebb72f6385301e30024b56639e629a400f9c50d402cfc9b5817844f06a451fbda29c7ece41dc9ffcfc625fe0ff0a +Qx = 09b2c36d221d18189e1617cb2f2ddcd64cdf8a42ba6acc55f04e9722b11588f7fa861a3940820d9dabbab631d7fd4106c60f37e +Qy = 0da099cdb10dfe2d7c0a16ed332b459e7be31f44b0b2d595dc948f0b073ac4e439f24f215fba5ed50aef3702731d6561eee1986 +k = 00581369aca680beb705f52b6bef075de83ad29034c3d6b2949b551a0bbd100897a079b49d41d5030e1a6950fdb14d70dbbdb41 +R = 04f62415c99c8e6750f9c41c31cf050eb58f61f62eb0b0023d61dfc30e7879d4f5a87e88faf55522631a29fb69d16e15c354323 +S = 06df238f34b5ae664860b43ea11defe3120591cfa371367096006c03e83d372bfb70da6f789665136b7dd1c59894a2fc5038c4b + +[K-409,SHA-256] + +Msg = dbe04561ea8579672a2b3afa94426a3cbc274b55263989d41a778bcb082da797d84d930ca847a481789524940701cd5f1d11b460bdac0bffb0b3a3abe1ab689c519700de85a0a571494ba0cfc3c865450eba7a9e916b7fa9df55e8a1c246c992e6a0b44b78274e008472bed8d8411633e6520e1a906c5d0c8aafd572fe6f1f64 +d = 01b8dfd64563dc219d6eeb53f2e3ad1d771140d0960b211dc1f757af5e297dc7548d6133ddb574711d466688f80dbd65a7bbcdc +Qx = 1ec530638ea0663cd3a9b237dd66402adf50d3094391f2343d7d6c52c1d14145c245464a3b771e4b1894462fbfaf440e53eef7e +Qy = 18349e244b24c8353811c29a60d8e02caf195a424aeafdfd0361846d5ce5eb83da1901700f00fcb85a0c2543b49a8a3ccbac157 +k = 026a26cd09c9329cd45ceb4c798846dd81af67759794f5cadab84de19a835f8a0ae49b12853b1e92822477a73891f85acce4216 +R = 04d83a5f9dad246717135bec6e386ec6b73be9ea6d1a17334ea2003a723d510914167d136254d6cb64b16ef7eec5044b8f2ba28 +S = 03e81601d0c66b507a491c530075edc5b09d770633a4c2355b3b1c7df9b200ebc7dcb706be1696aab70d4c6e1c4a7e532284670 + +Msg = 48a8300820fea2ad83c83f7d6b24192715329c3f159d56644e11ed25efcbd3d31600a813b909812987b97d1087e74a63b4494cc031c63492b6615e9d6e5b36f62cb2ef88b9f736595800de465789f43811165a5fc093ee6d776008739de8de2a84e878748641be8bd52e5b891c4145f52bbd46644852a43108e93d86352b2a3c +d = 0422131829608ff730c24ddf7e8b4a2600eaa9681eaf45432daa7d41fe2fb488fd0199d431a1ed823801ce21f4f01a4dd4248ca +Qx = 06ff24eb0ab812303bdc9a23719caa789eb75775e686b9511bf6e07d60447d1601a48ae7f3041cef5aaf3ed2adb6feb422fbc54 +Qy = 09a351fdc9422a81ebef5407d0d74b52a348caf3cf6e1c6c2af722c408941de154619a1d54bc23a9dfc0c4964f3936d62daa6a4 +k = 0313ec63c34ed325d770664aed3bfd1a16eb636516eb686e806b0acf6f0d117998b30fd52068a36f03d0db3ec13e6989c6f196a +R = 0088167f96d807bdd61e65fadaf0c56b623db42b831909d12641e4d00e7bca6077b36cfa759fcbbf087c31f294f20a09e0bdc96 +S = 01cbd06232b4c73cdd13208dd254ebf9351745ee6196e3a94b9213e931f141e4cc71f3d318a67e7b8060e11e88783fca0be41cb + +Msg = 276e3a986ce33256014aaa3e55cc1f4c75fe831746b342eadb017676b0cba7c353b3a2b554522c12e6aeaf1364cd2eb765a404b3d0aa61258194a30219d76d2bfa98ad20e7e91756cf65e50d7914157f283f2ba3930c0ad3a97532cc747b1cb9c806fff497f0322025a3d02ff407fc7b5808585b91d95523c9d5864efdf7d983 +d = 0095ae8e4c7e55eb5da01acc05ecfe72a4dcd8ec152f1c8dc165014f70eb4e4a7861aeb2b96c418b2d4db58659e76184e013a49 +Qx = 0a3987d7262dc30e8ec11458ff7091ca993bc61f142ee535d544a2c88a47f9601107619617a5e65cdd6d5e1a034aaa223044342 +Qy = 1fc8af29d5134ca9baf92041b6d6aefabccaca4013c55c1581ac05db6141290235ea09650a289907785d282cef1b9efb381ae66 +k = 066015a77c99015ed6983bb379772bd90e03b9c010e695853ebf8e461a20fc12b20bdda47eef856f162dfbd9fd4fc1ec49105d3 +R = 067c49b96e5bfb6a6d625346c3ecff13b8c8b7e59c764b73b256ac970aa4056460000e599a8195f2d235a75cee8e5634acfa7ed +S = 03ce25ef1af0784645f0579da381542f5b8aef377e5b79193314f84853e2a07a4f1aaa4d8210f3a3c249a879cfa3ea8af43a929 + +Msg = 6a4fc1827c3a7256faa8ec6a0f3d23559d6949f8cc20e7f76111dc4ebd59213951cbf0eadacaeb8862d6baa0cb298645e4314b1c303bd0d5e9893304d4b7fbd36ab05fb6a5edc3fef763e3a4124d61539eb616b359c5cb55b5e2bec50c91dd95fc39ddf521aa854216eb5a707819fa6f067b316a17a3b146e7cc2dd517f7d63f +d = 006f2075bd730f34df111ebda919167b1d3358ada32cd6747cb3353bcfb814a77ac70cd51b31a0e538539453bf9eaf9d8b384c9 +Qx = 0bbc153deaec0bcc36c03d24afd20dacd9e78d104d94c279278d04b597ccccae43cd3e64c9e1e58fb5408f376dd7827ede9dc3a +Qy = 15ae0d803acf12d9d3fd41f74357b1c93cec0480f2e586d0e18f15e569d27d3d106e192ee0c1c570351eff1f463dc07d3bea933 +k = 0314330098250e38145d11a48f5043190c6b44f8572ae57cf83b1f3c4c03ce38b90ed5e157464c2613c82943d78c938fcde89d7 +R = 0160b20c370ef4b9cca3f7dd3c23f70efe6bd80751ca021731bdfb0f45ae07e5f2144c77795aafdb0c3a92ebbef75fb2d334dee +S = 045188dd2402ad36ae4278a9910648ed5e71d64737651c133aa89850e3bef2207d58ba4169e471a4737962f5fafd50a37a28e1b + +Msg = 4b088199bd8c94775d8ee508377d672dbf50f6d2c7370e99821ec8f9387492fb2eebdbea473ea18465565f79e2af418555f10c4a527e05a9e20c9c00b807dc8b350cd4ccc2d87e91f66addf02ce4f43597aa258ac6fbe9365cc2c8e8bbe5c884abc929710e8423cd6722a8f473bb55804159a92a3d8b6661a536b4fb9293bb0a +d = 03887d284e9ad17d38bc6da9d83c192a434c509340a7f233cebb032b09ab7c4c6e8730b4a80844898616c9abcd16b753c6bb4c5 +Qx = 12a6d5c5690ebf14ecfa54ac97b73e88e16e757c34c6bbfdc9a3a119f298860d330af295756dec41eedeadc5257b202451faa06 +Qy = 19f40ff28bb72af659d5319286fe21f01819952d471ce2433ade745042a47c2dae798199c364ceb99029c2dd5cf57ef5daa2b00 +k = 035945b45221300f83c5fafbaf0645a7386e209d025b3e1dc367819728f630663fb732b251a019e08dde0f64dd3f60a10065c50 +R = 00c323c86e8cc548123d1337936d4be948bd4bce4631a2194c2bf04e1fd714df2c90e3681e41a21d58d9567a5df9fc478dca8e8 +S = 0493d3f4d22cf8517c301f15bde52cef17c05fed2482f3ef15cdbe32c5f0975e054d45b13faf906896201942f29e5693bfbb229 + +Msg = 848a13465ddcfb2dc14f7bc0db0756832c22dde1e31e4d8b3ae0dd1aafbdf15e954889e95d3bdfd6e5ebb6171fad62592c23277a89e8ba53978c9b1afedfef7e1c3f6d9f31077530460b47834b30bbd84a4da601be988738aa815d3d7e72043243a5288751ee08b4815a017fb5d9bd55833698a0d526b1ed79da35ef0fac93da +d = 02ea5430610864257c9dc393c3addcd0d8d5bc8aab1067643b08857210464428aa85cf1ae6c743fd2682255d4c8eaa46ca21e73 +Qx = 1e502d3f47823ac7207861855fe6f6aad1fa4f2149bff2643b079da23fb270599f744669b3c8ceb4cb0989aabd43d26d93c8146 +Qy = 0cdcfc138451bb59f34dc82b8128088b5ae0cb8a77dce1895d5ffdfc8b4be24a206b9856954508b82b80d0163b276683489074a +k = 0426b90275d720d19c6ef5c8c74c568a636257740530e3ad10de0d518c4eaad8bc58cf4506cf5cdf7f2b03edd1caadb28fa3787 +R = 0123ad87c094c4ccfe4346dadad54a6b1ee1bffaa1b7b9094fe2e6ae785a2b77ce3f5e568e43e8b7fa997206262645f56078657 +S = 00d56cd5cc64736ff7ea0d9840916b1e1c94e11611f93b1b11c2ee98c79d92a8af1a560c9938dc4bdd0b84252e259ae5669d1c3 + +Msg = d1850545c04ea65528849973c220205c35eae98826d169348970d1420b4d872ce233af1daa9e62f6a562544ae3a0633a954a493e9766dd5d87e47486559fdf86229a7c9e1726de21895abdcf2422d438f4ad98d88b45c56742694ad5e11894253270997c049f0f419842482f21c792fbe5613e2defecd485585f1835b6f4c578 +d = 062c757c92eaef41f5d81169ec4968145b5aa2bc1d2a3a5fd000634777748ecb93677b3da12e3be33272a8f0a52300f4a5a37c4 +Qx = 139660fb8bbba59e8f4e95e5ee5b97227220f0e1b293901fedcc6dab86e7c5a9d20c1a097ee2e926a934cce679fb8dcd8d2ed6c +Qy = 08ac510ddf735184e8fa9693da264194fb78da5d1cdc0bf5faadb33950ca191fe233eb8dac8adcbfe15b4f7c09d5ddeef6bcd1a +k = 026868bf1764993d650aaebf117521cd146ea20067cc14a5843f726a3d68e41c3fba82a83d406b2275b3459748b3bd1a8d32f1a +R = 05b17d13ae4d9535d062a2653bae4d15b9b859a87c33e175adc3ef04781bced888f3e93e9804b2251a40b9344c0f8c6bd5be0ba +S = 01ec3322c5beba4423b13a0528c71739a6b39f7b0e0e58a8274a8386167cadef51e5560a3e9d97447e3d3c06288459fe6569345 + +Msg = 421c9784d6fd507c82904e1054edf9bdd1efb58a0b211340086069ad38b7b0dd15c2345fa8767ef71254ed1bd5c35f742b1d3f4765ff9007a5477ba9e5d3d5a5cb5fab4efc1cad73701d4776c6c4343f42b5d94a9eb78ae428dfe5fbdd8e6ece09d5b75cf4346cf27db856352225ab04e6ea56661554fbc39916accebecb3935 +d = 048a313c0c11489939fc0cffc6ccb9f179093c4e13141b92dbbaac441b7ae878c9d412066e95615174a24692555cbbe904a14cf +Qx = 0677c2d364fa86b8b0c79af754e675ea3e806d5583e62087e01590b824d2730e31326591167f02bdd29f8178787c4e1ba9d2496 +Qy = 0e7f78c423baeebf6defe9feb8ada8874cecab083ca2e71d9d8a3fbe846eda69262a1f5b4a3baccaaa4f2cc87220edb1fa6b6bf +k = 012b8df87dd935775b80c62ed6c76974fa5772939a9e7372cb74e033fbae4f78d75b8bfbb82240cf91009b5bef4d63ded04cbc9 +R = 000590a9e8de60b5cb181a1c11c2f6115c66b05e71e0c558ae203ee18e54de68016f4c7ed2f01cb0cbaf1bdc45218c0fe2b1552 +S = 0521844eee9168a501e235de5fd19c84f052445fb0e68bba687ace45d8630070ddd3b73034d1d65788a51acf91273fd187a24ed + +Msg = 7910bab15b6429947655e33a67f41b76f1d7b71534f8904d6a0472c2faded038565272d0b5f51aa915e0d624e9ff48d50ebfa2f09324864f26c29ab73eb39b436c5c459c7cff4d2b62992e3489cb4ddfc05d7366b161a463aa1b782641d93507de43c8cd0a0a0a9d1c644f4554e3edaf7fd794248110ca9387e73ae5d00d299e +d = 046e2adfe5d3549e1e6fa1fe69a7cbb4ac9b111c8903d544268f8318b0b47d4b78fe3e56eb5e639ad5382e7cd5bd4b2c3e70ef6 +Qx = 12902439be50c97aae7b40328984934d6c843415f76f3821c8e8323aba96ee41359e2ce5ad3179063ea5e2c7deeda4d728d5852 +Qy = 1eb59fe96b269cc973b1fe1f3720aa9aa6ec4cf303c5cccbaaebe6ef7c9f5356ec5e76b26b09479d9831d9f5aa41ae1d61f4c47 +k = 031893aef1baee0e21b50cff7002435b058d73dc4d8301ffdcf1e0c315d18c2b16f282e5b294dc88369b25e2a1a19abffb578ab +R = 039281ef10b9a2664b755a2db67b3c410276a424edf7681a5c97244eaac5826368a8095f1b9b76f8e490e2783694d5bcf3565ea +S = 039edd50721dd35d1704167e8cb609f309b9ed73d3c1eece181f9582aabc647c5ec8bd258e5802fb0647372e4c3929cf59ae2d5 + +Msg = e6fc96e060b956c25d50ad25443f3c30a12d199a47451a49ce88307201dfb15ed816982e8888a28daa92eaf3c5584ca6ab2ca9e14577f84396de2e0ac214b24a2279f5e7b344fb7387e9afc8f0a2b77a4d024a20ce6183499b17096947444bbb753d9b39e5c694239d28f9c454bb05468d17ab564ee6cea3741747ccb7f108af +d = 0480103fd6180a431c837643566706e2b9597de0a1346a224d176a5b2c54aa4d064418ed654a5d39f4773fb509f86473ebb373f +Qx = 1d39e2772ff3d26c5936ab347bd5a2940ece42b1964f030c59ab453acd7f44716ba9d88f0828de1a4e730ab27fe1859915818c6 +Qy = 140b1b66b0a87de29ba2cfa799d944b3b898fe7ac43de68b01fb41464506e2f014e0d11bbc0c24996428c93bc1a5ecee5956bb2 +k = 06e9bd0290548d35168f7db7fc292bc161a7710b78ac49ec6a42c9423afea1310597e5978b22b4dfa192489323b2317e4714d37 +R = 055dbf88b6221dff098345226d59d396b6773611ca6e747d26d5d758760d830693df0f5c602859f9caffd0dc3790dfa08c527c2 +S = 03e679447b622c4b06871f2337f5a24150e76efcef9698c6fd463867508e9d7b803667c32989a881c98a90998944c070aa58b17 + +Msg = c8a8a0d41f35537e6fd523ee099eb45e1ad6ab54bed4d3e315e20227db03292e39dc1a91bab439c0d20e36e7fea6ef08983f390a6b5551ac3b4f1895220b2867fab95552cef9bd8702962839bd9b2c72772640e7d3be3c5889d226acbefdcb448432bc503e5a5fe7ae9ae7696c720a799f9882c64ae0385f656074dd8a6821f5 +d = 013c489e8311c6bef02c8f58903b2ba2a98a27cb935d75a30d320af9a14fa3cbc6adcce09235a9eaf333dd05f4b2f1694985dc4 +Qx = 046a1c0e7753cb499d19b2805df770ba54f1c6e03611c302c73c72902867c51c1cf9ed154b8f30f72002421029de7ba2d8fad22 +Qy = 02aef9c34c7c8216a805a58dd88185f40493086213cb4c85e4d226bb5e892aa37be353d9123e9900f8b0790a43d55a19d78c48a +k = 0491dcc881731112ad5e9e1df459c27381a7bf8270f97743466e178bf5ca903971b362b73fdbef8a75d4292e63e225396c7b32f +R = 048425b76147427b8b1969bba3809dd70f0fda24cfb0e92509a7824f027b61cd38441a691efe213f3c331da8c82f94bbde511d9 +S = 00df36683f22e9e86c88097d75409ea297d391550440e4327f67b7af1b09141a0e7a1db40c4b0bf4d60376a6636dbeeff0b6b91 + +Msg = 3407cd6d2845197cd7414a30fc3df7184da204222ffd65c4d16a12cadabf603de8043ea14f5e6ddcc22d3572dc06dec1a23cd924e1847ae285ecf01754e2d1247876431eb98e897e47412a2330bb32990f9714122109e94b38f82cfdbbf2eeb4c6f88f5dbf9f0ccb47939df8be321dcd9bfd9bb99cac9f94885fee7d443fbd87 +d = 02419bd2200f8e1d87db848b0379741685e680d9affe693eed49d82931030b6cb05d21a4965f4e1df2045c8513a8f574ca9f2e7 +Qx = 0641a6ac72455ceb142e00d6854acc5f8b86db7bb239a5054c1ed48dffb6d050458ffea8adb68613ad3cf5977ea7330268abaa2 +Qy = 1a954ab7d62796e5aed370285d3bf91ddd34eff3b995d04967db41c2171cb2157d85032c998795ed476c891702d63ff0108f45a +k = 02e9928f427a86c4491a47b31454ea7d497435af81c07bc96fa61f4507494fbe4ffc1fffa8faadc2a44c7e69c4f976661750f8b +R = 01e8ff4cb8c58fa48aaf61488cc4118df90e8c06cbd88234cc920e5795597ffdc0ab967fa7461082a49de56f02f84cd9d564316 +S = 06e77ac43fc7af3c126f997fe15011fa87a27479fbd5af48e28ccc2c1bedb6c0695291dd67beeec3f17cbfecefbea46b6325fdd + +Msg = ad43f8440071285d01fd79244907803601aff4bc5d14c77483a87cd742144d41c68269d76c9a83c09d2178bbcbdf99f927b378497ffdc907a75a3b0ad019e69758dfffa480871eb6e1e17c8539373de611a557fad120d0bd147f8debe5f09a02e56fb607e9c1253ed592071f042e42fee39775b407225a2b86a950d81bb7d7ef +d = 0722951879a65bfcb414e11712ee9431eeb32319e0ff28601112f89276ffc2b96eb65c7fd77d023f09914a53e2aae2c84652bad +Qx = 0a0304caec1b68b34c822a2a031145677fe515dda977f6932ea2a3291c6bb4fe8f297b7d3c632f9b3806a8cd26e32403c27fc7a +Qy = 0012d4c3231898a4202f3f251802c690353ae9cc28ae5089e259149bce444d31a38927dcb42ed613d4818e235884749057ebd02 +k = 0331611e81d3e6e3a24cc829c1cb9087a8c6f64c286e5f1acfb1ba764eea5ca55be544d3cb95fb98407fb6c8f9eb1b3f7ae7386 +R = 056901f11ec69f91b31f7f41f7856752568b7d34ff3af1a2259fe15ae0b01391eeaffb629976525fce5d182663b7b23a8001bb3 +S = 04e89c3155afda2e64c749536392554cc299b70020362e6701e3a649f0a63ae5a5da4efed5c73b5e8098c0cf47d6f4c45c6fab9 + +Msg = d61a3765229dcd0b4fa6c57280f851ec2bd54d3ee2436935cd6d94e0120d0844adda163995fbc4cd9d7275da859ad8ebf30af9efbdcfc31c7c9ef42bce9011d37cf9d15fb018e117bbc102f7d05750e5072f73d02c2f45509a55627a78cbd9082cbf36807759d1fe2ecbb92ab30cf28434941712d38bdd100955d611987b5968 +d = 03f5b5a772d24bd5454bf26759dbd433fcc7bae4f5c593664c4d75da0cdf9430d7d9162bce3d7f6e13a344259da5a7d6a1635bb +Qx = 1ca1441b1f6e13138880196e69743206ce09c439a507a11c0fed069d4ed23676b27a3a337c976c276809ae725229c9001708742 +Qy = 13c47b14e3069af070869c12f0f39e35a6f334d98210d33c9da01ac80057911f5a392fb5c8cafeea01c1953e97d47e744160243 +k = 01484461d02c0337e8113e51aa7d46330f57d423b79b580a544d372524a853db9dac0c0d16f733b273bf888271135a5162e70f2 +R = 0256d7ab133904a792987f8cea69e8e3cc674cd3c577f40ef6f12b31f52ac6366a2a3ea2b2272c7bab8be00ca0d17989b6801a5 +S = 020d82cb9b3b1f25d993fc18b7303db4cfab91c03a97b249176f9bb2aa5ae7f589c74060d25058c7acb6de1e888ff44481185b1 + +Msg = 1f3c23636414ced48fab6763eed5b22537968e6bf08c178b3d31fb1f6ea773c6979759701d94bc1bee7c354272811edec58eff50c93331b22723d460e56dbee90466b894354777b23b13a37d15a84c762caca70c01518bf34d0c2f072145d274b3b6c932b48bd815fe81161d8507ffbc2f783bd212c29b2887af6d2ffa9d2b4d +d = 046bb4a141c9099d531dd23ac440eff1f5b10f7cf34920b6b702311d490d25344c665ed5211d401def24986c8094165d10f8934 +Qx = 13db47ac0e33af0cc7d74f6ce647fd80cdc1849b15c349bf501c95893be5a440f85b9b029713339fb888d7a93632ea4e0bd8136 +Qy = 1f26f7009cede02e054d6499c9280794184e212e3e1091032fe0e3c189de26d04aa8a5909569017cf06ac2a20acf579ca81f3fd +k = 046e55a908f13441bab63e5327ac346781399d5a9035a72aa21df708b814b67e420b455e1410014cb53e6ab00f526ceb396bcf6 +R = 06db7a7b03d6a85069a943fcc332cb8c54ac978810374b12eaed4a5fa5342c8eabaec238bfc6107fd03d75dc2c6d258c218a186 +S = 010a4115161765dd0c22a0915a0d8cc01905de91d3f08c6d2d85a6a92e1dc00904f3be67fef000ce19f57157deb9afba7582b59 + +[K-409,SHA-384] + +Msg = ec69f2937ec793aaa3486d59d0c960ee50f640a9ce98a3becffc12d6a6c1c6c2f255d37d29f9b4d068373a96beadac98fd5203a9f229bfc70bcd449640165ae5128e3f8d057769e28356e73e35d8e9af7876f608390090892c67391ddfcc1c332aa61efbf72d54bc615998b3be8ab0a9d372784bea48c9fab244482c75cb2de3 +d = 06f2c6e9ea8109223d9a349fce14927618fc4fa95e05ecf9aba1546619eaeaca7b5815cc07e97ae8cd1e9973ac603f84d838393 +Qx = 1f5a9824584cbb0d5ed57f677caf62df77933ce19495d2df86855fb16456a50f157d18f35ff79b8a841a44ee821b36ea93b4f40 +Qy = 1a88299000c07a9ad0e57c22fa8f15218cd90ea1de5b8c56d69506ad0fd12b513ffbd224cb6ad590b79c7677a8eda47a8bdc484 +k = 042325aded3f71fc3ff0c84106f80a10af08d76d5e710a35d462e880e015a36d063599573ce2044537b9f62b51ed4fd2ed8b860 +R = 0667c74ee2d632aed13cad47e0b46a5176940652d7da613e4965876e7e22d89994bdeadd6b5d9361c516fd51a4fb6b60b537e9c +S = 026a01220a1166a4d0172428753e98caf0aaac5b0a09c5a3f11b2645d243991d141f59d6cc502ac44b70e7c48d6b0d7b6ec4869 + +Msg = 70e11efc78d7f079ae41ac3c31c96d3220f4abfe23814a2a4a78d9b1a25e838c3408bd416062e4b0a5cdadf0c6e16a11e00f59711b417751f5e4b43ecad99efbdb2a81c91a034e89edc94eb552c3eba62808563cdf64453a1db07daff8742aea4a9fa738e1322da316b26dbca2954b2bc0de6da7518d28e6677dec6ba8af4285 +d = 004212b7fd913d794fc6bb33e0276e349c052c969ecbf6afc89b28f75a599a9242acf74dec9f374361ba296ba42a38407f9b7d6 +Qx = 19220ebacedc60762877881262c0c3dc0c8a709fe2ea16cdaad3b680d7cc8aae8617f0acc9b5c9861ede651481f39927a24ecb2 +Qy = 18afd77bc7fe54266275fcadc0fe8d4c0dba7a1264c79bc31479f4bcd02245cde991791a7b7e65fbfa907457fb6d450c0985ae4 +k = 04c01ff477786304b24cb9c95ed70ba376ed6e4f6b3ab2f99ac575c92d3801e7f43bab072268705d61d3e2fd881f754b9c84235 +R = 00987cf8ef2b382fb25a6a542e688aa96c098f5d16be0c7d46e961b4a4152c372cc0683993843bf5a04f81e6068843582fca48c +S = 036fba32f80cd2e66bf31baf87616027c5b107f72f11fc766b42e2774e29e10e860577c0d3a27a3b49754e6a189680b7a638408 + +Msg = d922fa515e3bed60b517a2d37cafe4c041e5ab4b5c8d8d4011bf9fc4013dd8abf7add71fcfde5e71d6abe76bd0f749e960cbed55711c87b5629a2c39cff48ed7d0feaf5cc4765e576a4959521f9a45fcba0dc65ae618826447e02ce6e1cab5ce8d6c96c3211adbb0660de7df7453f3aa726016941d00d8ee536cc106a603d126 +d = 06baeebb5ffc89c94c3e8b37b9b0904e7c4b251d204894655bf3b1235710215c29820b9d401c9ca7df1404d2d62d708aafe208a +Qx = 0a0b2a185ad7ddcaa0d8d21b643a14948d3552e25875506d64e236a90d274ad1ca678e628acc208bfe6b56c02df9f5a36aa94ec +Qy = 0fef210c7137237da8ecfc2f069cb9390c132d1c6ce961f2bb3ca925ee727c967f8a46727c8811c94ef66f20836c661a5cd1c59 +k = 02185be104ad16abfe4fb83de5db067d37ca58510b786b109514debef56cceb4dd6ebe53b25127b85faf9c28b56d6586c26d60e +R = 0404831192b4bd453c0a7e850815ac3fad88c7a2da27d29e83ca6f22213635a366018ac0038b1fb1e4c512cac15b614fb69b3e2 +S = 06f677c361547c91428d0e200dd00777262a138afcd828238d132c56b2c232e2b446cc693fdc4013f05ce7021aea5b5b2f1b34f + +Msg = 4f64d0f6bfc542a0d4347576935bd68ca88524ead03b8d2c494061d0658e6c3e14576b5bcea5f2f992f54cfb52b5c7cf1dfc517205e0454510eef1b7054a8cd06ab53ed2468193f98ff0dd62faf076549ab2a270f259276d5729996c120792c6f466a74ab65035bf38ff2c055b43e2a8b8e2449a2375ddbfc18242157bd905f8 +d = 008e5f66ba53e7caad1feda122a80c32c82d2c32a7237b8ee8ead44ea8f2f01d77c7056b9dd60b92d051f060da8532c1fd0e8f4 +Qx = 1a3d020a0c7e3f3fe5b3d9fa6b6148cd0c481b4f9e14dc85aeffff35e62545654fc313f930ca2e33dced28ec28d0fce6ceaeaa2 +Qy = 13c1ac166c3c088e8a4a9d44556e3344e52e8741ed1a8b526a45268086e2fe54c24d398553d509439ad4957454eb68af594e683 +k = 0095caaf063abba5073aa7123b2c0e1666d29bfdfdfb0c484e18931d756ed0845ea15dee1e9abcbbe4576113a8806aab9476b16 +R = 04d6e33001933221e9eaa78da5874f639749c7396dae90f2da4ccfca15b50ee9e50521cd84d78a098e0c383fab0186b3dfe1b3e +S = 001e17cc7baa3e9ff4d882da970caf7d55b4e0fb7f0cdaaaa8290fe2fc9cc31d51b34b5dcc825bf6799ce22fc95382d46f3f98c + +Msg = 7047d478ec5282d55db8c19c97af10951982d908c759ff590f27d57e2664f08d526cbb2bfde39bdbb1aa3dca5a8d3feb50b868be6651f197abccc9d8040b623de367e2ea1d20ecd302afb9e273f4be9f3f64f2c2eb3f92d5e0e375db6549da2a589f0604bc7146562ccefd15995a7c4208f640e7a17afbca69cda4e173380523 +d = 04ecb22b44e809f89b16abb10be062c89b41ee34e110403e42a20ce59a99afdc22f6f6dda56e1d9d1b8ce1d057f390db111def3 +Qx = 0dbb4a6ed11f36eb78417269c1b1e9725eba1666591afaffb5582c8b4d5bee1d73922b0164a05bf21a12052171abbdd31305552 +Qy = 1eb385afe8588ceaac9f39a5cb4455e02bca48f3d2242730e0f9e06ff1db24344379f96356531676cd5af234a120f4b61f7e041 +k = 01cc97a718ebeffed4ca7a9a4389d6b0fafb73ab000463b68b5580267aec203b6231cfb5afbf7ad8192f0947c7f40d9e060ab32 +R = 021a29f56c31227daf0dc5dc919434978943b80f4b18748bb5f7d6702153b966a0a4af6f209ecfa3aae0e4f32a1b7c6ae58a55f +S = 06921b2e2ab81517a0785c4ac3be3d7d4b4c917d7a1e4313b123ae96056a2a4a66d9e00819d8c1cca5bc0d75e4e05477c1fcbff + +Msg = 1a8384b4771a410663e56eb36c5d9ede8d161a8fb0e31d3f74bcb017b9e31232bb2e2f4c65a2d85bcd1cedd93ef08d4bb4af0095731574ab3f2762788a1ba3bf0ee46684da8d9dd384432fee99ed3c69213d790a5d81b351063eaf2bda71ca4868ac36be1b571024a8bf09039b347fa996d5d161078314e24b7d073e05cb3d48 +d = 051f9500c15ae73d6d479b9f3d2caccc2039d8d03820befc2aae3bbaf65d59bd9cb3c4e3aa8bed5b3acb70a5566047ffad80729 +Qx = 0ee8ca7f55225760c515bae053ebbf4ab23567f95c7091fee2acfff079eda297ec6a7e9d526e12e5976431f9d7e52a2318ddcd8 +Qy = 185e2c17705a2555fbb8afbe8e41ced8ace95c83e198be3c7dcdeac8c2c5bdd988800f1194e553bd0348ebe6c29c16f35d50895 +k = 073f96451cab2d3ca9810e265b3461e0fbe7f32fd6702f06891b97969b133eafd68e53b526b5e32b0d06ab61ecd75e1bbb21b7c +R = 067d55e709f6966cb2082d8021a313850c53305a3bcc926b6f9a122181665328fdc8e05a88de812357be85d22c61c919876fec3 +S = 063d5ee4a63b1fae39f266a9f826754f5bca4d7bd414dedd16858b5c6ac2d4162e28ab57215c6713320d3d6960f6b55e3f1897b + +Msg = 43513d6dd8bb0af7a6f5a2b35f99957d335a48d54f2c4019ce9518b35441d4935518976ab1df37110b5b53532cd9e2c66d9f87ae7f683d7efdbe1775a6c15eecee84c6f879999d0706f6779dc158c111fe8d7201983883bc8334f51dec60004eb1087347bfdab20f8f2f260556681e05fdbb8a6139857fd3bb2df5bc1f2dc143 +d = 00cf01dc4462cca764f4f8cbef48c51980737b9b98d1384b8de9f4c733829db7718a9b5eaa46a8475c2144fe4454cb8eeb0a443 +Qx = 0806457fbb7fc577497c937600c5a9c4df2c20cf7dad4510e5ad617fb2849bfe6956c3efeab6b805cb7b63bf5d1c94e5ddb456e +Qy = 0915071cee2094efdcc155f893da8d83d9a5c234d0f04f738b7af5b8fddaf1d3aa152fc11894a13caee0009bc106a64323e9dda +k = 024968902b50febf13be11821d0d316f2daaa07737af45ce2e855aea6ed58f226d2279ebe4295c5d7674104bff75b899609561a +R = 0549f18f1d654f26ca134df4707694e5d9b3693bb34ab5123ce4d9e4c2b2d9756ddad957a4169fc9bcea29944903080f6f5d01b +S = 021887355c6360bc4ee59f1badb5325763e9428e60b31a7abed06ef03bff0b1265662d604dd2e0140c355c70fce1b56ab143201 + +Msg = 752300bc5066d0efaf807183a41725e349907b7339d77c79921ead3c685b616b0eb97e708f3880fce0136c510c8cb53b22cb424af6f1c34633600939a0647c02d8f9601f9416f1d24a51657241fb559c25dfba91402cea43bca1a13718b3945b048725f3df560e6717cfc6ebd894e29bff1e0c7763f15b8ea93e67385f059598 +d = 063a9a565497974c6dd459bea0d1196d74f263f333c31b7e8591499960e1cd79e2ef4cc8709f6d54713f873b16e7b0be42f71c8 +Qx = 18872e9d9410dbde671fc050ab88101f01d146a72d62b630b29790b20fc02cb62cd0ebb5b453a46c60ec2d2c66de8715c320578 +Qy = 1b6af51db1c42b743b89be0900d23f7da80b15f2e7a2a965c7bc13800bf58589560af4697f873b6155194badf5a19a653e63da3 +k = 01d3278e6e78386146fc15006258d7a62a1345db3c2e44fb8d3bf8101727bef254a9fbff157072326a85b5ef4e17c5b0212bedd +R = 07bd5b54d9c6d6f9c87f4a66472be2c4bb7f521ae56c1dd71781d95440b0a151d206ddf627e5ed3f9c7df2fc914a78454e97616 +S = 075e39ff66ab0e0d1b46f9679b95d10b692874d45fd6898c569aac28a53569646bb29f8556e529ef83a15c574ad5e1c82878154 + +Msg = f620603489944769c02e2f902c2299dd5f32b5fb463c841b7e1fc0249a85d2c31684bd3daacd97de8291c5d39e84d6e59d3dde1b30c181bfe8d31b8d8e080bd191690a67fa00024ac8c1b10981b40d4f88789ecc58fc69b15417fff34834e23453bb9933a43d08afab74d056f366b40ad167b51ee5f008db151a12b467d3eaa2 +d = 041074dc186193d30aac7cc6d269b938ab40b257d095e54ba79967a377a91b8f73671470cd07f0a3d1db7cf0a31ba9070625e43 +Qx = 18fe9848dc599a759d90530480a6f11d052d2ce21a7275769ba02a61658c3b69ecc546aa6599e6699353ee1d65ce533c69fb218 +Qy = 192b9c41bfeb2af4f29dcd1c43d3fe72a070b5d085d070acdb8c02f0dba00c9471df1dcca1006709676bc08b8ddad97310e25bc +k = 036447681292dc781f7f4ed60126945354ad1df5987266038c5049d698b2ae12965b6fc58f3e944c4751406087859973d8afcd2 +R = 0541c22a6cb984cafddb3269ba3ee56af64cb36d03b7cd1693b112a7df20f0422219f85c6820130ad53ef69fb66f3326bb863a9 +S = 00fa66b163ec3582760b048ba9a0fba9443d7e908b67d749d732ac9b6e89c1fcbc6d3ff4e02a43ee41414b15ead0cb83749e0a9 + +Msg = 5575f610762b42ce4e98d7bcf45a7a6a0d66ec7f27d6b8b17f1961249d905bc7e58e2ce0806d467f106b16285dce4544c72666d08b5e2276cd0c4e13187cbda8aecf57b1855afedf8fad39ee4fe009f204e60bdbec79b123456ec2d85631d382b8a2f2c7634af3992e4707f7b4215e2c9d3b0aa8fb08267953883a4213669d33 +d = 010820db54ccf0226161aeaee79cfd2797f87702b4ee91adf8543b3c9e79579d0df8a889e366ec1e0718e039b87a37c24d620e9 +Qx = 02eb4e313f158ba7497130e2d64804ac45a7db207c55d41f39979e0303dd2641c81050fb7f24f2fd2485b90f60985cbb15d56be +Qy = 0a190fb6c81c104164578da6bd4f2b193cd11935e1f87f14e824c2bf8c82c39f0be1a6de3dfc6dd68af8cb14f6a78f38773a7ca +k = 0118e911f676f004fe581d1855e5795e5f4ddb33fb8d409d557aeea87895b7c23a513ca0010f98b3a63f2c65da5e3b6c37cf5f0 +R = 060c7f7c47c16b294867cee3e65eac8fc828229a5d3adf8e68e14dee620e9d4e7b78c8b902b5042b5f19c94e621c52836c95ba8 +S = 008d036087b23319553faf835b793c73204cdbe2c1c2463e74de8f404e66ff15ce9384d26149e7300ed1a109afd1f915edef912 + +Msg = 81cf067411dde2d0ab04fe5fa1e28e6975cdcc571588de60a35bd956a535fbbda4affd0803d244f3f7e6902a2c9a7ef2488691b6bef7f8ffb33be09ccae4c5285265e4957f7928ea5cbabd6823297f59a7cfc9939a49f26bde74c4c69e2d38c1efbacbcfdef011213843158072be84ed3c1781f67a0e2d4e9ba76a585c17fc0a +d = 059d2a06e8bfd5e14a9bc8777958b85be5e97af892d2cdeb0ecbd2d5017952b5042349db5fedba2e26e7b85bbb31ad313d99434 +Qx = 0af276952a1216ac88ca7a194f5b27b7c98c78c42f852dfc1a2cd4c1a477ed16eebfdc90f613b6e264576a35c45f49aef8a564c +Qy = 0639625074b69346dc6c617d624d63ce415a36154a817f4e18c59a3b09e01589407077b19bbbdd57b04ef8fc2cc23c673d52910 +k = 002728f7e9b4772ab790af0be9ed5b3eab697c4710249169d2a5782ab3797b8fa21bf8c1de659e3060af5a286353402ab982320 +R = 02a7027c6f94cc236dc8cbae35f9c38102a663b84f66143e2fbf9a152b1a6478bd803bf3171f933f63509d539a54dd348002ef5 +S = 0549ecf85ca1bae6d9f0038dcef90c93121a654552780f5583a7d44a73a9360c6799e76a632bc8907ce4626c0439f1518e3a250 + +Msg = 8ea18387940035cff2f37278d321b344231075db43c7fa7fee9bd3fdefe5e8f03e7af9deafa1022eb108e19ec11fae34536a4fbac2e8c8139a081a997c080cbe8f3e2d2a72ff26edcc5338b21372fa1498e439e4d9bb12d51cc539f859047957b1b1f1fc30b90231eb06b365a4d404a1fd5a0e5cef171fc95b04d0b557d78ebf +d = 0405590893cbbe18f4ad99df28b5f9d17f8f1882269aff0b7eee9392859d68927a99c942a3075269ddec6d69c0df2d76ab9d801 +Qx = 06ce67ace45a9cfa0cb45e8e1d0eeb44e94bd7527fed6b563f1069140a3f36e010f85e1ae5ef14d626c78465cae43230090baa6 +Qy = 1a66a58d87621b63ca662130ea342db029acc2d99bf76cf6ec4e53ba71bde4b00e508d332081055a65fc6f44a96f4e947d729dd +k = 0035f09e0c15b41c958596ad3f5c4bd4a3685ac94f19fb97503fb5fa29115cb18fdff4bd104535847ff36650b7461550dacf2a3 +R = 051775fe1503ce80b3d581ea3e5ba761665568ce0eb7d6a7163d8d025d76002ca7bcf6d688b6477ae85d09c0d4017aba5ea8019 +S = 035cbe69edfb6fb99c9e45240b7a587c3805ab2ed6b0399c7dd8dd76187363b2ba1def66b2c3dae4bc2e40d164bf0f4837798d8 + +Msg = 6a253c1aa17b2b1e6624afc8e7456d366ef5b1bd78e740538260f395481148a64da0b6a58cd53d7e06c691beae1a616547cd95c4d259a371e51c2c0e334c8a5311ae31e4c7af325686ff9f7a36f731010ee1a9b8a29169ceac36a060dd23611dc9713c615424888bb574ad5f5755d7311bd169336ae986c977a394bf16487c4e +d = 062bbb4f565aa0f23b88ab9029d33b995729d10fcfc33ba7c4051e2fbc72f15636a834e3ebfe604b927cdfc89f53c57f36890db +Qx = 125242acf14c7e08e9f2f0194f734841758b1eea1e37ba80b9855a14100a5f0b57bc52a0200cb640121d96769e9cabc45362f56 +Qy = 0dcf52cb899470943a37d260aa85fe83c3869c862001021660ad09b4d73f7739ad331b3566bffad590534207c6db9acf98399b5 +k = 06095b4ed8d51e37f6c723648af4cd4585d9d250d7519139f58a93c75f197c4bbd1142da59769a5fe178415c677caed1c3da667 +R = 041b212a54d4396ddea2898dadc363ac3ec5385c9b3b8ef1ea17c3d2f751d4f79137238548ad759b5e1700d7d78072df3bf84e3 +S = 0149242afc524b0c3583037da153f539aad85aa0c19c6c70852e3c3923df8c3abd0189a2abba872932eee2e6f45e02f98e810bf + +Msg = 0f91d0f0139faf3b90a3d4bebd7e96ff6bb6f90f6c68321fb392637d8ab2a60d649a7b7364ee6e4e274e1a8d342caee36cc11c56c54247fb0a8e8ef81ac4322b454dc9a195dc54567bf47ec8d4fa4cd32e76d78ea2d08bcbce3edbb68fd8597e56d5a9f2df4e47b2701046df89615961db601bd8204584a6a6cfbb627e2a1190 +d = 03fad7031cf8810544a3e4bd1382c0a2e22c5a9fe4804ce67b27591fc516ee81dbac841d399327168aa6abd79e2b5ef85df1528 +Qx = 1ef0f918c683be57eeab95d5d1850bd492ace7f4b37785863647774a028e963ee2c0eea801838aa8217fad75c5780f1c36e8d4c +Qy = 1d5dfc69bcad46bde5539c58ebc89e1db2a3f65069ed963280cc2cf228b2568bd53c6e0e164d6b63a5d3c2b8e3be9d5139a62ef +k = 00eb16d784e2aed724cf1e4b72fe76b00dc80948c07f9c7524eb0e83bc59c12a8ed16fa7ff21dffb8bbaa82925848a19c93884b +R = 04a07e79b4f771363ad4c46cde0aadf3df4a233740a89168c97b54559029c51dc2c79b7cc94a0e4e3d2f94e376fe47993da28bb +S = 0360f559d37a777119b2aeebf00cc17e2edf04a2cbdf74366f5d34368d2eb2c92958e4dc2b7453d5a509407a4d4643cc0235f57 + +Msg = 50c17c1fe4dc84648e5c3c3ab8f7c971d4c58d8d56d2b5ddd92e35e6792111ed8dac7644ac8a07ca8bb4e38e071aa47b22ffe495e9083f9bf781ac1b5fba571862c909c7aaa7b8d05ddfb7ef61c99700de734d5658f44ae9fc908c85a2dac8e7f854d6d24be805fcd7f873a91252985c5c73129c60177ba8fd99daa87b25a073 +d = 03db41b4f637fe7977c90e4f1a21799baaddd1826c667102414877138436cfae1b9959842b8097b5276f15f2b982ee59df263c8 +Qx = 18eb25bbdeb41c5d14edc675fcac8a523acbfadd6456632bd593ab5f694a7734b163aceb6e6b3d8ed83fa1cf7b5adb9871a6626 +Qy = 14975abca1cb769a243936e65123167e535279197a37d8c92c7b138f31cad4e95c5f62b06f438f94c1a61634b34be7b96f09fbb +k = 055fce73c9c385f007256253281c6b9d0930d127939026495d0a30f25f77fdb6b334043c39fad4223852f7101fce72746ea205c +R = 01d7c26e0236afeac032fc5f3dbffc8c03b04417b514adc26d6a4f697b4e87a008d5ae97544a274c25ff66b98111d7c651c9381 +S = 07954191fad321e7f2de95a87d5a9c4527e658ef85faa6622d5f34f8bc2b84c881ededbe0281456e9b70eaf7a207e253d216533 + +[K-409,SHA-512] + +Msg = 3583a3226e2dc463a462fefa97024e6e969c1b13bdc1d228e2d7823d9f7c09012390c2535baf086588000e908309090daac6e6d2b06d2ede6fae838ed47f30b5b481185f607a3586f6dea47c8f84e9d3b96d5b0ebae2462fde1e49d84d36658e87dccf5e30c0937feefd8862dcdb1a1ca373f6ae41641502ac54df6633a8cec1 +d = 065b76c6093d9c49591293471286df1a4444e60d9d06cfa114e175afb5f119d2abeb273b0596019a0ec5db5b5869f2cc827b364 +Qx = 0266321fd15bf6b1af862496f467069819e3860f74a07825e68f3d023985bfbb838a49b6a41b6515cacf404ebf12ce0bd3d6d70 +Qy = 01593c7a8e629599e63d3282cbea78023518277e6731fe8d88cbe525ded554b51a7f8803ab9e330f210619dd07df8f67e1066a4 +k = 035682af873829e16b72bb86f3ee99b5d9f052e4a631b07f87d3b361c8d8260a877231dbcb3f4d461b4a1d4467824a26a5a6414 +R = 00a483dc2dc6408c256fdf63b04d71d3c58a08db7167da217f466cbbfb2d68444c10e87a9a1bb04efd71135c00226e58414d407 +S = 078acfad2f2492f74b0281d53e4224c7544588ca9ceaeb16bf759b20c2f3d3ed69c64615c247213d51800569dc8b00078de68ef + +Msg = 60ca58462d53d074b370127132f4e59f5eb8d15594dc721a94286afd082a8934e52462c9c1c3910f8b50d7aa3671dafa5972958d876d7992467b2fee3795a6f9d8a7bd3003a8582ea8c003aa1e02c08ab6804d85bcfa13a815d75c938671f0af0706c68bc70a6155708ca755cac2fbb68b2952208d63e0e2e3d816f04c61bc03 +d = 07e9993f3fc1fdc4c376ef77ecded96006ac1159740bd1b2dc6ae3d97e15a67383f1fc931e460b9af3fe14a54e47919667ed06c +Qx = 189b82003b546f94c066963239c7a590e064b88bb4548678853545920e413f2be32125e40efb82d2c9582d2d8269c1d408a7ff0 +Qy = 11583b267727ba6c1e17a244ba7acdcd836986089860ee312b6dc2d88a984b1fa232eb0419730db8fb94a5e077009c1d55979bf +k = 07574dbe04e1ac2bb34e40f32d6f6db364a95cc5770b79888d72b74bd4dbce9fd91136e9e1152424d76688dc995bbf2bea34175 +R = 009e42a63b41877e200829356a2191fbb6f2a9a234be58c76b0852e4f348ca61e7492f90a37feb8b95a6dd6df9d1a2e61c63b4b +S = 01499fdcc804fee8193de080b085b7513eb8022503de5f64dc12c04c0ba24af30e30f63f0e3eac2c82eb20c6672336f8732ec5a + +Msg = c749f9bb92ca9957ca6d0124206ebf65e860ff38a225e241950bf4526cef3f4fa9184ec83f71f813fe852dc08eca6b45b14fc7f2c6a19296529bfda007efe9d0d26492de2a902b45ed39603e22f0a763dfa5deadd97ef6feb859d860baa2cfd1d066c0be0f9f4e0e2fafa69cc51b12e814ad2e33b0acc0bcbe1df8cf018dcd4f +d = 00c11e2979498695c660a2bdfd105b115bc4ff8664ea15cfb40c725406c6fc9a13027bd1d72ffff6258f29e4e19b845243444a7 +Qx = 0904a9bfebc23607c7c89b7aa89315343852cb894f54fe42ba4225285e58c6bc318b55691aa6a6ef22eb11f44cbda89f157d7a8 +Qy = 19cc1826280e54832b455f0ce0cf89bdb62e973a8e819fb776b1a202b4f207b8baf9072929c9e3f6a8ff996d6d529de899b024e +k = 070fe023c9341df9348f08882bef47bd8dd7f13db7215d1cd52cdbe7919031a62455ca969a8cc6db0a05a0b4befb47c142c4f34 +R = 035e7130d59d92ff8c4f264fb2c346e052bc305c7f57549a0fe43cc7cdac6aadf2ce1939222decef4e1f900e3c2fb2c52bf53f5 +S = 0008d5ec1ed2091309ac11eb88157ba5122bb9b5c858a46769a130f7a941818445664ac78325e0b6d2a11bc89d08fe0e87a5bcf + +Msg = 4de8414780ea20f7943b1f1adae5e3962d96e828fee43bdbf2831bd71bd25df2976a3be37a7a667c7fbe1200de578920090d131a750c9bc09bd95b261234ea8cc25423c4ddfff5656d6b32da6e2f6f530e6673a8660aeca31273bb9a3a21bbd7031a2fa71ba37c004d3d1c64b2c0798783e47b2efe1a208959ac16e35d444245 +d = 068dfc23c6635bd1fa1076dcbd456ad6e8df7ce7c1370fe275803befc4ffad007fd062a61cf1d50b93aeb9afe1aab47a65af82a +Qx = 05591f8cb59ccea17bfbcb74e69f05218d16175f0547ab95f507ef8d7426c077b52b82dcd06baf6eae7a66bc72422236e589e42 +Qy = 126a01d5c2331a2d00949e07ea9242ebb50d830b0aaa74bce841d4e43bbaa9e9aaa01ba25db7a8a2f4d72977c0f016f625cdebb +k = 070682c9659089a703dd9fcdf2f3fa0c1d1ef5fae3f8f1b3dda55d9b611770244f8926898c904f6952c1847d287bca21db4dd59 +R = 02734111e3b736ae795929f835701bf290dd50c0fd625738ab2769242c1403197a3f4dc29ca618c2e292c6bec6dccff71adb698 +S = 0755292cc5363fa74e0193a806879d3a275b4beebc97250fb230efbb8364b2a30098c0488bcc6e20449622d6a5fd2ae24d7abe0 + +Msg = a081d54232f84bb19dbd52ec3812748e2e6486f6cf1b177b27929504ca878036547eb43531bb5b3edc81bfe105370427e92831d2239cca0106d031d9fa8da9cf89c6fb6401377d5936b6329ccad854e5567181b8f16a37c35f333eaa0ffe91d727d183fbab935fdac2d5670dafb3fba59e4fa2df1746c58dd8360fa08af7f4e6 +d = 040807fb888e1d9fd33604546656a493629d94d4a0a9de2608962225ed158167f9e2438abe2d12a11e2adb6c2b66ed78215b0b1 +Qx = 1787c0e6c55acd69bde9b0a84d6022796d5b5c60fe5357bc0fa4386c16f61b38bfeadb6cfebee7e7701bde24418b8b5642afefa +Qy = 0d9579d271ba3d5e2327eb863cfdca397070055b97714e385ffc2fc23528f696dac1a4d0e535641f6c876f1819f2672a8c31cdb +k = 010b8f5356d8a029659492c444876f1d274b82681d4f600cdb5fb2afde13598ddb71676d9ed86e83351c70678886e8237a865d1 +R = 0304f43f9705d189f47ee09a079494030b0756993a93e4c6ee6b5e664f63431f99e505747c24377e5930f13492483e6cd06ebdc +S = 0580d4707c97f0330f908042a6cb2a2b313f07bab34774ee03bbee63a4ff881b68def47cd300fb49deb49829bf486d1efad39b8 + +Msg = ea60266f1538565b3ff42fa4bbfe319be070329059c52c8bc04a7da2824f209c1145a05e551ea59ded8ca8439c328f6907da4e81d658937df614be98c7b8648818ea80ef40e49aaa4431f4a211d62acf2611f5d60c446b2b25745078c643859be1b12b3141a09ab765dd63ea1f2a2df015eca0840087a5db378c4c4cce76cba7 +d = 033bda0a02badae08fe40c239b9d59e5bfe1c4d4b9b7a5acda6790bfd77ad08dde5e93a2da80ec54a7f88146d72218bbb88aa10 +Qx = 02dec536832c8acf007daa66a47e4eeecfb6991a359f8c412299ef56c6ca2faaf18c4db708493e84786a7837ab74c5fe0644cee +Qy = 0906c8f603b579cc2384e0803d31d577f7c91c55406db3b2db91bbca323fdf3cb6d010617ad1aae7bf414c4d974f22e6f05af53 +k = 051e8d027e62db2397e4a807d98a24455a76eff6dc259ada89e794dec1484b44724894eeba842f60b73287642570460896dbe77 +R = 031769e6777444095d934d05dcdf82405c43ae91ad5fa9201568ae2aba25712717f1af2b8f49f6eef373237bd70c34889d0d271 +S = 0023498aa50ee095f33a4081bfd70a9484089c85fc7a4569f560ed67243745c823cc0217d29e2938f06ba9c8790650d10fa5b1e + +Msg = 82f38c9405ef0d26bcdd5b3fce4fb0060c3095f61403418e17c337933f0563c03691fabd32ab5e896c593439e7492a9970ae325c67196d9e83fe0f9780409a930326f7e6efae035ef8c321cb9ad12461edd5cde66c04739fe079db65406b3c2d22f2d04b1a4335285513d4ceb901d2ca2ad10c508302266c2cd6079ff14eff4b +d = 04ff431769d26b8837d3e1295f5464fe82be29edefba76323e92078a6483ea0daa96221549102509a1bdcfd46a5a2e5de10c39f +Qx = 1beb74d427d849705cf26e26312446f27a7c5ff26ea9dc1aadca763254fe53a622de29cba4fa81ee2f9e0319e752f72be46cc7e +Qy = 08dfcda35a00ab77c3c47dbc05b0678cf561f575369507097833e86e523dec879e0ae9583b4261f7a73c9dbd417accd4ae6688f +k = 005aff3ad332af23e0dc38c16853252825076d602ed4c6d947be751af5dff3f59611e6166c31740b5e5a167260adf2a5466289f +R = 035c4e8e1858b9694cfef3e864ed959638ba309ba2066a28fb9d0e02a66cd4c187dc6fd8ca5fabe68acbc2074168157b685aa6c +S = 04ec2db89645018f9845b7ae31b8418a767e3570d401f41db18e424fe861bf09114d78606a056617613447d125a283be5bdb6ae + +Msg = d8506fab4f681ba4ae86066aed447571eba4fe04e6585fe3be6af2ab1000a3da68c5b0c711a85ddf3a40cb7c8944eef81f2094650459e14f5b848e6add7e580b0198070f873eb3ed5d0728eabd92bc1398764b94cbb4cdd7cc2027b9762dd10782658cd9e8a5022ac062fec535d892198c8a387b3d2b6f7c92b1af6ab7dd9e4a +d = 03f85ca1169ca7e9df44cbc6bc7d2868c9d94e8f8b699a42ca492dca0914eb5789a9032218dcef7f95f959c9554a1cd83360439 +Qx = 0aa3c77dd4324258bebe7da5338c772d3496e3fd0e57f455459542f1a1c5b47692f51c3815c9549d0c23fdc1ff610fff6847ea8 +Qy = 05e626d6aeb86dc51f3b359b10862cd33ac9927e38127f7f17426f2369d62132a2a62fb6b8354c5ca0b3e5c7c87117b4f777a0e +k = 0495099cc73c9930333ae3f9d0b7057d7c70e2bc7c805c0c6a44404739b3fb68f9fafa53033b54b7ad7bfaf4bbf7baba0dd5a0f +R = 005612fe87c6a3a164d269da902aa43c5a4e0333770ea6334f05750be3f31ee758d169291e15b1540d40b60d1bda279599f254e +S = 011a633bbc058550a597585bbc9f33099eb517795600b019255f649493d4a6dd533be8b0965d9f9d9698677491bf929198ff34a + +Msg = b3f30d34f252a4c26f396079e773142bf61c0981d912333ade3de4e27cbc72cd8a16b31807f0c46116f87accb854487d83ec8c6a61565e6fca145eab70048245db08616779d7047db63aabd90dd15acbb05eaa510072c151c0518f1b34582b95f43ec7b9484b2993c176de79e84566764467f72392ef31619426d159c91816d4 +d = 03a97deb36d68f81f50c8829d412ee5de7f9d775633cb69c09dac558182039e275fc258240517a7c4aa592e364765321f27cb12 +Qx = 13f0f4c16a47ec3a46e7a088c1b6a63ef61eaea46aa9b2c532d8df84dbf64991bdc2c81ced3635e562d1403dbcf6aab2f8aa9da +Qy = 03aaded3b99a454b820fed989dbf6430ddcda67db58e356397d06aa137fbdb365ec43994abd9c0a9fadd2887da9539bb4ab3c44 +k = 06620ad14a5835b9e9e104607c317cc599416683a60ed8865acf78ae1e861246567cf9d91f759c2d4c82cec835a4784d3c231f4 +R = 068faabcb7c716fd73f129ebc6625f5b4660a88e47dc7dbcebab321051a61e46b74409e2b0af420e1671ef4efe04973c43471ff +S = 06851e5da033da0f28a89dbbdabe93ef11331c55cc03d5b096c0522370be681241fbe71d1349f219ce57761c85fbe208ac36a36 + +Msg = 0fb13b7c09467ad203852738eda5ddd25b17d330e82c279630b0e1f0c86681f67f6e537fb00da9419114973c8559306de58b0387d86e52d821d982a60769d2f15fd5ac2ee6dc55d8ac04ee247282cb2866b8cb8b4d7b4b6cfb33bfefdff09a73d727193e5fb939ff66ac5fcb644a44f9083a790888cc538c5eb435243c6a34a8 +d = 03b1da0ffed24e1a3b5ba22bd684337f6b08053591620541bdad50c761d66201a2cf21a4cc636426456525b598e96baf97d9851 +Qx = 0116a1790e621272b56cb4579ffe6ab629a2d077b779b73e039d74f58c476283c110bb18b9c9ed63de7288dd678064de68b7df6 +Qy = 122b43afccb88982f2e07ff35468178572bd72b644322d9e1ee68f78880169a83a5bb88c6c994762a7e8d80e09333487ac30fa4 +k = 06d7a24f0fcad549e9c36dbc70ce264a75eb37b74db98b1f6a824ad1e5635be9818f45c7544927807dc0fb3bb5fd38556e8656e +R = 0232339b50bdb772d15f2cb8973f6dd9397af45cebb69adfc089bb802e9c4029dfb2078a8a26d7197de10638ce512e5904ccc5d +S = 056add03244174966d53105c570e8fa660ae8c5d53316a24cd26f24e29e4b7459f4c9daef07442247b63665f97a3c07d91a8706 + +Msg = f9b8124281628cf4e1da0cb4f021c8d19d815644cd80c7c8de4cc62722904ec4cddd26cc4891f30b15098a25ba6923c6abf4774deb6e1883fbb409862f94467e75a725e7154be860fd58347577c83adbf18535c54b102220197afa062cc1c84f6094490ce488af4a08d2c5b808a2572e18a59de96c87162f88413795351cedc1 +d = 040bac7e0d3b54c7753c79d43469e310d876015d948fac4e3a9765444754476af72330e88d79ee6119697aafac8435ab5690754 +Qx = 0bd4fe8daffe47bfdfc43deca20b15da7c999084bee8983c62e3dd33740143c38d8f432cbacea51e6f53994265b2d8f4c393f6e +Qy = 06d88c33c31f4e143b13bedd5738bc1191fe6815a099fb7b44617fdeb08daa0cb74edab7f9a8c67ac1e9c0f0fb21a9f02ef4b6b +k = 020f2f6fcb3e471d47f21fb15301784f7cf3632dad3627a9ebfce587c0097871eca580bda051b100f991aa6de5edd3a7684e839 +R = 014f8884b5107e9ee5cf6f5d137ec9d59a85a6fa0431053d58a1400fbf0d518e8910179da1160de2c6cc8ea8ba8f3af8e0e1f6a +S = 019aa8d55c8d876989f9b9559db0576f91c4610dc9187c74aae2d4f212cd94d90dd81ee4483d88d866aec1ed469c5e3eed7d90c + +Msg = 4e3cd6100520db050af0daa69fe3cfe6603a223d4f2a6318fc5836db8640d4c7fb80bb781302036d2d6fb8e552b4eaef3133b98ba2d36b9ef0b86243b0391413c73d48ecbf1d19170f1b3b781b35ffd316afb1d55d1dda8e91eed5553780cb2714a93e7ece698b832e853e2589c5ba2b8a997bbbbf625071ded66762af8cad42 +d = 025b7eb3bdefba3c5134438caf968f615b315204f348006f82e8d61057a8a8a853230cf0500f9d0b8c1551a59b9184862dd2ed9 +Qx = 17d2029cb711e52df416c54b63a95a66602a1d15c3761d91071964e0128c91ea766b3d409f72d9fbb5161a459c3fd7990f87d88 +Qy = 1e71a9c66a4d4dcf199aa329e44b99f80640fc760fa7326f29c273aa13b153df5277feb3c049e407630173fdc9f735d7aee4e10 +k = 0575aade2692534b5a1a17d36c36973d24dc501c75c3b0b497a3d2fec80c67be7107988e47199d4863044fe9176762497b5aff3 +R = 024c6004fa92cad446b8339917f517f04d22db47b3f9bdb83d863dadb5431866ce21b13e780495bd66152ab33eeff8830cf8538 +S = 034aa568aca7be851d276d2235e42b6624df1cce2b97f6413dd3fc506f0f18483f95f911feb0eb220415ac593f2c93dca0808fb + +Msg = 5411708381a65bef4381c9e13a04cdd5ba0c15829f7f25ccadf695f635384d8e4704cb562741747831b33852567f42fedbd190d2980f1bc921ce01c17d659d4bdd7eb787b3927fcee659dd3b65132496c687f2249272a473d46326e66b3cb78dafbb522390162c168f73bdec88adb145e6afecd561979846ea4c8cee38dc1686 +d = 0673b3a2985c95904732632e5d988d8d437a60db13215bb6aa880b348f011c609a1e860461427a8cf0d622abc47f910f5c97ffa +Qx = 0c4f1c0cdc44d867ed38d093eb967bfe285df897868c83ffcc0c53463e3852a1b2039506d9508bf01d0d79ae537e42fa2070a5e +Qy = 0c2bd9343041c2c4100c5d795ef355c796a6ea7954cd729e11063b14a27fc2c3a9ffdb3647613b44238eee17d9cc49e8c5dfbe0 +k = 019a9509f5f6d947532638a3c80782b556c553edaee9ade91e457f7b5d2c9055572fb116f52cf4d3a2a0eca72fcb32b2f58e952 +R = 02def440e968d17d9904c5640619af2f447f74b7c067537db4a15be87df4fe68f44897047fa8af146462ceed4beae36d54e1aaa +S = 013d5b00fef639c556d66420090c2cab1edc57b7257dc35addd62a5337300e94ea7ee116e06b744da1b575d90da81e8ae2cd424 + +Msg = 23757fa60fcabf543e603d8b31ef0cc99b3ed16b4816a84e01dbfc858872fcb79fd03d2f8a1d4f28c25dc42a39e20c34f81ebccda1682ee9bd22fe323e7f8ea90cf4a2a6ebb634cd1153cdc35f7306f28a2efd822bf23131baa1543d0ed5ab4c8168d3199983fbee117085f90550ec3ffa2b06070d3add1d707fc2593285ff58 +d = 00db7dcac414010b816236cad584dabeaec1da76c97182d1b62f87bb7fe2946a64d10430571b2b29ccf2ef72c969a9f045f1f3b +Qx = 1f2a6cbb9c1fabc8db2848c74d918312267888d822b7dfd1634a543dcca4be7c997239f6281d1d8b5da9adc694706b7b19cfb0c +Qy = 1bde57a2ac15f4e6b26a373a624588a3379c8eec758f3c68695e2eb1856075d90085f43283d982526c5e57913cca5e2b4169f8f +k = 05a3d856ad1d6164993cc59e70f8551e2408da92c7e6cd52df51b37dc22e9ebc42fbe6b83c332eedffd4086a382056175ad7009 +R = 0489b0344ae4278a0376dcc64ef9ba8595bc2fd62ad22d42fb431d2863d8ca353cd9e59de4ac10108fc247d6ee9ef643f6bdb3f +S = 06aa27335e15dc910515385764387798cd4a9b4cd6d99d7c42e07fc04e2bfedf8dfaa7bda396f88253357d3e2545e895d9aa3b8 + +Msg = b976314d2f066f8893307a726f450dcf2cf865c170e90e6908ce9787eec48e1e2119a731b2bec3c12fd4e6282a393774251bcaef91af6ce57c63a8b45bedd72ab862cd169b7c84b8f6a72084ff823a96f2f8eff3483a7ebfabdabf0998377c5a6836d88135cf61c65a0ca7ca57727da68047dc635c17ad13731035fe9a6402af +d = 04717efef16e1ae267e155aa1daabafc68515aa391dfeb73c13d01f3132bd22c984228dddc4dff4c39979e7585acd3f730cfcfa +Qx = 1526c58a3de46c95cb0527869f7d637f9441cb5504e6a01f339907c6df3d079361a41571cf0a0f11996028a41682dab5decf786 +Qy = 1581903be8a19bf8bde1d89bee0d436f061ca1a3ddded4b7793fbc32ff852671103f34e16d469eacdbfa457643d1b18dd1c4107 +k = 05c846bf61c068b421efc472469ab1ff8d9f34847ae0065ba6f4a000be53727b3fcf97a780362566e13ebab84b9ed5f0cbbc225 +R = 00aa138e742ae81eafa820632f31e87bdcfce6b909d85805e46d87d1cdb8b968907470c7ef5806accbf6245628c70d264fdd95d +S = 04df507115384327f7b8311dfd1227c19a6124cb9bb5901bed45d8d5ca45db0903f53e7bbf136350e66bf2b4f3d978f8bc546a5 + + +[K-571,SHA-224] + +Msg = 964ad0b5acc1c4db6674e86035139f179a9d5ec711b5bae57d2988456bb136d3aade7ac9ef10813e651ae4b9602308b071d75a934a6c012eb90c5eb9b2947b50fc97b1d36c5bf9eb13a7b06c94212c3dcdab402a563262298defff62b836ead1f78f9d20713710fb48115cc5045ba15140fbb4bdf516e4150d830d02cf30963d +d = 19cf4f4d06825499949f9e0b442586fe1bfe3459813a2b92cd8de0f775a4735e02655702ead8e60824180761808d9e816d60bdb0238e1e8039ca7bb63c92e1cf8433ef447e64ead +Qx = 07b9cb1728cba80367b62872a986e4fc7f90f269453634d9946f79b1fedf42ca67af93e97ee0601bb3166e85357e8b044e39dcc19e608eaaa8a0066ffc48aa480c0e1e8d5569cbf +Qy = 580858ab9223c2b2ea58df506d703d64b387a78ef43846894e7a2e47c02252bd2c1e3d21ada7c21d50a08cef0f9a189c4e850c058cc57c37918251b5aaaff2321d7355b6b555644 +k = 0726d5e317f888dddc94c73acb14b320ff509908052868f8c6b14e531ca467c1f7c8287476674efd0d636ca94c24a69d15210bb43a368a11d3453d69ca80430cbfb8b6e45d8f21a +R = 04ec6205bdd8f7eab414110ed620dd3fbbda4cb3ad9e5559a114ca9344782847621961a3577cbbe43d94eff6ffc8dd7dd09c049239f026a928301ffcddcc910bf196853edc86d31 +S = 16535b1af98a75b9bc0f122ca3ce23a01800fa33b43584a94fd8a8d6f40077eb739f07c9f0e179a157a28023735fc8da2e2ebbee5f7308925900e657fae7c3b321f14fc45346f89 + +Msg = baddec4794effa668cde267016dda67bc70b847919a9aa595f93ba9dc27354399ef7a607fbead31e57a8ce698beabb10f313d393980425e67cf95be45d512f00e950c0c5409573ddc3d556f23daf056259ee8914e860562a674311452fed780b3e0317a7fe93baa81fb98df3ae4328b28ad0ac8f8ea33efe24faee658ad026f6 +d = 098521a732e72ed945a549afc92318fef7156ed1d1ed9bab93b581478cb2339eb32bcef705c9bf61cf2873ddbadff8ff3806740a2e30ce67d1807a8179dfd5d952e6f8a583baf81 +Qx = 1e09410bf4f84d53a2abf8d106fc64e643edefaea263dc98c308aea16ec75f083b3e6b442ab261226c59ca5fa622db68f5cb5f2d1d465b01d0048554b0ccbf67c0aaf934d2365f6 +Qy = 361e5b43d313a62c7b3897c7db8a42116127138a1009f0bf9892981fb4fd6ae231b8940e7509f96e2a49285143010dfb4516ff810a91a4d9d2974c522ff343e93e8aad00aaa78b9 +k = 128056de96666acd09b93c5db7ba1b8fabf57251ec480d42b702940b5847d2a59b04eb5101bb3990c3ae2a41181f19a2afcf08424f8b922a95df6b292b1856dc4a9dbb1c717ba5d +R = 163483a7e0d1012695ce0c113ec8fae3694bccd40fc038d4038f81bd39e71c969cc7f0af8313a9fdd3d028ab24a43279569dcba73fd78ad74897964ae715928b1cf7fcb779b12af +S = 10aac6929432a6bc7e12ffa86e4d2421e0535fc44a1160fcfbee477c29a987e783a7f753eb2278ce08954c7e90284d2ce7c42de103a9c59d8e4c459b457688ad515cf156cfc56f8 + +Msg = 7ef7138fc657492d229054f8a50dcafcfcd1dc06f1c16640af3f658907e2969248b54416066eb119adbfa23b8dc578aef18bba79610b9cc109394b900a25e55a779230bb858b2ddd9499a7775d392328db9177aa9571c2f61dd52010b48502154e914a0c55a54edcc04a6713cf7bda8744a893926118b09df877d1a4f3d95e8c +d = 0336fb21549e397a190beac38a1ee10f0551952da15f71e11dfda415e5ee08da2356f114d450c661f52b2b32cfc7b9be61732672691a079f0927989b7e9f4efe6095a242155b641 +Qx = 316800fa2d8f8f3f9aa87ffb628dd7b2f63d4d8389ee86ed41bd4c3eecd3f3836ba92e2ff7ee5626213f9ddb41b43561c5dc0bcc3df0a872e4b8026c09c7b52b89b4975a43f60b0 +Qy = 207f956df58f75286232967dc1d3e6507634f45c0014c48b42868fecce5b9434463abfcd2b3722a7f5ed25607270148466f6ffad6a8c86e538640ece80e84f7368d33c68807fed6 +k = 1517b3524b6d43dcf3964f7c35c89bf14dd1542c37606452e2035ff0bd0cd1edd6d7b801ecb1f573e957131c0b3f30d5006f6e4748a11b9db10fad41961f4ae53e848c6dc6e1a52 +R = 1ffd4865dae7387ed797c5ffe58a929cffeab521e48284bd7d4427d5856e9d2582b91363f1d353a0ab1aabfc132a778a516d4033c64cbc991d724115d72ff8e94ab4f95a9514843 +S = 10f010aaf1bb714042fb8cf06a9501dfd1ffa598d6b3e68e7addefe00e18f3a5db8414d625e374d9ae70bea43b57c6be4a590c28e50a548cdb2e30dd9d6e3ed1d9cdada9f8b0049 + +Msg = d58e1ff1d49a471d0567ecf8f29173dab5fe5f6184ab4cdd095c231fa7b82551f99a482994a46c3d8ebc07297fc9e952a5dee7d5f199b119f6f8b250f8fba45701ac252db725e75c4da27ad77d59a4eac448e54a277986740dfee6596811e59afc9755e53d24b826c09e497e29e69a22bbc85be11763064e9ecad7ae66458ca0 +d = 0e287ebfd9ba294128cbd484fc5121d271cd33e685bb1804f09b40aaacf64b5a9f2cde9b30a4a02d3a9bda97d92f46bb8787b3c61f280b1e1a0680f1f0679d3bb34d53725d62e52 +Qx = 52903a7afc17cce078b4b658766a67f2f75ac04e296757fd762fc05d6a7b4e4151598a872eb4618efcd06c43cdc3e54f437c0ef1b091ab5e4927d3ab4227fb24d4413e0327abb84 +Qy = 385e808bee8dad1a1b84d644aa29fec324dac2242709421479fa7a712d18b54db59778724ccaf4e51a27da090c6dd0b7967024db0a8684944b77295c9624ce3aba24ff48c86ac85 +k = 15e8cb22e371965801d99407d96200015ba58fd7eaea52c03269d8a374fc7aef17fbfd4480d29b781292e179936a68ed175802f34043018ed1d6b5a4df667d859cd2ae53ed3cfcf +R = 0d3a57af73b7504ef18c03ed2c52aefe1d1a3f0e27f78c11d45e9825647d5ff6e97af51a5e366e52e01e5e832e4264a1d5b6967cd9debda59c955568e4c8bf804d843a49a0c5401 +S = 064fd7ecf4470f07b4df3b3046041e49f310a463210571606f00a1915c5220a27bb7a28cd0bcdbe374651aac06d4d9e017e31879b7819301eabfe3a7afe4b53f75ccc465815b4cb + +Msg = 4949ba765c14c31f68ee0ca26bb42ba2edee63537de4a6f5c42bbd862c21288d6ff48145260365193c6fd2b56dfb014da26b8a483776b717c6874f627c9a622154b824565b23e178240f53ee9748c45759ba5c035b584df0f09504e95eb9bce0301653aadb860bb25e6ea6b9606e0ec3bdb8089e6aa0d5763d331757490715f9 +d = 149de496fa8f88b2741864d0c35b3df666b87179b7bd06cd426a45f13bc87ea9f50dea85e1fd02a532630e0e3a231cc3e7fbb7c7ba85b40cff1124e72c677c6a3ea6aa40ffc64b7 +Qx = 0bb610e4308e229e4b4ddddff5c4633ef2ab40bf74514433bd068c7d59a6260ac79366dcdc039d5585e660a4cbee990a2cb55a99ea3d26dd9df856b0f3ee5b968bcc349240a9a2d +Qy = 3e3ef4be63fde6ca09f12f8220e1d9b5016f267ca5aa09a2dca8a0e0feda9647fe0e1f7ecae7147a10ff893f69a4f74172c6e9a62f0c5bd96d49b47379c9c84f5ef8e59dea104bb +k = 1cffdb963c2c8b8609809e998075299776b44d2808df509773f310124b5f318d7431f1ef8b38fac5cd5580348abc41e6e6396767f4780656361dc9a71dcc8e7c9239d6eec5cdb94 +R = 0982b9989c92e1a5d25dce832bd8a3f602f0eaea69abcfda285cb3841fe3f019503e6faf8a693712380a48a6af8844b6bd718f0edf3b57662a4fe82ee28d036ecc4cfc7310871c0 +S = 1678bec58d69def3fe35a64810b27fd06bc29d165593990f6f42c4c7676fd5d4a965fc92cf20ab8616c7ac7b4b308ce6290c5e8b4edf6859fd6f6f01878f2601e22acaeb5ce1f36 + +Msg = 5bc63e5c50b1650f0ed4a599960f1e4e11f6c151b2123fd71d9e3c44662312a74b6854290628e20b30eaba81555acb2fb49b640bdab2528619c7fcad0f2a2880c7ea232d427d7c935fba2313370fda8863a7e7e203d63ea15d0cfa083e716ce6068c63fa616ddc225c9e413e694cdf6b355cb1293af5d6cdea51168f5634e878 +d = 17605d7c5873d870462375d741b4bc6375f3d47f7f5e9d998917adf2137a81e63b66917b3dda8968930c4b850f2270eb3187fc756e2beeaa67fe0d73053e6cc0ff0004a21250551 +Qx = 0d8ac3e76c25cdf4902426569763f4ae0638ebb1fbcee6e12a4e0b89d6d451cf420d10441a0a9984710dcac13bfd7ba70370afdfb58e2d982ac367e178f6834b4cd2d232e7f246e +Qy = 12b5fd5b686e58df08b695fc333937eafad6006be5a7bfb1426206102a79bc32fd9ef46e19869448fed0e917fe059b76c8b5a9c403c3921ad07e6c19ca7bbfeff5491b22f8bb961 +k = 09179b3ea906137dcdbb97b27f3690bbe3bc4f1f57c46ed60b8503cae97602717a0724e055a5c52199ae3f08f1586b87fbbe514667d2eef2fe44092f3c916976c7b71eed67e8fb5 +R = 05b28342703c83ec2df898458fea6f71030e4e9c567d140ab09cc95df29ccfe199837cd58ed00d07241988bf3c863504d065ebbeb8ed11cdcb02da0a945ff38ca58d629f76832f1 +S = 01442a5606791569749b5a9f20ba8eaaedd1a2ceaab2ef55d5d41271ba23f6a5b6a33c76763fc99b291b07283122596a3331fcc9ac038447f3e0cb54872c140300fea65d7809191 + +Msg = 610f6633718e49d232b3798654095e2efa0de11f41258b27aa01956480c870d901efa77e109d5f95f1f5101d3c90fc51312d9b3019d2e42e0067eed7b457dc7fbe5466923b62c83d7347e4dada571b57813bb9c21d5e308519b8eedb7a7706508ad04aa69698e03636eb30fd9fb363ef3a185756494ee01175b16847f5b68076 +d = 09214dc2da0967912c31995cb8f5bcf4bfa832c5a2d3610f3a9857e5eee7c77100d599d9ed003b4106013155dffd6c48859b846e45e0ddbc5fe24f4891c9b2df51407e9cddbd974 +Qx = 64376a92c1227c1c479260c7497147760c103bfa5be95ca1593f29a851daf2e5c3a5c73c1fe3e6e2506fcea710254ab5eb2daf8aaefc19cbce7b1c4afbaa2fcda1ef85750fc0a3e +Qy = 70638482e5c7c17a82980b863cde11294c0df717bfa4b9f884cbbbbf80a64dd2cc7c7d89ed21e10561260d372da2fb726de71863f0f60e8ad0fa5e74fb5d29bae0cbe8ad6b32f6b +k = 0621176102c6ebc2c810eabab9f60feb71083c07751c66f719370713ec2de9ee3957bba8d768b076885db1f226a9d37588abf1b141d81b70f0af711c52edd30e92e34a1d3ed214f +R = 1a21d460ae85d0703b4b10a2f77547e45135048ffea590ce86e0a1c049f8a4aa7b395f723b7480cc84e33f4772df8f181f3919f3c0b0b4f276b0f855174103a2f7bd757584425cf +S = 0b56bbdf6e2be1b9e754f9b48b3ba9a13403c17c5cfcc4910112704aceea9a34209df406ee40e0a10cbc26d03839f95e775e80ec5e29b156fa277a5ac68abd99c7005ea6ba2695b + +Msg = c548f0546cee0c0400401cd540a0aa9377f27ac64492e6baaf38e794db4df83e64ca3d83b67bbb46a6c269c04c2725287cce0dee984a0d468c9ce495a7e554a6835d72c7493bfe88dbd5a044a148c89001b8087fb03e57c2b7212d0b175d616333a9affd8a1802dd49ba9be3ab6c6d9f99a5578d26cc4707a5860c6c804d69ce +d = 042f2682e9ac8b76f3c0880e12c292524601dce9ea6982dcf68bfdb0d3fbfb50dc9229e54149ef09b95bbf624eb04ce1427077f30d8536be9f69970ddb449ca22ab8368d2689ed4 +Qx = 116135b273ef876453b9c4c39e4be5a815874857f4a72602f0d03b4ecd9a4ad73b90600c71111e317df0782fc92e6ce2b194c204340bc11e68cc22ced38e99f90dbaf0f917e970d +Qy = 36dfa65a6e9d0ba521ade7daa2f6b01e1d14fbe7b5abd29ae71c4eff66c390914bf46f09f4ab8a06dc0fad6fa257a85f993d6829b5e0add5086b8fe2ecb8027d08eec1bea981cc4 +k = 0bf116711b31ca347d41a6cee5aa13a74e042ffbf79d2ae9448598e6950d721b3773ae6f25d7b49ca9dbcd62feb011d5d556bb9f8a55a7acc9a3a166a4169351bc31a293db68eed +R = 11dcb7f4103e814439df22764f776a74aa86ce9717585712b224803f0ff193d5f541d94142812c726b75e8c2c37f2a4c33db6af118af73d3ec4fda49cfc911fef1eda9a470ff200 +S = 15fa4ada3a6e95164aa8972f14ab7572a3b898feb6cde160b8f25094f67343d35e6efdfab18793f77e09e5a42f56bae747b2b66fa9fe1e4a97e5e05ca743c058b1024cc848393b8 + +Msg = 9431c6c5237f6b4b35682a0c32f68752035c8b295a1763c5dbdfd73466cea64a00ecc11356d02d2a9211dc54548f5db1651e4471898402c887fbf45005a3bda271df0158c98319d4d6751b8ca6b07100182957d5fe0d97c4e2294406f83e9afcae4850bb089f2252490417b5afd8f07f4c795fa84c9c7cdcce26bd97273c0072 +d = 17ed9a9c75cf66528428e85b0f019e3488af8b893b12023ff1b4ca9c3691b74e594539afa0f4d7c3863d15399b862f15e27bb077392d6bbd546ddfd46728c75177338466eb2f4ff +Qx = 760779389124c702686d8d7c25dccfa74fb333317bdb414965d2c271ca5e687c4cca57e6f6149e1714551761abd4d651e7b04451d8be8e58c0c9e361fe0c6771e3d547d6ac3e8cd +Qy = 52d5725d14b9aef93b83d638377f5a19e3cd6e3584121fdfc2c3ba1a588491d7e9892be081c9e7585a15b37a9cd4c204054dadf06a9f4ebe98f95f6554941982faf109c2af98c65 +k = 104ba3049a642d9b49c4302e9173a9efaf215b67e060c5e9673521641c9c2a5b14bad25a448e46faf73810979a3a50104ec8c5230a909ae588213161fbc10381d7c75b35c84046e +R = 1bf3e89fb0beb1ab854a5513278dbd8b9c6b05c94ab67145ceb1ffcd93d1a2aa374db46ef327043518a7f272b957dbbf9d6cbd6708f4c89f05865932b7e816b12a59647d972f6e5 +S = 13a8c121c9c170b244ae3a55aa2d53f4ae5af91b1f72c066207e3f52e44723bd4ae419d24821b83648cd64fa70536605912a5a9319dc446a6b2b639cb99ed2485271acafc2bc988 + +Msg = 417cd5f60416f17081d2c70e9a510114e08be83573bf9deae75fbc3095dffc8a7f7325f61f9d6565381710eda871388cb17619e4448836076338ee309a2bba5f737319002e259b4a875cce1bb97996101c9a7abe0278dcac203a712f0809eb3c4b85a9c380550ab0bbc5067a8edfa78abf03c09b5c08f21714e1022ebfcada4a +d = 1bcc09b3f2f1d26ab9955bff7e8c0f85c8a61293511a196b53d7963f4a4503849c96fb4daa68c9852ad9185e01a35f0bf298e34a09ec352cb6da34f89a1f23e8ea27712a8f43aa7 +Qx = 1326341764a4aea222e7413a4a6f7bdc0c35ba246e3c68728ce06bdb19f2e1b9102add88a8511130ff48c0cbe4012ab52de93329670a319f6b1e7e7dbf177667d4a98d3891ec147 +Qy = 7a4aaa73713bf8fb3907d49e5653cf82a9587518c2f8269cd1e556a3be3589dad4c238e4c80681e141be93c318f0efddee3e378cd46512d778b9033dc8706bb843a3c3546e76e4a +k = 13412a98a2c14a9672ecd42db9c079a689b147ad91869c3d45a7046aa9dfd3f31edb43ce6b84e9edcd7e3ac6b96d89f13878cf5befb052a6f8a4e5577bdf916adb10d908d5e99b0 +R = 11c8a92044a30be397007a71d9af3e4222556a10f3a07a1521c1bcef73b4ddb94fefdebba5944d5bd91313560718a8f520bb5cd5666539756a5e9b66a1b2d18fde5ae72e61d584c +S = 1ea510e23ccc7596db529dfbea78c99fc78ae53da32ad7c7bdb1df01039310988ea601828fdfc59a0cd237110cfee9de8711c073be44dd4d04bca4b1cbec278b1a9ef175d93f70e + +Msg = eced8c412a153a643ccd69596389f83b6a36880286f8aeede503452bef8305942d95734fb5733f37ffeceb1c2dae7b1396c3323de11089082745c28a1756f784423fa7ad68bbfbf0d93ff8b7ad62220500df6d6895788402c1f5c69c06dd9ef55e2401cf297184e411be87c1bba657f847208c0e750f94a3df92f253b377b4da +d = 0ec52fc3d9c272ca80623e06b15c35f349b13548ef7ee400bbfa04196850b3b8cc7b239238c827f9b0a3160cd97969ce21d66752791f5896e0385b0527d4d77e4b9fc70f04d73b2 +Qx = 5cd2e63dcd48fc793c18776d030398dfe3f8b6978eec6d23f49240581fe1e141f667498421f4c40a9430587fa282441a78bb641894cb79d929c299f1aede218a0078c247f740252 +Qy = 0cd2843ca87d98f6336c0adb97bbb9c5293a03e5b86d5534e2849ebbd73dff837ffa488fad7d134908234d0d7fdac8c7fafb4729ecf0516c42995fc9337f60db2f36eeac69a4e42 +k = 1c40a15fca0c959852afcb4ca6cbcc99fb680950c64ba18ae5388bf783052b6ef3730b1fb1487189ad983b6a68bcfbb707466092da52ea8893d8bc4898eb133fd771e78379b9c13 +R = 14485cb1caf1527350587d6695ee3df2b21c13084df0c093ca5109d7c192e7e5df2232ede11dbe5ff2f46b13dc2dedb709a0fc1641c1f32857040147599d8f179fea6b2f2417646 +S = 1a16ebf12c11d2d0a64b7ea124623ffdfe2650fc9603ded571e76dbd7e3b27cd32fcb709e2ba04aee0e8e1b942a4e829cd0c9683aee67eec27d4244a2cefc36f84f7de209e22a62 + +Msg = 30e83ea39a92036e22b7bed7639eab5e5be1d00c20b4a9b9afa9a0d1653369cbef363c119cc6f921c8f84663949c8b8dc9b743ac2b1861a480476e9b64c8f333f34b6fa0e1ddf09d49618ee4f3c1f46751b5595f0aea413d4ca46f3c26b974b112cbe99c813a96a4423764c069454946f213c5f066ec38108f947abeeeb02fb8 +d = 06403de7627de22d1dcf6b8da5af62f9ec59ec065cc1ca1311bb98aa439a6d5985619b17c17a70f59e17cf180ea6828ef57f5f1f8ef05680a9fc12ab7faad5af61e4e11fb45d341 +Qx = 5575c329d73f261ab6897153d7261f87e9730eb5dad49c05d782cb02e483fac4a9ddff31d2fb695a62cdc44edef6398be8f4f84aea1d63d0b3a771fe91889dfac4780063d258325 +Qy = 183e63ee783abbd00547567bb99e9b578ad8ce63d229db41c6877534487568c423d4c389154af9627708d8d8f863597bc668e88f9412b21a6696d07bba06fe7aef93b26950c69ed +k = 0e751a4918643ba3e68bd9406a4386e876d0d66342aefb4ef75bc4dcb8cb2e2d9f8378bd02c388c776535ba85d24b206f5bef4b2f23a1c99fe2f2e8ea201009ca468e5b2e21dcda +R = 0ad6792fdff4c621219549834cf03808645171d944088f5a6d3cf1bd826b5588544a32f231e8428a03ec02d6c1c1243fb6b79b1cc6d732be5be8f2cedf03c1e5588822eec559b7c +S = 178b64bc5f9fcedab17822e831fa52d49ed10afef1c5912893df4bd8dc960b474ed25883ddc343341b696fdebd06e177f234ea45553cc83920a8c799ada2deccf1ddf1dd9aed863 + +Msg = 3ed244dc16a5cb292db4b1433b0ca3226913f07377faa20c6c1402cb4d026de808ca74a6d4ecdd7c4e662105bff6edb9fae0117c50aa053aef677c0750c7a446edbb879110030758912e8fa666489d702d8fceb719963b24a256429bbcc869a1f4ab9de9db89263e3684d4daa1df2ed94bb59dde2abba63793e5f82aa2e4db83 +d = 01fb980aef64254aeb9bb613ff2fc6967503db4bc1f337882f1566cbeb57489cf32e34f310549f41cba1b951f487453c29753a184e33330e90d4b973d2e406c99a239a5c3f96233 +Qx = 36ea761ccc71ba55aeab229aaf874a7c2d1ec15d821401e2988dccf02798c4e7bea80d9fb8d30be213fc80475a17f45d60c53249b66858d29c73e73117162934dd71096d746742e +Qy = 49bc28f4d45d29c3560915698d03271028f56c29f0ead0608cb72dd0b62490f95bbd67145a6c0adff0d6ef396b4deea6a5e2a33f242bf17e907b136c039c127d6012c88b76aab3d +k = 0ed404ee6b59ffc445b16f11b9b1471249443f8a7309ad8a662b7cb44c94866828c906fd64784c699cd29d3d972e5db3d42157452630f14536eca23cbbdd1d37e199e5a586fc352 +R = 1056938496df511d745f2cb88acad279ec2d58bb36498fcd8139d426d596de6d145b765a5b3e8366845fceae91d14075356a32515134e577937ce2af7e732b4e89a9164d083adaa +S = 0d5156c776f2184babd69c1f200b8bd94289d45a2f8b7cd8e8afb1455e8901d8c3ed14b7a23b0976b85a22b86f3ccff4ae91e286f696f39646188b675895684f33f0368098fa7ca + +Msg = 40343935d9423ad30f3fb1832bb08a5d20ddb3a55b59057cd275320db4a5835471c96cfb7d67f41ef860cf5879897b8dcf307bd1a52a6226847b768ea38ff1858f59e64cd635b51e6863773cc6c64b363ec47ca39266422406264668415c189e2f92447ac4c63ee5d74e95d1e6af05016917ad237f482ea0b02aecadd370a8bb +d = 1d96dc09dfaf602789c1dffa5c9ba130832badcf180429660daadf4cf1be5cca92fe9713173861670eebfe3a0ba25bcc76aecac60a756f07b69687e05c7e25984a39556469f62b4 +Qx = 452b1cd70e3c88bec1fd0e4b8f8e9bd5f844ffc12f3d6769eeb1c9ea90e599619908682eb5e43b1d6eea63ba9353fb64b59d6549d19cd95f2f54156c81fba53aa0dc91244e7ab8b +Qy = 20926ca366dc657d133f0ff9149738738ce68f3cc2f61dad590e2502e8fea714b89543f43d97b46b7075c58375efa379cde208ce769a16be9a377a111a8ac51459840a223f34695 +k = 1dfd064dbe64c25a832faea1819cd836d22583fc40b2ecbc19b1f5173c25f33ca8cb7f30bcd619ef73a4c14c46e610c8996059612728f508bf7db7ab3191ad61955e8b1ba409692 +R = 03cbb0ae5f7c0978ad8c10c4ff099767465ed6fefb7358f3eb58a79366707107cc88b305661526f2972bd16923375dd898ae72e81f290b86cf9a4dec086d7ef04d7a7bba5087f8e +S = 09f77a86f0da4e35c395978603cbb9c4dcccf126b7cc924cf62732593bb1aff0dabb6d58321debad4410dbfa1fb8fe249bfc336db7669e4ee13485ccf8dbde01ca4cdb9acfe5e74 + +Msg = 274567f8841183e68c4f6c6b36c5a52fb0e88492e4076b9cd768bf571facf39dad6affeb68941ee326ee461ce1f33c26e4bfb3c9e0cae8241fbcc14cc69c1af68701fd0be3def1e87b7d52b682ebbe1cc225c1bd177b0886e3698a06d0e410a1f92c9bdf7239189f6acde0d0653815a72987671b415d1e8a70e685d6e5b14c33 +d = 09d98b32c8eacd135ffb8e13223690ef02c0c1f29ea8b4da193502c8cb3f39f9eed608c02fd457f2fb685ec4595e8fc8f388d26778d225d2b18c9bc8b199d8b65c0d1a6af33854a +Qx = 775560724ab7d98407e20af12b03634a757037f8b3854957e11900d58460ca20d93ef06436921f8d4481ff9123a9eff3973e17d441511df3cd88d0d6dfc8016d2cbfb8963378463 +Qy = 3082aa4a81d4e6f0ffc94511327202f2baed72c08026e05a288eaaeaa36a1a4961f400b4712ce68778ff38be43adc2222a986ef0fecde62f861575842429816c8fc77797af018c6 +k = 1f4acd3430931ecba5e9d986c6712467526ed94a0bfff36135da3ba7dd9870ceb38fa0b658dd391ce658774c6725360dc20e5ef41daa9cf52fa863840ca91053e7287ed29ac69f5 +R = 0502abe544fc3262663524cf88a5bc256b20829b7bed3e2779f559506adce3c4f3a89e18bfd31819f78ae3809d9d0710c6591b2fc90039328678aed9df2fae38a74b66f69295d82 +S = 0b2f055248d9633cafa4db3b3cef0b76ee02f6bda3d508e19c68870e76a02c69dd1013a03fd741e854cb34f815432bf48138203177141be7209e957f4db1a958fcd45421a213c98 + +[K-571,SHA-256] + +Msg = d9c99b8da92d3c2e40dea3c4025dc37770e867c4d2746c4d726b6de24250591a586c166c88acb8ed340e161d4c81b9d14c919a1b06f1feb22c5ce5fca2693bdaf4994ac72c8983c87f331473fd094eccb3d5f3528e69d487562fb5a65c150a8217192f8aabfa7adcfd0b6916d5000248fbbddf1ca2f38e3d9ed2b388998b7cfc +d = 04d873ac744c4f68bb044783ad69e1a733cb8b8f483f2695bbd90c4211282036ad7914a53b25c3e890c6824643cffbdc4138d7ff457e3fbb99387494eb5cf2bdf1ad243a3a1e644 +Qx = 4644456a4e5c543af7a086640fa9ff6627c2d9f17066d255c3e805db31fb1ba895682e94f6ab96d6ca449b0c3f76bfd6593d182f422689b31d9dc3bc0b70df210a96d19af9ec2ac +Qy = 1d38f8572a06ce22c1586a8329f9421414b334352f1e8b961f7e0732ee01e838eb975bfb2f62132bbfd9acc6ef8899b4fd388c2b59e564fc3670da7a008ca016de678d6dded137c +k = 0b050aa7266201a42dbee063ae2a21398ee1d2a190de9fbbce2468836e416b3ec18d7340c81fd2a5283713f9aba33e8cbb105eaa2abbf0b687fe2713921bcbc02a4b77df21f762f +R = 08351115714bc8f29b84a6e3f0a23bdc219d4271a9ee18bdab54c3acc9cb3468beb1f89b0f981da5aa7d7ec7ad451bc5e91bc98440fe20f5877a4e73614820b9ab6f2bad3e2e609 +S = 0c64baaeed68178f5a1d8f095b0932fb73f9a02462df5e8378746ecf17d05971a0a287d5a8e0317db055b02d4f4b5864597d0f9a9cb1ae68577dcaf7db09c55bf3d3575197295c9 + +Msg = d2b88a01fa17703c99e5b867c645e98feec0d6d1afaa20a97b5fce9c23f0594460142af4e36a5739b8d26d3ba35a0263caa5429b4abba157f359fce701c43372500fd2ae1bc2ed80bfcaf8cab7016ff93d4a27f565b7e67fe7dde22bf02c48be12114fbff2421517c825019c0ccc72d927bef156140d7f0e9b6ee37af78c3efa +d = 18d2eb947297a054f8a789771dd875b12b26ef057fb91235dff3b062916f85aab3365609bd2a38a861439c8514e33f174c198139354e63766942f605107cb1b9709b782622b295a +Qx = 3f6454f1dd032a925c6bc3e1c62892c1dfaa700d3badf83f07c1185c31ea817641865a129572f3351340fec331f5ed466db7bea3ffa9723c951b518ce6f3c9263a7bd6866c8b0b4 +Qy = 188877b68c10cd6ee543cc5638bf0f82db25b9327b2d81269dc61250eecb976d6568a9df29277836b97973e3615e0a4345e610b33909c2340a23c61dcc6e2baf2bc363a33381802 +k = 0ec6af799d92ab52c51cebda61ab642d4876f374edb17253a1de3e880048355e58367096d3bc0402e4b93fa6a6c8d55c529b9fd68a27962c19274393ebe1bd0b1197a28125275bf +R = 095c42b3ef01c0f9ab96693526e903ef3ccf0d843776089d15e77093fa9d010872d65cee1801f821bcce747ddc5875eaa462b00424e6cdf0995b87c6cf33c37d4463848a6ad7fee +S = 0c4f0edd4b2dff4f9fd1fea5addef6d483bb51c27bf5c7aa13f9482243e5ed5571bbe0a658543c69b731de56b6b34de27795095b3676375cb4686b45d48010fe8c941208cffded3 + +Msg = a704a1428cc894f958774368979fe075353b56790555386e3b043dc6a2919b94a11c7f85883f46b4d47b324d349c28c667bf9a000daaca1d7191f2a0fd97a4867aa9f72422134a690625408a9ea4b723704690b69152655f9e9dd5fa3dd94814d97dd4f13e85c3f9bca769491c2461fbd17e28afac00bfa81371d5039013da8c +d = 0594fc0b7a5cc0216d2e78eeeb6394c8225de795f4b73bec48b2f4ede185ba622b59a16dd3eedf8cf2c94f2ccd6dcd205f64c97cf1b7f1e34129e94b5129502909f43940dba0746 +Qx = 271cbd3e0d73ac19b975559450d686ed67eeaab4175435b2801e8989966d7c5ba81ee7d749e43dffa12efba820462bdb274a57d04cd7e92c180cdf555686c78aad58444d5f17129 +Qy = 7c407b46e93d4c2b12c967cd3e41320ea8535a2ff24372a5791fac9e95865e14d545dd3627dcb4aad2350db248ef49469ff4d59a879a84a19d1c0e5d7ad3db432af927c88aa5d48 +k = 1e730d50a9747c7c1ce2918fda7575bb81a74757cf9625d0f0619aab7f1eb6954dbaab749e573290406e599eddd7d3376dcb3fb98c116ed7b65729dd04ece3eab1d7b4bed52326c +R = 00d59ebcfb30d7b27c87d56ec2fc9286b04b39e68dc49b395f374e19647bcc58f2fdce1c0dc815cb2aad55cf863a4786efd6c3a0ce56c1d92aa20a19245e74550c17fdaf7a08340 +S = 134e80d63c9b328e02ebafb75eabf0fafba886f48b25206cca9086e03658ce2047c94a5222a206c6c5a57ddb8f59c5ba1408fc56668066fef4557124c430cbd1267455e0b31a8bb + +Msg = f8a87c4acadee27a908718461e3b45060ae4ebb009b10a15926460bf219cb7e75dc3a993fb9a741b94e2fd71615c50f6df958568f452b2cc284f0516816bc0d2e2d45f663155660a26326f63f4aa42a6e1cc8462a2ec620a365257ec042f55e4047b62af689592a1a072553ff174dd629a4f51837780ca232cf479a68c1ebdda +d = 0f000631106c5851e8ae0802b01e7a8a8540b427a8a3956a1d36f0600be89318032320cc420931d825cc964e823745c60aad3437ebc1c91d32004472e9677605fb708e5a71a0d83 +Qx = 34136cc7b8e2dcade5cbb9b3d0e0857c485ee791f862273749b5d3757d072bbeccdd8eb81c67fa6927c1aa54d823193c370fc596d0d903214d7967b905292f4b96549b3dbc9b47d +Qy = 56f69b42b29ea82b9f2fc377e874b58ee785010bb7f5814907fb5531789606810b71613a36035cd257864e414fe0e6ea353f398745df87ccf25b3a25cce1c78f61f5039d66241e6 +k = 009781f5d960870a289cc20f6b1af56602e5e12d9a7353e81b89a90b0a9675686f15511157d9fb70b82e8b2e25534f8ad22e14ed518e62a88f1ae21c56d4ab7763808851762d3ec +R = 0f3eba5ddbb8c127419fe5e8cc1aae2239bfbcd2ab43a006020b96c9e7db832fb09e0bc887aaf24848491d4de935b78141f426875f7dcf2937748afb303ec5eebd01b6a82a8c4df +S = 17acc35bd81cf24f983072585ee1e096459b408da909fd82b5ea86b77154ecfbffa7fe97271f50b67ca3c29ce704b28186b831300db0aa0dd6147d2d160e4aff14348ba76e6f711 + +Msg = 10b5438294a77c7e517ecfe8f8cd58d75297b14116aa93e574996ec4acb21837e6297cc0e7e7b5861e862062f192f2206a01b1caf42c6d7181d02c7d62b76c2881f8479449b02d32c6f792714d8f70f0c75e81c7d9abb996be87f5ad9a01fe42b75855558d5f00df392b62ae0d258f3f67dbeaf07208952e679a2c573aca941b +d = 1023997206341c6147c536d034a9c38b4012035dc2c9b7ef0bb9cfe65e7d788296f055d508a1fd957b2dc7f9eb10c27790f15f30d81670945e54a508c57b70b46b4a09f4c769289 +Qx = 66bd3f503cf42a20cea4a55cab75940907f38fac7fb024c55245f02d72d80336574a72fb248b1b61e3205b31489ed789ee78d88e487db3f5a1cd48efa1487916b8707e72e4be7e6 +Qy = 10b6e4330af0270abeccf0901dad2f8f64f4993ca93a7c5281dfd71c6ec405f9a9bd78008fd22fef76fb79e20a571df16c4d97244c7356e3ad16cc489d3a9b2e3fdcd5f23b48e26 +k = 09137bd8436dd126924943e8599c87f64564297117766580e6344aa3c02056c811fb996f264ac4f8f0cb33eaed5ef8f120d43a1d2b3e5e34697765ff9db4b4683ce5c1596d74723 +R = 03b684a66e92d352847f63196181160db3de7a304b6e43679340eaa9fc828322b5b9c16a1772c981ff0febb474488daf998d4acd867e78019b61804bb675a98cef24fdad088afcb +S = 02649a94d2bc243e997bdf27be7d6364459c38845c3bc8d1c8b549ad4689c8a4b4fd55193ac769b1da607dc96458e2f6abc602bb4048cf6b0933da6785795d04d10f22e439748a8 + +Msg = d83a52d43216fdb16b1b40469863ca8eff4df9fa358deccb5ffd18b3e22a9d654aedc98f3dbdc4f5b4e56b4299e25d8a5a38d01b34eb93de382df1ae4d1c7f966e84b84c393d167aecc6f1192c4b42cae83748b1ee3d9147ce7de74cebd122695b455e8082f86e3e488fb0f51b3b7edcd579940d1cb9d045296e5e38f201b7ef +d = 11ebf320ecf6a908ea5b868afb8e22246ce84e743e1076d6185ec65dd79043380708bf8da4ba802c3b93b8d15509bb7d7de9dc29f1e9fb0f0f2cb97a26698f955b1f7ef668122be +Qx = 38b2760315b0999f9629922bcdff65cfdee4938d4aab8cc3d200aa9c1db843fcbfeb9da10afbf10280110c49f0c18f15c2aac4f39af35a79557c68eb6cf6afaab973538b98b0a6c +Qy = 7da55796396e919f9b5967608af06bd01e8870354317e76bcb8597a379129e35bcb69bbf6b38911a03c3076f7fbbe9b179e078b442c604519e330282f6f6c21aba515d6d73c0257 +k = 1c219274e54a4c5e1e1aee3bf805a7002bbfe1c030cd4c8a1617dcea2a14b1d537a64cb07c5a1385edd76f3e4ea9a38e38b458d2c7bf8eb56a57fd33166bf59a8af2e9639106929 +R = 08677167a7ea1aec4de76d1c5effdb5a1655965850bd6498aaa4fb3fa50f213fa4d99caf4145b4ba87e34797babfe614dce6ac21d9c13dd0fcd9802b1414aa92dfa18318c7e57eb +S = 048d6161a3739fbb3ee1c223bc82a46255d10a86a605f6c8e1934b13f1a8662f30f8e95f53848119c61f08037ee5a2440c8faa11a6b1800078ed476b2a3f4cfdb25367c8dc2989f + +Msg = eddf5553ed4db6e8ce72cbcb59fb1eb80671c884ebd68e24bd7abe98bb1f40806de646f4d509be50a3fabfa85c5630905ce81abfad8a55f4cd80208afffb9056bc67d9dd7f4660a5f924af2a3745eec2daec39a3fe36131fe9eea444b92d31f6a125f12125159ba095f89968a7028549466f41ad45668a861f671050d2a6f343 +d = 0746d5c824d78f42a1fd63d8fcca61f154ba3e75788b7a0b87f53e5420e23a935b02eaf67bace8dd8a8e7c1caee30154c2428e0a437cf12e235f41c416f92fb54528865fd4766d1 +Qx = 63645fd3810e2458d15b43287f329c354b07324c0707f19847c544f129e4de1799996f805fab7dd356567970e10eb21d875e8ee7bbce56c666511f9b4a4cca986683e937d6f0b3e +Qy = 595485c9a7f2a97fa7f8453df13b75682931fae10f3441042199fedba91a58c105df57b83d2a3911a2d34a2d41e451d0d2549b0a0a65b42aca40aaa618c252baec171da7937d812 +k = 0674788e75eb9d5ceaadad9fae036f129178fde1a584d73cf284acae3b4cbcc208ae7a5d35aa473f4e1201c19ee5bbe685ff9218a8e2188f3428ab45bf09b6b600fcf81fadd8d69 +R = 060d6dc42329687012a93ffc5b846b4dce3df46ad12eb61437832f81f4fcdea7392582fd75e701e106e5b83521759da6a22a21addb63b73783592d3f29347f3d484e05c19db148e +S = 197f3b2d4f3e10425f4cb60dd1ae84fd8c87f62a2cc822342d5f0be4f0841623227c5cb0f8bf83fef483a061e30ecac86cea0210036083a99fa1247b49e19a7f401a815cb68ab3b + +Msg = 3db94335f6d1a125309622c0a9d71bde1da09371f0285a93bd0aac255fa8f10a56074e0f6057f1b1aecf2d86a2319590ead96a2ad1336fe844e09339b456be32374ba2e659fbe9d0f2cdd83444d117d2ce3204ce4b4294dd05405634b84747ffb4227160c4e5c2c9da9815b0c6d20f55705f16cdbaa13d107ae666d707ccbe6c +d = 00670e72ac2de50dd2cdd975a6cdab10ac45e37ef7a28c685d77447051496b5e161f8b1b93f6c7f32fce8ea05e94ed35fd7cb28c44bf51ea29cbaf5aaa31d6abca30a89430323dc +Qx = 54db4acd0815aa7ebec4f7661d80465c64f1fd4147507549352bc07dfcc6041ad309bfb1434b60f73b3d61ebde91f849004d55257e98b6ebbbeeabe960f9429a55a36ff75c1124e +Qy = 5b6f36f76b3b3c780b6a70bb8ea150e9cd6895ff6a6765a3516acbb4f5efa91434def52dd0ab81f618ff28db10fcf39264be8e7ea76e06516335ac5ae33ba5393080f114189110c +k = 0f74a0ec1a7496043d78891e308c82b4660606642ea669e4406683d44b79dd6e6a1b810292bcd6a9f59bcc2e590518bdf2e9224755654026d85cf2a3d9768d909278448f0d63fe3 +R = 047d808febc1065646e6a5608d62d1445d922084487a64e9ced5fafff2977eb3a7e29984230946e3fc77a766820747122fdbbb9100c591ad7c9dd29d07efa2e8a43357e3c47762d +S = 04dd6c8ce75bf2792ef227cd5a3102d30a9a31690ff5c21354f8dac9f826c86ebfaa04653f0ead103b1c8ea59f0a78f5d4e8eab597ec6c028ebcc57f4ce4103ac14579bd6e15166 + +Msg = 69166ba40768d0a3930325405edfd85f3272f7b8e600b0b319f070274c91f9f03d0e6ec4bfc7b4445e91b87cecabfecf5e77c7301ee3c6b0affca2fa02c92216698705eb75443eecc25438db2d2fb4b24f4195d6b9c05c53e0868d3e58477100607ffdc31b18c40b4ad7202bb034e58653daec0f6b33c024d42a3fc84bd8f86b +d = 0369a3bb96f884983c23281bcd04e24a3e5f6359f81e3c8e46f3f6b865eb6bdf98a630e90646275c587e41b546d3ca7688cc207afda15cf9b25cf83bd6ad27908647f3f9de59de7 +Qx = 0eb02f6e741b3f83a9dc50853828b8a6e0861ffc644162515a264730c662ba388ac0d705f8b36f5388894df5c1bbc3582c85de141abb7712caadd2d616da589bdffdd9258808a41 +Qy = 5dbf831f450da6f8e503c19a7788c1317ebe556a458e2bfbf3137f986c9c966a14ca90344be1b76457159c9d70f13af7fe0013cf605010a8a3b84bc0fe187c7d93e4cfb2639de57 +k = 0ce22f7f2f01355280ba2d2cda06a55771e66f598bf79c65171e08a98f1d954e4beb3ec77ab06ee60c5fd156a7098023558e3d630641579cc179739bda6d860f8ba1d5ef717ebb2 +R = 0ae86b40d10ca45c20bdb3db55a6dc12e9b75754679eccb44c40fa57351c23c062282e1da9e1703176e4b8f7f224982f2474494772a20269c43a18a7a03fd12d8ebb975b83ade0f +S = 15ff7b34c3316d9e7ee3d7b48ebf97d98453ca32f3fc67fd08761d93cf34cfa5a2314fd0752d263c3eb7cf842aeac395d41ad3c04c1a9d3808b4fb7489e880d130c35a26b702952 + +Msg = f64cb668b72f1e6dd026a478505c0eb33446ae9a2993bc7648aaed02e172fa9a0e05eeec61e756ba246c1dad7e85d3f01baf734b1905c5bbd1b08d833c2cf1e079eca75b866d705c407eea8618d23ebbaf269c7185984b3bd4117ecfb295ee6b47eecc8d3a78bb96552f6be314656f91caff793838226662c75cd7804b6bef79 +d = 026717b039df834855511815d5665ff9b654facab469390ae257b7f0eb4dfe66ea0dc037242ed0c13bf229b8f7ff26da9b55fe4750d3451c62804aad493c179ae45d08ece5af085 +Qx = 191a6d1ab9cdda2d593d5598a966efff829c04c421804c2297e658adc5c9a6092e146b25c730ff7ee65cb9812ac9ea0c18dc6b60deda948b4b7568e8b8e14411a6969d7764652ae +Qy = 3744af98387421d958b26971d21928b73bbf5b0f0ef183e9f606d0348fa715f153a60b6c7991dcefead2ebb875d0c1dbd3665dc42a241c565ea0fb0e6349b4319c3de633883a516 +k = 0dcd28cdfe9028a4a6df1d41019bc58e4a1540ca94b717d258f2afe8bec560f3028e15ec1e8bfd422415961516659fa2b006256745e85e488c359e8cbc94cd2592bbb892a19c45e +R = 07ba5911415a3d21a3d98b400f61eb63ddda689bfff0c8c3ab83668b1e4bf8a703c853d3585b8bdc29aa2fdc41d5e7534850f4656ec949f0a13fd18295b662c9829723e5a7fe3a1 +S = 1b027e38283d74c962fe0e7b58dfbf5e21ce1d9c91651bc98284008f44fddfe4cec9441994e690d72a8ff3ba2b538718aa678e7de046b653403f3b7c064ee07c9c3c6d23e1b068f + +Msg = 51ee0b98eb6a3e3c1afcb35a33697c048dbf61374629ac5702a57801fafbea4d6fa5a26c9d1b79d1c58257ac0106387fab2d4a1b7f8c0dadcbe7c830613531b3c209bc17f792bdba1c1fae1b7528aac53dc86c2094b40194577325c05d2258303a2d17c854e7449489c43991b6877a50692a6340a528a6b188440ac0cddd4c4b +d = 1d642f2d393ed4abea37173e4a79534af87adf534ead4a0a1c46fb047619221e3577e6b8bcc776114d01159c736ab78af3e53feac339d7afe58be8e7a8ed290f1dad960f1b5de94 +Qx = 23d1ea50229b70b46578df6904fd528e9930985426eb2f1ce10eecbc0c1658395948380c4047d67bc4072be2a2624d62a301da41a5265f040642d1937fbbb7cbd205e1db85b8685 +Qy = 625c82ccff6047b1ef4b08f1913f7366c4f6c0312c21e5ab01b598d1a9618cf5c22cddc64a4732b477dd5c06e332b846c8015a2e5a195326bca46c29cedcc2f24d37ebdb7c2eaee +k = 0c9066831d61a4192ad9de23efcaf578a5d5774960a2b3e3e292e0decaef62d1701b86ec6183d8e17a699d418ef9d084b982c97a55bd76c8b038ac5c639451096ca4d331f070ad8 +R = 005778acb38b1961195d38463abd9c19d9e07dcd997f19676633fa3c44caa44ad1a9bd63435f3138ad8f22a731e749a81161c5448eb462fcbcd69ec2255cc2923ac697ed319316c +S = 1a1aa90113952608dd17dbf391ed56231ecfa7d649f3274774ed2b6034a2207c05c6d8b6cec480ae27b58495a50b1e5b74a17ce6cf2e43aa273c2b813c0e6c79976882b7e4b1c93 + +Msg = feee50aeacaccb6b1c3d95c6524044edb78322ee836d8159c4a4c2cc6982480567c4c6cc4806a564876622266e1ebd45f2f4be851b79da025bd57d0e6acce1ec1c8c255eb89713a1e4897d4ee0f7a248b9d4bd3ad5dc0e57f60ebfb65691e164bc908956a019083e923cfd33dcf37c735af3462768a1e14a8051d7aee74d5228 +d = 08cb70be29e83f697a3e2f67d86f1c1ec9a163b5335cb4a06004b6634948bf60b8ad9df9b27d2bedc4975265ce44a7884e57082d521320ca4372d38fc77b18d3fa05ad8aa5c43d6 +Qx = 4c042bde9e90b38b48e60551d832a7c80377a81e8c5b010d0e491cf765c432b5edb0771aaa5f672edf3ba108dc71459d245ad60f3884b8cf33f8cf797f36b20e4be39c8389e66b4 +Qy = 75f2454c41c0323ee1a640755077d36a65be7c2a014db36719ec217e21a9c004bae5befb499bf6be67e82d3da70475abf9dfb751c84c409fe838cf1c6ae109d27f24d75c02cc5b3 +k = 186f16dfdd7a71f20a5e634ffc465356914bb52286d3d5ac00f3ebc02497112fcd592e1ecb2ebbc819e07ea092e465e66f3e58da7a2ddd41c8787f57c135ba4c168539b4743c3a5 +R = 1c2140d294fafe3d9effb33ce73bb7e5485c93c7aa9d33b7535c7053831a1dbe79075713794c87e52bc887ded969d2dfa6a1e2630cff96760310e04cd2a75be6fa020a12fc84d3b +S = 110aa165707b7de1b3a8e05e4502701abb5ade0a27deb04fd93c6eb24ed2b67ade6c49d78e874d25247e948f704d3c5b925f84c5b07c9b289c4f8507e75d0f8927c6dad6dbce885 + +Msg = b115f7370d6a93a90fd9dfdfb292956be34b61992ce1fa5627c5e928d74bcdeea66d4040c473306a0070fa8363c4303bea32f73ea3639b5c6676fa5a1d68a2cc1f91f00580d7453a23ae70af4cb1f1657aa82c5b305374effe5d67d559e46a6cee6360503d21070506f1af30bb000d2f2f85caa6465810f89968f33abae81cb3 +d = 1eef463771f9c6285f3257691dea0844687606d4dd00b6020517f190891cc1be97cfad21d147ed8881b5a6e19b22ceeae30e1132476325f2de0e9af2e14c80b8c780a9d2d6c96de +Qx = 24de3ebe03d2d91b88794a77635aae6743e597410ae10c356a51e3af88fa7f9c4d648c7d1fdb887c8313914ed554eede282b24a2e66aeafcc0cc96907bb2f3877eeb97df491bef3 +Qy = 1ce1f9fd4d7d3870997f34f54f2ba8f08ac94ea94f74a766f2dbc02e4d5149802e3135a2d762e3b8abb01461968f1e88cfc8c7fda49c099e392e80d57f0c14de9c4fa1eea25732b +k = 026b545702baa340fb6d1bc2bb96f7fb1a77a2428cc122ea380a258c747d4e0625bbf4e3dbc2ca2f15bcfea92f2417cd5d22f2bb5f38a9ba313b3bded506d3e570dcbcb86c2debd +R = 091c162d040a12f08a416296a43501d92e2ecd6be302b5e1754b9ec119fb8a572626c509855c7c868a07b263f66070ac986f95e4c83150a5a492d5ea8a7f8ebf556c17ad2bcc996 +S = 00c217fee7bb202d6399f6b1ae4e5811d9361573ed4fe1b3fe5d474cf06d0236d59dd3580145dc0bc7632c721b6463c69490a67d1be1fae99e34318af6df939f9f7f36a9bb8d5e9 + +Msg = 726782eb0d9720daa64e4a77b5d8dd67a1a193f15eb6b5162e3d89c925ba63b7c7e1c4bfc8d6f11915b0e14d16ab53ab015317bd5958b0beb6074199e05181915496575768d026c23e92e06016598de008c3718aaabcda8b68bebca0a73ecfc7327e8d3646106b7d114dabc46cfe56265c326ee56fd2ca87abb5bed8f997c735 +d = 13bd452b0880b101df1aa65724fb60d5d85b37ed5419027481661a3617e0fb37bda1151b9b5b41f908ba832011f7850b75a07b678e5b8cb35c5fc8b94a625e4398cd5ada2b04cc9 +Qx = 31d88b62d2edd5f6ed29258c143bbcb3d29413afd8f86873698a9efb8d2021186415d301599232989a0df5ea91ca222c5781314f200c708de30751feadc277d50e64842dd355ba5 +Qy = 1c76f19ceb1be48f5540265b8b018da62fc225cc0d2d1675bf7df71456cc8e35b002a220e2e80691600a2c1ae31e980d0cd22b4741c25bfbd413f10b375a4d8adf70a65c48ff006 +k = 1b9235221a6df49e39b4cde6650e994f624fcb5084daaa62aef54bc154949f4da9074636c44f50ea40da1a3f01bf67e9b62a725ac0537a4e37ba33fdea8ba8b2286bf82901a933b +R = 01dffcb5b5eb23694da4978419110ed2bc7961c571a2e68daebe21e598c8b483b34f3178978708db6d78455cc1fb4f73c5ab7607cbb4f05d4d008c7bbeac88562fdaf7a370ba394 +S = 057018fc97d7b16d69af2b7dd4a859f09dc178a6025e1bd6839ec7c75c0383c59eee7079fe61aa6bfb3e2c780d4ac0ee074e6b13223c239aa60ea1187ca4937864f89e2c65056b9 + +Msg = 1c2418243fcd89c6382b7c3b2a8c341f26d08174a9e9296c4a5c98c5793a0fa48dce51e30811a96b515aa22bf9af89a43de06d696be1e531c5dece1f69fa6ecb7f20be063c602a16454ddafb14385ae3f8246c3f989d0566e06e7ed1864502896ea19df8393259c4dab3b3380a4a80b4103cbef4f38cb69198b7cf74ce94883b +d = 1288141ec2244e4bb3f62daf4ee588aed09ce22be55e3d42e9085a947c1f8cd16533635d170bd64ae0b417346fa4670c25d41387acb2a8e14407a1931d9f7c5358a14eca40974bb +Qx = 7ccb7b12a7d6997ed2a11eead3278a3f45ea284dfda8e17f6d926ddd6881a44d02a0f7504dadbbcb0cbd6b85c113aa0d3b4efef1ca151cc38cab1aa8360a6d22e3d6fbc0ed980d3 +Qy = 31b85dc2d2096bbba6c465629ea09ae3421cacc5581770ce3479070f23b3aa938333c7c691d9cb93a4533b2ce389ae34dbebe8f333cef530abe17cd21448f701608febd42d9bdc0 +k = 1e411ab53c48cfc1ef9eda97002dc9181a78352de13fbee3bed86cb00c10e7406033fa0ea97b50764b0eb2dc6eb8ea83e47bb3150ecb9437179c124f15fac6ac19b0c8bc324f171 +R = 14420d78f2f9f1010018848b0442ff6e6203c1dc06a4d523802190f462ed3c11c7aa7678bd03ba27df01cacf4121309551877d3a2bbcfee116c59926daafce55a4e0a7d69c5c938 +S = 16de0b369c28ffa0bd6ed8802a503929cebb5c0a4bf0c0e99b14659b48aabfd08bcb64bc2e39855d7d514d7525b3c4dfd2244f37019b5f86254cdda599bb144c8fdbaad5525cfad + +[K-571,SHA-384] + +Msg = 1de4b642ec7220c64b91561caed7832044d6e811ac909f3b199cceb0d8a7db91bcdc801412044f5c34b355b95a2c6170fe497f6d5259bc20715a38cb0341c88e93029137e94d895bab464bca6568b852340a5c5d6a225475f6eefe2fc71ffa42f857d9bab768ccaf4793c80c4751a5583269ddcfccf8283c46a1b34d84463e61 +d = 01fe06b94a27d551d409b0eb9db0b163fadcf0486e2a6074bafe167f9a3b4ce8ac11f42cf72f9a1833a126b9473163d29bca2ad139dd1a5e7fedf54798bf56507326fae73a3e9a2 +Qx = 38d4dce42bf8fffc39a5b6583a1a1864de288ef8479449d599115bfa35b37954ab288ffbe81e69d58693e2c8c81639df12e4b36f62b2ab042e92a0715b518c63d0ec630051d4be1 +Qy = 59c72c0bfb0ea1ac5e2fdd4fc380d08037a3d0eeed4990ff02e6cf5a16817ea598085e28f8269da86c547e7b34e16a06724ee73776529c5b5dea4ce3321fb168827ca1cbdf8856d +k = 0a3b18c8c9f17badd123c674869ff428d533d2ecb8c74f9784220be7a90dda591003df5259c5dfb612ac7398aa04cc9e82863eb0cbe66b6e7f45dd15dad252f74a538d5f4354c96 +R = 09c368c80f697c1718c55482b2c6c5c0edd7257a3a53f7193515629aa40a9716cc889d41c120516b54f3a106a171082364886e5d3a1e9482a103f072988f61de68f034d658bd976 +S = 0e782ef47b250f40c56e3ac4de112347174bd59fd4cc991a2b538ca90cdb222d048fec62e2773492a1d327152d1d6591740706fe2f8e1d65de888d47fdf173b2645813ac0fc3078 + +Msg = 70279be7d7ac72a32606642ecd81b5d4d0f95fbc3c0b07d85c16adf2788601e44dedb8e55e0f9e0b4ca3ca35f5be7511b0e69224a05204af67aae11ce154af6d594d47f6e3142ad183969544aa95cae1edf42bc699137f60178c12b10a67698e37ab9f3edbfb3acdf1b3513d62fe3db33b16cbb4e1f9dfe732c107f9d0c953f6 +d = 09cdc7e4945c485a41728f83d5188f539e372ff4fe38fffcaacbcb4522428e4f93ef4972556f4398fe17bdd885768f0fb5590df495badc794d4d274e22f2f4a2535555922fa43f9 +Qx = 3c6f046aa3007ba7f883bc1e0bb43a9a0a1daecdea3e2b6c10b2481d11a834af241d60cad7cab27b677c9ac11f2e5b5226c0a3de13029229af00e5a092340af9b230e0ed992acf4 +Qy = 6326ffcd62e1a68b63ac680a743130b1440bbcd3966207dbc8a8f4336eb6a7986aa53cfa4fd7bf363b30706b4fae01568020b41caa70ee3d51db982de66b0ee39777da3fecf5b01 +k = 0c717523a308418eeb2aeb816346b74149d56b9620774cab582f01681bec73adb779bcc7462fff35685a4e1e114c8fba474c68fe2650344fc9cf610908966a9dd1779f76bce0cdd +R = 0061067f377bff6a9be30c9c79d8abb7f54cc8f09eaacdc190beb27b1e6d297cd32b043b31feb49958745b78e42ac074b8722e1a7653bf03611d87c44fd3891ae410b23a2140b83 +S = 00edbe756a5dc78c8a29baac9e2059154294e3adac9a5adeb7b27ac6e4d4086821cbd55467266946ed8f6f03abff35b59434afe84067c1daa1e0bb62ee7c56b85e7f831eea99047 + +Msg = 4d7e0ad520445b6a5cb46b7c77fbd367614044ae6004494c2b3a89089287e2836c73b799cd8c90139eac427ebe335804c3788f3728ffb8edd7f49a4bcc76a9e24ce3c2299cea88c04645b82033115380f81b0c1d823e470631008d350cf0c0dba1915519985b8a389ccd8c809dbd5bb5051a79e631916e0d052d9b6cca18e0ef +d = 02bc753d007c4491cfb8ce0a6c96455acd16d37e02c982db216b8cc1afd6d10c6be4e15a3988b8b8b86b2b5b59a5c1939889024849317f27ee08a06bd8e7524d4ad83a1de208564 +Qx = 0ea922b09e902ce3847f14d3b3afc5562dddf15811cb2e7b9e06e1b919d795f8451a3dffcb92b418d30bbbd1a7ccf827ea0f1f6554387fa2fc51755799040133d7a655c7800b713 +Qy = 1f12439a0c0df9f6ef08e89eb1a62e2cedafc0460030810b2483ad9427c48dc061e4640ebbd9b4a398841c863a6e3d510e5c66934d66b317b1640bd05018a35677c6ac2c7839706 +k = 0385f9caee4731627276875dd8d725fe79626c18841562e8a13fa7531c7be9adca565c22459d519d643ea22478d7c51b4c286920b050bfa54ab7d42966e389c485b52cdb4fa1a0e +R = 02ac84262fd121bbec43e81021c0f0610fd2fc0b26d66581ddaa78714ce58be46965283851241d792ad6bc79af39f09d2d4bda83996ab41f1fd206b8293cdb6c4eb9d96f39efa25 +S = 1d9c9bc330adeee8f58ebfe8c1ba401d4433efa04a44185b0e8e20b634691bfe058770d074289e636af3e96c118edf31d72b5766c30f6fe84ade42f284fc7f2707bf27b3a309638 + +Msg = d49903f38b5c9b17542310425e59377f61f5b4f4740cd97371ee2116083f7758e69e7e2c1b0950ec6b76f96e3c91c721d6f2843afde8c7505a559c8a64bca2e665aa1131b75bdf86fb5b90581c7d3b61c2cff88f3fccf356ddf5ed282e27727be061b6925c51ea7f1a495f471dc8a5ca1a88bbe29e92338d3c9361460398965a +d = 02082c6e61d0d72f040905d8c1c20d47b029f41ec68d6cbf43ce97c3b2a0a770557a33cb803c432cfbd3958fda30ec1bba77a6613c318597a85ad02b26c44bb77ca96d9cc1194ea +Qx = 59ff339d505b307e05adb45aa314d47f2450e1b1aad840b5550a67c11940d0e78654755a8e28fb651e12e48c66cc1ce0338114bc1ffb00965b342ef3a3caf495f1d73a69c3f3d17 +Qy = 724e9474e6de57b9f8cbf6f6bb4f73f5769e6cb0e006a34c2510b379995c9e054cc4981c709ca85a3aebdf29090ca07dce5bd3c313c6153b551012d72a8f84600350e8754bc4abd +k = 18d65ca6c2ef1fb32dddfb9ad4603e03c7cb1791a9ec7b41266cb68b6048aa111f5971f3cbef3f0dbb9ce409b59c31cc59bd6f100ee5247f8c36f26ca77cb252331fc3be7346b5b +R = 12853f9d695b8ac4431c1ccc8498f3fc4916eb6a5e66b3795a3693f3f5a29ad13e58dcdaca5774f1f295e2d2d3c63c69abbcd9f388a3383371028fdcc8bd77f7554d6aa3f0431e8 +S = 0d1c324afdf01ea19e9453d2b7397584d773716d6a08b6e38f9a9fb104122ecfcc9de7bf1e5a6cfd52a08b7cecb002ebc21798d474f035fe7d4554bf632f237bce14aad88b47d4d + +Msg = 0e3f4afc3e7b25c1bf2d98098a5a87db1224d9bb45adc6e434732b8722a708ab80a1f3f6ef3c5aa70d2e1dad3e4416b12cc59171f05736c4b58bd084602c344f2f0bf3cfdcfe04c64e87597a99de23ded64b33607f7c273ec321f6462518715b11e91361e89ce5415bfc2ef520bfec378244a3bd2a4b9b6b3d68815f2f75baf6 +d = 0e298c93351323e2c5304015a4878997ae4e79d1c32f1dc64262e534d4f2c4b3e222356ffce746763373fdfb936fd330d3214a18c07f1205b20c9a941331cd676040ba1fe3dbce7 +Qx = 6ee4952a83477d89ea05ae63d5169cb0f7c7ff22f15728c6d69dfb30d1f28158e2667f9342cfd9b32f2fd537dad47c190d82f72c03043f2a9c5d97cd09d07ed4c35b96104042554 +Qy = 26d5935dcebc0ed5a07b7ffa50de3c8aac309dddb61b8c560230379696d81d72bda3c819c46387e7f026b384bb0f7b2ca90c402bb67b5e37d343cc21a8d1a0f822dbb2766030d73 +k = 12d23969d230e0e2712f96b11e196202dd3e6ac755c824f92b9c765e3fc808d4e7236c8a3c06ca2c8272c7ac953fdb936db30d892246cbdcb7f98c43177e1c30afcc162af511364 +R = 022f6dff5bc1eac1ef568588e2e512103cf56ebcb610e124a125fb004064a28291c19e83ea08171bd1b14ac729392c7c46354e795d63e3bb087fd100642465efd817b79924408a1 +S = 1785e1fd773446e3b90b8704cc2723b8da2f99d1d699e817c3c4622015d178b0cebc19b3a6dd972f75eb3828a386973c0a5e67ca192d69f1a84c825d1253f1062a990c3f1a947c7 + +Msg = 8fe32671f6927272fd3cd8dd4e34d44d27fac8c88b41bf9a48039e914990bf06d1633b38b9200ce1c2a275b9c55498e5da2d0707322c3ea0a0fd7aff598fb801628264e13047c8008153e8595a0dc95d54e70b882ac2ac9314d2b78e7b93922da818d7075215e354708994af66958954c92c074d132dbb2488e5a531c755a8e2 +d = 104f4ad56594c5cec2a988c5596d73adaa5a81802b40110dbae698ddb1f0b271fd1479c38abcdb9b234e69cd0da8a0328d2135c287d5b130a09fa0b899058e7800eb2dfcee95c1a +Qx = 4e8151aaf2aa6a6159622baad134be41c404982bb0101e820eac8f0a52166546c53927d9b419604e9b025757eaffac526d4fbebde5fba0841c6812dff2e9bab5054d4074a125ffa +Qy = 4413639ad72d6eba870e1760c71966544f3f881f88880fdef1edeff47cf6c235e8dfef1eb1d8df51f9c48b985912f1f70b61fd3d4b859e052887560872fe6e95db0f435778d5c4c +k = 0cccd1bf3424d8bb0513fda3db93e81bd34175d84aefafd26b37eda9e767618247bdc94ed2b1882bcae4c83eafc30a7a4a80806fda10a5e70b8827287eed8eac2721939a63c2175 +R = 05b1460e856548287683dfbb93efc869e80333a9ddcf292e2fa3b3c8d430563a01340685c6db1059aaa8b298c8db9e8281f36e3a9664faa17f413cb439ef24cbdc1a4d58872ff6b +S = 0c6faac191c95738f7c6ad0eceb035e5d22ae85e4bd0e27f2e65ab293717c0491be3d1b5ace80f4cb4bac7e33258706010c2aa48d84c9e39c95e30805fa7669c42bad84386f7754 + +Msg = a8fa01136a0a78313a5d160c32fe5d1805eeb3730c18ca0c47818e82c48eb4c9e5b2dfe3ee5facef9ec59b68f4e6f3213f77fba9f8ba06dcde546ae348d343233883894f4423331b536f62373a495852977a51cb192cfbec04b5582b4ece69f345979e234de32da7a120138a057a7119735c4cb19099bf48bb202e7ffac04def +d = 0c4989bf33b3136bcb4ba67906eaff2bcbc6567635aa4b057acb7353ee87ba3cb4cb9838f8f679729d5c6ed98e6c4199cf58605f009c6873a1b8321f83cd3c0973b7a3cfd9dbaa5 +Qx = 3871c7781f2b4f653f0d49a224576bd1e5363d5171bd21da89f590f49fc212d8a57ac8a140d923c2949ca287bea803afd763f15f909c099a07297e8ba1b37c70e1e8f0fd1fe9d1c +Qy = 5806bd5b4858ba0814da2167d232d55bb5c41ea0a36fb28a0a151c1b79b22cb16613ccd9dbf92174e42578ef88f4da6eb44918acf427fb7e4022da3376243e75410ba6ae012ddfe +k = 0a9eb767077886c48bc54503a0d2d62f0192d3581bd9ec253107092c22f68a15293d7c3e7aff56282f0cd35e86a2b3c55c9eec079201d99b5f49946780ce6aa18b225c2dfd72cf8 +R = 03eec6ffb390ecb2af4f5ca17fa8a7fd6938667b319f0f61e5c7523efb77afccddddb5114ca8c461b1c28dfe7eb85ab156e24e891cc6f9511d703e8b3c8443d04fd8de80f5d65f9 +S = 10cf3156cf71dafea6a0d6abbd503d72b13e6a684076ac900f390059cf3fc325966b3548b58e14a82bf291d9689783b899db7d4baba524b0b63d31f9900a84fbabc2ccad95742f3 + +Msg = ba2d83b21c783d6ef2f3b7b10e910a418a9b9f49ae0fd37990335b3a3d15627846c9a12a1f31a3d0e062ad1bec5650606ed4dd06c30e50c1e8761a29f4ea1a20f74635d5dac22e5b787ac10f4ee82b338a641484f91771c128c84d31cdab0a6b9616078c898665655ee9dd4ae73d33b94bf091b064928b959623aa71ff73b4db +d = 1a96f2ad56e31397e236cafc108087479c9823589a5fbc3dc7488d0e5d1199cf245d7f21f524cc0e8b47feca14c93fb760e631434a91188b32965053942f3bd39b3714f9d6f1a11 +Qx = 0195bfb66e20ae295cd22d59b27b3880a890fc44ef5c720b568bf7f72266293841dcf0572063a96c62736d9d4a9cce31b10c03016305a409858a79070477d3e989481ec555c8146 +Qy = 491122a199176e2492e07fae4ddbf02d2a40a21bbd99b8f742b546db2018cac27fb4b1c03cff55f61b7caf13b0f3b097ffc8e1549eacab89225e0cf1e96b268eab7f9a1a69258f1 +k = 097e28225aee5bc9a970a150502dd14bee900d3b040b0da9cb52f5824e66af46a991bbf6423fe1e089cba47593af555b07b45e47b0f4141b0412ddf6e91153213c5b8645ae7bab2 +R = 1439928b55917e93d59341532cd1f9d09de1f6e0d9a04514bd4b692603f2cfb75a579301b39b8cd92fbfc8832839691c23e0ad3efd3b4c7c3e9a366c1554c6dd13c50dd087b3055 +S = 1fb432e72be6fc524a7106b21d03fa71852c18c67edcb8b265db3b144214e7e6d10caad91f81616e03ae7913fea1e8d11e90d54b17705e8d04c8c20f0f4f46f117cc423ca178ff5 + +Msg = ea2d5f4e9797bfc2f33f0fccaf530db2bdf8abcec00f09a0338eefdba318221ec0e050cad1a85c3f76b784c6e8c18da2b062f333eeff18b7b781e67d6d0a4368b8231a892e0f4103012348e5df53ac745e4d34e2cd1ee9369f97d4801ff485fc144b2007008036bbc07cb1c302a00054b54f3713919191e1d5052978c9c2895e +d = 0c08ed8e0e0f8b0d0714b46a2164b933f8147692f18da97e5a108c44d5a5cf221cb50536e41832b83bff4026c6df156386235cf5e3e9a67b7cf9b2fa7707c5e0ff33a91601b8e34 +Qx = 2d516bdd1914c83aec1cb242710ed79efa61cbb31dcf8d238d8f5e089158b2ee2bab407e01996a1621b1a869a98227c12296cc2a71c1ef2d0f26bd6614f2ac77008048abeedafcf +Qy = 151474bef5965c455eb95ca2ffe1d589107dc251d22635f4a9fc7270358b64e4d2b81666b60c4a5c49902b0fa9963197b22f90a09cab97007842816f64fc49e351710db84980032 +k = 01125bde6086753b3bcf29b7d5a4fb0a8abffa6503b4f0b39960eba226062bdade57e4d73e8c1621792626203e83fd5c231a53b0ce10890881460802788d481f233466060f73359 +R = 199a1e40229786b966592ae6e275874ace23d5605d0c3371a4f9eca7ce4858927958bc1c2780e9f2f79767c1c72117c79c408f972006841cb621837ac002cc6510e0432d99a1f64 +S = 17f4e5e23e494ef149e4abce2d8a1ab10e3e6c2cc93998fc63baed6565ed350b220b282855e2824f398ae76b8679201b43450f62237f6fec643ea659e6c86abc24a63d82d9bf219 + +Msg = b2293b0a09f41decd9d8e637b1b08c2efe612f33c9c0beebb6e05033c6103b958f8aacd125d7c810b4c287349f5f922d2c6ed554be597fb8b3ba0e5a8c385ed8ae70d5ae19685298f20e8d844fb5ad98db12ba7e5f45baed9045c3e86b3cac9bd55b614b82fd075954fc59bfc6124cbd68edae988596575f379d8921b594c75d +d = 144090a0ee38cfa21fabcc24d35139a99656911ad4f6dbffb77dbe74e7993edfa9fd63d2c4f6bbdbc8ec21ba13c9f4a3576b5d6e3abeab5af5ac81b1f2bb6d4c42dde645d854d9c +Qx = 208729b3c7abadfc221cfad8be642588d5d1c20989fea731cfccef25886905e4b1e61cf9548d89c24f5706f5243dc8aa7d5b2675c2c6d2755ce6a12e5b12c28a2cd9c597b7dacb3 +Qy = 3db73ee445ffc0f6c77467f3add3b1e97061117e221687f5589a030f5248bb959bc2ed98c9fb66da8679dea3949b77652dcf83ab9c50a00f6a9c22bd8d16e093b2deca4b0c7596a +k = 0adcadb26626eb9f8db9ae98c6808840b65d6f886a3f0c45f0b993a8bc62bb5c08dcd87940dfef4f220f5e50234fba3a55e7127fcbb967ff78ce4fd6938a9bb653747116541cb85 +R = 18f7fb6ee028c3dd754d6e7b687560fa269b5a5fabb1d98529e0a27dc66bdb1ed79b7b5c64fb71e767d9497b9255f26b8150b9903caedb25f51594f5b7ec2870515f701bd68faf5 +S = 09ca9519388402d5d96dd9ef2d4ebfd0ebcfa58bf8c1970d04851b2409671c9d5e4aa833555df374469a4d277aab93b8df8d553399908c930f81c2d9769f1b30a13f61c02b16852 + +Msg = acce54270252e7d9e983c08c993cd6b7e3caf482a9149036afe4665bd3d0662a6818047187872862d5718b8ac063477f693caf1a9baa8bdf2f36d411a796f2b46ab56f66bc94924229f8264016d6769c85d9bbb7d6bb042fefdb8fde1be026b86af2017aacfe38c97309b4689b23fff94f1de880064f1d3ad9d74dc804c41f41 +d = 1df26b672b2e3617b6b6c631d3c6be0cb49c0a690de49643e0f416215bcdaefc03fa9c708471f1d87476d58c8f147517ec8a14aa945ef001fa01984d5c3d81f7083ea500558fef4 +Qx = 767ca8fe8f3a7addf01b230b99499b33c83db95db05e1956fb1891fed60406865291d79b0daca0c307a3ec8b1bf2ac2cbab728c6ec65c013e01775ee21a29305e9403f72883a138 +Qy = 0acfb786b09e5185dbd8abf831d12967107dc57a040d7c800d904b530eed1e19a8e52e653fe8bb824cc424d7254532d0fee62e8ee7ce8e871cbf6e4ca3bc040444585b9a4e397cc +k = 13e5e47048122c8301258c638bc0f00f8f9646cba927335535f68f4f4f51f23ac5398ecc21eb0bfe8fa6a2084e11fe67587bfa791cfbe2527797a4d98046f9df37662cb7e86a5a7 +R = 164b3500ad14063101b6c5ebabba53dc5acb4d6771d3b05a505e6a67727ca8ff73d996e1329c0f6d8f738237ee0f0be415003e2db515ef93931e09bdd853b9497826929eac9e9a8 +S = 06b65511990c061a6d2a97fe2a5053c775ce2bc5471865abb7261d0436a04b79baf41a0a852a57600cd4c6a114b3a8466f721a684aac2592640bc149980545daa271fa9b146f2fd + +Msg = e25274ded4840df0d71d3369007118f002b83e2d375c78f7e29ade067db15cce21842611f3f015db2efec57da77cb9d16eb1e00a8c1444d48dfda569e29fca1ebf40a22fc646a9fd44460f0e473bde487634bfbdac2c312f66a1c2982c6fe76c54ac72b6c8cc9345e47cb319a974b3cc4bb40634df74b4ad7e18adfa9a71ddd5 +d = 189918b832e9fa30161fdd927bfc267f6405335df3d66d225e17173af52a671138883bcb94c4403ca3e001fcf09ef4c6488934d6775af2b1da30a8f331579af2d0fbb530298d8f9 +Qx = 53e6b43c0551f32b7b34467d188985600c5c0ed12448f2e763609f40039f92002bc8e70d8dd3e337c3507fc996a1557d5f2fb3132507e49ce653482cdc86f6ca5903b77fa1619d9 +Qy = 4a9ac78a2c23be0841b96cdb1d55862e4854b530f1fa3f469ba9f7185e3f91c28d03c27d9666345bdbc7a44764595b303f49cc43bc2d0e944862913d280273cfd00e15b6b55f85b +k = 0b47a185140b583c330c64a10d50748e019134bacf153cb4a23753f140a4d607d5771a8f0f535f9c35baae5ab6c37a55f38acd12f15be18d5bd9662383b30e4d0ce487e8cb553e9 +R = 1a2ae62cc9560590177aa544945377ff6ab1b34e7e32a25140f99996c130e170015636647756a5e8522c936eb1389c206ac74c012941269165f3772373047521f69510c7f3e6acf +S = 1d86f4a6ab2bba7f6305c2df754652bad40d7c273ba2aadfbbe65c07ede4ac0e65fc0a37a0139a6ecab296f58c6c2532701bb008bd9e1ecac2771d9384aca094537fcab47f3ef06 + +Msg = d8a4aed87c316012482819b03a1d91691f2ad11a2f46082497ea8f64880d686891f7da550b2ac17199c657d4eb9d04d5cb8eaa180f743b87d23b1c86103f9e9bb60f4e19f0ff9d160f180aed7735130c03adb62502e69be5c624ed7bda2301f30580ae0921b02e103a638f5623c02c186e3bfe6ff134c762a2bcac1f879a9353 +d = 0bdcc175eca3a399b944eb0334ff33c4fd130999c8ac0e7b52ac5b774fbad53ccc3a31024f5262b2eecfeb2104b14bb244307effe3dbe8ed25686dbf46a42c4b6f8e34010ad826a +Qx = 7ab1a9279a8408828c2bd21ae6c643ad82633d636d36fd91498cfee49c8a635313f56993d02cc46da3f5b78fd243516cd23c14a4c8d79cf27dfcb05f52f0cee59cad5646a9389b8 +Qy = 799beb1ada93a48819ab70b74c36d2dcc3c5cca1f7a57ec58e643924c3ceb7a90c9cd9bf7ec762a2c428d16ef431a45cd5d069cd828601f903cb0a28182af2392b5ad12ac3a24c6 +k = 04ad8d2759df82dd70ebe9f3402d3d533a1b4635dfd0024deeee52b32373550f550b9fd4126aaa6c3a9b1f352c40c86e13f78e259abb17f85f0041e0cca9e2ae59f4ee3ba2fbc83 +R = 1cf9ce41dd5dbc3bee9f46f82e4bef10cefe79a87e8e00d002097045b9acd46364560e0fd27b0be6655e73b5cff272c8764b4c80ce0e1c91a94b8d05209a28b553f589ee2fa1b11 +S = 149fe587b144c37df2c48c2b7749c509421cfebab734003e51383cfb773c3ef5a24fbac0255cb807f5b95607121c5848d3f9656227b61d5a14042351de084d9b88745be242b6158 + +Msg = acbaa5ffc4eee0850075c0e502a70cc7a897a919f5e7bca4e798385601a26f411fdae5466ba9f6b6d8d7f819a749b799fbf4a3bda9105063e74914e8583ed8b31ea4d22164bee6f14bf53afca269b901c80cb3265be32ffd4ca4bc4ddb83e11eff82ead6d75dc4aec8e5c67f35d58a8a156cd1c0351abdccc0c5396c8fbe6920 +d = 007ab5a55a1d8ecb7f5dca2afdf9ef465569a4b0374716f604ad42a6e0271e934b09655e8e2529784b69b2894bb399b02aeeae30e9e7ae70a2a8e56b9e775bd978a04c728e3951e +Qx = 2df88e368c8162c1dcea5ceee3a4c52cfc8d6121eb81c31236ba26dfd1874c61586d2daacd96cb5ebc7053be57641bf53bf2651cfacf370cf470db86e1470bf285c7166c197e094 +Qy = 30067763f9fa6a9082ea16dcbf53c2b6f11c9ba1817198e5a4e189dd98141ab682ba4de0b3f873ae54efc080a2a03f755efeba3c0ade8ea67228b1a5a11d730302f1eb7c6bc3737 +k = 0d3dd75ec61e0f87737812fe1ac86ba336b1512bb9f7ceac2c7d1a5b4d5dbafca57a5209028cef9468ebdacb2a35988531baa094a1c901d9650f2c5d8e03a1621fb33ea85e2b506 +R = 184a98dec91b9afe52d4dd6b2d9f2d7e3c42e8e614332080aafd2621136ac7965beb4e8f97b222c1b2e5448b79534db4e710331a2f877f8fc2a9259129f0b24d24289495da22542 +S = 0fa384a04c4b0b0745abea373aabc09404a6037f302e234e7a2840ff39c2b86ae37c814e8bf3f3f7cf743748f2b88d02d66a3adef2028de94013c07075fb73f00555aa900337149 + +Msg = 9a57b63a4f418404e8f5dcf3052b9bc04a4f6d2c33bde8651506d9cbc5542ffb9023292dea463111fb78913ccdcd182faabbff9164219b8900c7f9fb394f7d9678f77b18f8d58526ec64d7c1328953b983a7c416583e05a069cd76aefe26e5f5687b70abfbf9f58f052dc0863b4fc3bef805cc3bb05bf76a83235af9d6adfe66 +d = 1e7d4da72b1d82e17a066fe387f2a0a7fa4c60ab993ee09710531789186077f2f32b42ddda497d5fb57356383e1f96973df043307f0b6519430c3f0d40d62954032872fceb7dce9 +Qx = 37c59e95132f0027f661511d1bedc3018bffa62aad7f44d7370f5b169d683882fca3dd0c4260fa8f72a47a44fb0fdcf0d7776ff0632378022bdd223753c66f98dc04904344ac741 +Qy = 2d7f19468b8e4f32eeeaabd6e402a35f38dbb9f2476cf07881d8bcff170b0a6e1ff8cb1bfdcaff734a32ae9bf34a909ae7fee689e3f1ae777812a45dd46ce13fe648016353c6bb7 +k = 18ad70fb9c5673e5a39b3a1655ff76eb84519555a6cd88e86a26f9448a54f04516c2449bab3f75e74a8d15c69926ac43fe01ebbe7e1c97e73870e3cc4c0ca431cf614f35659e3eb +R = 12abdbfb2eb08e326289fdf5615057d912749db4f17848c1ac73bf6a51fbe3e1b2732d4eb656715a6c459c6c3065b67b577f21b8eaca7d657c3b3171e8a4849f55024c69487e50d +S = 09609da5049092e0aa8ebcf10c204de54c968b09b9bfb3eff90b80bc675d557967b35f52e459f37fd198a83a858e5d7f9f5aff8b2ef7272b236dba5857e88515ed471a60bf6da49 + +[K-571,SHA-512] + +Msg = 97b79c76d9c637f51294369e0bb52c4189f2fd3bd0607f91834aa71b3555605a89ff68e84fb5bda603f502f620e14e8b0c7affefafa2f0b303009ee99653ae4550a05315e551dd12a4d8328279b8150d030b03c5650ed4f8d3ba7c3a5361f472f436b200b321e7863c771e20ddd7bdf739c51de3676f953a5501e4477aed1bd8 +d = 15b7271d4319db5743119c8103a7d4c6d57e9c62f3eb93762156d2ebd159980aa57cea948e416717d715a2e458851f1b2e9ad4172bbcc53861db29c3ee0ba8e82617a5866170847 +Qx = 03a5b9559b2058299161770166766aa65e151ac6a22a90205afd27de5eb99c5b1db369ad52f09141d3bf08884b96414c283b2669ec2a2a60c960a2f03d425dc4c229c0bb369d90f +Qy = 024f3a9cf3dd257043dceefe6617a98e222e1cc820f3e19e63c64fdcf7ce8d9c7af7323c9aaaef4df02e498597581082fa3767c8a38f508f4ca2c1eed6f298dc8142668a0027490 +k = 0c585e425ae4a34f9b7b9205f095ea07599716f1eab1a8bbd934219ad760c4606ebbeb06cbfd3952e045a040b8ce20603aea4f965d1b6e87eac7a61672823fb2de7767e3466c730 +R = 129162cce6fb05e1fc8630ec6c3a16d108bcd251719d89631497177e6fe6d1373f114ad9dde6e04a4ee0b4747f91c78703012e5a058c132d54f2ccccfc0f9326b27d60322b497e4 +S = 140163edb5f3c4b49228e4614bfc6da9f73674eab82678ad9947b2a635f733dbce99ce3209f613e2a75e62ed84db4d7d13de6d789b7cfedc0cb6a028d8316db8831db66c91791c5 + +Msg = 564ad0e37c9c37a60872a4780a723d08d1159ddc77bd834d74c1025cdf3cbd5338c3fc07a904fcad9b979b2a2ceb1a0139af35e5112305fd662a57af6312624b9bdd3a64849f95f59a46ca8feb2ed56f87f258518947474c1729275c4d89b7dd286ed65f286cbac76002cc63b92a73ab6bd13c4adef282f32297e441bdd8fd36 +d = 07219ea7917d174a5386df985d0dca798ac9f8e215ab2f0003aee929a2dbd91e37fedead0ed95b1e8aabcf516bdf54337b4aff7ace4c6b3179f2e919a49db50a41c9d4d58d4f636 +Qx = 2fd7f6ea770e0a6f1eeb3318b6b609c0e76ffeaa34e75f56910e8f658b70940cd7a5918328473b279f882816955b2e3702c22e0b3e03863f8d99c64f3a2c9d1c68f59a28eaf25ad +Qy = 6c2cca84218aa019326cadae9639069dd27df4d1e95a4c8e7d7cb426e70e2d38650b382e325dc3835afa719145d16a29e4ff67de37ac8949641f0d140072f59718450a669973206 +k = 03413376b32f18385cced4549e231e514eadfe05fffa0b252732f5c88d13d9c6e0c35be3dbf72029be5e4573b8f8829f6efbf58a12b5c161bb7055d1944eecc93f82c12c5c56d9e +R = 1c45c25f3e8eef9b92142f12e4119842122ed7672fdd82c14b3c34ade3243a4c50495c06b5984d0260376c4fa44c60b2e34b0084066d693943071bb663a44884927352668efcc62 +S = 08cdac0f4498173bf4e59de98ac9a26fc2c752cfea7a5b75141d4e1d019e25d70a717ac3ebb82884436ebe1007b0488c4ff29fa31fdf02f77fd99535c99b69c9d4e5f432516da77 + +Msg = 072ed5b14754fddaf54e20da42432df49bef38f4a3b1841b2db457ff86c44880727aca945770adb41269df41fc17f6a687bcaffaa45a3e59070526ed53b8dc3b78cf9a80a85461eaf4b477e44d5ec4c2bab9c05aa747a5a520b35fd09e8b44539d060ba1c3470267e0dda111b15dbb587614a46e1e477127f963a16cf3a43ee5 +d = 0bc623152253da24bf8d752bd78aedf7d5f6a2f889453ccdec14e10753335ea8bea83fd181a1f3680ed50f2324fbeaadae160cc85831750e021f3e44121ea1b1efc29a7d0069479 +Qx = 003f3a6cc6964ab2f6da95c0a2a7b75afe4f77faff16fa28aa67809afd9495cde1f5dce079ec4e15ec8c1a2095a12e8adc409fe8729d865f50ff31ee75d7d807afd2c15cb142be9 +Qy = 76b15c1ce931ba06dd56dd8e4f544425fba4f37f951a188c8e7eb13a2850c93b8ce60f10b3783647a2d053e2764a957656a184a385e95c2013685d4954a2b2aa20e4a15dbc43b78 +k = 1e091f4febd694879f78e83842572280daa48db65c463e66d9a7ea57b82fda531f116800530a03cef2cf7e5be5eeb6e420213ff757c27b8e8a94513e417f4acc62adc02a76a4fdd +R = 0264c499f7daa6ccaaf191d3502e86458ef088c9bf2ad989851c221364b24a1a3f4404fbd0eb44a41938ac6ab67002faba0bdde7f44ffe6bc10def8317c4e2807c3ca711cb6cd33 +S = 1b91c18fc55635c5e3cff70503e7a49572ba52b11bac193230c88d6eb65eff6b2d9a01f53ab0eb34f5e208538136811157f872a8255b4d249b6ffe021b0c0763cde4d7a7e72b0b3 + +Msg = e660dbdf3e61af39b83b95d3f1970f66d616f03273f7dddb98f768452b21cd39604a31cf80590d4a5e4b0d4917519e10fd325dd4ab7a52d70d154506329baefe0d5816f514ae109483122b4fa8fa1ebd7fdf1fc4e21e8d278a50c05d81c8f489596633d949c6c8fea96fe91430c01522a5afbd5042be8aa47da04581b2bd21cc +d = 0645947d981d258f2954558c31022a3b6ba5fa7b675312f794cb61bfff1d9ce87267e4a1dacb7c8fc58624d31c85ebe22f80d26a620fed5df5bf38515e0903f0b69a606048197d8 +Qx = 2d03e05c4b555943fd69a299249e7148e99633b286da69bbcda64e7b06ce9321d62bead7b8d095a68d9a3ab9e9cf1aeb1d8c4904a073c21806830451a79fe7a907b32df15ea4567 +Qy = 23cba4f6f1815cbe1934734a901206596c6f482011f6cb6d452329f9412d2ef4566429e7d35f2d247eaa7849ee141bb16914b64920fffe6b7923cfb19759fed6e1f80d6c40a0ae5 +k = 18955bb752f0af7d7aaccd0628dcf1f52d836fb91dc78b0fecf21ff5992d9c1f891f0eb3c139803b88736ce10ba4733a523854c4ae9ac35421beff9b20e0c8daf90bece46737579 +R = 110a428aa96277c9a13d4529f58ecc57cd7209a7340b4a78694dd9ec800f36c9c306221fa110e0b3fd65b9dcb67307b7d7678997a3143c04ba96d72be83a1cd6b01ef22acd0f82c +S = 0b7ae2da5cd36006a92a5b2e6369afc2728a93edc845ccb1500e551be361f8658819f7d3eb82ad41d7f2beea1a1cab6f103238a6025acbf03a2b08339841694022c17db8c6c6886 + +Msg = 8c9acbdc431565feae60e08bc7da113e12372ed373f1e1fdd581f98c8a7b0c79ac4aa42c7ffbc963fb4970fe26c5b5dd314b7051fe971c1186ebcb5650f7f7011a924de893f06961b8c75da7bff331847feead4abd2e8b9d6ecbedac18f4eac207b948e6e4215e4d5cb483e5c66ce7ad788cb89604d3a3e051539094079e7bdb +d = 14cf93ca69d94ee8fbea0c8da9d76aea092b73073d8f5385b65c6dd4d567fe86bc2cfb8e8be890c3c6cd9abf7dc3a17eaecee3d7a9455887863e496c48dc3e47821bd3d825b6bed +Qx = 3dfd1fac02ac4bd3e3017a3d94f29575238937824f80ba0b2eec185ce8c641e9fc72194323c779dde8c4fd6e748e09d66e82c82add75106a0e1739f2b977d40ecd3cb15a1eca420 +Qy = 6a73dd31226adba7ed8d08476b5af10a806fe8de72251400a83f6c9f6edf5e0cd6bd1fa8f3595c3ab32b4c4548729c455e4eaf83230e1335cf181cfea6b6bfa6cd4ad75ac3278cf +k = 176972d9402d5d6c9753532e5ea907f256a872c100f87bd390c4d610bc00c408a97bd55dff2de1ef2fa8b9716e33a5a39bb6ed2ab541848685040656ad0468b360f42c3742c1fd0 +R = 00be28427524a3b0979cd82fea407463647a77ac45c489744a9998b545a13516abb9213ab0d89a2f5f872d927ad48dfa502de95524f94f34b174933f3faa7b554a1c2c3a688a0ed +S = 1d49594454516c1876f23f2ba0b1fa4dd8bee028bed5524b7635a2df5b8459f4832b3db5f6074cf07c169cbfd9099a85ec2f5c42043c5b851c81a71c87affba34b11eda67e0ab69 + +Msg = 53ef87d6ac7b9698f40b3ea9f3442e7b64207b140b7f66f73fb7d5f8f98452d30a4e493b6c0e3268371e88e612b818d4d847f032ed4983817d020411a52d81fd2a17b58ebdec199d817c2a8ba77042bbd747a6fd4bcc7e844ea829fd8461b389aa0b5957d92962b6d4e86385a8fbca90b8fac40944607117e9a4ef6dccb8fc1e +d = 033feeaaaa28f16bfaf5ea9c7319cf4561ba4fc55327a8477b6cd58ef6ccad3962ee1f3edb243f3a04e7e49c8e23509fa2d63252adb186b8bc7e9255cd61fa9bc45242d42da3a68 +Qx = 6fc62c39bdd41ef7083ae10dad59e38dad217c55864a55a6a80bffe2f5e7da977d79db9ed8c9ac22d6f096129a0c680ac93fd77da4ad96e292a19b48454f91c93a3132559fecf07 +Qy = 66f1f737ad3af3df674637aa5efbb844bbc441966bae73973481628e5c2c67cb74553a7c8f2c5fc478edd8265bd6c99d6ce122a245e46fbfc21992b950f04cbda5eb220261316c5 +k = 0a5b86b76f98310a25111cc3d1b0b70fd0c20208cd0bfd8007cb569a187c3a97edd8e716aac938900c3ad8ed3a0d091a18555ab532b50f25184454d84af2beafadf754862b8ec74 +R = 0de2eade32f537727eeb82dce610b48106b277d15d8fbdb77cd312ab9983ab21bed05f05186a5cb2b530ba72c8c68b768c26d942f9224c6e6b9e7827c48e129833cb679c70aeb29 +S = 15e4fb92190bbf8dcf7548057d1bd5e5ec54a6edf54f6b88f50e96ac87ed7a7b7c0fe1e1174ba3e822fb7e7c083948296cdcdcfbdc4bde036a07f84d210001ded91c554ace71efe + +Msg = dca1b7a9a313ead11c2d54739d9017ae27f9d08b3544e418aee862bb57e427636cb6aedda28e10f12aa15d2355f4f8ef112a86fec5dc46e6acef693cb8fc37c3e4885f3be3d3ab31ea4d73a0de904e95c7135a149f77b621d642f9bd8ba192d39cfc58b6f19a797c4f3b4f3a87054298e3ce5eda0ff7f44f8134c9a108285dfa +d = 05613dfb53149bf5fdc4e08ccc1c752b0b66ab43aef2d008ed40f3df40fcbb2938d2c41e3ea2dd4428aeba9059a97efe5593119673866a19d27a2ee37dd357e22b6bc849e7e22cc +Qx = 7ef12ccf6b64c7ca64b5da45937281ec770ede572b9a8eb685f3614bc358ce550195e74666af9bb54379c1fe1304b76430d1e51a9976bba02e5781154c9bc187a31201ad99cb48e +Qy = 43d4ca20f06b26d75be1454e96f0568bd740165a2bc6e5b8429d557a79666bb7b9cfa597d392cc5b8ecd180c37f9fe2088d7908e59ff644ab05568d974ab42ec9e01676e1b24169 +k = 10b4b67007af35942216e9aab1d6561bf7684f334a80c7d909a6154cfde8ef06a148af104d534d7dda59b5cec7949de4086ae669edcc4d68b88347d2445edd3037525c97564ce78 +R = 15bfb47a27c6970fbb3256410d5c2f6c04eb308569a966790636899fdb3122f9e3015455c4b50a6bd8cf519afc22ea845794f51e6994214feacf48322af48590d02cc9812960917 +S = 090c61f6c64381845491dac81d5273d58c59d9cfeed214527a52c8f23b0146431692a25cbfd77abba22d4bc61ef24093c593c827ef645853bc8deef7c3b07bae919152b90c17f4d + +Msg = aff61d62c8f5c31bbb7d0a64a6ac589e918bbf2f13e7ad13abb9ac26405e267249a7c9922139bc28140833e10976b87e91cf28285274b2b48b63d24ac94c85c70fafa78f8ad05955c0ce6c02b841ee196dab12306e3e3d6138371217e2b474f7e67a80bbb78a47e374ffe2c9f86292e471c551da50d46e7b5c8331029f369767 +d = 11b92c8b72b86c51903387a65aa206988d443d1988253329ad3a89c902ff1ef8cf73b7f2e4aaa352443bcb833712d94c3e637ec12cbe4c2d4606878576b17fae1512fc77785b737 +Qx = 22440b63bb4557996b63faf19d9f391c5085cdc2cda3755622a6cedc676222ceb5a56ec36e220e507973c0f07e4b2e2d565a69967804ad311f0658a9854b1eddfb5270f4a86b769 +Qy = 50199c9e443555123f153249cf7256dc3e82c5d8cb611adca0cd4fbb0a9a90296bfa770c1b0c0b43e4363b0227273a9ec9f00ecf83afc605b0dd2e5e24f739dd0b4ef6bb11950a0 +k = 0e5ebd85f5fd9a9a81067fdf51b1906023e68672d160ddcedeb35787688dcdc314359ff5347907b685a718ce38a69be17de292eaef189fb9ee8c63271bd6818904cd246503dd227 +R = 051387b0d057985dce86cb962bbca7d9a047f70d96c20539ae7d6b7cb8bffff606f03b8315f15a53049c6c1c227f86d395c2217d32aec32bbd406c790a6cd2706775ed8a0ba1ebe +S = 0c7f3b7e4a8b65a58c1280110f6c2486cd2d2df7d48b49074e98accdfca4a72fa7d43bc25c6576279f4a70f22c98135ba79158bcc3452940963b556304da8e1ae88973d827bee32 + +Msg = 721017294f17ef351e41256b57a64a79f3636628c4bcbe676ac9a2d96076b913dc4b246c9945183ec9bd2d251441b5101eac44e2fa1bef59dec03ccd7fa5accf3b7d094d68dcf78c8de4e2f19f56bf0dcb3b66b9421ec3f8b353b9fd74feb2e9affe0bf9aa421b6f03eeba3ffd58fba56b3ebd094880e50de01ee62a108a24cf +d = 0c3c90d5ce4375a08b85575faa78ee6bbd9e5571ce5a90582042617b807339c282cdc3b003d82006264b1c08c20af4ad4549fbde53d262facb98d923d81b8eb6093374b6a1e84cb +Qx = 1d900b4f64c07cb959049f2bfa18012f9bc2dccec5a73e9a48a9d5d65499e31ec4a1615c4c50177c032d388263eba1a90e07ea68f081e10272e88a41389bd2626961b646c76ed8e +Qy = 5c094fedfb5b118accd64d5d46ca2ed92b3123a62042a556ffee9e3bf709092fff88231a26917d368db51d1959ad3285c7faac16ca57677651b070aa0abad96f07d35c5fb8a0ee0 +k = 14d4070307cd269cc1a3c048ec0847edbff46f64c1ba5b734d8a800e50a0a02af57cf24750d292e2c247ef1b860a9d7b5069a32f5b0546fe9e019e04af62316eb79507281fbef6d +R = 1cda7f743c47ae93a9fa533145feab4c46252afabe3d54990663b5891b4979c645ccaa05c744420ed6fa235952f370f5aa187250d7b069aea1123f19f0f18da18fde98100ff6ff0 +S = 180b4163f2eba6e3769d8345dd8cb003ea120164442efa885eda5bacd75f8d705b7f1bae2976f67cdfe984430e36f93455ee7528fa6febfe92e42a002da165c63dba8fc589e7851 + +Msg = e2d1f33681759adb7954bb5248b0db3c3885fea0d4c1c0c226eb1e6d2d3ef1b9ac281a0f1c2fe5175b67114b6a501e2426d1454bd5790dcbc4c232cf06b017de8a9bb39e6033f1edb5003e8de3b44cc3d6150c3c952afb442952483cc688908337b7c1a8b5c9da70937ccfa98b2b0098c530ff848010b8e8ee0a8d65283481a8 +d = 10f184c16228d9034271332178ed485d10b6aa76003efc160d63fea26fbbdf5552205ac7df0d8c852a1210cf0ba512f20b798827b36ad56b12a826fa7dc1db45aed264ca6822659 +Qx = 2637543ed8a11271bbbabb2cf72999f65df0104758c2fd6fbf3e1c5132ff1c1111fa5504ee86bed8f219d5025f8ae07055a7849314d2d439408ea2b2ddc40320c57f5d41255d0a6 +Qy = 14e360137ae33ce6930b844d42bcda4050b25f349e9e19fc4fe82f5e4f73cf9bb50212ea875a5735faaa1d5494f1685d6c8177448dbf356b408ffc2ba0726c9befb9de9f0cebe32 +k = 1146574a96394c82972eed1ab7ec98bd08f27653c565f0626fecb431ee4fc6f830554df35fa62b5f82eaad49524d3d4b0598cc7a2181ce9860e271812373d21be9536fc181c3f12 +R = 0dbf465de2c5242fb527f6e4a4188adb96a2030ed8417cd9431365173f569bfdd3e420f86947da10a703370d7f38dc43e2249a2476690829545992645c9c83d82af8adae893780d +S = 1499782e0163f80de68e3a580ed08fdec8d6552ec69f186a74be89480be28a0df6acdf7c65a72f115f8a59fbc28bb94af64cb3bb3cab20bd25265237a010370d9a5c781c1e26f3c + +Msg = 414fc5d2bd56b30040e105cb891788792da595583b11b8fcc7320f40dbf64d9263532dc57344dd17573c95eedf851668b5d552e8796af205f3a0043af1a829fabc2e93d9af9091fdd9e0fcbcc9d6d9ec960aa60e4e2964c29a2f375400366480e513f63d124db7745847310e69a38c8455e4e602056a6a4a14a8694155e0a9bf +d = 181baf9d497159f837cba58a11ca435c442e5ca792ea559bff9f6a1f562c05bf6bb5914afbd1bcaea75b35f88bdd832314b249a5298622c89462344d3f28a44ba3d059df432fc71 +Qx = 6f3915f884e250034db97327470197d13f0716d1d810e43055757460dc252f5281717b3ef3fdd51085e65a0e073e78b697a21bc33137213981fc05d9b34caf7dca7a4f99be78596 +Qy = 47a96ab5ebec6201b7c65ce7a6e70effeaeea1c095a0172e9e2c7bfc88f7b05ea575076caeab189f810258373cff2484f4fb9c8167989f61aa61ae27113b5140c95f7faa505d2d0 +k = 10e9e6047651362accc816389b26ea6befb0e34fe7363126f8c4ff9333266f46d63c4d45075480da9ebdd0f8da7224b470d914ea1d68cd821f563b574bdeffdd0b3ed73ecb9133a +R = 00e36644cf0861f45b333092d44fdd99f56e89bf3607f75a06920dfab0ccb1831208296aa2431bdb75c5d50f15bbea2e13d185db6d7175c221858fd2b22afbeca7431c290b15d3f +S = 023ee3b9ce817eb0a6733c85062cc3bc5f1ae62bdf3a74e3ec704baab05784dbb5ed01a6a2a73c80a3e754c013ba886108d9eed2bc210f29a4774bfe5508ecd876ab47a8527c530 + +Msg = 3b592cc8972a4782870e079b82a50f84b4c2d8ca90bd500d1ce5678982e266c391c556d8162ac3aab967154d072dbc0ba1dab5545cf2651753dee2881eca5abd412fe624bf3f9d17d33692d21ce23ad15ccffdfd250cb1949e73c9e40a64ebebb03852e92692dad1d7baef97fe109f35b7a492b343d4b643a4a7b1723eaecb64 +d = 083fae86ab96bce99a53e50b7eecff38e4e25b21c4b0f6a4986915de245eae24f16b6a00a4db159ebc27f5a6a072da94ab6be5bf75f5eb3f75c4452bf4ea7014392eb1e02706fb4 +Qx = 78003779e0287bee54df31f64c58951df7999b48b647a6bac416f844485a4cd7a53a64170f9d2d31fdef0194a0c262b90e5bd33a1782d2ad56c210cf80abb5fb118cffd71ad79c1 +Qy = 73f89ebdf0e255205a7525cc12b7e1c58303ac3b3417183179c216ab8e47f33d0af3238e3ae64d418ee89ef3a2cb4bc67a1d2fb1923947b9dbf3f4fa39ff82327d0ce3db24d2324 +k = 13d126fc4033f537b00a81372031026f6a7a2062863a68e36c6909c548833d1a8f5fb5fe25c7d9f2c65b1dfa974630204f71e96d657095b93cb54b00cb88f32adc08eeff4036654 +R = 09be9f4bcd7b8ef111337fb665379509b8b17a2212a80d5fecc685f1f362c45f930acaef9df47c33c6028cf7aae424264575b4635a11edd6b005ad26cf2021051501fdd1b77d2dd +S = 0dd196343ef76bec527c5929e02fbd5d02d5b0a4b5f2c8561978e600856de56d42943f1d74cb81b67010bae98de0efddfcddea5d354c60c1fa76138801f6cdc5bc932c136309b6c + +Msg = 0079a02cbab3dc02601fcb5c8607d555beef7cd71a66911ab6514a4ae21c5a9c0e166f8cf5fb198ec5a49a96e17cf041f35f00406b79270ebfe56dc6b8417d2529fd625686ffbc8f69685aefa2fd30a937c02f25b48be4679e6fde821de928b33b12470867def874bb8c7c8038ab6594346a2c44b39210d3610994ba60a05e06 +d = 1a663efa7bf4d8479bc535fad71e9b5e4f4281aec55967baa008ba17ac2f89cc3398d30573edef29d590fddce8cb157f655e92779f59e7a18d0327d02e7daf4c1216143b3688fed +Qx = 6b4bb31856dc516be60a0d2d9f42508738edd4f925eca9c72a13cf136720867babb38622fe97df70a1edb35735365f34c74baef9aca539aa1dfdead3324f41a16ca69bdf86b43f7 +Qy = 6c4a91d3fac9e7647a6aec6e4369158bdcca2275866bcdc5a09b2f0f1eba10551da9613eeb1e8d3233316b62a5f4641d6aaf669b975dfc511f2437d43c9eebe53c5115fb4741b80 +k = 0a843d0cf776878fa9ceb163d7aaebd29ba3aea0808c3459036b258b99ccae4e2444bc3211b5898c0769b7d7e036c07803497e13803132b3c6301412af3be8eb4a853e939a247a7 +R = 00356e282c096fe1690fdac4c0c66eda155ec42356dfc4783cff0160e1d76b33a99442d4ee0e3f6e1c5bde4a16c8e18bd18f98a178c3fa4a560d8fb8b4b1d72663576f8baf8672f +S = 0c5018c1383fc3847819726e1e940028892e1abd164b413293fe50f219f2059105218e4e3b952b912a3258c4ae52dcc03ac5f027fdfa448a8d58e3aa5c21e790b3b47bdfbf21175 + +Msg = 88573bd94ef50459814806efa868ebf92b066fbc2f7a4be9d2fa06b9dc1a72f72d783a6bcbc107b18a6314511bff217037a2252e7a5cd34cf9d5b2fe9c7846931f0133b2e95876cb800dc4ed7c4a4e4cc4f1195acf99fb0ec224b1f8fa8af71f72d390eca9d6be3879032a318734a63fec336c79035a43f70271def10c4955d3 +d = 0088d1a2c0219696a94337cd56516252b74139ea0733b17fdcbf7692c3e5f6c3989e5da2aaed7468e65a5d578571928ca273ec3b6aa72cd196f560f05095cdc8346e5d31c4c2e0c +Qx = 357801cec0888461ffde22d83afa9ca008ac88518f4b09074d29a846f5900e024a8e5947bc25ed0e5c980a58fd5e9aadfbfab31db8bec575fe886deda80134d91b3de9625465302 +Qy = 710806c7ed33f6879374c59ea144326f5948980c8013144345c5070122c0ddb7e18e9f752eadf2a9b0854dfb7d9b2f0d80ff0ba46197ce6017885939e9f59b642a8fa41639ea75e +k = 16940f69013026bafb6f400c037272176b04e35e9f1563d382dc9982968a186e3e1525775d27150b34b8ce5e70b537f0149ce1a521d056b52e75da7e39ee8a529ed987c70b8234d +R = 199058e36449ee1a3388d7357c9c1020b2e4c02144aea14b041bc584a752c94fb6e474959b24bd2c0c104f5ecfe223ebdede672298c29195033aaad5db1852ce4dc3185ba2409a6 +S = 11f3defd9b442378c461e2c68b239d2e4afaed691238c5ac4e0be46ebd461639a60176f9884133900f988e2d730d34df5e2bd8a14681014c0a213f8d233b3c50ae3064fc38d1a19 + +Msg = d0e02045ece6e338cc8ab41d4a064c982ccb1748c48fc2fe0a6f10bdc876094358a6a90a45facec798a83cc95c6795cf0f0d7c66b77e22cb114c1432bfdaa1485ff35b6a58107cac3b7e58cb4f6c87c68db60b751e78f1fdfa54b8923b98caad0a4f31226956d065c083ace5f1e9e91944dcca51879d782e40358d58ca758750 +d = 16cc8a0fd59455ed8d4de561fd518df2e008f7dfaa5f7f29ac2489a411e233917b43eb3ebe2596fc824be58871949545e667dbcf240dfb5e0c615ade0179d9ea2a1b1ebb8ab9384 +Qx = 2477e678793593e2abe837961895c7ecef71af1feb882ff27cfbabfa0ba3ed771b79223e7b2d2388efd371d5c325854cd60e48484f818e1a8146fbb780cd6ce06ba63c0db67df8a +Qy = 01b696114838bb972ec6d536abd809d3a436650191c43b2bfeefab2b400d5921a7eb78e307266acc190e05f3869017f0a66f886bd6556c58aafb1042478cc768a4f86758e9f4c32 +k = 1e1b851bb95d2913d6d35b756d49fba6f4c127dbed80fe4068260cab89c1d42f7a6843f731e83b379ccd8a4915d2e29550f3f6ccde607cd0b066dd5fa41ac2bf37bdcfc26cd4d04 +R = 10d4291346685fe070b267edad91154df83664dc115f058ea036c712929634d53662586bb50cb6473c2170db5d4ee43be0c50532015937202e193d15d5189870691ba65aead7f3e +S = 0b2a15f1ef00204bcfb5108d8f1da96ac3297aa041074b68989ff5b6b276380de7887753fe3d416ba691ba0b2ad7fc065ace02815b2323fe17f6445b0fa66dba5d99d8e7d557cd5 + + + +[B-233,SHA-224] + +Msg = f1b67fde01e60e4bb7904d906e9436a330c5cb5721fd4e0a3c75b83dade868736bb1d21cfb1b5c6407c373e386ee68ec2239b700e763728eb675a153b8ac44cf2a87be85fe8ed6683430cf4b7d718891cbf8d583d0a37cc952cc25fe803a7aa4fda80f05541a2f1f2601cdd0c095f7110f2a84f7d641b8531572269b21cbe77b +d = 056673197bfeea9bd7a8b820b4ae51a50411bf118a692bb9ed3d304da53 +Qx = 03489be62e53910c20cb508de019c3e326f65051f26749944b4454f156a +Qy = 0f775ac38baf19499675725e8190aeea16f52346b1c890d9583b38c7521 +k = 0a6c9914a55ef763913273b062475fd0188eb2d5af9c8c1dd97cb3cefc3 +R = 08601a42d7f7eb047e8ed9820ddce665c7277f8ef38c880b57109b7160d +S = 026d6f50f0508953657df5d753c595ffb8e1c19f8d092f8ce8db54f76d0 + +Msg = 1d496d96b533c632ed6a91f6e3653cdffaa5b8cc0008b35e49b2dd52fe261105c2ec7ee71a4ad5d51fdc3d36d688a3b7ccb3b3b0c3a65be17b8d8aa172e3005cfbf37a2d1b1a6e268c090c6f318e7e96f9ec9b9f5a8fbcc7558d89e840f7e76e44bed91c26ca48e6f5cbc253ca2fe8cb81c484cabd24070e488f9c00cd96ad4f +d = 0468f01d483144e514ec257f2e5fdee28a927f2adb19714c1f3524dd0d3 +Qx = 16b3cad89cc42b80bb730431963526e26ae3b415b421575dfb6ed973e17 +Qy = 1acaf7de06e20262efae01fc80969cdc1a281f68e8c8bc0d2d4fbba3a3d +k = 04d261304678301985f5bb3f6ae465f11c9fe0e5031b31f194969252703 +R = 0878a87b2867c03f55726ea2a6db822788f4aa4e9ef609997940ee8c8b6 +S = 03545153f0554a8f55301d4b948043de3057cace62c8032c8ef8a11dbf8 + +Msg = 723400655027f474446843645757f7e2cd466bf97275067b4bc4c9d79bb3b19b2421835d69db916f24b77c381fa771fc1e7a19d2b4d09411ae55acccc615b16fd24705762b441ab67083a921fd4ae569ce0de69449aa96f5b977ac7dc022fdc8335656853796f54b3fbd118577f98920624eb0a00204f1ef83827245c06646cc +d = 074052d027f05465a8083a59cdbf32600224e1f563f653b34314651517f +Qx = 06999290db440eb5b3291bd4bb4a1af6386654fc4d275ef136c0e03dbca +Qy = 1fed0b1f9284e488c7fa2a010766c340bc25dc132c7679c2598e423c3c6 +k = 06e38460379ac3fb13f64d4de654d4fa30bd8178da0bfc29fab2a1e2e39 +R = 01b18bafe55e5c24fa2df4c09112b44d24e78dd09557349ceb1b916d280 +S = 0ad7cfa003267a6b7a99894f75720cedc9cbf820d355a6b840709f42f62 + +Msg = 155860cb31a142082bcc0bad828d747e916392d21f1873b3a3c1d28ca3ff9d45ddb66a712e3856b6afd07c8d2b2a7badab296a9775b03f6fec0befa2d8d6d00fe3938df244ab46e836a3e686c8b4f918da49f0bb3940bba34a9aa22c7caf02df7758b0de01d9f47af6146344b9be3842d9c055eaf0fb399cd8db95c544a62d8a +d = 01856e7544223f55f80de72a6ef3822fa8fbd68eb397d06e2d76ddd35e0 +Qx = 1a117e52f09080625f85fbaad8ebe0d3ad410f034242bf48365e88ff735 +Qy = 008b8bb7958d191265901a3f15b2919142505efeea13df6e42da8b0dc1d +k = 0aa106ad1461353865706bee9aa092b00fcf1b0108ecc1266ad5d8b6579 +R = 0bd6fcf49029df32fe0fa47f39cb9428d95d00a84a5afb392d7b4b365e0 +S = 0b17734befefebf03d1c79e59c12ed3c57e7d120dfd993bf276de559588 + +Msg = cbd6e305cc9f0dc90caee6e65a74582e9357bd25c78e33a7b14e1ac7e9397ff4466f192fb432143e6df6d61a0ab808ec0a361a6d95a357a38cd3e241fe03ed883ccc364b248ee2a08702110745c2688bdcefa33c1a45b9c8b200e45cddf3e3f66b8d37eff07fbb3366ea1558ef304085613c56707095724b3e134c7a7d3f8dbf +d = 0860aa2b589f2defc617be73e191502e5d9952bf60547fef19eeccbca26 +Qx = 06abc5619422b7d548c612e54df0385c293632d4d97c21e2e15ad98d0c5 +Qy = 06c36c072603681c1b03f6a023c8e987f39d931bc2a200eff82239ee38f +k = 084fb252dae9a96a44212d18e15cc52d179cd5e3392ab9da57d04cd5a9d +R = 037cd554e7815699f033ca9187ddb116777ef847b92353f613152c4216b +S = 05f806dd062043420dd056998bdb9822b3177406a536d766c4aacdeee81 + +Msg = 812a218ff1ee1472c189f63386e5b8ab341671c3a4dad27a8c6249d1c0f9a29338b471b6179f17a078b6504e804ac55ca3b13e68a623041bc1a092ea2adf3fa1124bbfeb161e6d7c483433f1548763b84da00352a6386e1339f674d45dab13898147ede468e0e01d2c4e0ed66b395a16cc3ded3e952ac739205f35a83376cbce +d = 0d0dec052a00ccebd0c0c5d9a08272f75744a2582cec7ddd924a2b022b2 +Qx = 16bb8c3d319b93731f1055756e57bd56d50b6b9ffbe42735925cf6f7675 +Qy = 09dad7b87a749df130b45d9cac8011101c15abb7e64bd4fbdd94107fa31 +k = 04098547601430c723ebcb04b23e0f1ce8b1f79ff7ed3d05ba130922b01 +R = 070ea6221c0d62930b019faaa856ad2c84c3989ec54040bffc42d8dadb8 +S = 0aa20fc58beae8ccc880e7fcb48a471faa5baeb36bbe5aee71ed9f8adb9 + +Msg = 0204b1fca831919e89e108cf140b3770f531a696b1d9a4d1fb68809eb10afccc257cc90cd36717c02b2f3d6d3d1d8a93cc5c48aa7ab9f9fddfe121ce9143376535a0c65e247c6558eac49fd1d6d1bf431ba918c471cb3d536ad485ec51f6471a340ac75f160c4c54cd3ffb9dcc123124b42df1fd2eaa005e3377c5d2d55938c6 +d = 08a017d717d6d1213f2b74c53281b07258738c0c7db649ea1ac46b9a3b6 +Qx = 1eb379e27de6c04c5320cbc18e79ed9e8993710ac70ce823f1ab5762b67 +Qy = 0f552192645d350361762aae79ffba39c33c2c5c0df208219f1b339016a +k = 00e4822b2cffa327a8396301b21554da6fa52f418d67114bd58e850d935 +R = 0d64dbdadb4ada2d3a8892049f7fda3c733030522b44cd72ab850b77bd0 +S = 06fbae2d8e4fc04abd8a6e9cb011974ac851ec108e38f9c72603f7a04fc + +Msg = 2033eb48756638cb56e2cc39a3e775cfa11fce86cf71f04487dcdbc7f262bc8350a30ced54d1fcb697b28a6e96f88f782947c997872307ed963e1d68985f756435af77f57755cacbb4c6b50ed419deec9f39f0a549a13e54254fa0a5832dba2d943ad4aed8688889a2dd29dcb4ea12abd6a6c50eabcb3981c3a0c1ca5f0b9629 +d = 01b56c14442b084cfd22aeef0f8028ec57c8b571c9fc1e43de05c45e47f +Qx = 0d450c533b13b211b8c91dad0738402a5c811460426ee2f35ae068f2c12 +Qy = 15e1c9f9d398925c619f8aa0bac746eb7907d3d510814cea185a7efe771 +k = 0dca09773730a2758b7f4d9257a8e6bd942c141e46bde5ca54a79468c4f +R = 0379773ebb7a2860f3422d8f8f714b234e5abd8860defb19c659c9c6179 +S = 0cb9272a27661604425ab84632f586048483b9f9cb80b9697898e745117 + +Msg = 2986ab1cfe8873009e932dc68d4727d77ccbbf378e43fe4aa7c54416346b036b89c0aad1b82977c9fbc39a00f1dc916c0561d8dd70298c02b6cbfe572e0ef2058641e841c6875e8515f3c1082765e046c90c956d984b76e0e8e6eb433ce26c1757ac5b13422479141971c20102e9621d18f51096ae3173c2753facee2862d66e +d = 05afce37c5594586ac46a34ae291f591eacb9880a7de92701977f447fbf +Qx = 02a069ef14f2989d2b715c5006642ba966cc84df88bbc27e713e15c47bd +Qy = 0f001f60b8a8102a971faa2c42d3ea9cec37b49c7e6ec0cae9f7fb35713 +k = 09756db630ed9b708bf1ab8aae6a7559bc235c4e9f4002ed26e2f019aa1 +R = 06b9b2c1d214373647d9a2d24ba69741218064004614368915d5cfaacaf +S = 090dd607329c27483fe43b7be137c3f51c23217c939baae40b53e65af2f + +Msg = aabf5aa90ceef91c2155f90660adbcb0eedb996f5242cee15468ae217058ebeaad8cd4ff8cdc754a8ab85ba43c59fbab6386686fad5e27ad3848fe52191c7e4b203720841501792a625aef2acb6e36493b792fa55f253effca682946ad8c77e01f44e92ec3c258d0dd98d3183f4dc4a0bd3eca183794abd6232a6f9e4add8f57 +d = 00696df05dc7a54a9908a73eb18416a155cc8df4ab26032539d86eae537 +Qx = 08f9f494ddf8d0030746a8c0b8d215dda6cc2724f411a7ea407629294c3 +Qy = 1ea2e9f85f06412d29c677aecf624a83c2fbd86482dc0d564906a91d97d +k = 0d62b06628d3884f0a329a7b6b4f832fabea4ebc85ee03e63f2967e7810 +R = 02e39824f272d4b74810594810957963c777207217e53a672010605b9de +S = 0e64bc44af64b6f879f0d32f814acfbb98795ef7b2f246b3f91cacb55cc + +Msg = 29ff209eabbde02b10b3fd559671fa53e418750c32c4a18d31cc0186d1077581bbefb8770ed079f536e866414a07431ae6633955bf42a2389b6f8a565d6e4ffb4444336e0030093876a26d4e3106e9ac697788e41f8a21c755eeb86a7c60f18e5e1069f16408a4c375a6a68d42959f2fab7ac09736c7b37c80c05897d8566ce8 +d = 05ca31e88c5b2e96e433af2023a66095161710628e7bfa428944d6676b8 +Qx = 08232d4bbe25536ea7f83c145a8d2b1cd72c383eefc2adaa1ce72c7dd9a +Qy = 100b738c6f1551b3240293ee8e8ec29fad0cc485ffc2cfded96b68162bb +k = 0df9e1b418ca1d41d749ee998446ba1cc54bc8bf72eac6f30929b40b5c9 +R = 0d4248e0bb60fe46abf7bdb2effe804b9d394d8a5514a5791e149d435d3 +S = 0b89a459fb99cccebda754c4b2ae264c9aef7b5b610427f42c35dbe7d3a + +Msg = 97765d876c80819f4004a36d09ccba78e600efc71eb7e869d3a00f658d2ace6769c7ab1ef590f41fb070aa8e08615e138df45ffbb6473d4a86ba5fdf17dd6dc9ea9ee19c0332563c99e6a3451c211d286d69102b47bfa6e07d468d9bde82e5c2063fb1ebbbed6086f542cf68ba46d4f214634afb1146dd5a6f3d50912ef5b824 +d = 0ef8fe84727a2ad8bf4e646ef28a492adfaf785a3a2ba6e6f985c649a8c +Qx = 03435eb25ce9891a78c120098992c666940103eefd80d9bd64f1d4ba37b +Qy = 0ddd6a4a01e443c92afbc247f634b85f1c858a2aaad35a26f57ad4c9126 +k = 09753a236759eb32e13f19b9d2ad06f7b4db4ac7b1df96813463d0cd557 +R = 08408fc46149dcce0753d7cae0f50c8c5fcc97acf7a1a02a9f68c0b80c7 +S = 0b5ffba104acc6d0cba87523382ff928859718122c4d0d2298e74985d89 + +Msg = 21cf768d087d1e4eaa8a05e2008020e243116206d675c09be42ef2bc93617ecbb0575c873c6510ede9979215531b62126552738862fc4323d487992754e39d8f0d7e111e165ff254200e05082f59a57ef649bccaef6f980094fad3b7ef93bceb161760e200f0a2e396fbb6b6142dc84d872311bf932b84616b22231747937d58 +d = 03edb94b8c62f9af30c14a790c0f5d65e362a21cd8569b9725916d534c0 +Qx = 065133691b888cd2513964b5a905ed9334cff6367e25c09db1743045d58 +Qy = 1408e1ac721bfe2198086c1834d484b6e5692c037e09928cff87f4b5a88 +k = 01d8f800ba05d8173b0f1bb3aac0aff68c6b24cf98c28f5a69b0b5a52cf +R = 097c07d4352e39e1878c42fe97ebd4c3ba5098706879fad9be4bb2dc2f7 +S = 0bc669db3a488e613665cd26da7927c6b6a073ba6b0951c00d22ab1ffd1 + +Msg = 7b8e58eecdab3e40212bba6bf284f9379265b3d2baec3e4625aa08d0ced851da193c292ec793dab42732c07b4e94d8b19c83aed796a7e3a6c2b954a7a9a1ff9b2bd4ca62592c8b68f709f1ad38a5c8033ebb3f33d176945bfc68e9ef2b0cee2d45a13ce89d238a33c09ce2c0c63c4233aba5717b85c4c161dd7648a41a5e39d8 +d = 00a7519be62562318da1b67d22cf8e720353d22641e0cee11c7a352bb93 +Qx = 13b63dd8ca9044a3e518a67999a781a5b62994b6e20454003a9bdb8715c +Qy = 1a2f9bfaf528b7f5bc8c3b02eccb71666c83e4a598b4077de999d90fe27 +k = 0992ba1a8331bc4d88be7dee06f96098bc2ea56668f345e187f32f38171 +R = 0c55b45bc7bc3092ffa82234b06ad45525b45f8904011f1bd6cd356f0cc +S = 0e6163e70ab56d43fa27211b98b48f1cade127237bec1c6556020d39990 + +Msg = f8f268d2b04fe47e5052c8d0d653787384b9654f0bd2138a6f52b80713feeed452b976a90eea4edcfbb62d04f3eafe172ddebd7cdc3701ecd6008e3d82e8eb217b13b5228839f61075159f3bd1e1409c08903874b6dfee2789dd72c208ae769ec8c7d52552a2b1fd73dad24de8b571f88e2184d0ee7d063a121187f97e746f2f +d = 0264022fd7dc2328a6436b522793ad9406d7a586667a0daaf1bce927338 +Qx = 12d7e7f8519a7e357510adfca2f50182dc5fa12fb2a77409fb781ed500d +Qy = 0ceaa9a22b7ef9febd8a9962ce21d83fd2a2a938b9d7a78d669dd233974 +k = 026fb8fa6e746106500dd29ee32bbd03b94302ec3a123356b23b3055e51 +R = 0f416418f7aa4d437e7606afedf961b968a67d9a1524d60fe3f6df4d3d0 +S = 08d3afc975a8147fa8230fef4b16e3024180a9768702038f955357ce8df + +[B-233,SHA-256] + +Msg = d288768cbd066fad4bb2500b5683fa9e4eaedfb3dbb519b083f6b802efda0a022355565c5fc6babeccb22f3adbbda450ce5d633193d1431e40c0fe631a295cf85965cd3f5937b31866bd6a5300eaef9941daf54d49832acfceed90e572ef34ccc94eacd0fd6b903fee3c572b963d21e2881656a214d2a4c125778dbe3bbeebca +d = 0da43214e2efb7892cc1ccde6723946d2a8248a6b4d6c8872fad525ec3b +Qx = 0db09738bf0a0dd777f67e82be50dc8c2d8e91598bc0b8d4486f67c04a5 +Qy = 08ef463e2f37ac7c3d276676cbedf17ae11e767ec577da7ccd90cde3b74 +k = 0249cbd55e307a0fd10a0c70b1c0d5e2416f4d7f144779ddc11911f4a08 +R = 04d1c99f9d486fb92b132d68c0173df891ca757572f7acc03cb41d46bbf +S = 07de2deeb58d55d65fb37f600d916cfa49f889f02ef53dcce412703d1c9 + +Msg = bf0ab46e0a756c11229b0ea961f8d57218be5b00ab8b0e91d7664cdf5e0341c412c0e992d26ab12115197db39df2d1a6e18ed26a91be461432a2dfc21d98cb16003e339b0b0b1f100e4e6f4824ddac5442f22a1fac26326ed8a89cc91343d7223986d485cc8c64424e84d56be536c57e4dc5faee459b1958efd79e07e90a9811 +d = 0aeafa49d776b61f6a30d66ff64bd40dd8d79891dd5293c1b5cd3b46a7c +Qx = 1ba1b87b16122e6939da5dcadb8902177a9f9ef09194c8695008b80b588 +Qy = 08f51ee5cea1f4fc9c44c70df57326ff121268bf4e02cd9b2626fe7c1ed +k = 09d640ede5bb60b9aa78e393ed453b1643f6dade4aa20e994db53e81fac +R = 0277bbfb7479077d5fb6813670fbc7f46055718199550130b122a7cb8b3 +S = 0f8dd350bc0bd2d84cdd374c56ff2341de4102269a1e80df7e35969d4cf + +Msg = c7b1eeb7c19eb16e7f42b61d79e421b71de797a6cab4e0baee522fee7acdb533f7bbf5855316544e1b82b4f2a18ad0a2311e7622549332122171f32fc62a90e408207e0fb90d1b052821dede9c41b15b6e07d84d5d7b9e31e6396a8ed229fb6232b3051298dc5321aa589f4e289d27169f14c8cc93644916d9b72dbc92c43488 +d = 0e95db309f4305b621f51f93588a2678cb19aad0932f365fa0aaa3a3895 +Qx = 1177eefc44b6070e2c41537e75c91e2f08908c0d950bc90cd2f4720b335 +Qy = 0f751312dde55b1bcabf31665deb6c12d043d5ccc89800622a557a7ed37 +k = 00015798ef57a771d62d194389817c93de1b225398fcc0d2b81d94054a0 +R = 0eef7161a167f69a6c89b0f173db2c4a7033b5d801c0d89642ce65e377b +S = 04043f8985bbe0221fd595f9355c33e1930b5e10a1452e81c31259e1e3d + +Msg = a738eb074e1f277dc665118ca055e6328059ab26da188c16f56384c566e43df8cff3d2a10d2d15c3c1406de8f734b20be5dd1ce937a4289f0ddfd7bddabd03586556eb8233b8feefedaa1f49bdec6d45fd562c2a83fa9fcfc2013bdd77900857199e51fa9c7cbeab925ba8f6c3c5fae46bf8e9c574b302f1e5f9c44400152a78 +d = 0d4319cc8e409b8755880827f3200d3f0f1c64d6356fe74eb1f5aa42499 +Qx = 0bf65953f2d08477f7fd0428c31125184e3bad4d5da00c91991949e0562 +Qy = 0f1669d0d116817d625128ae764b3fde956432552d24d98f08a12925afc +k = 05e8704febc38bb8ea76f3c6433c1f0421dc5e5af959723a5a2f0e9a970 +R = 0307c0b838c65d1a47792cb367253bf7c9f627435f1c7ed74494b318446 +S = 00031a9b35e935be6620243f4878a38d4e617fb25f7a4883893366f39cd + +Msg = b28103d77e5457c42e026e713ea6ff03722a36512da17197140117442a976f9e2139c54a759fc26af5811b455e5a0d3a95362d9939c1e738045be9237b469ae2106ceed7e7842b44cc0a475d5af6d781e32ff1dd1f4e1833dbc7f82b27dc7e1562d0e29213fd8911105104a7a16f665b926aa137f70d868c90e72f8ee2c95b64 +d = 09e556c945052e5954915c773b2d47970c521fcc99139269c3ef46093b7 +Qx = 0db68c16ffe64bede4a849812df0b8e202f74500cb7d5349aacf7f3f026 +Qy = 084b5892ea74835e96e9dfb1bb201a4dcaf32da25dc00dca019d806f5c9 +k = 0d0c9e0b6d4526d5f6494d2c72f812fb8d26e17c7a44f6b5e3f9e684cad +R = 0a379ac253f3aaf94cc49e91fe3f2908107a9e1a4d102e02395eb18cf08 +S = 0854c2f6ecbfe95cfd14045faf71ad47561e365c1dd5f515d8817c3198e + +Msg = 463d04c84521ae671bb35c0a7acb3ae509b1b0470f39b8fe7ae5f3c9fbadbeb2bcc3a87e284cbdff07407a351f7ba743aeac50c4a1fef7375b90eb4af8ea2df040776bbf3e4389e7a80bea40530842642b9895ab9ef5ac8ed6c9ce7917d7b3ebcf80b801da845943313988c1970e7748cc306f914c37414f8247d648b580000f +d = 0becc76f8a77615c4f92ae1f91645bf5bb908e75ef22fd544aae63a3c8e +Qx = 18cd93bfe8fc8ceef2b9be14fa947b60fb122f5099cb5bcfad0cdc601e8 +Qy = 16de11e673011e30f6fd92025a60d7938412ac63b19d23e45bbf53c6c4a +k = 04e75a7b92c42ba0581eb1201fa5b3fb2ac82460e953c26ce6bc60e145f +R = 067bad23ecac0883d218b1368d822b3bf9b82453c0e5f3e336777c6a507 +S = 03788a331249463533384a61c47232aee6f057634c37560ee25895b2a03 + +Msg = 8b2379b5553ae7db6023cb010e26ae91322bc3f94dbaa369481936f90a886e5d3827d995ccf03ca59f46805fbac0337d31a8f117cc7044218a934d5bf507090e7e21178a7162c8fcb39111e6967803dbf9d752f3ae737ba024d0f4f7627e08be58efbe997a164106bfe37f67d2f19c0fcc7a6c7eebd96a72582a9c7bdf881896 +d = 020572c2a3dc3ea430cd8cde9d642081c21658e8bda165550cd9a5d37d9 +Qx = 16117486794f14d171dfc3ccffef0396cc9fe5aa45d6d39ce0f252c4168 +Qy = 1b6a12fe2adb279dbbefa4eafa273a2ddbafb2c6401067a5ef5e859fdcc +k = 0edc8d0b64496da309b10630e9e5917c9a807ccd7cc7bab14360873eeab +R = 0e1fdd3b7849806fe587ad93aef737ba0472409b7239981f0d325785fa2 +S = 0829449a0c39071a832664e8148e762efc36fda9e030e0d062458728273 + +Msg = 3090bf7373731cc44c00372c1ac59280b0f36e627ccf763fa68a7be37bb0ac8cbd4f70db54fc652566c78ad268f78f015e4bb1e41516fa56ac303a3bb4a52e1fe897d8338db5a6e37cad685e704b994504bd231c7dec0002dbd907a7ebfa809833e32eb23fffdb44fe4a18e11fa19d67356cfd703cf39a75b1a290b8a7c73afb +d = 0769cfbf2dd8248ea1e0ac9b275c9d6ddcf923fe762079b9ed62ccbaa89 +Qx = 1aadeee0e31ba9505da3e195d883643d260dac9fe5e86102c8ed7f88eef +Qy = 0d925bd5fd700fcdec60cef9c9fdd304faa102d9d721b4f21291f8c96a4 +k = 0f2e203410107c075e25c4adc2f55dcc277883d679ea307df7d52060fa3 +R = 02fc0975c2e70328da4a0ad2b8bd344a8171c2c500c55b1c92270230c27 +S = 08871b6791f7d03796a3aa537fa820f0eac8f2463c9f918468e7588b784 + +Msg = c37389cbe3f46eeebdda343e354ccd543e96b0c2a87e057aa6b9c4895a403de706d658bbc9066c140e50fef4b56af2db1f42efb70b8021254649983f1e11d04d6b10169d5a1c2093b6ab89227b88a30537c776bb7575749c3ed87bcb29effd8e4f17915b4d5dff6cab9678d88f33abead1e73dbdc5c3307ff3d3b2d5fd7bfa83 +d = 040ea4a37b388f0cc464f7e2bf92173107b268ff77a8acf5f517b4ec0e4 +Qx = 08acee84d29638a7285654d20f8e0653c7386140aba0bd2fc157d517643 +Qy = 1482ba5ebb82ba46654aa1eaa6a5f01e030177318921a0c99fa3f6eee9f +k = 0a6fbf938e9cdd009c838196ffeb61f7f545f7e7e9a6cb18d1f595a87b1 +R = 096a80172a7b3b65c0a8acfa8b89cedf9cb19f6eaa5d38436c300b7c0f4 +S = 0b7bb96ddfc9d1324bea96836c557cf88d6ede9a93ada8fbfdfcfe56244 + +Msg = 8884def8c3b9c5f856b9c2352c85ea71aae3c8d0e84ca74e70e404a21467159fc9826548d16dd1ec5a75dc2c23ca37b30312f25e1194e0f9385a0499db34c855412bbf58979ffce7fc3afeb7b8dbf9898df44023200d809f520db99eae315b5cf85674fab008a20340fae8f6974034fd3e55bf08c5522a460680218f9757e368 +d = 037fc7898df9b37b5390537352f5c0b8de22659166c19d7d4df31c3938d +Qx = 198674b40d2a68ed94d5b2c51102393d1332404f75187130669b9de0df9 +Qy = 13ee77d854a60f1aa74041ef1fb58727c09f13039bb4b33a818dfe9af2a +k = 0cf92eebec59605b1d45848f5d06e93ff2767dfa282929208ba801a9fec +R = 0f7bd93dd4df06219fb974a4e85030840c7d4877f131adccbd98cbd25de +S = 0c2c4a864459488eb5498a06b0b56ce7fc98fb29b1eb9b6238da8cc8f52 + +Msg = f1fc154d469433f56c2bd42aa52237a4a4bfc08fb6d2f3f0da70a62f54e94e3f29c629c837e7adf0474fa8f23251b9b349a16848942c0d9cf5db1d0fd99527020dbe21cf0b94a9aa21f376bf74da72d36f87b306b0696771efa7250c6182b426a4500ac14de4a1804b38db8d4f3beefb8c9bb619ac82cb63fb37c2e1d22951f7 +d = 05d5069425e7a9925d2cfc6360a708147b2c1b55ede243591885147ef3b +Qx = 1f35f161ce0963dca70066b3a6de2a74ea1941a27cdfabd9e433d8084c7 +Qy = 1d5d9cca5b741b2321d8511a777fcc2515c99ff8d13ff20266a163c94b9 +k = 01b9c83d36ada7e9367790ee850163ef4420104e0dd3299ef6d65191d7c +R = 0dca4e804bf74aa496c15025acb4232c637c9b81e9e26d6f2065d6be21d +S = 012014f77a4ddb7b266abf2c65a653988ee6f913e700f3f83f3e78c88ab + +Msg = 885cd348f7983a0721f96c0e866821223d3e5a95178b16d18652b4062b1b2278aed6f54ab06f7e37ae6ce1020aa3eb812d215194bcd212302da5b971fd86aee1dcb23057dbedb569bd0bbef80df538da69ae2358cb03bb77c64d3ead475c8c5ae5bfbdd75684b421a26f1a7b0c37548fa32d805acdc91230dd70a48232a12846 +d = 0ffe3e7b82ca62b96e057ee072a4718ca20a6cc9a3e51e4fe8ed7b4b9f9 +Qx = 10f774adc83c1893894855366f1db1962bc697b8e1d047a01a08b12da4a +Qy = 078c6ff634d5dc8ffc4d8b1a53bbf94046023095a8c2b41618c4330a4de +k = 005a4a50de4e97280d6ed1324214d91b271deb649a2dae18d21a0182022 +R = 04bc8ba9ffbca81b5f19f0d8b1306900ee642bc5cd9a9dc9867a4531b04 +S = 0353567acc062b83459017c70cff4f3b8ef0925032b51d7300261408549 + +Msg = ca3b0e2f1c7db4e73c699f06e432bb0f63705ba66954bec4a259bf31c161bb4861476e2f2f7dde9d841d1ea6bd0990cc793cd7a10432e38735c3eeda7a0d786e8821239bdd6c4972c96c2cf68ec5b935391f963a50fe16af2719c9029943b539ff0f1f5645962a6ac46c75d2037fa0c7cd46deadcdfc66e1ddcaada3a376acbf +d = 007a9cb5ce27c763646de414ca2a4dcdb774d69ed2bde7a817baddbc9de +Qx = 086d4ac1e3d54f7c154c5370f5c9a2d22cbe8f794df68974706bdc9172c +Qy = 17770a2ccac923423137731a14e97f6ca65a8cb3642eceb4e70c78ee929 +k = 0538b86e0a899281ab56d28f40bf3b7435f9a57e334a3269233766049a6 +R = 007ceaac3aa0e260c371843104f5cb91a057741b38889ee796e69f920e9 +S = 035eedd44b036b843deadb8e8df9d96b16e719ba350a634553457ae71a1 + +Msg = 4b0a31b746763beee77cecd318b90acf50fac4172cf4bfb354e5a440f651cb89d7a515e09ab19e9850803ab9167c2aee3b395a5da10dc9aff799d73756dfb0a9961d93bc32f15a96bf13962a03d5bd42ddc8b5928def7fc48fb063f42866fc5f96cf88fe0eb125b7c01906ad6a7fdade28ccb0a421ceff50ae03a974671b2c27 +d = 0c03fa9e38dc1c697f70bc6381f2bacaf860bb5632fc837f728da959ac9 +Qx = 195f386c7efe108fd1d580f0a77031e180e45a23911ba983217207a904b +Qy = 1a6837095a64f71ec53ab1c0d9a3a39d69a514065d83f1af26870e41741 +k = 0d4f48085b367787a614b57c06ee8018b2e95e989c2e8cf355e71db1091 +R = 0391710f815babf07b6287b7aab8b9d2ce04bee2a144f4d4a46fd17cf77 +S = 0ef29cbd771b8a6f414ecb73b7937ffe0a108593ffc6899f28d4030a9eb + +Msg = 3011d42792b21c0f1719faf6f744d576f72c5fdfd22b1a520d0e8d47e8c2b06823d853b13c9fa039fa30a6f2e3e27bb2100c6a35f55703806bbf0f79b09d0f629f8042ec63fa04062f15f2edb92b19237980005566f02bb12a40b4ec66e4ba6c599d928b33f72d7437c0e399a8e6a9068d1fef24917fc4f9ab5464ea6684dde9 +d = 087dba00e3fe4802e01718017510094924496bd2785d4ac1a352c530473 +Qx = 1198518db2d1255aef955b9b80471aba60cf6d8fd1feae6d8e048ab1403 +Qy = 1833332a116214e4d9fb37c8e0ab7552b87348434a67a0c41f73972dc9c +k = 0378578acdfa572b1de4e032158b28bcf00ab7dbaf07b0e772c39603216 +R = 0be2cb45d527a7685139290f1098de975b69957fff2c5c29059ce417950 +S = 06abf4afdcd2990121723b94ab8145d01cc4917cd70416620ef100c67bd + +[B-233,SHA-384] + +Msg = 05a5d3a3b79f4e51b722e513620c88092a9bb02408f5f52a32e782fd4923f4fd3094fc5536caf4b645d830260eba91b5173f3833dd65600fb9e246aec968b1f6ebdfddb4059fb2de7e636ed60bb7affdb74aefd158e54485d5f26be373cf944c6570daf8fd7e4b77fad57300667d6decf5c65db99ab8763bb4ecbb09fdf47e3a +d = 05a387e7affc54a8fbb9157b5ebd400c98e2d7bd5c3e095538987d4f8d9 +Qx = 1a97224cafc063967b25cd1a43283daa5411f3eabe9386b8b14c9768c29 +Qy = 02cefaec5141bcb084cbc9aebf28fc59780897ad1424fd439eb43eb911e +k = 0fb7ec3804654b9c3675f7b3c427f6d01f83872e96de2742e59c93151fd +R = 0808d829d78e65eea47122c92f8c2cbf5a8d6717a057ef1659fb6f8cd3c +S = 0ef338e09dac0b12fa6109d15924efb694a0b672afb4ef05f4e6f2f7b88 + +Msg = 247a101c8196eb93a440280650ad463795690bc620e46e8118db6900a71eb493d03fbcf2f73a79bb47aa8e2d8c87ef70e4cfae36fae5c45fe247d8cd0f7d0718dad106526945014b4f3bec324897d8e1fa2f457b8a68e61873b7fa0350fde3b87b7b001c13953c2050a24f71fb77eb455053e49200ebcbba7299485c0f1a40db +d = 0adae709a930d6f5a5c0e3d8ef4aab004d741d23f0ffb8287f7059890c0 +Qx = 1541eaf3dca942957c48d693d2eaf2a456646d2fb3eb8df1779b917a9b0 +Qy = 09737958276dc31852e57063119f1d2d061616b6a2fd35b4a1a3f046954 +k = 0390d5ed395f8ee3478c2765525c235587dbf5bb2316df3a1e8c664185b +R = 0ebcc4f84bf2deb9b3d669158998fc96d7516580675e24348ca58d70d2c +S = 0b99462b85e6ce6b46e5aca221250ac9de7ccf3e63b38919b61700be866 + +Msg = a16678c71976a3ce3362ca379b3272b92e8ca7085b43752473db34e4d6b61eeed3875f49f3328366fc9d0644824e0104817de458e4c1036636b18b83dbaf063f2f99818959224906571c7b28873d9c702360888df151e9ad1a7003e6130033203acf8a69889be6ebd90816f2abf0764f10be68653b1e56766ecc3150bef8b042 +d = 035d391411e6d679751092c4ea5a079c591e77ebdcb57c1d9006ae70d90 +Qx = 01298e6f1612f90dbd2eedadfa8ecce22dff1da2d1cf057c41bd37d4b06 +Qy = 073136a1caf7dae2aaaac571a900135a51ef031643e9d5f01934333b864 +k = 09e343003670f61db85aedc0249db21953d232bc45488c3d6ceaa6072bb +R = 04ac435e88f8e487b9b217e7d68fbba9bdea0b9685769878818f25e661c +S = 074d8f4dd58c922d7e79f30950bd54c10c1cc52ae3b8d00b675c8e501a4 + +Msg = bc2f080a7f0b69a6b142b8f3fb481a43bd71d07418df4f3b802568073c1a8d35729ad197f34a4e941a6dd511c63f201d1f6c34a1b66545bd5f43508c10bda1d6ef60ee5bdd25dde975e50c61f76cd36d50ee3bd8dfa2dff59524db9ef12f1e28d109b552cb42f021963f559c843476b5c889fc567b7840297c5a480e18c221dc +d = 084e79093f1947d6ab9cf399782436e36ef87c59a4c090930c9a74ddb10 +Qx = 08e756774def210e2d6f76d6e4b0b43d86adca0880f017abfc911bafb5a +Qy = 147e6a20c1aad897829339630c5edd327ef9a7e40795630504318cb71d6 +k = 0ce780ea99a344d67de7921feba6ae062817101068266d5d1a140d2b49e +R = 0fb2474b854b8e5d6920ed90e69b5b386a1b26a947b1cf28a13f7c5d3ac +S = 072722017a67ea6754873f833fc51318d41d6ef598d3ec2d3e0eb5bf41d + +Msg = ea71cede8b63ddc5648eb244184bae265cd65d50f77a9e25ff93f02b132487c08732544cb88936d4fff7c0fedb39685822dd1c9be1158f647c605c9bb5f6a1ae34722fa08882c14b36b6c93cab33c9a269c7c10f755b6453ed045ea3e56f29e95a9404ba189a0b48848120392b4dcac43148b706c3d9e4c03db410cbe5dca3da +d = 079b6be015b8006f86fd81c2792bec6b42c08bee2d295cf9dc214c326ab +Qx = 0e24338d5e33ad12d41eb623ad0905f64d5b75835fec4e693eebf9bba10 +Qy = 101b4297b5b62fcca7c61637a2a57365e911d3bc7eb0fc7adb0a9dc7bad +k = 0f06b001e5f874d16632e3c8d49f13d70f48ed4eecaff9d3b741f9d02e6 +R = 0de16d8fd7bb1783a2cc4b9ac1563eff3f87e4e6d75e6a32a4aed1ecb02 +S = 040bdb1197ee8ee51e4ecccb8d42dd985913809c131aa9224049425a052 + +Msg = 319b41d16e18059a1324c37161c937e882192cd949c420ce9c59208a0ac208ebb06f894a7fd78df2a3c5f23f25dee6595d3dacb25a699f115dd482ccd36fc54ba29dda279335424c86b07a1b1fa76a5411bcecaf4d37065b229cdce0bac75b666c6626ec37a716e9841be93c907f87453ad91d36846561f284421a89013b88c3 +d = 0ca9d751a060fde64336cdc88122819f4b3cd1b4e7df42d495197787894 +Qx = 09549785f4f9c71f20133f5a1d409b244df55445beec404cf8cd4d2cadb +Qy = 1b246647d7570f052840d4cc01182d1dc3bf357b25e5966434e1c3c2a30 +k = 09e99fe741cb23f7eb039f5df8414d069b5c2e3c144dcd6cbc6da56ef43 +R = 0cf00f519c18e7a0fcc84c1e338158399f16929ad89842ba97a4afb5bf2 +S = 05854ee1a6aa5a6a74bec0b4696e80aa275210183c86f45dde7002d7ae3 + +Msg = aebeee215e7b3d4c3b82db243a47506ffbf2263f6fe9de5b69286e8649d9218367c36ba95f55e48eebcbc99de3e652b0fecc4099714ee147d71b393de14a13e5044b1251e40c6791f533b310df9e70a746f4c68c604b41752eca9ce5ce67cdc574a742c694ada8f20b34d0eb467dce5566023f8533abfa9688d782646420c77b +d = 01dde4b2d49338a10c8ebf475b3697e8480227b39bc04253a0055839e9e +Qx = 0504bd3a97baf9852d6d46ef3db78ee7555db752120d020cd056b1b4e50 +Qy = 18dd305f6a15e91fa46d2a6d30f2ec8fbe2baec491e26d9a2ac81155c85 +k = 03b78d2772b8ce01a00ffe2e6be2f9e2ca2c89ea3b29bec6d6cf31afe33 +R = 0c0c51fba155f98900eaa2d2935acd615e917f9dd979dc8d92f1d6e00c9 +S = 08c8354f95e24ed13d8ff3755e1122dbb4117c76b21b3bdc7f4dd856f8d + +Msg = 8d353a6b6f35590baef59b638914d3e934d0145b045d221d846517ceddc8ff5e3d28826d3459f8ce1260f705e80923f39abc73d5949aa7aa8ad1734be0e992bff0c9a8f4cc9bdfa430d4cf52e29d3737b0cd3231b72b16e15e1a9040b832e4a920b4a1d94c4964ac6c8abb75bbbdb10825f882ae44c534c7154c446421a04d87 +d = 02c8bea2803fd746c874fa110a716538c179c82712f38d33d0f6d037e7a +Qx = 0a034560353561cde19db89dbcad5c9dcb74e239efc604e86ff38a0577e +Qy = 185e0b02c48be2e90c916a7c8ef2b41a57ea8d4f21d8cd3a0878a03875b +k = 02e39f851c57643bd799c4f3b2fcc5eec8ff7f9e9e279efa647f969cc6a +R = 09b2ad7efc7ed60d9cd3dedbd4159b1e05f05ce5ec2d2cdf7a0e0657482 +S = 03fcbd4ace6a140c8bfebe36ff30848966bb0d3eec323cc8ddda55faf00 + +Msg = 847f134b90f10ba3636ec24f36a94111f26d58428fda5bba4501e58c7bb55809f52320cbe9e0df55af1e40bbac9f3eaa26a55d78b60621d4356d090d98363662f406367601eaa9eb9568b1a1b319730bad7bf6a7ddf1b45eb6922faf8d065c540b671c50df758ebf8c4aca6f01878e5e0012dd038c58833e2b13ebdb9a9f3fc3 +d = 0b9119b3b4b30cbfb98ddf0a4f6953417e515fcf0e5a94e83ebc1d1d14d +Qx = 1be65d340f7e99067bbbf961c2b357e1fd47a74393cae5f93a40c5dc280 +Qy = 0c04cd8ca3ee253b99e44ee6bc0e52d2f016b16f59c738b9f2bd8c1b9d8 +k = 02c851ba0123ff0543808931ab3857b5c15d7c10c343f232913f6e0c92e +R = 0ba2b33550878e223cacb80e45e382dae84e76bca5a2ef8371b84d08572 +S = 08c370f82506e97cc15837f59e9779448decbd87bde0a463bc14b18edca + +Msg = 99d23950493bdd931915e9f9b65e4cd1329866c0071a19d4f7d6fd190689275b7b10fc07503dd1c27a4da274dbeb3aa5cb0e71e9b7b03fc2697729b7be913756e6760098951d7015df181cf14b1e0b954e6260276af553e3e59907794b863e941950718ef154669c5c262946ba120892e0239e05910c2194f712db46e37e53b7 +d = 0f4ab2a573f3771d1e4222e251faf14e06cefed544e804c299c9a8395f5 +Qx = 0b1f973d6495d277e24320622b9b99fccef8eb5c1c6952f35b82d4479ef +Qy = 161dceea4d3c9caa4f640f51b37fcbd5b8932642a94c8e7aaed5db17fdd +k = 034ff28a5ed6958514c603b3af5a991e2e9b4cc2c0a7aa73ab2d70bd05d +R = 01abe4a7b27395a37089f91eab27ccf29001ced1bb3348a6f919d466477 +S = 057449e55d3f2a4004d647ad6e8fbbd516adbb4de40b1a872ad8ecf67e2 + +Msg = 7bef2487bc2bbbcbcc1570bbd4ed437c0dbcbbf63f666a3355aec49ea6ef593da25aefe9ae0d94db50692475425dee3c88cdea975794ac69142c25732f3541457d68d9101c8be069f2b515aadadea2019dc7abefa6c12cb3f76d9f4b5e46546f77eaf636aa8f2329130922111151a4df913d18b7cf9d0308f01ad84d878adde7 +d = 0f4649cf30d4a5269296a45977de2652cb06d3ca2aff4475bb24517b927 +Qx = 100ddcc8e09ba2122a6535c6a0a2dae83abf9e17687b5f6aae7ec6a2df1 +Qy = 048f5587360ee251925b7ed02de82307ba219a707705623727f98346a26 +k = 0a38b2bd0e9a5044db19d4312ec88d19ce1a9bf0eede8c357f898b0bc67 +R = 0d0ebabc8761ea215808a2c3035b14b614f64be0c2741b3d7789a8659ff +S = 0f9e742bdca44c11bcab196f910c0d887e90f250817ee7027f6df8207a0 + +Msg = 87c717eef6dd3c7434b2c91de05723783bef603d170f654b49a04b067b077c405d2d757ce780101b930196ca4261efcfbd3fc1ebb762cc0eecf101072988aca508c41581936526d3f337053000dcf77b16172492c5d654c6612bbd2523a6ad5966d7091697a29ce882fe331f79a7eb59e5a3fe536263083cc59b8133bfd33c1d +d = 0cca24ad914c24c011f41f80d27ea41caf41fcc8dc9dc6dff5248b2b474 +Qx = 0175b73db13324a678b8afe086944a7ad257cd33fe9538c59b9177d1064 +Qy = 16a98ac9e0ff59de1ad94b50f8c709ccf4342f983c7530be64c3f1548fc +k = 029c83def3a5c386b0bc3cf2663b8f4b02f26c6e3e14fcb17e9460087f3 +R = 061df783609ceb355aba3b1753d38f42434bd75c8354029966e7a788be0 +S = 01e8a093f53a1d73d5a994b97f2b2f210125ecd3dcdf77c68ea3199856c + +Msg = 9bf48c2aebf473b3a4a928b3b6a4d2fb7e9193c9e60bc2067f9f03083a8cc7b892bdbf05601118bcc34dd283e7be996bf19b0bd36727eb9d65276b6517bf0c77ae0a9091e7a9e46182a2586eb22324939801034e5ba94ba30d1bde7d8fed51eb71036fab6224f8ff30a008422efcff7ea239ff23b9f462777e62b41b396c5dc5 +d = 0f5e12d536ef327e3b0ba65ac5fc3f7f4880f5968f3340eb8868c1d47da +Qx = 0b2910f5de9475486b3975ce91c02187e8803e68586f3a1df14df67648e +Qy = 0f28af5363ed851c42daaa810afa1fd0d2e001da7764671fd44fb6737c5 +k = 02a018753965bdfda98512c7f9da3e9235a4a77aab9804437b652182347 +R = 0b6fd02b2d84b7baf1a5eb592cde667ed6d4c2c821ca336027a72d9abdf +S = 02253faa5935885945121a374010b2257123cd5db4c54a2aa0e08c8197b + +Msg = 716d25519ae8f3717da269902be4a7566d6f62b68cd0faae94bce98c8a4ac6f66215ebac5407d6f64adf9d53f79f02e50921b6f0e8c805926a839443d30d9294eaa802faa7c5471d81fd1db148cdc621a8dd0c096e06fb0b71943337d5325e1bca77062684873fe904ed9012474ceae5b138e079f941a665a995026d13d7eed9 +d = 08c30d93536b8cb132277645021775d86c2ba8f199816c7539d560ac6de +Qx = 0d69332763cf533d48e56065e1b5255790f8c0eb23471fac9b945e62195 +Qy = 0292df8c77d9a6803f60bf0722ed57ae2aa3bc816403b000fe2940e02dd +k = 050967928d6089da5b16c88b7927de210325c8d8f5e727fa1ba3bd95b5e +R = 02434697cb5c2ad95721943154bc81e2ae16332fa6629788f505bbc1522 +S = 09a5a6792b1b9c2e200ace5a3d50c04f69084dd9222c021ef5fce14d4b6 + +Msg = 01e76755007b2ee5ac9e1d4c8adabad6d0f9c1c08ac6e2622b7c1ead89bd3ad0921b9525b49a780a262fe8fc0904a80391717ad7cac9607de55f7c744af8a132ec45ce79723f4a4a8c8b9ef658b360bd3890df164c9f1cd74eafb74feea251a34514ff2a57ae7a6d4bec2067cbf6ee4fdaabf13721bf9ae178b9034ac5e9665b +d = 0fa3f15a506ccf7b50bbbad0a54d3223f5a95eb54f0d1f4e5d0cc21469b +Qx = 0e797527d57fb3a18c71d1e82e7935e37e719439952d4b972f0c1e0c835 +Qy = 0a345bef4c5015e97a148b8991bed4b7ef48947b12f316b5621e94d49d5 +k = 075afdc12d4d50a7495f5a7d309696dca23e9356a0cab11c3b3d7b8c54d +R = 0960ef460000fe8c761038bab7e29d665100494d0874b6556862c2808aa +S = 08d3c004426dde6c18b1c9ae00a44ac947e36755d8c40eecf47bfa963fe + +[B-233,SHA-512] + +Msg = e95abeeb2c51a8cb75ab74253dbe130b5560cd52e2a63d501d26e1458aa568aca6694be91eee5fdfcf582c47c1c727084ee2b2c810281cf9b095808bf7e7c668eff00a6e48b06df3fe6a445e092c24d5687d7d89acc8063275caac186c441bc697b2f67aa71b03294e1adeb7e557c296dd91304ba0587cda3c984619f1eb4f2b +d = 06400a4830889115aa88b860b3fb65905b01fd126c4aec2785518c2543a +Qx = 1a2051662c1681bbbf6bccbd33c44c7c7fc80b81a1bce14caa36a73f7a8 +Qy = 11583d3ba8f22080488471d8103f868100a97af94809b58bff1435b16a9 +k = 0ceac6e5d10c55888b9ecab8d3f6ada7f4d0bde2f109699157d194efa42 +R = 0c148f2337008ccc3e61501dc5df3ec95d3596d97eae96a7ab085a915d8 +S = 036d1debebaaef50243005e25c791b9674cd6fa986dc3d32e089fbfb2ec + +Msg = bb8d8515365d240b2071daef0d80558fd3d0e059be9f6abb7b7a0a5f47e2ddca7d1b3b5101d5c583143258520ce8db0a87f877a395615c9bf879ef46f2f20f68bbc9706f82781fad69019396b27f292cdc70fff1772e90205a2225f80889f9daece1d03914d8776ac5bad24d8fb190ba10a2ca17768b918c2e079d83734eb372 +d = 0c7b73c324250f14fac0edc941f79bdbc6933ee8f64bf94b847bee5eef6 +Qx = 1af7266ee56bf0518f2875d4f4d9ec508a01769d9c1fd0a885a48bbd80c +Qy = 084167ada99502475478465315bf8163870a9ec1b43f15d68f0304ab03c +k = 03badc9b8098c3b4d7e943a2365093028b579519031a8643b50c0f81eec +R = 07ad4fc96c21963395f56eb63e1b0b4d2c93d827626e7bd4448697ded97 +S = 0e7504e6a9f662472e3e6f18a40f7645922fad2ef7313d600a5a6ee314d + +Msg = cd8b2403435fac9caeffa21b55eaba52d7efee0f89df7142340cdffeb89556303ca01a800429397e2ff6c746743b6bc60a87133274282d4cac02e4ca90ad95d80c93b84163b96296f67d40b2a1124b2b6534ab6b60fdee312fbcdf468d0e84eb85fce4ff360136bb31ced3998d29cfaa3ae685e638ee272058f123c4f35f8b6b +d = 03db7f28e161abf52ab0adc8c4c8544fc989af081303b8688f22b7b2eb7 +Qx = 0ab94312e53832265b929f3d529bec33dbcc5c17b969e0afbe2d559ec39 +Qy = 1d53b2c1be229e2c224e6e9fcb8bb0f044f3f9f5677c60bc9454f36eb06 +k = 034a8f980896284fe6d28b0b49703f1384d799e3f11a04b1e62da12965c +R = 0e374fb355f30d7e427bc5db99ed76a914d6e286099c72f28c07302c741 +S = 08d5ffd41f8a1fd3de6c433635fddcfc2b21809d91496ac17571afbb856 + +Msg = 4bb08eeb202564efb5bda40777d71f1bcc4c7c10b611e803e5c570876f3e319e9e2bc2d32031c56a32fc0d1fcf620d4e4377d881e9e1695bcdb78acba370b849115b86c1c4b83edfa03299da8e7fd14c7cadb81a8e4911c8e427e32c8c9b67e317575331967cf58085cff0c0d48ee0b8e7dc0b49687bb1c70c703a5dad08ec81 +d = 07e9d2fdd017d6da6029e88f78927d9ac9437f542db1f1fa99e32bfcf1a +Qx = 18429bf08752aa470a8f0801170a7ab96adfb168ee8212d76ab0b994e46 +Qy = 072a5071ce308d7daefb3e8f4da4681842ffe0f35dd8b071f0775c83f82 +k = 0a0f330e011d34714875500b70c881ff6b1c9e96da930eef75ec78ac120 +R = 0439bcdb86d40e8f64db5dbead95d85d6a771d811480c5765ffcbf75422 +S = 06c01f64e2812d18b0946ea4e6599e8cfca0a2b606c3c35c803ef2cfed3 + +Msg = 0bce683d835fe64e6484328aa13e18b0956f6887b5e4442fce36ff09aed015889794e79da8aa60b4be565c78685674c51e1e7ac60db6a763c777198a56e382a03aff8b40862f961ae23e8b8683b76a5577769422418972ab0049119382edde9e752b42e8b93f403c1ef8665d7ce8530ce4ed9ebf6d397827cba6b7645e177231 +d = 0c94052760fc74c2b405ee4dd5dd2a7d38ebc16df9cc32df706075450b5 +Qx = 1d2a5ee02d97f82ea9c8833b825cc57b0cb51d3f2a2cfa7577eba676eca +Qy = 149c68d98d0e9cb242962326a26164f3e3cb6d81b51f281474b0f8d333b +k = 0fdd3ade90da682676d40008cebeadb9b2378d8a821e9e9428018cdc768 +R = 0f6d244daea95002daff2ff6513da694eee58f8b6c2d47ad121be87559a +S = 0b04788fbb5655a053d0fb7a38c39e1fef68ff17860442ec8b8ad049842 + +Msg = a6defc770426daad4dafba3bbd2a69881334f7c31269b297e440926db54cdad3fd7ad200f5ada2b72ad221ad99a06ecac9c2563a8deed89f0d0896991d1a652f6fa282affefbdb1c1985652300d1792725071631d75a182b683a48448063c7d2563ec3d430e0fd3acea33a35cd38ec0b5b07af96af71d0bfcd879d9864ededf3 +d = 04076b93487c2da8aeaeb4725fb53b7b41b465315335c18c6ca041175b4 +Qx = 158755fd290910498f6c8eed83bcebcd1fcafef4878c860da118efa250c +Qy = 1781fdae501c2c147eca2c6c809d9428fff2f853b57c7d6add70fcfaa0e +k = 07debe933553ba3420aa06e1bc52a1653f8a19b59c0bc9c47212389442e +R = 09e09c6d96e33c845535468ec7f5b79cf30123538011d0b5ffd935d168f +S = 0963bbae921317666f5852759e9ebf05cd026a5d9f026942835ff0daeb2 + +Msg = 7803cdf4758c199962b62943f475c6c31356f5d9b997a12e21146a2399cd0dd3b97a860b2ce639e2801571599136d4a8cdbfb12fd1a5ce22374991e090533ff42823a2c58d2076b772814eea7fd7a1fde68263ef912681c72c7aa3e5a7cc44ee8c65e72228b7631e600121ea35bfbbc783b6ae3c0c8f80198ada218be533760b +d = 076ddd73ee4fc1f5e6766e229cc7236cdfce312417ea291f7c3328d5ab1 +Qx = 15185e029c0d4eb5102e0fe900ef3c921acc744feb44570a288015d0908 +Qy = 0ed56bf93394a434cd84b521040d40452bb39755da5e273a05e8c0ba792 +k = 084e9e4a9c84a602c18bbb6b183d06969c8b8538e2ff901f1c2794d5eb5 +R = 0fde8e9b1959477ddb3423661df1e7182e4b583849d6d17fafd7dc5406c +S = 01a12bd30e9c8b74912c670c0845ff5ecc77f29797160bd4992efa61f4c + +Msg = e789461e1dad0b6e21abeb6ae2e96385549d1bae39415188c8f833233da6a3328144c97ddb36e0ff4d9e19d84f869e79e609c51b32de59892fb0446dd28cc164a3e53534c950d26f87fb74e682db2038cde778bde06c3ee2eca2a077d8fcc2b0332e352e0e7e6487444a8ad60e78ff213b16fda9faf374dc6d27b7a3c4c6d196 +d = 07e1f8988ad804aae7d09a99be19384cc599e7652c02c391542be74b17b +Qx = 1fa4751e507740a7345e06a8964022fc6caa901cf0c2077a2c0fb86be8a +Qy = 0683c593a0bcd123d958deb6b430d49d5a2386d44706f4149dc526ad896 +k = 01d288de55b90dbe72cd8f1f86a3ffbc2902f4b5f0cf4e641d32aec6f20 +R = 0048d16d87dbf4fb8e994dd874c10d5d16846b9ce2cbd43d09df62ca970 +S = 0e2ee47f422095d629c188df97e2839fc6239b9e2dc26baf8161b037236 + +Msg = 9b58c145d1b6c887f2b25fb672cd49c3a1117224be697c15182d4048be92968a6500f8bcf747fcf33145c13a8d72e891a6e0c4c7310c2b62f3181bf586fe32f1ecf4feee8c2c8bf6c2bfdf9d5f88981ce080095c93e49a772d8e7b59f9cffccec3ca2f212ef4c6748f64e224f4f098334d83108bf6f8c7b43c5eb549f1526897 +d = 09b2292b0244c2aabe8b43d95039984d504ebe05eaff318760e4dee739f +Qx = 12618d89f50b7f83ac470705dbe9ed81beb03929732a3f2aa7a636eaf59 +Qy = 15f0f70c808e053b112a8c32ee422aac2b926c5b6a279a787fddf819990 +k = 0fb38174a83ceb9236fec8ea39be2b3c77c3dd2cf42d140e27838202d08 +R = 084941856a387a56022727f81a939d77d12b01dab603ea0cdef6d9cd6c0 +S = 0bb9fc30595f94d664a590ed4f163e4526809819baf96bbee629ff86bd9 + +Msg = 52310a901fe9681a23dd6e02f12974d57f2c4f653322d9a0ff8b338cc6c2bd9f4765c90c6b3c9fb17df3f492e67d204e39d81a8fdeb92c852a1dcc6151ed6c63049037235c6751c9a902748163a567b714725b4d3995e0edbde03215c645b1a1da3147f7406245432800c50f823a1f991c863427ff4c68e4e16d1b106ee40dd9 +d = 07ca463b50fdd92d9163f1c2bdfce2ee45ba1437b79162e3e959b814cab +Qx = 08eeeb146216c73ccff0096e1100008f8b1f3f0c5754c0abc4ed39f7f63 +Qy = 18c9228b11888edd66b2e661284f583a0e8d3c3e922932cd9fc1568f959 +k = 0025291ec0dc2b0c709c5e69695980564552545c2497636b814aa049ccd +R = 098dc98457ce6e69f77123d5d2460ff569786dd60fe07e847ed5bc14da9 +S = 0cd320afad2a4247fea5b74d78dc3df8967ab3159b4c8b191814d368dc2 + +Msg = ff419c011601cfaf833067cf28dbe6e935ebeddf8b5111a97f6eebf3bb28376334f329cd877a134b074790a073db766efe018fce666a34650cbac285ae856fb6b3b8b96877282bc11cd9f9c8e510ed1f69bc2725a44a1d2b35de1edfd8bc9d20c7525ab0bbc27662a7cfc1bbd1e0f4fce5b88411521e3893e027cc8c73acdabd +d = 0c3844750f63fe0c2e930bc38fe88522f4e72a2fd0db9778ade20e939b3 +Qx = 075acb00b5999f8b272a15a2cbdf8cb630dc3eeb1e78e58f58e467396f2 +Qy = 16711aca424ca335878d273eca75d804d3f009a1f3628568530ef265eaa +k = 0a63e7a20d100f14b8b709f0a6c383166c2151a36dc471f061b0f20dac6 +R = 04063be9d8e4f0f9afe0c79374c69b36910b5d2b1010e0f4db2e4cd23da +S = 06a6eb90659aa79e4a2360ea9ffb99a415175dac6c3efef104bef6fd57e + +Msg = 05a89c4824c5de66587875011e704bc6e06e991ba8f3aed331cfffe55aa266a08c729f77b8d082dca4d286b2d451ea838d726cc2cf298fddf2d7376714c5e37b64506f353917caec525a1209391449c078c5197a371feade74f8fc8a1a1d67576edfda13c14ad324342fc0b09277941dc072ec0d39434ff1cb91fc59478fcde7 +d = 0a3bea235dea86506be4476eb7999dcb8e584a34238c4a894ad6823b93f +Qx = 14093a072c21c44d1c4beddc5c8dd9a2845db0935bbb4e1c4edb0aee032 +Qy = 13286ed584deb744c9c35d7ae7eb9cad1c7ba2b670642de0399b230716d +k = 078eda19f0cced2f84c1a7b354e5a79bec035b8bb279473f32d60f5d17f +R = 0964e817f0cdc251eede4157a9bd830c476627c3f27d2931b4f593b0178 +S = 08dbf34e597ae06ad92b13900a4944e54a5bf0f16f586baad157da6dc96 + +Msg = 13e6b5241365d9d0ef9e8b05cabb3248afd221ec02eab92284b98bda3d9272184bfe5251d35705defba5085381430e99b33a3ab77d7870e5102757d065862372df2434a25556b76e54ebc39d4e6c3aba5cd6acf0c335756f7d9385c1068d4cfa37526a9a58c0ccc7f87a8189176c5d4f201499236058ec061357dcdb5acdba40 +d = 09a367cd1cffd8dfcca179e167ea437ee48e9b6f42559dda9224701d3f6 +Qx = 1052d751901f6f8e61858d3b15eb59dedd21e4e997531ef65622d575029 +Qy = 112737be67ec621509d73cd613d7b448035397fa66eb881f90a6d531ea4 +k = 0d8dd8f1cab623ba6a4e840962fb31de97a4d14aa6dd34dd21154105030 +R = 0a8276d0f069f34c60b26a55d47df69e4c9ae2981afc59e14b5bfcaa498 +S = 09351c4b3a06b839eb2e9f450d9c3d15efa45509886ea3f2610ee1dd156 + +Msg = 139a1a5090b97afb8fecfff8745efacf7dcf91a4393a7b629564e598d58d5be39c05c5830d4c8ca85d29e9e2c31ad0447864e867d0ef4788ac734f8d871daebceda98d449308c2afbe97724c3af8a468f1925065f39e52ba4b7d15728a744b1252a20476dcfff7bcb82aa72c209e72abb3c24419bc26191390ffed340c1b9c6f +d = 046f4ad2522e78b9b35297d28f361fb0ce82306322aedc119251d8241be +Qx = 0b976c53a966e0834d5f6bc3af10a5f12cb6d16cb2303a3c6cee7d35f22 +Qy = 1a1097cb56662265f4f2f52df375d70af086264752477c34c6af522f1ec +k = 06a0d21e5aadcb0c9e3f9fedd2d896b0236dc90e33778fb114e970122bc +R = 068063fe0a31b7e7925cf8959c3486985d98f58224d5f67cd0218af192b +S = 0f11a22ced98173040062ff9e69d1b2a1b5a939eda0a6944e96fc62fa4a + +Msg = 3315e5cda5f252e3291b61e493ab919c20a8af1286d9660cfa2f5ca38b6defe19ebecf820787fe692d04eae8a5f5d37abfb593309569cedf45efd0cecef6951b718924c8380ba52e8ab8c9bfb2261ed5f01cc5a5f9fc5fcdd269a0f122c597afdd9a836cf8f96838c3e8962c1788c3ce4128719b3ef4fc88569643dcad6da16f +d = 0ac82137e9c7a5ecfb8b1a7df9ab50732934566a392a6c8915ee8ca8144 +Qx = 00f7f835f8223fa6c49eaf6650e33dc9d09e1d2bb098925d908606570b2 +Qy = 06e659ce8623767e8214b076d7588746bfdcbbed59b75bb19477366cc78 +k = 080655784e3e31c6a498a63d4d84f7e5a353a66641ca17d4e223441bb1d +R = 07faf31d1d31ef4edac1c63072350536df84c417e0ef808c6be39617e74 +S = 089023aeb53ddd3e475d11c53479863739e62dd64348646581012784689 + + +[B-283,SHA-224] + +Msg = 067f27bbcecbad85277fa3629da11a24b2f19ba1e65a69d827fad430346c9d102e1b4452d04147c8133acc1e268490cd342a54065a1bd6470aabbad42fbddc54a9a76c68aceba397cb350327c5e6f5a6df0b5b5560f04700d536b384dd4b412e74fd1b8f782611e9426bf8ca77b2448d9a9f415bcfee30dda1ccb49737994f2d +d = 299ff06e019b5f78a1aec39706b22213abb601bd62b9979bf9bc89fb702e724e3ada994 +Qx = 405030ce5c073702cffd2d273a3799a91ef916fcd35dfadcdcd7111c2315eba8ca4c5e3 +Qy = 75988c6602a132fa0541c5fda62617c65cfa17062a1c72b17c975199ca05ab72e5fe9c6 +k = 2af633ac1aee8993fc951712866d629b43ed4d568afa70287f971e8320fe17b69b34b5d +R = 165ce308157f6ed7b5de4e2ffcaf5f7eff6cc2264f9234c61950ad7ac9e9d53b32f5b40 +S = 06e30c3406781f63d0fc5596331d476da0c038904a0aa181208052dc2ffbdb298568565 + +Msg = 44adcb7e2462247b44c59608cbe228ada574ecb9f6f38baf30e42b589fb9b157bb0560e5a2aa5523b71cc0d7f583b502bec45d9b8352f29ee1842f42a17a5b16136feaa2efa4a0ae306402940ecd6b71e57d1467c98e7960de2a97f88b43487e4f4016af1292381d70c18c7e6eed99a14cdeb5b3caf73688658e4c5b54c81e08 +d = 09c2804f8cab768248fb3fff8a055b3f4585c00de5c1615a19f9425b9432ea09afba8f2 +Qx = 2570ff62b03a5124f08f752aa71ddc57944cd94197fd286d5a2a107b116d7b8ff1b0421 +Qy = 37714d9abe9aa0a9668fce89a3fcd5cf2e4548102a181a777c9b3f1008ac6e8d3a31a2f +k = 0dab5ef658ae3e2ce2bc5c88a8b8022a0ca5eb8524815ffae414327e3afaea5fcb8a7cf +R = 2d99f82d92c9554722bb793988af0fd0bea776c5608f5939db7c8634eeb24ffd381dbef +S = 27ceb1d01ec9a3ec0e74d79e08024359e117488020de6458fbbcad28b173918fc7d129c + +Msg = cffee6252c7eb6d91d8fe100a1e62f0ad9f862d78ca2b747a6c17b8c9ea8980dc239b3b673310e6e7483582399163e39d889abc1a613fe77849ebc09b4f7f4fe0688b8a9869ae918a88294c7ee199be50ee9460db14725ae70b449d0cb48f30e7d817ec02c0cd586119341dba0b74f0279330807cfccc99c8c340b72c1764a45 +d = 2e625a6bc6d0ce7c06231de827068bdb0abc8ffb57c82b35ee3a0f873b9473905974d34 +Qx = 0458bf39974812a4e0964c31f40083300454104c0d65f22c5688bfff3c256b7ea958900 +Qy = 738dd33e32b9af93ade2dddf4147187a9270543afdfd66a0f2a53d6d3d815ef59795f60 +k = 0a9388815c528fdadcc5d3b125c7a38db57fa8c163ba795ee00e8e307bf760619e705c9 +R = 2481571400ecf9dd31dbd9c905fa1006cd5bc7afae759da3312ead8d5a7dd0c25a37ab9 +S = 13952fa427d348b6347b9e93d4cb2c4cae3429dbea6aafd1e58d5a34805098722b3b8da + +Msg = d058ab5dc07228253707ef224897ea0fcd09c3d5cc91fdce9e03c1c59c53fb4596be2ed929c7455e67ac7f4891aed3eb06ad88f2c4aaaabff045b959f900d1019d706b60526375851bb891494e99995928e4cd51c9616aa651ec77bd7e398916bb9ed3156391bf7fb1e29181e2b011dae2edaf803607def2ac6b194929a57f45 +d = 376ac24e1b86f8a55c052d92a0bdc6472fa03acdcdbccbf7c321ec0ccd97aa0a66b4181 +Qx = 7247c755b23bddf944e29348da82495b4f61d02a482c6111d8698cc77e8dda4c341f20b +Qy = 0f8c199138e1f4f8344facd90ac62d55f3c9a15ba7a672ce40241aa26419af790cf7dd6 +k = 25d07c7afc5a335c2bd7863c1965a48c12f2687b2a365a7c2700b008ee8a0e8e35a68a1 +R = 23fc2837a879b79e470305088acf596eb0159edc2008478cc4c3841a1bd66fab34bbb5e +S = 0a909b83bf77e74511063366ea1d1308a8a544864783459a60fb2669785ab1af8f4cb06 + +Msg = c86f2cc7ab5df5cf1a236fd83792769474cef464032800ffe98a44cf29dbfb6f24088160eb31a11a382ff2a49f3e05e983462f5304272f96c0a002b69af3d233aebe867ee63fa46666760a6889d022c18645b491f8d71b6a3b6b4ef058e280cf625198715b64b025bf0449445d3dd7e1f27153926e617bd2c96638345431d1ed +d = 2b50a6395fc02b9ac1841323de4520292f913519bc0d6a471aa28021322fc4dbcd7b802 +Qx = 696d5ac4bc40e679524e246210b7bb0f93ccfe7dc506ba87be3fd018f829c93e62ad1d8 +Qy = 65953e01d9db8fc5d64516d864a33aa14af023e601d69875ac0f7af92a1e78aff0e475d +k = 0aa25b43329de4e7739fd9134e4f4b3d68a64e55af47a2f6ccf71f518f19059b68d34cc +R = 1338a5dda5fa09667604a6a7666b0e54e6b688b98b31c25d037ddf55ee6bee7565dad09 +S = 00aec025232c16e778f90785ded5348f3d5345b8344b2a762480383777328e0a0b11cb3 + +Msg = c1328d8d2e5b6ffc850a9600bd6482518ddd9cee3fc9140febb72bcd444b0cd7e8074587d51b62cce4b3d4f34ad3355353fabe363369cf790db2df9fdac3a0ec4757e2dfb3b683eaa3e26531691ce765742e1c0bdc0e1028d347b6085fc459df0989c6a144271454eaffe413cae2ad7c8b2371fd2df1afffe56df727009765a2 +d = 24e5889722f6c35e18ca47effa9e415b1ba790066a91fb3c9f7b001ce28fc732b09bc23 +Qx = 7d4a57e6aaec6b51dce5408f6a7fbe9ba9d55f5abe2da55fcf015ca25dd74eb61c1556c +Qy = 2123390178b2992059151afb51ac652b364f562c65451eccc65d968e9e7210921c93c9c +k = 320d2a7f48cf3583e8d7e712b330d40ddbe4b6c128be5a43d72bf57d4227603762de7f0 +R = 09806a8e70742c6c4a9ee6f77fe7a36489e1fe8c442ddf9cdcfa61f019ab9b41241d949 +S = 061fda247ba7c198aa532906bc01d509088d6c2ba0f14ca3ecc5ba36f3595db1df3e64c + +Msg = 7176b7013ea27e94281977eacb976bb31c753bf80fa09680a29128a6fc15234f79f0e9900aff3217ce9be72c378042c6c34fced0158740073d1a985fa25987fb218002e425868fda5a47de51abfd04de34e2b8634cebfbdc98e80f93d94096193eaa82dc8778fc23f3765c7acdad94fdaa272df0ff0f28190c10a462ee78ac92 +d = 056d15b81f40b6378588a5efe43e21b95e18120d514bfdda0e7759a1d0766a8a35ce5ac +Qx = 306cb78fa576bdd2f43cf7b71d7e66a98b850d87ac087dd2e1ff62596a2e8d4cfff1344 +Qy = 3b1e3b12db842e00c2faef04d3e39cdb71546e4e3ecf21eacb6131c3501fa30edcc0b70 +k = 1e8969d6cad41a40d8306d2a8db3290d547106eb59f661e0d0eeb163044a92aee4483fc +R = 06786637c3bd5a95eba5ce015f151d99845255175ebb9e593d912c75cc45723612c4ed5 +S = 384471c17c45ddcf62b588993835bb913be88f7a8e46e52e211972ffb3b7768410bcb7a + +Msg = 4c3642ba040a9955b9d50dcd1c936688c17c363854358afa8ca49c6abd906dfdc4d89bb4cab0bbc363fb5b74e1f004d4b09ec9dfeed4c0bfb482a9061a1f487a3d79195ff7b65a0504bced3a28db0ebe8fcf8ab1ee4a3ae91324d15d890ac4c479144dd5538d2e36d3a587769ee9cd2d5c6f85a03362a022fe0efc4a3902b71a +d = 12fb2fb5bf5f7e42a500154823a174ba2d05af71e3b0cf47fab46e673ea1822f1563def +Qx = 2414d172d74a6281169835d18bfaae91f1f1cdfa9ed451884466e63160ecdd4a2c7906f +Qy = 2d892bb19b47a4fd9d851d3b101ba99acf6d11345596635cedd5d7557427a2896a913c9 +k = 20786f42d77195bea5761f86dbed8b452f858b447d2f3775ba2a4865d738122363b50e3 +R = 334507412368f08bd0992a5d56581ea7139e8adc88abe4bd80dfeefdc7a37a481b18609 +S = 0fd8404df06a02618cdbf6c28610d5dfac9907635d9e5f2887f11a7f18cb8b7ac95b5d5 + +Msg = e471f39c18b081362adc7da47dec254dab8d765f005ac574640d78c14222639245563912d942f3be212ee3cef134407334c8fe3602fa0e1629de5331643d76715dc1b0ffcebd484d86c5211be4b285a31688b205fa988e6c15b36daf396ccdcc209c7dde2a732f5c31c84c7ea041408ebf15e56632583af0131bd7f531b5fc45 +d = 30096c54fd480647e017f8cdbbdef292e799f054e3279d228b09816a757566a744a8266 +Qx = 2d4b28fec18cd888017fd5a27a375131bec3aa7195c0a4f255eeb3616437079e356a6cc +Qy = 27c607dcf0b068418eaa7de8da6f9707650e8d95aec571f7ec794415fc175061b451519 +k = 36880905a376faa594978713c2de1a90c8e27baee65bc60b1fa6508fab5abf843f66ecf +R = 295193f1c64181bdf749987bbc8ff2a188126131f8f932bb8ca952ffa201f109762e18a +S = 381c496b4035bba880225dcfe74fcf101103e38f9518d9427c74a5ec86ebf8f7183694e + +Msg = 8a93fe53e83075c4025228540af7e96a588520da34e3eadeb99a4ab2f3dbbb8f85fe63a3b86c1f4ec912e665ca05b43e869985eae3791b91205afb1380e16c25b74e6793fa63e4a55dcf25dc22d03f09deddeb9042b620434111afe08c5657c7d754af66ad91a1b5423301b1e8e6389a1404060d1b6a99fe0f89598482979e42 +d = 0a1b7e9c8c2dc25b494b5ef3195b294e41cd3c2c35235ab42542bd3e2a52d5826662bf9 +Qx = 6232063dbb66a56e2a92dbdfd9b3c136eade9c214d831691d9b49c56a3962d20f14b8a9 +Qy = 1b47b85bc223fde1918abf6308b74dff7f3e686af9c9d7a1855a1b77984d258c1f9aeda +k = 29b4221eebe151fe758218138535d81182c991c3b7fed93f9a6117e98c1c2f97e546937 +R = 1f8040fad671e2f32a1094413ee955ea5426bc906b8e034d87d7408e63db173b05afbfa +S = 22a353c431a9e9315ff69facfa4e15f6e6ee1be2750472823db31b49b17fc759e6b94db + +Msg = e193a8ef6f454ca1aed38bb67aca6d08280d421b196d89938c0582b7cde74dafd71716f3818940af412d4a7ff3960a8517aee108ae03576b68ee7557d35e6f1ab823d124de7243dd02b542591f62c80d822608572889573e4c9dc62f99d68e07800da6f83cb6f5e03d1f2ac15f90e38b4f25e0a75e354e4b60cc81c0bbe81d39 +d = 059b1a8fb84530bba7a607ee88310e31bc6ea6a6881603567a1081a05a3a9ff87e719ef +Qx = 0b9a71aa3cb4cff37586b1e522b0e332ad5962eec3dfeffcef3851976baadf611ae5226 +Qy = 6b1bf0b43b406b5edc6782fd391d9fb070fa3570d3cd5b2b66d7a95dbc45ccb1626172c +k = 00a77307da9845ec4572a24c9e74a17b76b6393da87a9d7b1b8456235473ff39d243ec7 +R = 36721835be490b5ffc4a42bee3c6d231417f7038c367efd9ecaf7fb3618ae8492906de0 +S = 237833bcc3e4a721e2079e579d1aaf2519c01cc238056fe0c0990dac7fe50e75eaf6f96 + +Msg = 8a99b9db191f6cabc88b430bc2293e6774d5180f019d871839289e25aec29379f14606e742190b7aa062e3b29fe0254146d9614856c5140c7315015abb98ac00da2c7e33cbcc82c24b797366f12767322c4381454d9d1eeaedb616b0ea5c66d1422da459f18081f4f966d05ce279c6ee69b1bf94b8388d38d4b770d9ed69025f +d = 30ddc2c7a4ce300cc2b75f0f977033f16c1f8bb13aae3d494c381f9a6dc8622499ae4df +Qx = 47bdfd7c77ae0c53e327c15c30d90ab1c9b670fe2241dc0ffa939fec3cf6d3c1f493f3a +Qy = 6a286aa2310a4d0468b62f3144a9da2e66d15bf86f60045824278e8986ff87a27611920 +k = 38afc3d11c66eba3441a5ea298fa593eec57b84ea29973c306ac9d46bb8d8e2f4c8b049 +R = 06c830f6c0be99fea4712f1c75f5a4e439800dcf062a16d93135c3255d3cd04bef5bc7b +S = 1eddfda0d0e02d382ae243e604f76939dc21f3ce106243b2d20aa562b78e620fb456428 + +Msg = 5c437b331831530aa94623b1736f00b986172699f0a02a5e5df0008bf25341787e2e66046f2c929dfe0058c3cb89fc5bebbe1025bb1edd1ee31522ed568e7b5b4ca3991afdc76a68cbc2c4f81863e27fdaf6a564fab2c6354e5c657de81390f8a4132669fd24a48580c716b5b7961a9c091f614d11cf45dfdaec8946a54a11d8 +d = 07899928922fbfdb5407517725edf231d15a8b62d90b7fb6d8c8d20424850dc44f797ed +Qx = 614257f54514cf37df2cd78850658a85ee362764ab8186423aa0f9a1ff486557f8f167f +Qy = 3ceae9d1370df045d20f576931ca63bdba8885f463d5c82e5edca5116ed3d2c2b0c4861 +k = 3395493478e69e6e1088166f622a4f9ec7feb998aa552b54bcf0fc67c06079f45a14993 +R = 3f31ad171dd59c9deb21851e631f223584b17f72a6807d5239ae31373512def954d5ebe +S = 28f095ae43ba5bdd899573ce6823eccd8e127c6c03cb59dff43c087ca24e1ce5504d1ed + +Msg = 91aa08567d8da4c90684dc06068f69deae240212842ff1786f04ec41b40d9187aa92c76401f9fcedced62876a34df82ad7c1e63b68bb2a972257ea8542bda6a7f1a020c9b122943b6d651abda8b8d322a8fb762eee376daa2d3637a71ed6c4f5cf96f61c0da2d6e1dda3370d80e51da2cbd8aef3267168c67359523faf910dfb +d = 2a2af63d1171930758bd3e5bfdac62cca1a83a3b55a49b3f80cf0d9ee4b2082757beac0 +Qx = 7dd6fd0868ec478e7e5c08965fa4f1efe8db4d0c04f0b6c63b5dfa397607a0d9d5ce909 +Qy = 54ff4fba9058179a2c61951fb4955cb637b01267f8f08b3aad614738c562f602d498f04 +k = 179482dddd033e8849abfd4991304137044d7433d7bf858a794340ea1cd66e736b821fb +R = 071f4cb000ca1c51c698c867a78961e6d7defbd60109f79d1d165ed045a653ddebabd10 +S = 1e2975f4a1fce0b3b0e13c3f50005fa664ee9319cf774d2e107c406d36158bcecb0e5bc + +Msg = eb5297bf408c1a55e400a20a3c10acbc5c2bc6d6ccfcc0941fb7a6fd4d2834415a6df86c3a6c4b867d1215aeb8222153da8cbbb1576c92c07ca2c36d8f243fd911f9a057e39ee25832454e28d7ed52a8d04169b9b9677a16b32d5d211b8573a8986e9bf36d7206417ad2771daa11bc21fd7ee1029b65ff7c9b2705a6dc9cf9cb +d = 35994e89e13916ad82608f74a639e6aceb756ff913aec440519946d6434af9a60a6af49 +Qx = 1f7805dfc9f90d4f8a1b241dc9d68aa41cb77b63d530cb3733cede23bb87ee5118e5bbe +Qy = 1c3f1aa3a1218de78a94ee8f88d3f787fdc68674e31792d919dbca681a6db1dabe89b61 +k = 2116684a4307c67a3d8c1014b33b928a962a8daf86c4031b0c1d47315d74bad7dab2aad +R = 33cab952e9382dc074d666f1f2ab2bd72ba394a404ce2fd02a6f7a4dc096d713827c94b +S = 33b2886738d882146c0cd715701fe4e8b94b0d28c73a6b79d2899391119ba910bcbe3be + +[B-283,SHA-256] + +Msg = f415d0adcd533dd8318b94560f86732c262ad2c6dff9dc83e2435543f429a2158cd2fbab0d96c027f71008c4895ecc644c2ceaefa80937f6cc6338d15d36e459a16bd9387a361a6d800acfd834ad5aecf442e30b70f5bfa164747cf9f89325b80976052a83a5e896c00c54f81472b14329cf23bec10a8e693005de2a506ba83d +d = 29639da33f48e4fb0d9efdf50bba550e739f0d2476385cba09d926e789191b6fb0a73ff +Qx = 770f9693777e261db9c700eb1af0b9e9d837ce5eabd8ed7864580bfb7672ced8ffca598 +Qy = 68aef01c8126889204aaca8f3ccb089596f85e2aca773634bc5775ee4d27c77f2af83e7 +k = 32a930fdb1ba2338554a252d1bf7f0169d18750a4ec4878d2968c5e735f98b9d0c25edb +R = 30cd65f1097d3fa0d05e1d6072675f1377a883b683c54b8a1f4960f90d68f3ee8c7bd98 +S = 15c61ddf43386a2b8cf557760200ac06a480797e21c92e45e6a311e1a508b03c4d9632e + +Msg = b178d86c9335b85e02178fc4551769db589ab91d823fac219c7e14e2f029753b203962389476723832f8d9631dd7764e6dd35da290afa42a794476f5c7727b3688aced848dabc9954201578cc7b25801710931f45cba1199d3788d64dc0188412e70723fb25b8ecb6718358150c4037b5b81466dac1686cb5270bb1c72d34bb1 +d = 0583a7ecbf2a975a32d07428d27ac82e5dc13d1466c4fdfc1e6a05a8d9a289f1010617d +Qx = 3775ec793ee4bff15027c70d9bb5dedfb7d2e41af8895faddddd4589cc5a00bd222b3bb +Qy = 300f7cd572d82f2f0a2d99a83977ed2034e03fdd76a0267455a524bd8199424ae5b81ca +k = 1e58b1f66c927f4ae16143856d67193d889debdac8eb03936f1b36d550c2f2639e13f8f +R = 0f897dbc8ea12f4370fcd08e8700e5e4c68dff97495f401d01b782f2ebbe259bc0dcf25 +S = 3c32424fdcca39f411663284658b8f0c1f950f0cea4354f02f4b359f18e3fefac0976e1 + +Msg = c8bfe9fa7c848531aa2762d48c153cd091100858aa0d79f994fd0e31b495ec662209a9c8761cd1d40c3d8c4262cf4dc83c4a2549a5cd477726ab6268b4b94a78b1c4a7e700812872d7f41912a723dd9abc305420ea1e1fb1fee41bf643f3a24abd6e8fbf6fde2475e290527724a6f99fd75374bf7cb01b34d3e60d8db33c4de1 +d = 0f817ab1b49131fb9bbe8c112c25a36f064efa85de7506fb9cd29d81b326bf276277f7f +Qx = 2b3a06e07fce1848494d3227ff77d1c43f4ec3c037ad73ffebfebeeae87d3bff7f7e59a +Qy = 75df52e6a34229266ff28b1c217538ae23b3912e4bae8de5cad9b57b7c1c9ca8aabb2e8 +k = 0ac57fbb899193b88fbf4ff2c502af72943b133e8d40459a833275212f6644f566f5c58 +R = 3e13307d5fc2b7ad24e9422355150578c78e1c99a6f9a24f9ca2e8bc6856936c5c4af2d +S = 05e8b77b580cdacc2660e6f8a1877d93c5983d135d63ca0e0b06aa8daedf855c9f661fa + +Msg = 9a5f563d0f9fd1f31f3a822de628ae970954f4e71292492d727109036491c29e66b9b0f2c90c26abe94c08502f5e923a9ddaf6a7d91e9541ce90d0a49f03ce4e4769753d5b7d922e1ceaac4b4cfa4262732a09550aa076b8ff9d46a50fa17de17e3b6bd606698464d116fcd5f1ae11bf45b0c48d3b738427cb47b0d1272b03cc +d = 2782af76ffebf3e2bfc0576b70e4f4bb87c762e2bb230d278ce776310a14f5b678f29af +Qx = 00dc21b3be7efaba5c7f9f22591327f0f97083d4d844415d3148d227931256d026ec9d4 +Qy = 1276f1d9e131f13bb129a1192fa24602fb508c9679ad2124e49c70a891777cd601955fe +k = 0255972b5329863f380de945574793beb0430dc416a8f2543330a125ce8d69f72dbdddf +R = 25bcb54e188aef6e362a62fd88daaacc8e697dceadc8a6b6f804ce4a36856c8da6de97b +S = 1e12e18e1e281606c16ed1f49804f8cfb33c29b0ae92c072d5c41ee3e6836cf1813d722 + +Msg = 3d6b065721da9de82cb33ec2c27107eb399b1e69ac8fa51145ed4147e20d72e27434104e76af988a3bc94f55e36677a05182fe2376dbe38195fc6a30673a4dca87336c7304f3f31d49216fbdfea00fd1e105d8b0c13ab11f8892e0045e915c17dfaab07b24ed21b06af5a8cad4f45fbee5a25bb6e87466a7bc422c0bb896440b +d = 31b827b88f14d3822244809096157df3c0aa99da90c00cd9f0b18dfe306f6881834e6b6 +Qx = 7b3ed076a2901ab2625bf05fa6db10a8c156412fd2d26741738f5eeb6a9189157526946 +Qy = 6a8cc2061352c36f264d23dc2857fbe02af34397ae5130c582e885f50f2c112f141c07f +k = 0b36f5d6da409c4a27f38ff9686cbf5f4714f4e17234fbee6e6deec97c9f0d4c585d42d +R = 356911114c9ff9ae4f3a4fcc5379c987b9d298554cdd39ce124f04707e7fd1ea25231e9 +S = 13c0a321c4c5a1e89dacddae38a9b3dda32a20627e53dcdf28ee26a550797c255eefe6c + +Msg = d125f0e2e6135567adec9e77da2afc6862e28d618416632ced829d14ee8b61116da59dfb44098a40a0b927731125617e3d2f32cfbd1546a6e758c1ab6597e75db07add52ecb61d37da2e9ed04df95b36ac249f4cbd794cb561655cbbe4b34834c497b3d392d78ed0db8db683aff0076fb6e43acba3fa2b91210cc6cf3fa594b0 +d = 27da4916f1c471cff80bfa14d12aa10270fc3b26caed010c0111f6e5a40d914a3927763 +Qx = 7d8202c88fb915446c521884fb756375a2b8d178f6a87306c1c8b67b926e830c8285c15 +Qy = 224dcebb8a7c46902532870ff855c780b2884dbce2956cd34dd6ffef8dc365b96753449 +k = 3fcb1e759418e4539f9be76354cc1914ccf9a111338890eef723431925fa132ebad8695 +R = 0d4d4f23408db58a72495aaec6dc335ce85309fedccb6ade053c23347abdc9e77a81aa1 +S = 129b6b322573dcc79704d08921cb54f31c571573da78cb09d0aab40c4036ee8f195d88a + +Msg = b380f97687ba24d617a42df1b14e5506edc4b62dfec35ed9fd886bb769832cec7f9adae10c21b7cd9152588797b4efc6b2b30a873d3f25e683ea9be070dd69731949a51121e534fabfa3a2eae0ee90a454182248bedf2595cd47ad08614177d58f7a773f5023b538f5f568682c83fb60e3fb1aa859948d01bf7b214e7f2dc719 +d = 10608eb51dc0ee97d6e488a23c582ecf0ea1df9a24db77094d87b3fb6ca98507280a934 +Qx = 399b3e571caecdfa1efb243323159a45618702600b870954cd614e494bccd70e381f68a +Qy = 2e2fc57721a500611badf48fb435a6e399cea356d281e853f55ef2cf9fc5f70dc8b3da2 +k = 0a8045b4f55115dedd8d742545f9f2bd6e5ab81cdbd318747aebfe9f74b0cbc964b6040 +R = 2d022631bb7e05d316a1b130faaca5af5eac67dd25ad609e6e2a067ff74fd4ba534db2b +S = 04595f184068433962d250394680701fbd2e2bd613a47e5de68fa1eb83cb08fb425571f + +Msg = 3f9ec57e4228e1a6ec49df02c58d756515305e48763ba1dc67298be9a1548576c28c82b4e9b3f62357d9b3c522b16d5c496a39effbdc8290edd2cadc0019e6b9fae1e61238b13b6265ad2ff413a5a0684babdb0013e7632051455e6fd943815213c555dba96cba8911e006bfddec6c3353065004538f37e48df9e339498d85c6 +d = 123f9eb8babed548df08cc3afc1d3b3bbed52b538d4654f2088fe76062fbea75b85a560 +Qx = 3b2e980ae7a847394720a9cb982fc1e41f9381b0f2e08b87fdff1bf891b9637cb22485e +Qy = 4a367d593edfaa4e17113b6b1ea3ad185b3155b1bcbd9f00f4482e509b43bf7eb67a448 +k = 2adaba166d703d4d2d431a26200acea7fb47216fd04882f91c5730a55c349770d58a452 +R = 2c83e6a7b4fd48e1ba4fda8ed7891425213764078926d8862d0eb64765ee2900b3deccd +S = 3561a949d583b7de9263d07ac427bc175b75dc52f43f3ebedf996218c94e51684ed5f9f + +Msg = bdbd7b7bf3337bd9d21a3c6db379f95408c17e49dd394e94737ceae889f45dc0ff5d48cadc53703a16b5589939506b548f8dfd34c577c084f372166cbea320c8fd07c809b211e0749ea639e68f890affa1569b66bd763c7c710989e491011371eb1d93ed9479ff0216b7f79c901a2023e2cf80b565d1c0517e73117190cd2f02 +d = 06a18e626452111922e02e31d662f4301319946a204ae8a34f06b91dd1b5b96456365e3 +Qx = 77c1fbe6a645b85fa0316ae412e8dc558c7c066d9aba900650749eb7b14a149ee57a259 +Qy = 1b2f3002ff4936653412c8ccb8a67dcae18d78dcf6dcaaa75061013d2134af2c3fa0e69 +k = 21bf4ca10d03a93d4675baa26285aaa554836bd0bab6e7fe42600ffe9137d5e304847e1 +R = 20702aa5b5cb45cbe8025b4ddda0a42a1ab746117d45382d018b2055b62791ad91abf54 +S = 12c31f9bdc096236d3ec46c4e6cdbcea47e4fba0e28d4df0fbc19e8740ce6dc0577b242 + +Msg = 436b288512ea57bc24f84fdd117da9dc1858bae8c11637f99295d88fa9d05e3c053a2584a6fe200ad190b3077d9a1608f660349dda405066c1562f6897ef69b6b674d6bc11fa470d0b96a7cf8f6e098c9ac03b0ef415aa045867ac7c11d16cee78ecf08850ccabf70f761682b561d0d0e4a889d840dc74932648ca2fb58259f7 +d = 3307fd717015b12a2dc76ada21442ac1d97519f66898b214c2ea317ab0f0905e819e4e9 +Qx = 4ff9b8d60ed177df635a3953c0f5f5c0254224bc48d34329136706d6e8fa1b16ba0916a +Qy = 2e50ef73f43ea9a5ad07c6bd68a82b7239534e195ee929aae7788c073dbe9e968c2828b +k = 14d8339f610b348f4639ac20dfe2b525517218f0c71b1908d407603b25f19971a1b5b4d +R = 2acf3dc4e3569e5038fe97920de626ddb36bf213afa0f939785dec8319eb8321234c574 +S = 01db40fa416527266a3949211fd9fec158412c447c392ed6a7c7f159a1129da864d33be + +Msg = 672faa156dc188bf16bf8933d65e091c633f294486049ce96a4a403dca28a149f4f840e8bef47412285363e9e89006614b013a41baad9885f1d9980cc897ffbd5f8a7d0e63feaeb42c07776efb307ed680ba1cebf470dd9bd8a2a9efc2b1daa569524394f9a50398add1a5bd2f7c263f9e63c2d49461acf98444fd23341ce78d +d = 14f9f412e3c7d770626e800d43cfcbba3ae6aec8563af748e8a97b67d244334b6e6d2b3 +Qx = 2293b37c84e7514564635e517bbdb9bda0b4a41217ca64c38e94a4bd00753255b4cc389 +Qy = 088c10bd909964ecfe10c373214544c6f60ab85b8f5545afb0fd2ac03d036db7ea9e67a +k = 19b21a4d73012dd2a2ec3ee280a9b855b89e6ad53438431cdb5d2cec0e5ba21300e9bd6 +R = 3baaac69d182bf1a12a024dbc9a52ba244a654716e2756c36ddf8ca634129cf9d2b23b2 +S = 13ed92730d0a6d75f2a4a56b39f82d063e1be988dc58f0ba5f553fa88b6510116005727 + +Msg = 4321334cc8ee44f1cb392a4b280a95561809dd3639ddf43b6e11cb73067597988d95b8643d86c76c3c6b932d9262b9b8b55a04fba0666dd8b8ff1e8fdf799ae3945b6e30d3af3966f1a6d634d5e012710d66cb447fc3375130968a2e1e647780aada2609d87247c90338dd71c3bcc3902311caba27d5d4ea4d73ccea960d4bfa +d = 3091a6a8bdac1e43542dce752694972e734dca31c061c7d1000754296d0748055db3f09 +Qx = 5c0761d01020a30c478617313c67008a1332a0e6f295c5a9f01b3411eef585a9dafc693 +Qy = 0eadfc6f7bb9986b0dd221b77b54287042ae8d1ae5788706b79a354fe785c66145bfe81 +k = 0afb2e2e29b26a686368b127e38c2f5726fd55a13e9f87cf00e831d3fe19d9511d07e81 +R = 2685f634a8c16ee79acf62b7a1fb3acaec0db47c6ff5f2c97a804e9550494b128b2287b +S = 12b545bd76b8d2cdfc5452291d5e4748a5e981c400daeb65c20812a65bbe936bc613219 + +Msg = 2087e22094570d39fa937f15a3ef0601709a66666344186a33b487d041793fbb9709a95af250b1df0762ea98e911aeb3ff1fa19f0aca53fd4179e454e0e91636e55cc5b17cad9e1575c82ad265dc34c4a66b7a31ecb9ef9dc756f2ac1d9dab35369a6bad4a0f47e629daab91addc6d297d1e5d81477b3966d8c3b607ed194d88 +d = 1195921b91353db9bcd00510efffe009c94f6bd8d790f5fb3e5a0101c9ca5d21c6ef2eb +Qx = 5dd8aa95e24c054d508bc5081546677b9a8e8dad40d3f8a184af7cf07cdb09ffa2e0498 +Qy = 5032f208dc3bbad6aaab63211e13e17656c750c6c2a6e3caaf55a7c30ae5ba241d8641b +k = 3223c6439db7255e89c28aeb046e906ba79f4e9b8222ba5ec201b964d3666301f74967b +R = 0fb7e194dae6420ac447e7d4f882da3c4859f53a948833a0a08f918acbe03c2e915d1eb +S = 2336f1206b46b3166b28918bdc1c817b22ab16b355030cfd635ab3dade20d2dbde08b6a + +Msg = 15c7bca449a73b03bbfa783f5a91ca0b7916889a5d99d541e2e8593c3b176a5b634ba20b34407fbd94ae1c1398f5313cab7402f3bcd7ad277a8c66d09a6df5dd086b20a0a3823fbbb80980cd86bd13e527eee15656cc977103e80113539e26695addd9eef6a1f56986168d9a53f8b5de833f8962c3826cca106ae9e8c00208d2 +d = 29dc20446e9abacb43823e12a83737b46e6e577466b5a3925e0f9d496824dadb4d4b50c +Qx = 4b3c1d41d8172ba15fc92d9586f29716821ea82274ac8e4fb3452ccca3e34925f1e736c +Qy = 23e22cec962d759bc659841f259de954911aa289e9994bd76a30149a73711bc41b29904 +k = 0931ef56f08c379d1ddce0649f45ec21eccf3dcfa178616f45b200a06f82172b91bffe1 +R = 178348d533217543af694c8d3cee8177e22740b657bc6ce6df9e57f0c1f14fc9407c440 +S = 3eb25dc4ed42495b54679653ab1cd4d61c854207994a7318026afdfd44c89cda9247388 + +Msg = d12fbb82ee7a57eaf76b63fd6bc6c0a65c85f135f019d43ff7bc295cad15d53729d904fed63d69d3ffe8b82c0ebaf0399e2717ece40e011f710b5db46aa457c23b85545953398b814816a1e7a8ab5b0b14c4a0451b0bda9d0d2ec4a374bcaae208b7fe8056bfa17d6b7ffd4ba2e9179f49b9cd781b0c06f6ce3eec26cd428cb6 +d = 3b9b77d19a42e9a555da8ab70aa5638890b2ed21daefa28ca6323fc658662dabcbfaf52 +Qx = 632fdf8ebbb755c960ebf8fa5d6b679416e488faeeb021c0782352279a7ae00eed33094 +Qy = 41aa517eff6854ba04e2de6794848823e53ca580353f2b25e45fd4efd3a369cf80fbe57 +k = 2450beeca6f1ebac3e82e3aa3239a5031f54ffe65fa6a45e2bf2ccbda448a2cf6988141 +R = 28664212774e23b6513f73a9b2da97f5eeafd10efe742e314f6913a6d0c0e3e581cc6cb +S = 025bc733edffbc1330689e7aee0dc121b64a72dff19e1d7c5990206d6daae5bae75d0b9 + +[B-283,SHA-384] + +Msg = eab0a37915c6b43b0d1e3ef92e6317b3afc8b8301b22f6059da8271fc5fe0e419ca6097daba213915855631af64e10d8382d70599d903d1535e25cbf74da3a12ba2f13c33a8562e0db03edce791f1d39af8850fd1feff0eb25f9ad0a86dfab627b96e65831bffc5f6d9693d20493bc9dd6eb3e9325dea50b055768e8aa30d49c +d = 0b9f8f3e89e9c1ef835390612bfe26d714e878c1c864f0a50190e5d2281081c5083923b +Qx = 542ea231974c079be966cf320073b0c045a2181698ae0d36a90f206ce37fa10fb905186 +Qy = 7e6eccfe1303e218b26a9f008b8b7d0c755b3c6e0892a5f572cdc16897dcf18433f9a10 +k = 31789e96e2ae53de7a7dbc3e46e9252015306d88af6bd62508554f89bb390a78fdbaf6b +R = 0fba3bd1953a9c4cf7ce37b0cd32c0f4da0396c9f347ee2dba18d636f5c3ab058907e3e +S = 15d1c9f7302731f8fcdc363ed2285be492cc03dd642335139ba71fbf962991bc7e45369 + +Msg = fdb93afd5dd1e3eaf72c7ea9a6cddb07fc2054499ffe152cb2870163eee71ace5bd420b898cb4fa80ea53fbbaece2a1eef6427b632320e9c97e38acb16b62fdbf6585b54fabf0a703307ca50f86387bed1815a05b0c8991e0743d10cdf49c8facfd7ddeb8d4a7b706b5a29e1d00ac88b0ee88b3153185495ac8388cc70104154 +d = 3a30a1c15b9ed71e102341f97c223a9b5ea3e6a335861c3cf407ef691a18cc639dbe74c +Qx = 40937b263c87461eb5d409008255d4e14c54d7a86d6e3eaf2ad9c559f7a6b9d2582542b +Qy = 7562e3a04f22ad37a1df0250215c163b45a6bd04a4b96c30fe2e2b7ded5486b172ef09d +k = 13e745c76b33e6e91f47f8423653b0056014841f4df890121655ac2044f3a6d58b9e213 +R = 22467497bf1b5d29476f24aaf5f88d905be7900406c64033913fc88601c62063a924456 +S = 19cb024c7d6be51d15337a207e66fb0e473956932faf6d755393dd5a899bf63610ff887 + +Msg = c78e35d1a5b1bbb0ec21e7ba7b7c74c859d88f3e100e40ae34128cf093885dae4e87cd09f3239dd8e79e25305220880dd352a650225d9bd193b9b84e488c458b0b5fde1af941c0c9fdf952d2fa41f665918dccae27ab7923da4710f8c27ac8ed424992568dd6f0a6c3ecead21650ed162e0292104eef3c2d8551be866a88d279 +d = 083330123cc64c11888c1fd388629d0b329a50ef31a476b909a182c930ff02d0c389b93 +Qx = 2e3a3e712676bede22893a8911ad6a683306e86487d24585bd6fe4f2657281f0bae2dc8 +Qy = 773889a95e9bd579be379fbf84dc8d26d47335253356e5b01c09eb8ed57474d6c0b0491 +k = 0d630f20623e93c274239200393cc552d03da6bb9e74f4a44a518e2642e84e761dff7a9 +R = 27b8997fb98ad04488f5dc8ae5dc88b2a3231fca76d7320550c74cc540110c0cee5d8fc +S = 1824f1050e85d527847faff236b7195965e7b93343ebac889b23425dc27226d50a5266c + +Msg = e05435f695997229cce314e50065f3c5f71981988dddccaae6efb81f936b22cb48813f506d1edf5ebd69b0be34f278592c5935f0f6db0cca1ef9d62834fbf3c4c03f4da0596cb4d67b7b767e85dde7b7c6fbef7d89babe6f97b876b33594a9e36ab87079861ee556fb03274ad4af527342a4794192b8933f28c6220f954c77de +d = 1dc2b656c207eabc9e0d6272099babca8d149c9c4258b779c2f06de75f76d77505271c0 +Qx = 2b03407b65809825a32ab50f1b556a65c3bbbd65cfcec898514637ce606182517fa1a4d +Qy = 21c97e293ec74dee17c89b962356b7bd50c7b23fcc30ec7fdd0a629d11373e28380a8c8 +k = 2d0dc9317a2af5a7d0a23c00d126b7fae4c06bda0a5c50462ba26bddf575adb091d0e50 +R = 211c396875b5dc71ba87ff2483b0ffbff60cc3656132fda7422a81964f1bfbcb5ecca23 +S = 0a0ed7bf1ca853b9b19924c706eff373b97585b692b4b535ad71cc4362073caf8f61a3f + +Msg = 0f9f36477076c4b5a7d1ceb314a397fb14646695b0803e36e98908c8a978770269f165a1fed8f4b655d4efd6ad283d7f5d51b6e1e302d360e8ebf4e887c7523a757ffd55384e114bbfc6b7a0ec8511079507b919065ca018573418f9e394854c5704227772161707b4d0246ebceb91192f0eb2ea994ce61fd98a6d14cc8246c5 +d = 0081772348ff2d7a3fd57fe703555ab2e14f5d203c4cf0292f944e827e884d95f3b1d83 +Qx = 3f7174e88ffa8bc0a770fffa4bc30a436fce331dbe7154f6e2fc0cdd09e76840f089b3f +Qy = 561e6aa3feffb2033ea716ae94b9a7402bccfed1fc4a137cb96fcdfe4685314f73a8bb5 +k = 3a8c40754ef7ddd0e289b2cdac5e06c72dc3d6ae9d0351d9295aedfd6f0e88809674bae +R = 1443b46c0e6bce31642dcf3037e25b6ba2b42daa9a83f5c0bbfb2487ce717c37b91f46b +S = 3f59d5a925fe19c795b4992c265a3c61b2452237eb34efb9aba30208ce07d1ad47e2279 + +Msg = 1d38b1c342b6611dbaf412a66c1c0b8397692755f576df33b31c2bd12b7f0707cc423376391f7b00aa4e7b7fe54532e2b39c3c5284b9c8ccce48eaf9308ed338992f1d4ecde6cbe352e46339d7d602942158387881d9b493fd40cc59d4f9b53ee4191d42352c6f7bf32c331f0c5afbd44a92901a4b713c7cf6ccddf7de4cc6e4 +d = 1eb6bf2ca1b5ffe6f6a795733eaeed12de6e87c53571e702635b9dbd0d96b47df4a005b +Qx = 0e64dbc1a08acf6ff0e820593cad79a46e3bd818ddef5ca0960fde799abacc7b840eddb +Qy = 6115d3de2bdd011ad053550471368581a5f125eb0d32090646fe4407980a42988e551aa +k = 3b28fc6d0e4a7fc449b811b78900fb9f89885f4d4f70cb5a2b3d4f8ab87bd5448f4bfd2 +R = 2601923909c8c953087b0c0acda57d8c01f814dc9722171d8409d0acd2fa4d9c1314693 +S = 3eb316cacba93bd473a4b4acae4f2b5a5b2ac9856519032e63a0c718698956e8f35673b + +Msg = 3353ad05ef90e9762bcfedd6ef44a1e8ea0392ebef30cffd48ae620f3e567e1cd44882d514e7c6759200d4bcab18afd3038c3d3f8c50f7bba32a04eee5a4b1cfb8c349939e4efe0a46fd047d02ed000d8fa1b98b0af5586f120d9ad174b3aea33905b979ece1eb3660b1e070c8821b32df41904ad68bbd8ed247aabd94066f16 +d = 3b2a3e65e5a306bf8e3955b60e856dfa9bf68c1275a678ca056207a0ec67c96eb3f8309 +Qx = 2c542cef892b06372af7d9c321ed5309995c1cbbf1a466e70bd30f3856ab7c5d18f4e3d +Qy = 2a8acdc12a7cc0b54f4dec9cf61c484a5cf86c4cf6cb5ed615479123ef1c6ecbb6c7ae4 +k = 09bb5e49188621466440a0841b007525000c2203d9821f4c6afab63ac2b97cb5e2e3dcf +R = 00a09da1c4bedff47945898f4f4ee9a0857bb56be535544aff9d729ae44e23d678fc71f +S = 2390be08ba0861b32ca35ba27a0c8dd1a4e96d28cb007133a096b52afa0126bf2a2abee + +Msg = e7ec162185fe9a5803c6b03d98041422315ccdac67e48fbd07a1ef3c5661158710abc6791bd0a75d56791b4ac0e7695d53c5989d9fa6a3b037583b2a80d2b154b024f1c36b63548be9afe1d51f2f68b2ba94d4ca1e69a35ac10e15ba72242aac20f7526b12ff9d3cde9a9bfd70d55adf9bd92c66d092d7d08e9764c84bf7f329 +d = 1fd4d1af0bb7c79ed5fea7bb45574e46534387bd916649485ef15207352d7302e81dc01 +Qx = 77057d3f93011440a78718a3cfded73e4196e7fde96e794465c51be8b679f912c10edcf +Qy = 59873441c590c43e0f00f80afad5b0166f94b62214ea45da29174874e44356b29eda6b9 +k = 3f224b35737e78ec5bc9b081a601d8fe19e33b4787449d3353d2ad225358211cf9f7f0c +R = 1a7bfe92c30ed1af478282786bdf7b5b89cd0fdba5e534bdf13899dab5af108803d73f6 +S = 2ba14810de4f5cf48b56e94bd6c439d230dfced3cb698c77627f59faff0ac5a42c43067 + +Msg = 87c8f2e3f4fdebce0ca9300fc1ebcaa934f51a12b6b8f2cb6bb6eb77965468663044afeb2a1334cb5a81e74b8427267f8b34b5e9ff0cf157a9f18be2b1942e32ca61dc23ea13c3f9fcfa16df8fe05e067938b6994982676463fb12842d4ec532cb904cf222aa805dd0d86ab9a33a83e294c6d81e8dfa273835e62e9041dc8ff6 +d = 20380b1136b5283e9b7f54b7535ebda33b129ceb177bf5d3d07b1daed5edd9fb3862530 +Qx = 5e7d0931db006c6abe04671d1aede760f2b1ac5c866570f8e5a24ed356fdab49cc5cdea +Qy = 7004920fdb0a744cc545068bf82bc5d7a46edf9265fd7c5979b9559f5421c9a98f6db89 +k = 3cfbb1204caf6011fceb8d4be987d9a41b81bcdd95b94919b220647d0e7a18feef4cd01 +R = 07096beda28c20d2e62d9b0750142d3d21b54c38c7fad1ed65e4f9b386f3dcfcc43a3c2 +S = 3d0af02aa39e329e4c39f2a1d6797f0e3d14554dedbcab9abbd158273a3c7116225abab + +Msg = 2ac53e8a50c4afe3b38904255b7cbf150c5f79dc15932dc0ac9aa631521f68a0d4b6bc5a04d55c99a36531fd4886a23a8d99f262ecd2a9feea925d7a96ebe9b6979a207b7f9378afbe404fc8e959b0333572a2c911f8743c0ba64eebc7ef12fe5435d2cb0e5091ae518b6e4233489efe3c16c6f21abf4e2c6808b733914e5a7d +d = 19f815b98836948e0a0dc9c30828c31b13e175f1e79f23d084ae1bbe64823f4866214b5 +Qx = 5109d8ce934972f5520101730d0a14b99213ea17772e3e7637d622a5de13fd2ffe3bffa +Qy = 502927e0c7baedc4bb3ed2bd1b15fd2d06dd43424393b246dd530d5d8598b56dfcb3cb7 +k = 10359d5cd8a9b7532c9902bbf1cb83d0d34bf37e73e7c0f5729b62a10bd4d8faa0f53a3 +R = 3503410a6feec71fde2feb14375d50f99ff9a2c8bef47e676bcc6c3045efa9948891ab4 +S = 159b1f65fd566ecfdc08b87e4ecf99ceea3088a750e2c3c9d868bb432de6a61f289d06f + +Msg = 0b201469cac4c078f587edecdcdb6efd5752cb4a3f43ab540463c4d908c27527aa3592f2f9acad85dd94a3c056bd28618317ebdf2e7dd6c5ad26fa3c31dd8e5c50c60418d91c93bcbb59ec1adb1db791f485ded78a5cdcddd23dd1cfa4f13443468d8a5f2d648059b9c4470d0f4fe7733d56a28a2c24456b6923703ef32cf0b8 +d = 01854e954654e726cf4bebc0e5a840e8809fd716059211c6ffeaed36829808363164684 +Qx = 7a6e7c542860e815d3fa24fbaf99989e8b9c812b08399056ae4f9a850a6711a7385b622 +Qy = 0dde6bff33891a64744dce6456600f5a6a11049906608e77f8afc38b922972c805af258 +k = 2c9cfd376903122625c7fdca50e93d4c216f0c7d07f33b3b51e54e666e13b67dc89d290 +R = 18321f9ee35d47648060213df1275ae89c2ec7d17abe8093d8a431ced23aa61d3f8df4f +S = 09e5a05a62b006a7787c97be38df6fb9fbc1433aa2241b5a788fa727229a18e07d7a8aa + +Msg = fc5e4dddf4c4a328b685035ee79069770fbebcc56c14e31afb4bbcdd5220e025f31eba794fd6c05e64f19678dab33ce4f084bc32790392f14bf35669d75b6466b4214ec30d58ca90ae285c9058f5804a1fc9d7a995958f2a0e84ee52e8a78b601bec04ab607ffc2091749cc548c6754ed14e2e5f92315bdacaa7a12823ef76bf +d = 3548f8020819588b3202f4c1ac62eaec6a47c2a19b2900c5a3cf5b4ba5804231141c647 +Qx = 38563f2482a399bf1c13f42f8b85ef64a3599c22da9688b97530718bfefdabca3ae8637 +Qy = 5c4aabf6d8a90af345008d5a244d0671cbe1afd08000c4eb37702a9bcba6dbc058ba6da +k = 32649876d776117003305f0ec9cdab5cd84bbdc747d3dad5d8d54a8fdc84d519d50df45 +R = 1f5160851981772c502088eef209f7f89a7c8ab35e630d16330bec7723e398fb37c84b1 +S = 073a7333a7037e1257d4d70be87c30bef770f9d728dd7e2615d47b399ec650aedc867c4 + +Msg = 284cad790e6207e451a6a469cee3befc3ec43e047cf91b9dff1485718aa29de36a43f7c51eacd8589f0c3a96ec18e8ccfa92941b50b2132e3612d5b45e16f60d411d1c53e373e1ba451352e28970ada9dcb9802102518a385dc571dcf6900971b00346098a58042e0d1d129bd6801fa640a895a458a45b31318fe63ebb30c6e3 +d = 3cc4505005c41142308f1489226b7b542e2e7f24f1d3089ff6b92a4b0013f490ad52e60 +Qx = 280b77ddc6648d9cc3f5557d406ea2a089c8179d4320781b2eb76ab07fcafd2535b91de +Qy = 05f23bf4171aabbf0fd50049aa017c0dae70b065964c685bc03b958cee2fc3249149d31 +k = 2ef488215648524f6caf85233736eddcd9d1d838c6a2799c3a68580492d40f9800bd119 +R = 3e8e13db22c97281307edd4037f0a75d2c70a070614e94e02c860f36a53aa738fa0db2f +S = 356f2651b51a6be0c697300a8c2641bfaa1795397eac208385c3729248e36baefc173ae + +Msg = 6d46e57abea9d115deda48b69fe8e0b36144df2f6a659509ce1b514c8cc4769d46e5f71df2a084f1db4a22fdd3ef0c2f90394f2898ce291b9f279c0664aa01419f5f6bee1fc1299871b27ecd57a5ac548f99d01871b8c238a6b46044c953b2e78e22346a0c7663af4db62799038ffb5c21ee512e26d01e70a4ed967377ab8405 +d = 144a2fc8e0aa63506e14e4307df36416f963dd9da78655832f5b991af8c3eb97df78efc +Qx = 3fe8867b560bfb21dda517b8f4d50578a11e1d0ab7ed4ab3796580d31bdf710e8e22284 +Qy = 5a302baa3795e2d132c55d90858d14d4b17aea0ab70632b135f94bb23112d163357f8ca +k = 0b5225132f19419715170f5a3f26919b4127a05b4f0406f895af1e4bba95786daf95259 +R = 0651d17b00ed9a06bfc6a913883b5cdf51bd5f2dd22307cc5ad3bb545f623516232bb6e +S = 01128d4784fc0fc050af0b97f859616d764b22f40734ba65aa15e2cf80e7bba3d15f42f + +Msg = dd750b39bd8753f4e473c4484e2b36ce2da7576813ebe05861c339ffae1d029bc793173ed394091c00685ad82f0550cb21ed1c68f0c27cb7396922239cfb886647af204e88a9101b7453a8ab662e270b87a8a13f2fe61d695597382cabeb781933bebfd7d0dcd33f77266e43e32d937f2dc89f67525e522977ce73e9ad36c8e1 +d = 24ffeaf139043ff25a395e4c560c7680c1c2155191378917eb25194136b4a69597dc277 +Qx = 0402bf61c0e36385e5fa8371a553ed8652466fdc3ed9d4a3ce1bcc567d1f451f6703dd1 +Qy = 4dbea6f67e1117116f30fe42e84383768b0da770f8a2b4cd8a4fec330a0034554a13808 +k = 3e4e78f012eaf1778c086a3bbd9e996da0ddde651236ebdb6348062f56b36f63a901561 +R = 1e2312720f6fbf44d7a6449a7f30019c38e69f2e6424d4bd1054f40798e9fe58d080b86 +S = 379d1b610a976730dfdf3300280f1c61109ad13c788e8f8f9a8d5e0130ca9482ee417da + +[B-283,SHA-512] + +Msg = 4736e59fe5812f63737eed57a570182c065538abd9fb0a1c9c2059199e7052ba57d84b5fa1cda2ad9f216610361ce1dfb9334816b6bea509283756a03aaae2e5b0597f492d078b6b015a40c9785dcc5d2ae266176980db04f5cffef40e16661a50ef871c5f531d73fd5d114fa19bae9dd2da4267a131fc31849da38c2b78d1af +d = 1d1f2e0f044a416e1087d645f60c53cb67be2efe7944b29ac832142f13d39b08ac52931 +Qx = 10b2d7b00182ee9666a6a2bf039c4358683f234ae41a9e5485fd6594e3daa880c0dfe0f +Qy = 0a419b2f40e573dc2dae4b22e6f56e842e50d631b6126153178585bd05a8b9e6e87e4c8 +k = 3e4d36b479773e7a01e57c88306404a46b6e62bf494b0966b4ed57e8a16169b9a1bbfe3 +R = 30513169c8874141cdf05a51f20273ac6b55fe12fa345609a2fede6acbeb110f98471af +S = 33fd50b214f402deed1e20bd22eba71b156305e4f5a41ab9374b481ee344ab3f27f4bcd + +Msg = e573fa7d4bf5a5601e320130de91f4ad87eb7ca6b8998488afcef69c215b0cccd221b8b66eb0af9d699af9ad6c4b4a580e82941f31e4c0a9bd83995dd076c5ac9bebb34481061e7cb1b26f6e8c6b26ee4bdf9887f7ae2eb9fad3115a21dcc96acce85d23a040c0ebbe0a56e75714dbfa803d6e279b2f4280bcb993f96ba321e1 +d = 1337362609df74d25f7adee382225e6a04dd6ee4c6b45fa31499ce9edb0ec046325caf9 +Qx = 287b288ce6f65fed9f95c99fa4b8c1aaf6de65ca563df30ac67c1066d2ba2f5a554e09c +Qy = 25567fe183dd400d256c333da92dda2e364afe84492ede9fa0e913ca7f12069b5a44b48 +k = 31b84ec438302155f2e84dd118c0d8479267f8d19c8c5d96d21177e20b23e0180dd6d33 +R = 08133e49644044bf9ba3b4c8bdc3973647d650c58fae4a7ea5a5fffabafed56e759010a +S = 1d8cc410cd04b188418b20cebc8f66ab0dc29a42f9067aa2926dbadee39abce79deb396 + +Msg = 7862864d0d78b44e2a28af44a0a16d8e9b1b8c4b794db0410c0a863ba011018ef43e1e11f2fcda2f56fdb2a69cc817df425c9cb3b458922ba00d710190cae16d61af3c304a42fbb3d0c4a74a297253fccd70aca414865b41f68b01c561be281265fa89f63f975d3101334886e85929a5a47fa8dc459b663548faf8ed7484958d +d = 1be00aa0afdfe92e24a2536594d4b41701ad4dfb223aab35ff49310bdba7566057fe8ac +Qx = 13583d8cd163fdef7c11e91f36c1d3eb2f7957d219244db883708a7c5777611b0066812 +Qy = 7a1f4df45073b838277d8da7daa7147b0f10aa98b5ec02fbbf97c89ee17f3a7ab4f3f27 +k = 26b42f369ff9b2740147914a2698cf1ec9bab44caa3b5f05957ceb9a32073729aef0fc3 +R = 37640dcfa11483b3754ea027f5f239500894dda4f4c8308f0623db256eba2113c41ae61 +S = 2096767a1f8210b175334fad61b4c7fb4e2d6c7811b5d22521af7750f101077e2fd4e44 + +Msg = e73c96d1a84cf7cc96065b3c6a45db9531cd86a397e434072a38d5eeb9a90f62bf5d20bae22b926cfe967647d2bbb5dd1f59d6d58183f2cf8d06f4ac002ead026409ca6a1f868b406c84ff8887d737f65f9664f94801b2cd1f11aec336c0dbd4ec236d1cc4fc257489dc9709dfa64eae3653ac66ab32344936c03eeb06d5852d +d = 12ad0aa248db4fbc649f503e93f86104cb705d88c58e01d3ae0099590a69aa006aa7efb +Qx = 08d262f57f9528d55cc03c10bd63ded536bee9ecc617221d9892ae1a75b7cdee175cb33 +Qy = 754e40e8823e89fe23dd2748fb74e9e93c3b33f188f80377a32bc66f6a92da1804c04cd +k = 2405a351a3bf9a6dd548e8477452c4d9d719e32762754cd807a90abddd3ad380e197137 +R = 28c5d807ea1c3ddb7f2c90f3af644c5d6a2757336ae46c2c148752a2fc150e8183cfd83 +S = 397c8c52fd67b99792229194a787518db5be8e8c291b1a30e105b00f108ce41f8ec8fa9 + +Msg = a73fb0aaec838d011110d49c5e94395ce07408917bacf7689d2cfe0948c582214b263c6b80e0a55f1e159086817605723740569eeaa1bae96b979679165c5c35ef2142525e943e595e6b4b160acd7ebe41de19775346363f779b1f80b6d5f0785b92a648028e456af8496102d19dc6526247a654bdae3368f075fa9ee92b2f4a +d = 2cfbb8f340cae8e2e2322829148981cd9e509b0c65497fd8d9da5dee9dcfd39b0f7556c +Qx = 260bb17da74429f049f3a7eb73fea9cbeb5b14ce553d7772a365376d0114ed2ef3087d0 +Qy = 5889e41bca54c09be20dd406a6e1f11f9d31d720e0c4e2e88f381ba89a97f12fa9faff0 +k = 3fd7cb455cd97f7f9cb888444f39569114589612b108657ac59178ffe31a33569c9f0bb +R = 048a10915fd3bf9ffab1cb13632359466ccc539128cd98c6273d5d8d26c64d57520394a +S = 2d0f67f9baffbb34094c5fce36f47cb73a537ff984c89e38d073678c21148056bdd6893 + +Msg = eda775984c7c9f7db47af30dab314d070fb77e9b623baa6b73e2cbda800f167b20fdc2e7219391efacf908f4ceed9b9b6bd3541b52ea087177e18c97391214758cf6455311fad336ab56cfdce57a18add8cf85b0a0bd6fa7297dbaa34bfc8585b0f06a0aae055186658c227e19cddb65de88d260f09f805c2e8854dcc524189d +d = 070e82a1f3fa6158d15b7346dd56150faee5c98c9d07c996e01a06dc9b211b12ff62d60 +Qx = 3d3ca5fe316a0820e84a8bb5d231bb14c810a87c7392d7f960e7cecacc56c337f88b0ea +Qy = 27ac0ded5633a98ec5734db9de1399c83a181d522037266d856c83e5c8047c4eff2c4e3 +k = 311b23487750c3c4b23b28424c33328c39d6f594d2a9b459a883508b985d8aca039a2b5 +R = 1465736c3c9e30e895b1544690e05108ca221cf2352ee4af1b5ee4130029a82b277b076 +S = 2819b94dca3a58cc5a96790871640fe0fae38883de6fb4712126c1c1cbfcb0c005c5af0 + +Msg = a4a13e0bfa761b9bf37fade6570d41c161e20558874911ff3bee38e5649849b159beccf321c6bc7243f99c01a2fadbab9e157e9952ca65d8ea676c74fdc976d00501c626b8465c6cf0e4fd1a7d1260aea987161b821528b0b423e62ecc5193a0a49442b0c3e4ec9c4786a3a86b199c07dd3a17033d430d2c83c100f54e0a7c31 +d = 0b471bbc5f7a07996e370da4a09e71e2119ab3a562a273f079401951fbe4df39a4493da +Qx = 333e9d5e077bc64d022e49d5d207385a19282aff1b73b307523b0f861b4ce4219308c82 +Qy = 5414e431f3b90a2d4a454d073cdd81f8b224180ac4139104166ec33ab33d079dd147ebf +k = 3e431c39ef6f4b7674a1bf414460b58998ed7aa5b1af7ddab746cbcd2ed9f42ae3827d8 +R = 151df78c0f453d396d71528032933566e176eb7f6910fa9df2e9b2f5ebb6038777ef209 +S = 08a1c4a1e21cc63fc15a78f0a11a1bc7a59a5a31f57091a12896fa670dfdc05c04053b7 + +Msg = 7ceda7a7248640f7055309ae712c19d741375d6a7e0608e07f0135bb830dc3e8863ee9e7a75331a5e1bd38c42cdd484d4f45a26c2c1d4e05ce0d0ca941f4e94ecc6b371102f31633629e9861de558bcb6407d66eb91f1062ac0e0409db68b9f2855296a7f42fc92359a7dae16c73fd2dddea52bd866a4d501aedd8fe3b3ea733 +d = 3c65cf80bfb507dff52f9bf2f93df0642020d41619b3990009409e7210fd7130ac44ffe +Qx = 3beb5b9b8785c5601093086b709c0a05955be42eca3d217e625349e5a875efa82d75ed4 +Qy = 07cd4e64475d628e6f562f0ac9c3f91075626063a52c2b621796e557799ab2f1ebf8dbb +k = 16212ce91eed7153fef806d2561912be1d988410641d5eb72d586cd4e6782deae4538a0 +R = 26ea04dded2cbeca81e75503932982c7fb5cc7d38a45a3fff8c4ed7f844dc759d8da302 +S = 061d3756e3da1c7816f0d72a8c84dd1f3b93624b631f5051c801af4e472fcf82d896c18 + +Msg = 609815edfd58c0e26a4b06dded831d2f33466a130754b96d8d7c3b4d99fd4b0789ec719bc25338d0ae8c5880560c02687d352d77c291e406eae865c3b26d00f2e63dc644ce7e01d6e96ceeac8bc1eeb257d36cbb25d89b5fff6e30b6051506a0ae54cfaf6214f30985d54cab78f708029c1fc0175bc58e888db89dea8d300abc +d = 0f4d33a9c7e6744ab3c441828bf0f1866ae1c042cc54abc754e3801263a96cbb3955dfc +Qx = 4b925b97bbe67adbb6e918acbcae0ced8dcf11d012e1a97875b750bbb7d01945bd64df3 +Qy = 4591cc9caabc0db8fe9047e6b1f8d850ac4389fe67bb84f6846b631dc3524c8dbe6a06d +k = 0483aefcad5e382351125b333dcede8ef50914b1d1f1843b075f242acba18c290c742cb +R = 1fb791c288e2cd52d3837c56b02fc99f53a6ee27ad6dd9c0a31ca08d8fa64eefccc5c87 +S = 0a041ca35422d8985c1c706dcb0b8ece64b65285bd0a934cdb41fc08223885147281869 + +Msg = 82d8ebba707b72655497320200ce719520c1ae7f46f38122958fd99322c25c9f4d4344bcb77a6658df0eece5df163412ecdca58475d56b0c2d14a0361e4cef458df146925d473a43692b15e9bbec550f1bde3444f2a5b2ecb55d2abd273ae999f16a32333529d94455e485ca4585e6b07bedbfc2bd1eb766abf0d28bdb1ae6ec +d = 3a4824bdcea6a144d85f1b194431724cc49849b6cb949b4766d641ae95477d1ec3d1464 +Qx = 2c9eb36eca01dc2fe921933f4cebe8046b3679abed80d2f8fbcf8f254bf17be3d551a56 +Qy = 34c836aa4e946425fc9f49f3f62e33d8a0afd320292a34d0ef8bde8ad79a10e3f95f2f1 +k = 23d8725af57d835018e8737fb4e8b2eed3ec5a83fda137c710fc1df875416ff82fba90a +R = 0d9f57ba8b6a9a1cbba67adfbb938211ed2d267468f79ad39ea1eca7271d135bb67c18c +S = 0f09a600d97c69ab521bd1ed6bcf0c0f69255c334e0aea06c68bba81d53e810cc553c9d + +Msg = 9c6fce18a6a96349b10c9f2f5f1505c8ab727a650b44bc0782a5f39fcb48b45fc7c1b82180d5f229b8abfc807071f931d333d265fc940c93fae7520d8d40ef59d7c6e3678c6a2ecde52b6a8827b1ffc6ed269cb9832feb20e593a7e3d4708309342875199eb2ffceba7ecd707b122516c815e83e27872eda812e3ea52ee3c4a8 +d = 27ba543ea785df1d53d4ae4c1bd0a3a994cddf0c25d2b4e8ff17ea7aa00619e858da1a5 +Qx = 7d375a9e78ccee85fd795e3fe6bc07f50af3456edda1ab00303f6de6b5b02fe09859c63 +Qy = 08d0d54ab9a239b5ff955452b32bfd2372fe095751bea4b56d52f79b4fda0fa635f57f9 +k = 00ee7010af4a517502cc5d5433d98916f6750e8a9009ea04b8132268673d4a02a3e2031 +R = 3c147b66efa47a842eb90371eeae907f0c813ca0937e488da95ff8ee16d389f3ab902ff +S = 01469d005eacd9ac84a140c93ed0aee09083a4822730a28df35058cad29267eacf03968 + +Msg = 5eac15a64c7653d125605869012b8f036804817aedacbb5a5248a595ee0c12329f91e8179c187192d3ed0d4ca2e202d8d4d9c93ad3f3ed931121c193af5b47a8a5dc39775b6c2d702708e5134f77a31bd62eaf87e39e6fd3f2b9f782c3057e162dd53b3addf92bf0ab99835c7f6649abd1c5322a1ebb2ba313df9464a74c14d3 +d = 0708d0907d14dcd5f40e2903e1e90e48a0ffaa6d4d9b84ca14df4e985c294f74eb9f2d2 +Qx = 6fb0fe1c3d5bfee5399c98518bc3ff135e0c351243fa0540717a9b1f7990eb8cf43597f +Qy = 5212fd4d6a50c08cd99ee5988103fa639b1123c878d416cc553639bdcee1f8e927bdc8f +k = 151465f40204d76f3bfc2e4052549869c19da82c678c332f536ef24567ea034358866c8 +R = 0803d3e8c876d46a9198f2f769faa76c4f66bc5ff4298b9640ccb8e67ff8d10f86342c4 +S = 00da3344354114d163d14d4c288785adbf9a8b31371c6e4420383c80ba0a430019c6acf + +Msg = df735a7e60bc267b18f313ad56bff830be5ef119baf43ce27c6368ff1dd89f010afd4f48740b11c12101c5903bfa71d6cb3d6462cf875bbd55a570ffedf3564088dfe8c8d3148231b78b5adaa6c53696737d4704daa59eab8d986fc6e519e81540f201e77b923a6a4af65d7173635b3b19b2023022186a7b8e869e1ed51717ab +d = 21fb0a6b94080da8b8299b87457dc09d21bc430ba5f3359d92aacc1151be9941739567e +Qx = 179831c55ead3d11844fea2e18d25cd4d658822e626550aef1afe37d88aadbcc9bfd666 +Qy = 75f8087d759ede340157667c1bb12be272b8318aedf2e8f8b487f4bcd12a50ca66f9281 +k = 37833e9aab843a6b967264fdb705b419ed63fbb09c12170491019acc7c21b9ee28a00ba +R = 1c9601440d109a3f4eb69a1a669bdaab9f4222a34a04ace8ae313b10bbb66811bea7d5b +S = 3d2f9ad7595dcff69b65f035ce600f2667f8499d3bd25f789d3f3c1bf83d2855f68eafc + +Msg = bb107b0eeaf175a786a61db923bc6d51dad5e922e85e57536118e032167b197b1a1f62d9bbcde04922fde781665c1094181c16ac914cf6fbbfb27bb8346b2134f05c55a8c6b9b481273758e380666d6e22c28577c29446cecc5c3df9ed9f1be060ca55ab2b7fda36a147aeb46df0275bb923e0876b703452fab42f6b7ad2ceb0 +d = 2c80151f91301fb6b0c7685bd172f20515b46bf94dbc4160d0720fbaedd40ec00084447 +Qx = 4a62b0c9749ae9ff00dc1d50d2b4a4941741abfdf13c8e416549ea27fc26b14f191f243 +Qy = 2c9cdab7c6512c322bd200167eb9657f8e8c84864b57480a80a3c6efbaa289ab8cbe4d8 +k = 3df951f8c4490fc7c2d50a72a93e0e82c5a20be8d91afd890d6846bfd146169ab58b382 +R = 1f2accc7f7c4b5f877e12cc17b227e1ba110577c9f4e1785e6dacd8491bc6017129d798 +S = 27a167e6f2b43ce9663b810ed4f8ef15029fb6f2be2ddf25c014d844953f501d1dcf6d6 + +Msg = f47e49ae30b09b7666600b7a95e81b0afa1553da5e01fd917e4ce1b58dfaddb8dc8c03c0f5591f533610deb6a7bb5faf5dd1ec4103a587a1a4c58a110a706b0f301a5c408b3d984c210d5b4a0b347d2b5447271f25b527b3c7864f7cdfa735dfded47c63b723fa0f0413c57a24ffde9a95c35f743f892ab1ed1df704cde82d9c +d = 1538abd7ce8a6028d01604b1b87db3aaf720e04220edf4d1d28c2d731aa25f509e58f2f +Qx = 3076b5c3a12b8a2e1368c7e3458458dd7ba6c5a6dda8c82cc6b30d1ef767d36e015207f +Qy = 369c7a80cf01e9f32c08f9924db08a7d0dfa5e9a8e0e29b57f5eea8506841e6e3da04f0 +k = 3f0052ba6ae6bd7a7aeb077a764d21caced6b241f63616ae4e4f0d98d2bfc0e44dca592 +R = 01281bc0bd36ba1f3e1c262d98ddf4e9bf1d80dbf97db02089fdf1d2e625abb5733ec3d +S = 076db2215d9f33054efb397c449f05db198d38a24749f046ee20032f5899dc142052e37 + + + +[B-409,SHA-224] + +Msg = f2380acb0d869d1cf2e25a6bd46ebe49d1c9270624c5507be4299fe773749596d07d10f7c2be1c0b27e86f27b4a6f8dff68cfe5c0b4c58dad1b4ebec7bd00ab195fdd635d9fa8a15acf81816868d737b8922379648ed70022b98c388ede5355e4d50e6bc9ec57737d8843fabda78054e92777c4b90466a5af35dd79e5d7a81ce +d = 0beb0df3b0e05a4b5cf67abef2b1827f5f3ada4a0e6c3f23d698f15a3176cb40e85bf741c9fbc78c9e207fa7302657527fd92fb +Qx = 1da1761981a65cb5c77ec50ebf7acc11eaf44bdd2f70242340ec26ffada7a4b5f661e13d6e7ad341cd7dd1ca491cb7a0b580be3 +Qy = 19ba11e4c4f2f5507d6bd2aa2f96b03510a03d5f8c38bcc8acd08080d9effd1f8ae5a5586603b2e112964514c831bf786b2fcb2 +k = 091e575fc79444fd2d9021bc267a1a076438d73464726bd0fe4ac2884a374e71bd462b1516b3e97c3202854bd0a286214b9e92c +R = 057ab9d5cf4d18f05eaf17d3b5a4af96c3eda8ee48acf5e02eefdfe2f542cde32a37c04f285794ddccbb14383a645db040bda81 +S = 05275de4157b32723366a0d63831e6512241e3e4416f3af02e22da8faeabbddd761160304927a71cfff4d6e8937347c9b78cd3b + +Msg = 22a97fc0a9694dabc6f274ab52eb592dbbe8beeb646ebe6cef60eff341a13017eef980aba6d24ab3afd976e2f6a84cf652654d4a54a36b2f2f62fab8858f8b0479a48fe9f47f8fd5a4a1f3141a91cbca186507b2bbfef5e4c4d2df525f04ef7c4720fb443ccad540f03a2be468d88c9545d1dad579fd7cbcd103bbebc9e9f961 +d = 0504865a30984a9b273d1bc289d734d10e0aa56e93ab14720f1a42a27d8cc932cb8804b963175de6fe57d8eafa8ab7ea0592dfa +Qx = 02de5872c40a79d5238722fcb94d5158009e28fb41ea012e92028dc3c87855fba71f50e6d0dff709867de185f9a9671e7a91e2f +Qy = 0fbf607f69609ae96982bda3f0317fe46ad1e0207030fdca702cd97fb5d5732f3abab24b10669875a64bd2a74c8603897c78d22 +k = 032d0f950d10d028db6e9115e9944e7c768e2da731df49dc9128bf145a747662de08cbe0517fca6fa185abdfcc4e3ab604e196f +R = 0e7d16daa689ddeb08074285f5293bd9f1c051ca5589e69e4b62c32af110b6f3981d9624df15c7cac0ddd62aee9c41c7b6d690b +S = 02f6bdcc551aef0e4e8da2df38288dcc29fe600de2f8b6cd8149f88146150790915148f069372151c3bdc4d719526eff252e610 + +Msg = af36c04af0e3fd64bf52dedf52fb788d2d1bd67fe05d98880cc7ad3c20436abf02f637fcec209fbf888903fdec8682717299f8a4386768153b7faeb6581db57fb9aaf4615b4ea8d924198fdd158363a1f40312527d6bd14c13d19985b668c6b88a7548104b1ff057d07082eea421f50062a315bc3866378f2d2d634f03fbc0cf +d = 0cc08a4ea5ebe32027885a8c212870e7c45b6c610117994d6a42a284c05199414a3a0e8e6645ac5c2ebf21c505a601f69c62b85 +Qx = 09d2beb607f2bab64451327e1dc67f04f7569ffc0c67b410c6db06dc04edddb1362ce8d8b8220be77c447640e7d0c676e5ad1d5 +Qy = 0ab813e800e75b6012faea43be56fe9d5a22cd46fb1f4f1ba65eab19f75f2ce9d8187e4940fddc485c42cd18d40d47415a80b02 +k = 0cfcc307f847eb696f16af32502690711ffbaa2e60e75f80cbcf7704152d5eeb9ddeb701952dd58fefb159926a83245fefa6196 +R = 068d1c646dca56393caf3239d9fb30d1dc56f991a8dfdbc0a7b69d273aec69a53056d9553e105c7917e522ffe446cbea23227c8 +S = 01db30aceed2b126cf45163b9d878a6590e9ac8284a31ccb0faeba2202679f181eaebb664b5537f408b693800f24da590082dfe + +Msg = 6bd6f52a6204b60f37929aeff28c87ef61ddeecc231e52a7772275f9329add899c130956f8c50ac2698aad3654fdb49b74a6427a62a11eca0a8ee8b719b8c0df7b9f0bb0af5fef4918a8c83367d29fddd04b6a1ecad904471e5b59c8fe3cdb06b4f8f96419518dda960845d83c49a49f1b1f2fd1d2682a9d60c25fe3ce982cf7 +d = 07156ef0a74ee1119532a2a7e8c02be1559c3c21897af9d5b34553c3d0feca4a8d5929d1945df824478e0c0b92a6fac8c84f639 +Qx = 01df419310cf133408e9bdb32fd85f8f0950263e1886f2e2e108a596e7e76153ec47bf9b33f69c1128dfbf52557f3c382de85f1 +Qy = 16a15517a811c77cc67ec4fe2bcba1290e4981880c071318aee28e30854692ed2d6bfb71e6e74fa97af750889ae8d010189733c +k = 063f127c38160e85acdd4d5dee1db1c32cd9da6075b2d2f46b010636e374e0262a0453394aaa8bbb5fe7b2dbcbcd62ad601cf51 +R = 0250cf50d52a5950999b9c0ddef219218f76dd9f22a2213def9ba98d258c2f8359d08d0efc208e23ea3614c9e27b2e4576b9c12 +S = 063479550873dea8a3ec0306ffa9252739c34c87bbac56d3d9138764347d5220bea9c27d6a308dc2ec53724d6d3ac4862d1735a + +Msg = 0eb8de25f63abc9cba16823270e9b6f3fdedf0fb90f6652a34688970932e3ae98f6d3bf0fefc5f247f72960a6975bff1f1acc2188a1775fe8974b2bb2b4c8d226ceb735113a14009e8ce66d58808fada4e6f697fd016829913352c0f659b6be354a067df00cf74919580750aa6064f21264d89dcb28b3b2d4d699115c36d1310 +d = 0a95c7abffa92e2c637611ccba66ff9d2ab121b40a85c5b71454cb0dca1f098ce1be8d9ea4933d1a91bcd270c5a33687835d6e4 +Qx = 048e6b8614c0c7156dc41884e17e36ef528a493c28c9e6275c3454d83beb939ccc74952732c18424ba21b8ea9c528966c692141 +Qy = 00ef9efe1145029d8d60d14dcf079d43e3cea0e18010f680bddc2729ffbff9a981cef2cb595a69142b25a0a39863a929adb635a +k = 0f43af45b0dd631bfe38d85979ff1612140b9cf80b4504857df17279d9d8ea12d5bcd2920fcec81326f15832df6774b9c4bf5b9 +R = 099f403ced566fde4d9755258445b6d6c2a4e234f99425aaa78ef118321f8579fb513ccbb71cc2732e31668a6a6bb0fdc7f4018 +S = 0d8568971a4f219d6d3d8bea6aecb4bf7de53886d2e6bbb0f71d054c63768c34d4d1883000019c59168fbb32f4317330084f979 + +Msg = cad58ca7a3b9967dc0ab62a43037764f8074ef9177d60bd98f623d693333971c24a575ed03cb61f4dc2e3d6285fb1204502a540f3c0bbbf23f5bbbd1544f322ce35d949d8b1d8edeb82e90927ac67ad49c91007056bf5096bd690d15ac00e1874fe33293d8003a4a2b094078cf09af799dde384143350c54a99e1f99cc31f2d1 +d = 02c438b07c6e0685d1f94a4bbafc013f8f21265d893f54e54c3ac2071606ad1ffacace0b8367aad724b1d9508c65ce52282e397 +Qx = 1fca66bdddefcc3c2072ea32f026c975a2c392dd7ed7e93e94a810e1125ec161bed698d8305830eb66fca5eeb71934ab3fd79b1 +Qy = 189c22a2c9f1fd7624f805fdf4faeeb931709d745a3feaa3cf04824f5fa58bbda144d4e96d83ce1e3282bd5fc9c50bcd68f5408 +k = 09230aa7b58505e2dc2f205b70a09cb9f4d8272f465b7380195ede0f7770af2a33f7623c310a0520e7436835cfcaf32467f154e +R = 013d0e70d8f4b1563efbd3c46feee15b88358562f769046f39df6d00477815e6b8763c023807eda87a86338c7b64214784fa2cb +S = 0662f43fabd03a0c05ebba700203fa2188e16504f8655bfd0fd090b109e68220122dff7a6cbb8bae08612e0d516e9f95ac15368 + +Msg = 281ce2643799bbfacc7d5993683a4fa656040517854f3c2dc7c4f8848dc305382e34e894d433caf12d8b493020a6a08d1fa05b08bf6c53127ad5f33bbe75b9db0615e3dd94408d028dcf3cb7598f6e7cb4c787681dabac7cba2cc06fccb7506fece6c7c1c1bf622d525ae9737085ab4ac578905950002024f30159cf0d99f50c +d = 09e8658f8f9e6cd98c0f4f0fd20d64d725653aeba339504def17f3ad12a63dc6157d80804e5f43f4ff48fc5573fde2c615ed31b +Qx = 15088531d914113a25f1598ba1d3cc611e27ea92ce8dc807fe8d446db14ef62ae2f06c293bcdd739f916cfedfc481fd941b4feb +Qy = 0a9135dc1b0384e7169fb4648973559e508319235a3f41ba174d5f58307448671cf22a3649168495c36b0bced09ac6df98f14db +k = 0d398fbed52228fe16d32a6ef539e4ee3858a1df327bec999ca25cdbc357de5a75903909973bbb0a5d0269862a74623a38da515 +R = 0e38910abb3d84b2b26ed17d2124f4787dc5612942e98521d9f94baac3d14159eeef9e09b9b20c807b479ba84640730a4ced4c8 +S = 0e370e575302ab0d8d08d5270fe89ba524b5bf21e43e70c4d335ec1525ff5696ced37f0de17e109fd833e5d179bcd4df42d7882 + +Msg = 0c061da1a16f2be130ae3b20b89745e840bee09633fb49671db28ec9a051545f57ee07e2410ae7ebc61c9af79868d3047705bfc64ac0c04ef0b286e579b650c7165443631e49e6a53c84cefa5625b1e1035a6ed89b8e839540040151132a937666524265e099272c1849f806db0fdf2be64960d5b5853965099459968e5beb32 +d = 0c4c13f65eacce85a51881caa6f82d9e48ec2ac574947d2751823a7f072d38bd9da0cdf30b6f19084a6d291052e7bbc2e1349e1 +Qx = 0af93430dd77e6016d1b076a52126a729f77e34bb3db11328d9edd56e29a7a09a7b6a54f72076fcba886ea78ab6ad81de43a821 +Qy = 1419e1bc339c03a8b4413ff009d76f9a19e201876ebbfbb3dc771b7df07bc19eb893ce23e40c679d7909c33af2bcd7d6306c0bc +k = 0889be0918e7ef34d3ed226f967301a10fc30111b3559e37f5fa5a57dd5c73ff672c5279d096c5b04c68b71d55e549d019281a5 +R = 0a4bddba9b7a402b584ceb82a54baab61e81973b7347e6dc9e3ce0f1e50dc21c9569d8ecf8a7da97c38e92e52636eb13d3b4c02 +S = 063c7291656466f7bd647073a50f410a2cd9e8c938aa1fd3b28ddc1cbdd7b78b757689dd661f5173f79896780ac3fdd4f3171ac + +Msg = 74ac2e1303297efc3ed8e624722df505df55b7f33964cc0d270604cc48b58205d8a11952232a8feb0079baa30d7d33660268b56a5a3dd90105f0703abef8f6636a99bc63bd47d9df100351bee32d8205dab0dbd2af36fd173409ff8d1fb7b24570f3c1e968458f58aea5aa2f46731ee91ffd6d3a060af6b3d5020daf1362af3e +d = 0da591461791ae7847e6d8dd8df46a63d3021644abe9520e158406c96540d8fd82ecfb1c3f6f5cfd7688c7656cc3e3dc94e586e +Qx = 1f48c95301956c62e2fd931df49953519b88ec3915c8de495dcb4ccba97bee023b1a6cd9a66dca29aeef8f4f1117eb954e47cdb +Qy = 10db6bf78cfeb92d29a922c4b05daa3cdff3917ba6978fe738296956ed141c749a938ca9f8f13f711aec930e0f1948ce7daf9f6 +k = 00576a91862cd63acc067563626977fee6f074d5726cf4f68e80d25029d4b8efe5ea845745c45e4cd42879e52854c3f385a10b1 +R = 0806435400248ec38a6d362e8b2cafc3f3bd46ba5baf538cd97683f76a733ba2b4ca85fa7d13b99f4076e7616e68d66f05ebd8b +S = 00ecae395fb324b4366f238f0df22d011bde5db6b0cf4189e3ad47101067ba87336ca47d637f09f7a40a1bc64de8c4aef7f497c + +Msg = 2afd17344552ccc577b0118caeb7dd56a0766e25f84df17c0505f9798931374b48df89a48c64e199108c36e00c0bf00a97ccde55787bb97c6765601765ab5417f3e75e35a9fe5e0f85a721d9f08440ed617afcdc200b318940a1e496040a6ad9090476b0fb4fcceee77b3fea11de09e7fb14853d1fff8ab12d66c101257e2d4f +d = 0b5eb943f0dd390b737510e2bb703a67f2dd89dc9f6dca6790bc7a260cb2d0fb8e1a81ad6009ed51010e7686d5b48233c6c1686 +Qx = 01ac00da454bc329f7c13950c848392cb4f31594fb7837f0986f61601fe244eca3db6c4f92accc2fbd1a4b8597b70e72d88b103 +Qy = 09a364065a9f67a0aa7518b75a0b4a9140787a67f852fa31342d6275c14713d484dec3116b9dbbb8af1d4945639997ded09cbc7 +k = 049176093dcde8549f95a8f1d1c87230046fd4b18a73243c3599815d4df8387a843bc8fe1fd67f3c6bbe394547e11866f41acaf +R = 09d7c4ddee55f61c5c4c2ac6efbba6164900344004976381c7b18c1de541a97cb58e14d14b6e433c4eb6d4bfe6d3e0a4e457469 +S = 0a9acf355bad544b3b120522365bcaa1e1dc6f1d3df1e30d3beb94f639e26147a81d154a684bbafac965bc39974c505fd0f811d + +Msg = 174b2b083541f8284645a810801e72631a11bd7bb805f684a7159e055afc44357f2c80df2b7853678d34a04144e0ede2327d03db6df23769ec41194a8d9d86af74d51c5bc11ea878c6a80689af71d3fdaf1c651003385332a512e03dd040c33d9c328ca89ec7ee9026bbacf30a7f3a68e0d894fb9f7100ffbc64bf17679dedd1 +d = 09cc63f32152284fca27ab2837bf1343144336a1fdf15b9727c47e877ac69ac9cf4c97b4bf42f1ab10d73de8597a554ed099efa +Qx = 044e655ad66ca9af330c33bc6d00ccbe4533a4c6a44a3f23c921b62eeec8cc1918e19956f3ed848fed93a7fd7ddea57096d1f23 +Qy = 03a71b221c85607821cd864af6f533f216b641ceae104b8e16dbfdfe7edcb2cf9ee0dc1679b696149ff42a051c51c861a3c7530 +k = 0db9bfe4c2e659006d31a7b44eb7bcd6dd23810f27c74dd587ab9af23aa5962dd18aef1e95da4ebf4aabfd558cbf72d2951bd44 +R = 0c3b91bf0794eca7faf227c4ee4085eac6d6918803242bff4da9c5dbac2e23fc32a4d4a192d7737be22810812558f820b0a2c13 +S = 03120a558c0edb58ae7ba36e886084801e7604558238c85a199af6c9e7506ea4e748791b04f3a92354a4f1407837d87faab66ad + +Msg = 758df71a952cdcffdc417b9fffdfb57582ab5c5473a8bdf0c2101953b023b77824263353dea0e2ede1f800a5757ec6ac0e1e4e3ab5a4cd85567d2d19acc6b7069a6e7368401cba2b6e642373654bec0ddd19fbf032794c15b7ef7e714e13e36875262c01e77766ed53cbcf735936dc9b33eaf2152a396349c82ca0297dbae4a5 +d = 09950355e8667bea8bbe3a2c4988436ab5394551b375e27fdc0c1a1d1b07ae957932f428f1aca0a486e54cd0b5bb0a5c5650641 +Qx = 02f623f81fb9a299b71ea8c58d5bd7d89e7be66ed8cfd7370de515eaceac90364438338a3fcf9981f1b6f0b30bc61c4b7c15791 +Qy = 16130b7c4061422d70b21251fa9c3d4e9636f5a08cea794a0fddf74ff5ab1b750cce0f2768d54fb2fb75e2851c2296b39c0ddd2 +k = 038e8c70cd35591012f45f27980095c4bcbb3bd36bec594927968d3747618c7f5810ea9e0a126e4d3e1e08185b031dbe0b37e5c +R = 0cf957d59b03aed0e48189d2b9256b5472c8a48b4911f9cec14adce5c6b4aa22d093a116364bcae01c1a739a4023da12a29c058 +S = 04cc2c22b243064758f52264ed84e757ff67c4f6596edcfe956b70f777d865d01e529f0a8a9a6e1895168780ab60950a62d2d2c + +Msg = b96d9f66b2000e9408d602096f032b112f0e05ea874229ab9daf6e05bee49b4722e4f2d8bf2eeaab9dad94438c76b7cc64dcbb59cb4e03f9ac70487a1d24d8d6b72d7462fe738a17edf381d52179b3acc0c0177c113eb4d10e8e78041deac1d56abda0ddf892edb8be956d285e7236bc6794168f8a180f622dd5f2b9e690c275 +d = 0a995493d6971c2d7e8fac3da9f8c0b5afd877cfb94924cfecc167f9d87002136ab253e3a4f9ddf5c9c99bb1dc1af0c6a3a3c4c +Qx = 0ac0e558dbca0fa6f013b7282e02717e91eb73304b4f7ac5e04f12f55824c441faebe5bb5af82189044827007bffb1e26557941 +Qy = 1178bb726242c718b416b21cdc9fd90b31ba6a8350f9b4ce3a188b1b5dffd0e8894ae6a417c4d74c920fda585624eed4c1d3f99 +k = 0d581293ab1e509baa50852bd3f21f6493cc524a2c16206e461e320c7f2c1c201b9d2a1dd4207227592a6457670a67cb72eeb58 +R = 022624cbbae5214d2c29e273c334b9ea78e10c7efff3611574d5fdf6f67a81472b606e0236aa47106097b9147fc1b56d062966e +S = 08895d107ba789d88a17c30a537402591ed788206487697a72f69285ee5eb4f03cdad6c2604e174ef4b9bb919d8b39bee6231c7 + +Msg = e7ae60ac55e6ba62a75d5328bbc15269d4638764169de0bf0df043d15f9152bed909b1fb8c7a8d8e88ac4f552c1092b62db00958a3a827f64896f6de4bbd8fa5258d6c36e3904d82d3eacf6eedba50b0242eb6b01212288448c3a9821c4fa493869c01149ff1850e8115cf9de1618cb8744626b1951d1de305745507c8b21045 +d = 070daf435cdc26ad66c3186267ad12d10f28d32d863f950cbfcf042fe9dfce553750ad098f82f7f1650c1126b3e4451bee6e11f +Qx = 19b41af3b557c274cf117d501ce7ccd04d8bff2dfc737d7efcd7888f2dda24737a6788f16b3b6cd589d3f65bd95194799d65659 +Qy = 11983077a2c371fcadbf47b10494f6ffc7ca8873b3d812c45a87c48e1b49edacc0ac37e5038cf1aba20360b74c0903c23a62331 +k = 043fb8cb87591747d12f4897dfbbc79644b87907bdefdbd7ff0f6f2e7970c7d40bb2fc08c17443d029a92487869f640607af460 +R = 05ea3493a8c04723de9de2cbd523481e3a8593ae8f010ecbd5add6db5a82d9b13ee7d24ecb417419639d0e9f4e68d14f6799829 +S = 0a9bbaded0a2894e384184e166bc06e1b2fabdc70536caeb3d0cd46b955743cfa8ac6edd03760d1b613fb445367734fa4270139 + +Msg = 666b0dc2ddffaa7ffd57ea3b2768f02d4b77c16fa007c6d1918400d195f068cae2dcaa69817e6e4c70d5b29c5598efe2d957bd12d0fafdcf5ac52dee80a2d46e77fc18cce2a49bfd787ff77b942c753974d22434742bdb494590d17c42af725b1309e54566276af3bcfbf5e174d3cf191b85903faafa1583282c97e66c5da6c4 +d = 0f8121980dfbe9ad0bf92383c7cab95fb72d5caba96e1de7772c6a179e85414802fbb86d725401451329287305570ec7fdd873a +Qx = 0c62f4e7eaf3f1bbae71734c86b8a40ed1297b9ba1151729f9363824425193e8605c2bcd6094aecc9d7ef2a41aa6b12877291cd +Qy = 1882a45555b68596dbc8bb093dbf1aab9900cf46653c58f5656f3688fbc72c5236297be2f0586a4031279b9014f2d3655adef41 +k = 0b4b5b19922bf6a34a00454374589f9c89745eb194b0352061a79401e23c0c0e1fecd7597b5a7cc1c463b76cce7ab921867de00 +R = 0f1fcb80a4fb49348fb326e808d8ed8c21c376f0713429a22bfe16d68cab0295b21d44029083769761c4fb853662d440eba4cfa +S = 0252a94a40008cc2c1a69113d8e14e989e7fe13918a2852de6930973a91784eb35e20d8ae150a88c459167f8ece998cbf6c5eb7 + +[B-409,SHA-256] + +Msg = 3e967cbc2bd936e0b6125dc5cf885735bdcd2d95b2f764de6931c4578ac8e0e87abdf96375481df67dbe1b6c43537e84ec62bfca6672cc5f3ea4125abd4a4119edffe04e42411d338e8b10abb1f1f818c50a9631a3f89feb5be5367bdcb0a8a82c96a427ba6ce99f9631d4411a2b7f5b14d32cb3901dc9d285e4cf5508940942 +d = 047682b2e3bcb5800a531858e8137692a9b1ee98ea74e929ce4c919c26ae3b3f1d4122d07fd9a70d8315fab727ccb67004187a3 +Qx = 17ffffc1d2009e844f8e625a3bf11749a8b4ea0b0fe3532d124112edddf72d518ef577f160962b88ee38b11445fdd356a26bcc5 +Qy = 0ca356fa8e90325aafb1826a694a55a80b2af52e70ad8d507d48946392da8b9fa27b8ff6927fe5130c69809d9a2c4b1d7eff309 +k = 058edc8f3665ff9166af55e69aab9d468f576bcc8f652e950082a48224b4923cb9396ed4ae06f05bcf7797352035484fdc501fe +R = 09b46600fb3b8204d4cb63ddfaad1482dd8cf8652f63c926895b8b8ebfe27295c052b3bb81dddd8687f4864f258a433010c89d0 +S = 0832f7674eea791b5f17db7cf9e2ab13253d870c6ab46ad01cdda30e78db8b8f51fd377dd55ec7786ccc92b17364a3c17ad5be4 + +Msg = ca1c90012eba4e7c5f01d8cb3814c58f48c03a16be6ed86934014365eee547070b870d1d26a872cfd28b60d9ee0a66dea223e9eaa90ee28076188d6091f26f665684f4b486af70669555db9058d485c677b2a34d4a98aa8d6f43bf6f44aff2a23c5d765e98f0438ab81be0585a5be29daece5d4116f44ce6062753a3ddc505f3 +d = 040cd1a06233ac27f3ddd108de7c6c0982793ee620d71982697713be9fd5143658929924cc88747a680779bb00da8a44e1e7d3f +Qx = 164e518a6719b1ad61a38a214ebb06dfb0553bc760799e668b1d0d098ae3f06dffd9b84c16de90db19043d72bed2601fda14b1d +Qy = 18e022ceb850eb1db59e6cf63c4a7c73bea0b70448a7dea77d5ee8a2e1a36cbc46454bacd5954792de82f3ec21ca6a509b0c7aa +k = 04a936fccec003bd9e8eb45d27c0eaedbd452e6fe99abaa62cbd0739bcf259cfb6884d1e60b82522c6146f081663f6f863576c9 +R = 0dec1635f2698d4666df2c217fbe3e644d27592c5607a5549c877257cba7bee29a8cac75a044e72d039747d0d18de1c34acf072 +S = 0138493216ffc3b8aa2e0c26f4fafaccd6609e6b15f767da7c907db64b5181bfdb447d73ede786144c70ddce7df7eff46dee4f2 + +Msg = a54c4351ebdb075d6a42a787647390f864b2bbfd8bb3d0e0ea9d767200fa344d1a9ff091bddb186acd69bcaecd767068efe4d752d185bfe63f6674279d0e7192d2077c400bbc0d5599ee28507c1253f05eae0687b965a015e1f3a292b4650106765266f5c95b77ad2d82a6a6e012f233169eb6b8d83576901cfd4a927c54d7f4 +d = 01ca6f752aae4eb7fc9c73a08d6fbd96bfde5030d759a2507bd45b6e1d1487e53abbe98fad4f41976364e0a1d830910ccf97abc +Qx = 0f6b7220bd24652572b37a0ff25e75f72d583c71c159857482ca9944b956a117a6b2ff96614898757b8a587e3c2b78d9943003d +Qy = 118fe425768bbf3a4acade281c41c745c9ac946c2f8b95d65787fb6b64deb71e6b38fd8c721e01c87efc7c2a6d8066fe3b35a0c +k = 04963aa161b5ffbe5d7e5058f0b1457ca1b9cd61d731a0470beefe5f8998904cf4594f98dcb41283f66e2b07c5c5d6a6c587826 +R = 0abf824d43d993107b552d7ded13f49ea0ae7bb845e56ad7e53cc5f9d64f99f9f250e4305ccd9f6594c92defa7f6860fab1c349 +S = 090a541f1844357f618e5ea34c0398ccbdab0cb363e266980ad304dfd675bc81c0345a4d723fbcc76ab5ed4cb0ba0af1b71bcd9 + +Msg = 6723dbddc8720feeb75e2a061b7fc49079f999fbc79ec8a8e01ab8d35b438b7049da5a23c49a58101742791f84f45d5f5cf551cd7de6926a0e2c4ffa1e378f038da597368c62df8cd8349bf046de46d02183dc05b3a3575f5f232dd2970057200e2c9cb60eaa6b4d72f8b73d4d40b98d1cc801d1a69cb5ed780a75a4064623b2 +d = 0fb9b1a9597d216028902abf743d25944258b48c9762d4589fe660396130b75f6006cacfde60f6204463cb8c18b032de1dd68d2 +Qx = 19b07f7f4ba100aa9e749bcf93a2c9955c442730c5e1f6f72c1b1d132b780d92f414a533282f7b66677c8cc8a3d5ba8b3cd3cf7 +Qy = 06ec6e9c495ccf600f8c19597e9cfdb639406b04f57a29dcd1a7a843c2c44e8321bb8508953e9c0503f77d36bdef24d5d39f85b +k = 0757f6acf74eb02b7ff3161b476dfd8349854154186c959179f11b9a15da3dface40ae6ed771096e053976866433382e640283a +R = 08fe276e7f63ce5f85fce19d1739a8a9986cd3c3fbe26fd59324efd98826f9db3b228321b3ad1d96145ca23cc02616d9e9d7aa6 +S = 016e06de8e3e0abf4a4f52bd2f827ca4c57412adcce3271fb4014069713f3723a038bf560788d8dd48430d3b30faf15ad9c0d69 + +Msg = ed53cec5e5500d62d38c829002916c657674ede4439c6f405ba672327ec677490e656bdd698f114c2ab5e6a1fc94a1a8d64466cfe9eaabd23a8b5c37f76a3c0decdef73b3e7b751cbf3b0817f4079560b5ea34cead88ba374201236bffc48eaf289bbaa4e828afa7d732473c228ad00588c9b443d65b998f21c3d7a9e9196c08 +d = 032109202d754da290c266f74f47805a06e6b5c3f721a72fc97a3bffeb8887e0c642d49a6bd034847d0a5ba09239c5dfdf0772d +Qx = 0f4dc8b94dfe0a27d4d41399005b242c3e5b14bc7cec55ff3a1561c894d73f365fa8fa2ccde1fd7bf3760b96ab2db78d2d50b03 +Qy = 13ac66e95c335b71fd1a98f101a392dd4696a806239fbdd0708acc69333febb48d4b649f14f42841d66ce03f1fb557a361c12c1 +k = 0b010ef786c13ece3a10eaff79b93ef3899aa385dcc1914e16abba90de0ca6389d664082fa727fa7c7907dc4c88bd621e6124c1 +R = 0488b8956c5999c317830206fc8b9f6760845c31bc4ba77584925dfe25c05a1e7d298a62e9748c7278eba622713df59accdd78c +S = 082701053ddfaa376c99cc42ad4587d84a358d9d8a9533888cc382623114aef51170de77ecf64af02e09bee203851abb22f5d11 + +Msg = 13829401bd41e9fe01329e9f5a002f90f1a6ecbf25fc63e7c1345f265ff02e496230f706c6ab377ea52d8707b54f8fc5c7f089044e2bec1dfc66a07da76ee12fb9ea0697d87706b0ebf677600bd2fe117f6cdefb8bd636a1b6b97549ee78f992c24acdf3a946053f06fd012a9c703efb8bd929a66aa74b05d61bff0395232b00 +d = 080536e820fac59b3203aea928475043b2576446619001647e35693a9e65d15236c3cbc12e1bbe0eb305973535c882b70197a92 +Qx = 16d7448c0afe992f8c59b19d6cec64d8fc5b10026a806760bbdbbf0012063f46d31e521a34771f826669c4d1ddd58d3aa13ebc9 +Qy = 1a3742a6f231546f0704345b9b83c72d5036522449cf60c1b3bdfa4c8d36e499d4ce62e6e7bb05c6132bed1ae44eed17414d2da +k = 042753a515e607cf9992dd1f249820dafe53993b59b1e57d8f2f9100f609cc15713d27f5dff4007e078d6da1061ddd36c169c21 +R = 07eeb1cc19ac45f52c0b63ff8ecf4f4f35958e86cc3e3a071a35446d490a426b48b6c287027b003488573a4834a06dad48520c3 +S = 01410d85f3f2adf065b60a126170c43e34e0883338118cd33b0b3eafea1d142480b236ce49d35fefd1ce4ad3d25e0cc9268b1d2 + +Msg = e696acdfcc96a6c088069b7595ea9516a36d8fe04dedeb789fbd965db0cc64b7017a821015f6210b6989e515def5a9605fec0d337e4ac59f3101a505168bf72ab6d98ec62a71d2f94071fc05b95e98d4efc59fedc138e3e49c5d0b44d1f48f7b1e7c1944ee189b242950d2bc804d31c7eeb45283c84638f043ab9533976433a4 +d = 0b05e5f0dad9583ea18fb8fc4d8c75fd2e3cf9e92cdd9b737485c953620d345006c31c288b380258b6500b84f729ce6730e5303 +Qx = 157c083ad9789966905c212dcfd7c049a8ba3863fd4886e4b118b3f06445fb0d4745c2a8a1193dc68915722089d0d382253b675 +Qy = 0867e8efb575800f834c978ee2ecf0f84f72e75dbbac86926b73fab8b47f38eee17a63baa02e3edb9d4f6b2fd2afc88b6de36bb +k = 0c72eb08acb1d422999ee8d51f9ddef9f897dccfafd886998edd3ddf30a638dbd0ed59d68885ce242fb838f022bccd4f3b5f854 +R = 01f4dddcacb088f6e24d331e8b111e390735a41e1fc29da8f5ffdbf7342f4b9056786f2a67159d1e57570bd69d69235ec562416 +S = 0809840df1ef8fce9b2edf8f970c07bdb5fb755e9d5bacd7996275c4f890173142c39299ce9eeb51d21a32acfc7761d5a2cd7ef + +Msg = 4058b9a8cc15ac148909eb97fa32aafbb6077b168dde91a411dbc973df7db056dc57ff78f0abcb70f70f800bd752197d681f44df4a7817c0e7f60f8f65489ecb6167c14b525e91fd2cc5d8b80ba380a83d031d5827c8b1262c687c90ef0e62723d9b565557f9f6fed0db48f3799274c2cd60a14303406c35802cba6261121296 +d = 0be1d277813e79051ca1611c783d66003ef759b9e104f32298017fb97667b94dcee1ce807dc6b4d62416e65d4120523bf6a4edc +Qx = 1fed0171b5b3c6d9092a6592944680a08a0d4f99f08a3ad1c22b5bbf11c0e4ab3cdae9526b0ca2b1bbd961362faccd5caeb1d37 +Qy = 1ae7d57db848e5c86c31f542f1995c76e916dea9aba882865febca630bc6a10ceb6732bd5f07f51bf2f37ecae7b7fbbca618ae0 +k = 09e3585213c6d6706524e3c8e753a2eb0edced626498eacd842d44a73c602d801a079f94b781ae1ac5d44209e8e3c729ed4e820 +R = 01098d98cf83c705515494cdef8c3f50ea8316d95b3ca5f9a1296f09021de57930184ee4b9f563aebf5fd0d5abc0885cd24c0f2 +S = 0d9706f4474a8fb0c701505516699025fde546a21a3fe519a173a3ac01f683d40b4db2642330bcdfe188693b15a476cd9339ae7 + +Msg = e793237d46e265ab84ba9929b196405faa3b0e4686e8693567e53f68e6991e57677974677682a2510c4c35b1968a90b32c4941af7813775c061c008a60f9f671cf7419c94253d6106b61e65034497f2d273a5058379bd986e3d917f708f0a2bebdba150f6d78a3af9c722a2430ab0f4bad602e91e18aaf258e3785fee78e4502 +d = 073c807bd7e07379782ab790720de4ae5106f16d34e80ed70da5b1594e660c9b775db94066b93e74f855f57d88b6ecc6228aace +Qx = 0301526b630ac3fca5085f633deadec27af353233e6f241772c7fdbfa42e47a04b0d3ae38c04eef2109390a71fa9fda652343cf +Qy = 137eacd97a8449ce83f19a13a248af52e512cfab3e2ce1ceb789874cb08757dd9e47ac21b5c0846498d8d7cd90122c437602d52 +k = 09245ba1873114ee2a3e642c5b15049a3566a2f003cb3d25250028655fba98203feef5f307a9f4c77f232976d83723f2621eaa6 +R = 0c8136d4b998ca0544ca1430abf55601f259aac7756c75d1371de63d1471053c789833c5cc257e323a71f80e21783df4efa169a +S = 0e2ecc6f0a418bee5de7c2418c4ad85d981b18048f94865821de696488ee19291912ae7da1cf5fe9708e2beb18e6cad4e3f7849 + +Msg = ffb8bc80e7619a562d8506eba7658bef0c25ace3dc1d01bdc2ef00933d4fa07b80364e5e5826074edd46a707dbc3b0ab19eec7ea8990839d7fc0a80b70661204c52bcbef57c1a7bdc861c10766033a82dafbead283d911a9502d5f9ef0a39d35ef26f3616212d4bafcd413ffd18b424fe09b48ba02ca5d97ec996205cd49d22e +d = 0a68379b2296a6c944ad5dacb593b302d8ef0b05873ce12bbc371d705f308c739d21f343349524aa72f05341e64f7435daef112 +Qx = 07fa0f698535b011833dac1ac96f3739ecf0c29f7fc1f8bd635f4f98daa70a39310611ef51b2fdc8b37eee3573dc34cd2528d39 +Qy = 0be1a9dc30dabee3403da4f2dac6622e6fb8496e72f3f17c169e7b554efd84ac655e727ae9520feaecc752601d5391270cf0cfc +k = 0630547017103c3f97de48ab6b942db94b2db9ed7dab0391ea9e71c1b788c547abc90088de5b3e36c9ee4280bb454c7c3710999 +R = 0916aac91ad329d6f330cb051941c781b9e59bfbfe45c4d4f6ce0d1aca982e1c612952bcea06784c57c121b14cc0dcca783d0c2 +S = 06a83d93f9bb81c61ac290906d74e2d3b964c39b4e96370f19cfb4a55a3f7901bca3deef4bb79ca6a798fb9b3a9b0137c5a9324 + +Msg = 946bde90a5b903dd281a51d7fa93d80f3fed07eaf50c18fe9fac5acf67326bb18effa3144e25c151efc006a50a274ec6c6a5d573051c4e2d117ceb0fa125acad07a10fb6534a8e5f5b3da2a1136779c51377bf76c3a4a93c0c6158f729f2293e414fcb952c9509f228c804f0adc1daa327a8991d48ccf4f3957c5f8ccbe3ad4a +d = 026046bbb269ddb1ec14ade56175482343a21b7c265026cef3c7d6a1ae0f6a68166b9e6c49a6e733ad2ad64df7137ef230038fb +Qx = 0d09d8118519f9d00df7514d2ff99483473f680b750604580b61017513870a3cf1c403495cba488309e2c084079d53139a36953 +Qy = 0d25e41038c18e4ba6f4e9d14f210b71f27b8ef2c1d4cdd5f63edf8fe11d548d070177e9ddae382fed2b163ff2b58546f10a99a +k = 0d6b0e5d83155a035248ccea95feb0b4d1af818e5ac6d5f41f1a255dd8b482a94de0f4e037b10339d1805dbb6b22af6ba834219 +R = 08059524790304a37f2a0d57bb2b93cec79a827b1fdc9ce2d7dfd4d277e0f71844d335314a30bbec5598a399e197a852b5528dd +S = 0e7870e2a0ed16cf340a04fed4d2048e4e231cb8918345e1852bcd3e30413a2219864851121a34fc98dd99976e2b20cf1d1bf2e + +Msg = 07f3fe1369ebfcbcacd66675bd4ab22edbbff72e68709cb57d4f590e49440f01691f490c58b5117bd24aa2fe2101b59c61c417c918ea08ea34bbb9b8aa17491ae5d9329affe894f42d7586017877fae3ce35bb80c97f92a004380374ec91e151995166e14ac00505fd1fa810cf02981bacbcebf5f81b2e633d3a3db6737890f4 +d = 0bbcda66978ea526f7bd867c3303b625f11b94dd9ee6e2c2f8688ff07f2bba83c662949d47ad47fa882cb7d203a7f0ef5dbc52a +Qx = 04cf5bc624553e833ffbee05ab863e5def062e0d57c28e71d758d6ffd3839504d7ed9d3b1a040bdce8e187ae0b4ca23aa565b01 +Qy = 0fc1a15b4f273737eb92a56928395f6518e05bf946afb65ebca3787f7f8bb3d946dfd26c4831cfd171b4c66c2237409ebf224d9 +k = 0a2cd205d957a20c79699e91684cd22746c476a79245f11e7cdf7e6b74f07cf2fd9eea65eda97e8994aaf51942e15695545abc3 +R = 0aa1da120fc19523e8162e6018e4ee053eb680ebc7e31d00db34f7b177c74c5e6ea344bba3c39ab7ebcd92996a1c156180b7dc9 +S = 071aa4588741208344b323642fe03f1cea73865ba645169df9c84bdbf7488829b83b8da172f1927de1c8cc318ede545c748c782 + +Msg = 3a1cb13438e3bac9ad4ab1d319e90e2c9f118dcf1eb54d6333c674a665d41451f93cd4a9334cd057a44c010edb668254517a63700a31eb0ca474c84873e486f2f8e158a1a7735362ea0cff8ef17d959ffd851b21a91412709b3c729474d2cb40f6ca0e397030eb2611b402916e4b656f0fd868247d80be3ce33d52054b7661f0 +d = 09be3dd3442e0330750f0a6252bf9cb317f32f942ae516a4038dea2c40ca6484fb33611bef016cc64baf166c122e87c15466fd8 +Qx = 0f05a6fdbe6f80c0f5ef3322d8accda4b9ae28c91b6198b888be713afa5e652e907e5ca9aff5fe77b6546115b4c732bbd4010fd +Qy = 00923d07aeb8c947688e7d3dcb16ca69440e2a89539a41b8fbb797523d3b766b46d257b87472f5084992422cebdc4e45556f5e4 +k = 094fe051a13ea8dbc89c4cc5511881a48ef5554de265f0badf8741ae5027eef25c617bb6a3f454a992fc68f5a548903809de09f +R = 0162687730f0ab2f57e348476d1fa4eaf13199ee44f44dad5807bbea4e5ba79e92556f287cacbbf1fdec9a8b78f37e78e52dc1c +S = 01acc734e2d0c81a56ee8c0465661c365edae56228ca43184ea1d7503da3d38e7607b1590f59f5190e5c7264cd0d7a39be71069 + +Msg = e58e7b881a563d54772125b2863718690a5276c93d9e1c5feabbdb5d6f7c7293ff0f89805b53663bb417fdd46874b8e6a466e7e3ff6737930a0662af1d5879b071b0dc4d014778dff26a2eca5992e763bf4c4698c382ac947215aa116515876008a56e5bf547857049c38a2d3737ed3393705fd346897c3beb80caab88e5b8cf +d = 0ed321fa283c662e87eaab99b7715e6cdc9b42e14fa5bbe2c56fdfb381369191a42da7e574839f90a85577485f19446fccaf6cd +Qx = 1bbb34e6bfb1c1335c48e8b44cddd8a46486fad4313581df216002b382db1d58adcae74af0d38445cac2f6cd9e2b439d106f595 +Qy = 084473a5da9f910b4807ec5ff450be353a187af6ace821b18e096c47752b6336dbedfc4b481e356e689fd9c03ffcdbf3e4ea39f +k = 06ae69e55ac1f7b0f844f5ee0b583e652e0e5bbfa4eae85c59eea1485148e34f4d33c9ddd7ac071a28ac0a6191d5ed03e88bb86 +R = 0c3509b6c0356e4a30a82fa7411d1fe17ed190b7eebf9310c44fd568494c894a4f4a1a09e58a4d030d47227e54f7220f3f79f4d +S = 0d44ccff47d9fe82627393c03f882d4b98633961a897381ce8b2cd18f38d69742802d18e6c988a23eb425b294f2c1b84cf42cd1 + +Msg = 8889ea1da1cbed98963941f6ac24f47253ff6af52de920765214f2024aeb04f7ad46936830a8eb04d95aba64ed7cda6ef242f454b67bc2de38a46b6524bd5c96739c4b580e89829a61a8249ec8dc27a50f43b8554cfb6f4fa4ca6875983d4b60a1c6b49f32ddff6fac0cafb64d55c6f594b195c207a9bd920dcf20e0080920bf +d = 0396b805073f3c3b552b1024dcf35559ac44f255b688871a3c6657f727a4b09f3806cbb75d26a00ae1728be632387e804775a8c +Qx = 09957f897a17241eec5b8415ed7ec1bde5df11583255e0a8136d076d72ef377ab3f553d6f56c054332a24098aed6d12878abbd3 +Qy = 1f58eee295765e8a55e388e235e833bc5cdc5d51a1d98e13429bcb7891b25487b7fd8ed804b1856cb6071cc28756bf00924bf1e +k = 021959970a6ad070d1ac518493e309289f3d9d6e2a8933bca715f53cee4ab9000ba2d0147282495e15e63f258dca87a5db7eaca +R = 0d1ca34413341c115f780e647519547602e0361ed4d70402f42d735353696eac6e4024ed2eacf9577252d40c27297e9389d1f7e +S = 08cd5bd43794b32d5bd2ccf7ae4deafffa0e0deb92b1eef9d3ef807d456e459f92e9f10627b7e7574ebe3c2faa858bd3e62e187 + +[B-409,SHA-384] + +Msg = 55053af9370901e38622734a5bc5589f6a20e258627f381fb0c366f3dbe58394e5997e978eb7ebbc530f6e6186f48294149b8594fb551c31c50521a8c4d67e5862921695604afb23977b6a69b21abe75966fdd11bfbdb6b51ab0a474c5fa07c4de7872a3bd81acc417655090558dfcd5af449b3347e61fa9e839bb9457de64c1 +d = 0a8fe323f6736bcabe971c7d964e75dece70cb54561da48a11c40027ebddb23e41c7b48600f569500fe8ea2abebdf480171dde4 +Qx = 020f2dfee967949643b6cb8a3810524044a4b873a4984e9795e4dd7976536a2d748b8cc636ef5c8fc92aba5677c4a0951a33327 +Qy = 0956ec5433d73162c9683558f0dfe8870cfe66575f2c34c765372c7c3bc3b291e95c4e3665e4ec5e72131975f0b1f5f30b0c844 +k = 013f26e13d43ba05e01f92457374fe2ad1ccf94ebf22334447f9360f7f9748bf3665ec3058ff6184fbfdbf7de9e1e2131cd3991 +R = 013c4c290cf89789bd6dc523deffa20c94e92e88a76eebe88457e30cddb066c7a43aadeb0493b264cdae67532db7dadf879d991 +S = 043bb7a8db3d79938beedcd6ce02f375e26ce807a2afd4fc446f372fb09a69fb34734df5dc8f6393f86577a8d29014494379624 + +Msg = c4264330534a6c2bbd8a3b757e0912558302ce302f835ad8c5474993832fd30036fdef40b10ee37293e871db5b0b149654f9e543e22111f9709ef45732125f713c031ccfbc9a2f3aba160c241d27be4dab87ab2fa9a795752ab2daf20f9d06a98d90d01c07133adfe83cb11d5176525e1bba6a9ba70ea48b224d46ddd8103f65 +d = 0105938ba9f25034da3e032dee121bdb192ac2128b50a2ed4bca042e96cfaf4660c9d35f3e67bafd4c99f9447e6dc408e0c4471 +Qx = 0f1a9243920d7cc26741eb828bb55e34c140b0e52837792ed6274a9aa6b5534cdc5c596a1141a746dee380c0d9c2f77094c36ef +Qy = 1393ed8c609751550ffd077347712f3b27a869cfb1b532c5b19c381365ae5dc8fbffcb2182777a17690616d71c66524017d861b +k = 0fc52aa8c590aa28c5353568c9dc69734adfae840f1e0642b57863dc7f4faa37bf3ca789a3d7afb32c57f66a61780e253f50af4 +R = 0c45b1629bbf3273c0e785a28cb8187ef387502ac4438a3372a5c72206a15d7c5ecf9203ecfd7e0ac910b6ceee3be50c6664f81 +S = 0a0c2d31a47ad5f9dc2d42dc36714cdce47666f6e2f05ce0e7136f166647540d1e5fbdc7c9fa0def8962f44f2f8bc9addc10057 + +Msg = 3236f1ad164e1b25d828f5202e3513c80c72a577aa9af56f041fd96cf5a3363f4b827723b1511a2f16360e32eac90ac55f4ee1146791420ef9e2af333c17d157b00e43992ef6f2be2d2f211361e468413dd93fb69232f0a0d110bc5fff361c0410344aa0636bf809062c73a7ac7c142063912b6ad7e1626fd2a384f35faffaad +d = 0ce11677ca818537dbaeb880fc967dc8bead203a2538a55e756679c4a9e7975b9b3e6aba4e6c6eab4152d0c0939027e9b0bd92a +Qx = 023c78eda396efa28c92b120c4ca1e19dc6c467234f9f73701d8966bd0826c20122af5f7c9ad5a5b855b6dc517c22131fb0b5af +Qy = 1ea47619f91ed4a010dd49ece7ec78c5e98297220b4c239ff4a8c29aaec008011acbf7e4f985c02311ca703bf4ce4ba43412ecd +k = 0dae763fced0e498e3efa1c6c412a25774c9bd6cd4bce25ab0a7266705cdd54040ec55bd7e6708e71b09ffe9c19af9a1ed9c878 +R = 0a70694fe5da7646184b23b4b434bca1b754257b8e7fa9994dce4a7a92b7ec8c7f8cc69f18d17915c6bbca24f6621f9563f7c35 +S = 009e6ba97ac2be8537afe7f8f8b9cde8841323b5cc63cf2ed46a7913096ff8d96040296a1bf9aad691b60e1f18233964a421fe1 + +Msg = 6c400ed098d8369dab6fde3553afbbd4d47836d0d12dd16015f15cb8d067a39391c85ca4e78c62b8b72c1592349ff8dc52db8ccb7fd80c085fae456dba6f4a2378e184dd59238c92cf04e40d43a66b342d2a1325a0bab12b1ac857f0564c27b35e6abed02ff5bbbdc3770ddbb2ee0513df48bcba925da6d61583076cd3129603 +d = 05a239ae0f40d76d8d3589f1662b5ca12176a4b2784faa8339b54e96a1e1294433a4d83bf904196f939bd8b33bdb4be340ec703 +Qx = 09d03b7985647027a17c06b30ce9fa1b43d0484195f584fc347f7003802613b524cb5641db3425ab4b3839e12c012853ea83843 +Qy = 0818f5e270baf5a771627b098a6f9ad8a8262e331c299fa0722a0df6ca09bdb9c92d22d72a73567cd5497d06639aa47349df207 +k = 0c22251c73998a3a49b3fc65acf01438941a8885d1c5072a5d41d779af70c044153fed4080151b524af402a4e8ede4448b717d4 +R = 02d3a7ebe5de23e0e601c6e41616bf2a9a7fb6193fef8e3f0a7fb8128a925f7bec3833669d1a304652b7bb1af5186b2f612da1e +S = 0b7bb17155068a8d9b3412d04d407556ee133e1a704ec5da87ed19dfde60517501af345e2e744d35d844f8ac8ad08b13b17c498 + +Msg = 039a149eaef2de30b0ae457b376ce6fbf88afd4cfdec02d3c5e00400d3b0484c1cd6ba74db5de65d6f2fe39871349b30fdf1ef29bcbb9e182eb3ec5629d07d98354a5dfa82d7f0db3dd10d1510c0dce086848a198893ca5ad24a663494f0596b4eee86199ea85e7e8f2f76e7a6bd4a052c54287f61b391f1e52f96b606151c34 +d = 0077390c62ac41aca995640fde0c79c76f4ea8a8dbb22323ed812bee837ab8798c5d0ba976c7aa634d4b1c2c155de2709e7352c +Qx = 1a9357770270c528f2af991c447bed86194d458f693a871ca38f271a9e6a566f5b9ba3ef3d2f9bde959e42934c95867b280e9d1 +Qy = 01f3a0516fed36d3622fae3f44d87c4bc67cee0a995cea242e530451d43781f2ebd163f6f521497fd7a1a6c7b93d33b77083a5c +k = 02555cc113c8516d741b47ca41f53ed07d509845f140dfe7dffbd01a3f751ea9f22e12c939a2ecb1827c0e56b1b1c5459b66aa2 +R = 0e88333875a507520d0b62b35146e37e7ce4e2f2478a61adfcbc6e1aa9fd0195a4960c633d9d6aa9a79323b7ee00ab802768436 +S = 094595255e8862d14980893c095608113737f42b05b561771f56ac1d54eb521bcefeb3928917c07c1bae74cb9aa80dbd34962d0 + +Msg = 08617d04fffd6644c40f7dd57919f7dcf3c888f4147535d12ca658302305bb8e220bb17ccdc480254004b9035b357120580882ef86aa5a061b2850100285b7d61588a664dd4f5394f5478e68a80f610c9204d056009c1c9e902161eda33ef61aa902e96b6f094a9f053135692182943d38b9763055a38739a2a2d133c5dbee89 +d = 08bf23b09fbbed1b55769907aafb97f4759cec98649b2c9da5157517d4f85bb70157076b5e4aaa7a940af042302f8be06a84ab6 +Qx = 0883c31c474333f74ab2b86f3eac865c4b2b54975ce19c5cfd23682d041ef3deaa43c9f9e2c194ccd3add6677de31fc9e07dfad +Qy = 0a5a36b54f4eea6b300491ca22054280b3f09b202b2a6b55df9e3271c763b6d8360a330c16f936d69fa463bc0c4071707c9cf95 +k = 0812c83aa9dc4139f8c3f7c55509f9e10e6cceed30e16afc028b1904b4d260ed0e77acc26e711a7a8e24c75fd780ed893c0bbca +R = 0fce07c6f791a05de29609b59d55b7062e82fb554341b2b2a8187baecb9c95b01ca5dbf8ac88c60babe10af2edf5985b35e10db +S = 02bd026a3e45ac439647a483261107829411c1b4a9ab603c080b92f605cf742754b654981460cf7aa72b5186b59d224dd015314 + +Msg = 34c959f549a307f21b850ae105f41299b8bc94fc292aefc61aefbe0a1bf57576ba8d9b80caac635e4edeb22530163fa9629665fcd43959f68eee32482f1845a78ed7278e6e43d09ed6fedf465001afc0d61f1d2e1d747623e82a762576b879c7024e34f43104593cdd691d53bccaeb8f212dc29bec6bc94cf69d0a8491db124a +d = 0082ad05d19b8e16f80e53a4cccf6869ab5128c5e622ed146fa8555985ccd2aa3b9957dd374586115d4d75b1c01cf98ecfc3646 +Qx = 04428d05366b0a46e6578fc7528d185a3f85da06c4179e9c9055dc0a7fb4afbc53c94954f268e36d2ba8731882bdd27d9684c81 +Qy = 136ba6048ec672601987e9b7402fea24f88c1a94717ed5a83794add0f31680592d6cafdec147dfbc400e73a6ba1d23d4cb0d707 +k = 0c00c897edea7bbfe1913e3da303d64d0d657a83c1eac9c111722b17c65391f2cf67b78219e748ceb269d6c65f01e92e6952979 +R = 0624c5bcfd8e0ef22ee6b34a8b26bc051912cabac102cbf56c364a743e8150195fc55a3fec90a8fabed5eacc1799b565745bfd1 +S = 0cddd4937da8176ddf0de7f52a4babb1f6fccf861533f796a487f35d060ad9ed4435e5a67166782b53c20bc06fd1b36c265c1b0 + +Msg = 514f4de08a6f49edbb6797c9dad6d33bfa367cc1a1b58a5becfe646c7f3352d5c5d95f7456e7112c4ddc746b9076b9756ae3916c07bbe6d3823895774a42d25d44b3309d18bfe7e3ccb1f85dacfec1654778c19e2981a853c1f40a7eafd16d331093110698c957fe9f1d86582706a6885543248b944bb70cdf9d2ea89190cb02 +d = 0af7e581aa4f9be5815f0c447e39de00da9194eee5e5f609668b9b69930b5b48a948614c2250260d1917f0ebcb00ebda4bb52f8 +Qx = 044703e0b49437315a64e397085ea2ba3f2e2c383b168f31a922e5916d590344906bd2a911074b7481aae7f3f8f4807b110f2e1 +Qy = 05a13607a3bb89a2a88e27d5eb5cac4eb498d34e6ea861c80271ed0c73e1fa893adce0c1982b8a8af6a0249796e5276d369c3f7 +k = 08e7fcadc844456f14ce9354b218d519d86c0c5211d62904c937d6fbe8cb16264d7d41d98a15e9f73a636ac3739770738d6b46d +R = 07aebfd1681bd5a2f995ad4a709e8681da742649c0530684fac251494263e98d67247e1e4fc174b409e7e24a7b055500920cc82 +S = 07b83b9b5133aec165316021472307b8b481e6381754a9d0b4f9d683c2ee7cac94ed4d8a72cef61fa1f6349b6c4a54ec38975cf + +Msg = 4e5d16cb1dcaa1abab1e371e1de02f31ef4e0944dfe1fdec45ab64326435b2af9aaf1a6ed8fdf1a6ab1182bb53a844c7cfd66da30aec0d41757f5988ada0017c4ca752597a9fd3637668bc1a92bb1556553f28d66805bb47f1ef91908ce098d452872da9800e77e1fbd43ffb0ed6fe6a62185d4be73ae96c9241b82cefb2da22 +d = 06d14107b08354e6a41d7d7d50c004419db8bdc50db43428df5e86084551237223c498bce71a17e25695bc438c5c09e009c60e2 +Qx = 088c1517355cd417a698b648508fd07a457ac13a49d1bad17dbfbc9735ee58343316e3eca570bca130c753e17a69fe5bd7baff3 +Qy = 1397a697d2113d94daefe6be491ed3edce9449c707a57af3a164d172cafece564d686fe0d25725c2919c60889af4d0354b05117 +k = 0f3bb2dd9eece25c56159f501af8b619a8c279d7ecbc08ee2af6b82ead80375e9c07227b73a10918d8c89d1a2b12cb76427a7b4 +R = 0407b224d8d9c0f11a8e09ac8d654dc6e1119e2c2804510a84ec61f9017899f9613e37d8166e0fcaae16c3cc11e9f739968c687 +S = 08c2bd7d02c4c537a308fa40db786ec64fbc2dd4c142b18cf9bcad66199afd4f44cbf221adb3837e84173d174e9c0d534720ad3 + +Msg = e29e75269754ec1194270f5c9e8267dfdd8c696008b5ebc92bb840981fd065672f07f6a0f1b19841adfc51b478371e1a0db9c3346a9f0a4ccbdecb7040191a00ddfd0a8faa0e69fcf544319c0155d02797eeef99fabbc55078f9d852927c23fd931685424249b87ed0c70a4a3e2d3b9a2f92830e7d8f7650c0bffa8f8986b7d5 +d = 099d96d2dc9c79549f031bd5346cf6a8544c312a3fbfc560dc8e378efdfe025b0e6e61e09c04c8bf4133396f993b0906c33dd30 +Qx = 0883e00d72c60f22ab085a90901ba3e8a510f19c3d62dcb3ee5066e0be094cceb30bfbed7068d0bfdf634a53e2fd002dc9e454d +Qy = 194baa5d7ae2399965fc4009ea83273676e66a56fd35a5939c26ccaf85633adf78b33dbed6da305979077418c625354c7fb6283 +k = 0c213540a452c4f2ef275dd844402dd5ea590f7df41ad35523edff09b7fbb096f8ae8a4baee95428fee03a9e6f6a14ceb90e289 +R = 071779b477245007ba1ef5f05446c4a08d1c2eab550db9c053e4588c9935f07ba87764f0fce14d4a7b982ebba89cb056aad8cec +S = 08174bb56cc85ebe7bca1de1f44cf93cf478d7fe59001c5947c66b837bd3a6d116f99dc4f9acb4f378b0321228518e1ba0057e2 + +Msg = 1a538eb447c18494ad5a5ad27be67fa60eb2c5cb2404eec1dbd7244cd802b17ca5497e779d5f779b981b165dab53ad19fd7bf2ea7dbb9b4baea782a43d758202f147e59d6b6b8ed54f4ea084bc18519943f6894d603e253ba3e8e339a6933bc3a0a47126087038e1c813c3f2997aae321b7c95a802b4b73fc7db95897b7c91e3 +d = 049f347dfd361a65910e97fcefbf60013a54837f2ae657d65e02397f59dc6bca27704fed3affdc3d833fdc621cc5e5f99b92a63 +Qx = 17942b58d42da750a366d7e4cf4cf465c856cd911e5352b50bc8a12704c1ac6ad54f9465e4fc5402b373d8bd4e4f8519341f133 +Qy = 10abcea49c66730ddad7734eb1311b2626b75ebbb299a28c9d60937e6833a9b3dda052379fbcf7875f18680924274fa1764158c +k = 0134c70f031648bf470ccca4ec19c837051bf700c851df564ef3ceb99d7d41439293bcea0c656c0e5361db92a03def51d7e4f26 +R = 06c0f9935abc5034a8b0a05e8d04de699b5916cb367e834f13642f0003510bfb68714be75c9e35b5e593eba45fe151d1df56d40 +S = 0930baf426b33eb4afbed64869a22712591db11acee7c4d3a221a1e98048f05900fe14816006854cb90631de5797f91176fdcd7 + +Msg = 7502c755bbd385079a4001b8cd653287dc3054f3b57de19d0ff8f63c0308c64c56f035117a8971d43654f89b52e923947e4760ac72be073136da70c5ad7ca1658cc0a2d2a880d3a0c0fe636fdb27b77ff260c4c1ef8a18da8e9fd777d732a37ae9906e6c4f381f0a3d941048d5a1f6f2cb8593873fa4bb1621a44bc2bebfbcd1 +d = 0dd226de602af4e9f8e25784bd1bbd4cadb0a8aef525d5e2d57b9f3555feb698765672c5099a7d6dd5faaded69d8d68b4804f26 +Qx = 07ee34cc7a24e2e693f9409f52796427ed86fa71bf88c923db305ebd5a83bf3b6f7612847f16d00f4a25614299a2df92bb693c3 +Qy = 1f63f177b54f8dd5c907ff318b66c2bfc1cee09348c035a4413fa3cf5acde0db1c8af4fb8deaaf8a3a6f8f06b0acfd20c6f0049 +k = 0e19c21b05c82dd8c873e5f30c1e3aa9348327f959a4dbd9c741e233c649a426cf7bd9d8e93232e496d0b93ce835f80fbcfdb2d +R = 042a3907a480329a6169b439a6945cdbe8e4572779c43fa6cd1f15062559dae9eda2712402ccbdf03d88a8a68b691f1f16f8f52 +S = 0d09fa4966d171a662a9ba6827fda830b5404f96f635edd8482ee009ec5c7b64a2a6c17793993610ae8297efa9fe4c35ceb5001 + +Msg = 95eca932d03f1df2e8bc90a27b9a1846963437cdafc49116ccf52e71e5a434cdb0aad5eccb2b692ca76e94f43a9f11fa2bdf94fe74af5c40e6bfd067a719523eea6b4e65730365ee498ac84c46e1588b9b954f1c218920cbf71b167fc977ee2a89429590f43bf637eecd91b0ce3be2d66bac5847205f76c06b914a970f543e59 +d = 0b6fdbc9c8c76cb2b822a940d8675889ca6f5132429da795462381ce29313a23bc132976fbeb346ed4c691e651028f873ce7971 +Qx = 147647d267afb4bdadf54baa3f5131e79dae8103f5b2ddf70e4652f9fc5495123be97215b811554241c53023a247936053288bd +Qy = 15205cd5bf0c5154b2dad8367e1b487689b898acbbf44f9ed67a37babbec739804dfe737b324ad663cd2cad79274344397099e7 +k = 07321d12d616dd2ee5f843d6ed7e92d18968b3a76c0e4ccc167790afabad1b7c0dd53d82aacac93d98679b203bad88d5ef0cd75 +R = 0672c5607acc646c67456ee77f2c02117cabd241f728ace5117626bdf91662323e7565438f46a3e25c048a8e2130e27fa1fa2d3 +S = 064aaebf9f2fcbc843ae1128eb6c7e7d1fce2b9901dae0f60afbcb08c7f2ea1b550e159947deb87dd8959921846e2923880db6c + +Msg = 8ff68cb00d03e730dddb05fe0b2344689529096c3da6eeecaf097f22c7fa340593106b1f6726f06b7ce7358edbcf801ead959438a42f94cdb467b3cd5b17fbbcf75739805f9eadc869c33c604cc58f81591b0b8bf4d42bd53a801f0f829a31af6c129fb4f20f1250f959754eff8c629b85a716b6a18465b6495798c0c5166c8c +d = 0203d77fac64591eb9a18de20a9d5eacaa1c3ec58a5ecdb3008c2d642e197141d16b3a9fdffe61429264f5b420f5e9926659a4c +Qx = 00f66ca09d15d0991b48ce7afde9a148565b73807e435ae0f16c14cd439454745f8ae153786d7c40cce3f43a8aa4f0564cdcbc3 +Qy = 00f4c919b7a97beba2559a8ad0f85dee40e8df28e23732d7de655262209a5170f94791e255e77e8c8cd64c8c9900092e0ff9d5c +k = 0859bc752300d4ba5014e302aa4cd2a979b3097dcfde5c59f4bafc5bc8a99411174d2ef3f7377df5a09269e3d9461be61801942 +R = 0691ea76acbd5e8137924bee13326ceac8231688af8595718e210bb857d6619c152e1fb46e03fa83bd6b5d81e2463f9260407eb +S = 054df52eb86c679d8f8514a09f5a3062d2424cdc19fbf6927f744aaa8c444223f1c28ddc84b1d135a886eb7ac7eab3c7b0a42e7 + +Msg = 01451c4f09720cd53377a5ed04c907a735477378ed960235a833049d6bad6e6e89958b4c4249bf0f6d4f043530c9e5426deb0ec3a12b7feb4860757b41bf602ca95655155356ec35a2db8e2657998f56529be4b714364f83a140846308a2973907ed7b08e935173ebbce5e29afe1444cd51c92824ede960056439555e7e74450 +d = 057a2e6a59d4871c3d547690237dd9846d6d5dc4ec0678aafc9c8669af8a641eed67bfea4b05fd6b3b5357ec4d0caf352691ea4 +Qx = 0351aaee4207bdac826ba17e3b08dd7f94c0c8ba0d9829d7bf0eeee7e6375458b5457bd787f0ff38564734b3a0412bbddd7c371 +Qy = 0e09c4dfbc33d61d69b5a8517baf5e4e1614920cbdd89bb05f0420be757253fb92308dfe1de8db822f57b67b393d8a70d989b26 +k = 0fbe560003dc220e4c966b21c874b828874a33a93bb69c49909376df67e5df1652fd91a1d73c7733f26c121e7a3b2d1246c9a61 +R = 08b85cf3a14fdfc69cd42750baf362286940994479f6ed7ce1d87af12c5ae075b311754f1d37d8ed10bea092bd3d9f7afd2f1e2 +S = 02360bc1f7a98cc87ee2a4feadb98554cce59aa0fbfc087747c7253e54c38815cf91c8517f5692f95bc7c3a713fb6ac43a34f7d + +[B-409,SHA-512] + +Msg = ccd494ca005ad706db03a3df6d5c6e876ef859ec77a54de11fe20d104377df1900b6b192126c598944d19a2364b2ae87ad7fd32265d59e1f22be5833f20767793677b628f18e9619f8ca32f3af3b41c31e87a98d1527e5e781bff33c1a8be3a82ea503e76afec5768d7f7dd1f17dc98a9e7f92fd8c96fca0db518bd143d82e6d +d = 00a3da7a6633608fcee9ce4253bbcec08d41ee6b00178ceb017de74e24d48fd89107c9f2db3556063abe3cb011938f4b4871795 +Qx = 0a6123b122d7d0d766897b15ba6b18b3a975d3d8058c9d359c6c6594cc0dc07d9ef6033224b4aed63d319cc2747c0660e38897b +Qy = 1ab5fad5e78f380aeffca8d15e60731720184ed456800967b2ca47d482957d38409ca07ea798bd892b529774e44080eb8510e6a +k = 0da042642b3117f30ea5f4b354047b164bd128696b8c00cc6fcc767246daf7483284e411009e05218246830940178cb4ebabf1b +R = 0e4ce613e6976e9e1c30c0c93214a0a37f0632de85eaa25464b69a251d592560b2039fc59b15ed7045c29c268693d7c9e06d8ce +S = 0ff3ad5ca70aac94facd842fecdf6a28afbceab80b549507954b7dea6da06d1facd11e0a88e9c2a549e6971a08d1af75aba8363 + +Msg = 5719e50d939a8d74efb444eb5a77cda48cbb59e7f976cdb2ea2848bfc558718b39ce27b893c229db94bf77992222d1746f8f52f858f85124a28193ae0da039c53d484681785f3367f6516fbb8a86560aea9e3428551facc98cdb1e9df8e2f37db823a7abc589f667b5c93c4c47061400220a2014197d514217fc252cef5a2433 +d = 0384723c8b4a316b450d1fce0b2645912b8acaeb3cad50860cca43bdc0206ed5b3b60ebdc29b3eda305d0d60eeaec261edc24d5 +Qx = 0fb89d87ca4282ccd048606e4d321e7ca73244b4d0c9d3df87d54e038a14939138bff33c81a9ddd64abdfd698bf103e45c96f97 +Qy = 04ff7e1706688a53a5544f4ed0f3f5e1f0fbd6f21174166d25a690f260766646cc6fb39020de9327199225e44f3d95c5984fda9 +k = 03a9f5f26eac81dc8ca0a17acc44322d43bfd18edcbafe24113f5e5fad0ef0a3db75ad1b2422c7321593e41e76eb2a767a14268 +R = 0c311000c27539247059e4a8d789ed4db93fbaea021272a90045bf6fdd70f4f32cd1e195b99ee6f03f4fb57c3a115ffeb459af1 +S = 00db8bb46fe0f99b4e6e1394a5db283e310b24d6006319986dd2c4cc169c775c89d4ad98d0fdbc3c0bef6b7fb6b43ef21049bd8 + +Msg = c84e5702a339259a61b5ba8ec1957f23ffc4f1eeef3a58f383d3731bbaabfcf49ce2ebb597960ac5115a2af1c62b193d4ab6c24433d5f168a1752e40145f19aeb6dee889a53a4fadd13eef60e28fcc7ed6a9b8b0ca286c1b3d66a4b2c327a629d15c148049e3a0ccdccf05cf22c31956014595e417060627c8125bd7c00f8850 +d = 0bd3136647572fef3de51b12e64b36460bd3a27dc660c164fc705417339cab21f9e1f9be0f3da926df459c5ba58b701d306e67a +Qx = 0f45e18834d1933a2a26e95467b6db85d8c3da372e607907798745cd9847bb8f8b51f996c7293b51550144f227933ba26722685 +Qy = 05d8b108eb3591b164745d116c80afdd4870187061c75af9b0c3e87dc8262586af14f4d6b1504d274c07c8e89247196d8ce8166 +k = 047a494645b99a3469369b72cc918708ebf453957b49ac4e209f2edd7a4861d014543754e37e1d1a0f477951a0ac2b5826a470a +R = 09de9e0147e1a268f80836d7db43779ce12e7947caa851d109273ba7e7dc7fc52c601f5bf69cffd5adf0695cd7db8de2a64781f +S = 0561aa76e1e9f2c1d4aaf6e2da143f67166f09199e1705b631d650528e94d643768cd611467284a9f543e50520e3e738e5d56b9 + +Msg = c90bf11d04a708e64b6f94d4cca64b92463eae878c377b188c82c1c5f05a038be20eca2e18034d46f00d9a6fc73c4084981748ee9d2915d87aee4e2321f4f9e11c176f01281913e324700d9cb474b7134fcc408fb4a7006acd9e63d4578ed4c2729d8e0d01b1e6174a43a024ad261eb644ae98979c3cdab75af357f6dbdf5db1 +d = 0495be0b0a9d357f6155fac008cec90442200bb842d89292fde38b7256e4117284a60249b3101b3f19f778b680c0d1d7422b84a +Qx = 11119cd910d4e962f54c9776c9180e7eac2f71cb9748ace4b7dfd2d2b3caef4964c7a55caa9763e008de600b727068eda9b9865 +Qy = 000b48246cfb7c86e9dff4ba77a3a53dbb1cefa168026b8929c42c3b0251fee5746897916e50f07dfe8b57baab7964447a2fea9 +k = 0ad4ab5ecb84118c33a4b06d1a9f5d2c4f1f3dd1cf71af596eea771f851d0371d2d72593c926d7b69b39cdf72931f6bb11d10cb +R = 0e959201622673d81ca16ed94e9e5be3f38bb8db48f9c09a585aa31ff39f14128d79d604a5f93c80aa961c85bbf99e276937f4d +S = 083099697856c780936ac01aea5e3a4d9b6e183639cd200464a5cc05232df30ff5220dce4e2af714c580d561b72dc4969166a6a + +Msg = e9b2a33906a1079280100039787377c2971c378b92e70a38ab41dc23979d6fb0c41e53a21b37632407adac6f212341cf6af8605b4978c85c9c16960e1674247f1795cd73b99ff28cdca024f5078490513c77114c2f52288f5376872c331151d7b2c08f7794f2c1f9e0d849d32d73636f0aa899988ca561a76f74543b37cbf3a3 +d = 079626354dfc4eeeb51fcf232ee9e6b0130c9bd40f15ed45606bb7faeca8f359e0c3e18bf12769254522fd4077eb24bd5454871 +Qx = 07ad047bb38bde6ae2593e1e41c36b7efbce1e0ad08def9b23d25b7ea9aa336eaf10217df16d32ada4af03dc193d44e6c77e677 +Qy = 0d2b9466ecf321605b9f4f9528124108007203ac32cfdc7cb87e1790ebf4bae497fb87011e0a81068e66a840d29583bb970e24c +k = 0074548d1a3df580e45babda6096f4c78cd70945ff190d9da463fbb03a511c45d45dd1c46dc0b9521579fb506bf015f8b835680 +R = 09e04e9ffc2cafdefb600cf61e803eb78cb416304210165fa7c93c1bfefb02cd4a255512622d524141de02c2cbd193991dcef67 +S = 01a7960232455f27768acd825b8ef91d4efacc38684d05a900a8512682ce19787033cd08c1f2412b481b88ad02dacc0ddaa0ec2 + +Msg = 672db3fb8cc8e5f831be700498d3ab3aef14b7548e8011b21351215fb6dfa09460d18f52c02c8815baf396d856a429bb9afd602a10c213af34db80447f4c06ab4bd28873c88eb9639b199042d4b2cb13cc364f734fd4ab7bebede7dd4da63decc0cc1f84e34d760013f66d71641073f16c08078880b67230f2d6c6bfe17d206b +d = 0ab42bc7d0e3c23f8bcf928e25f9f027b56f270398a1d37bea0ee5426b944a9c9ba6d0d7796899543feedb470f70b2ab148234f +Qx = 1415fe81100f208ec8afd5e882e5773a0c1d46e44627732900c7e1722cd77b3ae24438a8463bf571fd6bb422d7c583439c07cff +Qy = 19c3ef3688ed397640e873dcb20cee9755437d0023646d05612e8c360717a2e80e80f2b85860d71f9876f3a68548da7099f601d +k = 08b44ec25214602de46046b2c94a45f64e9d0903f6148dfedb76a80b8e6314e87bf7dce8e73b14bb274a88fa39136a00537779b +R = 00ec4c5bc88a959a1234413026700bf5d4287a0263fe75daa16693bf74cb5071a64eb18778da0a31210347aaa33130602f6b597 +S = 0b6c29b9177e89880f3eee3aff204b866020b3bf77d7c31204af383d9770804660711a8579a3f1ffe325f225fc7e7894ecc601f + +Msg = d7fd06b89226cfd66671ce5b4b656228c52d986afa7f6f30161680eb0c9cca177992a8a8c40167a64165c518c55f678702125709361b536bd928567c97737bd750d0e2e6e0c00296a6ca565f7c05cc8c54ae7a4e0c334c6a968fc18a959c18ebbd924457701316a4e999fb11084520dac68dc2d69187134c40891af0355ba89b +d = 07f7aa2216164ba689459ee5d5ca29e70ef75a5b2a4416ab588df1dcb9164330c0b405a9d80c3acc41c19f58e24e17ecbc0fa7b +Qx = 1decae837c7258ea9d90314ac87c57aa6d49828787054cc068edc1955245271acae72dce5c9cba422bee54f22e11810721c1ed5 +Qy = 024cdc9e1b27e5d4bd024654df000bc9a0181f7c0f4a90572c75e16b679f4362446993f9920e2244527801e8f6b1e9398bd8382 +k = 0463202dff25e6b9c633b60a3edcffc1a22031cff44dc1b0a5769214693ba02038fe5dcfb4a48db7ec49b33068061616daf2fa9 +R = 08c06b72b73dc2655645892447fc0c0f8055838b194e8fad99fc6bd50774e1ed08313eba4141018af33af95a3faa20b69bcc0bb +S = 0958f104326df6008135bfbaf5c2980cba2833af1b4f04b5918bb51ab0a0df637d6a4af902a5e07db3022c134c72315f25972c2 + +Msg = 83b7e9d3ec638fef51d2885fff5490c94e2509c126608f82660e5fc523032f3e85d69d9b76af145f6bd916dda35775abbb6d1902bf38880f8b9259822055c5b1bc726c51029972cf7474cf2a812f3251aa71813476bff55598d079f075a40c6c41498bd865ce960c518bef75a873b9d010965f342dc4b35ef5c5972efe6fdd18 +d = 021d84f070c6823a70f1a74225a472118c93ce9dc509aa6064051ca4574939dcfa96be862069424bdf1a23f62f2868326422e64 +Qx = 0f568f018b0dc4400bca3e9e4b0e5bd5245f15dc7acbcf4360b0be2ea5abbb87a3cd76aa653d32858438051cbefbcc4feee6f6b +Qy = 1fdf1e1bd7a2d3825df14f8bf8d5de825095663c3014f2eeedb9bed3c3416d56f805b623f40b847090d6b4b3bd5abc98ea55e48 +k = 03344dc1cd950a9c3d039b6fb6af8c5745395d2a3343d86dc6670580e331d59f6c0034367a6df52423a625d70292893961ceddc +R = 0fb010ba41d651fcc854762fa1437262eadfcabb95b9502a40b50f20cb34fa19ec570dad2e0521809ecdb2bff3f4e7055c02bec +S = 05a9c2dc0c1f946ce33f2f434c156c236b09098365a7f31e238b4685e7cd8c86a0b2455e5c83907167c1324bbb37e66e0b2768d + +Msg = c62c7bcc860f0e175128e1127dacf935ce62ae794cc4a0ce7966bceb023ac0498641d7281fbc86f9ef470bbc77f608f83f8d0dd6299cf08f2cdacc7a9642e4246df131820220e5c05d0dbfceda7f16b86add4793e9b6244d96b5c07cfa23574ceb43e8e8b5483192a92b301aa3b37702b8f94f0129d8af1617896b34990c9b02 +d = 0b6645344d17528968c719091b6e2072388881dc10bdb4c7fbf41906cadf3699b30f9c1dbfb4796d009480664e6276c0359e5db +Qx = 0b164b075b80fc8b8ec785d5c2ef84d49f2f4d276546c9cf2e17ea4d367828e9aaab985c5cd0882204e293dba0359d47d9bdc05 +Qy = 0a0c61f181d5d06ff20d0c41cf6d6cf7fea860075cdcbbab2efa0950e2276dafd4258a39c0fe4c45f3c04f76efa7d41392b4d34 +k = 0c497c621c5cd230fb1e4a4cb3af1cc9d8edf4af5c4af7f15c4ad0a8835b54de52d83bdb3433808a67628912a85c5d00aa222c9 +R = 00b22e5773aca4d97d2da846c3947bf9cf2474101a6f0d39d31629a6aa2a4c3a77076a671e37aeb4cee0a94e82e914c8c553e04 +S = 06ccd79ab93e344e6f112c1e4a39e8505a2aaf5cf85595cadc6ddd1afb0b1583d9334cf1c48f26e5baa38e05b6b52f9f12c141f + +Msg = b5bf38fd9e822925254418475a1ce762a94e336f12b156b1625a4574fee11ee472d537ef94b4a4b1c0a73b0140d0b818cd06636653e6c07f0f100118242a7703756f1cb1119b3477c4ced99cf45e07e83b7f2749c1a5f8d8c9272d221fe17f7c6a5fb0f8a16af46f232ce406aaf565c6b2766a2f6528c82e74fa1c0a7fcfd49e +d = 0f8c2f770cf5f8e1f900e996ecdcd84fcff5cd959777fd005d721a419123221a3237e39834b270d37752470deaa6cea023c5058 +Qx = 1f861984fa06f15b801216a1c33672cff43740f0f736b4f4abed5656a1bee33a2aec431680942f2b0b0dce9a9196b49263fe183 +Qy = 18633f4e057bb6d70a434f919b9ce4b7d9e61fbf46c1d9638100d77881755fe9829a69d696d555b1a26e25ac1a1c27b40f909a2 +k = 0bdd99022dd964306955c57b226aef036527eca481622618fa7395f53e60aa95a275f1f2d6e7354d8b55d3e83c85819e818199d +R = 02f1330f41a86c09205004215c24f42fe582da189906fb23fbcc52136fcb4970a33b896113eeabcec8151cf3b150eaf1ec2dd88 +S = 0439507edbd36ebe4fa5df34d220c1441e1a4175c9b0373fc85669facebb5bda7a4b415c269a7add207b461525c6cc94b7f7b22 + +Msg = 6d3474770933ec01b76be789304b6fda423b12a0ae8c87a5ea8d7ee9f71300f39440e1c7f5aa4b47c1a8628cfc3a490b15ef292a741344f40a8fcdd02cf3863bf3e32d53031f503703deab17fc52b3d4032f4e237dcc27231b85d3fd60b49ed7ee40c3344948d87c3f47564d20a11d50e4e520bd16c8701694fc70901a5da625 +d = 0144adae951fe897d5812ee4a16c0be4c86c5e57e615c398f5768a1223a9be20fa82ceccf8a16a31432bbfd17e594a4cd8a6a07 +Qx = 0bce072255f7cbaf565f82db122e9c582ffcfbefadab6d79680b2506792028b200ca7732a98322c290916c66c8a8ef77df6a2e5 +Qy = 1b4b6f65e678223bdbe5f8ecb68573ae3d7f111dac37d4fe3c0eb768c461187fc5859b13452381fe676257aa445bc7f38b4919d +k = 0128c12479b7f0630374880b214aa26e4e8626deca57148a6c6a0e37a97e89da8acbadbbfe7db28a0c5bd17303e1342af711f25 +R = 0a95124ec95e35747fb568e6659ff31867a4cb7c00985b36584201d1bac0775653e0a8b54cd9a9067ab3de434bc2cdf29ae287b +S = 0257e5410a6f0bd94fb3b5b10500fb45b501a3734f0c718035a9a1516d2f88e10d1e38b70c791028e262e0c3128cb84e6064ea3 + +Msg = 92ba7aaf71f625f7a2e024058dc8739da3567c306da4a812ed9e1542b7d1e982c16082166a59720203f4524c3bd463a662c26a82ec7b4376545206e650eed0d3dd7909dfe3810981393070d15c45dc4a75a8c5bdeba533cad1ec34fd20466a61e4cde3b25af9a80a9a54afdd7de1cf2a74ba32d4ea0082a037775413c61a8d1f +d = 0a51f065fb32c55bf4ff6f18ba9d488d35d9f8da593adb0ab1632533284e0adc43ccdbda9d9507b9862ac63b5ae7b0f78b479bb +Qx = 080e2f7ef17a11ae66172cf1c18eab12aca4c2ae06b8106aa1066677a93538e3dca0626e836249eb884a382c3b726736565c3c3 +Qy = 1e98d37a17ea736ae58eab093fa7dce3f10791ee9ef5ec00bfb27bf3c705dd633badc94642c385dcc276f9b1fd5e01dd76ce944 +k = 0d5cf7b3d28459db8dd69c314f6464f770c31f239a12656368c84c64693f23733661081d20dca9bec9c9659a8124b57a71ffd55 +R = 072ba8c1b4bfeca62e96a5649e851e9a311d7685603a11c1c299f5ed8605adaf27cae656cd31335a7ae363cbae5dc7a39512c1b +S = 01bb9819d25a211548461de4ff973ffbf475230baa161558d9cb7ee6f2e682dad21a465fc2ae058121224f8680296d30e3692cc + +Msg = b3fb9e48c333201324755a81f3ae5d4f0e2ae7cd24238fcc66d858e3aeb1ee03328660d6399676eb1b7d8285ba571e214d935bb45516fccfab57b8eb4c3d5f1d7357c768eb7b5e7b5710f599614bd4e92706eaba31f8a5e7e57af7ed13066af50b4540ccdc126b677789920cef8543907f0ba9dc92aae343d3425bd784ef483d +d = 095351c0bc07acfabe6477fe85f97eab520dc96bdd58b44b036328ceadaa56a1904d2217c5fd25155ff2aaf9005a3e2687fec81 +Qx = 1c1311230cfdf5824323448c68ead5e5885ba540a21ff90b951f85d84d78e26da035bfd99341b5901e1ebb18648a8dbb996fc9d +Qy = 017a037929496e560cd1c936d9eb15f79fbff737201dd880a69dfec31209faf5bd2846e3e664c668ad3d6500c5ed620f1bcc970 +k = 02234bafb54cad0d0d51f4b8508dbc8d014c303d90d21bc3f749ed7acc42f0335c5ab6d60002d3bb57cf07018e9c13b92c0a39f +R = 04d0609f06320d69870a3e66f19cd46a2e0e3e13fb8b7785163a7b567bf2c0f437b4e30cc67da288a3b34ce3110f6d87affe0f5 +S = 06c46d0248f7c309c1e5b80ac4b1459bf897e42f8f037031f5bbce0fde50af50cfdc4f60d5ad3d1af152298cfe77dcab287874d + +Msg = 9ec5f7d65082264b8a50be772c44277a73ed19199eb275fe5976f9799d8629fcb4a59a8d55074cd2eb2a0e02062d3f7cdeb05e62931a24fd1aaf14c257944d1b42eebd52726d6fe281211b39038e52baae077ea4df89675d860d6ba5a0f998d049614201b872e134367acc90066ac602e478ac3e43c3ddf4b0ca0aac1a68591a +d = 050245c1682344fef23bd549ac8d1e8e44b2840c43eec1cecd33daa4e9ef6b53f496104d7432e14248682cfd6f5b4853b65adac +Qx = 0d2f8fe524b2108e375c9603598b555d6c4c7724c7d11039178037b3a4dc82b66c3aeffcccd89cc34dc2b2f6695892323bdd805 +Qy = 1f98df95fc1837ec4d5239cf55e97d6b489b0a8d7bf12c1ccf95f689ad23e46dcf20dbb531f5179e754f0c29c8757a1dc67493b +k = 0c683f98253406c6587d87c57991fe5caa3f43b451875859feeb81176b732f1c1eed0ee44d1905d41922878617e03dac53562a7 +R = 00cdc9bc7d670a1b6794fd7da82d2ad1a0e92b82ae32656ddec3aca4de75f407f20fe782daa0004317fa3f12cefc48518298d5d +S = 03ee7c75810c2c05946b53e2f24feaa697af35174402c069b9fb03d89d73964c997eca4a5d6f9482cb23c8ce337a374ffc3e186 + +Msg = 61d657bf472676301503f6784b7286fb39fb4186bb88abf1edacb4a2693d0a1e2b77bbf2758c84f2cbfd1753e20841b1cd4b456400d53f4d686e666943f9b6ffcdb77f510be97536e9698fc84ae347d483bc8984548d1cf86b9b40d360f9c0dc5bd1c55868e26fce1460ba94ef5e94eb63c9f0776a0f446c0cfd4106d9f36352 +d = 08d3b0277f0e9fe54581d3a9499ccd7f015c08339591326859af969d2a26284e3b3beac4a0b74d324ce5cb5f38c7995e4e3a41f +Qx = 0ae18564ac04b54769e17df84aa54903df58decb870591dad73dbd712693d901f3f9ad43a71f23b77705de2b4ec1c3bc616356f +Qy = 19810f92e80560979ac6e72bee505dcdef15b4146185d2f8f5a955a4555523d982c34bbfc1326024410dbad3349e4c4e01c242d +k = 0e52dea77fc59298cb06fb1401d11c662a04500f0470965c4cfaded13b339bde52f4fa04c76a955faac16784f443b1ad9dfa0bc +R = 00c917d487d2aae1651d76147de2a706a01c8b3d223afde7d20c9dd77cc2329bd3e0e4fc01255b7c4ed1baae7d26667bc2e9ec6 +S = 0058c766fd514a405de91a4b9e99fc0b0146d954dc2e2decc2f3f066d0fe192832ad37a940949ca4e9abae0602248b3b56100ce + + +[B-571,SHA-224] + +Msg = 8e14f713a2c427b1f79491033994f76acbead614d12e73ac6f3f518f2052a10c1273aabe628ab38e0d3d5f8ff254802e9f44a51367bf80325b6fc39d907a37f731372864747b10749ea5cb3d3a83da39c21a7b02885a8c1770e4397cedc958e4baa21d5007569dc9dd1e45d2181709d900a394454090badbd0cd9c2cd2369aad +d = 0f42afce7f7b3d45f3f925ab29fc3882a89c9f585177887584703cf8bd8fc572e677adfa55b402446fe1e90dc855358d92c3267c35be9674b40c2ad5ce8dbe6a533c44b0ad8d2b2 +Qx = 63dbcfc2d9171a7cc1835c1f56ecadcb59aa6d5852fde264ab25603f06817a20f2787446445be8b2ba05c70fa25d9b9e34d5374febffeb536facd3da52d43d69fa7af4d4792c792 +Qy = 7686e0629de47916af19f9013f65fa3b5f9d196916cab2f765aff31adb5a959515e83fe3e00e91843c532041ba15f047e978bf2fc69627bb5cd7f3ecd74cdf1a8d623c1efd23fc0 +k = 3fae665eb7a54f51c522ad5721d9e2648f13f3d84e3d64c8148d59c662872b5cb7d911c27bf45884f2ef717d72bd0569d9901f2308d9a68d128c042effea148cc963a8252f1426e +R = 1df705ef13ce900ed61babed02e121dacd55a881ae32bd4f834fa8e362d059223b29ff3db835fa2b2db8fdb98c21dda5ef744cf24d0a798f501afa3a720a238ebd4fe3976a179b8 +S = 1b1e98db422fd48f1dfa049f38865f8bf9ec5618fdbfb50f21cc838051a1493e4b1e4f9ea81156481e5fd84124fbab740421173862c63920e3a833aebf0762e7b5b39a1591d27c8 + +Msg = 38b60d27ff08fb191811036dbfd5b39e1cc3427ff70efb67c851e9cb407f9fac6f348d289df98d055eec73299fcac068bd0fd9ffa3c5d244659e4f714a58d79f6727f323a7ee26369000e90e34e106f99f5ae2ae1b64ee89e5a1d304ef20c071a7773e9b977ed3d49f467d300a881c8371041394910f9c366942449045568f01 +d = 2f36613043cbf53ad36e2b38998bb867503359ae082d07d040e5a10a43e06ba9c91e7c73308e41e2391b65e634f83b162cbdf4e7a44ad818fb93a978af00f06be06731d8c5886c6 +Qx = 0fe1afd356670e1dc6bc195f9513f1dc6b03017416b5252c7b56153da538422e557d9918298ba6c78283efa0288c0ac61298846a6f8adf74df21747cbe7c18a2b825a330e843cd8 +Qy = 18b7659f0a7e8e7ae5d636ea4d1d5f3a1f846d4bf3dfbd96c6ae874354db6faedf02f75c4d1d8bd6a3b61e70ce58e38ea5de8cc16828f87a0667614f6640a3023b7f4aa93fba577 +k = 3fe351ff6ddf50752f7dfd8e5a72c9faad77dbea303fd97dc939eaad3aa7fed466fc8939a7a6bb7abee63455284a5338e59dc067236dd699bdeeae1424d993a9c76fb2fe9595423 +R = 04a0e13a9fde9f2fef417199f8584d0f60b2f04aa6b7524cd2a2826d63043b2188ca977c9567fc1ff292ed480dabc01589db8734c15aadb4ff54a552a7d9e66829fec1dc919dae6 +S = 01bc7d2c4ca9300d7a3001755ef25231d2852a7b9a3e91baf21f2a2bd2ff305be8a9de1d1bcd7bd9eac4ce12ecf8a91c0a409726085382fb8d2428adf1b42b37b50c9e8e0535d7e + +Msg = 21709eeaf9e1953822294a478dfacfb205fc25f447a73a76a32601c00784cbf2f9ebd41c22721d70cdb3842dcaff4a4f208d41c0816990e421cc4b8538ac2f347cdd0aa2a39f1aa26ace8cb6a606b23f6244894d4594a0f6a5b8f6a695fd66e1a41e2eb6a377017177fec56bb58c837e311cd04c5b50575faee32606b9636ec1 +d = 2e74948c46930cbcd9dbe2325539c7dfdd910f309fd610e6599d425aad9ae230a8d4681970a14f2a71fd08030d0a40ff40dade7de1b06a80441bbf7e2fcf1809cff39c7ef88bf9f +Qx = 1b75f2d281592c288fe6d5479a4e21ef626471819850cbbdf814593bae7e6ce2a35a978aea354649d979f161543fd4c12dae0efcdc2d95e82ae5874b9c04a2143535097b8a17c68 +Qy = 0c7160c2efa3aea1d18afc1a00b47209dfc750a5317ddebff04bc4d181f238d339a7690c24e55be2cb0c01719d34ec986a07727f2e412aa72434efef4d64ecf7c16e2e75ebd7ad8 +k = 0d3ae3d8e5e01ad838a7cc9a4d9b3e41eaf9894aed1d1ba597458391d4a2ae38c5d6efdb4d91761a415812d77fd9ceaebbf1ad49c282e693d71d89f0e2d1bbd94698a47f1f30890 +R = 1e2e9e2633885c85f70208de30ae9b7f72950e2de980607f6d0e73fc1fb2a4a8afc6388206c11b081540bb528a94e5386ce77a2d5c7830fca19223d57c1efe7ac488e69ae07e660 +S = 1250d1b920324919ef81865513db461409f6f8ad82f658dbfccfae4425906da306ba10cac84cf5379b6c1d8b252f3c6f86439413c617deadfad38a234bf2b0050fdabf7719bcc9e + +Msg = 3a131fabf3dc97334f212fce41c44300440d16de1d6060450875f7276f53c026e2a511681b5a8d75fc0d578546339542833145f7ee13c708df33e584445a75a5538829286480d339be7c777c03c998a6d3f037b25799ab2d541021502a0b02a9b9c337a8b176c4f30e5b186485a6103b1d1563ad4ae73ca806a5e4daa92e9100 +d = 1b5fab1d36f6f6d559f65d8b01edba610620fc3a38307b1fb1c5bd63e7ffbd4a9098cb8bdf50975a873f5d047ee2b627b090897a7fb5f56d3f4a0f3528179e7c969926fc0d3b0e5 +Qx = 5eb8c5a2bfc86aa9a82830d665296f74aeffa9c5b38750d0ff51d01c2dd0fb6f2209f8ba89ff07297ab9b1b06168757f48cb6eee618a7b44f1b3902187c33208288f35a06665920 +Qy = 5334c203f4ee44fdfd5f99686b18696b3433f203dd148324dcfaa03a0a250cf606486ef11ebcc1ed1839a76ad70909d835a4b30a014104a6ecbb284b33f50bfec33d8b5ede85ac5 +k = 243889e7ad32076a3ea436356eb572c1b4ae402d0218d3ee43927eca0b4fc21a19926eea35c37f09de4766f54e6079c34fb3c174afb953be1aac46d675bd300e717dfc2d0c3fae7 +R = 1d87b52dde9f502f02a502e7a331ca6dfc6204922fb94886efbe3013446d08240f6dba1210a76eaf804562aa92a14d220d59b6310d6caea0274a5e1e8aa3c6b57f239191a71fe3d +S = 2a5342df6908841b719f80ff905cee0ec3fd8be46396922c3f2f142393714b97128e083907a3a2343f0cf9aac73313279ed29eb44017e2a1cdd0fc86e4b7c536e9f7eb1bbd192a7 + +Msg = 679d85a762f2574b0b31b516270b7d33d5e166c83e91a0f48e0f3db20b52f42f9e6ee9648cf58267ffe3b713723cf3df52b5fab5c14db1e7189f7cb7170bc6ec7cc71946745e152b39180f828688a5b6c0b2957ab94283b90052a3c6e36843c391aa8810f9253b639a8d5a69aec10070603ad7a99dcedb544858d057a1d66b89 +d = 383e70c71b431eedd4574f65d01fb0304f7744d668408c847f7899eae44770a7f3243109740f177d7146a27748886b7b77ecf3792b512e8d8e37c3bf4ecef2b1253df7066498f01 +Qx = 769dd91fad550980225877d98f7c86963c88be141f91f7a3f1607e0cc6dab767aaa6ceabaf46b65a7c80b6a494b0dac1da5d2fc8c5b07ef7085ed1bbdf4273da3665a6517ea1e5a +Qy = 282fb94b4726472248f01ee43607f7ef969446313e849998fbf0058c8ad5e24457006b84fc0460b74d86ca281caa174e69fbb68673e1d28ccba17eae045eabc1839870831246a14 +k = 336909099a1540e6f69172d55e0c88a1afa99808005bf09cc803ae1e4e4fbeac2f77f984bddb482f1f13e4430e25e36962b1a4cae00f1fcd7f2c7a17372c91673d8286f9829bbdc +R = 290055d578012a5b7d88fe2f70581a0fff976756b4581875cf5db07e01f09c0bdf6ab70ffb5839567583d53c68e31a27c3fde12bd4f1e1315af2f742746277b1fb1349141ed3043 +S = 1480c63c8b90c7b51e092597fd8391a237b07f0ff7dbf615e6bdddd5aa880db29c9b9add5bde7e0e81d9a37f852c26f21d750cd2f95520d16da7404c2c3feee1489aff09f298d7f + +Msg = 236152ad31ce2ffc0dead3c142cf6c770672cd2e75af4a82fda1a72e1c775cec9b481c6f3e411644df7e7ee901c501405620af4b6e9667dfd46091788daa95ef2c6c9f5c240c06b15cb0df51f5f058d8a7934bd7845f007a35f99fa97200b20f3b5b14fbf1e372507f3b2f377e8d07d30fd3e222f398f26d8f428e320327f901 +d = 02261d4ead21f02fab19bbb0da8c272286704c8f0c6842ba47ded121e5cddef79fb34e6b9694f725ca502949faecfb21e3cc062a2b4c654bd542d9a1fe8d97bdd0905c510aa0999 +Qx = 3ef03980ea9b754b655948da63469fe526ff0ba2c0f572981d02f5693bff620b55b8e9e9f9d553a78a0138072369775c7976f028631e65887cbed62fb447c9f41da86022f4b41ef +Qy = 4446eed90f2716a7aedefa1385db9f5f803434517fcd80571adc9b7f086c9787b76306380a375668b05fbed30922746fecc0cc16f189dddab676516ed1fe4d02855a34a90975389 +k = 0b309f6c53dee8a8956358df45e72126ec76266d38babff185d4db1d449c8fa9baa4b0651af5f5b0aa70dee3dd55623060097e2f94ed12636961a7c0744b38f2f137bca239f974b +R = 2b42395206ae79bd9df1c729856101ec3c4a719616701f836c9d69b542b59ce973d91951853f89a0717abd4b929bc69e59cc379c941349dfb4f98d49f9dff572c614242fd370e56 +S = 1ecad482a8eadec6800a9d876a382125eafaa7bbd950fe5f0588126764126eb1b384424015c52ed6a335668506f25124aa78d98ec5739fe282af0c143c07da0fca53b9733e159b8 + +Msg = ba3f02c4847fae035d747db246fe4e82fb9224ff9cf568a6ae548f5dc2befb2079541d2cf9aaa6b18c281a05e7ddfcdbcefb25f41dd91cb3092b3343e16985e91c912215cd99ae4a099baf628e33a7b277e3c36a13aaef85418fca99f64d73b789f23ecbb76c3095ade0a5f7f34836a98c5be933b44a94a2eaa3f99b1d8e7937 +d = 316c78f289e1860bb623082be9d9238b88e38c5e978a868bb90f776235bdff4eff591877b7f350cf14c40356922b2b6aa51d64990360b2b0e44d6941b5dd9492b4f4e1f42ca163a +Qx = 6f4137a2c63b6b79138027464135021b034f97bcb2493943df6be844f1657a97632ac80541a3b43ccc828789517efdd9f86ba171c1262a07a6b337bdb0c8d5f018302a8046a1a8c +Qy = 425cf553554d18f6cc97f0caca2a7eebbf266d57030014273f701562d5b1444240b9d22060ac9bebb37deec393cebdad21ec7f13fe5c7f1752b4261cc2feddeb737284a6eec3663 +k = 1e0321344bf364f1ede39a49c8051f36875ad78e4b080ece9088111739041b121f3f334c6e923777fd716a52be669d6e45f381da11262fb4d09ad66dea74ca115838e19fe94b7f9 +R = 04f24ec978c52ffc7675a09334a895e044eb8eaf04d26c094d7607b77ac4168a02a972f577880a0d0c73f218815e3a7a70c91c50734c08d374a15fb42fd13367dbbe08fe9c2d4b5 +S = 060740270df0e1fdfb8e829c9601b9901223b19d07e9d7d422b9bade88a50fd6d4ec96842afc45900a0107ce85ea6d083d66ae202dba3a32e50c7c3af951cac7acdc6f4c406740b + +Msg = 6d0372b40559e075af56af853cbe18ba2d471b0fc8917764abcc69102b03d5bbe1fc12458215be66409c26c89f67c72a8933677a07f88993af6918acb074fa915fe883b24bc3d191ff1b08852f07eda98977e70eba072d8bf189cd545230f59559ac05f1fa3f4e65886d0bc274a6e02e2399812b2bf91abae81e21279c5de996 +d = 2c1bc13f8320d97a82f3d9354e195481902214e16a4fd89332a0499208e91d50e5cabeb4927ba030cb42f5bc53b10f500fa646a8c88508cb0d63ebfce5c4bd574c527d686c735ce +Qx = 2210791ca48aafed20de84ef9896a9c7584081f850b75884908c7b3dccc94e221401a6ffd982f292a9d5f9c1d066ed493da948ac7e93977dabd7b820bfc0fd21cd8d99c072bb69c +Qy = 33574c6ce7da749ceb480b4e00bb1a58203bbbca5c16923992cc9767aba5483e4d46ed39e71000a1fe920a4c1c211a14e63ace03635a2d77e72808e0664334890b819b3caff64a3 +k = 2e3db2d82c4b9de2bc0dd0a93c1c5b385f75ad03d0da527a034da2876b42e43cd88dc64833efef54af902d85c568bb8e71684bb16b28c32d80bb3e9911cb1b74be6ec520d99b381 +R = 065f4715e87ca3541ea695878ed5ccb7d2ea6eed5d6fc5ec29f9aa8deb4001cc7c06185d6ab2dde4347344d44f8300a1e92513af4690d713762336d2e6a94d3324a224f06eeadeb +S = 20104e0767530ce2f4351af4977b52339f34d13e458de0482bcd58ab38ee041c9adc7b05650260d919b2648e2f820407fd60a8d6b4b991b86eaf29c2c4d12d3b0b45cac2ab22c5a + +Msg = bbfe66c82bc060bd14fd0e40769d9b3a026eb447550dd9f118c30d8448f725f8366edef042447962ba7f7f833b9e9094d0ff600714697e632626e7d12a592e040bdcee166dcda93952323191021bd12f3b1647d0f25a41739994659dcbb19333ca30f46f539c6f0a5c354cda8969a1eda572a309950c84c7607eb8ac20163912 +d = 13bd80eafa67663e75d7ae139bf285d2b9f1e03d8e32153c73e26d06e86d7acad22bde9f121a3f1ea674dcc1fe67bc7f5398d5e92555056bc046a02b0ba86c2a0dfe32e91add5b6 +Qx = 4c01fef7f2fd8ee61726af1a2d046c7ac67716403b99e021082e96d733368c6c64d046986fb01a6b55cc930517762387eb2fa4a8eda23c700d88065bced8595188760170881a329 +Qy = 189bfdc8e7a710522ab5416182c9579ca255c5009e6ee6604ab033c1388639c0f7aad84642290954db9f4f7fbffd17481eabed38151160457d68ebdfd8695b5035e4e6e06532c0d +k = 3c5868345c5314aad5ed3a74488a85b2f049396022cdd1de855a0b33c2877f72e871805af3ed8fd7e7a392c4ff63acac6a6f0c431ce7af680984e8c81d0350abe491a01f0f9268f +R = 0c7e96b9e9a5935ccd51b901aadab6e01ebde44f57e6f0b84e7b58ab4f62ffc0f3f3f980665c581ee3de233ee49d11599529348f1ad3d362837c041cf98192bb324f577e973e1c7 +S = 2226922271fe8307bf597742618ea9c1c271c22c25b49aaa7c9292a81ecce2a55250415ea2ec8ffec54bf0508e64426cb9cd7177265fecc40e056e96cab661485e789f0c435b72b + +Msg = b35e9bf686717ce3b16a59963a32a2116130453b161a4e7ceb27b755856add836d779696edcaee3b5c986523891c8836109d431e55c23afbca022437ad19e6777efabb6da3bba1f5f44f905395b4cc7c9210590fd38da621582d059598e5e4569e904358e0dfc0dbfda4ce75538aa97480912852bccd433a9b96c9c66e9597d2 +d = 30834b0a4284097cdda2ada6947c6c281f7290a49b56becefea1e2788ea3ef78fb96807633c47c25138341768b241164ce0d42f7301728b928be2c047f2eb60fc2f844ab77306d2 +Qx = 03a21f0d8e01a64b235cc455c291e3fec8de12682f05544de207d910c7c24c4cd56f3354500d994380ebaa0b49a7604c6233a9aa24934c550c0e609f65fd4073cd6c1ee4170d77e +Qy = 67c83513e4acbdeb8343b3add40261edbf7c8fe0af7417264830edabfc40200283b92484630741378b997c3f8bed7285decc6ef8633aa804b3846d3b4517e5ad836dbb1df475818 +k = 0031afb24fbc52b01480754837cd84a5165d5f2ad1a1d572b92ab546c049413806f0f5239a77c751af4d57a84786ed1c11bc76123a82e7db3c0495b2fdc5fb9c8720eb7afb640c1 +R = 07a222cddfaea617f1190a0bd88af4d1983d2543dfba25c5036fe24529bbe2e382de89dc1e36c1f6df59c8291d1c4277198084902e5619b64128c265bcf03b7d8cd6b663c225f11 +S = 1ca84c146ebbd16300b813621d503d8c754e4b11446d5ee31cbebc71f4b85ed09c5c94bbdfc3570e8882ef790393234c5ee9e52f7d5b74ff4171d930af817eafc40ef203a1ce613 + +Msg = 57b5ae7e95c638b258d1e09b3fcb4341e203f5706862e199b103c8fdac72cbc5155e5cf8b300a0b3fb0ce1f897c45f7aefcc528182f73dd450cd84d5fe9eadff3f704dc2a01b4e847c22df430efd1c66b0199f3e5b59348af5386962a5ef25204fd230b54d58d7fae801c086f8f405d3d0aa7a9a9da15c22b868817cd897d853 +d = 0c81a79ced1eaaafc31b69a40d9939f4e484d625db6364a8e589b6b4d336d458b44287ea6c6aa7661113fc07806b147ff98216fa0c08708dc9d651821b922741deda522b4e436ad +Qx = 25f9b767b8796466c1cc8a1fe6286d591c04a0d115133fc7910640032b898a5c86547f57794e5aac0148996151d3ecbe0d5939dbff5722679ecff378e3f21bbf1354b1eb294d1a3 +Qy = 074c2b91ef3472e60426d2fe182ccc678aa0abb8dda15a428e4f6f1ac401b015b2b7d83535a0a92770cff7666659e1cd33941bea1168cffde82db0ea83668c2d387e6f4bdf28cc5 +k = 27b407a29553203b829a87eb25d6d140e41184634ae1c64c6ec38e9012d0b06a1f4ad9877d7ac4236a22145095990233e6c102a0052ba18cf6e47e289cce4f2ca21514d8868bd68 +R = 02416e11fe2f8e4738ecff1710dc827f4e03c8e7f04a4f52e755f0c1676abbd122eb9751ec1fdf6c7ba04b4e29f8dee52bff7e9e726e28cb3de6f9abf2dbf58c0519ccc7d70f076 +S = 0b96f107a26097a468c1d410bf90e223cd72c5ec98d4ee4ec2e32259d7670d7e7689e62d36549086139f6111884530e20f908d7be1edab75180c81a70ece341f7eda6e4a43a5ad3 + +Msg = daebfef74b452f039c999ba0528be3bd9e16deb5f46f6eae87b63db8b89952c949fd7db08311871eb2596865eed107aa065f030226ea675ee3256c31a3f85ddf4c21760582144e07af208f33c5f47cc026db5403186a65a47940691ea2d74ffb1245676260ef5717dd879d8b5b72d96f87fef5f762d4fd17454cb5ed83d8a11f +d = 2f24670c0f77d2ca0266a743023d2c7413d56d0b5ec77b454ac59087efc4ea4d46179e10278e4ba416ffd8c3f9786ed202faf8251c0ef5a9ea5371fbb35b7afe3d15a9cb4bad975 +Qx = 2da72b8ae64c5ee717c33758ec26153a342936f9d41dcbb136590e1303b0e220ee84c8a06b83d4d9fc924b8808de94dbd780cc8243bc4448efd27dfaa1572aae6abe574be664939 +Qy = 3b3a95d962c48a81c48713247801e4ee630ec7956c9989023ba16f02f5bd1ef2edcdd1c8d314be933225c64b7f8a80542b209b944e1f3fab95795ffa134e7e28e82307dc62c2962 +k = 2bbb9abd2732994011c8d294c5342e8b1f7f3c1f5718187e9f75832604b43bf75abad5ddc85e8d92cdc42656cc9f3349afad3f9022ccbb4937d9ffa9cf48314b604e82bda13475e +R = 3986059f2e096a3675215698e23b53f471c578891f6d721a34a0d231d16348d5bf9853c79c4f4aa94642ad06cb7bfd11f724800cb5477636b6fc0586fb6efb8eb9bbef62329a884 +S = 2beda064eb3ffa1c3b5336613704b3bc3d4ff7b0e977df16477c7e33d480d678804bbdc08088186fbc4764be398a26c13f88bdd23e844be0d7ce598bb87c1b3430da02ae96b3767 + +Msg = 62af0493ae79d71b552c4647d1fb7ab2f282a91cd44aebd8ef344dfd77b521b0c0a3f72e4513c8ecc0e4b84efef3df9482a07ccc1b740c571c5e69cb913740a792aa231b9dc87edfb72bac188293c6c6e788cb3dff32e8f483f8f34e21ee7efec71302cc3bdbfa47908a135f6ef3ff179dcef26d1a3987f7be967a6c0f799b0c +d = 20985f2c6fe3ea04bdbab66a8b6167e5969c073b9d53cf3c77cebbf73f4dbf75e601620ec9c3107bf3fbfc6c79f8f063409bf8fe1d14b19e323d857e23dc05157d270c7514137e4 +Qx = 010712d50ba7752962b140cfb943d9e8dc3bfa497bfe81c42606f4da5157656fe2ba5cfd33ddffa0f27fabef8e267688943514df45e642ee0454e05b49f7c00f5785777897d225b +Qy = 1a2c7db6595c6d4c55110210c564cf102739760e7f5a29706fcb2515d99ca00949d5b4f291716d0aa1e3a47efb9632410f60e2fee1ada47171f902f632bee85da75c7f3c895c24e +k = 2f26eaba6452e687af452d5e1208fa011e4c84ada92a38f0a204a254641c23ffe1c184fa8bfaff047db590ab40accda408717e4f30811b75cf3a5877ef99279476ab924d92565bf +R = 1280adcac1c79352635f4165f9c5c1b6e1e6e33bd74d781773f483f637462f80340f8d22cb24c9db5e49ace95a676df3dde53c8721f672006382ff806410bfcdbceda50e53285e6 +S = 07dd52973ef30dbd480047732622fb1b695fe3cfd080264d2aa30a6ff3dab4ab362518c4f3de4fae042fce78c0c8fa0e763eb187eae2ff8f2e79b3f38cc3c1aea897e1f28b71a19 + +Msg = 566f17851951777ebea3f8285610cd8ee5f882a68e7a4205e6fc9e2d66d210ee2505ee73d6503169f7b903012d43e7e99efa493a8e6ef926b16b9ad8f52156840ab561fc6b680120a88714fd66d1d0742189bf06c155e1138ee5314707173f7352e2cea0fc26e1553643f2490428718e44afd8372cbb7bf5b88234318ebf4355 +d = 2b3d641607b8a141f876f6d285ee46aea543880e772dadd5dd83d595b9643191d9597218e1d6adb081df133304037bcd2c05c24a54e6c4cca64fb2cc4569d6882315360059496d8 +Qx = 42f2bffe25142ac6c1af26643b0f1c317b34950a8a0f112a0cd4ea4131303674328e0bed5d9bc7ffcbb9712387cf67129365b4fa8a9e785b787c170463b24f6a7962c1e003c8732 +Qy = 070962ac4d3220f367f18caa7ceaadcb82fdba45cd2c034a97aab71f7f7546c09736cb080c10d9a95a5f984aa4a3ed32d22636a7b3d5ab29c86d85db59f6f17ba29eb220bb141b5 +k = 23d7021f5376e7b11be07288a0e47b4326c026df80d7e08c9a0fff11deccdadd479dad503ef2d4fa3f0ab2aada604b57fa7e09dbf5c8d493070b5faebb27cf68ad0b78bb6f3a9aa +R = 3059720e7a2dfff03789e7a514f75f2af5ed18cf1568fa2a5354dcddc9d3c7a90605e9b9a3d0d6fbfebddd615cdd52845ff922873079e06c4f349f7798410ee18e0c69045193668 +S = 1cc40209692cf5f8ed8b82372c95033e4199d378a28b9edcba516820ba21af1bcf5c5df2ef4146b91fd37dff89ec8f9962eecce5c5e285d76a5f03eaf99fa132e98cc40ad66c296 + +Msg = 25155825fc4f9a1c4dd1db837008e7e2594a879052431f5bfc76d0d2565b8fa726008befaeddceef73f3c60fa2cdf6d9a70e56d27210bd013034b38861ae49640ef208d3fe294ac4362f8eea44f58af3af8a9167a36b5acafb7ec95652d5885a0e08067ce1dfbb45a0c89ad1acb53eb404bf88fa5c3c463a0f912b5a2522a0d9 +d = 1afeb5ca87c81025ddf09c2b2c5ee22ba0105c0e619b67a324467485bd839030d149fee44d8bac6f5902a1245a50c3437046b7c89a84116b2147cddc645b6d2fd24d68e8d53bf5b +Qx = 119c46988a79e3ae8833ef096b0a1e2886c4b114ccfe881886859abc031df2b1e75818c82be8c5abafcbc5d7b3b8344e98e3f413d737938845e6eab5aec7e507f7baf0d339a362f +Qy = 3190912dfb5a1a31fbbbb50784b18051489a3cc0f44c42c71d3a54886ecf40507c3240395e8ced37b5253b915fdedd38f75bb26df2a0a8edba865f898a15f2d96f632f7f0638864 +k = 1facccc127c856db1994c4d9e9c76de6bffff81a88d7aa0ca1645e250e07674fba73447911c5b47a1aae815d5e96164854636d3168d0344b2d2d913127011b6434d5a5e545d3bcd +R = 21da49326f39577ee9f65cee64006525de88a834365a00f4f8cfb9a01dcfd6349a3d06bf95990a2c17b7e95cc0589714b7a795c7016b29bc844ae9031488ca354548976eed68415 +S = 3364def38a8ee3116cbd971794c859776107154234d8b198efb19655647bb9228c7c6be2e703672f795ed37481e994b6764d0b7c1bbeb2bd1db90b34f460278a54bd480bf4e9adf + +[B-571,SHA-256] + +Msg = 29acb0fca27e2a10d7b9e7e84a79af73e420abdb0f80dd2665696638951b52dd39ca028166b47a3b6a2eaeceb1a11c152383f0bec64e862db1c249672b3770909f775b794e0b9b28a5ec8635a996d912d837a5f22471b40ec2e84701a8804127a9f1a0b3c96ff654700bad3167240c2518fb5dedcc1be9f56a807083e587bc56 +d = 32c97639b69c7cdbf419286d0a1b406d9b1f2886521a8b979a36118d2a368aace5b02dd8c515f2041e6fb9f026d1e82e789dc826a56d2ef732b1bb0f49be2b696ab5d3d5694a2de +Qx = 0087ff1d8a4644edebd43c2d43d49e140940d215f272676fdfb72ccf58a12021de3d668f2766848044ac404fb45cf6e18fc6700f87aa53b4fac1e35e1731814f8a9d0233e2942d7 +Qy = 29fad3638177541d8392111064837bfa77b4455c21c5f7652e3fb302f4bff4a35b74de8aff3806538ef9ac86964cff755a81cb3002b6fb241ffcae8ac9621b8e034967d650836ee +k = 16a06e3d25873f6dae16bb2e569720ee9c6ae7b5ba36854c321a80be8b4be502b895e1a3d161b001f6cbcf53d164b5485d8a5efa0476f581f9c79b3a291025be01a435e2fc5ded3 +R = 347138a43f3ed1a1a26f5f11549eb8a41f64aad302b6383879886216ebb6d08a4ce270d07a5bec6018eb313430ff017c1bbf78556436d9255e97aba1481f0f16b85e7320df79d69 +S = 28f35e1aeae288122b043deff9ac87d39478607da60cc33d999b6add6209f452f631c6ce896afd92ab871387f5ea0eae5f6d5cf532e7a6ab44dcf44acb1fd1daafaf1ad5423d8e8 + +Msg = c92d67cf6536f5046e15b02158da698bcbba4ff1e4e9e9c882cda67f817210402ef917ae93682c9c3dd817b21b73c6c00b7bf92ea80ecbbef2e67f4f4379d078a2b0f297742b2bb9c3fa3297a7e8079f488555bd37715eec92b4b1cbf897640ae8a1d2a0fbcee5423ab31a37629f98630275e35094a896cc574be0a449bb1bc3 +d = 0f93672159276c5a293582b9f49607bbdb970112f6c63b2b3b5d32ad3c8240c86b1af13a8dff6502c6b6a17712cfd988f8cd23a60693d64104143b3f91adb37f852e9e11a0ef110 +Qx = 19dda59a839aa2ed28f69a62a3e3a753c6fc789fe0d8551bf59095f009d0327386e6df5437846c6803df2442e0359a367d04f117e3965397576d4287398b4b8c92ad278df4a447f +Qy = 4159ced60503f7cfcfcd587bb3608699f54693068101a838d575715de02fff81058d025dbdda430e176f60e423e6fcbba889914f6409ce51d51e89e4cd7bbde6d24404e5b043e79 +k = 10dd216d4b3da2fa6a75de60f722f1f128776741cba002c055d1445581242a175318291fae313eea11fd905b20d26cec845f57a3d5bf23ae4dc93d886c0594f1cf7be4f59f3e3eb +R = 128d5c00a48c7352eb980d9c80781f8abcfdc1ddae415b7ac94b4d85c3d7d4f7316e2b3344ca50c6ae82938bc728e640e59e2d733f0c7f7025e66c15c81e98a845c1ed4843b589d +S = 1ab59ce5e54bffc68fda96c920b839fe03d1976ab36978bedd973715ed631bfc8e3edd100043ac527aeb5ca121da848bce4ec9799f55b22454e9af32848943058b257e815b04056 + +Msg = 15413f614c4551e3b138b64f66d15f8964c40326a42b0afce820778eee4a88edb127fbf575da5263e5a2627b5461d311813ea868e6417615e7c4938313675009caac28bc7a2f4c0bc37572d9bf36a3b1794294e09c0121ceecaa4b916df45b0dd31225415e6c87cfeeb092a008fce2c543cd62365779ae28f29fa02a15d9dcd5 +d = 3db080bc99c5fe7e06d5032167af56783cb423fae59fb5b3c6bce5fbedf56b7b39b17810e48ea9a172881aa1f42f5e267349b60294d4a208b4437666b44abcfee5a1829e9467908 +Qx = 59d1b3f680da784b49dde3b361eee819d67339447d7bdf7965550264eb63bcc7674b0921f02e15d45466dee52b4c0a50c2bbbdf226af1662086476a9eb1236e3d4c2b6219af1bdb +Qy = 4e3466200dd6ecbc268cdc1937ac5123cbe33f32110cfdb8b7536987ddf5c9ef2464d2334f315b9b489cf227a6300b6e054fe40d36c057a692f2fd3e762624069e2adefb65d24d7 +k = 37fb32a902eae0c5d7cc9f9018a5d1a906a3d1b9adf5bfb696ff63f105cb2e736d9bc1961677fc897fd3a9e9bedd370be6f25a03fad425b5a293c66180df78db33aec4a188d3db6 +R = 3aa8ab9fc9073429e52469088aea91f00cfba271b9dbb84818460883effa0c51d6a48c1905d6f58d1312af073dc8735c29957f30324b467797acf86e028410de016338b972013ab +S = 198a746411333172daef76359e7ad23035a0f5d14c283cb268828bd876b96b5f767e0c1e2796def7a51429f39ab2332ac25d8e4f263f8dfb9c4c98da2ccc398fb3bb9a6b28ca28b + +Msg = 9f901557451ae2f8ec79b6d4adc794cbfd9b2e6d28f19409532d91682820205308b41498a4e1ca247a2baa8da93de95e3c0f7afd6ca46bafdbdcc6d3374a12684676a50988b86a960a82180648c8c1e38f8fd9af604c7be3be4b24799f4544ac96d6360cdb83d1d0847fda21642934fd6cf65385b50d86d4656987901fb88d0c +d = 06ee767f6f36bb8f364f324d8346455c899a49237d759003dd52cfa13b9baa4c71347b134b24ecaee32d247c34e3787a0c64bc5d299b55c86f64b47521d22f2c09db225b0c84cc6 +Qx = 3f971125860f4598fa310eb7a8c6b4e0c31bb721fdc17ce6df9af557beded6006b8eab10ebe7f3c4f3d759d4a87dcfc1fb767ef87beb1f5c845e3f41503a33b28b2b5aa1644dd1a +Qy = 3296062514d4e89d2105dda5bd65a315b9770c45afe4050d8c3d15001405b1e32be5867ee90cafbe4e239dd44d030b4fda855182f1fcf80963c1300cb842459aaa8c2827371876c +k = 2b247e2dd0024f534ed2797110df6ea4ba166c34d91c94e43b045c0ff80f124bfec1cf3be3da7c58389d352c8c5c1bc2a2e876a7e56301b1e688a085ea0222697fc63141564365c +R = 2858eadd14373aeca65ee5a2cbbaceae4b54a50e0941a696406dd86d05c07c5599379c066b2288d01b2a43c9ae34bcb8c36f59d490aa8d066fd3d7e539ebc620a7176507ccfb232 +S = 33c20d26dca20af2c56982fcfa6f085bc5c317d01f3b1dfe0ade1ef6e3e960b18b626d17d6696c936f04090ecd9606c2a6ecea1cd1883bbbca8b3dce3b0acb2688fb2834aaf922a + +Msg = 959fe5a19d7aea2ba611c7203e19f8e3f3cc101e03a98f91adfef602c424c580d5a868659368a930f9883d699fc633bd07f6cf8de474937db0bea86fa7cd140ec2f202663813033a757b93bd72afba15be5e47a4eb93e8a666aa1c72c241ca3922547d63fa3732fec54afea7ade84302e2f044275bb67433fb6b125b7913143c +d = 38e2571d9f22309a636586d62863ed67a70538287f3ef88b88c3c2fa1a2900d48c342b6f15c26b8e7fb4875cda4093b7de7ceda48fe1e2cc2975afe958040881de61f309931e48d +Qx = 5a221634ca85059543e2caf8bdf79c43bb78deb35e9c89e07d553bafb6b31750a1d85ffa7689e528c11d8a3dae442b4fb2a4a21238d636eb04ccc04c8b5d794b0a213fe0480b1d2 +Qy = 225ff457b6cbc12d152b08025cdb7e1e921ee553add9cbf83228d678d5a9f5d3d1fb4327a74c1dcb5d69a5b98f3ed1aebef0af09bd49d253a903636ef5a66844c500fa221470f2f +k = 3b4de49d57040141f3584ff596eda457e2835085d350b75391d90abe728723e1d1ac6413979d4fc3eba98d72a01248e6510c722df15df876da881ad50539e4248facafcf311b464 +R = 00f259038b4d3d036bde101aab29f4558e88e604c62f967bc7a35eeacc6a56294268f8ab00a34f9a0319b07754f502c98718e8b5c91093cdbff2c8496fd63d6fc2c50a35f87f423 +S = 2350d5406922e8822a91f7c95cfe8524f017a14cf7174ce534c60aeb351510d06ac20dc1249129247b21c72c14b02b710c26c10899bcf995143aee632e294176e903645b660e998 + +Msg = 97b9688d9ed5101b8cfb19e84b89cd644262ca1c7ee18944e29ddd3b4cca78e06338b270385b00a5e8b91ca5e628de3bba50e36ecc695b3ea737a9cf8b36871c473a54ba17819f49e730c0f253b0c769aefa6c16366fd2dd612f330e95fb119fcf3bf7f3e254438c0ab635ec04a8b2424a05b483ecf65b74a93636fbab7bf1d8 +d = 0c8f5736f1ae65592f3ca850f43d06441aaad8c03820f3b08d8a6db46488dcfb828459f8b3f34af73cce8dc7a5e3834e085a64523d890028e194214cef4003210e6eb530005b01a +Qx = 667ce3db45b8772f717ce20755ffaba968aa1314d75c84073042436823fb54bf8dda34a6bb45a61d610745b1fc10eb0eef71c4f55b26acceb442d822d6e2a27761c73b740f47289 +Qy = 56035da1adaae894e361f5283b3ea07b7d9f64a298be11de9fb487c2479b120381f1c60cefe5d32d37e4644ac86a170f82b1c4443eb71b940b21c7a016b559c6c79835532c276fd +k = 190468668989a607a3aa966cad071ca8e8eb152b0dfca9205bc9417a3d612ca1105c7b90340b04acd96a5223658adda16bf6b598ea9f32a2f8d1b61c2c2bdc08d6a49de246240b3 +R = 291e1fb18edb7a93badd6fab6f56ee0d390f3b6d298e97312d5277358511fc7621534ac035f3518cb140fa4ad5ef7d889c0d5f3f52a4e4d06bc9f647f99695531f85a4b76cb1184 +S = 2d916734e02b0a98406bb5a9723486a7ed40bdd0b39c4cb802af4bafd519803d23c6bed59a80c256a14eb878229942f67e0b8159d5cbf24b719043171b3958fd669adfc72eb7289 + +Msg = f08b250bf4a3980cb455338b3f4173723b3f44c97bacc9cf550149794a71426e398cb4a74bde141d8b7b4a72942f1c069676a9918e27792cb8f085ee037c78e3c468adea5123c4c64d8ca6a39f2f90140c5d2d80b669cbf0d1ccb466b18ded83a1d5f042c36188a04111c34ff769abba9aedda40a87be1e24b700225e2078056 +d = 1ee68c3994adaaa9e0d61bfcd3bc1cdf198d3fbfe28a44e5dd518867ea04b20e795eadacc48bfcf8e8216dceeaa069b756e8e99ed87b6b1d31154cc9310bc3b4555162a890b0c6c +Qx = 3efc83ad15d9bf889c9afbd769bdd1dc8925b0462c93868d85ca7554b540d8c3ef7b9a63becc85981972eee8a70b7f948098ac050ad594ef2ec249cc3b557844bae9cb2cacbf397 +Qy = 42a012b3a1d9e46cece4fc3460a2bedc9af4ce0289e95f69550eb3544f7c105b5769fa52234ac88f9045ea5cdd4937664846d26deecf511ba6996ce4072e763e8ebdfe709660888 +k = 031df03a6cec2346b92d9ae7d3d983edf577d9a1bb88098f886f38536d8d8cf25def57726790604e674d036cbcb864bdedf8475ba9c850d510ef93b844c037e04348d5f48098c20 +R = 112dcafb63bb125d9610e59883df481bfde43589e46656b5952cdd72238cfbcfee79e9165e3c9b89c9ffed12d303225ba2af19e00048e20e4edd3968807e4885003d148403321ef +S = 2ded1456df54a24214d8c1d3fb314db52b046ca31458bed69bb3aeb6a9ece509ee521fb8046ed43accc7e605440a09fd96db659c98a7dd606758c0c47e47acfa326b9ed73ba4b28 + +Msg = 1cabd16fc29d7d919622810dc8b23c770b790b98b119eeab1b20900fa94fc2ebaf76be4f5eea91fc5276c5621c8677d4d117c4a5a782ee2ca1d5b0db997fdc8a05b6b3fbb833d7a7b81c3c615c2a662929760a96feefcf89e46b563314c9b77c86bf34438458b43b694ceba741b97dfcdacc0ed57652ae62856ce10ed2690770 +d = 3a6fbf66ebc1365ea7699c72cdac2dd85907ec59cd26e2d18713354b619ccb83b7fc0db9193aa8493c1855f1a83fd987cbbb65de17c59fbe79256aa5392f4eba045346e9ba26592 +Qx = 559dd556241f9b11d0f91c5458ef6adb783f9f5051bc12cac9f0b214f836f7b149d00ba8218e873410a50445da9fbf68673f3282d783988981fb221d0579341892ba6824e0cf4a5 +Qy = 05dd0e594ce41122882538e51e9bf29d159fcbb8b29b97c5546582390ad5c59c975271c58ba1e75d70c3898fea929ef7316ee830eeefbdc69bd80d7b0e8133b977cd573a3b422ee +k = 1c5a193179ab859ec1166575007c3cacb30d31f341a0e82ed6d4ddb32da909dce08acfa10fb14183258caa743010fac6f7d0fb1f8c8f55c246e49a97f2bf571129144c23de8d68c +R = 2625d0bdf37396585d22811a12ae7e0c3f512ffdd0bf4d048379434af46c03c6067dbe7c271c417ac5307123bf58a9f2064bd2b3a2d4b4efa3027959bfe63e13a851f46a21da6e6 +S = 13f16b211b314a7e9918f3254da2f1aceb5340713985610f03ec1d0a33ecf9217d61076eb153d8f27aa31aed3c9b165be52f8d857de362b2c88db5dccfd708a996a46b76b4ebd09 + +Msg = 7bc8bbf5ebeacf40b3c82eb6eba5d994dcc6a3f2e12ef741f90f90e176d20c21e006ecdaf14cb5beef35bff46b2c374d9ee224516679b1a9e9255cd8ad8e60ed234f8ee7e0fc53c9021488158217d4b4369cc597d6053746efa1e73340bdd73c1bd2eed57b92426fd4d278d6a86e8be0f0a66ab3dfadefca8831b2f488636251 +d = 145748871a0b5c1cee628de04a12fd68ff2b154fda96e47afaa96389d66d22802968584f6753d36618d49ed205260f09d3f5ccc2b27a34390ce58179b9834ff92a86d66ea0a97ca +Qx = 6cc7ce2782dd67cf1fc16f1b24ae46fd085b969d936fefc409a9bde354cfd33a154a3113e837cfb88284d75a96f5fbe85274fdd0990af4a033a6c40b904a5e0f666e4d8b8bc3532 +Qy = 7adfea166087502657bf9e2c437beb2f62dab041553a06411f6c9dae83a2a2749a4e5a2a36fbe23d40816b1b8d206b9f5cea20ef200b9150061ca22fee2076e31c88d60a006ef4c +k = 26c820dc92f97dbf545f51db7d5ba649333dde38eaa47d8a7edad9a3cf3e6780442db234632458ff17e1d7b70019916708c128601ff547ac84dfb0173cf0a3c5d69ac96c3d7d395 +R = 338c88d1bbd0b93f3f1fe1ccfcbda65fa1667ec471730a40eda87f57b3eb63d979d8d6d819b974619799c90b09f33c051b8b522c3a1acede101857265ce1b58cc7eb5698049f494 +S = 3637bf89f9b66c7ebd8f91a8324eb70a510284b39f0f2e45578f26f5f1e4504ad70a389427f4d58960cbd918c2f8279de52096e25a1b0b0c3929fd5ef56bab6cde7c0d8e9d2fb30 + +Msg = 0cd2a45392871c0c262e7e6f036946354bb41f9c2187b8c4d399231280682f3e0a09731fbfd52c76ee63b9828c2d731f4cefee0a8c46419c398205b2ff80c67d7756db300a0a8385fa287dd37d9126f75998ae1cbab5136560592118db52fbf102b7ff0a1ed45b8a91a7d99d13a0f7fd4366392264aa1248d7324901467457ca +d = 3c71911d24ad19c20fc1d8a044d63c9bb417abc3778d7e6234c6af79b898cbfc2f2787244708d2fe203be786edbdc4c9b12b413156b7b0bab0be8af895d191d853cd58aafe1ccce +Qx = 6cc47aa586a73acddbc91398ff5782457e6da2b10e265153c678789d3d7fcfc485b03b089eb67e6d6955d5c8c7ed5f933d84853576e76fc60332e5f0a62c3ab23690317bf1b423e +Qy = 15604d94ab9f2ae1d74fe46b1a070160513709de2ba8e74fbf9922e9bbe7f6e743b25701a13f73eae0db0c98dc80c5f8528e16610fcf18f60eda3357ad5878add2554a6befc9d39 +k = 3681fcc5fc1f0d7d413abf2e44cb5cce9a4a252ec449ec4f550df4a172305eecc072454efe2040aabaf4fee58ed19c9090061d3c4835c5fec38996f013e5512c0147cb14a4f0fe7 +R = 0d3c26796bb86b1a20ed4935bc3824bcb9742513ce91a66dd523a3c0d8a5abe63488aabb806b5b113e90d3f3c80e3ffa01ad051e6b0d4edfc641689953ed65fafbaf3e554be31ff +S = 2e3129ff95b06c274f7ac08882dc1da6660269f3dbd21a3e48377a628f6d81326084bbb8d32b794fcbde8e574f853636fbbaba480fb36960b0994210bea319a99a46e29b79217b3 + +Msg = e97092625b09c9ae6e152e1cbee207d83361f34cb9b0e727c816a5ed851f12f91fbf88ad9d4c8f9d07350f5d828fd8574eafc768bc72a2b18aaf4d2b48fb10f7c3431137b51850154de9706487d69a40a8f4cb2c799f48c5d8f518aff752500de93cbb94ab04ae1e0c7183a32d79a27291dd07b5fb6e6a4fab76e85c3a8607e2 +d = 18bd74698bac36ef11add6b3e3fad227ecd868f370ec04569462565d2f0af2340bf793486953a7b79ab04f0ab1f0e4fd16bf6b576cce677d543e73aa8edb0e50372f24ddfbff966 +Qx = 231f891e63bc1c43377faa56c5799eb1c877954ca2cafdeb4883ae40bd78816ca5634f48f5ef5c22dc7d3d0df208bab4149815274d7b134cadb700d166a5e3fc73e9be1bab72522 +Qy = 469ea29ef860adf24afdd386347763008ef6fe2488d902c4d513bc0183fc52742782a6fe500d6b581902ccd4f9bf077f975bd5fa89bf240723b99f726c9fab4f953380745ff9e17 +k = 1590570de563ea96eddd900e4a0a7efa2e4a0b389854e96af32bb7555f098a8cb52d160abcfbde65998c34f91338a40d40cc03e4a9a241d3b16b0e893d3f7ffdbf8912f35c7f538 +R = 32402fbee4831b16d762ea2cb218279f4db5e20bc8b6e2e53e89a2ef3646cfb0abbac36116c8c708a1342db2fa0abd39d149e09db57aef65ad8092f37f7962f98c28331f0f20b64 +S = 2d1e38f40965e2697abc7df5896cf051ce5646f135d1ea0bb470a43250af8df0abf2a04ca1e0f1f31013025b4136a8a6bdaa474bf50752c571f883829bc3a5482ec20e2b4a72c90 + +Msg = ae6723b8df5d6ab5fcfaa22d32fdf106d211514cb1892c7c43ca6cd85c2532f85929c8a259ed251215063cf92e1502528d1e22d5cf67efa0b8ef21e8eb2f5dff881ba1433e8bcf2b6af8742ecb2bccde081e534615a305562cc22d3398f61f277d8ca785842bda85d8a40438d9bf1aceaedcfc22c85533794a69cfc320931d3f +d = 335699bfd058ee2e6163f55d1816bf3669acea8b73be9c4ddfe775230925e6093cff7a66813adf22222c8376faa106d85ac9f3c67929bc58d8986795b6d35d5b9fa546dceabbedc +Qx = 7995e02dd3d40f9bc2e6f4cb1c0d29923c9022169e64532d1b357f36264d18059c44a8617a6f1136e72648c9051a27714a0dc833428762275a1b5635a3ad91e65d2713236c20f50 +Qy = 6167d5839cd4476a638c50db218979a93da44dbf97281d90daa8b9b530960c689279fff6c342af97880db1e9c5ae57b91d7be727fd1c6210ec59416d1b675f4dd666e0b121d144b +k = 3f037ebe0e4c3910953e123becc09c0862490e7f590245c4cdf9ea5fce930a7d7ca5d17f5689edae1ce706b90efdf84cd82e06e4ab95e9e2368db91d50110eb91cf44e50cdce2cc +R = 2baaf025290897a5d68c5e63543256523fb086a6f1166ddfd3d50fb307e0f0cf78b5fa895f8b71944a7b67b8afe5f3e10f2d248aedf573860c42cd7aff258055ee7cce472e8efb1 +S = 0f4d239f5af023ff6c94ad7f66d43201c7e40262cd92467c4ab54be8d2b8e6577d14375064fbd00a6327da62f03f75262392add0ec119d820205065aa6238433fadc8d1734b8481 + +Msg = ee20c6b61886e02ed94359dff3559522ff550ca126fed4b2240ea7d999a182b7bb618c50528fcbd261d5e497a991fbac0cf4c105c0f664d6a00a9001c1ed522962fb44dd4159677ce8f1531019f86457c055c9cea6247086cdfe0442485cbbc4386ad002b4bd39a1a187752437f04569705cb7adc0c68f0fd059d946deb63f0b +d = 2c3eaf801330b3f1b0504f2399f1d24455db29911f750c246ba0a134c3b59da8b3562911197764699a92ea1d95a2aac587e24f743df1dad3e1cf7edf955203e24a0225717f8d2df +Qx = 703d69e2dfb13fb6e695b0b30b31d89c8789e8523a7eea15673aeb4f1909192c06c27558eb55f0315f395b1f3ce84d9c304905cfda1d119bec33af9ade4420de2edbe75cc5460e3 +Qy = 75e35b2d6a8550969d49ac5d656afacf68d3a1dc6d17666f46ce3413c855b627f0891912e373af2ba91211c20f067d66056e6bbc0814ff3921d944008b25d8772cc8d696bfe1d09 +k = 0a9ebaea478893aa0e3bbfd5d007bcec5ad787d9bb5a8e9b8b79865c584966f0bf040d36f62a8e97c123d2adb7f38eb49a86e9c2ce1294d04fef1b6fec7908c4ca1a70bd1699a9e +R = 2d495eb5f6fb187a0ee1fa772ccefbb969e854abb445ec19ac3860f40ee65f53b92f6a797003574bccf0b9de8014ad4e5745ed264eb3ae88040ef6518809b4c66f691d496a85d51 +S = 1840b2977ff137f2a8f2f7c25e347cf1262fd128e008e30e4752315deb5231098c65e9a585496a9d6b5b56cd0b6d7dcb7150a077fd199be2d2de0262aa84dad414e100ac6162346 + +Msg = 734a9eb8288e32f5a67cc1d88704523ca2c68b798d90e188d871d9f50d2da2063baf1ee6685c45832a1818aabc9afc0bc935e97969dc983a484f16d2bedb3c7c0b8221408be2480a5562d5d1e5d8763d1e474bf2826aa93a68c3b870e3bf34f4941cf590d88e1f5a8cd782a33992213f3f6b4b4f6dbfb3c3c8f21f5eaf4ef609 +d = 1c3ff067497e5d387f31f0ecc9c67b3c0dd6ec8c81318c492aad83c9dec6c99e4fa47447f6f7082d636c2591d0df940b947d0a4ae3778e2b7cc8fb92214638399def894ada276b8 +Qx = 2e56655e37b3e753f35eedca95f8ec07b7a3d3e14e365ec041cd9003bdb78a7a8b8ad277a67da5d63dcdeb0ee8d8efb68fe61aad9b1fbef4373ab13c44efacf68cc499faf5b5dbe +Qy = 47bbec643d74874b77f0fdbbd2df3f3ff0d35f4b3e1534b2c4d5c76b8cc51693a70e17d1d4cd64713c5c05966c826458fb5411ac840ab5998bf3cd64a0769c3e075259a70aaf94d +k = 149848f4534eeeb45fc38ddeace59e8f83f0bfb4cfcd2b8b7acd0bf19303051a6a8fe75d4cdec1be036645beb075c772aef4a58785c16d984eb43b9b0317446bc3b3abfe7ec2cb7 +R = 17eb68556224f995733077501ed295088cc1184fa3872f5f11e97cf67c7bc1febebd31206a406c4479b60246a517cada5859d4f1aeb98dfc108e96e9898c6e71e59e39b6284895e +S = 22904497dc7a98fbe117e4427d74f4ecfc4e14d4467c99227427e3abb8d3dcc406f3704a7783d822ec1118a1d91d5945d5b902a2ad325bcc9c17c68ddf8b5323df9c2bde392710d + +Msg = 68e27cc72fec8f3f1f3882c6efa08efdf21d74d13be5171da35ef2855666ad2ea6919d21dbc1cb6d296663dcbceeba2fe47a2c6507d3d4a67a61b55b0f81c93412d7e1fbe15a590e342a05f55daa55f8591171303154e615e81189a523b855829a5c96621ad118f522e397e2eea05c2603eeae6e3591215e29b2289bc384d8d4 +d = 04b4e04281b210fe78d516a5b69f878b7fa058941ee9ae8cc63b061d1eb9e12c3e0ecb8717ff4623ff5bbbcdb53c48adbd9c69636506ab929c5507d7ebafae5654aad65a263e48d +Qx = 538049d071158c62f0102fb664a47431afe320474a173463819d5f83f6737b43880ed378470d774d32ad59cd9d75e5bb06b118f1297af3f6fa910f40aaffe11e46cd56cbd29aa51 +Qy = 0a4a843af9841e2427357bdf26817656637bf4650e443ef303dd458ed092dca3cacf2857d10aa190c256467ff834bc804f8557f6c3bdde89927a5f2bd55bb9d9f1f08a044cbc208 +k = 1191110485f56335f0e65fe04b9ad8fac1c3573cb4690db3e9f62086312d394b0e354890c0f74e3df7c43e718ecf18caf6904e03bd6c0912f906de1d2bb4c49823bc6c0dbfe37f4 +R = 0dff371ac365cb7de248ddb2b2fdee624c527c6c1908dd287a294bb43a4be94c130bfa83710b0655f21695dd91703acca64fe2e7927eaf9c2b9b230de8002798224f9505379bf34 +S = 2f30f31c863bdd68fae16f97fba756e033eada18cb0a23d7d4b2c9ea3c832e61b52185fcd654d9eb281b92a9b102c3b17ebf02422a0e4a7a56a73974208371ef65434c38f4d7d1d + +[B-571,SHA-384] + +Msg = e67cecedf35058b80787589514a9c81c6b9f4bced4260411d2af75bc46b8b2c962dc9d260dc99ebbf8ee64950766efc0e394184bdc8e2891d66bd3300ecc880e9d6a3d0eb615322378afc3dba89938704e9a8d0c949d4bae9838805c00377e3fe5ec6a1a98ad7eaaba6b500973dac48b26b7fb2e1b9889f8c387de535d4b2363 +d = 30f2849a713aeac95fde5ce3af853e9d070ee60709eccf35a076567be2c43f0fa34420b0fc097ff577221275a3a56e759efc32183be2d76058a7d20e5dd59f00415114d73a15b8f +Qx = 6d4ed3cf180e0e307745faa49247f269c3fa0a69042b3b78ad645f43eaa50d479622e27429a6b6b1889944f85975fec8018d3321ed38f6c7d91f2efc98467a027ba4a02c7f231b4 +Qy = 5f2ebf6abf7d53fa32865a9b6ada9bee51c1fe26cad74dd6ef78f13872f340d64170031becb5073001fbca373be4e32ac3425d705ee942e6c4e639bf72379e34776680a387a0c6d +k = 0da9d8647d0950f558a3831b47858168b3379656e603f2bd44046ac7546892d1a7318c5a9873c6ff85683edd3881a0f1af5501d17939f0825ed37bfc9a2d95faf43d3be92b237ef +R = 0fc7eaeef74806606fe51882c6928a06bf552d18dcc4d326d44a540abb728146657048b20e5fe2868beb5f04f32d43e9ac23a7f22c6bf325bca24f5e3161c868911ee61baa8a3c6 +S = 33d63693268f3762635373fc901fd72e525965ac17e2cc009177f03bd3524107b30e4c6d80bbc4f87fb1f288ed56812994541fe063f1d91afa7213bed8be5693dc6c17ec9a0714f + +Msg = 2baa1ac3f07e34b67b6af087400f261e138b070c8475378063286c16fa73578303380236a4af2484ea01ba56c1c619f6ae4e5e6ac2594c8e5aae7e7f196f96fc5d0f507bebedd4d818e77b9120e5b4bc01c7ab6339e88b71d0886631cc7fd89659bf513faf149c61eb14d55060c8dfc7e6e4c2b4ec8edaaa6bc36eca50a6feef +d = 2ebb73d04e6e5361e20629e3ad119b33db5163ed91fd9a8aec4b774898784b6822a08992118a8fe6013094bad0be1e9bf01b27c069e4335bff7e0abd28a10443818f6b825e9cef1 +Qx = 01710eb0167e8c948d381e3a75aa1e036b70c414f69260aab434ee20b6724dd7393fc487b5b3822e5e8065b06d0785a4a7be7193352d5b9eee66755ba106ba6e40f98a08c730a0c +Qy = 6006f98fc25a641a7c6e67fedd37aaad77a9102be3e1e7d32dcb4c68029e623a42f4ca7d1ea725bfd475756b80e18904107c460fc03b9bd68aa46f9dfbd60618670c4d9a68a3287 +k = 1861e2a356a6fa8096418cde7fa17f1b893a7b63810f3fd807a82bf4c745aafdc4963eb7a0ad0488a776e915b64d2b684e46d244703eb63b77835167908f2d6b06a2ed7b53f0717 +R = 046688e12d26cd96bb05d3f418d8ec34f4426f594acd2bfd8e9abd79405e612d60737007440424bc4f546c54b7402d11880f68edd996f49277b729450f7dda5d05986b014b5244f +S = 341a80e74f3a69b966ef81ae95dbdd60ed5a0446416653c4df431ff7c4b4272665a523379d76725e9fbe196018f0e747100084c823b95d7c7b1785d3623e52e9adbe773b81b49d3 + +Msg = 0e640581f573068d8ebd2899a6aaeed0bf987ee11e22b05d25e88e9a1c3451f45ee3800d976f4603c18a041febef07a01086832a6f7ecd5d498d52e796a9d90758c87c36f4a5b704a39c456aaee2d5278183d5815d619c193da9fbc427d701bab0874bded848cb4bb066f56e119b637c78aeb6eaa387c41bec6cdd4bf7b2061a +d = 1bfab717d6f6e16d9bc6e89d2ffac7cbe0f808cc8ca2eb515af7ecce5f3b230303775710a21bd25c2cc4566bb53c78c78e3774a9f306c751cc6e149929e45eef60f56c1d2388c6d +Qx = 6935c3e8b58f7bacd045e745054c227687800ddd86d6e0c8b1e426f4df0e4b71feedefa9172c43becebbeee8ee382a75396fc5f29ef3d2cc55f8afa9232038609b5034513b222cf +Qy = 138463efe3b32259dd90b759062f848deda84f2bcc0d687c410f1ad2dd745517c96c3451432b1e490902208cabb68bb872ec493eabdf1f3b07595d23a54c53e512777abffb7fc65 +k = 00025bd48e2dbbf1ed8bd9c1514303dc503dd0799c7815870b902249cd1d7368380853d36f7fdefad973700ded1e0d66950181b0aeac73eb622c880571315f09504ed26e28e85a1 +R = 1b9d6ccb19b208022d3a579a66957429682517e84a71be42fd571fbbd0247609d0b5b33808189efb52d21e6421d3b08821d82900577791b1c54e239b0d908bfbcdc060cfedaefb2 +S = 3356320389ffde577496c5b46a0de6d53005f5ae3489c0d292c5f460a3b7adc5bd204bc50a3bcc8538e0f8319c79b9024b065223b7ed9b0f211c5c224d363f5bdfe04db97f99e19 + +Msg = 51a2a560ba226d629127ce1ea7e812219ceaddd23561256331458c9f11fe73990f21d0dcd974a3773040090cfdc8e0f01692d951a0cbb60f8448a016c67abf46a9c150466ac77e656ea827b0ea7d1e77ea32071ba8314fc8a2edf69008f498bd1c18061d7d00f3340a7e2cd73e9766862378d8702e804a1870b442beb2d0aa14 +d = 00cc53bf7f1cad5e3dede4b4f4b082831604c92dd2b147869cdf1107259305b1d50359647f9f3d7d4e1e608865c65dc7c9ea46bc324dcb8423b554dc369d621743cbfb592b70eb5 +Qx = 20187d7de90652caf1210703ef65cada3b88f978e14ce6055847be7127602ba7a5391cef0fc9b009134105da7b09b49beb7ba2f961b84e6d66bd818ea99ec106c6e8428b17394a6 +Qy = 197aef36e47b571ccc0b41f948392d6061060063137d8c3b999ae507b76132fea1563775be555616cb5816b9b19e42b34f9673aab833f4beb9d1a0848a4bbf2f6f44cd03982748c +k = 08acd0f8f9660d21d62f391112908be73a4342767328d3375a8806dffd2598b6d77fcb4793e69f2390389a78c2b11866cf0f03666a60ad088d2c77bbc49fff6efc5b7283d02bf36 +R = 1004bfb78dc0e4fc0f2624bec6893d717a476fc76bb5c1d94c1dbf157aab5d1dc80f98a3aeabaac94d9cf9e26e1dd172f5d8fcd5b2d48cb3b7f0a4863813357b5cf8eae84478e44 +S = 30b1c8857977181d12c53cc2efc53a427801cde2890cf2ea2c99c6958b6869d0ac78ee2c846c241362c885835af49c47d20c30f3cbfab27d9cfeaa6d858694bab059229e30bf845 + +Msg = 90eeecff0a2e37df318c441df220dfea013ef29774ee92a56b213e13a798858f31e52b6ccb7599e7314f12b48a89884b113c1ba0526a54f3e9a33c940944319e084bff320cf5f391c02c731c4c4f8b05afa273374a1705d6c85337782ba7d36b9c00767180cad6422c11c581672ff631fa4c49d41b02481568ec87ea97220400 +d = 2b009530cb9d586e35dd8951ccb686833afb7a37ec253e547e85b253ba999f0f186b6d4ba41091615fe57678e9801b4dc94fa683511da25637b2acc9fe60936be15af16234c4ee7 +Qx = 5913ab6a2287d946b5b6d1e6c3d64117e085da7cf6388e333cf58d22494f4b067c684dca770ddbcea5db73f048b296e9c17284a8912b3cb722d9eaa17b6b1209311fb8e8757cbf5 +Qy = 007124ac6c48ac56746563db247bcfe6b20215ccc5cfb1d43c923daa07d429c8f0513bd1ff1180ef0f7927fa23fda1af25d20b22c935c426f9ccb402c358b57b812516c43111779 +k = 27a80a19e9c320b57146845fcf97d6debcffbcae877c33c62aec62a3351ef40bd90ef4c2ca39f9e51086931d82eec4ee7870365cb14e9c54ae735069801ef12c571bf1c7c1cf6e6 +R = 1de22c8984c593a0948164e6cc8631489133972482f6a7fb1c3c13f97e4584604930d369224850a1d24f267f41bc6fca04ad79326aef61f0d429e0e1b9e9d9686ee10f2bc52b104 +S = 085c6b34687081e280a180cd0c4ffe95cebbb0ad6d3b20a7341e467812f88c23973701cbf3cd2bcd2811415d0bf0cd9df229a88754f4cb0c225a2d11f57369a29edfd7b04639055 + +Msg = d3740cad41e2e365d80ae81da97fdf06d8b6c278b505e34cb683fb55ddc5189da543540914c0accd405dbf0063f6222885fda4b316dad4a83fd03e8d7b7e936f87fc0a5b095defc8a4b22fa97f00b394e672d5efd3e0a230c7e44dfeebda88641143502a400ed62e2a51f9561e5d652a43d616f16699e875deb9610c77de8e1c +d = 2cc2d0d7189cc8fb3565a039aee7633ddc00ff427cafad32fd2010b10fe249c9724d91785e7080203626038109158e3a61a3970aa3e51688aa7f5184b22f63af63f80d3540ec023 +Qx = 5fe95a030efac2e5d9522680da58606e3e7544a317a3f24d726b69238367d30fa586864d8c143c3695126ce8dffbc7e7fb789f956dbf53aabbc38af988ce50f1fb30294ea3e2d48 +Qy = 193d1e745d82781ae5c3b3d2233e502959d6862fa7987c6416584504f65639ca765578378b75d3844df179cefdeccff3c4c43aeb8865063e176fd43a27c93e329f8d4f6fd5bad21 +k = 02df3920fe4d328315353ff11b0264045248b32f48e860dc59d931ad65f39e97e3a683c7b5c64b21c3fa50a9685fa11f49df9b14ddaae03eb02754b01e03f60fc6aef1e5d6d7d3c +R = 1b91c4217b1580cfab56812c16bb5aefc1534ee8d049aa2e1d52a5bfc11519ff89f0d36ea2bfdfce8b5d3cf1527dcf700c0208a70595e9ebe4feafd0eb597e05df54212fd6eca3e +S = 21ce52440267fb16e713eabb8bf2d502c81939799f9d09cf48a50dce5da999f3b457dcd73c212d5d070056b1f373b07ad06e90d96febb7f8cdb4c423ef946f0799c038a3ee68ff4 + +Msg = 5eb53b5f92121396c5ff30e0c92da48db4fbbdbf27297f9bc82614ab78f7fd863e34096c615a02e349d8bc7ae4b0700130704bedf32756b5ee6af10da1cd717d624fadc57a9aa6db4a6c5d6254c0e8f8c3c0d4d03c264eeeafd52cac2c1968d9d85b106167a49d0ccdbefb20bdc10a2555f8149203af52853169a02db94e5e2a +d = 3d8936c00c131e38c6566d2464c4e207c878070bbf681695a6cd98cab2c6e80fe98cda80c66a5cf584e90a071144dda59c07b8fc7bb42464dbee5b6f739b0f2ee5fdff7e5a4e7cf +Qx = 0fc3a8a320e816305772bd5116cec2795d58633a9f490be8a1a360f21d2aebed6038ca4a5081288b6bdb1066307c26897ce38c24f8ccc98a63e371ff6b54f6016917b430c267af7 +Qy = 69719c868d8fd25a38a7338811904e3330a7b2289a8384bf24f6dad5312160f0093bf556fa061ca5e52d6676a8f1a3e4656740c82d3cddf0ac4f903ea885d42610bf1b45d9e57a1 +k = 050da632cd7aa58340adeb20389a2cb9897b8ec944c47e7177da65d9386a9dec5d63be7bb2d0f5b4943932e1fd7d87d5d7a80bc50a63dfd101a6a28005c894c6a6fa4c652dc519c +R = 0e6152b9050127bf306662f6beee81d024492b91efe87a56e70596a4a72cd02dd2f10b970c9a69909f85bf4783dcd3c32505d7c148166ab43b503ab098b6d95ef09a7932359f60e +S = 1f7d68d53ba161b61eeb17139eeae1587a6bd148e288c1f73a6bfb3a0d1f6dd8f9cdc27fa9e8c7a681410500c097ad01f320303421f1239b4a9c4d5446562b5b3cb2fc45a6fe239 + +Msg = 5aced64f702a57ed7fabd045a40c967a485d2a70b0a5e82561d5141ef329469b2da5964a34df203a980111a77adca376c643b9030aa74516f054648c1534d912ea66582adf3c655dbd71ca55e47412315df5e2893e43b2e2dfe6e4dedf426f11846ebef34a99f5615460ce0475f7bc54b4a4fd99e83c982097c3136ac6188a5c +d = 3dc7de970bce28a943d7599f2a9010fc99435b93bc4ba884d42503ac2941aa63fd07db34bcbb1127d56d6a4e277d6ca32051ea3467e376f74f98c3999d2f276b282ef8a28cf0cbc +Qx = 2066a50b9f961a58620f473fcf7d5eb635da47f4ce362f428669ea578d50d1c1513c145adcc03ba98f3d67bb422141c73e2f94ef9559ccfdc0be20eb206d3d114a5db302bd0751f +Qy = 4437e655bd255e7f013d197210bed70c5c1a6cc1daccb96145c9c438c8a44b4074629830d8df9914166c9378b33040d71918cdd0f47fa64b7c69f43eee0f34414b8f64882f90ac3 +k = 3b2e20f4e258b7f0cf69a460fece9b4794a12a37c0f8e7aa6f4f51dbfaf508f6f1e0160ab4388891efb09f0ca1f73178f0e8598750c9debd3ff856cb3a2872762ef9e16487a9513 +R = 2f265aa99ff806ffeacbf9ef7be575ce5300d3cfd4225b1835774ee075d7e530c9fdcd681584223f84a497119b4eb1fe34cd31d654c2fa262d7549acc251cece9530b26cfa3ab35 +S = 2c05ce4b35544bd1f20a68eae7f3483e0a0628dbb53f0466166257f69a7a110d2838a76d204e7a955a8977508e65f2ef6d7deee13e4e2ec0f2b9a8b4bedc26b3502813b0334a1b0 + +Msg = 43c24aea343d4e088bea25be69a332c631275c36677093e057de69cc83a4c5e70ab270e5a8930f55846f1a22ec10e03007dcf0942c6761e89c65c6a4f032eed97dc3a2c7f7ed1e82552fe48828a132ba16c41f6bd82a49335428a24fa1679522000e6a1d12c646e0e4b4c584398577ea9493bb334fa3cee8bfdb6c2e66f46436 +d = 2de6ee12eefa7a4a736484b19b42a513dfc059a060976edc3b0aa4b50e98d72df6506fed0499ff8480986748e938289e54a5e86c0c29733a9bcf5985aa63d8a2b57933a04a8e8e0 +Qx = 073fa1b62d469f2991d54f1472b60da87ba51be0a9dea361d417b91a4a75373695e9f27b3c672322315d7b566b1f22b96c54adce3e958080fa8a02836955f6264dad3a87fd11f06 +Qy = 452c0a07ff65fff741c96851657a5afc7eeca239622e1260414ed736a04e487157c52da98a7845bcf6f311e0f2e59bb92248b6d47dcb93da6f7e0af644b7aec7603a01950293d8c +k = 1c87653066057636f9a98a7c69a84e103df480a92739abc4d5ba53891591e3aaaef6ef3ef5e89213abbf71af9c84d3b30898580e782f557a03694446492afb05ab801d7dd631c8c +R = 086d539546c61e82d74319f0180411172acaf08b5296dc6435d4ed7bd50cf23d3a071deb3be01f74408e64ad244f069cd41227ba127145df5a357489f944b61606ec75e8377db81 +S = 0a34d9975fbd601614d04aa41506b03fc15189ee8102c0431272d691a322f3e77bcfd19d8bddd19b307012b6c6349f5ecf88b5a69e83588b0e18096117f207304b38c16a9a8592b + +Msg = e89210565959d93b483659e62cf41f0a0147ea23890c2f1a694c377a826165e363860e4b084016cda878a43eb68465f81f397ecd50087a25215ce7c4ededa3552218071fa3acd7ae380655fc8fa884998209ffc8a2c26f1ca19dfcfee455dad35a4e72caecd8da47eb9ee21b889162f5d3032724abfd1a31e68612e18bfa9006 +d = 05468f0df2c9854f5f655743e79c750fd8812db28b096d97207bae7f5aafc6b6090c9c636ead9e0fde32a1ff8d539b53813733ca812b41b58ff85a941abe4f128d59fdf9847baa4 +Qx = 6591750fbc104f82c213fe88aa620e8a960fd6140598e2e6282e0d5c5ecffd09d22ed94166109561a7f4f694e171189056d8b300b54c8134485500effc7123aaa23862e89791242 +Qy = 05bf8ec10a9ac6a92c54e7fb2135e2aa4f84da571d33227bde0aa2e6c1532074882235f3103d9a51e80b7a9a19067f35047ddc52462db7c634c291e8fc5eb2154f6913bd0846b88 +k = 242308c430de514be1b9084a7e6c96894cd5615a7c71ea22316e539986e9702080ff6ceef2980144c55d9749830c20c9ea90b93dfcdd28fd862b6a15748dbb3d982e4a275129c75 +R = 361e1b7a0f981bcc65480b370c5e09b1c2e2a67cf41646f6a3d829f663c09115892237400317601fcee78a04269411d267dad3e8fc6f069529fbdf0bcf9b5f13c9c6de1681e8b0a +S = 2620c29f86cbf698cca5f79de364ae131345a802c0cccfaefdd7375dcc9ba6ccac91f70943eb606506e51e2ced50491eb8f48769810b6dc178d56702838f1c2f0930f2a9e4f1db6 + +Msg = 48629ec97f56273599cd9903f8a84ac2ba74275b40e1e42fa47649568babe05cf63c8417d828251acc2eec525b56dc9082b68d51b0c2bbaa7389fbee15d058cf482993b2bedc5a9101f1afdc79989a812478245d191550109fc17215679553c508c84e3d4cfdea377088d09eb214e6f92410facee4790beeecafe72b2e3ed192 +d = 3d3c6a7ab9450c94aa3b8a1ffb678e5b647af24cbfd66ee3944e6f264f406295b803767471fc67936fdfed1714b4b8761a07eec86543b7c4da6bd2fcb33fa8cda4077737f398e18 +Qx = 42d536f1b15a22f4ba80066798d8d1c2704988eeb9423319c1850a1ae6bba4097307b515640ed3112e93f1f6ae67c60a4b0d2b6634aa7038a60b52b2b447fd1651857b71711c975 +Qy = 79eb18cc7493a1c7f2f9b621969b9ce9ee37fc0701f6cf56f5d5dc6efb13a384517a387f253aae1e93bb0a919b0c22e4d6cbc79b449b268a068b7eb2853324b96715d75b8c26f27 +k = 23ce112d60a2f7c29d77d64acd9f587e0eb75ef8e739b8548e154681efc24243594eef5e33d845b1e4e89bac56f2e9586e042e0fff38bcf79c73fc9aa5fc908261df5cd2c6cb821 +R = 3a770df8a2bc35e122c1bd551c38400be47f2499ff57618ccd01e14a2e35e87a67b0e40f9a10eee7efcc3d37b474f2840fb8c24a9adf93734680ae6b25818369c8608a2f8f338f1 +S = 0728a4eae5f5638a51579e224a24ecd4c997001bb8681e23a7476fbf78b4fab84497000f20c1e67e8a4e4116498bcee49ff00026009af31c1037172188aacd264fde8db15c97167 + +Msg = aa3a9fe467b1ca638dd0622c9ea235a418b39b2e15ad81fee01b6892b240783d8db3c72e16c13df8016dac6addbfb85232158325bd7432fca3b8bf5db3abd0b4c5ccd0999609dc42199ca4680692a0805cdd68108bcb493a558ab507cec0a2782a9e976928985352edb2abc0c07078b59d2fd86fda7fc76cfe573181d934c46c +d = 01ce010ea8e6e1a0c26ab22eb90f0700dc73b232c429d36371e68e429792afb7223f10327708bcff779ea55fb5f22ad87aa054e84d10f5450f1bc9a89279062ea2173f55ab0f76c +Qx = 4b2b5acef5921e691f10ade81b91ba8e68e73b33a2494cf4ca6617707861f334eb07ca96dfd681dd63f78102f8d792d66102117b739d477e431d9a3efd79bfcc18cea156db58a0e +Qy = 7e421337d4cb7a98cf9c9c6fdf9fa242904d9906d8a6759ef64a82cbf923b2a57073ea0eabd14aa4295bec84d50a1722fecad3e5f064bd3171facdfff45b170e49f185a3c193f2a +k = 326b62065b7c779dc398ee03a8332cfb940b0f24a7d3de4a90323d9e390ad3fb1f0036abf6f525d8d88ab6641302d10db447b78780d366f32ce36ae571e323124b21984c48aea7d +R = 3d2b207b428829ed5100a92f7276e16978e374c734834b0d627cddf6aff5cab72dafefc6c038a91426e35ee0f2c1acc11c55a34a89874100b89588aba7b02e19490e66eb49ef6ed +S = 3259fef5c2a0779ae408b26e6c7d581fa973156cdb07c329dde0c12b6c498e7a94577719865b7fcc0db078ba72a27bf338ec6b8aa41c15963538c329c55dee67833faebe3b643ad + +Msg = 6c3937014361799f1461f652841b5137eb0dcaf01dd293298d002f27e9a770b9e1a30367e35c04603881f0c814cf8ecfbe1619cc49cd516b1d60d27de37ed52a5e1cc300e2face4669f308ebe6747255a3d386f16778e494a7cdd10b45171b2bfcdabd91b805bf24857708c1b75e368edb2874321324f83a19154d3a1578c767 +d = 1e7410d012aeef02b3723346d24ebafd684c99087ecccaea1cf3735d52c4c81dda41812c09f1e874dc964d858ca240a19963d5dc89451f5dd6764426ae41cb23f19cbfdca0fc562 +Qx = 400a3bb3ff07a339ff98f7c45fe032cf42c0e25de8dee2934ce42dfb0c9894f4fce27fef299b41beb8579270efc7b01c0663c3f72d7bdd9f6ff5186eca9c42d15faaef8784211a5 +Qy = 06fe998f7a0db06efed050d178865a2b7de6ca7c789cedff7f2158a5e07ac1d335ec0dbd213fc9465399028fad8b7f4d2cd16fb8ceae4d3d53abefd2b4037efd7f7245296bfdf9d +k = 2bb0fb9c428e42482d5dbdb35157ad0fa713fe732dac8604c0194e3f9738fac5cf3874bd863718712a3da45b7c4612c8685465ecaec0930d9fec32ab25818d2f25fad580009b698 +R = 1062386d3e77043298eb88be46bd4e6f33c83a7358926b30ca06a6b7139815f6e1630f73d352a2cb9bc0619d08a89d4bde1636c74b6580543ed743073eec2ae0037bea2b3c9228e +S = 1ceef759d804ff7de526559636d0bc7930c096c7b959f04f8fec5d7e96129fba14c8341b0ed84a64c6cce7cd5b058fab7f44dcf3e714544c9b6f9c1d46ce512870deb51856e9dec + +Msg = 12fea55ffda15db902aa6a4388b9807c89c193cbf75b5d2a4c95206fa43dedc45974c80079933451bdc5b3ea015ed3ca2c54156dc61afb1bc82adefed1491302a48b9d3d2f474ab45343c611677d360515b93fb36da7a1c1b2341c9cce185c881c0beef33d43967134a190c09034ae3261f3295b79aebd3fe123616f73cf2089 +d = 2139839ce38eb879d266065dde5e5ea227244323b330e3ad5a0bc690f3c210f794cf18f0d730693887548bfbc434f48ee10ed34cb41d52172b06e448df938170a5e17311cab8e88 +Qx = 2ecf46b90616b534ea25cc9993942fd7576a1c4f2f443d3b1f56d4490bf0af669c9eb9d110fe2a65609875e1a924bc4b9ed2ed2315047bbaeadaa1029b38a7a87dd8751d4128e80 +Qy = 2aec3a2f2557c7152a4907af68aa39485274f20927b2da70823440fbd09cbc308d46e30bd6b705f615b7074fe5421ca36b4aa53861983eceae9a69649495952e75b0f060b5d26e4 +k = 2e3412b61eb23d33ca2910dc25dd14c04d2c8b403d8077a72b9511d71ee9da6d7e1db093b92287f8fb00aea0576f6712c56d80cc4e3554e0faa9c7d911e3d17682de831bf649bd9 +R = 06a3075efec81a86175cd1dc2bfe82e83aff1db640184a6a3ed7a0dcdef51aa0be0005c54ac05f9b65af265af7f2ec3d1d7c137184b0d695d701ff1aed194faf2efa98ce6c5e502 +S = 237d7ff92480fa7d6d1f5a0564a2608afe5e95ce2c29dd88853d1ad9d4d2beb8d1f0423edb883faadd592394f52048bf2dc26d2dc19279477ed86621c7a5960ee3c3e2d345fda29 + +Msg = c8395546842ddb545d8ea3db4efe970453dcb06025ac3b7a25aa5ef62070f3021b9a1fea91ff7055b6c398073e7886a6f71afe53c82c47b71377dfe291972503bbeb25bd477bf0e7adc8a5d3f8b34ccd0080d61e121214e1b29802b711cdd8a6bb2275a2395c467ec2c1571952992e448d736d8bd70ee629c75b5e32b8323a00 +d = 274f70fe69e4dbb55c5d404e39f5196335047113087f8711f2f67f2be4964e4fbcb865680758df1c401cd677b0971654b7a6aeb7bee0d6d80ac0de14d4f46f356b2d5545c185aa6 +Qx = 2b2321e0a1df083919628dd8b4c318b9ded8a3e660ce5585b21e46843228b4d32da765a3776c181654aad0ce90724bf85b01b051d236342b48d41a1dbda1e9904d659c98a039a97 +Qy = 20227182fcf099d46d9882c0b0f26b0595a2a3166248898df2f3fd27c78e7c0b8b59ef0ed6745660c0dea1acb567f9d943928864dd1e94f8eb6b5b8473c0c91485643189cf679d2 +k = 2f234066c936625fca10dd080cbbb1228c4d2054cbdeafc8a0a248c0d22807fc92c661b4f69586ecf9469bc4c22895cc73ecf492fb2165a12b027194d409677e7185de24f6870a3 +R = 3a48daa8e379b3b2f377049a4d462530c9ea67019752f4af4b4192b02d6e028386dcb9ef95c8019e90e09dfc8dff5e6f6812df491906ced39befedf16caef614d8c174e7ea95fc1 +S = 33f18738cb26d88c8c048c58a210c7be70c71636dc62c022df1bd7747d8c67bfcf5ff2fb3990ed35becf6c77755ac62aed480df55efea578671bd8d50536a10e2c0192bd42d78e2 + +[B-571,SHA-512] + +Msg = 10d2e00ae57176c79cdfc746c0c887abe799ee445b151b008e3d9f81eb69be40298ddf37b5c45a9b6e5ff83785d8c140cf11e6a4c3879a2845796872363da24b10f1f8d9cc48f8af20681dceb60dd62095d6d3b1779a4a805de3d74e38983b24c0748618e2f92ef7cac257ff4bd1f41113f2891eb13c47930e69ddbe91f270fb +d = 03e1b03ffca4399d5b439fac8f87a5cb06930f00d304193d7daf83d5947d0c1e293f74aef8e56849f16147133c37a6b3d1b1883e5d61d6b871ea036c5291d9a74541f28878cb986 +Qx = 3b236fc135d849d50140fdaae1045e6ae35ef61091e98f5059b30eb16acdd0deb2bc0d3544bc3a666e0014e50030134fe5466a9e4d3911ed580e28851f3747c0010888e819d3d1f +Qy = 3a8b6627a587d289032bd76374d16771188d7ff281c39542c8977f6872fa932e5daa14e13792dea9ffe8e9f68d6b525ec99b81a5a60cfb0590cc6f297cfff8d7ba1a8bb81fe2e16 +k = 2e56a94cfbbcd293e242f0c2a2e9df289a9480e6ba52e0f00fa19bcf2a7769bd155e6b79ddbd6a8646b0e69c8baea27f8034a18796e8eb4fe6e0e2358c383521d9375d2b6b437f9 +R = 2eb1c5c1fc93cf3c8babed12c031cf1504e094174fd335104cbe4a2abd210b5a14b1c3a455579f1ed0517c31822340e4dd3c1f967e1b4b9d071a1072afc1a199f8c548cd449a634 +S = 22f97bb48641235826cf4e597fa8de849402d6bd6114ad2d7fbcf53a08247e5ee921f1bd5994dffee36eedff5592bb93b8bb148214da3b7baebffbd96b4f86c55b3f6bbac142442 + +Msg = b61a0849a28672cb536fcf61ea2eb389d02ff7a09aa391744cae6597bd56703c40c50ca2dee5f7ee796acfd47322f03d8dbe4d99dc8eec588b4e5467f123075b2d74b2a0b0bbfd3ac5487a905fad6d6ac1421c2e564c0cf15e1f0f10bc31c249b7b46edd2462a55f85560d99bde9d5b06b97817d1dbe0a67c701d6e6e7878272 +d = 2e09ffd8b434bb7f67d1d3ccf482164f1653c6e4ec64dec2517aa21b7a93b2b21ea1eebb54734882f29303e489f02e3b741a87287e2dcdf3858eb6d2ec668f8b5b26f442ce513a2 +Qx = 36f1be8738dd7dae4486b86a08fe90424f3673e76b10e739442e15f3bfafaf841842ac98e490521b7e7bb94c127529f6ec6a42cc6f06fc80606f1210fe020ff508148f93301c9d3 +Qy = 4d39666ebe99fe214336ad440d776c88eb916f2f4a3433548b87d2aebed840b424d15c8341b4a0a657bf6a234d4fe78631c8e07ac1f4dc7474cd6b4545d536b7b17c160db4562d9 +k = 378e7801566d7b77db7a474717ab2195b02957cc264a9449d4126a7cc574728ed5a4769abd5dde987ca66cfe3d45b5fc52ffd266acb8a8bb3fcb4b60f7febbf48aebe33bd3efbdd +R = 3d8105f87fe3166046c08e80a28acc98a80b8b7a729623053c2a9e80afd06756edfe09bdcf3035f6829ede041b745955d219dc5d30ddd8b37f6ba0f6d2857504cdc68a1ed812a10 +S = 34db9998dc53527114518a7ce3783d674ca8cced823fa05e2942e7a0a20b3cc583dcd930c43f9b93079c5ee18a1f5a66e7c3527c18610f9b47a4da7e245ef803e0662e4d2ad721c + +Msg = ba6be551bc60653192401ed8ff9e1acd9013d8811a7a1389528bf07438366f5772cd7aedad010c19c47622cec03a4d35b8003b39ed901b720629ab59de55a03c1ca50a62987f8da159e356245df58d5ae1936e65f3cd3acbe03ad1d0fcab4aaf2a7a947549ae776772201efbc6fab1aebfa1d99994d4f43dc28f39c0f279b992 +d = 2a69bc1df069c6e89722521a63675f318252be629e7558f3716917998e660ac960b0b750562846fe6c12ef492951e51e224754bab84a6eacd4147a5f26ae85ee4381bb14ec2a8c7 +Qx = 4685c0358ca31883cdfd7d609afa8b1e47540a97f473e0ebe98b0aaaab9418877aeead3a26fb01a4725fda20e7223a4fe7de0df6891c0812555b8b146918d3b80edd11615d95b77 +Qy = 67c92736447946c7577965b613e18950d813a4df049a6000895f9dac34d73ea46a83c6a4e7c83831af0d33026825664c44090953521175b9da2a7ac563a0fc5e13c85d34aaf49f2 +k = 1700d9ac00a987ff3a1d0be4290979317fe60f4f8ce1e0e72a026fc89e28c0070b76ada14f7a1a66ac2e8aef17eec18b568ada4fd59c05414e55356fc17d9e5079e6cabfc1f220d +R = 23a279662efec48f6cf8c7334862525b52ac37a9b03da6a063da2849f87801563242783434fca02fa23e32249666ddc6f596e07750ed21de303f4f10de56f1d37101cb0826bb8bf +S = 3b449467b150cba0d7c2b44280c5ac452f1217384ce121c979625d313394f6cef501b81980a02567ca55da2bc313dc0754b5256b08d8e3b63ea033253b205cc5dcb014574b8e9a0 + +Msg = 295720a79ac8201f40a66b06ae5d970afb15f36582897eed25cd92edcd00f70ac8e31c556eed4375ea044c2e8b227a8e02c0a3e996c9272d52ac7b3ad43b80f217295dddc84b177cf1e800ad08bf7fdd021fb2f49b54162092f8d628679c4ee335abbc90c027264c8b288c6e16eca3172eaa297ba50626b00fe0a0ad3a9dbeeb +d = 0d11ed1b78b22b3420df4ddc4acc7c2286d9569dd6dd88e0fa3ecae69bcced68bb81bbb4ca6e9b54e67856e7fdf39155aa27aecb9cc827ccb9cdcf9ac633561b27d8eebfc261aee +Qx = 1868a1335058a69e3ce24ea4e6e8dc25851777bb28d3a5da67b741ec9c46e26f2d2ae70a48c3e4feabb3b15b3c3ebd561f667ef3b95a587621de6073b9c8a904755566c5f7a3b42 +Qy = 6365a03c3f3066eca1af17bbbd08cd52e89f8095075b415cd4b82f3364cbff008fe3642fe71e8a8c634ad0e5d9979251e6cedd42cb97c2203f743210051f5ee1b70c861d2a72c00 +k = 075e49d2ff6f2aa8b44fad90446474ee0e72323a3c39e731b6c2b075cce0cb9d193bc3356f8fdae0e0143603a57028836ee6451cab101a6eb550042cb41b5c4233d3ad3e87034d1 +R = 207a8eed0b87efe65ec558a0ccbecb13b9215e176abd93c1a4803fcae713927ece70ec6c41c621357d78a13a950958871a52621f1de7ab74befd964a0e8f4820b84af3e0811bc67 +S = 2f02017714f54089652e02af36ac5165e44ac4a83747c805a9e003fde4bdb29561dcead2c76b02c195074396a2dcc1b93a256c721716f8eeda8dae443c3eea446118fec3cebc4dc + +Msg = a9cff41c6dfdc4a12f31dc375a5455950077ae323d0b7a3d9a8dde73b76e9d7b94ddf9c88ae8e6c262d704052ac47681fc35adfc56c904baaa6e146eb653984369d76a85596cb744941aa7b558c945ff2e81bd5ef7f00ecb4f43af23b4cea3bd4ba7b1899f1868a0c0ecfc62ccb1d588955597ffbbaf34cab2838efc2b866669 +d = 2c36ef754b5bd065e9eadde684750acc52795be80f54dd3d7a7d743d968a18f7e404bd71f8a76eb0395f396df5a7c2ff7e0ab6de35df34282fda6ee01fe5b9b68ecb4e378dbe32e +Qx = 4805e1a23b6eadcf91647b40903bc1fd3b9921861c942fc24d2c03d0544e7c01f004caeed04b5c4ebbce366a098a878c322cbebe7910bfb0f91b284ac1aef344152fc5831669b79 +Qy = 4f589ddb4da482ba1e9a59241b1dfbc7e9b9b69e8f69f8e90460ad58fdecc48a56842ea6aa0537abec0a605ebfb713e588685a98f62e05a7d52082bfd57e3d68fb7851b37ec5567 +k = 2f2002bdde0c0b0fd92e96abe76c0858e42fd7d94a181c711fc6753572539e18effa8155cde7b1e9ceab2394f9eba874b7ea257d7c308c8ac08500f4944af5f33057650608db8fe +R = 27f9109799bced42730faecdeea68259383a45033c6d5dc8d87adf994b46beb34177e013700b13f1253cf756a8866218e9c8adc180f3c242c56b3de28405b36940d53c2aab24f1a +S = 20a762ffb2f5a88b0e1356964fb558b555c424946109d16c7548f41a33cfe41da1f483276a27b188faf948a56670716ddf3b187570c9f514869c4492d7773d6ce453a075f9bc64f + +Msg = efa6c582d7fcf5e431aa89b3b00180c0e78efd7ccb0384d90b80e59a115a13e55001d951528c42860132531c9b8ab29dda7a657c53c2ce96fd85549f6f1810e121eb89961295335eaa0e40532d85814a4206e6fffdf9bff76599da9b2e71a22ed572910b0e3bae38ad72c7042579f106739a8628dea5a745168bd918736e488a +d = 19ffee50be5496507e3ef5c40ee88a49625e46d1dd1686a52b09ad4a8e3ee9ef364f953bfcd97c52104eecb6138067192997cd4ebadaccb73c7b2560879289a46353a756b73cc43 +Qx = 77dca410e722009ef11b37742c2c003ab3015d0ca0328a70d9d41aae04cb64f7746f1c348b08458eb3bb1788f9ffe7d0570a9b689a9b7aca43e05400bace7630d598f5b484d13c4 +Qy = 7291f74cddd9ff69470cf0d92afaaddcc4c8c274d4a7a64fd94292ddc8bf080606795376bb725ab4d32c72ef77dff34cfedd34aff2f463d635bfcd7e1fd002d84383dc5bf8d5d23 +k = 2ea37750fc3bbdeec100694068d55f92fdf35bff9ed49251c4b8bbfb2dec2dd4446999af8848e05c7b819aeb1864430ab4e8c1d684e1cf78947a71b04d5ab8ad61cc7e3e4e24205 +R = 12ff1852eaff37fee997531039adb1fb2f9b4f4199670c022e8534625fff1fa93390ee9bc7204ad2ba3efc2233260943f1d2381a3cc025b78c6d1f660a7bd6f42e5ed3c123055a9 +S = 1b4d8abb28ef1a9d77066921ed50eba64b8433cf00c66b8467269a4a914f568cdb86c766a7a6a52437c5d98cfc9a2130dfaba20f3c2001f31bba7071647d51fb9fbd5fc67ee120f + +Msg = 211acebfaf13bba33a9dd16722ec53baab92a140127d61372cbf1850f2fc894e942e25d780778235f880743953d04eca7a9205602e388172aec2abf35412b483490751f93b51239b6701cb0aab14e5179b0d7f55d8586358381dd83e3e436bf69a6820317d1701750cb1fea1293467ba589eec5f5779c2dbf2a9b8f28c4dc239 +d = 3129e96fd28c4198cc5242c1e3531a3979fae643d527044e98d7721aa56b5b4b45dfddfa17a4115e10a2b4f46d92f81cbdd7e86e588a4c6d8c2b3a83f54cebcee1d1dd33e85d81a +Qx = 73a92abcc991e3f89d82c47fa0fec48e3e7c4d97e2525f8dc2d24da39f616af4a5a804d2603703f6db7cc9324c5b56a21009373f6605f561c8503394e7746e51273b5722ffbc23d +Qy = 0684c842f03a53a60cce087f4fcdbf23b7a28c48b6b6544f583342a65d97dd87037c6fef176a1f00513713468273494a5be683b68c5e75bc08995fde763bb6f965da1acb7e894f1 +k = 0165e52640fcaf8cbdbfe73cb8058c53045e7670aafb2def28d2c9eceb5ed1634b5339cc47ba981eb6eb03ba714c7717e9ed5acc15c8f304702a0409bd4508015d4626cfc5484b1 +R = 27dcdf16b7156a7a05a752da28b5bd6b233e8a7c16eb7f9030f29c4352e6508f8424d1b5ba789dac4152ac4812ff7975cce69908371a81a4d7d9dd70a8dabebdc4e3af27234f0d0 +S = 32a654a31f09a9803e502a1440c2bcf122780f4f47aa37e15991d9a548583fdca48800804712816b212cd3c657e6bd4cb7443a0288592541473c5086e1277250612c21346538374 + +Msg = ee592e20e0a45c18089c2e41460e65a7d22ed9714379f095d43a308bdd383128aaa6fb24e9d35fd28fc95c5b792ad75c980d2cdf0f460ac60b12c5919d3cb28dac4d488196be6c2dfe462b1b0ce59f8501692255840f5215c0fd8b74b1996a267a5e3b22d2841cf0a0b6315ef4ec7180f1c8494f4c07d5869c01fa2711739efc +d = 3d723d2697cd07dd8444f992f2ab4a063db334034c25ea9be99fd7a1f495e3a644e5ea033a41264e0d24a911e55741d0cab80a0bd678eaec2bd1e60424d4491eb86d664900d907e +Qx = 0c7a229b5fb9fc774c1b6250f3bba2f0972d1aada7080641c014d012db0637a0656a43024ec0ea25ff70012646dc19eeb1033aebcc96a001ba876b2f5def6e198b8d4a53f7c7f4a +Qy = 09228a68eafaac214fdfa19923a0c19629de31ac0967c9d02c53dbf221f9affb735d3bad732f381f1ca414d70920231a78f742254d895a33ffab492f8e6094a542e77962a324ba4 +k = 3b3724a5933353bb9ff5f742f59385e780caa517a963590b7fc89882bed95cf90ca6365ce8b882f2d96e56bd866a5c437733b681308c570c51ec893ea95fede66c7aaf4561173f7 +R = 2a487c1fc29426e8e85f0a35c177cd168a444959b2f5cd4519b9edd52af3ea829cfe964ac2b59198af8e2d3859ebdf9885ebf57bdf5767da1611d3958de286f91ef397230d65599 +S = 10fc01efcb22b982f992efb71887bc79c3f32a9088bc2011c269924cee0f47c36452399d499f2933587081b872e9fd2191c20cd5cd94927839228ebcf22cf7acdf4608a2fa66310 + +Msg = fffca41927debbd53455821441d9115db99fb31bfc69752a382f57bc7abe021f148346ee29e17512c64b4918ab2391d12d6e5643bee6b5682885dc28177b292e23a37ff99b359b9cf7578432af56e0ad1028a6cce7428980654c145af8daf09addbb3be11228d3c742defca9d3b1667f48c63091fe3307ecf72667b02e008f24 +d = 1999ab45d66cd1d3a0fe6aa43bf5ef1e2a67637d53674f6fbbfb9b582be91fc42a12cdcad94b50b0fc7ac55030de24a0b99fbc4314fa743ef4b5198bcc5f54d8b669fbed78e2e91 +Qx = 0cbf3b0bb4a2e6c225aa922bea3b233da4661df5da7e0a1cd343a9b6655ee87fc60cd763dee21eaa2b81c4dd5af6f4fadc3ceea643b37a6b17a6501e1b9b689fb0c4716911c1f10 +Qy = 14b5a9ae025f09066fffa6797ddf95f27eeade06b8ca5be5738f770362d5213c46ecfca58e3c60cb2bae1f8ab1bf0577c80b4fdad02819fc174cafb33df64fc0ec79713f7b25209 +k = 253b533d3ad1c7095363e3fc80cb32471061e44dab3f9ae0ea6252f6ef169cee8badd3eccb77096ae9224f89baeee7e183058579680661655fb689419e36a61e8573de5ecb4cd09 +R = 3ba94f7682fb61de725a35caf1d4d799c4b05a1d1c44eb1c251dd8efab6b7d713c3fb917776902a1bb202f9226558f4c1e75964349717e6dff938d0befea07a9ca1bbd429dd6318 +S = 226f43be8e24062180c726b5cb721cc04ffd3acd82183925523ff9e8631aecbec2c224d5a291bb225f0da726d256aa822ee7cc2c7d69df3f2a5beb21132d91bea22e4c5db900cec + +Msg = a2f71619ea04f7057e6943c2cece8594b341ec3b96c3915d924f94ba13fd7aaeed41ffa0e842ade414784f1ef825fcf2dbcf7bd8263b802def45f94de596aec0c121fc06558c7bb06b9f27a9bf56c42090b5dc344e82b69c4f528d33be166764a593483f6fda0cf56e6000ff363ba220f5ea0ea2c3191615c7ae3bb4fa575324 +d = 2ce1cae0716205330d730e6bc6dbfb6b951dc83ee3b4a7dae75d057e32e8a46e22be75b5f09135452b29c34dfe81a9be2e8dcd243fbd946a0ed14a832a7802e20cfe1abfd3d6e4b +Qx = 75971399fa621ce535144ec1d57f544d798a0a59207166c3d657e5a80ac00e8f5b643448e3546064d68ae624aaabf36face3016561a248256ff9131950ab8b04710551e12222d0c +Qy = 224a50f321647f47de3db4fbe1bf1e3a3dce8a834312779f66037315e3326721e3fd63d4d6ef92b7ba1fa9aeb70f92e2a6701458ac8da49ac386491f2306adcd8dd781fe75e99e1 +k = 0ad95aa69cf9f40e13f8a72ed6d93388168abc8001670ee4d95fb4b726b1f958205ab2f458df8bb9ccf2405680d0e6951abbb922cc11d47cfded93c0efdb70caf0c54e7ae96d7e5 +R = 09ce019161bf29eeaf323933045f59d2efc372904ba50c4a6602b8305234a851d95f06a5b56193ad5d28488102ec25e3f421a5f5c4626b435b423d612e6ab60e0a4fe5d4952e2c5 +S = 04f7b7ac787b361c2bdfa767da9c22152e402184a7ac133f651fdcd928239215dc917401122a6d41e78299b4235e085399e594465b7f8dbfaae9bf302d83470b4295ea06bb9bd1e + +Msg = b60415a831eca2cf60c79a334ef2f327a76d290846ee588d5d33d0a826bb0c7ec3e11dbb384a7f89c8d180425dfae7463e0ea6497d2eec1dde112f1c1efccb532a2e2b66a28e2d36d4252a4c3b12850d465fe21bddc441b92e6a7b0f67744f7f6e7812a0603211a26518b311a5b190ed890ad852bed4f6ed13377cab3eebedf4 +d = 2c9d0fcfcee7e75c3245ba955ae04188b1033c55ec9c821d8de7685276bda3e9a93c3ae1b003e5ea722913e7b169d67b1aa2dc8cd42adbd9368672a3f81a6817bf3e5529dcb0c8b +Qx = 19cba4c8ddadb596d7303331f2a22461849ebfbc78ea69277f72dcfe23d08397025ff6691c61ed9958d68a9c5dd8a32048a89a2553afb9077ec43358763756b1473ab2cd8f25b53 +Qy = 319eeaa78444b7cc5d8cff4e9199ddd2c6dc7bd935a1be1d8b1c657dd5ac49bc92b0cd91304ef44ddb7ecac05518301bfa0e533402043533f99549621e31dcc282a52186478df2b +k = 385e12170ed0b23c9c65ff7edd413145fd343dd841e85c498fae5f36e57764168899902817d4dc39127010faa1da68000a511ac69f80708be5afe1631432f3bab7aaec2bdeb11b4 +R = 231ef400c6a3a0c7b26ba1b92341b72e138ca62d04ea2172854631c40c48081a18a57e9f055748245d3e83d10d21af39935b0e50c9c86956ac46c1ea03ac4ae023d84b24f830973 +S = 24d37d67afafb0676cd7b5da2960cabfc804b0b3244b5e6739f8fe43d0841693d28c61b8e76181f8aa24940d76fc5ea8ef3a95f72f67303e1ed85ad6e83cd2c44fd0e0f3f2f44f4 + +Msg = 5d15a08226cc74cf495be681b795d0bde26b19f29aca1a8c6ef77d50271ebdcb4e5fa2df23961fe11620b1c6580183f6ebdceb2c09516c8127be576496fb71449bbbf0a9d3d1c48a25024619b97c3e0d8b165897db96ae9758d13ac28441d7cbfb75b23cb423e0002046358bb6d64779974a5995dfe54b398f95f7d64fc52d96 +d = 10c057bbaa44ef0f565edc288bfe66d4f6acd8686899359bca418ba89fb690429489a37bd3c6c9f3a8714b2ca225868c6a45fee360e378a676f7ea39321790f32a4b005b81dce43 +Qx = 43b1e7d7b2aee3563813a6692f0b4b61ba82b801697c3e23724a2fbab2af80a2c56be55af41def0a90cbfce7a45ec61629906055a8b2a5013740e96859e580c444ae9f0ddf73afe +Qy = 6742f13244f1bf156d321eab2c3095ca548c3182c405187c3de2fbcb01d0e16e1fef246012c87d4d32378629a75b694572ec8583ae0cc813ac64f10bb05a9e52e4805590482f289 +k = 2b8076102a6448bd4c4e192e93cdb96ea9a6c7f6753818267ee9e67644df1a4a6c9ff64bbe9f64904648cc640fb7f0cce69f9e02878ee950b91ad559a9ec0ae15b676d933f1620f +R = 1ad97f4997037adfe306f3859d550f9fd89bce8b566e657d5742feb17466b6b8d507d5810a8cbba44d671b043ddb557df084bf5d1de74ef8bbd6a93690459fc16a17b80dd6c0f28 +S = 3262ef6e4175e7afe095d18157f67b3d12564d54954e9964e991c31bcfe1dee7e86b35491ce818400cc0f83b819f478f2f2c2d21c6c7a6be43938841559e09bce70b0d61fe51245 + +Msg = 9eca4bd88200baf61b901fca53dc1f1e7e3f83b94d58a6cc6a2adbc9b1a35fe3f8ec61787c76ed9a0d696167cd4fe46e1a0883fda564666131753c576a720125e0b712db1da0278067cb899bdb14eec08737e864544663abb1d62f34a2114be07e8e3cf56e2d17099299ce6b6d83b1a34e6153d7c6a32a72c7b1bf4583fcbcf7 +d = 2c182df7976ea93d996f3ba5d2221f3cb755cc7847bc3fe9e022fa4285046f5bfb426bafa3580beea206de36f87593ae561b4b74a03fcd61fbd0e8d6fd5668f2148819a88a650aa +Qx = 6004b26a184ed710a5fb67e9d042f7fb9c8f5584b1f70a91b0b3be41c3fd2cd1a537e962fdac8756df33f80fce2bb1bc7241d325bfc36dbaef7cf625918d589b6352fa744718910 +Qy = 36a29b04a494abfe809d956c3cd6f84ea51a7fa28cb39a52f16137a13f72f0726a84f6ae53ae24f5b468733f4cbfa0ce5bbbc1cc7b348fb996d33a45ff656a6a7557619f598a6b7 +k = 2ab349232bcb4f4816b26bd0049e130fffc90ca0b9308edd50fb9055358a87fe798d00140b0ae01ed8b1f6bb9bfb726b253c3d4949ce9eecaa6c7fa84d1ef812669fa929f26be0f +R = 0bbf2f9765b12742224ba7d064358c0305fb63e9b54a831e302a4546aa02cace798d82a188d2f536d78544c1571f481289d6ec69d117648026490e781f1eb9fca59bee05234ba7e +S = 27e07ee0a1a99c90753cdc8c0291da25a82c116e62ec58b93f91086ac1cc039b35ce7d8b53cdaa92a5ade65a7684b6e7ab79873dce33dcd467c39d0c764ee390b7fb25ca18912c3 + +Msg = 707450bd84141f3b61beb12ffa5ae89d812dd11badcdf6a88a2d50fc70e23f6d822ff4477047abc58cdfa28f97ad7f4911ae0773c04ebed1f51bb2308cf6e5712c4aaed461edd6987fdd1796aab70198276b601241f6a14225dce575830ff60f935fd9f567d1d210652e4710922fa793da78c8fdc30c273cb08365c9fc887f50 +d = 2d3a65bbe133cc98cf0eb56ee1362195968b4eab960a1d55d8b762f1361fc21348d6f275d4bea1de7158fb97c995e20b92a9c887a3e332d154667ad167acc632eb88a0ead6113a2 +Qx = 34355b54d00c3df7c2762ee2982cb777491aaf78e550c4d2ff5d5a893416eb3517671dbe522b8c553fd71edfe0306cd7628324f4f748091fc5d84ad8af33b896985674649a6f4e5 +Qy = 7e322a04eb600a3faf3e045959f1e9f798e1c965ced40fd4c0383c0d4e79a96bf693a91d7662780990d0c9dfca77a9bc0e13551d2ab35af8a153fa34ea903961fe66996ca053b64 +k = 0a59ac1240bcefc52456486ce23b780cc92c8b89314b8442a6898c373bd0adc3725e3ebac580546d1ec82ebfb2e04c608441d962d759ab5f5af1596c6623487e1347537a3c35bf4 +R = 0c47ef55d93ac36cee537160bbe39c3d4504184188533edfe589a5ab6e5a3e06ef413aa48710d304f0b2bc380fd69a34aa0b8e2e9466fd8a131cb056dffe4b809a59fd83e594483 +S = 2d8de1e8e2a52dd1be08435cda69e673b328573edeb1767849536e6f2d5fc8f18f7bfde936d8c32ecbfa97bf976133d65641320ca1c41e81c388fd6088884bbd89274b1976470fc + +Msg = d5ce9d59391cdc47ef942dd2a818d024ae3917deea8a5a4214e4db6a0c5e6b0936f3e632fdb68a3f0006e05c44b7232013e1da5f877cd197f44fd6f60c1fd2378995e9a47534948c5a09e33750f07a7165072ab38095373b07a50bc1391eb6b650ee13acd63d0352e7d9c31695ea1ec6323f9b5f57b426ace56aa7fdbf419be0 +d = 2a920e8dc928acdd56e3655b2340d4371c793e66f67405fb7a90f31e9c4ef466cc44331d1d2fe3ff7391d2576dc6640772166ef8c154a5ff1808f5dab2f03061070ec8b3f786c36 +Qx = 5edc0fb974314e21ad40d73524d5620b7279084e3ecb9e58b06340ae53d2383efd206b8b1eb3dd60c38f593efc05e2ba5fb8989472bac7db60fcada2d18d4108ab36e8c20cc710d +Qy = 0444cf65175f6bbaf647739cfd8407e7036fc6cc6208ccb9d776eb13e13b377136c683e108775d85b6bc5638926432a17344de965d45e042a0a8e0b63c7fc3a36fc15cf718f3baf +k = 35a0215892d0c52ece29559ebfa061011da8d597af6b3d1ee988ea4819be194c79a42681476140738b1b5dc191485bd20c96c282ab38ddbc3987343155366b6a5d1ce7053efcd83 +R = 1a69a9a51f6b0dc196b2a8db2e8bf61764d4c65b038f43b5ed6b5dc2673971c32928606f92b7caafb4dab3cd61ee724bba71a0d5c788cde4b96ef6b453f2a69126dafc20dbc7c82 +S = 13b5463636b8462cd9f479de8d114e29e7011489bcb9735ffe9ca0707a07df3c0aba05043eab387bfedd9fe982fbf04968f2be200e9e052cb4b02223b8579913d713acf94e7dc80 + + From 2d4185f4f1def7c32d1a556521e26ec656234220 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20=C3=96sterlund?= Date: Thu, 20 Jun 2024 05:23:08 +0000 Subject: [PATCH 66/70] 8332717: ZGC: Division by zero in heuristics Reviewed-by: aboldtch, shade --- src/hotspot/share/gc/z/zDirector.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/hotspot/share/gc/z/zDirector.cpp b/src/hotspot/share/gc/z/zDirector.cpp index 47e24063ead..162e05f2c07 100644 --- a/src/hotspot/share/gc/z/zDirector.cpp +++ b/src/hotspot/share/gc/z/zDirector.cpp @@ -524,6 +524,10 @@ static bool rule_major_allocation_rate(const ZDirectorStats& stats) { } static double calculate_young_to_old_worker_ratio(const ZDirectorStats& stats) { + if (!stats._old_stats._cycle._is_time_trustable) { + return 1.0; + } + const double young_gc_time = gc_time(stats._young_stats); const double old_gc_time = gc_time(stats._old_stats); const size_t reclaimed_per_young_gc = stats._young_stats._stat_heap._reclaimed_avg; From ff30240926224b2f98e173bcd606c157af788919 Mon Sep 17 00:00:00 2001 From: Matthias Baesken Date: Thu, 20 Jun 2024 06:15:19 +0000 Subject: [PATCH 67/70] 8334239: Introduce macro for ubsan method/function exclusions Reviewed-by: stefank, stuefe, kbarrett --- src/hotspot/share/cds/archiveHeapLoader.cpp | 5 +-- src/hotspot/share/prims/unsafe.cpp | 5 +-- src/hotspot/share/sanitizers/ub.hpp | 43 +++++++++++++++++++++ src/hotspot/share/utilities/vmError.cpp | 5 +-- 4 files changed, 49 insertions(+), 9 deletions(-) create mode 100644 src/hotspot/share/sanitizers/ub.hpp diff --git a/src/hotspot/share/cds/archiveHeapLoader.cpp b/src/hotspot/share/cds/archiveHeapLoader.cpp index 57a96a8c4e0..feaf245d22c 100644 --- a/src/hotspot/share/cds/archiveHeapLoader.cpp +++ b/src/hotspot/share/cds/archiveHeapLoader.cpp @@ -34,6 +34,7 @@ #include "memory/iterator.inline.hpp" #include "memory/resourceArea.hpp" #include "memory/universe.hpp" +#include "sanitizers/ub.hpp" #include "utilities/bitMap.inline.hpp" #include "utilities/copy.hpp" @@ -61,9 +62,7 @@ ptrdiff_t ArchiveHeapLoader::_mapped_heap_delta = 0; // Every mapped region is offset by _mapped_heap_delta from its requested address. // See FileMapInfo::heap_region_requested_address(). -#if defined(__clang__) || defined(__GNUC__) -__attribute__((no_sanitize("undefined"))) -#endif +ATTRIBUTE_NO_UBSAN void ArchiveHeapLoader::init_mapped_heap_info(address mapped_heap_bottom, ptrdiff_t delta, int dumptime_oop_shift) { assert(!_mapped_heap_relocation_initialized, "only once"); if (!UseCompressedOops) { diff --git a/src/hotspot/share/prims/unsafe.cpp b/src/hotspot/share/prims/unsafe.cpp index d290627c197..942d9100c29 100644 --- a/src/hotspot/share/prims/unsafe.cpp +++ b/src/hotspot/share/prims/unsafe.cpp @@ -55,6 +55,7 @@ #include "runtime/threadSMR.hpp" #include "runtime/vmOperations.hpp" #include "runtime/vm_version.hpp" +#include "sanitizers/ub.hpp" #include "services/threadService.hpp" #include "utilities/align.hpp" #include "utilities/copy.hpp" @@ -244,9 +245,7 @@ class MemoryAccess : StackObj { // we use this method at some places for writing to 0 e.g. to cause a crash; // ubsan does not know that this is the desired behavior -#if defined(__clang__) || defined(__GNUC__) -__attribute__((no_sanitize("undefined"))) -#endif + ATTRIBUTE_NO_UBSAN void put(T x) { GuardUnsafeAccess guard(_thread); *addr() = normalize_for_write(x); diff --git a/src/hotspot/share/sanitizers/ub.hpp b/src/hotspot/share/sanitizers/ub.hpp new file mode 100644 index 00000000000..23e8ef4576c --- /dev/null +++ b/src/hotspot/share/sanitizers/ub.hpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2024 SAP SE. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#ifndef SHARE_SANITIZERS_UB_HPP +#define SHARE_SANITIZERS_UB_HPP + +// ATTRIBUTE_NO_UBSAN +// +// Function attribute which informs the compiler to disable UBSan checks in the +// following function or method. +// Useful if the function or method is known to do something special or even 'dangerous', for +// example causing desired signals/crashes. +#if defined(__clang__) || defined(__GNUC__) +#define ATTRIBUTE_NO_UBSAN __attribute__((no_sanitize("undefined"))) +#endif + +#ifndef ATTRIBUTE_NO_UBSAN +#define ATTRIBUTE_NO_UBSAN +#endif + +#endif // SHARE_SANITIZERS_UB_HPP diff --git a/src/hotspot/share/utilities/vmError.cpp b/src/hotspot/share/utilities/vmError.cpp index 656fe9403fe..0b3ccf9c747 100644 --- a/src/hotspot/share/utilities/vmError.cpp +++ b/src/hotspot/share/utilities/vmError.cpp @@ -60,6 +60,7 @@ #include "runtime/vmOperations.hpp" #include "runtime/vmThread.hpp" #include "runtime/vm_version.hpp" +#include "sanitizers/ub.hpp" #include "utilities/debug.hpp" #include "utilities/decoder.hpp" #include "utilities/defaultStream.hpp" @@ -2086,9 +2087,7 @@ typedef void (*voidfun_t)(); // compared to one generated with raise (asynchronous vs synchronous). See JDK-8065895. volatile int sigfpe_int = 0; -#if defined(__clang__) || defined(__GNUC__) -__attribute__((no_sanitize("undefined"))) -#endif +ATTRIBUTE_NO_UBSAN static void ALWAYSINLINE crash_with_sigfpe() { // generate a native synchronous SIGFPE where possible; From d7dad50af5df356089101ca440fca5232fadb81e Mon Sep 17 00:00:00 2001 From: Roland Westrelin Date: Thu, 20 Jun 2024 07:14:01 +0000 Subject: [PATCH 68/70] 8334544: C2: wrong control assigned in PhaseIdealLoop::clone_assertion_predicate_for_unswitched_loops() Reviewed-by: chagedorn, thartmann --- src/hotspot/share/opto/loopPredicate.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hotspot/share/opto/loopPredicate.cpp b/src/hotspot/share/opto/loopPredicate.cpp index e23da54f765..bccc01a86dd 100644 --- a/src/hotspot/share/opto/loopPredicate.cpp +++ b/src/hotspot/share/opto/loopPredicate.cpp @@ -373,7 +373,7 @@ IfProjNode* PhaseIdealLoop::clone_assertion_predicate_for_unswitched_loops(IfNod ParsePredicateSuccessProj* parse_predicate_proj) { TemplateAssertionPredicateExpression template_assertion_predicate_expression( template_assertion_predicate->in(1)->as_Opaque4()); - Opaque4Node* cloned_opaque4_node = template_assertion_predicate_expression.clone(parse_predicate_proj, this); + Opaque4Node* cloned_opaque4_node = template_assertion_predicate_expression.clone(parse_predicate_proj->in(0)->in(0), this); IfProjNode* if_proj = create_new_if_for_predicate(parse_predicate_proj, nullptr, reason, template_assertion_predicate->Opcode(), false); _igvn.replace_input_of(if_proj->in(0), 1, cloned_opaque4_node); _igvn.replace_input_of(parse_predicate_proj->in(0), 0, if_proj); From cabd1046d08865f122663d18708d40e5c885c1c3 Mon Sep 17 00:00:00 2001 From: Sonia Zaldana Calles Date: Thu, 20 Jun 2024 08:28:06 +0000 Subject: [PATCH 69/70] 8334164: The fix for JDK-8322811 should use _filename.is_set() rather than strcmp() Reviewed-by: dholmes, cjplummer --- src/hotspot/share/services/diagnosticCommand.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/hotspot/share/services/diagnosticCommand.cpp b/src/hotspot/share/services/diagnosticCommand.cpp index 6a7e4d1bd20..faabe74a2ff 100644 --- a/src/hotspot/share/services/diagnosticCommand.cpp +++ b/src/hotspot/share/services/diagnosticCommand.cpp @@ -1203,11 +1203,11 @@ SystemDumpMapDCmd::SystemDumpMapDCmd(outputStream* output, bool heap) : void SystemDumpMapDCmd::execute(DCmdSource source, TRAPS) { stringStream defaultname; const char* name = nullptr; - if (::strcmp(default_filename, _filename.value()) == 0) { + if (_filename.is_set()) { + name = _filename.value(); + } else { defaultname.print("vm_memory_map_%d.txt", os::current_process_id()); name = defaultname.base(); - } else { - name = _filename.value(); } fileStream fs(name); if (fs.is_open()) { From c6f3bf4bd61405c2ed374b15ef82cc987f52cd52 Mon Sep 17 00:00:00 2001 From: Thomas Stuefe Date: Thu, 20 Jun 2024 08:30:52 +0000 Subject: [PATCH 70/70] 8334026: Provide a diagnostic PrintMemoryMapAtExit switch on Linux Reviewed-by: dholmes, mbaesken --- src/hotspot/os/linux/globals_linux.hpp | 4 +- src/hotspot/share/nmt/memMapPrinter.cpp | 11 ++-- src/hotspot/share/runtime/java.cpp | 4 ++ .../runtime/NMT/PrintMemoryMapAtExitTest.java | 51 +++++++++++++++++++ 4 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 test/hotspot/jtreg/runtime/NMT/PrintMemoryMapAtExitTest.java diff --git a/src/hotspot/os/linux/globals_linux.hpp b/src/hotspot/os/linux/globals_linux.hpp index 8539eab9e97..1cb0b553c52 100644 --- a/src/hotspot/os/linux/globals_linux.hpp +++ b/src/hotspot/os/linux/globals_linux.hpp @@ -94,7 +94,9 @@ product(bool, UseMadvPopulateWrite, true, DIAGNOSTIC, \ "Use MADV_POPULATE_WRITE in os::pd_pretouch_memory.") \ \ - + product(bool, PrintMemoryMapAtExit, false, DIAGNOSTIC, \ + "Print an annotated memory map at exit") \ + \ // end of RUNTIME_OS_FLAGS // diff --git a/src/hotspot/share/nmt/memMapPrinter.cpp b/src/hotspot/share/nmt/memMapPrinter.cpp index ec5003c562e..5480904d57c 100644 --- a/src/hotspot/share/nmt/memMapPrinter.cpp +++ b/src/hotspot/share/nmt/memMapPrinter.cpp @@ -30,16 +30,17 @@ #include "logging/logAsyncWriter.hpp" #include "gc/shared/collectedHeap.hpp" #include "memory/universe.hpp" +#include "memory/resourceArea.hpp" #include "nmt/memflags.hpp" +#include "nmt/memFlagBitmap.hpp" +#include "nmt/memMapPrinter.hpp" +#include "nmt/memTracker.hpp" +#include "nmt/virtualMemoryTracker.hpp" #include "runtime/nonJavaThread.hpp" #include "runtime/osThread.hpp" #include "runtime/thread.hpp" #include "runtime/threadSMR.hpp" #include "runtime/vmThread.hpp" -#include "nmt/memFlagBitmap.hpp" -#include "nmt/memMapPrinter.hpp" -#include "nmt/memTracker.hpp" -#include "nmt/virtualMemoryTracker.hpp" #include "utilities/globalDefinitions.hpp" #include "utilities/growableArray.hpp" #include "utilities/ostream.hpp" @@ -203,6 +204,8 @@ static void print_thread_details(uintx thread_id, const char* name, outputStream // Given a region [from, to), if it intersects a known thread stack, print detail infos about that thread. static void print_thread_details_for_supposed_stack_address(const void* from, const void* to, outputStream* st) { + ResourceMark rm; + #define HANDLE_THREAD(T) \ if (T != nullptr && vma_touches_thread_stack(from, to, T)) { \ print_thread_details((uintx)(T->osthread()->thread_id()), T->name(), st); \ diff --git a/src/hotspot/share/runtime/java.cpp b/src/hotspot/share/runtime/java.cpp index d3e76364a03..674716a8598 100644 --- a/src/hotspot/share/runtime/java.cpp +++ b/src/hotspot/share/runtime/java.cpp @@ -48,6 +48,7 @@ #include "memory/oopFactory.hpp" #include "memory/resourceArea.hpp" #include "memory/universe.hpp" +#include "nmt/memMapPrinter.hpp" #include "nmt/memTracker.hpp" #include "oops/constantPool.hpp" #include "oops/generateOopMap.hpp" @@ -485,6 +486,9 @@ void before_exit(JavaThread* thread, bool halt) { if (DumpPerfMapAtExit) { CodeCache::write_perf_map(); } + if (PrintMemoryMapAtExit) { + MemMapPrinter::print_all_mappings(tty, false); + } #endif if (JvmtiExport::should_post_thread_life()) { diff --git a/test/hotspot/jtreg/runtime/NMT/PrintMemoryMapAtExitTest.java b/test/hotspot/jtreg/runtime/NMT/PrintMemoryMapAtExitTest.java new file mode 100644 index 00000000000..2c51c079c73 --- /dev/null +++ b/test/hotspot/jtreg/runtime/NMT/PrintMemoryMapAtExitTest.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2024, Red Hat, Inc. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @summary Verify PrintMemoryMapAtExit on normal JVM exit for summary tracking level + * @requires os.family == "linux" + * @modules java.base/jdk.internal.misc + * @library /test/lib + * @run driver PrintMemoryMapAtExitTest + */ + +import jdk.test.lib.process.OutputAnalyzer; +import jdk.test.lib.process.ProcessTools; + +public class PrintMemoryMapAtExitTest { + + public static void main(String args[]) throws Exception { + + ProcessBuilder pb = ProcessTools.createTestJavaProcessBuilder( + "-XX:+UnlockDiagnosticVMOptions", "-XX:+PrintMemoryMapAtExit", + "-XX:NativeMemoryTracking=summary", "-version"); + + OutputAnalyzer output = new OutputAnalyzer(pb.start()); + output.shouldHaveExitValue(0); + output.shouldContain("Memory mappings"); + output.shouldContain("JAVAHEAP"); + output.shouldHaveExitValue(0); + } +}