anchor.diff:  
   implementation
   
  -uses UPCDataTypes, UFileStorage, UNode;
  +uses UPCDataTypes, UFileStorage, UNode, UAbstractMem;
   
   { TRPCFileUtils }
   
  
positive.code:     if AInputParams.GetAsVariant('report').AsBoolean(False) then LReport := LStrings
      else LReport := Nil;
      Lobj := AJSONResponse.GetAsObject('result').GetAsObject('abstractmem');
      if TNode.Node.Bank.SafeBox.PCAbstractMem.AbstractMem.CheckConsistency(LReport, LTotalUsedSize, LTotalUsedBlocksCount, LTotalLeaksSize, LTotalLeaksBlocksCount) then begin
        Lobj.GetAsVariant('checkconsistency').Value := True;
      end else begin
        Lobj.GetAsVariant('checkconsistency').Value := False;
      end;
      Lobj.GetAsVariant('total_used_size').Value := LTotalUsedSize;
      Lobj.GetAsVariant('total_used_blocks_count').Value := LTotalUsedBlocksCount;
      Lobj.GetAsVariant('total_leaks_size').Value := LTotalLeaksSize;
      Lobj.GetAsVariant('total_leaks_blocks_count').Value := LTotalLeaksBlocksCount;
  
      if Assigned(LReport) then begin
        Larray := Lobj.GetAsArray('report');
        i := AInputParams.GetAsVariant('report_start').AsInteger(0);
        nMax := AInputParams.GetAsVariant('report_max').AsInteger(100);
        while (nMax>0) and (i>=0) and (i<LStrings.Count-1) do begin
          Larray.GetAsVariant(Larray.Count).Value := LStrings[i];
          inc(i);
          dec(nMax);
        end;
      end;
      Result := True;
    Finally
      LStrings.Free;
  
negative.code:    i, nMax : Integer;
     Lobj : TPCJSONObject;
     Larray : TPCJSONArray;
     {$IFDEF USE_ABSTRACTMEM}
     LAbstractMemZoneInfoList : TList<TAbstractMemZoneInfo>;
     {$ENDIF}
  begin
    if Not ASender.RPCServer.AllowUsePrivateKeys then begin
      AErrorNum := CT_RPC_ErrNum_NotAllowedCall;
  