text:
@test first(evaluate5(A♣, A♡, K♢, K♠, Q♠)) == 2468 # Aces and Kings
@test first(evaluate5(A♣, A♡, K♢, K♠, J♠)) == 2469 # Aces and Kings
@test first(evaluate5(A♣, A♡, K♢, K♠, T♠)) == 2470 # Aces and Kings
@test first(evaluate5(A♣, A♡, K♢, K♠, 9♠)) == 2471 # Aces and Kings
@test first(evaluate5(A♣, A♡, K♢, K♠, 8♠)) == 2472 # Aces and Kings
@test first(evaluate5(A♣, A♡, K♢, K♠, 7♠)) == 2473 # Aces and Kings
@test first(evaluate5(A♣, A♡, K♢, K♠, 6♠)) == 2474 # Aces and Kings
@test first(evaluate5(A♣, A♡, K♢, K♠, 5♠)) == 2475 # Aces and Kings
@test first(evaluate5(A♣, A♡, K♢, K♠, 4♠)) == 2476 # Aces and Kings
@test first(evaluate5(A♣, A♡, K♢, K♠, 3♠)) == 2477 # Aces and Kings
@test first(evaluate5(A♣, A♡, K♢, K♠, 2♠)) == 2478 # Aces and Kings
@test first(evaluate5(A♣, A♡, Q♢, Q♠, K♠)) == 2479 # Aces and Queens
@test first(evaluate5(A♣, A♡, Q♢, Q♠, J♠)) == 2480 # Aces and Queens
@test first(evaluate5(A♣, A♡, Q♢, Q♠, T♠)) == 2481 # Aces and Queens
@test first(evaluate5(A♣, A♡, Q♢, Q♠, 9♠)) == 2482 # Aces and Queens
@test first(evaluate5(A♣, A♡, Q♢, Q♠, 8♠)) == 2483 # Aces and Queens
@test first(evaluate5(A♣, A♡, Q♢, Q♠, 7♠)) == 2484 # Aces and Queens
@test first(evaluate5(A♣, A♡, Q♢, Q♠, 6♠)) == 2485 # Aces and Queens
@test first(evaluate5(A♣, A♡, Q♢, Q♠, 5♠)) == 2486 # Aces and Queens
@test first(evaluate5(A♣, A♡, Q♢, Q♠, 4♠)) == 2487 # Aces and Queens
@test first(evaluate5(A♣, A♡, Q♢, Q♠, 3♠)) == 2488 # Aces and Queens
@test first(evaluate5(A♣, A♡, Q♢, Q♠, 2♠)) == 2489 # Aces and Queens
@test first(evaluate5(A♣, A♡, J♢, J♠, K♠)) == 2490 # Aces and Jacks
@test first(evaluate5(A♣, A♡, J♢, J♠, Q♠)) == 2491 # Aces and Jacks
@test first(evaluate5(A♣, A♡, J♢, J♠, T♠)) == 2492 # Aces and Jacks
@test first(evaluate5(A♣, A♡, J♢, J♠, 9♠)) == 2493 # Aces and Jacks
@test first(evaluate5(A♣, A♡, J♢, J♠, 8♠)) == 2494 # Aces and Jacks
@test first(evaluate5(A♣, A♡, J♢, J♠, 7♠)) == 2495 # Aces and Jacks
@test first(evaluate5(A♣, A♡, J♢, J♠, 6♠)) == 2496 # Aces and Jacks
@test first(evaluate5(A♣, A♡, J♢, J♠, 5♠)) == 2497 # Aces and Jacks
@test first(evaluate5(A♣, A♡, J♢, J♠, 4♠)) == 2498 # Aces and Jacks
@test first(evaluate5(A♣, A♡, J♢, J♠, 3♠)) == 2499 # Aces and Jacks
@test first(evaluate5(A♣, A♡, J♢, J♠, 2♠)) == 2500 # Aces and Jacks
@test first(evaluate5(A♣, A♡, T♢, T♠, K♠)) == 2501 # Aces and Tens
@test first(evaluate5(A♣, A♡, T♢, T♠, Q♠)) == 2502 # Aces and Tens
@test first(evaluate5(A♣, A♡, T♢, T♠, J♠)) == 2503 # Aces and Tens
@test first(evaluate5(A♣, A♡, T♢, T♠, 9♠)) == 2504 # Aces and Tens
@test first(evaluate5(A♣, A♡, T♢, T♠, 8♠)) == 2505 # Aces and Tens
@test first(evaluate5(A♣, A♡, T♢, T♠, 7♠)) == 2506 # Aces and Tens
@test first(evaluate5(A♣, A♡, T♢, T♠, 6♠)) == 2507 # Aces and Tens
@test first(evaluate5(A♣, A♡, T♢, T♠, 5♠)) == 2508 # Aces and Tens
@test first(evaluate5(A♣, A♡, T♢, T♠, 4♠)) == 2509 # Aces and Tens
@test first(evaluate5(A♣, A♡, T♢, T♠, 3♠)) == 2510 # Aces and Tens
@test first(evaluate5(A♣, A♡, T♢, T♠, 2♠)) == 2511 # Aces and Tens
@test first(evaluate5(A♣, A♡, 9♢, 9♠, K♠)) == 2512 # Aces and Nines
@test first(evaluate5(A♣, A♡, 9♢, 9♠, Q♠)) == 2513 # Aces and Nines
@test first(evaluate5(A♣, A♡, 9♢, 9♠, J♠)) == 2514 # Aces and Nines
@test first(evaluate5(A♣, A♡, 9♢, 9♠, T♠)) == 2515 # Aces and Nines
@test first(evaluate5(A♣, A♡, 9♢, 9♠, 8♠)) == 2516 # Aces and Nines
@test first(evaluate5(A♣, A♡, 9♢, 9♠, 7♠)) == 2517 # Aces and Nines
@test first(evaluate5(A♣, A♡, 9♢, 9♠, 6♠)) == 2518 # Aces and Nines
@test first(evaluate5(A♣, A♡, 9♢, 9♠, 5♠)) == 2519 # Aces and Nines
@test first(evaluate5(A♣, A♡, 9♢, 9♠, 4♠)) == 2520 # Aces and Nines
@test first(evaluate5(A♣, A♡, 9♢, 9♠, 3♠)) == 2521 # Aces and Nines
@test first(evaluate5(A♣, A♡, 9♢, 9♠, 2♠)) == 2522 # Aces and Nines
@test first(evaluate5(A♣, A♡, 8♢, 8♠, K♠)) == 2523 # Aces and Eights
@test first(evaluate5(A♣, A♡, 8♢, 8♠, Q♠)) == 2524 # Aces and Eights
@test first(evaluate5(A♣, A♡, 8♢, 8♠, J♠)) == 2525 # Aces and Eights
@test first(evaluate5(A♣, A♡, 8♢, 8♠, T♠)) == 2526 # Aces and Eights
@test first(evaluate5(A♣, A♡, 8♢, 8♠, 9♠)) == 2527 # Aces and Eights
@test first(evaluate5(A♣, A♡, 8♢, 8♠, 7♠)) == 2528 # Aces and Eights
@test first(evaluate5(A♣, A♡, 8♢, 8♠, 6♠)) == 2529 # Aces and Eights
@test first(evaluate5(A♣, A♡, 8♢, 8♠, 5♠)) == 2530 # Aces and Eights
@test first(evaluate5(A♣, A♡, 8♢, 8♠, 4♠)) == 2531 # Aces and Eights
@test first(evaluate5(A♣, A♡, 8♢, 8♠, 3♠)) == 2532 # Aces and Eights
@test first(evaluate5(A♣, A♡, 8♢, 8♠, 2♠)) == 2533 # Aces and Eights
@test first(evaluate5(A♣, A♡, 7♢, 7♠, K♠)) == 2534 # Aces and Sevens
@test first(evaluate5(A♣, A♡, 7♢, 7♠, Q♠)) == 2535 # Aces and Sevens
@test first(evaluate5(A♣, A♡, 7♢, 7♠, J♠)) == 2536 # Aces and Sevens
@test first(evaluate5(A♣, A♡, 7♢, 7♠, T♠)) == 2537 # Aces and Sevens
@test first(evaluate5(A♣, A♡, 7♢, 7♠, 9♠)) == 2538 # Aces and Sevens
@test first(evaluate5(A♣, A♡, 7♢, 7♠, 8♠)) == 2539 # Aces and Sevens
@test first(evaluate5(A♣, A♡, 7♢, 7♠, 6♠)) == 2540 # Aces and Sevens
@test first(evaluate5(A♣, A♡, 7♢, 7♠, 5♠)) == 2541 # Aces and Sevens
@test first(evaluate5(A♣, A♡, 7♢, 7♠, 4♠)) == 2542 # Aces and Sevens
@test first(evaluate5(A♣, A♡, 7♢, 7♠, 3♠)) == 2543 # Aces and Sevens
@test first(evaluate5(A♣, A♡, 7♢, 7♠, 2♠)) == 2544 # Aces and Sevens
@test first(evaluate5(A♣, A♡, 6♢, 6♠, K♠)) == 2545 # Aces and Sixes
@test first(evaluate5(A♣, A♡, 6♢, 6♠, Q♠)) == 2546 # Aces and Sixes
@test first(evaluate5(A♣, A♡, 6♢, 6♠, J♠)) == 2547 # Aces and Sixes
@test first(evaluate5(A♣, A♡, 6♢, 6♠, T♠)) == 2548 # Aces and Sixes
@test first(evaluate5(A♣, A♡, 6♢, 6♠, 9♠)) == 2549 # Aces and Sixes
@test first(evaluate5(A♣, A♡, 6♢, 6♠, 8♠)) == 2550 # Aces and Sixes
@test first(evaluate5(A♣, A♡, 6♢, 6♠, 7♠)) == 2551 # Aces and Sixes
@test first(evaluate5(A♣, A♡, 6♢, 6♠, 5♠)) == 2552 # Aces and Sixes
@test first(evaluate5(A♣, A♡, 6♢, 6♠, 4♠)) == 2553 # Aces and Sixes
@test first(evaluate5(A♣, A♡, 6♢, 6♠, 3♠)) == 2554 # Aces and Sixes
@test first(evaluate5(A♣, A♡, 6♢, 6♠, 2♠)) == 2555 # Aces and Sixes
@test first(evaluate5(A♣, A♡, 5♢, 5♠, K♠)) == 2556 # Aces and Fives
@test first(evaluate5(A♣, A♡, 5♢, 5♠, Q♠)) == 2557 # Aces and Fives
@test first(evaluate5(A♣, A♡, 5♢, 5♠, J♠)) == 2558 # Aces and Fives
@test first(evaluate5(A♣, A♡, 5♢, 5♠, T♠)) == 2559 # Aces and Fives
@test first(evaluate5(A♣, A♡, 5♢, 5♠, 9♠)) == 2560 # Aces and Fives
@test first(evaluate5(A♣, A♡, 5♢, 5♠, 8♠)) == 2561 # Aces and Fives
@test first(evaluate5(A♣, A♡, 5♢, 5♠, 7♠)) == 2562 # Aces and Fives
@test first(evaluate5(A♣, A♡, 5♢, 5♠, 6♠)) == 2563 # Aces and Fives
@test first(evaluate5(A♣, A♡, 5♢, 5♠, 4♠)) == 2564 # Aces and Fives
@test first(evaluate5(A♣, A♡, 5♢, 5♠, 3♠)) == 2565 # Aces and Fives
@test first(evaluate5(A♣, A♡, 5♢, 5♠, 2♠)) == 2566 # Aces and Fives
@test first(evaluate5(A♣, A♡, 4♢, 4♠, K♠)) == 2567 # Aces and Fours
@test first(evaluate5(A♣, A♡, 4♢, 4♠, Q♠)) == 2568 # Aces and Fours
@test first(evaluate5(A♣, A♡, 4♢, 4♠, J♠)) == 2569 # Aces and Fours
@test first(evaluate5(A♣, A♡, 4♢, 4♠, T♠)) == 2570 # Aces and Fours
@test first(evaluate5(A♣, A♡, 4♢, 4♠, 9♠)) == 2571 # Aces and Fours
@test first(evaluate5(A♣, A♡, 4♢, 4♠, 8♠)) == 2572 # Aces and Fours
@test first(evaluate5(A♣, A♡, 4♢, 4♠, 7♠)) == 2573 # Aces and Fours
@test first(evaluate5(A♣, A♡, 4♢, 4♠, 6♠)) == 2574 # Aces and Fours
@test first(evaluate5(A♣, A♡, 4♢, 4♠, 5♠)) == 2575 # Aces and Fours
@test first(evaluate5(A♣, A♡, 4♢, 4♠, 3♠)) == 2576 # Aces and Fours
@test first(evaluate5(A♣, A♡, 4♢, 4♠, 2♠)) == 2577 # Aces and Fours
@test first(evaluate5(A♣, A♡, 3♢, 3♠, K♠)) == 2578 # Aces and Treys
@test first(evaluate5(A♣, A♡, 3♢, 3♠, Q♠)) == 2579 # Aces and Treys
@test first(evaluate5(A♣, A♡, 3♢, 3♠, J♠)) == 2580 # Aces and Treys
@test first(evaluate5(A♣, A♡, 3♢, 3♠, T♠)) == 2581 # Aces and Treys
@test first(evaluate5(A♣, A♡, 3♢, 3♠, 9♠)) == 2582 # Aces and Treys
@test first(evaluate5(A♣, A♡, 3♢, 3♠, 8♠)) == 2583 # Aces and Treys
@test first(evaluate5(A♣, A♡, 3♢, 3♠, 7♠)) == 2584 # Aces and Treys
@test first(evaluate5(A♣, A♡, 3♢, 3♠, 6♠)) == 2585 # Aces and Treys
@test first(evaluate5(A♣, A♡, 3♢, 3♠, 5♠)) == 2586 # Aces and Treys
@test first(evaluate5(A♣, A♡, 3♢, 3♠, 4♠)) == 2587 # Aces and Treys
@test first(evaluate5(A♣, A♡, 3♢, 3♠, 2♠)) == 2588 # Aces and Treys
@test first(evaluate5(A♣, A♡, 2♢, 2♠, K♠)) == 2589 # Aces and Deuces
@test first(evaluate5(A♣, A♡, 2♢, 2♠, Q♠)) == 2590 # Aces and Deuces
@test first(evaluate5(A♣, A♡, 2♢, 2♠, J♠)) == 2591 # Aces and Deuces
@test first(evaluate5(A♣, A♡, 2♢, 2♠, T♠)) == 2592 # Aces and Deuces
@test first(evaluate5(A♣, A♡, 2♢, 2♠, 9♠)) == 2593 # Aces and Deuces
@test first(evaluate5(A♣, A♡, 2♢, 2♠, 8♠)) == 2594 # Aces and Deuces
@test first(evaluate5(A♣, A♡, 2♢, 2♠, 7♠)) == 2595 # Aces and Deuces
@test first(evaluate5(A♣, A♡, 2♢, 2♠, 6♠)) == 2596 # Aces and Deuces
@test first(evaluate5(A♣, A♡, 2♢, 2♠, 5♠)) == 2597 # Aces and Deuces
@test first(evaluate5(A♣, A♡, 2♢, 2♠, 4♠)) == 2598 # Aces and Deuces
@test first(evaluate5(A♣, A♡, 2♢, 2♠, 3♠)) == 2599 # Aces and Deuces
@test first(evaluate5(K♣, K♡, Q♢, Q♠, A♠)) == 2600 # Kings and Queens
@test first(evaluate5(K♣, K♡, Q♢, Q♠, J♠)) == 2601 # Kings and Queens
@test first(evaluate5(K♣, K♡, Q♢, Q♠, T♠)) == 2602 # Kings and Queens
@test first(evaluate5(K♣, K♡, Q♢, Q♠, 9♠)) == 2603 # Kings and Queens
@test first(evaluate5(K♣, K♡, Q♢, Q♠, 8♠)) == 2604 # Kings and Queens
@test first(evaluate5(K♣, K♡, Q♢, Q♠, 7♠)) == 2605 # Kings and Queens
@test first(evaluate5(K♣, K♡, Q♢, Q♠, 6♠)) == 2606 # Kings and Queens
@test first(evaluate5(K♣, K♡, Q♢, Q♠, 5♠)) == 2607 # Kings and Queens
@test first(evaluate5(K♣, K♡, Q♢, Q♠, 4♠)) == 2608 # Kings and Queens
@test first(evaluate5(K♣, K♡, Q♢, Q♠, 3♠)) == 2609 # Kings and Queens
@test first(evaluate5(K♣, K♡, Q♢, Q♠, 2♠)) == 2610 # Kings and Queens
@test first(evaluate5(K♣, K♡, J♢, J♠, A♠)) == 2611 # Kings and Jacks
@test first(evaluate5(K♣, K♡, J♢, J♠, Q♠)) == 2612 # Kings and Jacks
@test first(evaluate5(K♣, K♡, J♢, J♠, T♠)) == 2613 # Kings and Jacks
@test first(evaluate5(K♣, K♡, J♢, J♠, 9♠)) == 2614 # Kings and Jacks
@test first(evaluate5(K♣, K♡, J♢, J♠, 8♠)) == 2615 # Kings and Jacks
@test first(evaluate5(K♣, K♡, J♢, J♠, 7♠)) == 2616 # Kings and Jacks
@test first(evaluate5(K♣, K♡, J♢, J♠, 6♠)) == 2617 # Kings and Jacks
@test first(evaluate5(K♣, K♡, J♢, J♠, 5♠)) == 2618 # Kings and Jacks
@test first(evaluate5(K♣, K♡, J♢, J♠, 4♠)) == 2619 # Kings and Jacks
@test first(evaluate5(K♣, K♡, J♢, J♠, 3♠)) == 2620 # Kings and Jacks
@test first(evaluate5(K♣, K♡, J♢, J♠, 2♠)) == 2621 # Kings and Jacks
@test first(evaluate5(K♣, K♡, T♢, T♠, A♠)) == 2622 # Kings and Tens
@test first(evaluate5(K♣, K♡, T♢, T♠, Q♠)) == 2623 # Kings and Tens
@test first(evaluate5(K♣, K♡, T♢, T♠, J♠)) == 2624 # Kings and Tens
@test first(evaluate5(K♣, K♡, T♢, T♠, 9♠)) == 2625 # Kings and Tens
@test first(evaluate5(K♣, K♡, T♢, T♠, 8♠)) == 2626 # Kings and Tens
@test first(evaluate5(K♣, K♡, T♢, T♠, 7♠)) == 2627 # Kings and Tens
@test first(evaluate5(K♣, K♡, T♢, T♠, 6♠)) == 2628 # Kings and Tens
@test first(evaluate5(K♣, K♡, T♢, T♠, 5♠)) == 2629 # Kings and Tens
@test first(evaluate5(K♣, K♡, T♢, T♠, 4♠)) == 2630 # Kings and Tens
@test first(evaluate5(K♣, K♡, T♢, T♠, 3♠)) == 2631 # Kings and Tens
@test first(evaluate5(K♣, K♡, T♢, T♠, 2♠)) == 2632 # Kings and Tens
@test first(evaluate5(K♣, K♡, 9♢, 9♠, A♠)) == 2633 # Kings and Nines
@test first(evaluate5(K♣, K♡, 9♢, 9♠, Q♠)) == 2634 # Kings and Nines
@test first(evaluate5(K♣, K♡, 9♢, 9♠, J♠)) == 2635 # Kings and Nines
@test first(evaluate5(K♣, K♡, 9♢, 9♠, T♠)) == 2636 # Kings and Nines
@test first(evaluate5(K♣, K♡, 9♢, 9♠, 8♠)) == 2637 # Kings and Nines
@test first(evaluate5(K♣, K♡, 9♢, 9♠, 7♠)) == 2638 # Kings and Nines
@test first(evaluate5(K♣, K♡, 9♢, 9♠, 6♠)) == 2639 # Kings and Nines
@test first(evaluate5(K♣, K♡, 9♢, 9♠, 5♠)) == 2640 # Kings and Nines
@test first(evaluate5(K♣, K♡, 9♢, 9♠, 4♠)) == 2641 # Kings and Nines
@test first(evaluate5(K♣, K♡, 9♢, 9♠, 3♠)) == 2642 # Kings and Nines
@test first(evaluate5(K♣, K♡, 9♢, 9♠, 2♠)) == 2643 # Kings and Nines
@test first(evaluate5(K♣, K♡, 8♢, 8♠, A♠)) == 2644 # Kings and Eights
@test first(evaluate5(K♣, K♡, 8♢, 8♠, Q♠)) == 2645 # Kings and Eights
@test first(evaluate5(K♣, K♡, 8♢, 8♠, J♠)) == 2646 # Kings and Eights
@test first(evaluate5(K♣, K♡, 8♢, 8♠, T♠)) == 2647 # Kings and Eights
@test first(evaluate5(K♣, K♡, 8♢, 8♠, 9♠)) == 2648 # Kings and Eights
@test first(evaluate5(K♣, K♡, 8♢, 8♠, 7♠)) == 2649 # Kings and Eights
@test first(evaluate5(K♣, K♡, 8♢, 8♠, 6♠)) == 2650 # Kings and Eights
@test first(evaluate5(K♣, K♡, 8♢, 8♠, 5♠)) == 2651 # Kings and Eights
@test first(evaluate5(K♣, K♡, 8♢, 8♠, 4♠)) == 2652 # Kings and Eights
@test first(evaluate5(K♣, K♡, 8♢, 8♠, 3♠)) == 2653 # Kings and Eights
@test first(evaluate5(K♣, K♡, 8♢, 8♠, 2♠)) == 2654 # Kings and Eights
@test first(evaluate5(K♣, K♡, 7♢, 7♠, A♠)) == 2655 # Kings and Sevens
@test first(evaluate5(K♣, K♡, 7♢, 7♠, Q♠)) == 2656 # Kings and Sevens
@test first(evaluate5(K♣, K♡, 7♢, 7♠, J♠)) == 2657 # Kings and Sevens
@test first(evaluate5(K♣, K♡, 7♢, 7♠, T♠)) == 2658 # Kings and Sevens
@test first(evaluate5(K♣, K♡, 7♢, 7♠, 9♠)) == 2659 # Kings and Sevens
@test first(evaluate5(K♣, K♡, 7♢, 7♠, 8♠)) == 2660 # Kings and Sevens
@test first(evaluate5(K♣, K♡, 7♢, 7♠, 6♠)) == 2661 # Kings and Sevens
@test first(evaluate5(K♣, K♡, 7♢, 7♠, 5♠)) == 2662 # Kings and Sevens
@test first(evaluate5(K♣, K♡, 7♢, 7♠, 4♠)) == 2663 # Kings and Sevens
@test first(evaluate5(K♣, K♡, 7♢, 7♠, 3♠)) == 2664 # Kings and Sevens
@test first(evaluate5(K♣, K♡, 7♢, 7♠, 2♠)) == 2665 # Kings and Sevens
@test first(evaluate5(K♣, K♡, 6♢, 6♠, A♠)) == 2666 # Kings and Sixes
@test first(evaluate5(K♣, K♡, 6♢, 6♠, Q♠)) == 2667 # Kings and Sixes
@test first(evaluate5(K♣, K♡, 6♢, 6♠, J♠)) == 2668 # Kings and Sixes
@test first(evaluate5(K♣, K♡, 6♢, 6♠, T♠)) == 2669 # Kings and Sixes
@test first(evaluate5(K♣, K♡, 6♢, 6♠, 9♠)) == 2670 # Kings and Sixes
@test first(evaluate5(K♣, K♡, 6♢, 6♠, 8♠)) == 2671 # Kings and Sixes
@test first(evaluate5(K♣, K♡, 6♢, 6♠, 7♠)) == 2672 # Kings and Sixes
@test first(evaluate5(K♣, K♡, 6♢, 6♠, 5♠)) == 2673 # Kings and Sixes
@test first(evaluate5(K♣, K♡, 6♢, 6♠, 4♠)) == 2674 # Kings and Sixes
@test first(evaluate5(K♣, K♡, 6♢, 6♠, 3♠)) == 2675 # Kings and Sixes
@test first(evaluate5(K♣, K♡, 6♢, 6♠, 2♠)) == 2676 # Kings and Sixes
@test first(evaluate5(K♣, K♡, 5♢, 5♠, A♠)) == 2677 # Kings and Fives
@test first(evaluate5(K♣, K♡, 5♢, 5♠, Q♠)) == 2678 # Kings and Fives
@test first(evaluate5(K♣, K♡, 5♢, 5♠, J♠)) == 2679 # Kings and Fives
@test first(evaluate5(K♣, K♡, 5♢, 5♠, T♠)) == 2680 # Kings and Fives
@test first(evaluate5(K♣, K♡, 5♢, 5♠, 9♠)) == 2681 # Kings and Fives
@test first(evaluate5(K♣, K♡, 5♢, 5♠, 8♠)) == 2682 # Kings and Fives
@test first(evaluate5(K♣, K♡, 5♢, 5♠, 7♠)) == 2683 # Kings and Fives
@test first(evaluate5(K♣, K♡, 5♢, 5♠, 6♠)) == 2684 # Kings and Fives
@test first(evaluate5(K♣, K♡, 5♢, 5♠, 4♠)) == 2685 # Kings and Fives
@test first(evaluate5(K♣, K♡, 5♢, 5♠, 3♠)) == 2686 # Kings and Fives
@test first(evaluate5(K♣, K♡, 5♢, 5♠, 2♠)) == 2687 # Kings and Fives
@test first(evaluate5(K♣, K♡, 4♢, 4♠, A♠)) == 2688 # Kings and Fours
@test first(evaluate5(K♣, K♡, 4♢, 4♠, Q♠)) == 2689 # Kings and Fours
@test first(evaluate5(K♣, K♡, 4♢, 4♠, J♠)) == 2690 # Kings and Fours
@test first(evaluate5(K♣, K♡, 4♢, 4♠, T♠)) == 2691 # Kings and Fours
@test first(evaluate5(K♣, K♡, 4♢, 4♠, 9♠)) == 2692 # Kings and Fours
@test first(evaluate5(K♣, K♡, 4♢, 4♠, 8♠)) == 2693 # Kings and Fours
@test first(evaluate5(K♣, K♡, 4♢, 4♠, 7♠)) == 2694 # Kings and Fours
@test first(evaluate5(K♣, K♡, 4♢, 4♠, 6♠)) == 2695 # Kings and Fours
@test first(evaluate5(K♣, K♡, 4♢, 4♠, 5♠)) == 2696 # Kings and Fours
@test first(evaluate5(K♣, K♡, 4♢, 4♠, 3♠)) == 2697 # Kings and Fours
@test first(evaluate5(K♣, K♡, 4♢, 4♠, 2♠)) == 2698 # Kings and Fours
@test first(evaluate5(K♣, K♡, 3♢, 3♠, A♠)) == 2699 # Kings and Treys
@test first(evaluate5(K♣, K♡, 3♢, 3♠, Q♠)) == 2700 # Kings and Treys
@test first(evaluate5(K♣, K♡, 3♢, 3♠, J♠)) == 2701 # Kings and Treys
@test first(evaluate5(K♣, K♡, 3♢, 3♠, T♠)) == 2702 # Kings and Treys
@test first(evaluate5(K♣, K♡, 3♢, 3♠, 9♠)) == 2703 # Kings and Treys
@test first(evaluate5(K♣, K♡, 3♢, 3♠, 8♠)) == 2704 # Kings and Treys
@test first(evaluate5(K♣, K♡, 3♢, 3♠, 7♠)) == 2705 # Kings and Treys
@test first(evaluate5(K♣, K♡, 3♢, 3♠, 6♠)) == 2706 # Kings and Treys
@test first(evaluate5(K♣, K♡, 3♢, 3♠, 5♠)) == 2707 # Kings and Treys
@test first(evaluate5(K♣, K♡, 3♢, 3♠, 4♠)) == 2708 # Kings and Treys
@test first(evaluate5(K♣, K♡, 3♢, 3♠, 2♠)) == 2709 # Kings and Treys
@test first(evaluate5(K♣, K♡, 2♢, 2♠, A♠)) == 2710 # Kings and Deuces
@test first(evaluate5(K♣, K♡, 2♢, 2♠, Q♠)) == 2711 # Kings and Deuces
@test first(evaluate5(K♣, K♡, 2♢, 2♠, J♠)) == 2712 # Kings and Deuces
@test first(evaluate5(K♣, K♡, 2♢, 2♠, T♠)) == 2713 # Kings and Deuces
@test first(evaluate5(K♣, K♡, 2♢, 2♠, 9♠)) == 2714 # Kings and Deuces
@test first(evaluate5(K♣, K♡, 2♢, 2♠, 8♠)) == 2715 # Kings and Deuces
@test first(evaluate5(K♣, K♡, 2♢, 2♠, 7♠)) == 2716 # Kings and Deuces
@test first(evaluate5(K♣, K♡, 2♢, 2♠, 6♠)) == 2717 # Kings and Deuces
@test first(evaluate5(K♣, K♡, 2♢, 2♠, 5♠)) == 2718 # Kings and Deuces
@test first(evaluate5(K♣, K♡, 2♢, 2♠, 4♠)) == 2719 # Kings and Deuces
@test first(evaluate5(K♣, K♡, 2♢, 2♠, 3♠)) == 2720 # Kings and Deuces
@test first(evaluate5(Q♣, Q♡, J♢, J♠, A♠)) == 2721 # Queens and Jacks
@test first(evaluate5(Q♣, Q♡, J♢, J♠, K♠)) == 2722 # Queens and Jacks
@test first(evaluate5(Q♣, Q♡, J♢, J♠, T♠)) == 2723 # Queens and Jacks
@test first(evaluate5(Q♣, Q♡, J♢, J♠, 9♠)) == 2724 # Queens and Jacks
@test first(evaluate5(Q♣, Q♡, J♢, J♠, 8♠)) == 2725 # Queens and Jacks
@test first(evaluate5(Q♣, Q♡, J♢, J♠, 7♠)) == 2726 # Queens and Jacks
@test first(evaluate5(Q♣, Q♡, J♢, J♠, 6♠)) == 2727 # Queens and Jacks
@test first(evaluate5(Q♣, Q♡, J♢, J♠, 5♠)) == 2728 # Queens and Jacks
@test first(evaluate5(Q♣, Q♡, J♢, J♠, 4♠)) == 2729 # Queens and Jacks
@test first(evaluate5(Q♣, Q♡, J♢, J♠, 3♠)) == 2730 # Queens and Jacks
@test first(evaluate5(Q♣, Q♡, J♢, J♠, 2♠)) == 2731 # Queens and Jacks
@test first(evaluate5(Q♣, Q♡, T♢, T♠, A♠)) == 2732 # Queens and Tens
@test first(evaluate5(Q♣, Q♡, T♢, T♠, K♠)) == 2733 # Queens and Tens
@test first(evaluate5(Q♣, Q♡, T♢, T♠, J♠)) == 2734 # Queens and Tens
@test first(evaluate5(Q♣, Q♡, T♢, T♠, 9♠)) == 2735 # Queens and Tens
@test first(evaluate5(Q♣, Q♡, T♢, T♠, 8♠)) == 2736 # Queens and Tens
@test first(evaluate5(Q♣, Q♡, T♢, T♠, 7♠)) == 2737 # Queens and Tens
@test first(evaluate5(Q♣, Q♡, T♢, T♠, 6♠)) == 2738 # Queens and Tens
@test first(evaluate5(Q♣, Q♡, T♢, T♠, 5♠)) == 2739 # Queens and Tens
@test first(evaluate5(Q♣, Q♡, T♢, T♠, 4♠)) == 2740 # Queens and Tens
@test first(evaluate5(Q♣, Q♡, T♢, T♠, 3♠)) == 2741 # Queens and Tens
@test first(evaluate5(Q♣, Q♡, T♢, T♠, 2♠)) == 2742 # Queens and Tens
@test first(evaluate5(Q♣, Q♡, 9♢, 9♠, A♠)) == 2743 # Queens and Nines
@test first(evaluate5(Q♣, Q♡, 9♢, 9♠, K♠)) == 2744 # Queens and Nines
@test first(evaluate5(Q♣, Q♡, 9♢, 9♠, J♠)) == 2745 # Queens and Nines
@test first(evaluate5(Q♣, Q♡, 9♢, 9♠, T♠)) == 2746 # Queens and Nines
@test first(evaluate5(Q♣, Q♡, 9♢, 9♠, 8♠)) == 2747 # Queens and Nines
@test first(evaluate5(Q♣, Q♡, 9♢, 9♠, 7♠)) == 2748 # Queens and Nines
@test first(evaluate5(Q♣, Q♡, 9♢, 9♠, 6♠)) == 2749 # Queens and Nines
@test first(evaluate5(Q♣, Q♡, 9♢, 9♠, 5♠)) == 2750 # Queens and Nines
@test first(evaluate5(Q♣, Q♡, 9♢, 9♠, 4♠)) == 2751 # Queens and Nines
@test first(evaluate5(Q♣, Q♡, 9♢, 9♠, 3♠)) == 2752 # Queens and Nines
@test first(evaluate5(Q♣, Q♡, 9♢, 9♠, 2♠)) == 2753 # Queens and Nines
@test first(evaluate5(Q♣, Q♡, 8♢, 8♠, A♠)) == 2754 # Queens and Eights
@test first(evaluate5(Q♣, Q♡, 8♢, 8♠, K♠)) == 2755 # Queens and Eights
@test first(evaluate5(Q♣, Q♡, 8♢, 8♠, J♠)) == 2756 # Queens and Eights
@test first(evaluate5(Q♣, Q♡, 8♢, 8♠, T♠)) == 2757 # Queens and Eights
@test first(evaluate5(Q♣, Q♡, 8♢, 8♠, 9♠)) == 2758 # Queens and Eights
@test first(evaluate5(Q♣, Q♡, 8♢, 8♠, 7♠)) == 2759 # Queens and Eights
@test first(evaluate5(Q♣, Q♡, 8♢, 8♠, 6♠)) == 2760 # Queens and Eights
@test first(evaluate5(Q♣, Q♡, 8♢, 8♠, 5♠)) == 2761 # Queens and Eights
@test first(evaluate5(Q♣, Q♡, 8♢, 8♠, 4♠)) == 2762 # Queens and Eights
@test first(evaluate5(Q♣, Q♡, 8♢, 8♠, 3♠)) == 2763 # Queens and Eights
@test first(evaluate5(Q♣, Q♡, 8♢, 8♠, 2♠)) == 2764 # Queens and Eights
@test first(evaluate5(Q♣, Q♡, 7♢, 7♠, A♠)) == 2765 # Queens and Sevens
@test first(evaluate5(Q♣, Q♡, 7♢, 7♠, K♠)) == 2766 # Queens and Sevens
@test first(evaluate5(Q♣, Q♡, 7♢, 7♠, J♠)) == 2767 # Queens and Sevens
@test first(evaluate5(Q♣, Q♡, 7♢, 7♠, T♠)) == 2768 # Queens and Sevens
@test first(evaluate5(Q♣, Q♡, 7♢, 7♠, 9♠)) == 2769 # Queens and Sevens
@test first(evaluate5(Q♣, Q♡, 7♢, 7♠, 8♠)) == 2770 # Queens and Sevens
@test first(evaluate5(Q♣, Q♡, 7♢, 7♠, 6♠)) == 2771 # Queens and Sevens
@test first(evaluate5(Q♣, Q♡, 7♢, 7♠, 5♠)) == 2772 # Queens and Sevens
@test first(evaluate5(Q♣, Q♡, 7♢, 7♠, 4♠)) == 2773 # Queens and Sevens
@test first(evaluate5(Q♣, Q♡, 7♢, 7♠, 3♠)) == 2774 # Queens and Sevens
@test first(evaluate5(Q♣, Q♡, 7♢, 7♠, 2♠)) == 2775 # Queens and Sevens
@test first(evaluate5(Q♣, Q♡, 6♢, 6♠, A♠)) == 2776 # Queens and Sixes
@test first(evaluate5(Q♣, Q♡, 6♢, 6♠, K♠)) == 2777 # Queens and Sixes
@test first(evaluate5(Q♣, Q♡, 6♢, 6♠, J♠)) == 2778 # Queens and Sixes
@test first(evaluate5(Q♣, Q♡, 6♢, 6♠, T♠)) == 2779 # Queens and Sixes
@test first(evaluate5(Q♣, Q♡, 6♢, 6♠, 9♠)) == 2780 # Queens and Sixes
@test first(evaluate5(Q♣, Q♡, 6♢, 6♠, 8♠)) == 2781 # Queens and Sixes
@test first(evaluate5(Q♣, Q♡, 6♢, 6♠, 7♠)) == 2782 # Queens and Sixes
@test first(evaluate5(Q♣, Q♡, 6♢, 6♠, 5♠)) == 2783 # Queens and Sixes
@test first(evaluate5(Q♣, Q♡, 6♢, 6♠, 4♠)) == 2784 # Queens and Sixes
@test first(evaluate5(Q♣, Q♡, 6♢, 6♠, 3♠)) == 2785 # Queens and Sixes
@test first(evaluate5(Q♣, Q♡, 6♢, 6♠, 2♠)) == 2786 # Queens and Sixes
@test first(evaluate5(Q♣, Q♡, 5♢, 5♠, A♠)) == 2787 # Queens and Fives
@test first(evaluate5(Q♣, Q♡, 5♢, 5♠, K♠)) == 2788 # Queens and Fives
@test first(evaluate5(Q♣, Q♡, 5♢, 5♠, J♠)) == 2789 # Queens and Fives
@test first(evaluate5(Q♣, Q♡, 5♢, 5♠, T♠)) == 2790 # Queens and Fives
@test first(evaluate5(Q♣, Q♡, 5♢, 5♠, 9♠)) == 2791 # Queens and Fives
@test first(evaluate5(Q♣, Q♡, 5♢, 5♠, 8♠)) == 2792 # Queens and Fives
@test first(evaluate5(Q♣, Q♡, 5♢, 5♠, 7♠)) == 2793 # Queens and Fives
@test first(evaluate5(Q♣, Q♡, 5♢, 5♠, 6♠)) == 2794 # Queens and Fives
@test first(evaluate5(Q♣, Q♡, 5♢, 5♠, 4♠)) == 2795 # Queens and Fives
@test first(evaluate5(Q♣, Q♡, 5♢, 5♠, 3♠)) == 2796 # Queens and Fives
@test first(evaluate5(Q♣, Q♡, 5♢, 5♠, 2♠)) == 2797 # Queens and Fives
@test first(evaluate5(Q♣, Q♡, 4♢, 4♠, A♠)) == 2798 # Queens and Fours
@test first(evaluate5(Q♣, Q♡, 4♢, 4♠, K♠)) == 2799 # Queens and Fours
@test first(evaluate5(Q♣, Q♡, 4♢, 4♠, J♠)) == 2800 # Queens and Fours
@test first(evaluate5(Q♣, Q♡, 4♢, 4♠, T♠)) == 2801 # Queens and Fours
@test first(evaluate5(Q♣, Q♡, 4♢, 4♠, 9♠)) == 2802 # Queens and Fours
@test first(evaluate5(Q♣, Q♡, 4♢, 4♠, 8♠)) == 2803 # Queens and Fours
@test first(evaluate5(Q♣, Q♡, 4♢, 4♠, 7♠)) == 2804 # Queens and Fours
@test first(evaluate5(Q♣, Q♡, 4♢, 4♠, 6♠)) == 2805 # Queens and Fours
@test first(evaluate5(Q♣, Q♡, 4♢, 4♠, 5♠)) == 2806 # Queens and Fours
@test first(evaluate5(Q♣, Q♡, 4♢, 4♠, 3♠)) == 2807 # Queens and Fours
@test first(evaluate5(Q♣, Q♡, 4♢, 4♠, 2♠)) == 2808 # Queens and Fours
@test first(evaluate5(Q♣, Q♡, 3♢, 3♠, A♠)) == 2809 # Queens and Treys
@test first(evaluate5(Q♣, Q♡, 3♢, 3♠, K♠)) == 2810 # Queens and Treys
@test first(evaluate5(Q♣, Q♡, 3♢, 3♠, J♠)) == 2811 # Queens and Treys
@test first(evaluate5(Q♣, Q♡, 3♢, 3♠, T♠)) == 2812 # Queens and Treys
@test first(evaluate5(Q♣, Q♡, 3♢, 3♠, 9♠)) == 2813 # Queens and Treys
@test first(evaluate5(Q♣, Q♡, 3♢, 3♠, 8♠)) == 2814 # Queens and Treys
@test first(evaluate5(Q♣, Q♡, 3♢, 3♠, 7♠)) == 2815 # Queens and Treys
@test first(evaluate5(Q♣, Q♡, 3♢, 3♠, 6♠)) == 2816 # Queens and Treys
@test first(evaluate5(Q♣, Q♡, 3♢, 3♠, 5♠)) == 2817 # Queens and Treys
@test first(evaluate5(Q♣, Q♡, 3♢, 3♠, 4♠)) == 2818 # Queens and Treys
@test first(evaluate5(Q♣, Q♡, 3♢, 3♠, 2♠)) == 2819 # Queens and Treys
@test first(evaluate5(Q♣, Q♡, 2♢, 2♠, A♠)) == 2820 # Queens and Deuces
@test first(evaluate5(Q♣, Q♡, 2♢, 2♠, K♠)) == 2821 # Queens and Deuces
@test first(evaluate5(Q♣, Q♡, 2♢, 2♠, J♠)) == 2822 # Queens and Deuces
@test first(evaluate5(Q♣, Q♡, 2♢, 2♠, T♠)) == 2823 # Queens and Deuces
@test first(evaluate5(Q♣, Q♡, 2♢, 2♠, 9♠)) == 2824 # Queens and Deuces
@test first(evaluate5(Q♣, Q♡, 2♢, 2♠, 8♠)) == 2825 # Queens and Deuces
@test first(evaluate5(Q♣, Q♡, 2♢, 2♠, 7♠)) == 2826 # Queens and Deuces
@test first(evaluate5(Q♣, Q♡, 2♢, 2♠, 6♠)) == 2827 # Queens and Deuces
@test first(evaluate5(Q♣, Q♡, 2♢, 2♠, 5♠)) == 2828 # Queens and Deuces
@test first(evaluate5(Q♣, Q♡, 2♢, 2♠, 4♠)) == 2829 # Queens and Deuces
@test first(evaluate5(Q♣, Q♡, 2♢, 2♠, 3♠)) == 2830 # Queens and Deuces
@test first(evaluate5(J♣, J♡, T♢, T♠, A♠)) == 2831 # Jacks and Tens
@test first(evaluate5(J♣, J♡, T♢, T♠, K♠)) == 2832 # Jacks and Tens
@test first(evaluate5(J♣, J♡, T♢, T♠, Q♠)) == 2833 # Jacks and Tens
@test first(evaluate5(J♣, J♡, T♢, T♠, 9♠)) == 2834 # Jacks and Tens
@test first(evaluate5(J♣, J♡, T♢, T♠, 8♠)) == 2835 # Jacks and Tens
@test first(evaluate5(J♣, J♡, T♢, T♠, 7♠)) == 2836 # Jacks and Tens
@test first(evaluate5(J♣, J♡, T♢, T♠, 6♠)) == 2837 # Jacks and Tens
@test first(evaluate5(J♣, J♡, T♢, T♠, 5♠)) == 2838 # Jacks and Tens
@test first(evaluate5(J♣, J♡, T♢, T♠, 4♠)) == 2839 # Jacks and Tens
@test first(evaluate5(J♣, J♡, T♢, T♠, 3♠)) == 2840 # Jacks and Tens
@test first(evaluate5(J♣, J♡, T♢, T♠, 2♠)) == 2841 # Jacks and Tens
@test first(evaluate5(J♣, J♡, 9♢, 9♠, A♠)) == 2842 # Jacks and Nines
@test first(evaluate5(J♣, J♡, 9♢, 9♠, K♠)) == 2843 # Jacks and Nines
@test first(evaluate5(J♣, J♡, 9♢, 9♠, Q♠)) == 2844 # Jacks and Nines
@test first(evaluate5(J♣, J♡, 9♢, 9♠, T♠)) == 2845 # Jacks and Nines
@test first(evaluate5(J♣, J♡, 9♢, 9♠, 8♠)) == 2846 # Jacks and Nines
@test first(evaluate5(J♣, J♡, 9♢, 9♠, 7♠)) == 2847 # Jacks and Nines
@test first(evaluate5(J♣, J♡, 9♢, 9♠, 6♠)) == 2848 # Jacks and Nines
@test first(evaluate5(J♣, J♡, 9♢, 9♠, 5♠)) == 2849 # Jacks and Nines
@test first(evaluate5(J♣, J♡, 9♢, 9♠, 4♠)) == 2850 # Jacks and Nines
@test first(evaluate5(J♣, J♡, 9♢, 9♠, 3♠)) == 2851 # Jacks and Nines
@test first(evaluate5(J♣, J♡, 9♢, 9♠, 2♠)) == 2852 # Jacks and Nines
@test first(evaluate5(J♣, J♡, 8♢, 8♠, A♠)) == 2853 # Jacks and Eights
@test first(evaluate5(J♣, J♡, 8♢, 8♠, K♠)) == 2854 # Jacks and Eights
@test first(evaluate5(J♣, J♡, 8♢, 8♠, Q♠)) == 2855 # Jacks and Eights
@test first(evaluate5(J♣, J♡, 8♢, 8♠, T♠)) == 2856 # Jacks and Eights
@test first(evaluate5(J♣, J♡, 8♢, 8♠, 9♠)) == 2857 # Jacks and Eights
@test first(evaluate5(J♣, J♡, 8♢, 8♠, 7♠)) == 2858 # Jacks and Eights
@test first(evaluate5(J♣, J♡, 8♢, 8♠, 6♠)) == 2859 # Jacks and Eights
@test first(evaluate5(J♣, J♡, 8♢, 8♠, 5♠)) == 2860 # Jacks and Eights
@test first(evaluate5(J♣, J♡, 8♢, 8♠, 4♠)) == 2861 # Jacks and Eights
@test first(evaluate5(J♣, J♡, 8♢, 8♠, 3♠)) == 2862 # Jacks and Eights
@test first(evaluate5(J♣, J♡, 8♢, 8♠, 2♠)) == 2863 # Jacks and Eights
@test first(evaluate5(J♣, J♡, 7♢, 7♠, A♠)) == 2864 # Jacks and Sevens
@test first(evaluate5(J♣, J♡, 7♢, 7♠, K♠)) == 2865 # Jacks and Sevens
@test first(evaluate5(J♣, J♡, 7♢, 7♠, Q♠)) == 2866 # Jacks and Sevens
@test first(evaluate5(J♣, J♡, 7♢, 7♠, T♠)) == 2867 # Jacks and Sevens
@test first(evaluate5(J♣, J♡, 7♢, 7♠, 9♠)) == 2868 # Jacks and Sevens
@test first(evaluate5(J♣, J♡, 7♢, 7♠, 8♠)) == 2869 # Jacks and Sevens
@test first(evaluate5(J♣, J♡, 7♢, 7♠, 6♠)) == 2870 # Jacks and Sevens
@test first(evaluate5(J♣, J♡, 7♢, 7♠, 5♠)) == 2871 # Jacks and Sevens
@test first(evaluate5(J♣, J♡, 7♢, 7♠, 4♠)) == 2872 # Jacks and Sevens
@test first(evaluate5(J♣, J♡, 7♢, 7♠, 3♠)) == 2873 # Jacks and Sevens
@test first(evaluate5(J♣, J♡, 7♢, 7♠, 2♠)) == 2874 # Jacks and Sevens
@test first(evaluate5(J♣, J♡, 6♢, 6♠, A♠)) == 2875 # Jacks and Sixes
@test first(evaluate5(J♣, J♡, 6♢, 6♠, K♠)) == 2876 # Jacks and Sixes
@test first(evaluate5(J♣, J♡, 6♢, 6♠, Q♠)) == 2877 # Jacks and Sixes
@test first(evaluate5(J♣, J♡, 6♢, 6♠, T♠)) == 2878 # Jacks and Sixes
@test first(evaluate5(J♣, J♡, 6♢, 6♠, 9♠)) == 2879 # Jacks and Sixes
@test first(evaluate5(J♣, J♡, 6♢, 6♠, 8♠)) == 2880 # Jacks and Sixes
@test first(evaluate5(J♣, J♡, 6♢, 6♠, 7♠)) == 2881 # Jacks and Sixes
@test first(evaluate5(J♣, J♡, 6♢, 6♠, 5♠)) == 2882 # Jacks and Sixes
@test first(evaluate5(J♣, J♡, 6♢, 6♠, 4♠)) == 2883 # Jacks and Sixes
@test first(evaluate5(J♣, J♡, 6♢, 6♠, 3♠)) == 2884 # Jacks and Sixes
@test first(evaluate5(J♣, J♡, 6♢, 6♠, 2♠)) == 2885 # Jacks and Sixes
@test first(evaluate5(J♣, J♡, 5♢, 5♠, A♠)) == 2886 # Jacks and Fives
@test first(evaluate5(J♣, J♡, 5♢, 5♠, K♠)) == 2887 # Jacks and Fives
@test first(evaluate5(J♣, J♡, 5♢, 5♠, Q♠)) == 2888 # Jacks and Fives
@test first(evaluate5(J♣, J♡, 5♢, 5♠, T♠)) == 2889 # Jacks and Fives
@test first(evaluate5(J♣, J♡, 5♢, 5♠, 9♠)) == 2890 # Jacks and Fives
@test first(evaluate5(J♣, J♡, 5♢, 5♠, 8♠)) == 2891 # Jacks and Fives
@test first(evaluate5(J♣, J♡, 5♢, 5♠, 7♠)) == 2892 # Jacks and Fives
@test first(evaluate5(J♣, J♡, 5♢, 5♠, 6♠)) == 2893 # Jacks and Fives
@test first(evaluate5(J♣, J♡, 5♢, 5♠, 4♠)) == 2894 # Jacks and Fives
@test first(evaluate5(J♣, J♡, 5♢, 5♠, 3♠)) == 2895 # Jacks and Fives
@test first(evaluate5(J♣, J♡, 5♢, 5♠, 2♠)) == 2896 # Jacks and Fives
@test first(evaluate5(J♣, J♡, 4♢, 4♠, A♠)) == 2897 # Jacks and Fours
@test first(evaluate5(J♣, J♡, 4♢, 4♠, K♠)) == 2898 # Jacks and Fours
@test first(evaluate5(J♣, J♡, 4♢, 4♠, Q♠)) == 2899 # Jacks and Fours
@test first(evaluate5(J♣, J♡, 4♢, 4♠, T♠)) == 2900 # Jacks and Fours
@test first(evaluate5(J♣, J♡, 4♢, 4♠, 9♠)) == 2901 # Jacks and Fours
@test first(evaluate5(J♣, J♡, 4♢, 4♠, 8♠)) == 2902 # Jacks and Fours
@test first(evaluate5(J♣, J♡, 4♢, 4♠, 7♠)) == 2903 # Jacks and Fours
@test first(evaluate5(J♣, J♡, 4♢, 4♠, 6♠)) == 2904 # Jacks and Fours
@test first(evaluate5(J♣, J♡, 4♢, 4♠, 5♠)) == 2905 # Jacks and Fours
@test first(evaluate5(J♣, J♡, 4♢, 4♠, 3♠)) == 2906 # Jacks and Fours
@test first(evaluate5(J♣, J♡, 4♢, 4♠, 2♠)) == 2907 # Jacks and Fours
@test first(evaluate5(J♣, J♡, 3♢, 3♠, A♠)) == 2908 # Jacks and Treys
@test first(evaluate5(J♣, J♡, 3♢, 3♠, K♠)) == 2909 # Jacks and Treys
@test first(evaluate5(J♣, J♡, 3♢, 3♠, Q♠)) == 2910 # Jacks and Treys
@test first(evaluate5(J♣, J♡, 3♢, 3♠, T♠)) == 2911 # Jacks and Treys
@test first(evaluate5(J♣, J♡, 3♢, 3♠, 9♠)) == 2912 # Jacks and Treys
@test first(evaluate5(J♣, J♡, 3♢, 3♠, 8♠)) == 2913 # Jacks and Treys
@test first(evaluate5(J♣, J♡, 3♢, 3♠, 7♠)) == 2914 # Jacks and Treys
@test first(evaluate5(J♣, J♡, 3♢, 3♠, 6♠)) == 2915 # Jacks and Treys
@test first(evaluate5(J♣, J♡, 3♢, 3♠, 5♠)) == 2916 # Jacks and Treys
@test first(evaluate5(J♣, J♡, 3♢, 3♠, 4♠)) == 2917 # Jacks and Treys
@test first(evaluate5(J♣, J♡, 3♢, 3♠, 2♠)) == 2918 # Jacks and Treys
@test first(evaluate5(J♣, J♡, 2♢, 2♠, A♠)) == 2919 # Jacks and Deuces
@test first(evaluate5(J♣, J♡, 2♢, 2♠, K♠)) == 2920 # Jacks and Deuces
@test first(evaluate5(J♣, J♡, 2♢, 2♠, Q♠)) == 2921 # Jacks and Deuces
@test first(evaluate5(J♣, J♡, 2♢, 2♠, T♠)) == 2922 # Jacks and Deuces
@test first(evaluate5(J♣, J♡, 2♢, 2♠, 9♠)) == 2923 # Jacks and Deuces
@test first(evaluate5(J♣, J♡, 2♢, 2♠, 8♠)) == 2924 # Jacks and Deuces
@test first(evaluate5(J♣, J♡, 2♢, 2♠, 7♠)) == 2925 # Jacks and Deuces
@test first(evaluate5(J♣, J♡, 2♢, 2♠, 6♠)) == 2926 # Jacks and Deuces
@test first(evaluate5(J♣, J♡, 2♢, 2♠, 5♠)) == 2927 # Jacks and Deuces
@test first(evaluate5(J♣, J♡, 2♢, 2♠, 4♠)) == 2928 # Jacks and Deuces
@test first(evaluate5(J♣, J♡, 2♢, 2♠, 3♠)) == 2929 # Jacks and Deuces
@test first(evaluate5(T♣, T♡, 9♢, 9♠, A♠)) == 2930 # Tens and Nines
@test first(evaluate5(T♣, T♡, 9♢, 9♠, K♠)) == 2931 # Tens and Nines
@test first(evaluate5(T♣, T♡, 9♢, 9♠, Q♠)) == 2932 # Tens and Nines
@test first(evaluate5(T♣, T♡, 9♢, 9♠, J♠)) == 2933 # Tens and Nines
@test first(evaluate5(T♣, T♡, 9♢, 9♠, 8♠)) == 2934 # Tens and Nines
@test first(evaluate5(T♣, T♡, 9♢, 9♠, 7♠)) == 2935 # Tens and Nines
@test first(evaluate5(T♣, T♡, 9♢, 9♠, 6♠)) == 2936 # Tens and Nines
@test first(evaluate5(T♣, T♡, 9♢, 9♠, 5♠)) == 2937 # Tens and Nines
@test first(evaluate5(T♣, T♡, 9♢, 9♠, 4♠)) == 2938 # Tens and Nines
@test first(evaluate5(T♣, T♡, 9♢, 9♠, 3♠)) == 2939 # Tens and Nines
@test first(evaluate5(T♣, T♡, 9♢, 9♠, 2♠)) == 2940 # Tens and Nines
@test first(evaluate5(T♣, T♡, 8♢, 8♠, A♠)) == 2941 # Tens and Eights
@test first(evaluate5(T♣, T♡, 8♢, 8♠, K♠)) == 2942 # Tens and Eights
@test first(evaluate5(T♣, T♡, 8♢, 8♠, Q♠)) == 2943 # Tens and Eights
@test first(evaluate5(T♣, T♡, 8♢, 8♠, J♠)) == 2944 # Tens and Eights
@test first(evaluate5(T♣, T♡, 8♢, 8♠, 9♠)) == 2945 # Tens and Eights
@test first(evaluate5(T♣, T♡, 8♢, 8♠, 7♠)) == 2946 # Tens and Eights
@test first(evaluate5(T♣, T♡, 8♢, 8♠, 6♠)) == 2947 # Tens and Eights
@test first(evaluate5(T♣, T♡, 8♢, 8♠, 5♠)) == 2948 # Tens and Eights
@test first(evaluate5(T♣, T♡, 8♢, 8♠, 4♠)) == 2949 # Tens and Eights
@test first(evaluate5(T♣, T♡, 8♢, 8♠, 3♠)) == 2950 # Tens and Eights
@test first(evaluate5(T♣, T♡, 8♢, 8♠, 2♠)) == 2951 # Tens and Eights
@test first(evaluate5(T♣, T♡, 7♢, 7♠, A♠)) == 2952 # Tens and Sevens
@test first(evaluate5(T♣, T♡, 7♢, 7♠, K♠)) == 2953 # Tens and Sevens
@test first(evaluate5(T♣, T♡, 7♢, 7♠, Q♠)) == 2954 # Tens and Sevens
@test first(evaluate5(T♣, T♡, 7♢, 7♠, J♠)) == 2955 # Tens and Sevens
@test first(evaluate5(T♣, T♡, 7♢, 7♠, 9♠)) == 2956 # Tens and Sevens
@test first(evaluate5(T♣, T♡, 7♢, 7♠, 8♠)) == 2957 # Tens and Sevens
@test first(evaluate5(T♣, T♡, 7♢, 7♠, 6♠)) == 2958 # Tens and Sevens
@test first(evaluate5(T♣, T♡, 7♢, 7♠, 5♠)) == 2959 # Tens and Sevens
@test first(evaluate5(T♣, T♡, 7♢, 7♠, 4♠)) == 2960 # Tens and Sevens
@test first(evaluate5(T♣, T♡, 7♢, 7♠, 3♠)) == 2961 # Tens and Sevens
@test first(evaluate5(T♣, T♡, 7♢, 7♠, 2♠)) == 2962 # Tens and Sevens
@test first(evaluate5(T♣, T♡, 6♢, 6♠, A♠)) == 2963 # Tens and Sixes
@test first(evaluate5(T♣, T♡, 6♢, 6♠, K♠)) == 2964 # Tens and Sixes
@test first(evaluate5(T♣, T♡, 6♢, 6♠, Q♠)) == 2965 # Tens and Sixes
@test first(evaluate5(T♣, T♡, 6♢, 6♠, J♠)) == 2966 # Tens and Sixes
@test first(evaluate5(T♣, T♡, 6♢, 6♠, 9♠)) == 2967 # Tens and Sixes
@test first(evaluate5(T♣, T♡, 6♢, 6♠, 8♠)) == 2968 # Tens and Sixes
@test first(evaluate5(T♣, T♡, 6♢, 6♠, 7♠)) == 2969 # Tens and Sixes
@test first(evaluate5(T♣, T♡, 6♢, 6♠, 5♠)) == 2970 # Tens and Sixes
@test first(evaluate5(T♣, T♡, 6♢, 6♠, 4♠)) == 2971 # Tens and Sixes
@test first(evaluate5(T♣, T♡, 6♢, 6♠, 3♠)) == 2972 # Tens and Sixes
@test first(evaluate5(T♣, T♡, 6♢, 6♠, 2♠)) == 2973 # Tens and Sixes
@test first(evaluate5(T♣, T♡, 5♢, 5♠, A♠)) == 2974 # Tens and Fives
@test first(evaluate5(T♣, T♡, 5♢, 5♠, K♠)) == 2975 # Tens and Fives
@test first(evaluate5(T♣, T♡, 5♢, 5♠, Q♠)) == 2976 # Tens and Fives
@test first(evaluate5(T♣, T♡, 5♢, 5♠, J♠)) == 2977 # Tens and Fives
@test first(evaluate5(T♣, T♡, 5♢, 5♠, 9♠)) == 2978 # Tens and Fives
@test first(evaluate5(T♣, T♡, 5♢, 5♠, 8♠)) == 2979 # Tens and Fives
@test first(evaluate5(T♣, T♡, 5♢, 5♠, 7♠)) == 2980 # Tens and Fives
@test first(evaluate5(T♣, T♡, 5♢, 5♠, 6♠)) == 2981 # Tens and Fives
@test first(evaluate5(T♣, T♡, 5♢, 5♠, 4♠)) == 2982 # Tens and Fives
@test first(evaluate5(T♣, T♡, 5♢, 5♠, 3♠)) == 2983 # Tens and Fives
@test first(evaluate5(T♣, T♡, 5♢, 5♠, 2♠)) == 2984 # Tens and Fives
@test first(evaluate5(T♣, T♡, 4♢, 4♠, A♠)) == 2985 # Tens and Fours
@test first(evaluate5(T♣, T♡, 4♢, 4♠, K♠)) == 2986 # Tens and Fours
@test first(evaluate5(T♣, T♡, 4♢, 4♠, Q♠)) == 2987 # Tens and Fours
@test first(evaluate5(T♣, T♡, 4♢, 4♠, J♠)) == 2988 # Tens and Fours
@test first(evaluate5(T♣, T♡, 4♢, 4♠, 9♠)) == 2989 # Tens and Fours
@test first(evaluate5(T♣, T♡, 4♢, 4♠, 8♠)) == 2990 # Tens and Fours
@test first(evaluate5(T♣, T♡, 4♢, 4♠, 7♠)) == 2991 # Tens and Fours
@test first(evaluate5(T♣, T♡, 4♢, 4♠, 6♠)) == 2992 # Tens and Fours
@test first(evaluate5(T♣, T♡, 4♢, 4♠, 5♠)) == 2993 # Tens and Fours
@test first(evaluate5(T♣, T♡, 4♢, 4♠, 3♠)) == 2994 # Tens and Fours
@test first(evaluate5(T♣, T♡, 4♢, 4♠, 2♠)) == 2995 # Tens and Fours
@test first(evaluate5(T♣, T♡, 3♢, 3♠, A♠)) == 2996 # Tens and Treys
@test first(evaluate5(T♣, T♡, 3♢, 3♠, K♠)) == 2997 # Tens and Treys
@test first(evaluate5(T♣, T♡, 3♢, 3♠, Q♠)) == 2998 # Tens and Treys
@test first(evaluate5(T♣, T♡, 3♢, 3♠, J♠)) == 2999 # Tens and Treys
@test first(evaluate5(T♣, T♡, 3♢, 3♠, 9♠)) == 3000 # Tens and Treys
@test first(evaluate5(T♣, T♡, 3♢, 3♠, 8♠)) == 3001 # Tens and Treys
@test first(evaluate5(T♣, T♡, 3♢, 3♠, 7♠)) == 3002 # Tens and Treys
@test first(evaluate5(T♣, T♡, 3♢, 3♠, 6♠)) == 3003 # Tens and Treys
@test first(evaluate5(T♣, T♡, 3♢, 3♠, 5♠)) == 3004 # Tens and Treys
@test first(evaluate5(T♣, T♡, 3♢, 3♠, 4♠)) == 3005 # Tens and Treys
@test first(evaluate5(T♣, T♡, 3♢, 3♠, 2♠)) == 3006 # Tens and Treys
@test first(evaluate5(T♣, T♡, 2♢, 2♠, A♠)) == 3007 # Tens and Deuces
@test first(evaluate5(T♣, T♡, 2♢, 2♠, K♠)) == 3008 # Tens and Deuces
@test first(evaluate5(T♣, T♡, 2♢, 2♠, Q♠)) == 3009 # Tens and Deuces
@test first(evaluate5(T♣, T♡, 2♢, 2♠, J♠)) == 3010 # Tens and Deuces
@test first(evaluate5(T♣, T♡, 2♢, 2♠, 9♠)) == 3011 # Tens and Deuces
@test first(evaluate5(T♣, T♡, 2♢, 2♠, 8♠)) == 3012 # Tens and Deuces
@test first(evaluate5(T♣, T♡, 2♢, 2♠, 7♠)) == 3013 # Tens and Deuces
@test first(evaluate5(T♣, T♡, 2♢, 2♠, 6♠)) == 3014 # Tens and Deuces
@test first(evaluate5(T♣, T♡, 2♢, 2♠, 5♠)) == 3015 # Tens and Deuces
@test first(evaluate5(T♣, T♡, 2♢, 2♠, 4♠)) == 3016 # Tens and Deuces
@test first(evaluate5(T♣, T♡, 2♢, 2♠, 3♠)) == 3017 # Tens and Deuces
@test first(evaluate5(9♣, 9♡, 8♢, 8♠, A♠)) == 3018 # Nines and Eights
@test first(evaluate5(9♣, 9♡, 8♢, 8♠, K♠)) == 3019 # Nines and Eights
@test first(evaluate5(9♣, 9♡, 8♢, 8♠, Q♠)) == 3020 # Nines and Eights
@test first(evaluate5(9♣, 9♡, 8♢, 8♠, J♠)) == 3021 # Nines and Eights
@test first(evaluate5(9♣, 9♡, 8♢, 8♠, T♠)) == 3022 # Nines and Eights
@test first(evaluate5(9♣, 9♡, 8♢, 8♠, 7♠)) == 3023 # Nines and Eights
@test first(evaluate5(9♣, 9♡, 8♢, 8♠, 6♠)) == 3024 # Nines and Eights
@test first(evaluate5(9♣, 9♡, 8♢, 8♠, 5♠)) == 3025 # Nines and Eights
@test first(evaluate5(9♣, 9♡, 8♢, 8♠, 4♠)) == 3026 # Nines and Eights
@test first(evaluate5(9♣, 9♡, 8♢, 8♠, 3♠)) == 3027 # Nines and Eights
@test first(evaluate5(9♣, 9♡, 8♢, 8♠, 2♠)) == 3028 # Nines and Eights
@test first(evaluate5(9♣, 9♡, 7♢, 7♠, A♠)) == 3029 # Nines and Sevens
@test first(evaluate5(9♣, 9♡, 7♢, 7♠, K♠)) == 3030 # Nines and Sevens
@test first(evaluate5(9♣, 9♡, 7♢, 7♠, Q♠)) == 3031 # Nines and Sevens
@test first(evaluate5(9♣, 9♡, 7♢, 7♠, J♠)) == 3032 # Nines and Sevens
@test first(evaluate5(9♣, 9♡, 7♢, 7♠, T♠)) == 3033 # Nines and Sevens
@test first(evaluate5(9♣, 9♡, 7♢, 7♠, 8♠)) == 3034 # Nines and Sevens
@test first(evaluate5(9♣, 9♡, 7♢, 7♠, 6♠)) == 3035 # Nines and Sevens
@test first(evaluate5(9♣, 9♡, 7♢, 7♠, 5♠)) == 3036 # Nines and Sevens
@test first(evaluate5(9♣, 9♡, 7♢, 7♠, 4♠)) == 3037 # Nines and Sevens
@test first(evaluate5(9♣, 9♡, 7♢, 7♠, 3♠)) == 3038 # Nines and Sevens
@test first(evaluate5(9♣, 9♡, 7♢, 7♠, 2♠)) == 3039 # Nines and Sevens
@test first(evaluate5(9♣, 9♡, 6♢, 6♠, A♠)) == 3040 # Nines and Sixes
@test first(evaluate5(9♣, 9♡, 6♢, 6♠, K♠)) == 3041 # Nines and Sixes
@test first(evaluate5(9♣, 9♡, 6♢, 6♠, Q♠)) == 3042 # Nines and Sixes
@test first(evaluate5(9♣, 9♡, 6♢, 6♠, J♠)) == 3043 # Nines and Sixes
@test first(evaluate5(9♣, 9♡, 6♢, 6♠, T♠)) == 3044 # Nines and Sixes
@test first(evaluate5(9♣, 9♡, 6♢, 6♠, 8♠)) == 3045 # Nines and Sixes
@test first(evaluate5(9♣, 9♡, 6♢, 6♠, 7♠)) == 3046 # Nines and Sixes
@test first(evaluate5(9♣, 9♡, 6♢, 6♠, 5♠)) == 3047 # Nines and Sixes
@test first(evaluate5(9♣, 9♡, 6♢, 6♠, 4♠)) == 3048 # Nines and Sixes
@test first(evaluate5(9♣, 9♡, 6♢, 6♠, 3♠)) == 3049 # Nines and Sixes
@test first(evaluate5(9♣, 9♡, 6♢, 6♠, 2♠)) == 3050 # Nines and Sixes
@test first(evaluate5(9♣, 9♡, 5♢, 5♠, A♠)) == 3051 # Nines and Fives
@test first(evaluate5(9♣, 9♡, 5♢, 5♠, K♠)) == 3052 # Nines and Fives
@test first(evaluate5(9♣, 9♡, 5♢, 5♠, Q♠)) == 3053 # Nines and Fives
@test first(evaluate5(9♣, 9♡, 5♢, 5♠, J♠)) == 3054 # Nines and Fives
@test first(evaluate5(9♣, 9♡, 5♢, 5♠, T♠)) == 3055 # Nines and Fives
@test first(evaluate5(9♣, 9♡, 5♢, 5♠, 8♠)) == 3056 # Nines and Fives
@test first(evaluate5(9♣, 9♡, 5♢, 5♠, 7♠)) == 3057 # Nines and Fives
@test first(evaluate5(9♣, 9♡, 5♢, 5♠, 6♠)) == 3058 # Nines and Fives
@test first(evaluate5(9♣, 9♡, 5♢, 5♠, 4♠)) == 3059 # Nines and Fives
@test first(evaluate5(9♣, 9♡, 5♢, 5♠, 3♠)) == 3060 # Nines and Fives
@test first(evaluate5(9♣, 9♡, 5♢, 5♠, 2♠)) == 3061 # Nines and Fives
@test first(evaluate5(9♣, 9♡, 4♢, 4♠, A♠)) == 3062 # Nines and Fours
@test first(evaluate5(9♣, 9♡, 4♢, 4♠, K♠)) == 3063 # Nines and Fours
@test first(evaluate5(9♣, 9♡, 4♢, 4♠, Q♠)) == 3064 # Nines and Fours
@test first(evaluate5(9♣, 9♡, 4♢, 4♠, J♠)) == 3065 # Nines and Fours
@test first(evaluate5(9♣, 9♡, 4♢, 4♠, T♠)) == 3066 # Nines and Fours
@test first(evaluate5(9♣, 9♡, 4♢, 4♠, 8♠)) == 3067 # Nines and Fours
@test first(evaluate5(9♣, 9♡, 4♢, 4♠, 7♠)) == 3068 # Nines and Fours
@test first(evaluate5(9♣, 9♡, 4♢, 4♠, 6♠)) == 3069 # Nines and Fours
@test first(evaluate5(9♣, 9♡, 4♢, 4♠, 5♠)) == 3070 # Nines and Fours
@test first(evaluate5(9♣, 9♡, 4♢, 4♠, 3♠)) == 3071 # Nines and Fours
@test first(evaluate5(9♣, 9♡, 4♢, 4♠, 2♠)) == 3072 # Nines and Fours
@test first(evaluate5(9♣, 9♡, 3♢, 3♠, A♠)) == 3073 # Nines and Treys
@test first(evaluate5(9♣, 9♡, 3♢, 3♠, K♠)) == 3074 # Nines and Treys
@test first(evaluate5(9♣, 9♡, 3♢, 3♠, Q♠)) == 3075 # Nines and Treys
@test first(evaluate5(9♣, 9♡, 3♢, 3♠, J♠)) == 3076 # Nines and Treys
@test first(evaluate5(9♣, 9♡, 3♢, 3♠, T♠)) == 3077 # Nines and Treys
@test first(evaluate5(9♣, 9♡, 3♢, 3♠, 8♠)) == 3078 # Nines and Treys
@test first(evaluate5(9♣, 9♡, 3♢, 3♠, 7♠)) == 3079 # Nines and Treys
@test first(evaluate5(9♣, 9♡, 3♢, 3♠, 6♠)) == 3080 # Nines and Treys
@test first(evaluate5(9♣, 9♡, 3♢, 3♠, 5♠)) == 3081 # Nines and Treys
@test first(evaluate5(9♣, 9♡, 3♢, 3♠, 4♠)) == 3082 # Nines and Treys
@test first(evaluate5(9♣, 9♡, 3♢, 3♠, 2♠)) == 3083 # Nines and Treys
@test first(evaluate5(9♣, 9♡, 2♢, 2♠, A♠)) == 3084 # Nines and Deuces
@test first(evaluate5(9♣, 9♡, 2♢, 2♠, K♠)) == 3085 # Nines and Deuces
@test first(evaluate5(9♣, 9♡, 2♢, 2♠, Q♠)) == 3086 # Nines and Deuces
@test first(evaluate5(9♣, 9♡, 2♢, 2♠, J♠)) == 3087 # Nines and Deuces
@test first(evaluate5(9♣, 9♡, 2♢, 2♠, T♠)) == 3088 # Nines and Deuces
@test first(evaluate5(9♣, 9♡, 2♢, 2♠, 8♠)) == 3089 # Nines and Deuces
@test first(evaluate5(9♣, 9♡, 2♢, 2♠, 7♠)) == 3090 # Nines and Deuces
@test first(evaluate5(9♣, 9♡, 2♢, 2♠, 6♠)) == 3091 # Nines and Deuces
@test first(evaluate5(9♣, 9♡, 2♢, 2♠, 5♠)) == 3092 # Nines and Deuces
@test first(evaluate5(9♣, 9♡, 2♢, 2♠, 4♠)) == 3093 # Nines and Deuces
@test first(evaluate5(9♣, 9♡, 2♢, 2♠, 3♠)) == 3094 # Nines and Deuces
@test first(evaluate5(8♣, 8♡, 7♢, 7♠, A♠)) == 3095 # Eights and Sevens
@test first(evaluate5(8♣, 8♡, 7♢, 7♠, K♠)) == 3096 # Eights and Sevens
@test first(evaluate5(8♣, 8♡, 7♢, 7♠, Q♠)) == 3097 # Eights and Sevens
@test first(evaluate5(8♣, 8♡, 7♢, 7♠, J♠)) == 3098 # Eights and Sevens
@test first(evaluate5(8♣, 8♡, 7♢, 7♠, T♠)) == 3099 # Eights and Sevens
@test first(evaluate5(8♣, 8♡, 7♢, 7♠, 9♠)) == 3100 # Eights and Sevens
@test first(evaluate5(8♣, 8♡, 7♢, 7♠, 6♠)) == 3101 # Eights and Sevens
@test first(evaluate5(8♣, 8♡, 7♢, 7♠, 5♠)) == 3102 # Eights and Sevens
@test first(evaluate5(8♣, 8♡, 7♢, 7♠, 4♠)) == 3103 # Eights and Sevens
@test first(evaluate5(8♣, 8♡, 7♢, 7♠, 3♠)) == 3104 # Eights and Sevens
@test first(evaluate5(8♣, 8♡, 7♢, 7♠, 2♠)) == 3105 # Eights and Sevens
@test first(evaluate5(8♣, 8♡, 6♢, 6♠, A♠)) == 3106 # Eights and Sixes
@test first(evaluate5(8♣, 8♡, 6♢, 6♠, K♠)) == 3107 # Eights and Sixes
@test first(evaluate5(8♣, 8♡, 6♢, 6♠, Q♠)) == 3108 # Eights and Sixes
@test first(evaluate5(8♣, 8♡, 6♢, 6♠, J♠)) == 3109 # Eights and Sixes
@test first(evaluate5(8♣, 8♡, 6♢, 6♠, T♠)) == 3110 # Eights and Sixes
@test first(evaluate5(8♣, 8♡, 6♢, 6♠, 9♠)) == 3111 # Eights and Sixes
@test first(evaluate5(8♣, 8♡, 6♢, 6♠, 7♠)) == 3112 # Eights and Sixes
@test first(evaluate5(8♣, 8♡, 6♢, 6♠, 5♠)) == 3113 # Eights and Sixes
@test first(evaluate5(8♣, 8♡, 6♢, 6♠, 4♠)) == 3114 # Eights and Sixes
@test first(evaluate5(8♣, 8♡, 6♢, 6♠, 3♠)) == 3115 # Eights and Sixes
@test first(evaluate5(8♣, 8♡, 6♢, 6♠, 2♠)) == 3116 # Eights and Sixes
@test first(evaluate5(8♣, 8♡, 5♢, 5♠, A♠)) == 3117 # Eights and Fives
@test first(evaluate5(8♣, 8♡, 5♢, 5♠, K♠)) == 3118 # Eights and Fives
@test first(evaluate5(8♣, 8♡, 5♢, 5♠, Q♠)) == 3119 # Eights and Fives
@test first(evaluate5(8♣, 8♡, 5♢, 5♠, J♠)) == 3120 # Eights and Fives
@test first(evaluate5(8♣, 8♡, 5♢, 5♠, T♠)) == 3121 # Eights and Fives
@test first(evaluate5(8♣, 8♡, 5♢, 5♠, 9♠)) == 3122 # Eights and Fives
@test first(evaluate5(8♣, 8♡, 5♢, 5♠, 7♠)) == 3123 # Eights and Fives
@test first(evaluate5(8♣, 8♡, 5♢, 5♠, 6♠)) == 3124 # Eights and Fives
@test first(evaluate5(8♣, 8♡, 5♢, 5♠, 4♠)) == 3125 # Eights and Fives
@test first(evaluate5(8♣, 8♡, 5♢, 5♠, 3♠)) == 3126 # Eights and Fives
@test first(evaluate5(8♣, 8♡, 5♢, 5♠, 2♠)) == 3127 # Eights and Fives
@test first(evaluate5(8♣, 8♡, 4♢, 4♠, A♠)) == 3128 # Eights and Fours
@test first(evaluate5(8♣, 8♡, 4♢, 4♠, K♠)) == 3129 # Eights and Fours
@test first(evaluate5(8♣, 8♡, 4♢, 4♠, Q♠)) == 3130 # Eights and Fours
@test first(evaluate5(8♣, 8♡, 4♢, 4♠, J♠)) == 3131 # Eights and Fours
@test first(evaluate5(8♣, 8♡, 4♢, 4♠, T♠)) == 3132 # Eights and Fours
@test first(evaluate5(8♣, 8♡, 4♢, 4♠, 9♠)) == 3133 # Eights and Fours
@test first(evaluate5(8♣, 8♡, 4♢, 4♠, 7♠)) == 3134 # Eights and Fours
@test first(evaluate5(8♣, 8♡, 4♢, 4♠, 6♠)) == 3135 # Eights and Fours
@test first(evaluate5(8♣, 8♡, 4♢, 4♠, 5♠)) == 3136 # Eights and Fours
@test first(evaluate5(8♣, 8♡, 4♢, 4♠, 3♠)) == 3137 # Eights and Fours
@test first(evaluate5(8♣, 8♡, 4♢, 4♠, 2♠)) == 3138 # Eights and Fours
@test first(evaluate5(8♣, 8♡, 3♢, 3♠, A♠)) == 3139 # Eights and Treys
@test first(evaluate5(8♣, 8♡, 3♢, 3♠, K♠)) == 3140 # Eights and Treys
@test first(evaluate5(8♣, 8♡, 3♢, 3♠, Q♠)) == 3141 # Eights and Treys
@test first(evaluate5(8♣, 8♡, 3♢, 3♠, J♠)) == 3142 # Eights and Treys
@test first(evaluate5(8♣, 8♡, 3♢, 3♠, T♠)) == 3143 # Eights and Treys
@test first(evaluate5(8♣, 8♡, 3♢, 3♠, 9♠)) == 3144 # Eights and Treys
@test first(evaluate5(8♣, 8♡, 3♢, 3♠, 7♠)) == 3145 # Eights and Treys
@test first(evaluate5(8♣, 8♡, 3♢, 3♠, 6♠)) == 3146 # Eights and Treys
@test first(evaluate5(8♣, 8♡, 3♢, 3♠, 5♠)) == 3147 # Eights and Treys
@test first(evaluate5(8♣, 8♡, 3♢, 3♠, 4♠)) == 3148 # Eights and Treys
@test first(evaluate5(8♣, 8♡, 3♢, 3♠, 2♠)) == 3149 # Eights and Treys
@test first(evaluate5(8♣, 8♡, 2♢, 2♠, A♠)) == 3150 # Eights and Deuces
@test first(evaluate5(8♣, 8♡, 2♢, 2♠, K♠)) == 3151 # Eights and Deuces
@test first(evaluate5(8♣, 8♡, 2♢, 2♠, Q♠)) == 3152 # Eights and Deuces
@test first(evaluate5(8♣, 8♡, 2♢, 2♠, J♠)) == 3153 # Eights and Deuces
@test first(evaluate5(8♣, 8♡, 2♢, 2♠, T♠)) == 3154 # Eights and Deuces
@test first(evaluate5(8♣, 8♡, 2♢, 2♠, 9♠)) == 3155 # Eights and Deuces
@test first(evaluate5(8♣, 8♡, 2♢, 2♠, 7♠)) == 3156 # Eights and Deuces
@test first(evaluate5(8♣, 8♡, 2♢, 2♠, 6♠)) == 3157 # Eights and Deuces
@test first(evaluate5(8♣, 8♡, 2♢, 2♠, 5♠)) == 3158 # Eights and Deuces
@test first(evaluate5(8♣, 8♡, 2♢, 2♠, 4♠)) == 3159 # Eights and Deuces
@test first(evaluate5(8♣, 8♡, 2♢, 2♠, 3♠)) == 3160 # Eights and Deuces
@test first(evaluate5(7♣, 7♡, 6♢, 6♠, A♠)) == 3161 # Sevens and Sixes
@test first(evaluate5(7♣, 7♡, 6♢, 6♠, K♠)) == 3162 # Sevens and Sixes
@test first(evaluate5(7♣, 7♡, 6♢, 6♠, Q♠)) == 3163 # Sevens and Sixes
@test first(evaluate5(7♣, 7♡, 6♢, 6♠, J♠)) == 3164 # Sevens and Sixes
@test first(evaluate5(7♣, 7♡, 6♢, 6♠, T♠)) == 3165 # Sevens and Sixes
@test first(evaluate5(7♣, 7♡, 6♢, 6♠, 9♠)) == 3166 # Sevens and Sixes
@test first(evaluate5(7♣, 7♡, 6♢, 6♠, 8♠)) == 3167 # Sevens and Sixes
@test first(evaluate5(7♣, 7♡, 6♢, 6♠, 5♠)) == 3168 # Sevens and Sixes
@test first(evaluate5(7♣, 7♡, 6♢, 6♠, 4♠)) == 3169 # Sevens and Sixes
@test first(evaluate5(7♣, 7♡, 6♢, 6♠, 3♠)) == 3170 # Sevens and Sixes
@test first(evaluate5(7♣, 7♡, 6♢, 6♠, 2♠)) == 3171 # Sevens and Sixes
@test first(evaluate5(7♣, 7♡, 5♢, 5♠, A♠)) == 3172 # Sevens and Fives
@test first(evaluate5(7♣, 7♡, 5♢, 5♠, K♠)) == 3173 # Sevens and Fives
@test first(evaluate5(7♣, 7♡, 5♢, 5♠, Q♠)) == 3174 # Sevens and Fives
@test first(evaluate5(7♣, 7♡, 5♢, 5♠, J♠)) == 3175 # Sevens and Fives
@test first(evaluate5(7♣, 7♡, 5♢, 5♠, T♠)) == 3176 # Sevens and Fives
@test first(evaluate5(7♣, 7♡, 5♢, 5♠, 9♠)) == 3177 # Sevens and Fives
@test first(evaluate5(7♣, 7♡, 5♢, 5♠, 8♠)) == 3178 # Sevens and Fives
@test first(evaluate5(7♣, 7♡, 5♢, 5♠, 6♠)) == 3179 # Sevens and Fives
@test first(evaluate5(7♣, 7♡, 5♢, 5♠, 4♠)) == 3180 # Sevens and Fives
@test first(evaluate5(7♣, 7♡, 5♢, 5♠, 3♠)) == 3181 # Sevens and Fives
@test first(evaluate5(7♣, 7♡, 5♢, 5♠, 2♠)) == 3182 # Sevens and Fives
@test first(evaluate5(7♣, 7♡, 4♢, 4♠, A♠)) == 3183 # Sevens and Fours
@test first(evaluate5(7♣, 7♡, 4♢, 4♠, K♠)) == 3184 # Sevens and Fours
@test first(evaluate5(7♣, 7♡, 4♢, 4♠, Q♠)) == 3185 # Sevens and Fours
@test first(evaluate5(7♣, 7♡, 4♢, 4♠, J♠)) == 3186 # Sevens and Fours
@test first(evaluate5(7♣, 7♡, 4♢, 4♠, T♠)) == 3187 # Sevens and Fours
@test first(evaluate5(7♣, 7♡, 4♢, 4♠, 9♠)) == 3188 # Sevens and Fours
@test first(evaluate5(7♣, 7♡, 4♢, 4♠, 8♠)) == 3189 # Sevens and Fours
@test first(evaluate5(7♣, 7♡, 4♢, 4♠, 6♠)) == 3190 # Sevens and Fours
@test first(evaluate5(7♣, 7♡, 4♢, 4♠, 5♠)) == 3191 # Sevens and Fours
@test first(evaluate5(7♣, 7♡, 4♢, 4♠, 3♠)) == 3192 # Sevens and Fours
@test first(evaluate5(7♣, 7♡, 4♢, 4♠, 2♠)) == 3193 # Sevens and Fours
@test first(evaluate5(7♣, 7♡, 3♢, 3♠, A♠)) == 3194 # Sevens and Treys
@test first(evaluate5(7♣, 7♡, 3♢, 3♠, K♠)) == 3195 # Sevens and Treys
@test first(evaluate5(7♣, 7♡, 3♢, 3♠, Q♠)) == 3196 # Sevens and Treys
@test first(evaluate5(7♣, 7♡, 3♢, 3♠, J♠)) == 3197 # Sevens and Treys
@test first(evaluate5(7♣, 7♡, 3♢, 3♠, T♠)) == 3198 # Sevens and Treys
@test first(evaluate5(7♣, 7♡, 3♢, 3♠, 9♠)) == 3199 # Sevens and Treys
@test first(evaluate5(7♣, 7♡, 3♢, 3♠, 8♠)) == 3200 # Sevens and Treys
@test first(evaluate5(7♣, 7♡, 3♢, 3♠, 6♠)) == 3201 # Sevens and Treys
@test first(evaluate5(7♣, 7♡, 3♢, 3♠, 5♠)) == 3202 # Sevens and Treys
@test first(evaluate5(7♣, 7♡, 3♢, 3♠, 4♠)) == 3203 # Sevens and Treys
@test first(evaluate5(7♣, 7♡, 3♢, 3♠, 2♠)) == 3204 # Sevens and Treys
@test first(evaluate5(7♣, 7♡, 2♢, 2♠, A♠)) == 3205 # Sevens and Deuces
@test first(evaluate5(7♣, 7♡, 2♢, 2♠, K♠)) == 3206 # Sevens and Deuces
@test first(evaluate5(7♣, 7♡, 2♢, 2♠, Q♠)) == 3207 # Sevens and Deuces
@test first(evaluate5(7♣, 7♡, 2♢, 2♠, J♠)) == 3208 # Sevens and Deuces
@test first(evaluate5(7♣, 7♡, 2♢, 2♠, T♠)) == 3209 # Sevens and Deuces
@test first(evaluate5(7♣, 7♡, 2♢, 2♠, 9♠)) == 3210 # Sevens and Deuces
@test first(evaluate5(7♣, 7♡, 2♢, 2♠, 8♠)) == 3211 # Sevens and Deuces
@test first(evaluate5(7♣, 7♡, 2♢, 2♠, 6♠)) == 3212 # Sevens and Deuces
@test first(evaluate5(7♣, 7♡, 2♢, 2♠, 5♠)) == 3213 # Sevens and Deuces
@test first(evaluate5(7♣, 7♡, 2♢, 2♠, 4♠)) == 3214 # Sevens and Deuces
@test first(evaluate5(7♣, 7♡, 2♢, 2♠, 3♠)) == 3215 # Sevens and Deuces
@test first(evaluate5(6♣, 6♡, 5♢, 5♠, A♠)) == 3216 # Sixes and Fives
@test first(evaluate5(6♣, 6♡, 5♢, 5♠, K♠)) == 3217 # Sixes and Fives
@test first(evaluate5(6♣, 6♡, 5♢, 5♠, Q♠)) == 3218 # Sixes and Fives
@test first(evaluate5(6♣, 6♡, 5♢, 5♠, J♠)) == 3219 # Sixes and Fives
@test first(evaluate5(6♣, 6♡, 5♢, 5♠, T♠)) == 3220 # Sixes and Fives
@test first(evaluate5(6♣, 6♡, 5♢, 5♠, 9♠)) == 3221 # Sixes and Fives
@test first(evaluate5(6♣, 6♡, 5♢, 5♠, 8♠)) == 3222 # Sixes and Fives
@test first(evaluate5(6♣, 6♡, 5♢, 5♠, 7♠)) == 3223 # Sixes and Fives
@test first(evaluate5(6♣, 6♡, 5♢, 5♠, 4♠)) == 3224 # Sixes and Fives
@test first(evaluate5(6♣, 6♡, 5♢, 5♠, 3♠)) == 3225 # Sixes and Fives
@test first(evaluate5(6♣, 6♡, 5♢, 5♠, 2♠)) == 3226 # Sixes and Fives
@test first(evaluate5(6♣, 6♡, 4♢, 4♠, A♠)) == 3227 # Sixes and Fours
@test first(evaluate5(6♣, 6♡, 4♢, 4♠, K♠)) == 3228 # Sixes and Fours
@test first(evaluate5(6♣, 6♡, 4♢, 4♠, Q♠)) == 3229 # Sixes and Fours
@test first(evaluate5(6♣, 6♡, 4♢, 4♠, J♠)) == 3230 # Sixes and Fours
@test first(evaluate5(6♣, 6♡, 4♢, 4♠, T♠)) == 3231 # Sixes and Fours
@test first(evaluate5(6♣, 6♡, 4♢, 4♠, 9♠)) == 3232 # Sixes and Fours
@test first(evaluate5(6♣, 6♡, 4♢, 4♠, 8♠)) == 3233 # Sixes and Fours
@test first(evaluate5(6♣, 6♡, 4♢, 4♠, 7♠)) == 3234 # Sixes and Fours
@test first(evaluate5(6♣, 6♡, 4♢, 4♠, 5♠)) == 3235 # Sixes and Fours
@test first(evaluate5(6♣, 6♡, 4♢, 4♠, 3♠)) == 3236 # Sixes and Fours
@test first(evaluate5(6♣, 6♡, 4♢, 4♠, 2♠)) == 3237 # Sixes and Fours
@test first(evaluate5(6♣, 6♡, 3♢, 3♠, A♠)) == 3238 # Sixes and Treys
@test first(evaluate5(6♣, 6♡, 3♢, 3♠, K♠)) == 3239 # Sixes and Treys
@test first(evaluate5(6♣, 6♡, 3♢, 3♠, Q♠)) == 3240 # Sixes and Treys
@test first(evaluate5(6♣, 6♡, 3♢, 3♠, J♠)) == 3241 # Sixes and Treys
@test first(evaluate5(6♣, 6♡, 3♢, 3♠, T♠)) == 3242 # Sixes and Treys
@test first(evaluate5(6♣, 6♡, 3♢, 3♠, 9♠)) == 3243 # Sixes and Treys
@test first(evaluate5(6♣, 6♡, 3♢, 3♠, 8♠)) == 3244 # Sixes and Treys
@test first(evaluate5(6♣, 6♡, 3♢, 3♠, 7♠)) == 3245 # Sixes and Treys
@test first(evaluate5(6♣, 6♡, 3♢, 3♠, 5♠)) == 3246 # Sixes and Treys
@test first(evaluate5(6♣, 6♡, 3♢, 3♠, 4♠)) == 3247 # Sixes and Treys
@test first(evaluate5(6♣, 6♡, 3♢, 3♠, 2♠)) == 3248 # Sixes and Treys
@test first(evaluate5(6♣, 6♡, 2♢, 2♠, A♠)) == 3249 # Sixes and Deuces
@test first(evaluate5(6♣, 6♡, 2♢, 2♠, K♠)) == 3250 # Sixes and Deuces
@test first(evaluate5(6♣, 6♡, 2♢, 2♠, Q♠)) == 3251 # Sixes and Deuces
@test first(evaluate5(6♣, 6♡, 2♢, 2♠, J♠)) == 3252 # Sixes and Deuces
@test first(evaluate5(6♣, 6♡, 2♢, 2♠, T♠)) == 3253 # Sixes and Deuces
@test first(evaluate5(6♣, 6♡, 2♢, 2♠, 9♠)) == 3254 # Sixes and Deuces
@test first(evaluate5(6♣, 6♡, 2♢, 2♠, 8♠)) == 3255 # Sixes and Deuces
@test first(evaluate5(6♣, 6♡, 2♢, 2♠, 7♠)) == 3256 # Sixes and Deuces
@test first(evaluate5(6♣, 6♡, 2♢, 2♠, 5♠)) == 3257 # Sixes and Deuces
@test first(evaluate5(6♣, 6♡, 2♢, 2♠, 4♠)) == 3258 # Sixes and Deuces
@test first(evaluate5(6♣, 6♡, 2♢, 2♠, 3♠)) == 3259 # Sixes and Deuces
@test first(evaluate5(5♣, 5♡, 4♢, 4♠, A♠)) == 3260 # Fives and Fours
@test first(evaluate5(5♣, 5♡, 4♢, 4♠, K♠)) == 3261 # Fives and Fours
@test first(evaluate5(5♣, 5♡, 4♢, 4♠, Q♠)) == 3262 # Fives and Fours
@test first(evaluate5(5♣, 5♡, 4♢, 4♠, J♠)) == 3263 # Fives and Fours
@test first(evaluate5(5♣, 5♡, 4♢, 4♠, T♠)) == 3264 # Fives and Fours
@test first(evaluate5(5♣, 5♡, 4♢, 4♠, 9♠)) == 3265 # Fives and Fours
@test first(evaluate5(5♣, 5♡, 4♢, 4♠, 8♠)) == 3266 # Fives and Fours
@test first(evaluate5(5♣, 5♡, 4♢, 4♠, 7♠)) == 3267 # Fives and Fours
@test first(evaluate5(5♣, 5♡, 4♢, 4♠, 6♠)) == 3268 # Fives and Fours
@test first(evaluate5(5♣, 5♡, 4♢, 4♠, 3♠)) == 3269 # Fives and Fours
@test first(evaluate5(5♣, 5♡, 4♢, 4♠, 2♠)) == 3270 # Fives and Fours
@test first(evaluate5(5♣, 5♡, 3♢, 3♠, A♠)) == 3271 # Fives and Treys
@test first(evaluate5(5♣, 5♡, 3♢, 3♠, K♠)) == 3272 # Fives and Treys
@test first(evaluate5(5♣, 5♡, 3♢, 3♠, Q♠)) == 3273 # Fives and Treys
@test first(evaluate5(5♣, 5♡, 3♢, 3♠, J♠)) == 3274 # Fives and Treys
@test first(evaluate5(5♣, 5♡, 3♢, 3♠, T♠)) == 3275 # Fives and Treys
@test first(evaluate5(5♣, 5♡, 3♢, 3♠, 9♠)) == 3276 # Fives and Treys
@test first(evaluate5(5♣, 5♡, 3♢, 3♠, 8♠)) == 3277 # Fives and Treys
@test first(evaluate5(5♣, 5♡, 3♢, 3♠, 7♠)) == 3278 # Fives and Treys
@test first(evaluate5(5♣, 5♡, 3♢, 3♠, 6♠)) == 3279 # Fives and Treys
@test first(evaluate5(5♣, 5♡, 3♢, 3♠, 4♠)) == 3280 # Fives and Treys
@test first(evaluate5(5♣, 5♡, 3♢, 3♠, 2♠)) == 3281 # Fives and Treys
@test first(evaluate5(5♣, 5♡, 2♢, 2♠, A♠)) == 3282 # Fives and Deuces
@test first(evaluate5(5♣, 5♡, 2♢, 2♠, K♠)) == 3283 # Fives and Deuces
@test first(evaluate5(5♣, 5♡, 2♢, 2♠, Q♠)) == 3284 # Fives and Deuces
@test first(evaluate5(5♣, 5♡, 2♢, 2♠, J♠)) == 3285 # Fives and Deuces
@test first(evaluate5(5♣, 5♡, 2♢, 2♠, T♠)) == 3286 # Fives and Deuces
@test first(evaluate5(5♣, 5♡, 2♢, 2♠, 9♠)) == 3287 # Fives and Deuces
@test first(evaluate5(5♣, 5♡, 2♢, 2♠, 8♠)) == 3288 # Fives and Deuces
@test first(evaluate5(5♣, 5♡, 2♢, 2♠, 7♠)) == 3289 # Fives and Deuces
@test first(evaluate5(5♣, 5♡, 2♢, 2♠, 6♠)) == 3290 # Fives and Deuces
@test first(evaluate5(5♣, 5♡, 2♢, 2♠, 4♠)) == 3291 # Fives and Deuces
@test first(evaluate5(5♣, 5♡, 2♢, 2♠, 3♠)) == 3292 # Fives and Deuces
@test first(evaluate5(4♣, 4♡, 3♢, 3♠, A♠)) == 3293 # Fours and Treys
@test first(evaluate5(4♣, 4♡, 3♢, 3♠, K♠)) == 3294 # Fours and Treys
@test first(evaluate5(4♣, 4♡, 3♢, 3♠, Q♠)) == 3295 # Fours and Treys
@test first(evaluate5(4♣, 4♡, 3♢, 3♠, J♠)) == 3296 # Fours and Treys
@test first(evaluate5(4♣, 4♡, 3♢, 3♠, T♠)) == 3297 # Fours and Treys
@test first(evaluate5(4♣, 4♡, 3♢, 3♠, 9♠)) == 3298 # Fours and Treys
@test first(evaluate5(4♣, 4♡, 3♢, 3♠, 8♠)) == 3299 # Fours and Treys
@test first(evaluate5(4♣, 4♡, 3♢, 3♠, 7♠)) == 3300 # Fours and Treys
@test first(evaluate5(4♣, 4♡, 3♢, 3♠, 6♠)) == 3301 # Fours and Treys
@test first(evaluate5(4♣, 4♡, 3♢, 3♠, 5♠)) == 3302 # Fours and Treys
@test first(evaluate5(4♣, 4♡, 3♢, 3♠, 2♠)) == 3303 # Fours and Treys
@test first(evaluate5(4♣, 4♡, 2♢, 2♠, A♠)) == 3304 # Fours and Deuces
@test first(evaluate5(4♣, 4♡, 2♢, 2♠, K♠)) == 3305 # Fours and Deuces
@test first(evaluate5(4♣, 4♡, 2♢, 2♠, Q♠)) == 3306 # Fours and Deuces
@test first(evaluate5(4♣, 4♡, 2♢, 2♠, J♠)) == 3307 # Fours and Deuces
@test first(evaluate5(4♣, 4♡, 2♢, 2♠, T♠)) == 3308 # Fours and Deuces
@test first(evaluate5(4♣, 4♡, 2♢, 2♠, 9♠)) == 3309 # Fours and Deuces
@test first(evaluate5(4♣, 4♡, 2♢, 2♠, 8♠)) == 3310 # Fours and Deuces
@test first(evaluate5(4♣, 4♡, 2♢, 2♠, 7♠)) == 3311 # Fours and Deuces
@test first(evaluate5(4♣, 4♡, 2♢, 2♠, 6♠)) == 3312 # Fours and Deuces
@test first(evaluate5(4♣, 4♡, 2♢, 2♠, 5♠)) == 3313 # Fours and Deuces
@test first(evaluate5(4♣, 4♡, 2♢, 2♠, 3♠)) == 3314 # Fours and Deuces
@test first(evaluate5(3♣, 3♡, 2♢, 2♠, A♠)) == 3315 # Treys and Deuces
@test first(evaluate5(3♣, 3♡, 2♢, 2♠, K♠)) == 3316 # Treys and Deuces
@test first(evaluate5(3♣, 3♡, 2♢, 2♠, Q♠)) == 3317 # Treys and Deuces
@test first(evaluate5(3♣, 3♡, 2♢, 2♠, J♠)) == 3318 # Treys and Deuces
@test first(evaluate5(3♣, 3♡, 2♢, 2♠, T♠)) == 3319 # Treys and Deuces
@test first(evaluate5(3♣, 3♡, 2♢, 2♠, 9♠)) == 3320 # Treys and Deuces
@test first(evaluate5(3♣, 3♡, 2♢, 2♠, 8♠)) == 3321 # Treys and Deuces
@test first(evaluate5(3♣, 3♡, 2♢, 2♠, 7♠)) == 3322 # Treys and Deuces
@test first(evaluate5(3♣, 3♡, 2♢, 2♠, 6♠)) == 3323 # Treys and Deuces
@test first(evaluate5(3♣, 3♡, 2♢, 2♠, 5♠)) == 3324 # Treys and Deuces
@test first(evaluate5(3♣, 3♡, 2♢, 2♠, 4♠)) == 3325 # Treys and Deuces


