anchor.diff:      STopic = string:substr(binary_to_list(Topic), 1, byte_size(Topic) -1),
       in(Type, User, STopic);
   in(Type, User, Topic) ->
  -    {Tbl, Obj} = t(Type, User, Topic),
  +    {Tbl, Obj} = t(Type, User, emqtt_topic:words(Topic)),
       ets:insert(Tbl, Obj).
   
   t(read, all, Topic) -> {vmq_acl_read_all, {Topic, 1}};
  
positive.code:             end
      end;
  check(Type, Topic, User, ClientId) ->
      check(Type, words(Topic), User, ClientId).
  
  check_all_acl(Type, TIn) ->
      {Tbl, _} = t(Type, all, TIn),
      iterate_until_true(Tbl, fun(T) -> match(TIn, words(T)) end).
  
  check_user_acl(Type, User, TIn) ->
      {Tbl, _} = t(Type, User, TIn),
      iterate_until_true(ets:match(Tbl, {{User, '$1'}, '_'}),
                        fun([T]) -> match(TIn, words(T)) end).
  
  check_pattern_acl(Type, TIn, User, ClientId) ->
      {Tbl, _} = t(Type, pattern, TIn),
      iterate_until_true(Tbl, fun(P) ->
                                      T = topic(User, ClientId, P),
                                      match(TIn, words(T))
                              end).
  
  topic(User, ClientId, Topic) ->
  
negative.code:          auth_on_publish/6,
           change_config/1]).
  
  -import(emqtt_topic, [match/2]).
  
  -define(INIT_ACL, {[],[],[],[],[],[]}).
  -define(TABLES, [
  