class SkipGeo {
  String? ipsUrl;
  String? ipsMd5;
  String? domainsUrl;
  String? domainsMd5;

  SkipGeo({
    this.ipsUrl,
    this.ipsMd5,
    this.domainsUrl,
    this.domainsMd5,
  });

  SkipGeo copyWith({
    String? ipsUrl,
    String? ipsMd5,
    String? domainsUrl,
    String? domainsMd5,
  }) {
    return SkipGeo(
      ipsUrl: ipsUrl ?? this.ipsUrl,
      ipsMd5: ipsMd5 ?? this.ipsMd5,
      domainsUrl: domainsUrl ?? this.domainsUrl,
      domainsMd5: domainsMd5 ?? this.domainsMd5,
    );
  }

  Map<String, dynamic> toJson() {
    return {
      'ipsUrl': ipsUrl,
      'ipsMd5': ipsMd5,
      'domainsUrl': domainsUrl,
      'domainsMd5': domainsMd5,
    };
  }

  factory SkipGeo.fromJson(Map<String, dynamic> json) {
    return SkipGeo(
      ipsUrl: json['ipsUrl'] as String?,
      ipsMd5: json['ipsMd5'] as String?,
      domainsUrl: json['domainsUrl'] as String?,
      domainsMd5: json['domainsMd5'] as String?,
    );
  }

  @override
  String toString() =>
      "SkipGeo(ipsUrl: $ipsUrl,ipsMd5: $ipsMd5,domainsUrl: $domainsUrl,domainsMd5: $domainsMd5)";

  @override
  int get hashCode => Object.hash(ipsUrl, ipsMd5, domainsUrl, domainsMd5);

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      other is SkipGeo &&
          runtimeType == other.runtimeType &&
          ipsUrl == other.ipsUrl &&
          ipsMd5 == other.ipsMd5 &&
          domainsUrl == other.domainsUrl &&
          domainsMd5 == other.domainsMd5;
}
