anchor.diff:  	attributes(T, <<Acc/binary, ?AcctMultiSessionId, Length, SI/binary>>);
   attributes([{?AcctLinkCount, AcctLinkCount} | T], Acc) ->
   	attributes(T, <<Acc/binary, ?AcctLinkCount, 6, AcctLinkCount:32>>);
  +attributes([{?AcctInputGigawords, GigaWordCount} | T], Acc) ->
  +	attributes(T, <<Acc/binary, ?AcctInputGigawords, 6, GigaWordCount:32>>);
  +attributes([{?AcctOutputGigawords, GigaWordCount} | T], Acc) ->
  +	attributes(T, <<Acc/binary, ?AcctOutputGigawords, 6, GigaWordCount:32>>);
  +attributes([{?EventTimestamp, Seconds} | T], Acc) ->
  +	attributes(T, <<Acc/binary, ?EventTimestamp, 6, Seconds:32>>);
   attributes([{?ChapChallenge, ChapChallenge} | T], Acc) ->
   	CC = list_to_binary(ChapChallenge),
   	Length = size(CC) + 2,
  
positive.code: 	attributes(T, <<Acc/binary, ?TunnelAssignmentID, Length, Tag, S/binary>>);
  attributes([{?TunnelPreference, {Tag, Value}} | T], Acc) ->
  	attributes(T, <<Acc/binary, ?TunnelPreference, 6, Tag, Value:24>>);
  attributes([{?TunnelClientAuthID, {Tag, String}} | T], Acc) ->
  	S = list_to_binary(String),
  	Length = size(S) + 3,
  
negative.code: 	orddict:store(?TunnelType, {Tag, Value}, Acc);
  attribute(?TunnelMediumType, <<Tag, Value:24>>, Acc) ->
  	orddict:store(?TunnelMediumType, {Tag, Value}, Acc);
  attribute(?TunnelClientEndpoint, <<Tag, String/binary>>, Acc) ->
  	S = binary_to_list(String),
  	orddict:store(?TunnelClientEndpoint, {Tag, S}, Acc);
  attribute(?TunnelServerEndpoint, <<Tag, String/binary>>, Acc) ->
  	S = binary_to_list(String),
  	orddict:store(?TunnelServerEndpoint, {Tag, S}, Acc);
  attribute(?AcctTunnelConnection, Value, Acc) when size(Value) >= 1 ->
  	orddict:store(?AcctTunnelConnection, binary_to_list(Value), Acc);
  attribute(?TunnelPassword, <<Tag, Salt:16, String/binary>>, Acc) ->
  	S = binary_to_list(String),
  	orddict:store(?TunnelPassword, {Tag, Salt, S}, Acc);
  attribute(?ARAPPassword, <<Challenge:8/binary, Response:8/binary>>, Acc) ->
  	orddict:store(?ARAPPassword, {Challenge, Response}, Acc);
  attribute(?ARAPFeatures, <<Change, Length, Created:32, Expires:32, Time:32>>, Acc) ->
  	orddict:store(?ARAPFeatures, {Change, Length, Created, Expires, Time}, Acc);
  attribute(?ARAPZoneAccess, Value, Acc) when size(Value) == 4 ->
  	ZoneAccess = binary:decode_unsigned(Value),
  	orddict:store(?ARAPZoneAccess, ZoneAccess, Acc);
  attribute(?ARAPSecurity, Value, Acc) when size(Value) == 4 ->
  	Security = binary:decode_unsigned(Value),
  	orddict:store(?ARAPSecurity, Security, Acc);
  attribute(?ARAPSecurityData, Data, Acc) when size(Data) >= 1 ->
  	orddict:store(?ARAPSecurityData, Data, Acc);
  attribute(?PasswordRetry, Value, Acc) when size(Value) == 4 ->
  	Retries = binary:decode_unsigned(Value),
  	orddict:store(?PasswordRetry, Retries, Acc);
  attribute(?Prompt, <<0:32>>, Acc) ->
  	orddict:store(?Prompt, false, Acc);
  attribute(?Prompt, <<1:32>>, Acc) ->
  	orddict:store(?Prompt, true, Acc);
  attribute(?ConnectInfo, Value, Acc) when size(Value) >= 1 ->
  	Text = binary_to_list(Value),
  	orddict:store(?ConnectInfo, Text, Acc);
  attribute(?ConfigurationToken, Value, Acc) when size(Value) >= 1 ->
  	String= binary_to_list(Value),
  	orddict:store(?ConfigurationToken, String, Acc);
  attribute(?EAPMessage, Data, Acc) when size(Data) >= 1 ->
  	orddict:store(?EAPMessage, Data, Acc);
  attribute(?MessageAuthenticator, String, Acc) when size(String) == 18 ->
  	orddict:store(?MessageAuthenticator, String, Acc);
  attribute(?TunnelPrivateGroupID, <<Tag, String/binary>>, Acc) ->
  	S = binary_to_list(String),
  	orddict:store(?TunnelPrivateGroupID, {Tag, S}, Acc);
  attribute(?TunnelAssignmentID, <<Tag, String/binary>>, Acc) ->
  	S = binary_to_list(String),
  	orddict:store(?TunnelAssignmentID, {Tag, S}, Acc);
  attribute(?TunnelPreference, <<Tag, Value:24>>, Acc) ->
  	orddict:store(?TunnelPreference, {Tag, Value}, Acc);
  attribute(?ARAPChallengeResponse, String, Acc) when size(String) == 18 ->
  	orddict:store(?ARAPChallengeResponse, String, Acc);
  attribute(?AcctInterimInterval, Value, Acc) when size(Value) == 4 ->
  	Count = binary:decode_unsigned(Value),
  	orddict:store(?AcctInterimInterval, Count, Acc);
  attribute(?AcctTunnelPacketsLost, Value, Acc) when size(Value) == 4 ->
  	Lost = binary:decode_unsigned(Value),
  	orddict:store(?AcctTunnelPacketsLost, Lost, Acc);
  attribute(?NASPortId, Text, Acc) when size(Text) >= 1 ->
  	S = binary_to_list(Text),
  	orddict:store(?TunnelPrivateGroupID, S, Acc);
  attribute(?FramedPool, String, Acc) when size(String) >= 1 ->
  	S = binary_to_list(String),
  	orddict:store(?FramedPool, S, Acc);
  attribute(?TunnelClientAuthID, <<Tag, String/binary>>, Acc) ->
  	S = binary_to_list(String),
  	orddict:store(?TunnelClientAuthID, {Tag, S}, Acc);
  attribute(?TunnelServerAuthID, <<Tag, String/binary>>, Acc) ->
  	S = binary_to_list(String),
  	orddict:store(?TunnelServerAuthID, {Tag, S}, Acc);
  attribute(_, _Value, Acc) ->
  	Acc.
  
  