code: func handleLoadTxFilter(wsc *wsClient, icmd interface{}) (interface{}, error) {
  	cmd := icmd.(*btcjson.LoadTxFilterCmd)
  
  	outPoints := make([]wire.OutPoint, len(cmd.OutPoints))
  	for i := range cmd.OutPoints {
  		hash, err := chainhash.NewHashFromStr(cmd.OutPoints[i].Hash)
  		if err != nil {
  			return nil, &btcjson.RPCError{
  				Code:    btcjson.ErrRPCInvalidParameter,
  				Message: err.Error(),
  			}
  		}
  		outPoints[i] = wire.OutPoint{
  			Hash:  *hash,
  			Index: cmd.OutPoints[i].Index,
  		}
  	}
  
  	params := wsc.server.cfg.ChainParams
  
  	wsc.Lock()
  	if cmd.Reload || wsc.filterData == nil {
  		wsc.filterData = newWSClientFilter(cmd.Addresses, outPoints,
  			params)
  		wsc.Unlock()
  	} else {
  		wsc.Unlock()
  
  		wsc.filterData.mu.Lock()
  		for _, a := range cmd.Addresses {
  			wsc.filterData.addAddressStr(a, params)
  		}
  		for i := range outPoints {
  			wsc.filterData.addUnspentOutPoint(&outPoints[i])
  		}
  		wsc.filterData.mu.Unlock()
  	}
  
  	return nil, nil
  }
docs: // handleLoadTxFilter implements the loadtxfilter command extension for
  // websocket connections.
  //
  // NOTE: This extension is ported from github.com/decred/dcrd