text:
module TestRoutes

using Phylo
using Test

@testset "Routes" begin
    @testset "For $TreeType" for TreeType in
        [NamedTree, NamedBinaryTree,
         RootedTree, ManyRootTree]
        species = ["Dog", "Cat", "Human", "Potato"]
        tree = TreeType(species)
        nr = createnode!(tree)
        n2 = createnode!(tree)
        createbranch!(tree, nr, n2)
        n3 = createnode!(tree)
        createbranch!(tree, n2, n3)
        nh = nodehistory(tree, n2)
        @test nr ∈ nh
        @test Set(nh) == Set(push!(getancestors(tree, n2), n2))
        @test nr ≠ getparent(tree, n3)
        @test n2 == getparent(tree, n3)
        @test nr ∉ getdescendants(tree, nr)
        @test n3 ∈ getdescendants(tree, nr)
        @test n3 ∉ getchildren(tree, nr)
        @test Set([nr, n2, n3]) == Set(nodehistory(tree, n3))
        br = getbranch(tree, createbranch!(tree, n3, "Dog"))
        @test br ∈ branchhistory(tree, "Dog")
        br2 = getbranch(tree, createbranch!(tree, n3, "Cat"))
        @test [br2, br] == branchroute(tree, "Cat", "Dog")
        br3 = createbranch!(tree, n2, "Human")
        @test getbranchname(tree, createbranch!(tree, nr, "Potato",
                                                name = 551)) == 551
        @test 551 ∈ getbranchname.(tree, branchroute(tree, "Dog", "Potato"))
        deletebranch!(tree, 551)
        createbranch!(tree, nr, "Potato")
        @test Set(species) ⊆ Set(getnodename.(tree, getdescendants(tree, nr)))
        @test validate!(tree)
        root = getroot(tree)
        @test Set(getdescendants(tree, getchildren(tree, root)[1])) ⊆
            Set(getdescendants(tree, root)) ⊆ Set(traversal(tree))
        @test Set(getdescendants(tree,
                                 getchildren(tree,
                                             getnodename(tree, root))[1])) ⊆
              Set(getdescendants(tree, getnodename(tree, root))) ⊆
              Set(getnodename.(tree, traversal(tree)))
        @test length(traversal(tree)) == nnodes(tree)
        @test length(getdescendants(tree, root)) ==
            length(branchfuture(tree, root))
        nn = first(nodenamefilter(isleaf, tree))
        @test length(branchhistory(tree, nn)) == length(getancestors(tree, nn))
        @test Set(getancestors(tree, nn)) ⊆ Set(nodehistory(tree, nn))
        n = first(nodefilter(isleaf, tree))
        @test length(branchhistory(tree, n)) == length(getancestors(tree, n))
        @test Set(getancestors(tree, n)) ⊆ Set(nodehistory(tree, n))
        @test Set(traversal(tree, anyorder)) ==
            Set(traversal(tree, preorder)) ==
            Set(traversal(tree, inorder)) ==
            Set(traversal(tree, postorder)) ==
            Set(traversal(tree, breadthfirst))
    end
