anchor.diff:  		user_profile :: #'3gpp_swx_Non-3GPP-User-Data'{} | undefined,
   		orig_host :: diameter:'OctetString'(),
   		orig_realm :: diameter:'OctetString'(),
  -		dest_host :: diameter:'OctetString'(),
  -		dest_realm :: diameter:'OctetString'(),
   		server_address :: inet:ip_address(),
   		server_port :: pos_integer(),
   		client_address :: inet:ip_address(),
   		client_port :: pos_integer(),
   		service :: tuple(),
  -		hss_realm :: string() | undefined,
  +		hss_realm :: diameter:'OctetString'() | undefined,
   		hss_host = [] :: [diameter:'OctetString'()]
  +		pgw_realm :: diameter:'OctetString'() | undefined,
  +		pgw_host = [] :: diameter:'OctetString'(),
   		pgw_id = [] :: [diameter:'OctetString'()],
   		pgw_plmn = [] :: [diameter:'OctetString'()],
   		request :: #'3gpp_s6b_AAR'{} | undefined,
  
positive.code: 			{next_state, profile, NewStateData, ?TIMEOUT};
  		{aborted, Reason} ->
  			error_logger:error_report(["Failed user lookup",
  					{pgw_host, Host}, {pgw_realm, Realm},
  					{imsi, IMSI}, {identity, Identity},
  					{session, SessionId}, {error, Reason}]),
  			ResultCode = ?'DIAMETER_BASE_RESULT-CODE_UNABLE_TO_COMPLY',
  
negative.code: 	{stop, shutdown, StateData};
  profile({ok, #'3gpp_swx_SAA'{'Experimental-Result' = [#'3gpp_Experimental-Result'{
  		'Experimental-Result-Code' = ?'DIAMETER_ERROR_USER_UNKNOWN'}],
  		'Origin-Host' = HssHost, 'Origin-Realm' = HssRealm} = _Answer},
  		#statedata{from = Caller, session_id = SessionId,
  		pgw_host = PgwHost, pgw_realm = PgwRealm,
  		pgw_id = PGW, pgw_plmn = VPLMN,
  		imsi = IMSI, identity = Identity} = StateData) ->
  	error_logger:warning_report(["Unkown user",
  			{hss_host, HssHost}, {hss_realm, HssRealm},
  			{pgw_host, PgwHost}, {pgw_realm, PgwRealm},
  			{pgw_id, PGW}, {pgw_plmn, VPLMN},
  			{imsi, IMSI}, {identity, Identity},
  			{session, SessionId},
  			{result, ?'DIAMETER_ERROR_USER_UNKNOWN'}]),
  	ResultCode = ?'DIAMETER_ERROR_USER_UNKNOWN',
  	gen_fsm:reply(Caller, response(ResultCode, StateData)),
  	{stop, shutdown, StateData};
  profile({ok, #'3gpp_swx_SAA'{'Result-Code' = [ResultCode1],
  		'Origin-Host' = HssHost, 'Origin-Realm' = HssRealm} = _Answer},
  		#statedata{from = Caller, session_id = SessionId,
  		pgw_host = PgwHost, pgw_realm = PgwRealm,
  		pgw_id = PGW, pgw_plmn = VPLMN,
  		imsi = IMSI, identity = Identity} = StateData) ->
  	error_logger:error_report(["Unexpected get user profile result",
  			{hss_host, HssHost}, {hss_realm, HssRealm},
  			{pgw_host, PgwHost}, {pgw_realm, PgwRealm},
  			{pgw_id, PGW}, {pgw_plmn, VPLMN},
  			{imsi, IMSI}, {identity, Identity},
  			{session, SessionId}, {result, ResultCode1}]),
  	ResultCode2 = ?'DIAMETER_BASE_RESULT-CODE_UNABLE_TO_COMPLY',
  