<?xml version='1.0' encoding='utf-8'?>
<player>
  <canonical_id>joe-hafferty</canonical_id>
  <canonical_name>Joe Hafferty</canonical_name>
  <positions>
    <item>CB</item>
  </positions>
  <leagues>
    <item>USLC</item>
  </leagues>
  <sport_names />
  <ambiguous>False</ambiguous>
  <appearances>
    <item>
      <id>1504891</id>
      <full_name>Joe Hafferty</full_name>
      <team />
      <position>CB</position>
      <sport_id />
      <league>USLC</league>
      <jersey />
      <college />
      <college_stats />
      <height>5'8"</height>
      <weight />
      <college_full />
    </item>
  </appearances>
  <career_totals>
    <minutes_played>10902.0</minutes_played>
    <shots>65.0</shots>
    <shots_on_target>17.0</shots_on_target>
    <goals>6.0</goals>
    <xg>4.6127</xg>
    <xg_place>0.11679999999999999</xg_place>
    <goals_minus_xg>1.3872999999999998</goals_minus_xg>
    <key_passes>48.0</key_passes>
    <assists>5.0</assists>
    <xa>4.5083</xa>
    <assists_minus_xa>0.4917</assists_minus_xa>
    <goals_plus_assists>11.0</goals_plus_assists>
    <xg_plus_xa>9.1212</xg_plus_xa>
    <points_added>1.8833</points_added>
    <xpoints_added>2.9643000000000006</xpoints_added>
    <passes_attempted>6954.0</passes_attempted>
    <pass_completion_pct>5.3811</pass_completion_pct>
    <xpass_completion_pct>5.5616</xpass_completion_pct>
    <passes_over_expected>95.40780000000001</passes_over_expected>
    <passes_over_expected_p100>-18.0412</passes_over_expected_p100>
    <avg_pass_distance>139.88930000000002</avg_pass_distance>
    <avg_pass_vertical>40.854099999999995</avg_pass_vertical>
  </career_totals>
  <season_totals>
    <USLC_2017>
      <minutes_played>34.0</minutes_played>
      <shots>0.0</shots>
      <shots_on_target>0.0</shots_on_target>
      <goals>0.0</goals>
      <xg>0.0</xg>
      <xg_place>0.0</xg_place>
      <goals_minus_xg>0.0</goals_minus_xg>
      <key_passes>0.0</key_passes>
      <assists>0.0</assists>
      <xa>0.0</xa>
      <assists_minus_xa>0.0</assists_minus_xa>
      <goals_plus_assists>0.0</goals_plus_assists>
      <xg_plus_xa>0.0</xg_plus_xa>
      <points_added>0.0</points_added>
      <xpoints_added>0.0</xpoints_added>
      <passes_attempted>9.0</passes_attempted>
      <pass_completion_pct>0.4444</pass_completion_pct>
      <xpass_completion_pct>0.6605</xpass_completion_pct>
      <passes_over_expected>-1.9446</passes_over_expected>
      <passes_over_expected_p100>-21.607</passes_over_expected_p100>
      <avg_pass_distance>17.9235</avg_pass_distance>
      <avg_pass_vertical>9.6638</avg_pass_vertical>
    </USLC_2017>
    <USLC_2021>
      <minutes_played>368.0</minutes_played>
      <shots>2.0</shots>
      <shots_on_target>2.0</shots_on_target>
      <goals>0.0</goals>
      <xg>0.0603</xg>
      <xg_place>0.1738</xg_place>
      <goals_minus_xg>-0.0603</goals_minus_xg>
      <key_passes>2.0</key_passes>
      <assists>0.0</assists>
      <xa>0.1304</xa>
      <assists_minus_xa>-0.1304</assists_minus_xa>
      <goals_plus_assists>0.0</goals_plus_assists>
      <xg_plus_xa>0.1908</xg_plus_xa>
      <points_added>0.0</points_added>
      <xpoints_added>0.0172</xpoints_added>
      <passes_attempted>175.0</passes_attempted>
      <pass_completion_pct>0.6971</pass_completion_pct>
      <xpass_completion_pct>0.7243</xpass_completion_pct>
      <passes_over_expected>-4.7572</passes_over_expected>
      <passes_over_expected_p100>-2.7184</passes_over_expected_p100>
      <avg_pass_distance>17.6752</avg_pass_distance>
      <avg_pass_vertical>2.7658</avg_pass_vertical>
    </USLC_2021>
    <MLSNP_2022>
      <minutes_played>1462.0</minutes_played>
      <shots>9.0</shots>
      <shots_on_target>2.0</shots_on_target>
      <goals>2.0</goals>
      <xg>0.6384</xg>
      <xg_place>0.0546</xg_place>
      <goals_minus_xg>1.3616</goals_minus_xg>
      <key_passes>7.0</key_passes>
      <assists>2.0</assists>
      <xa>1.224</xa>
      <assists_minus_xa>0.776</assists_minus_xa>
      <goals_plus_assists>4.0</goals_plus_assists>
      <xg_plus_xa>1.8624</xg_plus_xa>
      <points_added>0.0088</points_added>
      <xpoints_added>0.219</xpoints_added>
      <passes_attempted>833.0</passes_attempted>
      <pass_completion_pct>0.8055</pass_completion_pct>
      <xpass_completion_pct>0.7878</xpass_completion_pct>
      <passes_over_expected>14.7791</passes_over_expected>
      <passes_over_expected_p100>1.7742</passes_over_expected_p100>
      <avg_pass_distance>18.6016</avg_pass_distance>
      <avg_pass_vertical>3.0323</avg_pass_vertical>
    </MLSNP_2022>
    <MLSNP_2023>
      <minutes_played>2894.0</minutes_played>
      <shots>20.0</shots>
      <shots_on_target>5.0</shots_on_target>
      <goals>1.0</goals>
      <xg>1.1323</xg>
      <xg_place>-0.1756</xg_place>
      <goals_minus_xg>-0.1323</goals_minus_xg>
      <key_passes>11.0</key_passes>
      <assists>1.0</assists>
      <xa>0.7739</xa>
      <assists_minus_xa>0.2261</assists_minus_xa>
      <goals_plus_assists>2.0</goals_plus_assists>
      <xg_plus_xa>1.9062</xg_plus_xa>
      <points_added>0.5117</points_added>
      <xpoints_added>0.8343</xpoints_added>
      <passes_attempted>2071.0</passes_attempted>
      <pass_completion_pct>0.8706</pass_completion_pct>
      <xpass_completion_pct>0.8552</xpass_completion_pct>
      <passes_over_expected>31.8303</passes_over_expected>
      <passes_over_expected_p100>1.537</passes_over_expected_p100>
      <avg_pass_distance>22.0212</avg_pass_distance>
      <avg_pass_vertical>6.5798</avg_pass_vertical>
    </MLSNP_2023>
    <USLC_2024>
      <minutes_played>2837.0</minutes_played>
      <shots>17.0</shots>
      <shots_on_target>3.0</shots_on_target>
      <goals>1.0</goals>
      <xg>1.5915</xg>
      <xg_place>-0.1832</xg_place>
      <goals_minus_xg>-0.5915</goals_minus_xg>
      <key_passes>8.0</key_passes>
      <assists>0.0</assists>
      <xa>0.5576</xa>
      <assists_minus_xa>-0.5576</assists_minus_xa>
      <goals_plus_assists>1.0</goals_plus_assists>
      <xg_plus_xa>2.1492</xg_plus_xa>
      <points_added>0.7261</points_added>
      <xpoints_added>1.3676</xpoints_added>
      <passes_attempted>2101.0</passes_attempted>
      <pass_completion_pct>0.8772</pass_completion_pct>
      <xpass_completion_pct>0.8659</xpass_completion_pct>
      <passes_over_expected>23.7117</passes_over_expected>
      <passes_over_expected_p100>1.1286</passes_over_expected_p100>
      <avg_pass_distance>22.8518</avg_pass_distance>
      <avg_pass_vertical>7.8683</avg_pass_vertical>
    </USLC_2024>
    <USLC_2025>
      <minutes_played>2848.0</minutes_played>
      <shots>15.0</shots>
      <shots_on_target>5.0</shots_on_target>
      <goals>2.0</goals>
      <xg>1.1527</xg>
      <xg_place>0.2847</xg_place>
      <goals_minus_xg>0.8473</goals_minus_xg>
      <key_passes>19.0</key_passes>
      <assists>2.0</assists>
      <xa>1.7862</xa>
      <assists_minus_xa>0.2138</assists_minus_xa>
      <goals_plus_assists>4.0</goals_plus_assists>
      <xg_plus_xa>2.9389</xg_plus_xa>
      <points_added>0.6367</points_added>
      <xpoints_added>0.5048</xpoints_added>
      <passes_attempted>1526.0</passes_attempted>
      <pass_completion_pct>0.8453</pass_completion_pct>
      <xpass_completion_pct>0.8241</xpass_completion_pct>
      <passes_over_expected>32.4652</passes_over_expected>
      <passes_over_expected_p100>2.1275</passes_over_expected_p100>
      <avg_pass_distance>20.6578</avg_pass_distance>
      <avg_pass_vertical>4.6482</avg_pass_vertical>
    </USLC_2025>
    <USLC_2026>
      <minutes_played>459.0</minutes_played>
      <shots>2.0</shots>
      <shots_on_target>0.0</shots_on_target>
      <goals>0.0</goals>
      <xg>0.0375</xg>
      <xg_place>-0.0375</xg_place>
      <goals_minus_xg>-0.0375</goals_minus_xg>
      <key_passes>1.0</key_passes>
      <assists>0.0</assists>
      <xa>0.0362</xa>
      <assists_minus_xa>-0.0362</assists_minus_xa>
      <goals_plus_assists>0.0</goals_plus_assists>
      <xg_plus_xa>0.0737</xg_plus_xa>
      <points_added>0.0</points_added>
      <xpoints_added>0.0214</xpoints_added>
      <passes_attempted>239.0</passes_attempted>
      <pass_completion_pct>0.841</pass_completion_pct>
      <xpass_completion_pct>0.8438</xpass_completion_pct>
      <passes_over_expected>-0.6767</passes_over_expected>
      <passes_over_expected_p100>-0.2831</passes_over_expected_p100>
      <avg_pass_distance>20.1582</avg_pass_distance>
      <avg_pass_vertical>6.2959</avg_pass_vertical>
    </USLC_2026>
  </season_totals>
  <season_coaches />
  <game_log>
    <item>
      <game_id>soccer-uslc-2017-KXMe8Z2Q64</game_id>
      <game_slug>soccer-uslc-2017-kxme8z2q64</game_slug>
      <display>USLC 2017 Season</display>
      <season>2017</season>
      <week>1</week>
      <league>USLC</league>
      <sport_slug>uslc-2017</sport_slug>
      <away_team />
      <home_team />
      <date_str />
      <score_home />
      <score_away />
      <stats>
        <minutes_played>34.0</minutes_played>
        <shots>0.0</shots>
        <shots_on_target>0.0</shots_on_target>
        <goals>0.0</goals>
        <xg>0.0</xg>
        <xg_place>0.0</xg_place>
        <goals_minus_xg>0.0</goals_minus_xg>
        <key_passes>0.0</key_passes>
        <assists>0.0</assists>
        <xa>0.0</xa>
        <assists_minus_xa>0.0</assists_minus_xa>
        <goals_plus_assists>0.0</goals_plus_assists>
        <xg_plus_xa>0.0</xg_plus_xa>
        <points_added>0.0</points_added>
        <xpoints_added>0.0</xpoints_added>
        <passes_attempted>9.0</passes_attempted>
        <pass_completion_pct>0.4444</pass_completion_pct>
        <xpass_completion_pct>0.6605</xpass_completion_pct>
        <passes_over_expected>-1.9446</passes_over_expected>
        <passes_over_expected_p100>-21.607</passes_over_expected_p100>
        <avg_pass_distance>17.9235</avg_pass_distance>
        <avg_pass_vertical>9.6638</avg_pass_vertical>
      </stats>
    </item>
    <item>
      <game_id>soccer-uslc-2021-KXMe8Z2Q64</game_id>
      <game_slug>soccer-uslc-2021-kxme8z2q64</game_slug>
      <display>USLC 2021 Season</display>
      <season>2021</season>
      <week>1</week>
      <league>USLC</league>
      <sport_slug>uslc-2021</sport_slug>
      <away_team />
      <home_team />
      <date_str />
      <score_home />
      <score_away />
      <stats>
        <minutes_played>368.0</minutes_played>
        <shots>2.0</shots>
        <shots_on_target>2.0</shots_on_target>
        <goals>0.0</goals>
        <xg>0.0603</xg>
        <xg_place>0.1738</xg_place>
        <goals_minus_xg>-0.0603</goals_minus_xg>
        <key_passes>2.0</key_passes>
        <assists>0.0</assists>
        <xa>0.1304</xa>
        <assists_minus_xa>-0.1304</assists_minus_xa>
        <goals_plus_assists>0.0</goals_plus_assists>
        <xg_plus_xa>0.1908</xg_plus_xa>
        <points_added>0.0</points_added>
        <xpoints_added>0.0172</xpoints_added>
        <passes_attempted>175.0</passes_attempted>
        <pass_completion_pct>0.6971</pass_completion_pct>
        <xpass_completion_pct>0.7243</xpass_completion_pct>
        <passes_over_expected>-4.7572</passes_over_expected>
        <passes_over_expected_p100>-2.7184</passes_over_expected_p100>
        <avg_pass_distance>17.6752</avg_pass_distance>
        <avg_pass_vertical>2.7658</avg_pass_vertical>
      </stats>
    </item>
    <item>
      <game_id>soccer-mlsnp-2022-KXMe8Z2Q64</game_id>
      <game_slug>soccer-mlsnp-2022-kxme8z2q64</game_slug>
      <display>MLSNP 2022 Season</display>
      <season>2022</season>
      <week>1</week>
      <league>MLSNP</league>
      <sport_slug>mlsnp-2022</sport_slug>
      <away_team />
      <home_team />
      <date_str />
      <score_home />
      <score_away />
      <stats>
        <minutes_played>1462.0</minutes_played>
        <shots>9.0</shots>
        <shots_on_target>2.0</shots_on_target>
        <goals>2.0</goals>
        <xg>0.6384</xg>
        <xg_place>0.0546</xg_place>
        <goals_minus_xg>1.3616</goals_minus_xg>
        <key_passes>7.0</key_passes>
        <assists>2.0</assists>
        <xa>1.224</xa>
        <assists_minus_xa>0.776</assists_minus_xa>
        <goals_plus_assists>4.0</goals_plus_assists>
        <xg_plus_xa>1.8624</xg_plus_xa>
        <points_added>0.0088</points_added>
        <xpoints_added>0.219</xpoints_added>
        <passes_attempted>833.0</passes_attempted>
        <pass_completion_pct>0.8055</pass_completion_pct>
        <xpass_completion_pct>0.7878</xpass_completion_pct>
        <passes_over_expected>14.7791</passes_over_expected>
        <passes_over_expected_p100>1.7742</passes_over_expected_p100>
        <avg_pass_distance>18.6016</avg_pass_distance>
        <avg_pass_vertical>3.0323</avg_pass_vertical>
      </stats>
    </item>
    <item>
      <game_id>soccer-mlsnp-2023-eV5Dw4EMKn</game_id>
      <game_slug>soccer-mlsnp-2023-ev5dw4emkn</game_slug>
      <display>MLSNP 2023 Season</display>
      <season>2023</season>
      <week>1</week>
      <league>MLSNP</league>
      <sport_slug>mlsnp-2023</sport_slug>
      <away_team />
      <home_team />
      <date_str />
      <score_home />
      <score_away />
      <stats>
        <minutes_played>2894.0</minutes_played>
        <shots>20.0</shots>
        <shots_on_target>5.0</shots_on_target>
        <goals>1.0</goals>
        <xg>1.1323</xg>
        <xg_place>-0.1756</xg_place>
        <goals_minus_xg>-0.1323</goals_minus_xg>
        <key_passes>11.0</key_passes>
        <assists>1.0</assists>
        <xa>0.7739</xa>
        <assists_minus_xa>0.2261</assists_minus_xa>
        <goals_plus_assists>2.0</goals_plus_assists>
        <xg_plus_xa>1.9062</xg_plus_xa>
        <points_added>0.5117</points_added>
        <xpoints_added>0.8343</xpoints_added>
        <passes_attempted>2071.0</passes_attempted>
        <pass_completion_pct>0.8706</pass_completion_pct>
        <xpass_completion_pct>0.8552</xpass_completion_pct>
        <passes_over_expected>31.8303</passes_over_expected>
        <passes_over_expected_p100>1.537</passes_over_expected_p100>
        <avg_pass_distance>22.0212</avg_pass_distance>
        <avg_pass_vertical>6.5798</avg_pass_vertical>
      </stats>
    </item>
    <item>
      <game_id>soccer-uslc-2024-Pk5LzyGQOW</game_id>
      <game_slug>soccer-uslc-2024-pk5lzygqow</game_slug>
      <display>USLC 2024 Season</display>
      <season>2024</season>
      <week>1</week>
      <league>USLC</league>
      <sport_slug>uslc-2024</sport_slug>
      <away_team />
      <home_team />
      <date_str />
      <score_home />
      <score_away />
      <stats>
        <minutes_played>2837.0</minutes_played>
        <shots>17.0</shots>
        <shots_on_target>3.0</shots_on_target>
        <goals>1.0</goals>
        <xg>1.5915</xg>
        <xg_place>-0.1832</xg_place>
        <goals_minus_xg>-0.5915</goals_minus_xg>
        <key_passes>8.0</key_passes>
        <assists>0.0</assists>
        <xa>0.5576</xa>
        <assists_minus_xa>-0.5576</assists_minus_xa>
        <goals_plus_assists>1.0</goals_plus_assists>
        <xg_plus_xa>2.1492</xg_plus_xa>
        <points_added>0.7261</points_added>
        <xpoints_added>1.3676</xpoints_added>
        <passes_attempted>2101.0</passes_attempted>
        <pass_completion_pct>0.8772</pass_completion_pct>
        <xpass_completion_pct>0.8659</xpass_completion_pct>
        <passes_over_expected>23.7117</passes_over_expected>
        <passes_over_expected_p100>1.1286</passes_over_expected_p100>
        <avg_pass_distance>22.8518</avg_pass_distance>
        <avg_pass_vertical>7.8683</avg_pass_vertical>
      </stats>
    </item>
    <item>
      <game_id>soccer-uslc-2025-wvq9J83QWn</game_id>
      <game_slug>soccer-uslc-2025-wvq9j83qwn</game_slug>
      <display>USLC 2025 Season</display>
      <season>2025</season>
      <week>1</week>
      <league>USLC</league>
      <sport_slug>uslc-2025</sport_slug>
      <away_team />
      <home_team />
      <date_str />
      <score_home />
      <score_away />
      <stats>
        <minutes_played>2848.0</minutes_played>
        <shots>15.0</shots>
        <shots_on_target>5.0</shots_on_target>
        <goals>2.0</goals>
        <xg>1.1527</xg>
        <xg_place>0.2847</xg_place>
        <goals_minus_xg>0.8473</goals_minus_xg>
        <key_passes>19.0</key_passes>
        <assists>2.0</assists>
        <xa>1.7862</xa>
        <assists_minus_xa>0.2138</assists_minus_xa>
        <goals_plus_assists>4.0</goals_plus_assists>
        <xg_plus_xa>2.9389</xg_plus_xa>
        <points_added>0.6367</points_added>
        <xpoints_added>0.5048</xpoints_added>
        <passes_attempted>1526.0</passes_attempted>
        <pass_completion_pct>0.8453</pass_completion_pct>
        <xpass_completion_pct>0.8241</xpass_completion_pct>
        <passes_over_expected>32.4652</passes_over_expected>
        <passes_over_expected_p100>2.1275</passes_over_expected_p100>
        <avg_pass_distance>20.6578</avg_pass_distance>
        <avg_pass_vertical>4.6482</avg_pass_vertical>
      </stats>
    </item>
    <item>
      <game_id>soccer-uslc-2026-wvq9J83QWn</game_id>
      <game_slug>soccer-uslc-2026-wvq9j83qwn</game_slug>
      <display>USLC 2026 Season</display>
      <season>2026</season>
      <week>1</week>
      <league>USLC</league>
      <sport_slug>uslc-2026</sport_slug>
      <away_team />
      <home_team />
      <date_str />
      <score_home />
      <score_away />
      <stats>
        <minutes_played>459.0</minutes_played>
        <shots>2.0</shots>
        <shots_on_target>0.0</shots_on_target>
        <goals>0.0</goals>
        <xg>0.0375</xg>
        <xg_place>-0.0375</xg_place>
        <goals_minus_xg>-0.0375</goals_minus_xg>
        <key_passes>1.0</key_passes>
        <assists>0.0</assists>
        <xa>0.0362</xa>
        <assists_minus_xa>-0.0362</assists_minus_xa>
        <goals_plus_assists>0.0</goals_plus_assists>
        <xg_plus_xa>0.0737</xg_plus_xa>
        <points_added>0.0</points_added>
        <xpoints_added>0.0214</xpoints_added>
        <passes_attempted>239.0</passes_attempted>
        <pass_completion_pct>0.841</pass_completion_pct>
        <xpass_completion_pct>0.8438</xpass_completion_pct>
        <passes_over_expected>-0.6767</passes_over_expected>
        <passes_over_expected_p100>-0.2831</passes_over_expected_p100>
        <avg_pass_distance>20.1582</avg_pass_distance>
        <avg_pass_vertical>6.2959</avg_pass_vertical>
      </stats>
    </item>
  </game_log>
  <college />
  <nfl />
  <articles />
</player>