end

end

ext: jl


text:
using ApproxFunSingularities, ApproxFunOrthogonalPolynomials, ApproxFunBase, IntervalSets, Random, LinearAlgebra, Test
    import ApproxFunBase: testfunctional, testbandedbelowoperator, testbandedoperator

@testset "Integral equations" begin
    @time for S in (JacobiWeight(-0.5,-0.5,Chebyshev()),
                JacobiWeight(-0.5,-0.5,Chebyshev(Segment(1.0,2.0+im))),
                JacobiWeight(0.5,0.5,Ultraspherical(1,Segment(1.0,2.0+im))))
        testfunctional(DefiniteLineIntegral(S))
    end

    @testset "three segment bug" begin
        dom = Segment(-1.0,1) ∪ Segment(1.0+im,1+2im) ∪ Segment(-2.0+im,-1+2im)

        ⨍ = DefiniteLineIntegral(dom)
        S = domainspace(⨍)
        @test ApproxFunBase.blockbandwidths(⨍) == (0,0)

        f = Fun(S,rand(20))

        @test DefiniteLineIntegral(component(dom,1))*component(f,1) ≈ linesum(component(f,1))
        @test DefiniteLineIntegral(component(dom,2))*component(f,2) ≈ linesum(component(f,2))
        @test DefiniteLineIntegral(component(dom,3))*component(f,3) ≈ linesum(component(f,3))

        @test ⨍*f ≈ linesum(f)
    end

    @testset "integral equation" begin
        #The first test checks the solution of the integral equation
        # u(x) + \int_{-1}^{+1} \frac{e^{y} u(y)}{\sqrt{1-y^2}} dy = f
        # on the interval -1..1.

        x = Fun(identity)
        w = 1/sqrt(1-x^2)
        d = domain(x)

        Σ = DefiniteIntegral(d)
        @test bandwidths(Σ) == (0,0)

        @test domainspace(Σ) ==
            JacobiWeight{Chebyshev{ChebyshevInterval{Float64}},ChebyshevInterval{Float64},Float64,Float64}(-0.5,-0.5,Chebyshev())

        L = I+Σ[exp(x)*w]
        testbandedoperator(L)
        usol = sin(2x)
        f = L*usol

        @time u = L\f
        @test norm(u-usol) <= 10eps()
    end

    @testset "integro-differential equation" begin
        #The second test checks the solution of the integro-differential equation
        # u'(x) + x u(x) + \int_{-2}^{+2} sin(y-x) u(y) \sqrt{4-y^2} dy = f
        # on the interval -2..2, with u(-2) = 1.

        x = Fun(identity,-2..2)
        w = sqrt(4-x^2)
        d = domain(x)

        D = Derivative(d)
        B = ldirichlet(d)
        Σ = DefiniteIntegral(.5,.5,d)

        @test domainspace(Σ) ==
            JacobiWeight{Ultraspherical{Int,ClosedInterval{Int},Float64},ClosedInterval{Float64},Float64,Float64}(.5,.5,Ultraspherical(1,d))

        K = LowRankFun((x,y)->sin(y-x)*w(y),Ultraspherical(1,d),domainspace(Σ))

        L = D+x+Σ[K]
        usol = cospi(20x)
        f = L*usol
        @time u = [B;L]\[1.;f]

        @test norm(u-usol) ≤ 200eps()
    end

    @testset "arcs" begin
        d = exp(im*Segment(0.1,0.2))
        x = Fun(d)
        @time w=1/(sqrt(abs(leftendpoint(d)-x))*sqrt(abs(rightendpoint(d)-x)))

        @test linesum(w) ≈ DefiniteLineIntegral()*w
    end

    @testset "Volterra integral equation" begin
        d = 0.0..1.0
        V = Volterra(d)
        K = LowRankFun((x,y)->sin(y-x),d^2)
        L = I-V[K]
        # broken due to gbmv inconsistency
        # testbandedoperator(L)
        f = Fun(exp,d)
        @test domainspace(L) == Legendre(d)
        @test rangespace(L) == Legendre(d)
        @test bandrange(V) == -1:0
        @time u = L\f
        @test norm(L*u-f) ≤ 20eps()
    end

    @testset "DefiniteIntegral" begin
        @time for S in (JacobiWeight(0.5,0.5,Ultraspherical(1,Segment(-2,-1))),
                  JacobiWeight(0.5,0.5,Ultraspherical(1,Segment(-2,-1+2im))),
                  JacobiWeight(1.5,1.5,Ultraspherical(2,Segment(-2,-1+2im))),
                  JacobiWeight(-0.5,-0.5,Chebyshev(Segment(-2,-1+2im))),
                  JacobiWeight(0.67,0.123,Chebyshev(Segment(-2,-1+2im))),
                  JacobiWeight(0.67,0.123,Ultraspherical(1,Segment(-2,-1+2im))))
            f=Fun(S,[1.,2.,3.])
            @test DefiniteIntegral(space(f))*f ≈ sum(f)
            @test DefiniteLineIntegral(space(f))*f ≈ linesum(f)
        end
    end

    @testset "Fredholm integral" begin
        K=LowRankFun((x,y)->cos(x-y),ChebyshevInterval()^2)
        Σ=DefiniteIntegral(Chebyshev())
        testbandedbelowoperator(Σ[K])

        Σ = DefiniteIntegral(Chebyshev()); x=Fun();
        L=I+exp(x)*Σ[cos(x)]
        testbandedbelowoperator(L)
    end

    @testset "union domain" begin
        dom = ApproxFunBase.UnionDomain(0..1, 2..3)
        ⨍ = DefiniteLineIntegral(union(JacobiWeight.(-0.5,-0.5,ChebyshevDirichlet{1,1}.(components(dom)))...))

        x = Fun(dom)
        f = exp(x)/(sqrt(x*abs(1-x))*sqrt(abs(2-x)*abs(3-x)))
        @test sum(f) ≈ Number(⨍*f)
    end
