anchor.diff:    end;
   
   implementation
  +
  +uses
  +  strutils,RegExpr;
  +
  +const
  +  FLIP_MODE_SAME_IMAGE = 'sameImage';
  +  FLIP_MODE_DIFF_IMAGES = 'diffImages';
  +
  +  RULE_DIRT = 'D';
  +  RULE_SAND = 'S';
  +  RULE_TRANSITION = 'T';
  +  RULE_NATIVE = 'N';
  +  RULE_ANY = '?';
  +
  +
  +  FLIP_PATTERN_HORIZONTAL = 1;
  +  FLIP_PATTERN_VERTICAL = 2;
  +  FLIP_PATTERN_BOTH = 3;
   
   type
     TTerrainViewInterval = record
  
positive.code:   Result := GetGroupConfig(TERRAIN_GROUPS[ATerrain]);
  end;
  
  { TTransitions }
  
  constructor TTransitions.Create;
  begin
    inherited Create(TTransition);
  end;
  
  { TTransition }
  
  constructor TTransition.Create(ACollection: TCollection);
  begin
    inherited Create(ACollection);
    FData := TStringList.Create;
  end;
  
  destructor TTransition.Destroy;
  begin
    FData.Free;
    inherited Destroy;
  end;
  
  function TTransition.GetData: TStrings;
  begin
    Result := FData;
  end;
  
  procedure TTransition.SetID(AValue: string);
  begin
    if FID = AValue then Exit;
    FID := AValue;
  end;
  
  procedure TTransition.SetMapping(AValue: string);
  begin
    if FMapping = AValue then Exit;
    FMapping := AValue;
  end;
  
  procedure TTransition.SetMinPoints(AValue: integer);
  begin
    if FMinPoints = AValue then Exit;
    FMinPoints := AValue;
  
negative.code: interface
  
  uses
    Classes, SysUtils,
    gvector,
    editor_types, def, fpjson, vcmi_json,
    filesystem_base, editor_classes;
  
  type
  