package Business::DK::Postalcode;

# $Id: Postalcode.pm 2 2008-09-06 19:38:09Z jonasbn $

use strict;
use warnings;
use Tree::Simple;
use vars qw($VERSION @EXPORT_OK);
use base qw(Exporter);
use Params::Validate qw(validate_pos SCALAR ARRAYREF OBJECT);

use constant DEBUG                       => 0;
use constant TRUE                        => 1;
use constant FALSE                       => 0;
use constant NUM_OF_DATA_ELEMENTS        => 6;
use constant NUM_OF_DIGITS_IN_POSTALCODE => 4;

## no critic (Variables::ProhibitPackageVars)
our @postal_data = <DATA>;

my $regex;

$VERSION = '0.03';
@EXPORT_OK
    = qw(get_all_postalcodes get_all_data create_regex validate_postalcode validate);

# TODO: we have to disable this policy here for some reason?
## no critic (Subroutines::RequireArgUnpacking)
sub validate_postalcode {
    my ($postalcode) = @_;

   #loose check since we are doing actual validation, so we just need a scalar
    validate_pos( @_, { type => SCALAR }, );

    if ( not $regex ) {
        $regex = ${ create_regex() };
    }

    if (my ($untainted_postalcode)
        = $postalcode =~ m{
        \A #beginning of string
        ($regex) #generated regular expression, capturing
        \z #end of string
        }xsm
        )
    {
        return $untainted_postalcode;
    } else {
        return FALSE;
    }
}

## no critic (Subroutines::RequireArgUnpacking)
sub validate {

    #validation happens in next step (see: validate_postalcode)
    return validate_postalcode( $_[0] );
}

sub get_all_data {
    return \@postal_data;
}

sub get_all_postalcodes {
    my ($parameter_data) = @_;
    my @postalcodes = ();

    validate_pos( @_, { type => ARRAYREF, optional => 1 }, );

    if ( not $parameter_data ) {
        @{$parameter_data} = @postal_data;
    }

    foreach my $zipcode ( @{$parameter_data} ) {
        _retrieve_postalcode( \@postalcodes, $zipcode );
    }

    return \@postalcodes;
}

sub _retrieve_postalcode {
    my ( $postalcodes, $string ) = @_;

    #this is used internally, but we stick it in here just to make sure we
    #get what we want
    validate_pos( @_, { type => ARRAYREF }, { type => SCALAR }, );

    ## no critic qw(RegularExpressions::RequireLineBoundaryMatching RegularExpressions::RequireExtendedFormatting RegularExpressions::RequireDotMatchAnything)
    my @entries = split /(\t|\s{2,})/x, $string, NUM_OF_DATA_ELEMENTS;

    if ($entries[0] =~ m{
        ^ #beginning of string
        \d{${\NUM_OF_DIGITS_IN_POSTALCODE}} #digits in postalcode
        $ #end of string
        }xsm
        )
    {
        push @{$postalcodes}, $entries[0];
    }

    return;
}

sub create_regex {
    my ($postalcodes) = @_;

    validate_pos( @_, { type => ARRAYREF, optional => 1 } );

    if ( not $postalcodes ) {
        $postalcodes = get_all_postalcodes();
    }

    my $tree = Tree::Simple->new( 'ROOT', Tree::Simple->ROOT );

    foreach my $postalcode ( @{$postalcodes} ) {
        _build_tree( $tree, $postalcode );
    }

    my $generated_regex = [];

    if ( $tree->isRoot && $tree->getChildCount > 1 ) {

        my $no_of_children = $tree->getChildCount();

        foreach my $child ( $tree->getAllChildren() ) {
            if ( $child->getIndex() < ( $tree->getChildCount() - 1 ) ) {
                $child->insertSibling( $child->getIndex() + 1,
                    Tree::Simple->new(q{|}) );
            }
        }
        $tree->insertChild( 0, Tree::Simple->new('(') );
        $tree->addChild( Tree::Simple->new(')') );
    }

    $tree->traverse(
        sub {
            my ($_tree) = shift;

            #DEBUG section - outputs tree to STDERR
            if (DEBUG) {
                warn "\n";
                $tree->traverse(
                    sub {
                        my ($traversal_tree) = @_;
                        warn( "\t" x $traversal_tree->getDepth() )
                            . $traversal_tree->getNodeValue() . "\n";
                    }
                );
            }
            my $no_of_children = $_tree->getChildCount();

            if ( $no_of_children > 1 ) {

                foreach my $child ( $_tree->getAllChildren() ) {
                    if ($child->getIndex() < ( $_tree->getChildCount() - 1 ) )
                    {
                        $child->insertSibling( $child->getIndex() + 1,
                            Tree::Simple->new(q{|}) );
                    }
                }

                #first element
                $_tree->insertChild( 0, Tree::Simple->new('(') );

                #last element
                $_tree->addChild( Tree::Simple->new(')') );
            }
        }
    );

    #traverses the tree and creates a flat list of the tree
    $tree->traverse(
        sub {
            my ($traversal_tree) = shift;
            push @{$generated_regex}, $traversal_tree->getNodeValue();
        }
    );

    #stringifies the flat list so we have a string representation of the
    #generated regular expression
    my $result = join q{}, @{$generated_regex};

    return \$result;
}

sub _build_tree {
    my ( $tree, $postalcode ) = @_;

    ## no critic qw(RegularExpressions::RequireLineBoundaryMatching RegularExpressions::RequireExtendedFormatting RegularExpressions::RequireDotMatchAnything)
    validate_pos(
        @_,
        { type => OBJECT, isa   => 'Tree::Simple' },
        { type => SCALAR, regex => qr/\d{${\NUM_OF_DIGITS_IN_POSTALCODE}}/, },
    );

    my $oldtree = $tree;

    my @digits = split //xsm, $postalcode, NUM_OF_DIGITS_IN_POSTALCODE;
    for ( my $i = 0; $i < scalar @digits; $i++ ) {

        if ( $i == 0 ) {
            $tree = $oldtree;
        }

        my $subtree = Tree::Simple->new( $digits[$i] );

        my @children = $tree->getAllChildren();
        my $child    = undef;
        foreach my $c (@children) {
            if ( $c->getNodeValue() == $subtree->getNodeValue() ) {
                $child = $c;
                last;
            }
        }

        if ($child) {
            $tree = $child;
        } else {
            $tree->addChild($subtree);
            $tree = $subtree;
        }
    }
    $tree = $oldtree;

    return 1;
}

1;

=pod

=head1 NAME

Business::DK::Postalcode - validation of Danish postal codes

=head1 VERSION

This documentation describes version 0.03

=head1 SYNOPSIS

    # basic validation of string
    use Business::DK::Postalcode qw(validate);
    
    if (validate($postalcode)) {
        print "We have a valid Danish postalcode\n";
    } else {
        print "Not a valid Danish postalcode\n";
    }


    # basic validation of string, using less intrusive subroutine
    use Business::DK::Postalcode qw(validate_postalcode);
    
    if (validate_postalcode($postalcode)) {
        print "We have a valid Danish postal code\n";
    } else {
        print "Not a valid Danish postal code\n";
    }

    
    # using the untainted return value
    use Business::DK::Postalcode qw(validate_postalcode);
    
    if (my $untainted = validate_postalcode($postalcode)) {
        print "We have a valid Danish postal code: $untainted\n";
    } else {
        print "Not a valid Danish postal code\n";
    }

    
    # extracting a regex for validation of Danish postal codes
    use Business::DK::Postalcode qw(create_regex);

    my $regex_ref = ${create_regex()};

    if ($postalcode =~ m/$regex/) {
        print "We have a valid Danish postalcode\n";
    } else {
        print "Not a valid Danish postalcode\n";
    }


    # All postal codes for use outside this module
    use Business::DK::Postalcode qw(get_all_postalcodes);
    
    my @postalcodes = @{get_all_postalcodes()};

    
    # All postal codes and data for use outside this module
    use Business::DK::Postalcode qw(get_all_data);
    
    my $postalcodes = get_all_data();
    
    foreach (@{postalcodes}) {
        printf
            'postalcode: %s city: %s street/desc: %s company: %s province: %d country: %d', split /\t/, $_, 6;
    }


=head1 FEATURES

=over

=item * Providing list of Danish postal codes and related area names 

=back

=head1 DESCRIPTION

=head2 Data

=over

=item * city

=item * street/desc

=item * company

=item * province

=item * country

=back

=head1 SUBROUTINES AND METHODS

=head2 validate

A simple validator for Danish postal codes.

Takes a string representing a possible Danish postal code and returns either
B<1> or B<0> indicating either validity or invalidity.