end


text:
# Atomic weights taken from:

# Atomic weights of the elements 2013 (IUPAC Technical  Report)
# http://doi.org/10.1515/pac-2015-0305

# The "Conventional" weights are used where a range is provided, shown in comments.

# hydrogen 1
@mol H 1.008 # [1.0078, 1.0082]
# helium 2
@mol He 4.0026
# lithium 3
@mol Li 6.94 # [6.938, 6.997]
# beryllium 4
@mol Be 9.0122
# boron 5
@mol B 10.81 # [10.806, 10.821]
# carbon 6
@mol C 12.011 # [12.009, 12.012]
# nitrogen 7
@mol N 14.007 # [14.006, 14.008]
# oxygen 8
@mol O 15.999 # [15.999, 16.000]
# fluorine 9
@mol F 18.998
# neon 10
@mol Ne 20.180
# sodium 11
@mol Na 22.990
# magnesium 12
@mol Mg 24.305 # [24.304, 24.307]
# aluminium (aluminum) 13
@mol Al 26.982
# silicon 14
@mol Si 28.085 # [28.084, 28.086]
# phosphorus 15
@mol P 30.974
# sulfur 16
@mol S 32.06 # [32.059, 32.076]
# chlorine 17
@mol Cl 35.45 # [35.446, 35.457]
# argon 18
@mol Ar 39.948
# potassium 19
@mol K 39.098
# calcium 20
@mol Ca 40.078 # (4)
# scandium 21
@mol Sc 44.956
# titanium 22
@mol Ti 47.867
# vanadium 23
@mol V 50.942
# chromium 24
@mol Cr 51.996
# manganese 25
@mol Mn 54.938
# iron 26
@mol Fe 55.845 # (2)
# cobalt 27
@mol Co 58.933
# nickel 28
@mol Ni 58.693
# copper 29
@mol Cu 63.546 # (3)
# zinc 30
@mol Zn 65.38 # (2)
# gallium 31
@mol Ga 69.723
# germanium 32
@mol Ge 72.630 # (8)
# arsenic 33
@mol As 74.922
# selenium 34
@mol Se 78.971 # (8)
# bromine 35
@mol Br 79.904 # [79.901, 79.907]
# krypton 36
@mol Kr 83.798 # (2)
# rubidium 37
@mol Rb 85.468
# strontium 38
@mol Sr 87.62
# yttrium 39
@mol Y 88.906
# zirconium 40
@mol Zr 91.224 # (2)
# niobium 41
@mol Nb 92.906
# molybdenum 42
@mol Mo 95.95
# technetium* 43
# @mol Tc –
# ruthenium 44
@mol Ru 101.07 # (2)
# rhodium 45
@mol Rh 102.91
# palladium 46
@mol Pd 106.42
# silver 47
@mol Ag 107.87
# cadmium 48
@mol Cd 112.41
# indium 49
@mol In 114.82
# tin 50
@mol Sn 118.71
# antimony 51
@mol Sb 121.76
# tellurium 52
@mol Te 127.60 # (3)
# iodine 53
@mol I 126.90
# xenon 54
@mol Xe 131.29
# caesium (cesium) 55
@mol Cs 132.91
# barium 56
@mol Ba 137.33
# lanthanum 57
@mol La 138.91
# cerium 58
@mol Ce 140.12
# praseodymium 59
@mol Pr 140.91
# neodymium 60
@mol Nd 144.24
# promethium* 61
# @mol Pm –
# samarium 62
@mol Sm 150.36 # (2)
# europium 63
@mol Eu 151.96
# gadolinium 64
@mol Gd 157.25 # (3)
# terbium 65
@mol Tb 158.93
# dysprosium 66
@mol Dy 162.50
# holmium 67
@mol Ho 164.93
# erbium 68
@mol Er 167.26
# thulium 69
@mol Tm 168.93
# ytterbium 70
@mol Yb 173.05
# lutetium 71
@mol Lu 174.97
# hafnium 72
@mol Hf 178.49 # (2)
# tantalum 73
@mol Ta 180.95
# tungsten 74
@mol W 183.84
# rhenium 75
@mol Re 186.21
# osmium 76
@mol Os 190.23 # (3)
# iridium 77
@mol Ir 192.22
# platinum 78
@mol Pt 195.08
# gold 79
@mol Au 196.97
# mercury 80
@mol Hg 200.59
# thallium 81
@mol Tl 204.38 # [204.38, 204.39]
# lead 82
@mol Pb 207.2
# bismuth* 83
@mol Bi 208.98


