// f : voidfunc(S ua, S ip)
static void ai1lol_onNewUAIP(double interval, fO f) {
  doEvery(toMS(interval), 0, new Runnable {
    S last;
    
    public void run() {
      L<S> lines = tlft(loadPage("http://ai1.lol/1002157/raw/uaips?after=" + urlencode(last)));
      L l = (L) map safeUnstructure(lines);
      for (O x : l)
        pcallF(f, getString(x, 'ua), getString(x, 'ip));
      if (nempty(l)) last = last(lines);
    }
  });
}