From patchwork Fri Sep 5 15:19:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dodji Seketeli X-Patchwork-Id: 119817 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4F5313858D1E for ; Tue, 9 Sep 2025 06:47:55 +0000 (GMT) X-Original-To: libabigail@sourceware.org Delivered-To: libabigail@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id D8F693858D35 for ; Tue, 9 Sep 2025 06:47:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D8F693858D35 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D8F693858D35 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1757400440; cv=none; b=xsNl15qBPuQG5fXLrLDyVtkL9SFdJCYpQ63BHhTI5nkrsMsuKuot4ztjYU2/LYs+ND4N3vJGr4kLJzIEju1PgpBWuG26K7sd/yrd5QkfEd7v/417PDkvUW3hKTYJgXca7I9L7jSKVT8hNUUIL1giyl+fBkGOEvTG1YlKm951yDs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1757400440; c=relaxed/simple; bh=CxrntCjOknfForJRVqfVDd6UVt1+lg9GNGGT1ysud3o=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=Q4EkhdC3a+pTFVKAOzwRDwhWElRNP4dCkd1nXP01WdhOJIL/KZKcIaAidAZ/5nElTMopL+lBPSCfmSNv/supDjLD6GiTGClgTjF/Z3MH4mjQyL4Ske7Plwjc9YtDCPqwoJYRyG96JFaA8U+KpI7JPM8+IXqiJ93hWXLqlT2I7SE= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D8F693858D35 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=XrMQ2EQe DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1757400431; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=OXx3Hmerg0KfCburjLdWrQma0xS0+VbBjyvojKiNQbM=; b=XrMQ2EQepBQaKxQKxW/eBoizVSnwcLTMDpmXeCCHBPLZ5EUDN3Qt/2yYgQV7gTgx0RJehu U9cJGxOq1mgFckGeo9X5pj0CYrI0c0PdHDqzusuT0D2JarDSxq7//Jh5dYGhkfJ+BU1cNQ 5r30srH4mBdGo26x5aX7dDuFcWW/xio= Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-394-gX7PNipsNtKjvE1ZZFpvUA-1; Tue, 09 Sep 2025 02:47:04 -0400 X-MC-Unique: gX7PNipsNtKjvE1ZZFpvUA-1 X-Mimecast-MFC-AGG-ID: gX7PNipsNtKjvE1ZZFpvUA_1757400423 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 31FB71800371 for ; Tue, 9 Sep 2025 06:47:03 +0000 (UTC) Received: from localhost (unknown [10.44.22.20]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 707E4300018D for ; Tue, 9 Sep 2025 06:46:57 +0000 (UTC) Received: by localhost (Postfix, from userid 1000) id 84636603844B; Fri, 05 Sep 2025 17:19:18 +0200 (CEST) From: Dodji Seketeli To: libabigail@sourceware.org Subject: [PATCH, applied] dwarf-reader: Avoid adding declarations-only global vars to IR Organization: Red Hat / France X-Operating-System: Fedora 42 X-URL: http://www.redhat.com Date: Fri, 05 Sep 2025 17:19:18 +0200 Message-ID: <87a539hqq1.fsf@redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: CzjV41dzaxhhBWYm3aPClX9EtrdeoJMrnR5NT7-eYpw_1757400423 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_PASS, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libabigail@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Mailing list of the Libabigail project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libabigail-bounces~patchwork=sourceware.org@sourceware.org Hello, When the DIE for a global variable doesn't have ABI, then the DWARF reader should not create an IR for it. That is, if the DIE for a global variable neither has a memory location nor an ELF symbol do not add it to the IR or else, that IR node might be the cause of spurious change reports down the road. * src/abg-dwarf-reader.cc (build_ir_node_from_die): When looking at the DIE for a variable, create an IR for it if it has an ELF symbol. * tests/data/test-annotate/libtest23.so.abi: Adjust. * tests/data/test-annotate/libtest24-drop-fns-2.so.abi: Likewise. * tests/data/test-annotate/libtest24-drop-fns.so.abi: Likewise. * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. * tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi: Likewise. * tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Likewise. * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. Signed-off-by: Dodji Seketeli Applied to the master branch. --- src/abg-dwarf-reader.cc | 15 +- tests/data/test-annotate/libtest23.so.abi | 94 +- .../test-annotate/libtest24-drop-fns-2.so.abi | 47 +- .../test-annotate/libtest24-drop-fns.so.abi | 47 +- tests/data/test-read-dwarf/libtest23.so.abi | 78 +- .../libtest24-drop-fns-2.so.abi | 39 +- .../test-read-dwarf/libtest24-drop-fns.so.abi | 39 +- .../test-read-dwarf/test10-pr18818-gcc.so.abi | 120 +- .../test-read-dwarf/test11-pr18828.so.abi | 339 +- .../test-read-dwarf/test16-pr18904.so.abi | 66 +- .../test22-pr19097-libstdc++.so.6.0.17.so.abi | 4065 ++++++++--------- 11 files changed, 2099 insertions(+), 2850 deletions(-) diff --git a/src/abg-dwarf-reader.cc b/src/abg-dwarf-reader.cc index a0c8054b..b0636efb 100644 --- a/src/abg-dwarf-reader.cc +++ b/src/abg-dwarf-reader.cc @@ -17512,13 +17512,24 @@ build_ir_node_from_die(reader& rdr, // have. v = build_var_decl(rdr, die, where_offset, v); - if (v) + Dwarf_Addr addr = 0; + bool has_data_location = false; + has_data_location = rdr.get_variable_address(die, addr); + + if ((v && has_data_location && is_class_type(var_scope)) + // This is most likely for a static data member's variable + // that has data location ... + || (v && rdr.is_decl_die_with_undefined_symbol(die)) + || (v && rdr.is_decl_die_with_exported_symbol(die)) + // ... or this is for an undefined or defined & exported + // global variable. + ) { add_decl_to_scope(v, var_scope); if (is_data_member(v)) // We are sure this is a static data member at this // point because a non-static data member would have - // been encountered a a child of a class or union DIE + // been encountered as a child of a class or union DIE // and thus handled by add_or_update_class_type or // add_or_update_union_type. set_member_is_static(v, true); diff --git a/tests/data/test-annotate/libtest23.so.abi b/tests/data/test-annotate/libtest23.so.abi index fb8c20f0..d8aad829 100644 --- a/tests/data/test-annotate/libtest23.so.abi +++ b/tests/data/test-annotate/libtest23.so.abi @@ -363,52 +363,15 @@ - - - - - - + - - - - - - - - - - + - - - - - - - - - - + - - - - - - + - - - - - - - - - - + @@ -439,52 +402,15 @@ - - - - - - + - - - - - - - - - - + - - - - - - - - - - + - - - - - - + - - - - - - - - - - + diff --git a/tests/data/test-annotate/libtest24-drop-fns-2.so.abi b/tests/data/test-annotate/libtest24-drop-fns-2.so.abi index ea9f629f..7bd732bd 100644 --- a/tests/data/test-annotate/libtest24-drop-fns-2.so.abi +++ b/tests/data/test-annotate/libtest24-drop-fns-2.so.abi @@ -537,52 +537,15 @@ - - - - - - + - - - - - - - - - - + - - - - - - - - - - + - - - - - - + - - - - - - - - - - + diff --git a/tests/data/test-annotate/libtest24-drop-fns.so.abi b/tests/data/test-annotate/libtest24-drop-fns.so.abi index ea9f629f..7bd732bd 100644 --- a/tests/data/test-annotate/libtest24-drop-fns.so.abi +++ b/tests/data/test-annotate/libtest24-drop-fns.so.abi @@ -537,52 +537,15 @@ - - - - - - + - - - - - - - - - - + - - - - - - - - - - + - - - - - - + - - - - - - - - - - + diff --git a/tests/data/test-read-dwarf/libtest23.so.abi b/tests/data/test-read-dwarf/libtest23.so.abi index f22f6279..815611ca 100644 --- a/tests/data/test-read-dwarf/libtest23.so.abi +++ b/tests/data/test-read-dwarf/libtest23.so.abi @@ -236,40 +236,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + @@ -287,40 +258,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + diff --git a/tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi b/tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi index 250a34d4..8a9c23ce 100644 --- a/tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi +++ b/tests/data/test-read-dwarf/libtest24-drop-fns-2.so.abi @@ -351,40 +351,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + diff --git a/tests/data/test-read-dwarf/libtest24-drop-fns.so.abi b/tests/data/test-read-dwarf/libtest24-drop-fns.so.abi index 683ed185..6d2581a4 100644 --- a/tests/data/test-read-dwarf/libtest24-drop-fns.so.abi +++ b/tests/data/test-read-dwarf/libtest24-drop-fns.so.abi @@ -322,40 +322,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + diff --git a/tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi b/tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi index 5838efb8..b5078eb2 100644 --- a/tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi +++ b/tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi @@ -1318,17 +1318,11 @@ - - - - - - @@ -1450,55 +1444,14 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + @@ -1690,21 +1643,9 @@ - - - - - - - - - - - - - - - + + + @@ -2147,9 +2088,6 @@ - - - @@ -3951,36 +3889,12 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + diff --git a/tests/data/test-read-dwarf/test11-pr18828.so.abi b/tests/data/test-read-dwarf/test11-pr18828.so.abi index acd7a750..1170c063 100644 --- a/tests/data/test-read-dwarf/test11-pr18828.so.abi +++ b/tests/data/test-read-dwarf/test11-pr18828.so.abi @@ -4117,9 +4117,6 @@ - - - @@ -6126,65 +6123,41 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -6479,54 +6452,12 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + @@ -7638,55 +7569,14 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + @@ -10508,71 +10398,16 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + @@ -10673,114 +10508,30 @@ - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/tests/data/test-read-dwarf/test16-pr18904.so.abi b/tests/data/test-read-dwarf/test16-pr18904.so.abi index 1fedabec..9679d764 100644 --- a/tests/data/test-read-dwarf/test16-pr18904.so.abi +++ b/tests/data/test-read-dwarf/test16-pr18904.so.abi @@ -11799,9 +11799,6 @@ - - - @@ -18681,17 +18678,11 @@ - - - - - - @@ -18950,55 +18941,14 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + diff --git a/tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi b/tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi index b495e14f..07473ab9 100644 --- a/tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi +++ b/tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi @@ -5727,74 +5727,30 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - + - + - + @@ -5802,17 +5758,17 @@ - + - + - + @@ -5826,89 +5782,89 @@ - - + + - + - - + + - + - - + + - + - + - + - + - - + + - + - + - + + - - + - + - - - + + + - - + + - - - + + + + - - + - + @@ -5916,7 +5872,7 @@ - + @@ -5924,865 +5880,845 @@ - + - + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - + - - + + - - - - - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - + + + + - + - - - + + + - - + + - + - - + + - - + + - + - - + + - + - - + + - + - + - - - - + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - + - + - - - + + + - + - + - + - + - + - - + + - - + + - - + + - + - + - + - + - + - + - - + + - - - - - - + + - + - + - + - + - - + + - + - + - - + + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + @@ -6793,454 +6729,434 @@ - - + + - - + + - + - + - + - + - + - + - + - + - - - - + + + + - + - + - - + + - - + + - - - + + + - + - - - + + + - + - - - + + + - - + + - + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - - + + - + - + - - + + - + - + - + - + - + - - - - - + - - - - - + - + - + - + - + - + - - - - - + - - - - - + - - - - - - - + + + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - - - + + + - - + + - - + + - - - + + + - - - - + + + + - + - + - + - - + + - - - + + + - + - - + + - + - - - + + + - + - - + + - + @@ -7251,76 +7167,76 @@ - - - - + + + + - + - + - + - - + + - - - + + + - + - - + + - + - - - + + + - + - - + + - + @@ -7330,77 +7246,77 @@ - - - - + + + + - + - + - + - - + + - - - + + + - + - - + + - + - - - + + + - + - - + + - + @@ -7411,33 +7327,33 @@ - + - - + + - - + + - - + + - + - - - + + + - + - + - + - + @@ -7475,10 +7391,10 @@ - + - + @@ -7487,22 +7403,22 @@ - + - + - + - + - + - + @@ -7523,28 +7439,28 @@ - + - + - + - + - + - + - + @@ -7552,10 +7468,10 @@ - + - + @@ -7664,7 +7580,7 @@ - + @@ -7678,57 +7594,57 @@ - - - - - - - - - - - + + + + + + + + + + + - - - + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + @@ -7759,14 +7675,14 @@ - + - + @@ -7797,15 +7713,15 @@ - - - - + + + + - - - - + + + + @@ -7833,14 +7749,14 @@ - - + + - - + + @@ -7859,11 +7775,11 @@ - - - - - + + + + + @@ -7884,7 +7800,7 @@ - + @@ -7893,13 +7809,13 @@ - + - + - + @@ -7925,7 +7841,7 @@ - + @@ -7934,13 +7850,13 @@ - + - + - + @@ -7965,7 +7881,7 @@ - + @@ -7989,7 +7905,7 @@ - + @@ -8091,7 +8007,7 @@ - + @@ -8099,25 +8015,25 @@ - + - + - + - + @@ -8743,7 +8659,7 @@ - + @@ -8766,7 +8682,7 @@ - + @@ -8902,7 +8818,7 @@ - + @@ -9036,7 +8952,7 @@ - + @@ -9050,7 +8966,7 @@ - + @@ -9120,8 +9036,8 @@ - - + + @@ -9130,8 +9046,8 @@ - - + + @@ -9159,7 +9075,7 @@ - + @@ -9319,7 +9235,7 @@ - + @@ -9335,23 +9251,23 @@ - + - + - + - + @@ -9409,7 +9325,7 @@ - + @@ -9437,7 +9353,7 @@ - + @@ -9445,7 +9361,7 @@ - + @@ -9453,7 +9369,7 @@ - + @@ -9467,7 +9383,7 @@ - + @@ -9475,25 +9391,25 @@ - + - + - + - + @@ -9506,32 +9422,32 @@ - + - + - + - + - + @@ -9547,7 +9463,7 @@ - + @@ -9560,7 +9476,7 @@ - + @@ -9572,14 +9488,14 @@ - + - - + + @@ -9618,7 +9534,7 @@ - + @@ -9626,7 +9542,7 @@ - + @@ -9634,17 +9550,17 @@ - - - + + + - - + + @@ -9767,7 +9683,7 @@ - + @@ -9803,7 +9719,7 @@ - + @@ -9820,7 +9736,7 @@ - + @@ -9828,7 +9744,7 @@ - + @@ -9836,7 +9752,7 @@ - + @@ -9853,7 +9769,7 @@ - + @@ -9861,7 +9777,7 @@ - + @@ -9869,7 +9785,7 @@ - + @@ -9886,7 +9802,7 @@ - + @@ -9894,7 +9810,7 @@ - + @@ -9902,7 +9818,7 @@ - + @@ -9919,7 +9835,7 @@ - + @@ -9927,7 +9843,7 @@ - + @@ -9935,7 +9851,7 @@ - + @@ -9952,7 +9868,7 @@ - + @@ -9960,7 +9876,7 @@ - + @@ -9968,7 +9884,7 @@ - + @@ -9985,7 +9901,7 @@ - + @@ -9993,7 +9909,7 @@ - + @@ -10028,7 +9944,7 @@ - + @@ -10037,7 +9953,7 @@ - + @@ -10046,7 +9962,7 @@ - + @@ -10054,24 +9970,24 @@ - + - + - + - + - + @@ -10103,7 +10019,7 @@ - + @@ -10111,7 +10027,7 @@ - + @@ -10119,14 +10035,14 @@ - + - + @@ -10142,14 +10058,14 @@ - + - + @@ -10159,7 +10075,7 @@ - + @@ -10169,7 +10085,7 @@ - + @@ -10179,7 +10095,7 @@ - + @@ -10187,7 +10103,7 @@ - + @@ -10196,7 +10112,7 @@ - + @@ -10204,14 +10120,14 @@ - + - + @@ -10220,7 +10136,7 @@ - + @@ -10251,7 +10167,7 @@ - + @@ -10260,7 +10176,7 @@ - + @@ -10278,7 +10194,7 @@ - + @@ -10374,7 +10290,7 @@ - + @@ -10382,7 +10298,7 @@ - + @@ -10390,7 +10306,7 @@ - + @@ -10404,7 +10320,7 @@ - + @@ -10412,28 +10328,28 @@ - + - + - + - + @@ -10469,7 +10385,7 @@ - + @@ -10496,29 +10412,29 @@ - - + + - + - - + + - - + + - + @@ -10535,14 +10451,14 @@ - + - - + + @@ -10559,17 +10475,17 @@ - - + + - + - + @@ -10580,7 +10496,7 @@ - + @@ -10610,8 +10526,8 @@ - - + + @@ -10620,8 +10536,8 @@ - - + + @@ -10630,7 +10546,7 @@ - + @@ -10640,7 +10556,7 @@ - + @@ -10669,7 +10585,7 @@ - + @@ -10687,15 +10603,15 @@ - + - - + + @@ -10703,7 +10619,7 @@ - + @@ -10711,7 +10627,7 @@ - + @@ -10747,7 +10663,7 @@ - + @@ -10795,7 +10711,7 @@ - + @@ -10807,10 +10723,10 @@ - + - + @@ -10819,7 +10735,7 @@ - + @@ -10837,7 +10753,7 @@ - + @@ -11010,7 +10926,7 @@ - + @@ -11140,7 +11056,7 @@ - + @@ -11250,7 +11166,7 @@ - + @@ -11294,7 +11210,7 @@ - + @@ -11372,7 +11288,7 @@ - + @@ -11393,7 +11309,7 @@ - + @@ -11676,7 +11592,7 @@ - + @@ -12403,7 +12319,7 @@ - + @@ -13195,7 +13111,7 @@ - + @@ -13548,7 +13464,7 @@ - + @@ -13571,12 +13487,12 @@ - + - + @@ -13633,7 +13549,7 @@ - + @@ -13913,74 +13829,45 @@ - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + @@ -14009,7 +13896,7 @@ - + @@ -14086,7 +13973,7 @@ - + @@ -14137,7 +14024,7 @@ - + @@ -14845,13 +14732,13 @@ - + - + @@ -15141,9 +15028,9 @@ - + - + @@ -15153,8 +15040,8 @@ - - + + @@ -15187,7 +15074,7 @@ - + @@ -15195,7 +15082,7 @@ - + @@ -15220,13 +15107,13 @@ - + - + - + @@ -15246,7 +15133,7 @@ - + @@ -15910,7 +15797,7 @@ - + @@ -15918,7 +15805,7 @@ - + @@ -15946,7 +15833,7 @@ - + @@ -16027,7 +15914,7 @@ - + @@ -16035,7 +15922,7 @@ - + @@ -16063,7 +15950,7 @@ - + @@ -16144,7 +16031,7 @@ - + @@ -16152,7 +16039,7 @@ - + @@ -16180,7 +16067,7 @@ - + @@ -16261,7 +16148,7 @@ - + @@ -16269,7 +16156,7 @@ - + @@ -16297,7 +16184,7 @@ - + @@ -16378,7 +16265,7 @@ - + @@ -16386,7 +16273,7 @@ - + @@ -16414,7 +16301,7 @@ - + @@ -16495,7 +16382,7 @@ - + @@ -16503,7 +16390,7 @@ - + @@ -16531,7 +16418,7 @@ - + @@ -16583,7 +16470,7 @@ - + @@ -16676,13 +16563,13 @@ - + - + @@ -17064,7 +16951,7 @@ - + @@ -17092,7 +16979,7 @@ - + @@ -17120,63 +17007,63 @@ - + - + - + - + - + - + - + - + - + @@ -17266,7 +17153,7 @@ - + @@ -17364,7 +17251,7 @@ - + @@ -17400,7 +17287,7 @@ - + @@ -17428,7 +17315,7 @@ - + @@ -17456,63 +17343,63 @@ - + - + - + - + - + - + - + - + - + @@ -17567,7 +17454,7 @@ - + @@ -17680,10 +17567,10 @@ - + - + @@ -17975,7 +17862,7 @@ - + @@ -17985,7 +17872,7 @@ - + @@ -17995,12 +17882,12 @@ - + - + @@ -18031,7 +17918,7 @@ - + @@ -18046,17 +17933,17 @@ - + - + - + @@ -18066,7 +17953,7 @@ - + @@ -18096,12 +17983,12 @@ - + - + @@ -18124,13 +18011,13 @@ - + - + @@ -18140,7 +18027,7 @@ - + @@ -18150,12 +18037,12 @@ - + - + @@ -18186,7 +18073,7 @@ - + @@ -18201,17 +18088,17 @@ - + - + - + @@ -18221,7 +18108,7 @@ - + @@ -18251,12 +18138,12 @@ - + - + @@ -18441,7 +18328,7 @@ - + @@ -18519,7 +18406,7 @@ - + @@ -18565,7 +18452,7 @@ - + @@ -18575,7 +18462,7 @@ - + @@ -18739,7 +18626,7 @@ - + @@ -18869,7 +18756,7 @@ - + @@ -18902,7 +18789,7 @@ - + @@ -19113,7 +19000,7 @@ - + @@ -19197,21 +19084,21 @@ - - + + - + - + - + @@ -19236,30 +19123,30 @@ - - - + + + - - - - + + + + - - + + - - + + - + @@ -19267,11 +19154,11 @@ - + - + @@ -19279,7 +19166,7 @@ - + @@ -19292,7 +19179,7 @@ - + @@ -19300,7 +19187,7 @@ - + @@ -19311,16 +19198,16 @@ - + - + - + @@ -19337,10 +19224,10 @@ - + - + @@ -19370,15 +19257,15 @@ - + - + - - + + @@ -19391,7 +19278,7 @@ - + @@ -19425,70 +19312,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -19496,70 +19383,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -19567,70 +19454,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -19638,70 +19525,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -19709,70 +19596,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -19780,70 +19667,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -19851,70 +19738,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -19922,70 +19809,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -19993,70 +19880,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -20064,70 +19951,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -20135,70 +20022,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -20206,70 +20093,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -20277,70 +20164,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -20348,70 +20235,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -20419,70 +20306,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -20490,70 +20377,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -20755,98 +20642,98 @@ - + - - + + - + - - + + - - + + - + - + - + - + - + - + - + - - + + - + - + - + - - + + - - - - + + + + - + - + - - - + + + - - + + - + @@ -20859,61 +20746,61 @@ - - + + - + - - + + - - + + - + - + - + - + - + - + - + - - + + - + - + - + - + - + @@ -21042,7 +20929,7 @@ - + @@ -21129,13 +21016,13 @@ - + - + @@ -21183,16 +21070,16 @@ - + - + - + - + @@ -21396,7 +21283,7 @@ - + @@ -21425,7 +21312,7 @@ - + @@ -21475,7 +21362,7 @@ - + @@ -21495,7 +21382,7 @@ - + @@ -21558,7 +21445,7 @@ - + @@ -21646,7 +21533,7 @@ - + @@ -21677,7 +21564,7 @@ - + @@ -21712,7 +21599,7 @@ - + @@ -21761,7 +21648,7 @@ - + @@ -21786,7 +21673,7 @@ - + @@ -21877,13 +21764,13 @@ - - - + + + - + - + @@ -21930,9 +21817,9 @@ - - - + + + @@ -22027,14 +21914,14 @@ - + - + @@ -22158,7 +22045,7 @@ - + @@ -22248,7 +22135,7 @@ - + @@ -22344,7 +22231,7 @@ - + @@ -22484,10 +22371,10 @@ - + - + @@ -22618,10 +22505,10 @@ - + - + @@ -23244,15 +23131,15 @@ - - - - - - - - - + + + + + + + + + @@ -23305,22 +23192,22 @@ - + - + - + - + @@ -23335,7 +23222,7 @@ - + @@ -23350,7 +23237,7 @@ - + @@ -23368,7 +23255,7 @@ - + @@ -23586,7 +23473,7 @@ - + @@ -23690,7 +23577,7 @@ - + @@ -23781,7 +23668,7 @@ - + @@ -23948,7 +23835,7 @@ - + @@ -23989,7 +23876,7 @@ - + @@ -24126,7 +24013,7 @@ - + @@ -24153,7 +24040,7 @@ - + @@ -24199,13 +24086,13 @@ - + - + @@ -24244,7 +24131,7 @@ - + @@ -24254,7 +24141,7 @@ - + @@ -24264,7 +24151,7 @@ - + @@ -24274,7 +24161,7 @@ - + @@ -24284,7 +24171,7 @@ - + @@ -24295,7 +24182,7 @@ - + @@ -24696,7 +24583,7 @@ - + @@ -25104,7 +24991,7 @@ - + @@ -25114,7 +25001,7 @@ - + @@ -25124,7 +25011,7 @@ - + @@ -25134,7 +25021,7 @@ - + @@ -25193,7 +25080,7 @@ - + @@ -25204,7 +25091,7 @@ - + @@ -25214,7 +25101,7 @@ - + @@ -25224,7 +25111,7 @@ - + @@ -25303,7 +25190,7 @@ - + @@ -25313,7 +25200,7 @@ - + @@ -25323,7 +25210,7 @@ - + @@ -25333,7 +25220,7 @@ - + @@ -25351,7 +25238,7 @@ - + @@ -25402,7 +25289,7 @@ - + @@ -25412,7 +25299,7 @@ - + @@ -25422,7 +25309,7 @@ - + @@ -25432,7 +25319,7 @@ - + @@ -25451,10 +25338,10 @@ - + - - + + @@ -25464,10 +25351,10 @@ - + + - - + @@ -25475,11 +25362,11 @@ - + - + @@ -25489,9 +25376,9 @@ - + - + @@ -25500,9 +25387,9 @@ - + - + @@ -25511,8 +25398,8 @@ - - + + @@ -25521,8 +25408,8 @@ - - + + @@ -25531,7 +25418,7 @@ - + @@ -25541,7 +25428,7 @@ - + @@ -25601,7 +25488,7 @@ - + @@ -25611,7 +25498,7 @@ - + @@ -25621,7 +25508,7 @@ - + @@ -25631,7 +25518,7 @@ - + @@ -26080,7 +25967,7 @@ - + @@ -26088,7 +25975,7 @@ - + @@ -26104,7 +25991,7 @@ - + @@ -26120,7 +26007,7 @@ - + @@ -26144,7 +26031,7 @@ - + @@ -26152,7 +26039,7 @@ - + @@ -26168,7 +26055,7 @@ - + @@ -26184,7 +26071,7 @@ - + @@ -26208,7 +26095,7 @@ - + @@ -26216,7 +26103,7 @@ - + @@ -26233,7 +26120,7 @@ - + @@ -26242,7 +26129,7 @@ - + @@ -26258,7 +26145,7 @@ - + @@ -26274,7 +26161,7 @@ - + @@ -26290,7 +26177,7 @@ - + @@ -26298,7 +26185,7 @@ - + @@ -26313,25 +26200,25 @@ - + - + - + - + - + @@ -26339,15 +26226,15 @@ - - + + - + @@ -26355,8 +26242,8 @@ - - + + @@ -26426,10 +26313,10 @@ - + + - - + @@ -26437,10 +26324,10 @@ - + - - + + @@ -26451,11 +26338,11 @@ - + - + @@ -26482,70 +26369,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -26738,7 +26625,7 @@ - + @@ -26778,9 +26665,9 @@ - - - + + + @@ -26807,8 +26694,8 @@ - - + + @@ -26835,7 +26722,7 @@ - + @@ -26870,7 +26757,7 @@ - + @@ -26897,7 +26784,7 @@ - + @@ -26943,7 +26830,7 @@ - + @@ -26999,7 +26886,7 @@ - + @@ -27021,10 +26908,10 @@ - + - + @@ -27070,7 +26957,7 @@ - + @@ -27126,7 +27013,7 @@ - + @@ -27226,22 +27113,22 @@ - + - + - + - + @@ -27288,17 +27175,17 @@ - + - + - + @@ -27437,11 +27324,11 @@ - + - + @@ -27550,7 +27437,7 @@ - + @@ -27719,7 +27606,7 @@ - + @@ -27896,21 +27783,21 @@ - + - + - + @@ -27924,35 +27811,35 @@ - + - + - + - + - + @@ -28026,7 +27913,7 @@ - + @@ -28172,7 +28059,7 @@ - + @@ -28280,8 +28167,8 @@ - - + + @@ -28331,7 +28218,7 @@ - + @@ -28442,7 +28329,7 @@ - + @@ -28461,7 +28348,7 @@ - + @@ -28522,7 +28409,7 @@ - + @@ -28548,10 +28435,10 @@ - + - + @@ -28598,7 +28485,7 @@ - + @@ -28679,7 +28566,7 @@ - + @@ -28729,10 +28616,10 @@ - + - + @@ -28779,7 +28666,7 @@ - + @@ -28860,7 +28747,7 @@ - + @@ -28903,7 +28790,7 @@ - + @@ -28936,7 +28823,7 @@ - + @@ -29096,7 +28983,7 @@ - + @@ -29109,7 +28996,7 @@ - + @@ -29889,7 +29776,7 @@ - + @@ -29995,7 +29882,7 @@ - + @@ -30029,7 +29916,7 @@ - + @@ -30072,16 +29959,16 @@ - - + + - + - + @@ -30153,7 +30040,7 @@ - + @@ -30321,7 +30208,7 @@ - + @@ -30352,7 +30239,7 @@ - + @@ -30378,145 +30265,145 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -30551,7 +30438,7 @@ - + @@ -30665,7 +30552,7 @@ - + @@ -30761,7 +30648,7 @@ - + @@ -30803,9 +30690,9 @@ - - + + @@ -30840,7 +30727,7 @@ - + @@ -30866,42 +30753,42 @@ - - - - + + + + - - + + - - + + - - + + - + @@ -30928,26 +30815,26 @@ - - - - + + + + - - + + - - + + @@ -30956,7 +30843,7 @@ - + @@ -31064,8 +30951,8 @@ - - + + @@ -31079,13 +30966,13 @@ - + - + @@ -31190,13 +31077,13 @@ - + - + @@ -31215,7 +31102,7 @@ - + @@ -31276,7 +31163,7 @@ - + @@ -31299,13 +31186,13 @@ - + - + - + @@ -31352,7 +31239,7 @@ - + @@ -31433,7 +31320,7 @@ - + @@ -31480,13 +31367,13 @@ - + - + - + @@ -31533,7 +31420,7 @@ - + @@ -31614,7 +31501,7 @@ - + @@ -31658,7 +31545,7 @@ - + @@ -31782,7 +31669,7 @@ - + @@ -31870,7 +31757,7 @@ - + @@ -31904,8 +31791,8 @@ - - + + @@ -31953,25 +31840,25 @@ - + - + - + - + - + @@ -32037,25 +31924,25 @@ - + - + - + - + - + @@ -32121,16 +32008,16 @@ - - + + - - - - + + + + @@ -32143,14 +32030,14 @@ - - + + - - + + @@ -32221,7 +32108,7 @@ - + @@ -32293,7 +32180,7 @@ - + @@ -32327,7 +32214,7 @@ - + @@ -32354,24 +32241,24 @@ - - + + - + - + - + @@ -32401,8 +32288,8 @@ - - + + @@ -32438,7 +32325,7 @@ - + @@ -32471,9 +32358,9 @@ - - + + @@ -32607,9 +32494,9 @@ - - - + + + @@ -32670,13 +32557,13 @@ - + - + @@ -32746,7 +32633,7 @@ - + @@ -32757,13 +32644,13 @@ - + - + @@ -32771,16 +32658,16 @@ - + - + - + - + @@ -32987,7 +32874,7 @@ - + @@ -33046,7 +32933,7 @@ - + @@ -33112,7 +32999,7 @@ - + @@ -33127,7 +33014,7 @@ - + @@ -33137,7 +33024,7 @@ - + @@ -33271,7 +33158,7 @@ - + @@ -33316,7 +33203,7 @@ - + @@ -33325,7 +33212,7 @@ - + @@ -33370,10 +33257,10 @@ - + - + @@ -33388,7 +33275,7 @@ - + @@ -33443,40 +33330,40 @@ - + - + - + - + - + - + - + - + @@ -33504,7 +33391,7 @@ - + @@ -33600,7 +33487,7 @@ - + @@ -33690,7 +33577,7 @@ - + @@ -33780,7 +33667,7 @@ - + @@ -33870,7 +33757,7 @@ - + @@ -33988,7 +33875,7 @@ - + @@ -34017,7 +33904,7 @@ - + @@ -34046,7 +33933,7 @@ - + @@ -34073,12 +33960,12 @@ - + - + @@ -34113,7 +34000,7 @@ - + @@ -34142,7 +34029,7 @@ - + @@ -34171,7 +34058,7 @@ - + @@ -34198,12 +34085,12 @@ - + - + @@ -34238,7 +34125,7 @@ - + @@ -34313,7 +34200,7 @@ - + @@ -34332,7 +34219,7 @@ - + @@ -34354,7 +34241,7 @@ - + @@ -34899,7 +34786,7 @@ - + @@ -34922,8 +34809,8 @@ - - + + @@ -34953,7 +34840,7 @@ - + @@ -35230,13 +35117,13 @@ - + - + - + @@ -35430,7 +35317,7 @@ - + @@ -35463,7 +35350,7 @@ - + @@ -35705,13 +35592,13 @@ - + - + @@ -35737,10 +35624,10 @@ - + - + @@ -35769,7 +35656,7 @@ - + @@ -35937,70 +35824,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -36050,9 +35937,9 @@ - + - + @@ -36062,7 +35949,7 @@ - + @@ -36071,70 +35958,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -36142,70 +36029,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -36213,70 +36100,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -36308,13 +36195,13 @@ - + - + @@ -36334,7 +36221,7 @@ - + @@ -36349,11 +36236,11 @@ - - + + - + @@ -36361,7 +36248,7 @@ - + @@ -36388,14 +36275,14 @@ - - + + - + @@ -36444,32 +36331,32 @@ - - + + - + - + - + - + - + - + - + @@ -36532,9 +36419,9 @@ - - + +