text:
using YAActL, Distributed
length(procs()) == 1 && addprocs(1)

@everywhere using YAActL
@everywhere function ident(id, from)
    id == from ?
        ("local actor",  id, from) :
        ("remote actor", id, from)
end

register(:act1, Actor(ident, 1))       # a registered local actor
call!(:act1, myid())                   # call! it
register(:act2, Actor(2, ident, 2))    # a registered remote actor on pid 2
call!(:act2, myid())                   # call! it
fetch(@spawnat 2 call!(:act1, myid())) # call! :act1 on pid 2
fetch(@spawnat 2 call!(:act2, myid())) # call! :act2 on pid 2
whereis(:act1)                         # get a link to :act1
whereis(:act2)                         # get a link to :act2
fetch(@spawnat 2 whereis(:act1))       # get a link to :act1 on pid 2
registered()                           # get a list of registered actors
fetch(@spawnat 2 registered())         # get it on pid 2
unregister(:act1)
unregister(:act2)


text:
"""
Two electron integrals
"""

function coulomb(aexpn::Float64,ax::Float64,ay::Float64,az::Float64,
         aI::Int64,aJ::Int64,aK::Int64,
         bexpn::Float64,bx::Float64,by::Float64,bz::Float64,
         bI::Int64,bJ::Int64,bK::Int64,
         cexpn::Float64,cx::Float64,cy::Float64,cz::Float64,
         cI::Int64,cJ::Int64,cK::Int64,
         dexpn::Float64,dx::Float64,dy::Float64,dz::Float64,
         dI::Int64,dJ::Int64,dK::Int64)
  # This is the slow method of computing integrals from Huzinaga et al.
  # Use the HRR/VRR scheme from Head-Gordon & Pople instead

  rab2 = dist2(ax-bx,ay-by,az-bz)
  rcd2 = dist2(cx-dx,cy-dy,cz-dz)

  px,py,pz = gaussian_product_center(aexpn,ax,ay,az,bexpn,bx,by,bz)
  qx,qy,qz = gaussian_product_center(cexpn,cx,cy,cz,dexpn,dx,dy,dz)
  rpq2 = dist2(px-qx,py-qy,pz-qz)

  g1 = aexpn+bexpn
  g2 = cexpn+dexpn
  delta = 0.25*(1/g1+1/g2)

  Bx = Barray(aI,bI,cI,dI,px,ax,bx,qx,cx,dx,g1,g2,delta)
  By = Barray(aJ,bJ,cJ,dJ,py,ay,by,qy,cy,dy,g1,g2,delta)
  Bz = Barray(aK,bK,cK,dK,pz,az,bz,qz,cz,dz,g1,g2,delta)

  s = 0
  #println("$(aI+bI+cI+dI),$(aJ+bJ+cJ+dJ),$(aK+bK+cK+dK)")
  for I in 0:(aI+bI+cI+dI)
    for J in 0:(aJ+bJ+cJ+dJ)
      for K in 0:(aK+bK+cK+dK)
        #println("coul: $I,$J,$K,$(Bx[I+1]),$(By[J+1]),$(Bz[K+1])")
        s += Bx[I+1]*By[J+1]*Bz[K+1]*Fgamma(I+J+K,0.25*rpq2/delta)
      end
    end
  end
  return 2pi^(2.5)/(g1*g2*sqrt(g1+g2))*exp(-aexpn*bexpn*rab2/g1)*exp(-cexpn*dexpn*rcd2/g2)*s
