anchor.diff:  -include_lib("inets/include/mod_auth.hrl").
   -include("ocs.hrl").
   
  +%% support deprecated_time_unit()
  +-define(MILLISECOND, milli_seconds).
  +%-define(MILLISECOND, millisecond).
  +
   -spec content_types_accepted() -> ContentTypes
   	when
   		ContentTypes :: list().
  
positive.code: 	{Port, Address, Directory, _Group} = get_params(),
  	case mod_auth:delete_user(ID, Address, Port, Directory) of
  		true ->
  			LM = {erlang:system_time(milli_seconds), erlang:unique_integer([positive])},
  			case mod_auth:add_user(ID, Password, [{locale, Locale}, {last_modified}],
  					Address, Port, Directory) of
  				true ->
  
negative.code: 	process_json_patch1(Ops, ID, []).
  %% @hidden
  process_json_patch1([{struct, Attr}| T], ID, Acc) ->
  	case {lists:keyfind("op", 1, Attr), lists:keyfind("path", 1, Attr)} of
  		{{_, "replace"}, {_, "/characteristic/" ++ _}} ->
  			ok;
  		{{_, "add"}, {_, "/characteristic/-"}} ->
  			ok
  	end,
  	{_, {struct, Value}} = lists:keyfind("value", 1, Attr),
  	case lists:keyfind("name", 1, Value) of
  		{_, "password"} ->
  			{_, NewPassword} = lists:keyfind("value", 1, Value),
  			process_json_patch1(T, ID, [{"password", NewPassword} | Acc]);
  		{_, "locale"} ->
  			{_, NewLocale} = lists:keyfind("value", 1, Value),
  			process_json_patch1(T, ID, [{"locale", NewLocale} | Acc]);
  		false ->
  			process_json_patch1(T, ID, Acc)
  	end;
  process_json_patch1([], ID, Acc) ->
  	{Port, Address, Directory, _} = get_params(),
  	case mod_auth:get_user(ID, Address, Port, Directory) of
  		{ok, #httpd_user{password = OPassword, user_data = UserData}} ->
  			LastModified = case lists:keyfind(last_modified, 1, UserData) of
  				{_, LM} ->
  					LM;
  				false ->
  					{erlang:system_time(?MILLISECOND), erlang:unique_integer([positive])}
  			end,
  			OLocale = case lists:keyfind(locale, 1, UserData) of
  				{_, Loc} ->
  					Loc;
  				false ->
  					"en"
  			end,
  			Password = case lists:keyfind("password", 1, Acc) of
  				false ->
  