=head2 validate_postalcode

A less intrusive subroutine for import. Acts as a wrapper of L</validate>.

=head2 get_all_data

Returns a reference to a a list of strings, separated by tab characters. See
L</Data> for a description of the fields.

=head2 get_all_postalcodes

Returns a reference to an array containing all valid Danish postal codes.

=head2 create_regex

This method returns a generated regular expression for validation of a string
representing a possible Danish postal code.

=head1 PRIVATE SUBROUTINES AND METHODS

=head3 _retrieve_postalcode

Internal method

=head3 _build_tree

Internal method to assist L<create_regex> in generating the regular expression.

Takes a L<Tree::Simple> object and a reference to an array of data elements.

=head1 DIAGNOSTICS

=head1 CONFIGURATION AND ENVIRONMENT

This distribution requires no special configuration or environment.

=head1 DEPENDENCIES

=over

=item * L<Exporter>

=item * L<Tree::Simple>

=item * L<Params::Validate>

=back

=head1 BUGS AND LIMITATIONS

There are no known bugs at this time.

=head1 BUG REPORTING

Please report issues via CPAN RT:

  http://rt.cpan.org/NoAuth/Bugs.html?Dist=Business-DK-Postalcode

or by sending mail to

  bug-Business-DK-Postalcode@rt.cpan.org

=head1 INCOMPATIBILITIES

There are no known incompatibilities at this time.

=head1 TEST AND QUALITY

=head2 Perl::Critic

This version of the code is complying with Perl::Critic a severity: 1

The following policies have been disabled.

=over

=item * L<Perl::Critic::Policy::Variables::ProhibitPackageVars>

Disabled locally using 'no critic' pragma.

The module  uses a package variable as a cache, this might not prove usefull in
the long term, so when this is adressed and this might address this policy.

=item * L<Perl::Critic::Policy::Subroutines::RequireArgUnpacking>

Disabled locally using 'no critic' pragma.

This policy is violated when using L<Params::Validate> at some point this will
be investigated further, this might be an issue due to referral to @_.

=item * L<Perl::Critic::Policy::RegularExpressions::RequireLineBoundaryMatching>

Disabled locally using 'no critic' pragma.

This is disabled for some two basic regular expressions.

=item * L<Perl::Critic::Policy::RegularExpressions::RequireExtendedFormatting>

Disabled locally using 'no critic' pragma.

This is disabled for some two basic regular expressions.

=item * L<Perl::Critic::Policy::RegularExpressions::RequireDotMatchAnything>

Disabled locally using 'no critic' pragma.

This is disabled for some two basic regular expressions.

=item * L<Perl::Critic::Policy::ValuesAndExpressions::ProhibitConstantPragma>

Constants are good, - see the link below.

=item * L<https://logiclab.jira.com/wiki/display/OPEN/Perl-Critic-Policy-ValuesAndExpressions-ProhibitConstantPragma>

=item * L<Perl::Critic::Policy::Documentation::RequirePodAtEnd>

This one interfers with our DATA section, perhaps DATA should go before POD,
well it is not important so I have disabled the policy.

=item * L<Perl::Critic::Policy::ControlStructures::ProhibitCStyleForLoops>

This would require a re-write of part of the code. Currently I rely on use of the iterator in the F<for> loop, so it would require significant
changes.

=item * L<Perl::Critic::Policy::Documentation::RequirePodLinksIncludeText>

Temporarily disabled, marked for follow-up

=back

Please see F<t/perlcriticrc> for details.

=head2 TEST COVERAGE

Test coverage report is generated using L<Devel::Cover> via L<Module::Build>.

    ---------------------------- ------ ------ ------ ------ ------ ------ ------
    File                           stmt   bran   cond    sub    pod   time  total
    ---------------------------- ------ ------ ------ ------ ------ ------ ------
    ...Business/DK/Postalcode.pm  100.0   87.5   33.3  100.0  100.0   99.4   97.0
    ...Business/DK/Postalcode.pm  100.0  100.0    n/a  100.0  100.0    0.6  100.0
    Total                         100.0   90.6   33.3  100.0  100.0  100.0   97.8
    ---------------------------- ------ ------ ------ ------ ------ ------ ------

    $ ./Build testcover

=head1 SEE ALSO

=over

=item * L<Geo::Postcodes::DK>

=item * L<http://www.postdanmark.dk/cms/da-dk/eposthuset/postservices/aendringer_postnumre_1.htm>

=item * L<https://metacpan.org/module/Regexp::Common::zip#RE-zip-Denmark->

=item * L<Business::DK::CVR>

=item * L<Business::DK::CPR>

=item * L<Business::DK::FI>

=item * L<Business::DK::PO>

=back

=head1 Resources

=over

=item * Website: L<http://logicLAB.jira.com/browse/BDKPST>

=item * Bugtracker: L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Business-DK-Postalcode>

=item * SVN repository: L<http://logicLAB.jira.com/svn/BDKPST>

=back

=head1 TODO

Please see the project F<TODO> file.

=head1 AUTHOR

Jonas B. Nielsen, (jonasbn) - C<< <jonasbn@cpan.org> >>

=head1 MOTIVATION