end

function coulomb(a::PGBF,b::PGBF,c::PGBF,d::PGBF)
  return a.norm*b.norm*c.norm*d.norm*coulomb(a.expn,a.x,a.y,a.z,a.I,a.J,a.K,
    b.expn,b.x,b.y,b.z,b.I,b.J,b.K,
    c.expn,c.x,c.y,c.z,c.I,c.J,c.K,
    d.expn,d.x,d.y,d.z,d.I,d.J,d.K)
end

fB(i::Int64,l1::Int64,l2::Int64,p::Float64,a::Float64,b::Float64,r::Int64,g::Float64) = binomial_prefactor(i,l1,l2,p-a,p-b)*B0(i,r,g)
B0(i::Int64,r::Int64,g::Float64) = fact_ratio2(i,r)*(4g)^(r-i)
fact_ratio2(a::Int64,b::Int64) = factorial(a,b)/factorial(a-2b)

function Bterm(i1::Int64,i2::Int64,r1::Int64,r2::Int64,u::Int64,
         l1::Int64,l2::Int64,l3::Int64,l4::Int64,
         Px::Float64,Ax::Float64,Bx::Float64,Qx::Float64,Cx::Float64,Dx::Float64,
         gamma1::Float64,gamma2::Float64,delta::Float64)
  # THO eq. 2.22
  #print("Bterm($i1,$i2,$r1,$r2,$u,$l1,$l2,$l3,$l4,$Px,$Ax,$Bx,$Qx,$Cx,$Dx,$gamma1,$gamma2,$delta)=")
  val = (-1)^(i2+u)*fB(i1,l1,l2,Px,Ax,Bx,r1,gamma1)*fB(i2,l3,l4,Qx,Cx,Dx,r2,gamma2)*(
      fact_ratio2(i1+i2-2*(r1+r2),u)*(Qx-Px)^(i1+i2-2*(r1+r2)-2*u)/delta^(i1+i2-2*(r1+r2)-u))
  #println("$val")
  return val
