anchor.diff:      property name : String read FName write FName;
       property version : String read Fversion write Fversion;
       property logoPath : String read FLogoPath write FLogoPath;
  +    property ErrorMessage : String read FErrorMessage write FErrorMessage;
   
       function login : boolean;
     end;
  
positive.code:     s := ARequestInfo.RawHTTPCommand.Split([' ']);
      pm := TParseMap.create(s[1].Substring(6));
      try
        FAuthCode := pm.GetVar('code');
        FFinalState := pm.GetVar('state');
        State := stDone;
      finally
        pm.free;
  
negative.code: 
    // called by a client to login via Smart App Launch
    // launches the user's referred browser, and waits for the cycle to complete
    TSmartLoginState = (stStarting, stDone, stComplete, stError);
    TIdleEvent = procedure(out stop : boolean) of object;
    TOpenURLEvent = procedure(url : String) of object;
    TSmartAppLaunchLogin = class (TAdvObject)
  