Back in 2006 I was working on a project where I needed to do some presentation
and validation of Danish postal codes. I looked at Regex::Common::Zip (see: L<https://metacpan.org/module/Regexp::Common::zip#RE-zip-Denmark->)

The implementation at the time of writing looked as follows:

    Denmark     =>  "(?k:(?k:[1-9])(?k:[0-9])(?k:[0-9]{2}))",
    # Postal codes of the form: 'DDDD', with the first
    # digit representing the distribution region, the
    # second digit the distribution district. Postal
    # codes do not start with a zero. Postal codes 
    # starting with '39' are in Greenland.

This pattern holds some issues:

=over

=item * Doing some fast math you can see that you will allow 9000 valid postal
codes where the exact number is 1254 and 0 is actually allowed for a set of
postal codes used by the postal service in Denmark

=item * Greenland specified as starting with '39' is not a part of Denmark, but
should be under Greenland and the ISO code 'GL'

=back

So I decided to write a regular expression, which would be better than the one
above, but I did not want to maintain it I wanted to write a piece of software,
which could generate the pattern for me based on a finite data set.

=head1 COPYRIGHT

Business-DK-Postalcode is (C) by Jonas B. Nielsen, (jonasbn) 2006-2013

=head1 LICENSE

Business-DK-Postalcode and related is released under the Artistic License 2.0

=over

=item * http://www.opensource.org/licenses/Artistic-2.0

=back

=cut

__DATA__
0555    Scanning        Data Scanning A/S   True    1
0800    Høje Taastrup   Girostrøget 1   BG-Bank A/S True    1
0877    København C Havneholmen 33  Aller Press (konkurrencer)  False   1
0892    Sjælland USF P  Ufrankerede svarforsendelser        False   1
0893    Sjælland USF B  Ufrankerede svarforsendelser        False   1
0894    Udbetaling      (Post til scanning) False   1
0897    eBrevsprækken       (Post til scanning) False   1
0899    Kommuneservice      (Post til scanning) False   1
0900    København C     Københavns Postcenter + erhvervskunder  False   1
0910    København C Ufrankerede svarforsendelser        False   1
0917    Københavns Pakkecenter      (Returpakker)   False   1
0918    Københavns Pakke BRC        (Returpakker)   False   1
0919    Returprint BRC          False   1
0929    København C Ufrankerede svarforsendelser        False   1
0960    Internationalt Postcenter       (Internt)   False   1
0999    København C     DR Byen False   1
1000    København K Købmagergade 33 Købmagergade Postkontor False   1
1001    København K Postboks        False   1
1002    København K Postboks        False   1
1003    København K Postboks        False   1
1004    København K Postboks        False   1
1005    København K Postboks        False   1
1006    København K Postboks        False   1
1007    København K Postboks        False   1
1008    København K Postboks        False   1
1009    København K Postboks        False   1
1010    København K Postboks        False   1
1011    København K Postboks        False   1
1012    København K Postboks        False   1
1013    København K Postboks        False   1
1014    København K Postboks        False   1
1015    København K Postboks        False   1
1016    København K Postboks        False   1
1017    København K Postboks        False   1
1018    København K Postboks        False   1
1019    København K Postboks        False   1
1020    København K Postboks        False   1
1021    København K Postboks        False   1
1022    København K Postboks        False   1
1023    København K Postboks        False   1
1024    København K Postboks        False   1
1025    København K Postboks        False   1
1026    København K Postboks        False   1
1045    København K Ufrankerede svarforsendelser        False   1
1050    København K Kongens Nytorv      False   1
1051    København K Nyhavn      False   1
1052    København K Herluf Trolles Gade     False   1
1053    København K Cort Adelers Gade       False   1
1054    København K Peder Skrams Gade       False   1
1055    København K Tordenskjoldsgade       False   1
1055    København K August Bournonvilles Passage        False   1
1056    København K Heibergsgade        False   1
1057    København K Holbergsgade        False   1
1058    København K Havnegade       False   1
1059    København K Niels Juels Gade        False   1
1060    København K Holmens Kanal       False   1
1061    København K Ved Stranden        False   1
1062    København K Boldhusgade     False   1
1063    København K Laksegade       False   1
1064    København K Asylgade        False   1
1065    København K Fortunstræde        False   1
1066    København K Admiralgade     False   1
1067    København K Nikolaj Plads       False   1
1068    København K Nikolajgade     False   1
1069    København K Bremerholm      False   1
1070    København K Vingårdstræde       False   1
1071    København K Dybensgade      False   1
1072    København K Lille Kirkestræde       False   1
1073    København K Store Kirkestræde       False   1
1074    København K Lille Kongensgade       False   1
1092    København K Holmens Kanal 2-12  Danske Bank A/S False   1
1093    København K Havnegade 5 Danmarks Nationalbank   False   1
1095    København K Kongens Nytorv 13   Magasin du Nord False   1
1098    København K Esplanaden 50   A.P. Møller False   1
1100    København K Østergade       False   1
1101    København K Ny Østergade        False   1
1102    København K Pistolstræde        False   1
1103    København K Hovedvagtsgade      False   1
1104    København K Ny Adelgade     False   1
1105    København K Kristen Bernikows Gade      False   1
1106    København K Antonigade      False   1
1107    København K Grønnegade      False   1
1110    København K Store Regnegade     False   1
1111    København K Christian IX's Gade     False   1
1112    København K Pilestræde      False   1
1113    København K Silkegade       False   1
1114    København K Kronprinsensgade        False   1
1115    København K Klareboderne        False   1
1116    København K Møntergade      False   1
1117    København K Gammel Mønt     False   1
1118    København K Sværtegade      False   1
1119    København K Landemærket     False   1
1120    København K Vognmagergade       False   1
1121    København K Lønporten       False   1
1122    København K Sjæleboderne        False   1
1123    København K Gothersgade     False   1
1124    København K Åbenrå      False   1
1125    København K Suhmsgade       False   1
1126    København K Pustervig       False   1
1127    København K Hauser Plads        False   1
1128    København K Hausergade      False   1
1129    København K Sankt Gertruds Stræde       False   1
1130    København K Rosenborggade       False   1
1131    København K Tornebuskegade      False   1
1140    København K Møntergade 19   Dagbladet Børsen    False   1
1147    København K Pilestræde 34   Berlingske Tidende  False   1
1148    København K Vognmagergade 11    Egmont  False   1
1150    København K Købmagergade        False   1
1151    København K Valkendorfsgade     False   1
1152    København K Løvstræde       False   1
1153    København K Niels Hemmingsens Gade      False   1
1154    København K Gråbrødretorv       False   1
1155    København K Kejsergade      False   1
1156    København K Gråbrødrestræde     False   1
1157    København K Klosterstræde       False   1
1158    København K Skoubogade      False   1
1159    København K Skindergade     False   1
1160    København K Amagertorv      False   1
1161    København K Vimmelskaftet       False   1
1162    København K Jorcks Passage      False   1
1163    København K Klostergården       False   1
1164    København K Nygade      False   1
1165    København K Nørregade       False   1
1165    København K Sankt Petri Passage     False   1
1166    København K Dyrkøb      False   1
1167    København K Bispetorvet     False   1
1168    København K Frue Plads      False   1
1169    København K Store Kannikestræde     False   1
1170    København K Lille Kannikestræde     False   1
1171    København K Fiolstræde      False   1
1172    København K Krystalgade     False   1
1173    København K Peder Hvitfeldts Stræde     False   1
1174    København K Rosengården     False   1
1175    København K Kultorvet       False   1
1200    København K Højbro Plads        False   1
1201    København K Læderstræde     False   1
1202    København K Gammel Strand       False   1
1203    København K Nybrogade       False   1
1204    København K Magstræde       False   1
1205    København K Snaregade       False   1
1206    København K Naboløs     False   1
1207    København K Hyskenstræde        False   1
1208    København K Kompagnistræde      False   1
1209    København K Badstuestræde       False   1
1210    København K Knabrostræde        False   1
1211    København K Brolæggerstræde     False   1
1212    København K Vindebrogade        False   1
1213    København K Bertel Thorvaldsens Plads       False   1
1214    København K Tøjhusgade      False   1
1215    København K Børsgade        False   1
1216    København K Slotsholmsgade      False   1
1217    København K Børsen      False   1
1218    København K Christiansborg      False   1
1218    København K Christiansborg Ridebane     False   1
1218    København K Christiansborg Slotsplads       False   1
1218    København K Prins Jørgens Gård      False   1
1218    København K Proviantpassagen        False   1
1218    København K Rigsdagsgården      False   1
1219    København K Christians Brygge 1-5 og 8      False   1
1220    København K Frederiksholms Kanal        False   1
1221    København K Søren Kierkegaards Plads        False   1
1240    København K Christiansborg  Folketinget False   1
1250    København K Sankt Annæ Plads        False   1
1251    København K Kvæsthusgade        False   1
1252    København K Kvæsthusbroen       False   1
1253    København K Toldbodgade     False   1
1254    København K Lille Strandstræde      False   1
1255    København K Store Strandstræde      False   1
1256    København K Amaliegade      False   1
1257    København K Amalienborg     False   1
1258    København K Larsens Plads       False   1
1259    København K Nordre Toldbod      False   1
1259    København K Trekroner       False   1
1260    København K Bredgade        False   1
1261    København K Palægade        False   1
1263    København K Churchillparken     False   1
1263    København K Esplanaden      False   1
1264    København K Store Kongensgade       False   1
1265    København K Frederiksgade       False   1
1266    København K Bornholmsgade       False   1
1267    København K Hammerensgade       False   1
1268    København K Jens Kofods Gade        False   1
1270    København K Grønningen      False   1
1271    København K Poul Ankers Gade        False   1
1291    København K Sankt Annæ Plads 26-28  J. Lauritzen A/S    False   1
1300    København K Borgergade      False   1
1301    København K Landgreven      False   1
1302    København K Dronningens Tværgade        False   1
1303    København K Hindegade       False   1
1304    København K Adelgade        False   1
1306    København K Kronprinsessegade       False   1
1307    København K Georg Brandes Plads     False   1
1307    København K Sølvgade        False   1
1308    København K Klerkegade      False   1
1309    København K Rosengade       False   1
1310    København K Fredericiagade      False   1
1311    København K Olfert Fischers Gade        False   1
1312    København K Gammelvagt      False   1
1313    København K Sankt Pauls Gade        False   1
1314    København K Sankt Pauls Plads       False   1
1315    København K Rævegade        False   1
1316    København K Rigensgade      False   1
1317    København K Stokhusgade     False   1
1318    København K Krusemyntegade      False   1
1319    København K Gernersgade     False   1
1320    København K Haregade        False   1
1321    København K Tigergade       False   1
1322    København K Suensonsgade        False   1
1323    København K Hjertensfrydsgade       False   1
1324    København K Elsdyrsgade     False   1
1325    København K Delfingade      False   1
1326    København K Krokodillegade      False   1
1327    København K Vildandegade        False   1
1328    København K Svanegade       False   1
1329    København K Timiansgade     False   1
1349    København K Sølvgade 40 DSB False   1
1350    København K Øster Voldgade      False   1
1352    København K Rørholmsgade        False   1
1353    København K Øster Farimagsgade 3-15 og 2        False   1
1354    København K Ole Suhrs Gade      False   1
1355    København K Gammeltoftsgade     False   1
1356    København K Bartholinsgade      False   1
1357    København K Øster Søgade 8-36       False   1
1358    København K Nørre Voldgade      False   1
1359    København K Ahlefeldtsgade      False   1
1359    København K Charlotte Ammundsens Plads      False   1
1360    København K Frederiksborggade       False   1
1361    København K Israels Plads       False   1
1361    København K Linnésgade      False   1
1362    København K Rømersgade      False   1
1363    København K Vendersgade     False   1
1364    København K Nørre Farimagsgade      False   1
1365    København K Schacksgade     False   1
1366    København K Nansensgade     False   1
1367    København K Kjeld Langes Gade       False   1
1368    København K Turesensgade        False   1
1369    København K Gyldenløvesgade lige nr.        False   1
1370    København K Nørre Søgade        False   1
1371    København K Søtorvet        False   1
1400    København K Knippelsbro     False   1
1400    København K Torvegade       False   1
1401    København K Strandgade      False   1
1402    København K Asiatisk Plads      False   1
1402    København K David Balfours Gade     False   1
1402    København K Hammershøi Kaj      False   1
1402    København K Johan Semps Gade        False   1
1402    København K Nicolai Eigtveds Gade       False   1
1403    København K Wilders Plads       False   1
1404    København K Krøyers Plads       False   1
1406    København K Christianshavns Kanal       False   1
1407    København K Bådsmandsstræde     False   1
1408    København K Wildersgade     False   1
1409    København K Knippelsbrogade     False   1
1410    København K Christianshavns Torv        False   1
1411    København K Langebrogade        False   1
1411    København K Applebys Plads      False   1
1412    København K Voldgården      False   1
1413    København K Ved Kanalen     False   1
1414    København K Overgaden Neden Vandet      False   1
1415    København K Overgaden Oven Vandet       False   1
1416    København K Sankt Annæ Gade     False   1
1417    København K Mikkel Vibes Gade       False   1
1418    København K Sofiegade       False   1
1419    København K Store Søndervoldstræde      False   1
1420    København K Dronningensgade     False   1
1421    København K Lille Søndervoldstræde      False   1
1422    København K Prinsessegade       False   1
1423    København K Amagergade      False   1
1424    København K Christianshavns Voldgade        False   1
1425    København K Ved Volden      False   1
1426    København K Voldboligerne       False   1
1427    København K Brobergsgade        False   1
1428    København K Andreas Bjørns Gade     False   1
1429    København K Burmeistersgade     False   1
1430    København K Bodenhoffs Plads        False   1
1431    København K Islands Plads       False   1
1432    København K Margretheholmsvej       False   1
1432    København K Refshalevej     False   1
1432    København K William Wains Gade      False   1
1433    København K Christiansholms Ø       False   1
1433    København K Flakfortet      False   1
1433    København K Lynetten        False   1
1433    København K Margretheholm       False   1
1433    København K Middelgrundsfortet      False   1
1433    København K Quintus     False   1
1433    København K Refshaleøen     False   1
1434    København K Danneskiold-Samsøes Allé        False   1
1435    København K Philip De Langes Allé       False   1
1436    København K Arsenalvej      False   1
1436    København K Halvtolv        False   1
1436    København K Kuglegården     False   1
1436    København K Kuglegårdsvej       False   1
1436    København K Søartillerivej      False   1
1436    København K Trangravsvej        False   1
1436    København K Værftsbroen     False   1
1437    København K Bohlendachvej       False   1
1437    København K Eik Skaløes Plads       False   1
1437    København K Fabrikmestervej     False   1
1437    København K Galionsvej      False   1
1437    København K Kanonbådsvej        False   1
1437    København K Leo Mathisens Vej       False   1
1437    København K Masteskursvej       False   1
1437    København K Per Knutzons Vej        False   1
1437    København K Schifters Kvarter       False   1
1437    København K Stibolts Kvarter        False   1
1437    København K Takkelloftsvej      False   1
1437    København K Theodor Christensens Plads      False   1
1438    København K Benstrups Kvarter       False   1
1438    København K Dokøvej     False   1
1438    København K Ekvipagemestervej       False   1
1438    København K Judichærs Plads     False   1
1438    København K Orlogsværftvej      False   1
1439    København K A.H. Vedels Plads       False   1
1439    København K Bradbænken      False   1
1439    København K Elefanten       False   1
1439    København K Eskadrevej      False   1
1439    København K H.C. Sneedorffs Allé        False   1
1439    København K Henrik Gerners Plads        False   1
1439    København K Henrik Spans Vej        False   1
1439    København K Kongebrovej     False   1
1439    København K Krudtløbsvej        False   1
1439    København K Minørvej        False   1
1439    København K P. Løvenørns Vej        False   1
1439    København K Spanteloftvej       False   1
1439    København K Takkeladsvej        False   1
1439    København K Ved Sixtusbatteriet     False   1
1439    København K Ved Søminegraven        False   1
1440    København K Bjørnekloen     False   1
1440    København K Blå Karamel     False   1
1440    København K Fabriksområdet      False   1
1440    København K Fredens Ark     False   1
1440    København K Løvehuset       False   1
1440    København K Mælkebøtten     False   1
1440    København K Mælkevejen      False   1
1440    København K Nordområdet     False   1
1440    København K Psyak       False   1
1440    København K Sydområdet      False   1
1440    København K Tinghuset       False   1
1441    København K Midtdyssen      False   1
1441    København K Norddyssen      False   1
1441    København K Syddyssen       False   1
1448    København K Asiatisk Plads 2    Udenrigsministeriet False   1
1450    København K Nytorv      False   1
1451    København K Larslejsstræde      False   1
1452    København K Teglgårdstræde      False   1
1453    København K Sankt Peders Stræde     False   1
1454    København K Larsbjørnsstræde        False   1
1455    København K Studiestræde 3-49 og 6-40       False   1
1456    København K Vestergade      False   1
1457    København K Gammeltorv      False   1
1458    København K Kattesundet     False   1
1459    København K Frederiksberggade       False   1
1460    København K Mikkel Bryggers Gade        False   1
1461    København K Slutterigade        False   1
1462    København K Lavendelstræde      False   1
1463    København K Farvergade      False   1
1464    København K Hestemøllestræde        False   1
1465    København K Gåsegade        False   1
1466    København K Rådhusstræde        False   1
1467    København K Vandkunsten     False   1
1468    København K Løngangstræde       False   1
1470    København K Stormgade 2-14      False   1
1471    København K Ny Vestergade       False   1
1472    København K Ny Kongensgade 1-15 og 4-14     False   1
1473    København K Bryghusgade     False   1
1500    København V Bernstorffsgade 40  Vesterbro Postkontor    False   1
1501    København V Postboks        False   1
1502    København V Postboks        False   1
1503    København V Postboks        False   1
1504    København V Postboks        False   1
1505    København V Postboks        False   1
1506    København V Postboks        False   1
1507    København V Postboks        False   1
1508    København V Postboks        False   1
1509    København V Postboks        False   1
1510    København V Postboks        False   1
1512    Returpost       (Internt)   False   1
1513    Centraltastning     (Internt)   False   1
1532    København V Kystvejen 26, 2770 Kastrup  Internationalt Postcenter, returforsendelser + consignment  False   1
1533    København V Kystvejen 26, 2770 Kastrup  Internationalt Postcenter   False   1
1550    København V Bag Rådhuset        False   1
1550    København V Rådhuspladsen       False   1
1551    København V Jarmers Plads       False   1
1552    København V Vester Voldgade     False   1
1553    København V H.C. Andersens Boulevard        False   1
1553    København V Langebro        False   1
1554    København V Studiestræde 57-69 og 50-54     False   1
1555    København V Stormgade 20 og 35      False   1
1556    København V Dantes Plads        False   1
1557    København V Ny Kongensgade 19-21 og 18-20       False   1
1558    København V Christiansborggade      False   1
1559    København V Christians Brygge 24-30     False   1
1560    København V Kalvebod Brygge     False   1
1561    København V Fisketorvet     False   1
1561    København V Kalvebod Pladsvej       False   1
1562    København V Hambrosgade     False   1
1563    København V Otto Mønsteds Plads     False   1
1564    København V Rysensteensgade     False   1
1566    København V Tietgensgade 37 Post Danmark A/S    False   1
1567    København V Polititorvet        False   1
1568    København V Mitchellsgade       False   1
1569    København V Edvard Falcks Gade      False   1
1570    København V Banegårdspladsen        False   1
1570    København V Københavns Hovedbanegård        False   1
1571    København V Otto Mønsteds Gade      False   1
1572    København V Anker Heegaards Gade        False   1
1573    København V Puggaardsgade       False   1
1574    København V Niels Brocks Gade       False   1
1575    København V Ved Glyptoteket     False   1
1576    København V Stoltenbergsgade        False   1
1577    København V Arni Magnussons Gade        False   1
1577    København V Carsten Niebuhrs Gade       False   1
1577    København V Bernstorffsgade     False   1
1592    København V Bernstorffsgade 17-19   Københavns Socialdirektorat False   1
1599    København V Rådhuspladsen 1     Københavns Rådhus   False   1
1600    København V Gyldenløvesgade ulige nr.       False   1
1601    København V Vester Søgade       False   1
1602    København V Nyropsgade      False   1
1603    København V Dahlerupsgade       False   1
1604    København V Kampmannsgade       False   1
1605    København V Herholdtsgade       False   1
1606    København V Vester Farimagsgade     False   1
1607    København V Staunings Plads     False   1
1608    København V Jernbanegade        False   1
1609    København V Axeltorv        False   1
1610    København V Gammel Kongevej 1-55 og 10      False   1
1611    København V Hammerichsgade      False   1
1612    København V Ved Vesterport      False   1
1613    København V Meldahlsgade        False   1
1614    København V Trommesalen     False   1
1615    København V Sankt Jørgens Allé      False   1
1616    København V Stenosgade      False   1
1617    København V Bagerstræde     False   1
1618    København V Tullinsgade     False   1
1619    København V Værnedamsvej lige nr.       False   1
1620    København V Vesterbrogade 1-149 og 2-150        False   1
1620    København V Vesterbros Torv     False   1
1621    København V Frederiksberg Alle 1 - 13B      False   1
1622    København V Boyesgade ulige nr      False   1
1623    København V Kingosgade 1-9      False   1
1624    København V Brorsonsgade        False   1
1630    København V Vesterbrogade 3 Tivoli A/S  False   1
1631    København V Herman Triers Plads     False   1
1632    København V Julius Thomsens Gade lige nr        False   1
1633    København V Kleinsgade      False   1
1634    København V Rosenørns Allé 2-18     False   1
1635    København V Åboulevard 1-13     False   1
1640    København V Dahlerupsgade 6 Københavns Folkeregister    False   1
1650    København V Istedgade       False   1
1651    København V Reventlowsgade      False   1
1652    København V Colbjørnsensgade        False   1
1653    København V Helgolandsgade      False   1
1654    København V Abel Cathrines Gade     False   1
1655    København V Viktoriagade        False   1
1656    København V Gasværksvej     False   1
1657    København V Eskildsgade     False   1
1658    København V Absalonsgade        False   1
1659    København V Svendsgade      False   1
1660    København V Dannebrogsgade      False   1
1660    København V Otto Krabbes Plads      False   1
1661    København V Westend     False   1
1662    København V Saxogade        False   1
1663    København V Oehlenschlægersgade     False   1
1664    København V Kaalundsgade        False   1
1665    København V Valdemarsgade       False   1
1666    København V Matthæusgade        False   1
1667    København V Frederiksstadsgade      False   1
1668    København V Mysundegade     False   1
1669    København V Flensborggade       False   1
1670    København V Enghave Plads       False   1
1671    København V Haderslevgade       False   1
1671    København V Tove Ditlevsens Plads       False   1
1672    København V Broagergade     False   1
1673    København V Ullerupgade     False   1
1674    København V Enghavevej 1-77 og 2-78     False   1
1675    København V Kongshøjgade        False   1
1676    København V Sankelmarksgade     False   1
1677    København V Gråstensgade        False   1
1699    København V Staldgade       False   1
1700    København V Halmtorvet      False   1
1701    København V Reverdilsgade       False   1
1702    København V Stampesgade     False   1
1703    København V Lille Colbjørnsensgade      False   1
1704    København V Tietgensgade        False   1
1705    København V Ingerslevsgade      False   1
1706    København V Lille Istedgade     False   1
1707    København V Maria Kirkeplads        False   1
1708    København V Eriksgade       False   1
1709    København V Skydebanegade       False   1
1710    København V Kvægtorvsgade       False   1
1711    København V Flæsketorvet        False   1
1711    København V Onkel Dannys Plads      False   1
1712    København V Høkerboderne        False   1
1713    København V Kvægtorvet      False   1
1714    København V Kødboderne      False   1
1715    København V Slagtehusgade       False   1
1716    København V Slagterboderne      False   1
1717    København V Skelbækgade     False   1
1718    København V Sommerstedgade      False   1
1719    København V Krusågade       False   1
1720    København V Sønder Boulevard        False   1
1721    København V Dybbølsgade     False   1
1722    København V Godsbanegade        False   1
1723    København V Letlandsgade        False   1
1724    København V Estlandsgade        False   1
1725    København V Esbern Snares Gade      False   1
1726    København V Arkonagade      False   1
1727    København V Asger Rygs Gade     False   1
1728    København V Skjalm Hvides Gade      False   1
1729    København V Sigerstedgade       False   1
1730    København V Knud Lavards Gade       False   1
1731    København V Erik Ejegods Gade       False   1
1732    København V Bodilsgade      False   1
1733    København V Palnatokesgade      False   1
1734    København V Heilsgade       False   1
1735    København V Røddinggade     False   1
1736    København V Bevtoftgade     False   1
1737    København V Bustrupgade     False   1
1738    København V Stenderupgade       False   1
1739    København V Enghave Passage     False   1
1749    København V Rahbeks Allé 3-11       False   1
1750    København V Vesterfælledvej 1-9 og 2-56     False   1
1751    København V Sundevedsgade       False   1
1752    København V Tøndergade      False   1
1753    København V Ballumgade      False   1
1754    København V Hedebygade      False   1
1755    København V Møgeltøndergade     False   1
1756    København V Amerikavej      False   1
1757    København V Trøjborggade        False   1
1758    København V Lyrskovgade     False   1
1759    København V Rejsbygade      False   1
1760    København V Ny Carlsberg Vej 1-37 og 2-66       False   1
1761    København V Ejderstedgade       False   1
1762    København V Slesvigsgade        False   1
1763    København V Dannevirkegade      False   1
1764    København V Alsgade     False   1
1765    København V Angelgade       False   1
1766    København V Slien       False   1
1770    København V Carstensgade        False   1
1771    København V Lundbyesgade        False   1
1772    København V Ernst Meyers Gade       False   1
1773    København V Bissensgade     False   1
1774    København V Küchlersgade        False   1
1775    København V Freundsgade     False   1
1777    København V Jerichausgade       False   1
1780    København V     Erhvervskunder  False   1
1782    København V Ufrankerede svarforsendelser        False   1
1785    København V Rådhuspladsen 33 og 37  Politiken og Ekstrabladet   False   1
1786    København V Vesterbrogade 8 Nordea  False   1
1787    København V H.C. Andersens Boulevard 18 Dansk Industri  False   1
1790    København V     Erhvervskunder  False   1
1799    København V Bag Elefanterne     False   1
1799    København V Banevolden 2        False   1
1799    København V Bjerregårdsvej 5 og 7       False   1
1799    København V Bryggernes Plads        False   1
1799    København V Gamle Carlsberg Vej     False   1
1799    København V Kammasvej 2, 4 og 6     False   1
1799    København V Ny Carlsberg Vej fra 39 og fra 68       False   1
1799    København V Ottilia Jacobsens Plads     False   1
1799    København V Pasteursvej     False   1
1799    København V Rahbeks Allé 13-15      False   1
1799    København V Valby Langgade 1        False   1
1799    København V Vesterfælledvej 58-110      False   1
1800    Frederiksberg C Vesterbrogade 161-191 og 162-208        False   1
1801    Frederiksberg C Rahbeks Alle 2-36       False   1
1802    Frederiksberg C Halls Alle      False   1
1803    Frederiksberg C Brøndsteds Alle     False   1
1804    Frederiksberg C Bakkegårds Alle     False   1
1805    Frederiksberg C Kammasvej 3     False   1
1806    Frederiksberg C Jacobys Alle        False   1
1807    Frederiksberg C Schlegels Alle      False   1
1808    Frederiksberg C Asmussens Alle      False   1
1809    Frederiksberg C Frydendalsvej       False   1
1810    Frederiksberg C Platanvej       False   1
1811    Frederiksberg C Asgårdsvej      False   1
1812    Frederiksberg C Kochsvej        False   1
1813    Frederiksberg C Henrik Ibsens Vej       False   1
1814    Frederiksberg C Carit Etlars Vej        False   1
1815    Frederiksberg C Paludan Müllers Vej     False   1
1816    Frederiksberg C Engtoftevej     False   1
1817    Frederiksberg C Carl Bernhards Vej      False   1
1818    Frederiksberg C Kingosgade 11-17 og 8-10        False   1
1819    Frederiksberg C Værnedamsvej ulige nr.      False   1
1820    Frederiksberg C Frederiksberg Alle 15-63 og 2-104       False   1
1822    Frederiksberg C Boyesgade lige nr.      False   1
1823    Frederiksberg C Haveselskabetsvej       False   1
1824    Frederiksberg C Sankt Thomas Alle       False   1
1825    Frederiksberg C Hauchsvej       False   1
1826    Frederiksberg C Alhambravej     False   1
1827    Frederiksberg C Mynstersvej     False   1
1828    Frederiksberg C Martensens Alle     False   1
1829    Frederiksberg C Madvigs Alle        False   1
1835    Frederiksberg C Postboks        False   1
1850    Frederiksberg C Gammel Kongevej 85-179 og 60-178        False   1
1851    Frederiksberg C Nyvej       False   1
1852    Frederiksberg C Amicisvej       False   1
1853    Frederiksberg C Maglekildevej       False   1
1854    Frederiksberg C Dr. Priemes Vej     False   1
1855    Frederiksberg C Hollændervej        False   1
1856    Frederiksberg C Edisonsvej      False   1
1857    Frederiksberg C Hortensiavej        False   1
1860    Frederiksberg C Christian Winthers Vej      False   1
1861    Frederiksberg C Sagasvej        False   1
1862    Frederiksberg C Rathsacksvej        False   1
1863    Frederiksberg C Ceresvej        False   1
1864    Frederiksberg C Grundtvigsvej       False   1
1865    Frederiksberg C Grundtvigs Sidevej      False   1
1866    Frederiksberg C Henrik Steffens Vej     False   1
1867    Frederiksberg C Acaciavej       False   1
1868    Frederiksberg C Bianco Lunos Alle       False   1
1870    Frederiksberg C Bülowsvej       False   1
1871    Frederiksberg C Thorvaldsensvej     False   1
1872    Frederiksberg C Bomhoffs Have       False   1
1873    Frederiksberg C Helenevej       False   1
1874    Frederiksberg C Harsdorffsvej       False   1
1875    Frederiksberg C Amalievej       False   1
1876    Frederiksberg C Kastanievej     False   1
1877    Frederiksberg C Lindevej        False   1
1878    Frederiksberg C Uraniavej       False   1
1879    Frederiksberg C H.C. Ørsteds Vej        False   1
1900    Frederiksberg C Vodroffsvej     False   1
1901    Frederiksberg C Tårnborgvej     False   1
1902    Frederiksberg C Lykkesholms Alle        False   1
1903    Frederiksberg C Sankt Knuds Vej     False   1
1904    Frederiksberg C Forhåbningsholms Alle       False   1
1905    Frederiksberg C Svanholmsvej        False   1
1906    Frederiksberg C Schønbergsgade      False   1
1908    Frederiksberg C Prinsesse Maries Alle       False   1
1909    Frederiksberg C Vodroffs Tværgade       False   1
1910    Frederiksberg C Danasvej        False   1
1911    Frederiksberg C Niels Ebbesens Vej      False   1
1912    Frederiksberg C Svend Trøsts Vej        False   1
1913    Frederiksberg C Carl Plougs Vej     False   1
1914    Frederiksberg C Vodroffslund        False   1
1915    Frederiksberg C Danas Plads     False   1
1916    Frederiksberg C Norsvej     False   1
1917    Frederiksberg C Sveasvej        False   1
1920    Frederiksberg C Forchhammersvej     False   1
1921    Frederiksberg C Sankt Markus Plads      False   1
1922    Frederiksberg C Sankt Markus Alle       False   1
1923    Frederiksberg C Johnstrups Alle     False   1
1924    Frederiksberg C Steenstrups Alle        False   1
1925    Frederiksberg C Julius Thomsens Plads       False   1
1926    Frederiksberg C Martinsvej      False   1
1927    Frederiksberg C Suomisvej       False   1
1928    Frederiksberg C Filippavej      False   1
1931    Frederiksberg C Ufrankerede svarforsendelser        False   1
1950    Frederiksberg C Hostrupsvej     False   1
1951    Frederiksberg C Christian Richardts Vej     False   1
1952    Frederiksberg C Falkonervænget      False   1
1953    Frederiksberg C Sankt Nikolaj Vej       False   1
1954    Frederiksberg C Hostrups Have       False   1
1955    Frederiksberg C Dr. Abildgaards Alle        False   1
1956    Frederiksberg C L.I. Brandes Alle       False   1
1957    Frederiksberg C N.J. Fjords Alle        False   1
1958    Frederiksberg C Rolighedsvej        False   1
1959    Frederiksberg C Falkonergårdsvej        False   1
1960    Frederiksberg C Åboulevard 15-55        False   1
1961    Frederiksberg C J.M. Thieles Vej        False   1
1962    Frederiksberg C Fuglevangsvej       False   1
1963    Frederiksberg C Bille Brahes Vej        False   1
1964    Frederiksberg C Ingemannsvej        False   1
1965    Frederiksberg C Erik Menveds Vej        False   1
1966    Frederiksberg C Steenwinkelsvej     False   1
1967    Frederiksberg C Svanemosegårdsvej       False   1
1970    Frederiksberg C Rosenørns Alle 1-67 og 22-70        False   1
1971    Frederiksberg C Adolph Steens Alle      False   1
1972    Frederiksberg C Worsaaesvej     False   1
1973    Frederiksberg C Jakob Dannefærds Vej        False   1
1974    Frederiksberg C Julius Thomsens Gade ulige nr.      False   1
2000    Frederiksberg           False   1
2100    København Ø         False   1
2150    Nordhavn            False   1
2200    København N         False   1
2300    København S         False   1
2400    København NV            False   1
2450    København SV            False   1
2500    Valby           False   1
2600    Glostrup            True    1
2605    Brøndby         True    1
2610    Rødovre         True    1
2620    Albertslund         True    1
2625    Vallensbæk          True    1
2630    Taastrup            True    1
2635    Ishøj           True    1
2640    Hedehusene          True    1
2650    Hvidovre            True    1
2660    Brøndby Strand          True    1
2665    Vallensbæk Strand           True    1
2670    Greve           True    1
2680    Solrød Strand           True    1
2690    Karlslunde          True    1
2700    Brønshøj            False   1
2720    Vanløse         False   1
2730    Herlev          True    1
2740    Skovlunde           True    1
2750    Ballerup            True    1
2760    Måløv           True    1
2765    Smørum          True    1
2770    Kastrup         True    1
2791    Dragør          True    1
2800    Kongens Lyngby          True    1
2820    Gentofte            True    1
2830    Virum           True    1
2840    Holte           True    1
2850    Nærum           True    1
2860    Søborg          True    1
2870    Dyssegård           True    1
2880    Bagsværd            True    1
2900    Hellerup            True    1
2920    Charlottenlund          True    1
2930    Klampenborg         True    1
2942    Skodsborg           True    1
2950    Vedbæk          True    1
2960    Rungsted Kyst           True    1
2970    Hørsholm            True    1
2980    Kokkedal            True    1
2990    Nivå            True    1
3000    Helsingør           True    1
3050    Humlebæk            True    1
3060    Espergærde          True    1
3070    Snekkersten         True    1
3080    Tikøb           True    1
3100    Hornbæk         True    1
3120    Dronningmølle           True    1
3140    Ålsgårde            True    1
3150    Hellebæk            True    1
3200    Helsinge            True    1
3210    Vejby           True    1
3220    Tisvildeleje            True    1
3230    Græsted         True    1
3250    Gilleleje           True    1
3300    Frederiksværk           True    1
3310    Ølsted          True    1
3320    Skævinge            True    1
3330    Gørløse         True    1
3360    Liseleje            True    1
3370    Melby           True    1
3390    Hundested           True    1
3400    Hillerød            True    1
3450    Allerød         True    1
3460    Birkerød            True    1
3480    Fredensborg         True    1
3490    Kvistgård           True    1
3500    Værløse         True    1
3520    Farum           True    1
3540    Lynge           True    1
3550    Slangerup           True    1
3600    Frederikssund           True    1
3630    Jægerspris          True    1
3650    Ølstykke            True    1
3660    Stenløse            True    1
3670    Veksø Sjælland          True    1
3700    Rønne           True    1
3720    Aakirkeby           True    1
3730    Nexø            True    1
3740    Svaneke         True    1
3751    Østermarie          True    1
3760    Gudhjem         True    1
3770    Allinge         True    1
3782    Klemensker          True    1
3790    Hasle           True    1
4000    Roskilde            True    1
4030    Tune            True    1
4040    Jyllinge            True    1
4050    Skibby          True    1
4060    Kirke Såby          True    1
4070    Kirke Hyllinge          True    1
4100    Ringsted            True    1
4129    Ringsted    Ufrankerede svarforsendelser        True    1
4130    Viby Sjælland           True    1
4140    Borup           True    1
4160    Herlufmagle         True    1
4171    Glumsø          True    1
4173    Fjenneslev          True    1
4174    Jystrup Midtsj          True    1
4180    Sorø            True    1
4190    Munke Bjergby           True    1
4200    Slagelse            True    1
4220    Korsør          True    1
4230    Skælskør            True    1
4241    Vemmelev            True    1
4242    Boeslunde           True    1
4243    Rude            True    1
4250    Fuglebjerg          True    1
4261    Dalmose         True    1
4262    Sandved         True    1
4270    Høng            True    1
4281    Gørlev          True    1
4291    Ruds Vedby          True    1
4293    Dianalund           True    1
4295    Stenlille           True    1
4296    Nyrup           True    1
4300    Holbæk          True    1
4320    Lejre           True    1
4330    Hvalsø          True    1
4340    Tølløse         True    1
4350    Ugerløse            True    1
4360    Kirke Eskilstrup            True    1
4370    Store Merløse           True    1
4390    Vipperød            True    1
4400    Kalundborg          True    1
4420    Regstrup            True    1
4440    Mørkøv          True    1
4450    Jyderup         True    1
4460    Snertinge           True    1
4470    Svebølle            True    1
4480    Store Fuglede           True    1
4490    Jerslev Sjælland            True    1
4500    Nykøbing Sj         True    1
4520    Svinninge           True    1
4532    Gislinge            True    1
4534    Hørve           True    1
4540    Fårevejle           True    1
4550    Asnæs           True    1
4560    Vig         True    1
4571    Grevinge            True    1
4572    Nørre Asmindrup         True    1
4573    Højby           True    1
4581    Rørvig          True    1
4583    Sjællands Odde          True    1
4591    Føllenslev          True    1
4592    Sejerø          True    1
4593    Eskebjerg           True    1
4600    Køge            True    1
4621    Gadstrup            True    1
4622    Havdrup         True    1
4623    Lille Skensved          True    1
4632    Bjæverskov          True    1
4640    Faxe            True    1
4652    Hårlev          True    1
4653    Karise          True    1
4654    Faxe Ladeplads          True    1
4660    Store Heddinge          True    1
4671    Strøby          True    1
4672    Klippinge           True    1
4673    Rødvig Stevns           True    1
4681    Herfølge            True    1
4682    Tureby          True    1
4683    Rønnede         True    1
4684    Holmegaard          True    1
4690    Haslev          True    1
4700    Næstved         True    1
4720    Præstø          True    1
4733    Tappernøje          True    1
4735    Mern            True    1
4736    Karrebæksminde          True    1
4750    Lundby          True    1
4760    Vordingborg         True    1
4771    Kalvehave           True    1
4772    Langebæk            True    1
4773    Stensved            True    1
4780    Stege           True    1
4791    Borre           True    1
4792    Askeby          True    1
4793    Bogø By         True    1
4800    Nykøbing F          True    1
4840    Nørre Alslev            True    1
4850    Stubbekøbing            True    1
4862    Guldborg            True    1
4863    Eskilstrup          True    1
4871    Horbelev            True    1
4872    Idestrup            True    1
4873    Væggerløse          True    1
4874    Gedser          True    1
4880    Nysted          True    1
4891    Toreby L            True    1
4892    Kettinge            True    1
4894    Øster Ulslev            True    1
4895    Errindlev           True    1
4900    Nakskov         True    1
4912    Harpelunde          True    1
4913    Horslunde           True    1
4920    Søllested           True    1
4930    Maribo          True    1
4941    Bandholm            True    1
4943    Torrig L            True    1
4944    Fejø            True    1
4951    Nørreballe          True    1
4952    Stokkemarke         True    1
4953    Vesterborg          True    1
4960    Holeby          True    1
4970    Rødby           True    1
4983    Dannemare           True    1
4990    Sakskøbing          True    1
4992    Midtsjælland USF P  Ufrankerede svarforsendelser        True    1
5000    Odense C            True    1
5029    Odense C    Ufrankerede svarforsendelser        True    1
5100    Odense C    Postboks        True    1
5200    Odense V            True    1
5210    Odense NV           True    1
5220    Odense SØ           True    1
5230    Odense M            True    1
5240    Odense NØ           True    1
5250    Odense SV           True    1
5260    Odense S            True    1
5270    Odense N            True    1
5290    Marslev         True    1
5300    Kerteminde          True    1
5320    Agedrup         True    1
5330    Munkebo         True    1
5350    Rynkeby         True    1
5370    Mesinge         True    1
5380    Dalby           True    1
5390    Martofte            True    1
5400    Bogense         True    1
5450    Otterup         True    1
5462    Morud           True    1
5463    Harndrup            True    1
5464    Brenderup Fyn           True    1
5466    Asperup         True    1
5471    Søndersø            True    1
5474    Veflinge            True    1
5485    Skamby          True    1
5491    Blommenslyst            True    1
5492    Vissenbjerg         True    1
5500    Middelfart          True    1
5540    Ullerslev           True    1
5550    Langeskov           True    1
5560    Aarup           True    1
5580    Nørre Aaby          True    1
5591    Gelsted         True    1
5592    Ejby            True    1
5600    Faaborg         True    1
5610    Assens          True    1
5620    Glamsbjerg          True    1
5631    Ebberup         True    1
5642    Millinge            True    1
5672    Broby           True    1
5683    Haarby          True    1
5690    Tommerup            True    1
5700    Svendborg           True    1
5750    Ringe           True    1
5762    Vester Skerninge            True    1
5771    Stenstrup           True    1
5772    Kværndrup           True    1
5792    Årslev          True    1
5800    Nyborg          True    1
5853    Ørbæk           True    1
5854    Gislev          True    1
5856    Ryslinge            True    1
5863    Ferritslev Fyn          True    1
5871    Frørup          True    1
5874    Hesselager          True    1
5881    Skårup Fyn          True    1
5882    Vejstrup            True    1
5883    Oure            True    1
5884    Gudme           True    1
5892    Gudbjerg Sydfyn         True    1
5900    Rudkøbing           True    1
5932    Humble          True    1
5935    Bagenkop            True    1
5953    Tranekær            True    1
5960    Marstal         True    1
5970    Ærøskøbing          True    1
5985    Søby Ærø            True    1
6000    Kolding         True    1
6040    Egtved          True    1
6051    Almind          True    1
6052    Viuf            True    1
6064    Jordrup         True    1
6070    Christiansfeld          True    1
6091    Bjert           True    1
6092    Sønder Stenderup            True    1
6093    Sjølund         True    1
6094    Hejls           True    1
6100    Haderslev           True    1
6200    Aabenraa            True    1
6230    Rødekro         True    1
6240    Løgumkloster            True    1
6261    Bredebro            True    1
6270    Tønder          True    1
6280    Højer           True    1
6300    Gråsten         True    1
6310    Broager         True    1
6320    Egernsund           True    1
6330    Padborg         True    1
6340    Kruså           True    1
6360    Tinglev         True    1
6372    Bylderup-Bov            True    1
6392    Bolderslev          True    1
6400    Sønderborg          True    1
6430    Nordborg            True    1
6440    Augustenborg            True    1
6470    Sydals          True    1
6500    Vojens          True    1
6510    Gram            True    1
6520    Toftlund            True    1
6534    Agerskov            True    1
6535    Branderup J         True    1
6541    Bevtoft         True    1
6560    Sommersted          True    1
6580    Vamdrup         True    1
6600    Vejen           True    1
6621    Gesten          True    1
6622    Bække           True    1
6623    Vorbasse            True    1
6630    Rødding         True    1
6640    Lunderskov          True    1
6650    Brørup          True    1
6660    Lintrup         True    1
6670    Holsted         True    1
6682    Hovborg         True    1
6683    Føvling         True    1
6690    Gørding         True    1
6700    Esbjerg         True    1
6701    Esbjerg Postboks        True    1
6705    Esbjerg Ø           True    1
6710    Esbjerg V           True    1
6715    Esbjerg N           True    1
6720    Fanø            True    1
6731    Tjæreborg           True    1
6740    Bramming            True    1
6752    Glejbjerg           True    1
6753    Agerbæk         True    1
6760    Ribe            True    1
6771    Gredstedbro         True    1
6780    Skærbæk         True    1
6792    Rømø            True    1
6800    Varde           True    1
6818    Årre            True    1
6823    Ansager         True    1
6830    Nørre Nebel         True    1
6840    Oksbøl          True    1
6851    Janderup Vestj          True    1
6852    Billum          True    1
6853    Vejers Strand           True    1
6854    Henne           True    1
6855    Outrup          True    1
6857    Blåvand         True    1
6862    Tistrup         True    1
6870    Ølgod           True    1
6880    Tarm            True    1
6893    Hemmet          True    1
6900    Skjern          True    1
6920    Videbæk         True    1
6933    Kibæk           True    1
6940    Lem St          True    1
6950    Ringkøbing          True    1
6960    Hvide Sande         True    1
6971    Spjald          True    1
6973    Ørnhøj          True    1
6980    Tim         True    1
6990    Ulfborg         True    1
7000    Fredericia          True    1
7007    Fredericia      Sydjyllands Postcenter + erhvervskunder True    1
7017    Taulov Pakkecenter      (Returpakker)   True    1
7029    Fredericia  Ufrankerede svarforsendelser        True    1
7080    Børkop          True    1
7100    Vejle           True    1
7120    Vejle Øst           True    1
7130    Juelsminde          True    1
7140    Stouby          True    1
7150    Barrit          True    1
7160    Tørring         True    1
7171    Uldum           True    1
7173    Vonge           True    1
7182    Bredsten            True    1
7183    Randbøl         True    1
7184    Vandel          True    1
7190    Billund         True    1
7200    Grindsted           True    1
7250    Hejnsvig            True    1
7260    Sønder Omme         True    1
7270    Stakroge            True    1
7280    Sønder Felding          True    1
7300    Jelling         True    1
7321    Gadbjerg            True    1
7323    Give            True    1
7330    Brande          True    1
7361    Ejstrupholm         True    1
7362    Hampen          True    1
7400    Herning         True    1
7429    Herning Ufrankerede svarforsendelser        True    1
7430    Ikast           True    1
7441    Bording         True    1
7442    Engesvang           True    1
7451    Sunds           True    1
7470    Karup J         True    1
7480    Vildbjerg           True    1
7490    Aulum           True    1
7500    Holstebro           True    1
7540    Haderup         True    1
7550    Sørvad          True    1
7560    Hjerm           True    1
7570    Vemb            True    1
7600    Struer          True    1
7620    Lemvig          True    1
7650    Bøvlingbjerg            True    1
7660    Bækmarksbro         True    1
7673    Harboøre            True    1
7680    Thyborøn            True    1
7700    Thisted         True    1
7730    Hanstholm           True    1
7741    Frøstrup            True    1
7742    Vesløs          True    1
7752    Snedsted            True    1
7755    Bedsted Thy         True    1
7760    Hurup Thy           True    1
7770    Vestervig           True    1
7790    Thyholm         True    1
7800    Skive           True    1
7830    Vinderup            True    1
7840    Højslev         True    1
7850    Stoholm Jyll            True    1
7860    Spøttrup            True    1
7870    Roslev          True    1
7884    Fur         True    1
7900    Nykøbing M          True    1
7950    Erslev          True    1
7960    Karby           True    1
7970    Redsted M           True    1
7980    Vils            True    1
7990    Øster Assels            True    1
7992    Sydjylland/Fyn USF P    Ufrankerede svarforsendelser        True    1
7993    Sydjylland/Fyn USF B    Ufrankerede svarforsendelser        True    1
7996    Fakturaservice      (Post til scanning) True    1
7997    Fakturascanning     (Post til scanning) True    1
7999    Kommunepost     (Post til scanning) True    1
8000    Aarhus C            True    1
8100    Aarhus C    Postboks        True    1
8200    Aarhus N            True    1
8210    Aarhus V            True    1
8220    Brabrand            True    1
8229    Risskov Ø   Ufrankerede svarforsendelser        True    1
8230    Åbyhøj          True    1
8240    Risskov         True    1
8245    Risskov Ø       Østjyllands Postcenter + erhvervskunder True    1
8250    Egå         True    1
8260    Viby J          True    1
8270    Højbjerg            True    1
8300    Odder           True    1
8305    Samsø           True    1
8310    Tranbjerg J         True    1
8320    Mårslet         True    1
8330    Beder           True    1
8340    Malling         True    1
8350    Hundslund           True    1
8355    Solbjerg            True    1
8361    Hasselager          True    1
8362    Hørning         True    1
8370    Hadsten         True    1
8380    Trige           True    1
8381    Tilst           True    1
8382    Hinnerup            True    1
8400    Ebeltoft            True    1
8410    Rønde           True    1
8420    Knebel          True    1
8444    Balle           True    1
8450    Hammel          True    1
8462    Harlev J            True    1
8464    Galten          True    1
8471    Sabro           True    1
8472    Sporup          True    1
8500    Grenaa          True    1
8520    Lystrup         True    1
8530    Hjortshøj           True    1
8541    Skødstrup           True    1
8543    Hornslet            True    1
8544    Mørke           True    1
8550    Ryomgård            True    1
8560    Kolind          True    1
8570    Trustrup            True    1
8581    Nimtofte            True    1
8585    Glesborg            True    1
8586    Ørum Djurs          True    1
8592    Anholt          True    1
8600    Silkeborg           True    1
8620    Kjellerup           True    1
8632    Lemming         True    1
8641    Sorring         True    1
8643    Ans By          True    1
8653    Them            True    1
8654    Bryrup          True    1
8660    Skanderborg         True    1
8670    Låsby           True    1
8680    Ry          True    1
8700    Horsens         True    1
8721    Daugård         True    1
8722    Hedensted           True    1
8723    Løsning         True    1
8732    Hovedgård           True    1
8740    Brædstrup           True    1
8751    Gedved          True    1
8752    Østbirk         True    1
8762    Flemming            True    1
8763    Rask Mølle          True    1
8765    Klovborg            True    1
8766    Nørre Snede         True    1
8781    Stenderup           True    1
8783    Hornsyld            True    1
8800    Viborg          True    1
8830    Tjele           True    1
8831    Løgstrup            True    1
8832    Skals           True    1
8840    Rødkærsbro          True    1
8850    Bjerringbro         True    1
8860    Ulstrup         True    1
8870    Langå           True    1
8881    Thorsø          True    1
8882    Fårvang         True    1
8883    Gjern           True    1
8900    Randers C           True    1
8920    Randers NV          True    1
8930    Randers NØ          True    1
8940    Randers SV          True    1
8950    Ørsted          True    1
8960    Randers SØ          True    1
8961    Allingåbro          True    1
8963    Auning          True    1
8970    Havndal         True    1
8981    Spentrup            True    1
8983    Gjerlev J           True    1
8990    Fårup           True    1
9000    Aalborg         True    1
9029    Aalborg Ufrankerede svarforsendelser        True    1
9100    Aalborg Postboks        True    1
9200    Aalborg SV          True    1
9210    Aalborg SØ          True    1
9220    Aalborg Øst         True    1
9230    Svenstrup J         True    1
9240    Nibe            True    1
9260    Gistrup         True    1
9270    Klarup          True    1
9280    Storvorde           True    1
9293    Kongerslev          True    1
9300    Sæby            True    1
9310    Vodskov         True    1
9320    Hjallerup           True    1
9330    Dronninglund            True    1
9340    Asaa            True    1
9352    Dybvad          True    1
9362    Gandrup         True    1
9370    Hals            True    1
9380    Vestbjerg           True    1
9381    Sulsted         True    1
9382    Tylstrup            True    1
9400    Nørresundby         True    1
9430    Vadum           True    1
9440    Aabybro         True    1
9460    Brovst          True    1
9480    Løkken          True    1
9490    Pandrup         True    1
9492    Blokhus         True    1
9493    Saltum          True    1
9500    Hobro           True    1
9510    Arden           True    1
9520    Skørping            True    1
9530    Støvring            True    1
9541    Suldrup         True    1
9550    Mariager            True    1
9560    Hadsund         True    1
9574    Bælum           True    1
9575    Terndrup            True    1
9600    Aars            True    1
9610    Nørager         True    1
9620    Aalestrup           True    1
9631    Gedsted         True    1
9632    Møldrup         True    1
9640    Farsø           True    1
9670    Løgstør         True    1
9681    Ranum           True    1
9690    Fjerritslev         True    1
9700    Brønderslev         True    1
9740    Jerslev J           True    1
9750    Østervrå            True    1
9760    Vrå         True    1
9800    Hjørring            True    1
9830    Tårs            True    1
9850    Hirtshals           True    1
9870    Sindal          True    1
9881    Bindslev            True    1
9900    Frederikshavn           True    1
9940    Læsø            True    1
9970    Strandby            True    1
9981    Jerup           True    1
9982    Ålbæk           True    1
9990    Skagen          True    1
9992    Jylland USF P   Ufrankerede svarforsendelser        True    1
9993    Jylland USF B   Ufrankerede svarforsendelser        True    1
9996    Fakturaservice      (Post til scanning) True    1
9997    Fakturascanning     (Post til scanning) True    1
9998    Borgerservice       (Post til scanning) True    1