end

function Barray(l1::Int64,l2::Int64,l3::Int64,l4::Int64,p::Float64,a::Float64,b::Float64,
        q::Float64,c::Float64,d::Float64,g1::Float64,g2::Float64,delta::Float64)
  Imax = l1+l2+l3+l4+1
  B = zeros(Float64,Imax)
  for i1 in 0:(l1+l2)
    for i2 in 0:(l3+l4)
      for r1 in 0:div(i1,2)
        for r2 in 0:div(i2,2)
          for u in 0:(div(i1+i2,2)-r1-r2)
            I = i1+i2-2*(r1+r2)-u
            B[I+1] += Bterm(i1,i2,r1,r2,u,l1,l2,l3,l4,p,a,b,q,c,d,g1,g2,delta)
          end
        end
      end
    end
  end
  return B
end

coulomb(a::CGBF,b::CGBF,c::CGBF,d::CGBF) = contract(coulomb,a,b,c,d)

function test_two_terms()
  @printf("Calling test_two_terms\n")
  @assert fB(0,0,0,0.0,0.0,0.0,0,2.0) == 1
  @assert fB(0,0,0,1.0,1.0,1.0,0,2.0) == 1
  @assert fB(0,0,0,0.0,0.0,0.0,0,2.0 ) == 1
  @assert fB(1,0,1,0.0,0.0,0.0,0,2.0 ) == 0.125
  @assert B0(0,0,2.0) == 1
  @assert fact_ratio2(0,0) == 1
  @assert Bterm(0,0,0,0,0,0,0,0,0,0.0,0.0,0.0,0.0,0.0,0.0,2.0,2.0,0.25)==1
  @assert Bterm(0,1,0,0,0,0,0,0,1,0.0,0.0,0.0,0.0,0.0,0.0,2.0,2.0,0.25)==0

  @printf("Pass test_two_terms\n")
end

function test_coul1()
  @printf("Calling test_coul1\n")
  s = pgbf(1.0)
  px = pgbf(1.0,0,0,0,1,0,0)
  @assert coulomb(s,s,s,px)==0 # 0
  @assert isapprox(coulomb(s,s,px,px), 0.9403159725793305 )
  @printf("Pass test_coul1\n")
end

function coulomb_hgp(a::PGBF,b::PGBF,c::PGBF,d::PGBF)
  return a.norm*b.norm*c.norm*d.norm*hrr(a.expn,a.x,a.y,a.z,a.I,a.J,a.K,
    b.expn,b.x,b.y,b.z,b.I,b.J,b.K,
    c.expn,c.x,c.y,c.z,c.I,c.J,c.K,
    d.expn,d.x,d.y,d.z,d.I,d.J,d.K)
end
coulomb_hgp(a::CGBF,b::CGBF,c::CGBF,d::CGBF) = contract(coulomb_hgp,a,b,c,d)

function hrr(aexpn::Float64,ax::Float64,ay::Float64,az::Float64,aI::Int64,aJ::Int64,aK::Int64,
  bexpn::Float64,bx::Float64,by::Float64,bz::Float64,bI::Int64,bJ::Int64,bK::Int64,
  cexpn::Float64,cx::Float64,cy::Float64,cz::Float64,cI::Int64,cJ::Int64,cK::Int64,
  dexpn::Float64,dx::Float64,dy::Float64,dz::Float64,dI::Int64,dJ::Int64,dK::Int64)
  if bI > 0
    return hrr(aexpn,ax,ay,az,aI+1,aJ,aK,bexpn,bx,by,bz,bI-1,bJ,bK,
      cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,dI,dJ,dK) +
    (ax-bx)*hrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,bI-1,bJ,bK,
        cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,dI,dJ,dK)
  elseif bJ > 0
    return hrr(aexpn,ax,ay,az,aI,aJ+1,aK,bexpn,bx,by,bz,bI,bJ-1,bK,
      cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,dI,dJ,dK) +
      (ay-by)*hrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,bI,bJ-1,bK,
        cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,dI,dJ,dK)
  elseif bK > 0
    return hrr(aexpn,ax,ay,az,aI,aJ,aK+1,bexpn,bx,by,bz,bI,bJ,bK-1,
      cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,dI,dJ,dK) +
      (az-bz)*hrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,bI,bJ,bK-1,
        cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,dI,dJ,dK)
  elseif dI > 0
    return hrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,bI,bJ,bK,
      cexpn,cx,cy,cz,cI+1,cJ,cK,dexpn,dx,dy,dz,dI-1,dJ,dK) +
      (cx-dx)*hrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,bI,bJ,bK,
        cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,dI-1,dJ,dK)
  elseif dJ > 0
    return hrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,bI,bJ,bK,
      cexpn,cx,cy,cz,cI,cJ+1,cK,dexpn,dx,dy,dz,dI,dJ-1,dK) +
      (cy-dy)*hrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,bI,bJ,bK,
        cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,dI,dJ-1,dK)
  elseif dK > 0
    return hrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,bI,bJ,bK,
      cexpn,cx,cy,cz,cI,cJ,cK+1,dexpn,dx,dy,dz,dI,dJ,dK-1) +
      (cz-dz)*hrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,bI,bJ,bK,
        cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,dI,dJ,dK-1)
  end
  return vrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,0)
end

function vrr(aexpn::Float64,ax::Float64,ay::Float64,az::Float64,aI::Int64,aJ::Int64,aK::Int64,
    bexpn::Float64,bx::Float64,by::Float64,bz::Float64,
    cexpn::Float64,cx::Float64,cy::Float64,cz::Float64,cI::Int64,cJ::Int64,cK::Int64,
    dexpn::Float64,dx::Float64,dy::Float64,dz::Float64,m::Int64)
  px,py,pz = gaussian_product_center(aexpn,ax,ay,az,bexpn,bx,by,bz)
  qx,qy,qz = gaussian_product_center(cexpn,cx,cy,cz,dexpn,dx,dy,dz)
  zeta,eta = aexpn+bexpn,cexpn+dexpn
  wx,wy,wz = gaussian_product_center(zeta,px,py,pz,eta,qx,qy,qz)
  #println("P: $px,$py,$pz, Q: $qx,$qy,$qz, W: $wx,$wy,$wz, $zeta,$eta")

  val = 0
  if cK>0
    val = (qz-cz)*vrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,
      cexpn,cx,cy,cz,cI,cJ,cK-1,dexpn,dx,dy,dz,m) +
      (wz-qz)*vrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI,cJ,cK-1,dexpn,dx,dy,dz,m+1)
    #println("val1=$val")
    if cK>1
      val += 0.5*(cK-1)/eta*(
        vrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,
          cexpn,cx,cy,cz,cI,cJ,cK-2,dexpn,dx,dy,dz,m) -
      zeta/(zeta+eta)*
        vrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,
          cexpn,cx,cy,cz,cI,cJ,cK-2,dexpn,dx,dy,dz,m+1) )
    #println("val2=$val")
    end
    if aK>0
      val += 0.5*aK/(zeta+eta)*
        vrr(aexpn,ax,ay,az,aI,aJ,aK-1,bexpn,bx,by,bz,
          cexpn,cx,cy,cz,cI,cJ,cK-1,dexpn,dx,dy,dz,m+1)
    end
    #println("val3=$val")
    return val
  elseif cJ>0
    val = (qy-cy)*vrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,
      cexpn,cx,cy,cz,cI,cJ-1,cK,dexpn,dx,dy,dz,m) +
    (wy-qy)*vrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI,cJ-1,cK-1,dexpn,dx,dy,dz,m+1)
    #println("val4=$val")
    if cJ>1
      val += 0.5*(cJ-1)/eta*(
      vrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI,cJ-2,cK,dexpn,dx,dy,dz,m) -
      zeta/(zeta+eta)*
      vrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI,cJ-2,cK,dexpn,dx,dy,dz,m+1)
      )
    #println("val5=$val")
    end
    if aJ>0
      val += 0.5*aJ/(zeta+eta)*
      vrr(aexpn,ax,ay,az,aI,aJ-1,aK,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI,cJ-1,cK,dexpn,dx,dy,dz,m+1)
    end
    #println("val6=$val")
    return val
  elseif cI>0
    val = (qx-cx)*vrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,
      cexpn,cx,cy,cz,cI-1,cJ,cK,dexpn,dx,dy,dz,m) +
    (wx-qx)*vrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI-1,cJ,cK-1,dexpn,dx,dy,dz,m+1)
    #println("val7=$val")
    if cI>1
      val += 0.5*(cI-1)/eta*(
      vrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI-2,cJ,cK,dexpn,dx,dy,dz,m) -
      zeta/(zeta+eta)*
      vrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI-2,cJ,cK,dexpn,dx,dy,dz,m+1)
      )
    end
    #println("val8=$val")
    if aI>0
      val += 0.5*aI/(zeta+eta)*
      vrr(aexpn,ax,ay,az,aI-1,aJ,aK,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI-1,cJ,cK,dexpn,dx,dy,dz,m+1)
    end
    #println("val9=$val")
    return val
  elseif aK>0
    val = (pz-az)*vrr(aexpn,ax,ay,az,aI,aJ,aK-1,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,m) +
    (wz-pz)*vrr(aexpn,ax,ay,az,aI,aJ,aK-1,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,m+1)
    #println("val10=$val")
    if aK>1
      val += 0.5*(aK-1)/zeta*(
      vrr(aexpn,ax,ay,az,aI,aJ,aK-2,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI-1,cJ,cK,dexpn,dx,dy,dz,m) -
      eta/(zeta+eta)*
      vrr(aexpn,ax,ay,az,aI,aJ,aK-2,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI-1,cJ,cK,dexpn,dx,dy,dz,m+1)
      )
    end
    #println("val11=$val")
    return val
  elseif aJ>0
    val = (py-ay)*vrr(aexpn,ax,ay,az,aI,aJ-1,aK,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,m)+
    (wy-py)*vrr(aexpn,ax,ay,az,aI,aJ-1,aK,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,m+1)
    #println("val12=$val")
    if aJ>1
      val += 0.5*(aJ-1)/zeta*(
      vrr(aexpn,ax,ay,az,aI,aJ-2,aK,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,m) -
      eta/(zeta+eta)*
      vrr(aexpn,ax,ay,az,aI,aJ-2,aK,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,m+1)
      )
    end
    #println("val13=$val")
    return val
  elseif aI>0
    val = (px-ax)*vrr(aexpn,ax,ay,az,aI-1,aJ,aK,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,m) +
    (wx-px)*vrr(aexpn,ax,ay,az,aI-1,aJ,aK,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,m+1)
    #println("val14=$val")
    if aI>1
      val += 0.5*(aI-1)/zeta*(
      vrr(aexpn,ax,ay,az,aI-2,aJ,aK,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,m) -
      eta/(zeta+eta)*
      vrr(aexpn,ax,ay,az,aI-2,aJ,aK,bexpn,bx,by,bz,
        cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,m+1)
      )
    end
    #println("val15=$val")
    return val
  end

  rab2 = dist2(ax-bx,ay-by,az-bz)
  rcd2 = dist2(cx-dx,cy-dy,cz-dz)
  rpq2 = dist2(px-qx,py-qy,pz-qz)
  T = zeta*eta/(zeta+eta)*rpq2
  Kab = sqrt(2)pi^1.25/zeta*exp(-aexpn*bexpn*rab2/zeta)
  Kcd = sqrt(2)pi^1.25/eta*exp(-cexpn*dexpn*rcd2/eta)
  #println("rab2=$rab2,rcd2=$rcd2,rpq2=$rpq2,T=$T,Kab=$Kab,Kcd=$Kcd")
  return Kab*Kcd/sqrt(zeta+eta)*Fgamma(m,T)
end

function vrr_iter(aexpn::Float64,ax::Float64,ay::Float64,az::Float64,aI::Int64,aJ::Int64,aK::Int64,
    bexpn::Float64,bx::Float64,by::Float64,bz::Float64,
    cexpn::Float64,cx::Float64,cy::Float64,cz::Float64,cI::Int64,cJ::Int64,cK::Int64,
    dexpn::Float64,dx::Float64,dy::Float64,dz::Float64,M::Int64)
  px,py,pz = gaussian_product_center(aexpn,ax,ay,az,bexpn,bx,by,bz)
  qx,qy,qz = gaussian_product_center(cexpn,cx,cy,cz,dexpn,dx,dy,dz)
  zeta,eta = aexpn+bexpn,cexpn+dexpn
  wx,wy,wz = gaussian_product_center(zeta,px,py,pz,eta,qx,qy,qz)
  rab2 = dist2(ax-bx,ay-by,az-bz)
  rcd2 = dist2(cx-dx,cy-dy,cz-dz)
  rpq2 = dist2(px-qx,py-qy,pz-qz)
  T = zeta*eta/(zeta+eta)*rpq2
  Kab = sqrt(2)pi^1.25/zeta*exp(-aexpn*bexpn*rab2/zeta)
  Kcd = sqrt(2)pi^1.25/eta*exp(-cexpn*dexpn*rcd2/eta)
  mtot = aI+aJ+aK+cI+cJ+cK+M

  vrr_terms = zeros(Float64,(aI+1,aJ+1,aK+1,cI+1,cJ+1,cK+1,mtot+1))

  for m in 0:mtot
    vrr_terms[1,1,1, 1,1,1, m+1] = Fgamma(m,T)*Kab*Kcd/sqrt(zeta+eta)
  end

  for i in 0:(aI-1)
    for m in 0:(mtot-i-1)
      vrr_terms[i+2,1,1, 1,1,1, m+1] = (
         (px-ax)*vrr_terms[i+1,1,1, 1,1,1, m+1] +
         (wx-px)*vrr_terms[i+1,1,1, 1,1,1, m+2])

      if i>0
        vrr_terms[i+2,1,1, 1,1,1, m+1] += i/2/zeta*(
          vrr_terms[i,1,1, 1,1,1, m+1] -
          eta/(zeta+eta)*vrr_terms[i,1,1, 1,1,1, m+2])
      end
    end
  end
#=
  for j in 0:(aJ-1)
    for i in 0:aI
      for m in 0:(mtot-i-j-1)
        println(("b",i,j,m))
        vrr_terms[i+1,j+2,1, 1,1,1, m+1] = (
        (py-ay)*vrr_terms[i+1,j+1,1, 1,1,1, m+1] +
        (wy-py)*vrr_terms[i+1,j+1,1, 1,1,1, m+2])
        if j>0
          vrr_terms[i+1,j+2,1, 1,1,1, m+1] += j/2/zeta*(
            vrr_terms[i+1,j,1, 1,1,1, m+1] -
            eta/(zeta+eta)*vrr_terms[i+1,j,1, 1,1,1, m+2])
        end
      end
    end
  end

  for k in 0:(aK-1)
    for j in 0:aJ
      for i in 0:aI
        for m in 0:(mtot-i-j-k-1)
          println(("c",i,j,k,m))
          vrr_terms[i+1,j+1,k+2, 1,1,1, m+1] = (
          (pz-az)*vrr_terms[i+1,j+1,k+1, 1,1,1, m+1] +
          (wz-pz)*vrr_terms[i+1,j+1,k+1, 1,1,1, m+2])
          if k>0
            vrr_terms[i+1,j+1,k+2, 1,1,1, m+1] += k/2/zeta*(
            vrr_terms[i+1,j+1,k, 1,1,1, m+1] -
            eta/(zeta+eta)*vrr_terms[i+1,j+1,k, 1,1,1, m+2])
          end
        end
      end
    end
  end

  for q in 0:(cI-1)
    for k in 0:aK
      for j in 0:aJ
        for i in 0:aI
          for m in 0:(mtot-i-j-k-q-1)
            println(("d",i,j,k,q,m))
            vrr_terms[i+1,j+1,k+1, q+2,1,1, m+1] = (
            (qx-cx)*vrr_terms[i+1,j+1,k+1, q+1,1,1, m+1] +
            (wx-qx)*vrr_terms[i+1,j+1,k+1, q+1,1,1, m+2])
            if q>0
              vrr_terms[i+1,j+1,k+1, q+2,1,1, m+1] += q/2/eta*(
              vrr_terms[i+1,j+1,k+1, q,1,1, m+1] -
              eta/(zeta+eta)*vrr_terms[i+1,j+1,k+1, q,1,1, m+2])
            end
            if i>0
              vrr_terms[i+1,j+1,k+1, q+2,1,1, m+1] += (
              i/2/(zeta+eta)*vrr_terms[i,j+1,j+1, q+1,1,1, m+2])
            end
          end
        end
      end
    end
  end

  for r in 0:(cJ-1)
    for q in 0:cI
      for k in 0:aK
        for j in 0:aJ
          for i in 0:aI
            for m in 0:(mtot-i-j-k-q-r-1)
              println(("e",i,j,k,q,r,m))
              vrr_terms[i+1,j+1,k+1, q+1,r+2,1, m+1] = (
              (qy-cy)*vrr_terms[i+1,j+1,k+1, q+1,r+1,1, m+1] +
              (wy-qy)*vrr_terms[i+1,j+1,k+1, q+1,r+1,1, m+2])
              if r>0
                vrr_terms[i+1,j+1,k+1, q+1,r+2,1, m+1] += r/2/eta*(
                vrr_terms[i+1,j+1,k+1, q+1,r+1,1, m+1] -
                zeta/(zeta+eta)*vrr_terms[i+1,j+1,k+1, q+1,r,1, m+2])
              end
              if j>0
                vrr_terms[i+1,j+1,k+1, q+1,r+2,1, m+1] += (
                j/2/(zeta+eta)*vrr_terms[i+1,j,k+1, q+1,r+1,1, m+2])
              end
            end
          end
        end
      end
    end
  end

  for s in 0:(cK-1)
    for r in 0:cJ
      for q in 0:cI
        for k in 0:aK
          for j in 0:aJ
            for i in 0:aI
              for m in 0:(mtot-i-j-k-q-r-s-1)
                println(("f",i,j,k,q,r,s,m))
                vrr_terms[i+1,j+1,k+1, q+1,r+1,s+2, m+1] = (
                (qz-cz)*vrr_terms[i+1,j+1,k+1, q+1,r+1,s+1, m+1]+
                (wz-qz)*vrr_terms[i+1,j+1,k+1, q+1,r+1,s+1, m+2])
                if s>0
                  vrr_terms[i+1,j+1,k+1, q+1,r+1,s+2,m+1] += s/2/eta*(
                  vrr_terms[i+1,j+1,k+1,q+1,r+1,s, m+1] -
                  zeta/(zeta+eta)*vrr_terms[i+1,j+1,k+1,q+1,r+1,s,m+2])
                end
                if k>0
                  vrr_terms[i+1,j+1,k+1, q+1,r+1,s+2,m+1] += (
                  k/2/(zeta+eta)*vrr_terms[i+1,j+1,k, q+1,r+1,s+1,m+2])
                end
              end
            end
          end
        end
      end
    end
  end
  println("before return")
  =#
  @show vrr_terms[aI+1,aJ+1,aK+1,cI+1,cJ+1,cK+1,M+1]
  vrr_terms[aI+1,aJ+1,aK+1,cI+1,cJ+1,cK+1,M+1]
end

function test_vrr()
  ax=ay=az=bx=by=bz=cx=cy=cz=dx=dy=dz=0.0
  aexpn=bexpn=cexpn=dexpn=1.0
  aI=aJ=aK=0
  cI=cJ=cK=0
  M=0

  for (ax,ay,az, aI,aJ,aK, cI,cJ,cK, result) in Any[
      (0.,0.,0., 0,0,0, 0,0,0, 4.37335456733),
      (0.,0.,0., 1,0,0, 1,0,0, 0.182223107579),
      (0.,0.,0., 0,1,0, 0,1,0, 0.182223107579),
      (0.,0.,0., 0,0,1, 0,0,1, 0.182223107579),

      (0.,0.,0., 2,0,0, 2,0,0,  0.223223306785),
      (0.,0.,0., 0,2,0, 0,2,0,  0.223223306785),
      (0.,0.,0., 0,0,2, 0,0,2,  0.223223306785),

      (1.,2.,3., 1,0,0, 1,0,0, -5.63387712455e-06),
      (1.,2.,3., 0,1,0, 0,1,0, -0.000116463120359),
      (1.,2.,3., 0,0,1, 0,0,1, -0.000301178525749),

      (1.,2.,3., 2,0,0, 2,0,0, 0.000225033081978),
      (1.,2.,3., 0,2,0, 0,2,0, 0.000610247078796),
      (1.,2.,3., 0,0,2, 0,0,2, 0.00134278307956),

      (0.,0.,0., 1,1,0, 1,1,0, 0.0136667330685),
      (0.,0.,0., 0,1,1, 0,1,1, 0.0136667330685),
      (0.,0.,0., 1,0,1, 1,0,1, 0.0136667330685),

      (3.,2.,1., 1,1,0, 1,1,0, 5.97677147819e-05),
      (3.,2.,1., 0,1,1, 0,1,1, 1.57429039496e-06),
      (3.,2.,1., 1,0,1, 1,0,1, 4.00292836291e-06)
    ]

    val1 = vrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,
      cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,M)
    val2 = vrr(cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,
      aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,M)
    @assert isapprox(val1,val2)
    #@assert isapprox(val1,result)
    println(val1, " ", result)
    val3 = vrr_iter(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,
      cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,M)
    val4 = vrr_iter(cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,
      aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,M)
    @show (val1,val2,val3,val4)
  end
end

function test_hrr()

  @printf("test_hrr()\n")

  ax=ay=az=bx=by=bz=cx=cy=cz=dx=dy=dz=0.0
  aexpn=bexpn=cexpn=dexpn=1.0
  aI=aJ=aK=0
  bI,bJ,bK = 1,0,1
  cI=cJ=cK=0
  dI,dJ,dK = 1,0,1

  for (ax,ay,az, aI,aJ,aK, cI,cJ,cK, result) in Any[
      (0.,0.,0., 0,0,0, 0,0,0, 0.0136667330685),
      (0.,0.,0., 1,0,0, 1,0,0, 0.00821630976139),
      (0.,0.,0., 0,1,0, 0,1,0, 0.00122024402397),
      (0.,0.,0., 0,0,1, 0,0,1, 0.00821630976139),

      (0.,0.,0., 2,0,0, 2,0,0,   0.0039759617781),
      (0.,0.,0., 0,2,0, 0,2,0,   0.000599953311785),
      (0.,0.,0., 0,0,2, 0,0,2,  0.0039759617781),

      (1.,2.,3., 1,0,0, 1,0,0, -1.18513079462e-06),
      (1.,2.,3., 0,1,0, 0,1,0,  -4.66999128258e-06),
      (1.,2.,3., 0,0,1, 0,0,1, -3.47437366868e-05),

      (1.,2.,3., 2,0,0, 2,0,0, 2.81002247462e-06),
      (1.,2.,3., 0,2,0, 0,2,0, 7.09856891538e-06),
      (1.,2.,3., 0,0,2, 0,0,2, 3.62153023224e-05),

      (0.,0.,0., 1,1,0, 1,1,0, 0.000599953311785),
      (0.,0.,0., 0,1,1, 0,1,1, 0.000599953311785),
      (0.,0.,0., 1,0,1, 1,0,1, 0.0116431617287),

      (3.,2.,1., 1,1,0, 1,1,0, 7.37307761485e-06),
      (3.,2.,1., 0,1,1, 0,1,1, 2.53332441858e-07),
      (3.,2.,1., 1,0,1, 1,0,1, 2.4521155336e-06)
    ]
    #println("hrr($aexpn,$ax,$ay,$az,$aI,$aJ,$aK,$bexpn,$bx,$by,$bz,$bI,$bJ,$bK,")
    #println("  $cexpn,$cx,$cy,$cz,$cI,$cJ,$cK,$dexpn,$dx,$dy,$dz,$dI,$dJ,$dK)")
    val1 = hrr(aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,bI,bJ,bK,
      cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,dI,dJ,dK)
    val2 = hrr(cexpn,cx,cy,cz,cI,cJ,cK,dexpn,dx,dy,dz,dI,dJ,dK,
      aexpn,ax,ay,az,aI,aJ,aK,bexpn,bx,by,bz,bI,bJ,bK)
    #@show val1,val2,result
    @assert isapprox(val1,val2)
    #@assert isapprox(val1,result)
    println("abs(val1-val2) = ", abs(val1-val2))
  end

  @printf("Pass test_hrr\n")
end


text:
function TrSpMV!(y::Vector, A::SparseMatrixCSC, x::Vector)
    @fastmath @inbounds begin
        size(A, 2) == size(y, 1) || throw(DimensionMismatch())
        size(A, 1) == size(x, 1) || throw(DimensionMismatch())
        m = length(y)
        n = length(x)

        A_pos = A.colptr
        A_idx = A.rowval
        A_val = A.nzval
        for i = 1:length(y)
            tmp = zero(eltype(y))
            for j = A_pos[i]:(A_pos[i + 1] - 1)
                tmp += A_val[j] * x[A_idx[j]]
            end
            y[i] = tmp
        end
        y
    end
end

include("multiply_1DVBC.jl")
include("multiply_VBC.jl")


text:
export iframe

mutable struct IFrame
    innerHTML::AbstractString
    bundleURL::AbstractString
end

iframe_bundle_key() = AssetRegistry.register(normpath(joinpath(
    WebIO.packagepath, "generic-http-provider", "dist", "generic-http.js"
)))

"""
    iframe(content)

Wrap the content in an IFrame.

Content is typically a WebIO node, but may be anything with a `text/html` MIME
representation. The IFrame itself is wrapped in a scope to allow for mount
callbacks.
"""
function iframe(content)
    ifr = IFrame(
        stringmime("text/html", content),
        string(WebIO.baseurl[], iframe_bundle_key()),
    )
    # We wrap the IFrame in a div for historical reasons (notably, MeshCat.jl
    # tries to set attributes on the div when rendering its visualizer); this
    # is definitely an implementation detail but we can avoid breaking things
    # at any rate.
    dom = node(
        :div,
        node(ifr),
        style=Dict(
            :display => "inherit",
            :margin => "inherit",
        ),
    )
    return Scope(dom=dom)
end


text:
#=
Modified from SubpixelRegistration.jl
https://github.com/romainFr/SubpixelRegistration.jl
Copyright (c) 2016: Romain Franconville.
Under MIT "Expat" License

Original Publication:

=#

function subpixel(imgRef::AbstractArray{T,N},imgF::AbstractArray{T,N},usfac) where {T,N}

    if usfac==1
        ## Whole-pixel shift - Compute crosscorrelation by an IFFT and locate the peak
        L = length(imgRef)
        CC = ifft(imgRef.*conj(imgF))
        loc = argmax(abs.(CC))
        CCmax=CC[loc]

        indi = size(imgRef)
        ind2 = tuple([div(x,2) for x in indi]...)

        #locI = [ind2sub(indi,loc)...]
        locI = [Tuple(loc)...]

        shift = zeros(size(locI))
        for i in eachindex(locI)
            if locI[i]>ind2[i]
                shift[i]=locI[i]-indi[i]-1
            else shift[i]=locI[i]-1
            end
        end

        shift
    else
        ## Partial pixel shift

        ##First upsample by a factor of 2 to obtain initial estimate
        ##Embed Fourier data in a 2x larger array
        dimR = [size(imgRef)...]
        ranges = [(x+1-div(x,2)):(x+1+div(x-1,2)) for x in dimR]
        dimRL = map(x -> x*2, dimR)
        CC = zeros(Complex{Float32},tuple(dimRL...))
        #CC = convert(CuArray,CC)
        CC[ranges...] = fftshift(imgRef).*conj(fftshift(imgF))

        ##  Compute crosscorrelation and locate the peak
        CC = ifft(ifftshift(CC))
        loc = argmax(abs.(CC))

        indi = size(CC)
        #locI = [ind2sub(indi,loc)...]
        locI = [Tuple(loc)...]
        CCmax = CC[loc]
        ## Obtain shift in original pixel grid from the position of the crosscorrelation peak

        ind2 = tuple([div(x,2) for x in indi]...)

        shift = zeros(size(locI))
        for i in eachindex(locI)
            if locI[i]>ind2[i]
                shift[i]=locI[i]-indi[i]-1
            else shift[i]=locI[i]-1
            end
        end
        shift = shift/2

        ## If upsampling > 2, then refine estimate with matrix multiply DFT
        if usfac > 2
            ### DFT Computation ###
            # Initial shift estimate in upsampled grid
            shift = round.(Integer,shift*usfac)/usfac
            dftShift = div(ceil(usfac*1.5),2) ## center of output array at dftshift+1
            ## Matrix multiplies DFT around the current shift estimate
            CC = conj(dftups(imgF.*conj(imgRef),ceil(Integer,usfac*1.5),usfac,dftShift.-shift*usfac))/(prod(ind2)*usfac^2)
            ## Locate maximum and map back to original pixel grid
            loc = argmax(abs.(CC))

            locI = Tuple(loc)
            CCmax = CC[loc]
            locI = map((x) -> x - dftShift - 1,locI)

            for i in eachindex(shift)
                shift[i]=shift[i]+locI[i]/usfac
            end
        end
        ## If its only one row or column the shift along that dimension has no effect. Set to zero.
        shift[[div(x,2) for x in size(imgRef)].==1].=0
    end
    reverse(shift)
end

function dftups(inp::AbstractArray{T,N},no,usfac::Int=1,offset=zeros(N)) where {T,N}
    sz = [size(inp)...]
    permV = 1:N
    for i in permV
        inp = permutedims(inp,[i;deleteat!(collect(permV),i)])
        kern = exp.(Complex{Float32}(-1im*2*pi/(sz[i]*usfac))*((0:(no-1)).-offset[i])*transpose(ifftshift(0:(sz[i]-1)).-floor(sz[i]/2)))
        #kern = convert(CuArray{Complex{Float32}},kern)
        d = size(inp)[2:N]
        inp = kern * reshape(inp, Val(2))
        inp = reshape(inp,(no,d...))
    end
    permutedims(inp,collect(ndims(inp):-1:1))
end

function calculate_subpixel(preds,offset,input,k_fft)

    @distributed for jj=1:size(input,4)
        for kk=1:size(input,3)
            preds[kk,1:2,jj+offset] = convert(Array{Float32,1},subpixel(input[:,:,kk,jj],k_fft,4)) .+ 32.0f0
        end
    end
    nothing
end